code-puppy 0.0.353__py3-none-any.whl → 0.0.355__py3-none-any.whl

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 (49) hide show
  1. code_puppy/agents/__init__.py +2 -0
  2. code_puppy/agents/agent_manager.py +49 -0
  3. code_puppy/agents/agent_pack_leader.py +383 -0
  4. code_puppy/agents/agent_planning.py +1 -0
  5. code_puppy/agents/event_stream_handler.py +74 -1
  6. code_puppy/agents/pack/__init__.py +34 -0
  7. code_puppy/agents/pack/bloodhound.py +304 -0
  8. code_puppy/agents/pack/husky.py +321 -0
  9. code_puppy/agents/pack/retriever.py +393 -0
  10. code_puppy/agents/pack/shepherd.py +348 -0
  11. code_puppy/agents/pack/terrier.py +287 -0
  12. code_puppy/agents/pack/watchdog.py +367 -0
  13. code_puppy/agents/subagent_stream_handler.py +276 -0
  14. code_puppy/api/__init__.py +13 -0
  15. code_puppy/api/app.py +92 -0
  16. code_puppy/api/main.py +21 -0
  17. code_puppy/api/pty_manager.py +446 -0
  18. code_puppy/api/routers/__init__.py +12 -0
  19. code_puppy/api/routers/agents.py +36 -0
  20. code_puppy/api/routers/commands.py +198 -0
  21. code_puppy/api/routers/config.py +74 -0
  22. code_puppy/api/routers/sessions.py +191 -0
  23. code_puppy/api/templates/terminal.html +361 -0
  24. code_puppy/api/websocket.py +154 -0
  25. code_puppy/callbacks.py +73 -0
  26. code_puppy/command_line/core_commands.py +85 -0
  27. code_puppy/config.py +63 -0
  28. code_puppy/messaging/__init__.py +15 -0
  29. code_puppy/messaging/messages.py +27 -0
  30. code_puppy/messaging/queue_console.py +1 -1
  31. code_puppy/messaging/rich_renderer.py +34 -0
  32. code_puppy/messaging/spinner/__init__.py +20 -2
  33. code_puppy/messaging/subagent_console.py +461 -0
  34. code_puppy/plugins/frontend_emitter/__init__.py +25 -0
  35. code_puppy/plugins/frontend_emitter/emitter.py +121 -0
  36. code_puppy/plugins/frontend_emitter/register_callbacks.py +261 -0
  37. code_puppy/status_display.py +6 -2
  38. code_puppy/tools/agent_tools.py +56 -50
  39. code_puppy/tools/browser/vqa_agent.py +1 -1
  40. code_puppy/tools/common.py +176 -1
  41. code_puppy/tools/display.py +6 -1
  42. code_puppy/tools/subagent_context.py +158 -0
  43. {code_puppy-0.0.353.dist-info → code_puppy-0.0.355.dist-info}/METADATA +4 -3
  44. {code_puppy-0.0.353.dist-info → code_puppy-0.0.355.dist-info}/RECORD +49 -24
  45. {code_puppy-0.0.353.data → code_puppy-0.0.355.data}/data/code_puppy/models.json +0 -0
  46. {code_puppy-0.0.353.data → code_puppy-0.0.355.data}/data/code_puppy/models_dev_api.json +0 -0
  47. {code_puppy-0.0.353.dist-info → code_puppy-0.0.355.dist-info}/WHEEL +0 -0
  48. {code_puppy-0.0.353.dist-info → code_puppy-0.0.355.dist-info}/entry_points.txt +0 -0
  49. {code_puppy-0.0.353.dist-info → code_puppy-0.0.355.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,158 @@
1
+ """Sub-agent context management with async-safe state tracking.
2
+
3
+ This module provides context-aware tracking of sub-agent execution state using
4
+ Python's contextvars for async-safe isolation. This ensures that sub-agent state
5
+ is properly isolated across different async tasks and execution contexts.
6
+
7
+ ## Why ContextVars?
8
+
9
+ ContextVars provide automatic context isolation in async environments:
10
+ - Each async task gets its own copy of the context
11
+ - State changes in one task don't affect others
12
+ - Perfect for tracking execution depth in nested agent calls
13
+ - Token-based reset ensures proper cleanup even with exceptions
14
+
15
+ ## Usage Example:
16
+
17
+ ```python
18
+ from code_puppy.tools.subagent_context import subagent_context, is_subagent
19
+
20
+ # Main agent
21
+ print(is_subagent()) # False
22
+
23
+ async def run_subagent():
24
+ with subagent_context("retriever"):
25
+ print(is_subagent()) # True
26
+ print(get_subagent_name()) # "retriever"
27
+ print(get_subagent_depth()) # 1
28
+
29
+ # Nested sub-agent
30
+ with subagent_context("terrier"):
31
+ print(get_subagent_depth()) # 2
32
+ print(get_subagent_name()) # "terrier"
33
+
34
+ # Back to parent sub-agent
35
+ print(get_subagent_name()) # "retriever"
36
+ print(get_subagent_depth()) # 1
37
+
38
+ # After context exits
39
+ print(is_subagent()) # False
40
+ ```
41
+
42
+ ## Benefits:
43
+
44
+ 1. **Async Safety**: Multiple sub-agents can run concurrently without interference
45
+ 2. **Nested Support**: Properly handles sub-agents calling other sub-agents
46
+ 3. **Clean Restoration**: Token-based reset ensures state is restored even on errors
47
+ 4. **Zero Overhead**: When not in a sub-agent context, minimal performance impact
48
+ """
49
+
50
+ from contextlib import contextmanager
51
+ from contextvars import ContextVar
52
+ from typing import Generator
53
+
54
+ __all__ = [
55
+ "subagent_context",
56
+ "is_subagent",
57
+ "get_subagent_name",
58
+ "get_subagent_depth",
59
+ ]
60
+
61
+ # Track sub-agent depth (0 = main agent, 1+ = sub-agent)
62
+ _subagent_depth: ContextVar[int] = ContextVar("subagent_depth", default=0)
63
+
64
+ # Track current sub-agent name (None = main agent)
65
+ _subagent_name: ContextVar[str | None] = ContextVar("subagent_name", default=None)
66
+
67
+
68
+ @contextmanager
69
+ def subagent_context(agent_name: str) -> Generator[None, None, None]:
70
+ """Context manager for tracking sub-agent execution.
71
+
72
+ Increments the sub-agent depth and sets the current agent name on entry,
73
+ then restores the previous state on exit. Uses token-based reset for
74
+ proper async isolation and exception safety.
75
+
76
+ Args:
77
+ agent_name: Name of the sub-agent being executed (e.g., "retriever", "husky")
78
+
79
+ Yields:
80
+ None
81
+
82
+ Example:
83
+ >>> with subagent_context("retriever"):
84
+ ... assert is_subagent() is True
85
+ ... assert get_subagent_name() == "retriever"
86
+ >>> assert is_subagent() is False
87
+
88
+ Note:
89
+ Token-based reset ensures that even if an exception occurs, the context
90
+ is properly restored. This is especially important in async environments
91
+ where multiple tasks may be running concurrently.
92
+ """
93
+ # Get current depth for incrementing
94
+ current_depth = _subagent_depth.get()
95
+
96
+ # Set new values and save tokens for restoration
97
+ depth_token = _subagent_depth.set(current_depth + 1)
98
+ name_token = _subagent_name.set(agent_name)
99
+
100
+ try:
101
+ yield
102
+ finally:
103
+ # Use token-based reset for proper async isolation
104
+ # This ensures the context is restored even if an exception occurs
105
+ _subagent_depth.reset(depth_token)
106
+ _subagent_name.reset(name_token)
107
+
108
+
109
+ def is_subagent() -> bool:
110
+ """Check if currently executing within a sub-agent context.
111
+
112
+ Returns:
113
+ True if depth > 0 (inside a sub-agent), False otherwise (main agent)
114
+
115
+ Example:
116
+ >>> is_subagent()
117
+ False
118
+ >>> with subagent_context("retriever"):
119
+ ... is_subagent()
120
+ True
121
+ """
122
+ return _subagent_depth.get() > 0
123
+
124
+
125
+ def get_subagent_name() -> str | None:
126
+ """Get the name of the current sub-agent.
127
+
128
+ Returns:
129
+ Current sub-agent name, or None if in main agent context
130
+
131
+ Example:
132
+ >>> get_subagent_name()
133
+ None
134
+ >>> with subagent_context("husky"):
135
+ ... get_subagent_name()
136
+ 'husky'
137
+ """
138
+ return _subagent_name.get()
139
+
140
+
141
+ def get_subagent_depth() -> int:
142
+ """Get the current sub-agent nesting depth.
143
+
144
+ Returns:
145
+ Current depth level (0 = main agent, 1 = first-level sub-agent,
146
+ 2 = nested sub-agent, etc.)
147
+
148
+ Example:
149
+ >>> get_subagent_depth()
150
+ 0
151
+ >>> with subagent_context("retriever"):
152
+ ... get_subagent_depth()
153
+ 1
154
+ ... with subagent_context("terrier"):
155
+ ... get_subagent_depth()
156
+ 2
157
+ """
158
+ return _subagent_depth.get()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-puppy
3
- Version: 0.0.353
3
+ Version: 0.0.355
4
4
  Summary: Code generation agent
5
5
  Project-URL: repository, https://github.com/mpfaffenberger/code_puppy
6
6
  Project-URL: HomePage, https://github.com/mpfaffenberger/code_puppy
@@ -17,7 +17,7 @@ Classifier: Topic :: Software Development :: Code Generators
17
17
  Requires-Python: <3.14,>=3.11
18
18
  Requires-Dist: camoufox>=0.4.11
19
19
  Requires-Dist: dbos>=2.5.0
20
- Requires-Dist: fastapi>=0.111.0
20
+ Requires-Dist: fastapi>=0.109.0
21
21
  Requires-Dist: httpx[http2]>=0.24.1
22
22
  Requires-Dist: json-repair>=0.46.2
23
23
  Requires-Dist: logfire>=0.7.1
@@ -36,7 +36,8 @@ Requires-Dist: ripgrep==14.1.0
36
36
  Requires-Dist: ruff>=0.11.11
37
37
  Requires-Dist: tenacity>=8.2.0
38
38
  Requires-Dist: termflow-md>=0.1.8
39
- Requires-Dist: uvicorn>=0.30.0
39
+ Requires-Dist: uvicorn[standard]>=0.27.0
40
+ Requires-Dist: websockets>=12.0
40
41
  Description-Content-Type: text/markdown
41
42
 
42
43
  <div align="center">
@@ -1,10 +1,10 @@
1
1
  code_puppy/__init__.py,sha256=xMPewo9RNHb3yfFNIk5WCbv2cvSPtJOCgK2-GqLbNnU,373
2
2
  code_puppy/__main__.py,sha256=pDVssJOWP8A83iFkxMLY9YteHYat0EyWDQqMkKHpWp4,203
3
- code_puppy/callbacks.py,sha256=hqTV--dNxG5vwWWm3MrEjmb8MZuHFFdmHePl23NXPHk,8621
3
+ code_puppy/callbacks.py,sha256=Pp0VyeXJBEtk-N_RSWr5pbveelovsdLUiJ4f11dzwGw,10775
4
4
  code_puppy/chatgpt_codex_client.py,sha256=Om0ANB_kpHubhCwNzF9ENf8RvKBqs0IYzBLl_SNw0Vk,9833
5
5
  code_puppy/claude_cache_client.py,sha256=Gl6um5ZaKpcnxOvoFSM8Lwm_Vu4-VyWz8Nli8DnRLa4,22508
6
6
  code_puppy/cli_runner.py,sha256=w5CLKgQYYaT7My3Cga2StXYol-u6DBxNzzUuhhsfhsA,34952
7
- code_puppy/config.py,sha256=RlnrLkyFXm7h2Htf8rQA7vqoAyzLPMrESle417uLmFw,52373
7
+ code_puppy/config.py,sha256=1bga5PP_usHkxRx2Vqaz_s820YhADo9K8R5pcaE9O90,54338
8
8
  code_puppy/error_logging.py,sha256=a80OILCUtJhexI6a9GM-r5LqIdjvSRzggfgPp2jv1X0,3297
9
9
  code_puppy/gemini_code_assist.py,sha256=KGS7sO5OLc83nDF3xxS-QiU6vxW9vcm6hmzilu79Ef8,13867
10
10
  code_puppy/http_utils.py,sha256=H3N5Qz2B1CcsGUYOycGWAqoNMr2P1NCVluKX3aRwRqI,10358
@@ -19,12 +19,12 @@ code_puppy/pydantic_patches.py,sha256=YecAEeCOjSIwIBu2O5vEw72atMSL37cXGrbEuukI07
19
19
  code_puppy/reopenable_async_client.py,sha256=pD34chyBFcC7_OVPJ8fp6aRI5jYdN-7VDycObMZPwG8,8292
20
20
  code_puppy/round_robin_model.py,sha256=kSawwPUiPgg0yg8r4AAVgvjzsWkptxpSORd75-HP7W4,5335
21
21
  code_puppy/session_storage.py,sha256=T4hOsAl9z0yz2JZCptjJBOnN8fCmkLZx5eLy1hTdv6Q,9631
22
- code_puppy/status_display.py,sha256=qHzIQGAPEa2_-4gQSg7_rE1ihOosBq8WO73MWFNmmlo,8938
22
+ code_puppy/status_display.py,sha256=r2jlosF4VNn9CUYJNcsroRQPModh9ZQNsleDwMby1Z4,9158
23
23
  code_puppy/summarization_agent.py,sha256=6Pu_Wp_rF-HAhoX9u2uXTabRVkOZUYwRoMP1lzNS4ew,4485
24
24
  code_puppy/terminal_utils.py,sha256=TaS19x7EZqudlBUAQwLMzBMNxBHBNInvQQREXqRGtkM,12984
25
25
  code_puppy/uvx_detection.py,sha256=tP9X9Nvzow--KIqtqjgrHQkSxMJ3EevfoaeoB9VLY2o,7224
26
26
  code_puppy/version_checker.py,sha256=aq2Mwxl1CR9sEFBgrPt3OQOowLOBUp9VaQYWJhuUv8Q,1780
27
- code_puppy/agents/__init__.py,sha256=PtPB7Z5MSwmUKipgt_qxvIuGggcuVaYwNbnp1UP4tPc,518
27
+ code_puppy/agents/__init__.py,sha256=9giVbeBb8YAc51PC9EhR0h15NGwbzKLB3HECCK5iaKo,610
28
28
  code_puppy/agents/agent_c_reviewer.py,sha256=1kO_89hcrhlS4sJ6elDLSEx-h43jAaWGgvIL0SZUuKo,8214
29
29
  code_puppy/agents/agent_code_puppy.py,sha256=-u9VkqoE_GuB8zae9OeFMv64qt94cFs-_tzK2stIk5A,8406
30
30
  code_puppy/agents/agent_code_reviewer.py,sha256=V9pznpi7z1XTYBjRj1Em8S71PbFXLvU8z0gCmPAQxSc,4635
@@ -32,8 +32,9 @@ code_puppy/agents/agent_cpp_reviewer.py,sha256=lbaGU4aKSNBrxsYfN86BKOeKBgL8kS9sL
32
32
  code_puppy/agents/agent_creator_agent.py,sha256=pYnDRCn8qWivAeu-GA-WYn_gZ67KT1I9ZyHbaNssIII,25027
33
33
  code_puppy/agents/agent_golang_reviewer.py,sha256=VEAwiQW06occkfABVz9Y7wStQ8pFtX94DAvZdRSRuzs,9319
34
34
  code_puppy/agents/agent_javascript_reviewer.py,sha256=ATSXl278kPU4F6hiYsMMGkGrrWDlJqPwaYwYGNuo9J0,9494
35
- code_puppy/agents/agent_manager.py,sha256=lcXbsbyBc5nWJ-1oBJzajFZC-qtY-wwZqy4CT2RVjMY,13122
36
- code_puppy/agents/agent_planning.py,sha256=LtFqQixrDUPudSvmhbntK-zRbDHn0lSi1xrKFVqCwDo,6902
35
+ code_puppy/agents/agent_manager.py,sha256=IWHhgebDF6UzuGHNM5HvxZyfVpCcJmdQqA0RajeWSCA,15026
36
+ code_puppy/agents/agent_pack_leader.py,sha256=DrP5rnYZbqkOm4ClK_Q4-aehjqXXVlq1UFs1bu11zbA,15766
37
+ code_puppy/agents/agent_planning.py,sha256=6q3s5qCko2FcUfaLzImOFNDi0H61WBc2PNtsOcYv8pk,6941
37
38
  code_puppy/agents/agent_python_programmer.py,sha256=R-7XoGIFJ58EY9LE9mWGcQQ8gSsMzi-1HD6wigJQPL8,6846
38
39
  code_puppy/agents/agent_python_reviewer.py,sha256=J8lqzoKJlohs8NWMbgUpHXNt1bXHNIkuGjzLd9Af8qE,5854
39
40
  code_puppy/agents/agent_qa_expert.py,sha256=5Ikb4U3SZQknUEfwlHZiyZXKqnffnOTQagr_wrkUkPk,10125
@@ -41,9 +42,28 @@ code_puppy/agents/agent_qa_kitten.py,sha256=5PeFFSwCFlTUvP6h5bGntx0xv5NmRwBiw0Hn
41
42
  code_puppy/agents/agent_security_auditor.py,sha256=SpiYNA0XAsIwBj7S2_EQPRslRUmF_-b89pIJyW7DYtY,12022
42
43
  code_puppy/agents/agent_typescript_reviewer.py,sha256=vsnpp98xg6cIoFAEJrRTUM_i4wLEWGm5nJxs6fhHobM,10275
43
44
  code_puppy/agents/base_agent.py,sha256=oKlX9CEIWSvdXyQDVi9F1jauA6rjKleY_n6044Ux5DY,73840
44
- code_puppy/agents/event_stream_handler.py,sha256=C1TDkp9eTHEFvnTQzaGFh_q9izL1r-EnCRTez9kqO2Y,11438
45
+ code_puppy/agents/event_stream_handler.py,sha256=HM62_THZpMVnqKIB6Vbo6IwmJt6Kjoc3YbyRy2FclA4,13805
45
46
  code_puppy/agents/json_agent.py,sha256=lhopDJDoiSGHvD8A6t50hi9ZBoNRKgUywfxd0Po_Dzc,4886
46
47
  code_puppy/agents/prompt_reviewer.py,sha256=JJrJ0m5q0Puxl8vFsyhAbY9ftU9n6c6UxEVdNct1E-Q,5558
48
+ code_puppy/agents/subagent_stream_handler.py,sha256=5imUFYOJCv7blfv4fTHm6OQ7JpqlyFv_luBYGSj16MA,10329
49
+ code_puppy/agents/pack/__init__.py,sha256=evYSWr_t1B0v88DuCkTFdcGNZ0MANK_XiVRfXTbbHd4,1214
50
+ code_puppy/agents/pack/bloodhound.py,sha256=bfYSvggVNWJKxDhZT_wIWDKGM5StIvbqeFe_xP-N1JU,9407
51
+ code_puppy/agents/pack/husky.py,sha256=xSmHhIoiQ4rVrs3od36hnEIH5jnd_j72R9PY2gIjaTQ,9455
52
+ code_puppy/agents/pack/retriever.py,sha256=kz9sqnKMtJT3xoeplVdXFs_2YdHuW5JkB-vMDnQ4ZY8,10143
53
+ code_puppy/agents/pack/shepherd.py,sha256=gSsPAj7MV_AaiSUWNNoFLW0C932ToctJl2X9ySZN8CM,9878
54
+ code_puppy/agents/pack/terrier.py,sha256=bw0f5g0fmIMVsVZsBYwDrIUwMhldg1U7tzGk1EHhgK0,7935
55
+ code_puppy/agents/pack/watchdog.py,sha256=xgiyrGgMdf8CNJoZ0bPqZ_oZBc6cu6It8d_jeNONiy4,10039
56
+ code_puppy/api/__init__.py,sha256=q0VZ5PgiCjEL2xWPVsElwAffDscJ6JtbbIhYFmw3TA4,357
57
+ code_puppy/api/app.py,sha256=4imfbatGX0h2rIUfo4vP2H4XLOvutM0D_EJMd_dQAf8,2868
58
+ code_puppy/api/main.py,sha256=ycWD5_aWwdOQ2GPnqsQC-BjINNx_Qie6xFyjr9gYofI,453
59
+ code_puppy/api/pty_manager.py,sha256=P-SB9yuMlrwfgedV6VkzWDtGBMKAxnqV-RysQubhrS8,13714
60
+ code_puppy/api/websocket.py,sha256=j_96B2k2XQ-KGsNqGZqTjUeUH8NkDGfgSs32Bj4C634,5360
61
+ code_puppy/api/routers/__init__.py,sha256=-ifjlIm_yeFQ27vIC6OzeQFJZjnUF1e6xbFK1aNG798,430
62
+ code_puppy/api/routers/agents.py,sha256=Lshn89lIBi49if6GoJDBZQ2_8l7JfgAUy4gvYXlfmws,939
63
+ code_puppy/api/routers/commands.py,sha256=kl3ouYIg6DRWgPIDmDnN6RXJzyeQqUrh8cm1jR_eG1M,5821
64
+ code_puppy/api/routers/config.py,sha256=uDUFYZqki0fQd0U5EHpfTgqlZaRFfmhPyWrIHXNBX3A,2005
65
+ code_puppy/api/routers/sessions.py,sha256=KeTKXLj0BjPMvnSU91LmNgc0coQ7QdRRn8puqdvknsc,5346
66
+ code_puppy/api/templates/terminal.html,sha256=9alh6tTbLyXPDjBvkXw8nEWPXB-m_LIceGGRYpSLuyo,13125
47
67
  code_puppy/command_line/__init__.py,sha256=y7WeRemfYppk8KVbCGeAIiTuiOszIURCDjOMZv_YRmU,45
48
68
  code_puppy/command_line/add_model_menu.py,sha256=CpURhxPvUhLHLBV_uwH1ODfJ-WAcGklvlsjEf5Vfvg4,43255
49
69
  code_puppy/command_line/attachments.py,sha256=4Q5I2Es4j0ltnz5wjw2z0QXMsiMJvEfWRkPf_lJeITM,13093
@@ -53,7 +73,7 @@ code_puppy/command_line/colors_menu.py,sha256=LoFVfJ-Mo-Eq9hnb2Rj5mn7oBCnadAGr-8
53
73
  code_puppy/command_line/command_handler.py,sha256=CY9F27eovZJK_kpU1YmbroYLWGTCuouCOQ-TXfDp-nw,10916
54
74
  code_puppy/command_line/command_registry.py,sha256=qFySsw1g8dol3kgi0p6cXrIDlP11_OhOoaQ5nAadWXg,4416
55
75
  code_puppy/command_line/config_commands.py,sha256=qS9Cm758DPz2QGvHLhAV4Tp_Xfgo3PyoCoLDusbnmCw,25742
56
- code_puppy/command_line/core_commands.py,sha256=ujAPD4yDbXwYGJJfR2u4ei24eBV-Ps_-BVBjFMEoJy0,27668
76
+ code_puppy/command_line/core_commands.py,sha256=q5yi_xjPSoCjX8ET4PnMVsZlGwJ2PlEXVnao_7_1rJk,30619
57
77
  code_puppy/command_line/diff_menu.py,sha256=_Gr9SP9fbItk-08dya9WTAR53s_PlyAvEnbt-8VWKPk,24141
58
78
  code_puppy/command_line/file_path_completion.py,sha256=gw8NpIxa6GOpczUJRyh7VNZwoXKKn-yvCqit7h2y6Gg,2931
59
79
  code_puppy/command_line/load_context_completion.py,sha256=a3JvLDeLLSYxVgTjAdqWzS4spjv6ccCrK2LKZgVJ1IM,2202
@@ -108,16 +128,17 @@ code_puppy/mcp_/server_registry_catalog.py,sha256=fr_wsr99BphnaDiPLcN60t4Mp62lbt
108
128
  code_puppy/mcp_/status_tracker.py,sha256=uekxrzkzIWrv3OfSVgblaPuoGFcAh_dBYwCcaHZ_CrM,12183
109
129
  code_puppy/mcp_/system_tools.py,sha256=7_oR8k0c8YjtCcYF9g7A946oAGuKOf_i-92aJH7VmlQ,7331
110
130
  code_puppy/mcp_/examples/retry_example.py,sha256=Qi5K6cNmhc5-zncZa0F_dkJUEdZ6OIgt1xfG5PUxt3Q,7234
111
- code_puppy/messaging/__init__.py,sha256=THJQDdRub3jiWIRPqF34VggXem3Y2tuUFAJGdDALgzw,6444
131
+ code_puppy/messaging/__init__.py,sha256=PmQWdm0f9RBv8I7Km3qU_OCUiBqxHIDenN9DKELzQCE,6832
112
132
  code_puppy/messaging/bus.py,sha256=TbdltJ0D5tqnaE4irq1fcXllDYm-mQ_SiX1IFm-S4sw,21406
113
133
  code_puppy/messaging/commands.py,sha256=77CtKVNaF5KS3Xyzd0ccDAisZWQxL3weVEt3J-SfYxo,5464
114
134
  code_puppy/messaging/markdown_patches.py,sha256=dMIJozzJChuHa8QNMSEz_kC-dyt7kZiDLZ7rjthbcmg,1626
115
135
  code_puppy/messaging/message_queue.py,sha256=1-5NFWIes5kpecsKnhuQQJPeT0-X102Xi1-IwXUM5_Y,11430
116
- code_puppy/messaging/messages.py,sha256=F7RwMHeQrIk-8kuSSBU76wBq1NGuLb2H5cJrSMTC3XM,16464
117
- code_puppy/messaging/queue_console.py,sha256=T0U_V1tdN6hd9DLokp-HCk0mhu8Ivpfajha368CBZrU,9983
136
+ code_puppy/messaging/messages.py,sha256=wiDnsuFe9P-dWrzfeBwD2_zEdbDKTInCAK7rFMnex9I,17614
137
+ code_puppy/messaging/queue_console.py,sha256=Xp-rFEpaOtMi-qHvgCi9QTNvTiNgaZ9qXubddOOmImE,9983
118
138
  code_puppy/messaging/renderers.py,sha256=GHVtMnxE1pJ-yrcRjacY81JcjlHRz3UVHzp-ohN-CGE,12058
119
- code_puppy/messaging/rich_renderer.py,sha256=5AklkFrmRqIvBi8DMgowC1iYaQTW7dU4JBwUHSeG6wM,37955
120
- code_puppy/messaging/spinner/__init__.py,sha256=KpK5tJqq9YnN3wklqvdH0BQmuwYnT83Mp4tPfQa9RqI,1664
139
+ code_puppy/messaging/rich_renderer.py,sha256=EkncFhKzoKTaFcTK23KcJ4VOiaMunILYg643lT_wlng,39114
140
+ code_puppy/messaging/subagent_console.py,sha256=HkqYPxYly24Gr1c0m8fa-RsUFA4JJpVCyA7oM0MNdv0,15976
141
+ code_puppy/messaging/spinner/__init__.py,sha256=eR221vdrDT7CtY3O7cLvIcPViazjNdpX0Oyqa3xpPSQ,2304
121
142
  code_puppy/messaging/spinner/console_spinner.py,sha256=YIReuWPD01YPy58FqWdMDWj2QhauTUxKo675Ub4-eDA,8451
122
143
  code_puppy/messaging/spinner/spinner_base.py,sha256=JiQDAhCfwrWUFunb8Xcj1caEl34JJY7Bcio7mDeckSc,2694
123
144
  code_puppy/plugins/__init__.py,sha256=gWgrXWoFpl-3Mxz2DAvxKW6SkCWrOnw-hKsY9O7nHcI,6710
@@ -153,6 +174,9 @@ code_puppy/plugins/example_custom_command/README.md,sha256=5c5Zkm7CW6BDSfe3WoLU7
153
174
  code_puppy/plugins/example_custom_command/register_callbacks.py,sha256=1vkch42NISx1BiWivcT7Va8fRV2evTOS8zFtRWS18us,1658
154
175
  code_puppy/plugins/file_permission_handler/__init__.py,sha256=yuR7qt2pTQ-E2DLf4aIy16cAiuaTKX6x1Zixs54PZFo,144
155
176
  code_puppy/plugins/file_permission_handler/register_callbacks.py,sha256=QlUqENkbN8e6lv1hjFixNPANwyQ1o2fQQkzerEXar94,17968
177
+ code_puppy/plugins/frontend_emitter/__init__.py,sha256=4_o6anYxDpJGvKyMomRy4FfLXZx6VOLnX0PcZIL-fws,661
178
+ code_puppy/plugins/frontend_emitter/emitter.py,sha256=GNcnoKLPAjrD_see82nuRutZEHxXwb2aUEKR4K8TJvQ,3787
179
+ code_puppy/plugins/frontend_emitter/register_callbacks.py,sha256=3j7Emn3VeWSJSN9ozZ_Z78ZU8JvN7yfJNQ4bSH2KGdE,7704
156
180
  code_puppy/plugins/shell_safety/__init__.py,sha256=B-RYLWKlvrws9XCHG1Z99mBMC3VC394HAlMOhhCoGGI,243
157
181
  code_puppy/plugins/shell_safety/agent_shell_safety.py,sha256=5JutYlzzTzyFcbFujlNkV4NunVvD5QIpOSumjS3Fjc8,2408
158
182
  code_puppy/plugins/shell_safety/command_cache.py,sha256=adYtSPNVOZfW_6dQdtEihO6E-JYXYrdvlS1Cl7xBkDU,4546
@@ -160,12 +184,13 @@ code_puppy/plugins/shell_safety/register_callbacks.py,sha256=W3v664RR48Fdbbbltf_
160
184
  code_puppy/prompts/antigravity_system_prompt.md,sha256=ZaTfRyY57ttROyZMmOBtqZQu1to7sdTNTv8_0fTgPNw,6807
161
185
  code_puppy/prompts/codex_system_prompt.md,sha256=hEFTCziroLqZmqNle5kG34A8kvTteOWezCiVrAEKhE0,24400
162
186
  code_puppy/tools/__init__.py,sha256=eQY-GL2ToV9IdRKlrnWlcPLyncJyU1VGZxq9yy0twNI,6137
163
- code_puppy/tools/agent_tools.py,sha256=3MI7ZvlBBbu2CbZCPIZfW0q4lnD_mS-wdDygQt9mQIM,24123
187
+ code_puppy/tools/agent_tools.py,sha256=z9Uj65aqIZ4etyq6mtH05DQEbA6dWSWAN-wH8RSmdXg,24476
164
188
  code_puppy/tools/command_runner.py,sha256=3qXVnVTaBPia6y2D29As47_TRKgpyCj82yMFK-8UUYc,44954
165
- code_puppy/tools/common.py,sha256=IYf-KOcP5eN2MwTlpULSXNATn7GzloAKl7_M1Uyfe4Y,40360
166
- code_puppy/tools/display.py,sha256=T2bIyb233eds0q8C1jZRl6NjwERrLgT_APhEz9drN1w,2472
189
+ code_puppy/tools/common.py,sha256=lVtF94cn6jtC5YKfitV7L3rk37Ts2gMoHLQrqDFD2E4,46411
190
+ code_puppy/tools/display.py,sha256=-ulDyq55178f8O_TAEmnxGoy_ZdFkbHBw-W4ul851GM,2675
167
191
  code_puppy/tools/file_modifications.py,sha256=vz9n7R0AGDSdLUArZr_55yJLkyI30M8zreAppxIx02M,29380
168
192
  code_puppy/tools/file_operations.py,sha256=CqhpuBnOFOcQCIYXOujskxq2VMLWYJhibYrH0YcPSfA,35692
193
+ code_puppy/tools/subagent_context.py,sha256=zsiKV3B3DxZ_Y5IHHhtE-SMFDg_jMrY7Hi6r5LH--IU,4781
169
194
  code_puppy/tools/tools_content.py,sha256=bsBqW-ppd1XNAS_g50B3UHDQBWEALC1UneH6-afz1zo,2365
170
195
  code_puppy/tools/browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
196
  code_puppy/tools/browser/browser_control.py,sha256=MWBv_WR_A6wmm1NJCYFGQGRyYhTLplL4J0_ECZD0IhE,8388
@@ -176,11 +201,11 @@ code_puppy/tools/browser/browser_screenshot.py,sha256=7jeG5N4-OkpRPY3JMwOrsJjutY
176
201
  code_puppy/tools/browser/browser_scripts.py,sha256=sNb8eLEyzhasy5hV4B9OjM8yIVMLVEMRcQ4K77ABjRI,14564
177
202
  code_puppy/tools/browser/browser_workflows.py,sha256=nitW42vCf0ieTX1gLabozTugNQ8phtoFzZbiAhw1V90,6491
178
203
  code_puppy/tools/browser/camoufox_manager.py,sha256=RZjGOEftE5sI_tsercUyXFSZI2wpStXf-q0PdYh2G3I,8680
179
- code_puppy/tools/browser/vqa_agent.py,sha256=DBn9HKloILqJSTSdNZzH_PYWT0B2h9VwmY6akFQI_uU,2913
180
- code_puppy-0.0.353.data/data/code_puppy/models.json,sha256=FMQdE_yvP_8y0xxt3K918UkFL9cZMYAqW1SfXcQkU_k,3105
181
- code_puppy-0.0.353.data/data/code_puppy/models_dev_api.json,sha256=wHjkj-IM_fx1oHki6-GqtOoCrRMR0ScK0f-Iz0UEcy8,548187
182
- code_puppy-0.0.353.dist-info/METADATA,sha256=SZGW2VJQ_sk4iAb3UBANyh8Tzit9QwP47l1XHaRIrjY,27572
183
- code_puppy-0.0.353.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
184
- code_puppy-0.0.353.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
185
- code_puppy-0.0.353.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
186
- code_puppy-0.0.353.dist-info/RECORD,,
204
+ code_puppy/tools/browser/vqa_agent.py,sha256=BZzpwPinMH-dsOBMvPVYJzDZ6fu3TlIARygcwIva9w4,2917
205
+ code_puppy-0.0.355.data/data/code_puppy/models.json,sha256=FMQdE_yvP_8y0xxt3K918UkFL9cZMYAqW1SfXcQkU_k,3105
206
+ code_puppy-0.0.355.data/data/code_puppy/models_dev_api.json,sha256=wHjkj-IM_fx1oHki6-GqtOoCrRMR0ScK0f-Iz0UEcy8,548187
207
+ code_puppy-0.0.355.dist-info/METADATA,sha256=Tio2GnBJ-iMbKu1LRVnesQ9Q7W4IsBRdWzMdoPhna1c,27614
208
+ code_puppy-0.0.355.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
209
+ code_puppy-0.0.355.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
210
+ code_puppy-0.0.355.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
211
+ code_puppy-0.0.355.dist-info/RECORD,,