code-puppy 0.0.356__py3-none-any.whl → 0.0.357__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.
- code_puppy/agents/agent_qa_kitten.py +10 -5
- code_puppy/agents/agent_terminal_qa.py +323 -0
- code_puppy/api/app.py +79 -2
- code_puppy/api/routers/commands.py +21 -2
- code_puppy/api/routers/sessions.py +49 -8
- code_puppy/config.py +5 -2
- code_puppy/tools/__init__.py +37 -0
- code_puppy/tools/agent_tools.py +26 -1
- code_puppy/tools/browser/__init__.py +41 -0
- code_puppy/tools/browser/browser_control.py +6 -6
- code_puppy/tools/browser/browser_interactions.py +21 -20
- code_puppy/tools/browser/browser_locators.py +9 -9
- code_puppy/tools/browser/browser_navigation.py +7 -7
- code_puppy/tools/browser/browser_screenshot.py +60 -135
- code_puppy/tools/browser/browser_screenshot_vqa.py +195 -0
- code_puppy/tools/browser/browser_scripts.py +15 -13
- code_puppy/tools/browser/camoufox_manager.py +226 -64
- code_puppy/tools/browser/chromium_terminal_manager.py +259 -0
- code_puppy/tools/browser/terminal_command_tools.py +521 -0
- code_puppy/tools/browser/terminal_screenshot_tools.py +520 -0
- code_puppy/tools/browser/terminal_tools.py +525 -0
- code_puppy/tools/browser/vqa_agent.py +138 -34
- code_puppy/tools/command_runner.py +0 -1
- {code_puppy-0.0.356.dist-info → code_puppy-0.0.357.dist-info}/METADATA +1 -1
- {code_puppy-0.0.356.dist-info → code_puppy-0.0.357.dist-info}/RECORD +30 -24
- {code_puppy-0.0.356.data → code_puppy-0.0.357.data}/data/code_puppy/models.json +0 -0
- {code_puppy-0.0.356.data → code_puppy-0.0.357.data}/data/code_puppy/models_dev_api.json +0 -0
- {code_puppy-0.0.356.dist-info → code_puppy-0.0.357.dist-info}/WHEEL +0 -0
- {code_puppy-0.0.356.dist-info → code_puppy-0.0.357.dist-info}/entry_points.txt +0 -0
- {code_puppy-0.0.356.dist-info → code_puppy-0.0.357.dist-info}/licenses/LICENSE +0 -0
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from collections.abc import AsyncIterable
|
|
6
|
+
from typing import Any
|
|
6
7
|
|
|
7
8
|
from pydantic import BaseModel, Field
|
|
8
|
-
from pydantic_ai import Agent, BinaryContent
|
|
9
|
+
from pydantic_ai import Agent, BinaryContent, PartDeltaEvent, PartStartEvent, RunContext
|
|
10
|
+
from pydantic_ai.messages import TextPart, TextPartDelta
|
|
9
11
|
|
|
10
12
|
from code_puppy.config import get_use_dbos, get_vqa_model_name
|
|
11
13
|
|
|
@@ -18,73 +20,175 @@ class VisualAnalysisResult(BaseModel):
|
|
|
18
20
|
observations: str
|
|
19
21
|
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"Confidence reflects how certain you are about the answer. Observations should include useful, concise context."
|
|
27
|
-
)
|
|
23
|
+
DEFAULT_VQA_INSTRUCTIONS = (
|
|
24
|
+
"You are a visual analysis specialist. Answer the user's question about the provided image. "
|
|
25
|
+
"Always respond using the structured schema: answer, confidence (0-1 float), observations. "
|
|
26
|
+
"Confidence reflects how certain you are about the answer. Observations should include useful, concise context."
|
|
27
|
+
)
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
async def run_vqa_analysis(
|
|
31
|
+
question: str,
|
|
32
|
+
image_bytes: bytes,
|
|
33
|
+
media_type: str = "image/png",
|
|
34
|
+
) -> str:
|
|
35
|
+
"""Execute the VQA agent asynchronously against screenshot bytes.
|
|
36
|
+
|
|
37
|
+
Follows the same pattern as agent_tools.py for prompt preparation
|
|
38
|
+
and model configuration.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
question: The question to ask about the image.
|
|
42
|
+
image_bytes: The raw image bytes.
|
|
43
|
+
media_type: The MIME type of the image (default: "image/png").
|
|
44
|
+
system_prompt: Optional custom system prompt. If None, uses default VQA instructions.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
str: The answer from the VQA analysis.
|
|
48
|
+
"""
|
|
49
|
+
from code_puppy import callbacks
|
|
33
50
|
from code_puppy.model_factory import ModelFactory
|
|
34
51
|
from code_puppy.model_utils import prepare_prompt_for_model
|
|
35
52
|
|
|
53
|
+
# Get model configuration
|
|
54
|
+
model_name = get_vqa_model_name()
|
|
36
55
|
models_config = ModelFactory.load_config()
|
|
37
56
|
model = ModelFactory.get_model(model_name, models_config)
|
|
38
57
|
|
|
39
|
-
#
|
|
40
|
-
instructions =
|
|
58
|
+
# Build instructions: custom system_prompt or default VQA instructions
|
|
59
|
+
instructions = DEFAULT_VQA_INSTRUCTIONS
|
|
60
|
+
|
|
61
|
+
# Apply prompt additions (like file permission handling) - same as agent_tools.py
|
|
62
|
+
prompt_additions = callbacks.on_load_prompt()
|
|
63
|
+
if prompt_additions:
|
|
64
|
+
instructions += "\n" + "\n".join(prompt_additions)
|
|
65
|
+
|
|
66
|
+
# Handle claude-code models: swap instructions, prepend system prompt to user question
|
|
67
|
+
# Following the exact pattern from agent_tools.py
|
|
41
68
|
prepared = prepare_prompt_for_model(
|
|
42
|
-
model_name, instructions,
|
|
69
|
+
model_name, instructions, question, prepend_system_to_user=True
|
|
43
70
|
)
|
|
44
71
|
instructions = prepared.instructions
|
|
72
|
+
question = prepared.user_prompt
|
|
45
73
|
|
|
74
|
+
# Create the VQA agent with string output
|
|
46
75
|
vqa_agent = Agent(
|
|
47
76
|
model=model,
|
|
48
77
|
instructions=instructions,
|
|
49
|
-
output_type=VisualAnalysisResult,
|
|
50
|
-
retries=2,
|
|
51
78
|
)
|
|
52
79
|
|
|
80
|
+
# Wrap with DBOS if enabled
|
|
53
81
|
if get_use_dbos():
|
|
54
82
|
from pydantic_ai.durable_exec.dbos import DBOSAgent
|
|
55
83
|
|
|
56
|
-
|
|
57
|
-
return dbos_agent
|
|
84
|
+
vqa_agent = DBOSAgent(vqa_agent, name="vqa-agent")
|
|
58
85
|
|
|
59
|
-
|
|
86
|
+
# Run the agent with the image
|
|
87
|
+
result = await vqa_agent.run(
|
|
88
|
+
[
|
|
89
|
+
question,
|
|
90
|
+
BinaryContent(data=image_bytes, media_type=media_type),
|
|
91
|
+
]
|
|
92
|
+
)
|
|
93
|
+
return result.output
|
|
60
94
|
|
|
61
95
|
|
|
62
|
-
def
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
96
|
+
def _create_vqa_stream_handler(
|
|
97
|
+
accumulator: list[str],
|
|
98
|
+
):
|
|
99
|
+
"""Create an event stream handler that accumulates text.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
accumulator: List to accumulate text chunks into (pass empty list).
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
Async event stream handler function.
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
async def vqa_event_stream_handler(
|
|
109
|
+
ctx: RunContext,
|
|
110
|
+
events: AsyncIterable[Any],
|
|
111
|
+
) -> None:
|
|
112
|
+
"""Handle streaming events - print text as it arrives."""
|
|
113
|
+
async for event in events:
|
|
114
|
+
# Handle text part start - might have initial content
|
|
115
|
+
if isinstance(event, PartStartEvent):
|
|
116
|
+
if isinstance(event.part, TextPart) and event.part.content:
|
|
117
|
+
accumulator.append(event.part.content)
|
|
67
118
|
|
|
119
|
+
# Handle text deltas - the streaming bits
|
|
120
|
+
elif isinstance(event, PartDeltaEvent):
|
|
121
|
+
if isinstance(event.delta, TextPartDelta) and event.delta.content_delta:
|
|
122
|
+
accumulator.append(event.delta.content_delta)
|
|
68
123
|
|
|
69
|
-
|
|
124
|
+
return vqa_event_stream_handler
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
async def run_vqa_analysis_stream(
|
|
70
128
|
question: str,
|
|
71
129
|
image_bytes: bytes,
|
|
72
130
|
media_type: str = "image/png",
|
|
73
|
-
) ->
|
|
74
|
-
"""Execute the VQA agent
|
|
75
|
-
from code_puppy.model_utils import prepare_prompt_for_model
|
|
131
|
+
) -> str:
|
|
132
|
+
"""Execute the VQA agent with streaming output.
|
|
76
133
|
|
|
77
|
-
|
|
134
|
+
Streams text to console as it arrives and accumulates the full response.
|
|
78
135
|
|
|
79
|
-
|
|
136
|
+
Args:
|
|
137
|
+
question: The question to ask about the image.
|
|
138
|
+
image_bytes: The raw image bytes.
|
|
139
|
+
media_type: The MIME type of the image (default: "image/png").
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
str: The accumulated answer from the VQA analysis.
|
|
143
|
+
"""
|
|
144
|
+
from code_puppy import callbacks
|
|
145
|
+
from code_puppy.model_factory import ModelFactory
|
|
146
|
+
from code_puppy.model_utils import prepare_prompt_for_model
|
|
147
|
+
|
|
148
|
+
# Get model configuration
|
|
80
149
|
model_name = get_vqa_model_name()
|
|
81
|
-
|
|
150
|
+
models_config = ModelFactory.load_config()
|
|
151
|
+
model = ModelFactory.get_model(model_name, models_config)
|
|
152
|
+
|
|
153
|
+
# Build instructions
|
|
154
|
+
instructions = DEFAULT_VQA_INSTRUCTIONS
|
|
155
|
+
|
|
156
|
+
# Apply prompt additions (like file permission handling)
|
|
157
|
+
prompt_additions = callbacks.on_load_prompt()
|
|
158
|
+
if prompt_additions:
|
|
159
|
+
instructions += "\n" + "\n".join(prompt_additions)
|
|
160
|
+
|
|
161
|
+
# Handle claude-code models: swap instructions, prepend system prompt to user question
|
|
162
|
+
prepared = prepare_prompt_for_model(
|
|
163
|
+
model_name, instructions, question, prepend_system_to_user=True
|
|
164
|
+
)
|
|
165
|
+
instructions = prepared.instructions
|
|
82
166
|
question = prepared.user_prompt
|
|
83
167
|
|
|
84
|
-
|
|
168
|
+
# Create the VQA agent
|
|
169
|
+
vqa_agent = Agent(
|
|
170
|
+
model=model,
|
|
171
|
+
instructions=instructions,
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
# Wrap with DBOS if enabled
|
|
175
|
+
if get_use_dbos():
|
|
176
|
+
from pydantic_ai.durable_exec.dbos import DBOSAgent
|
|
177
|
+
|
|
178
|
+
vqa_agent = DBOSAgent(vqa_agent, name="vqa-agent-stream")
|
|
179
|
+
|
|
180
|
+
# Accumulator for streamed text (use list to allow mutation in handler)
|
|
181
|
+
accumulated_chunks: list[str] = []
|
|
182
|
+
|
|
183
|
+
# Create the stream handler
|
|
184
|
+
stream_handler = _create_vqa_stream_handler(accumulated_chunks)
|
|
185
|
+
|
|
186
|
+
# Run the agent with event_stream_handler
|
|
187
|
+
result = await vqa_agent.run(
|
|
85
188
|
[
|
|
86
189
|
question,
|
|
87
190
|
BinaryContent(data=image_bytes, media_type=media_type),
|
|
88
|
-
]
|
|
191
|
+
],
|
|
192
|
+
event_stream_handler=stream_handler,
|
|
89
193
|
)
|
|
90
194
|
return result.output
|
|
@@ -4,7 +4,7 @@ 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=
|
|
7
|
+
code_puppy/config.py,sha256=gwOK-WDuYBzJKwyGCFALJiW0pstiA39pRDm1O1zFek4,54528
|
|
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
|
|
@@ -38,8 +38,9 @@ code_puppy/agents/agent_planning.py,sha256=6q3s5qCko2FcUfaLzImOFNDi0H61WBc2PNtsO
|
|
|
38
38
|
code_puppy/agents/agent_python_programmer.py,sha256=R-7XoGIFJ58EY9LE9mWGcQQ8gSsMzi-1HD6wigJQPL8,6846
|
|
39
39
|
code_puppy/agents/agent_python_reviewer.py,sha256=J8lqzoKJlohs8NWMbgUpHXNt1bXHNIkuGjzLd9Af8qE,5854
|
|
40
40
|
code_puppy/agents/agent_qa_expert.py,sha256=5Ikb4U3SZQknUEfwlHZiyZXKqnffnOTQagr_wrkUkPk,10125
|
|
41
|
-
code_puppy/agents/agent_qa_kitten.py,sha256=
|
|
41
|
+
code_puppy/agents/agent_qa_kitten.py,sha256=bjQdAPL_VMjSDn012mHQgnduuQkGG0JeXuC3T1KrU6g,9372
|
|
42
42
|
code_puppy/agents/agent_security_auditor.py,sha256=SpiYNA0XAsIwBj7S2_EQPRslRUmF_-b89pIJyW7DYtY,12022
|
|
43
|
+
code_puppy/agents/agent_terminal_qa.py,sha256=U-iyP7OBWdAmchW_oUU8k6asH2aignTMmgqqYDyf-ms,10343
|
|
43
44
|
code_puppy/agents/agent_typescript_reviewer.py,sha256=vsnpp98xg6cIoFAEJrRTUM_i4wLEWGm5nJxs6fhHobM,10275
|
|
44
45
|
code_puppy/agents/base_agent.py,sha256=oKlX9CEIWSvdXyQDVi9F1jauA6rjKleY_n6044Ux5DY,73840
|
|
45
46
|
code_puppy/agents/event_stream_handler.py,sha256=HM62_THZpMVnqKIB6Vbo6IwmJt6Kjoc3YbyRy2FclA4,13805
|
|
@@ -54,15 +55,15 @@ code_puppy/agents/pack/shepherd.py,sha256=gSsPAj7MV_AaiSUWNNoFLW0C932ToctJl2X9yS
|
|
|
54
55
|
code_puppy/agents/pack/terrier.py,sha256=bw0f5g0fmIMVsVZsBYwDrIUwMhldg1U7tzGk1EHhgK0,7935
|
|
55
56
|
code_puppy/agents/pack/watchdog.py,sha256=xgiyrGgMdf8CNJoZ0bPqZ_oZBc6cu6It8d_jeNONiy4,10039
|
|
56
57
|
code_puppy/api/__init__.py,sha256=q0VZ5PgiCjEL2xWPVsElwAffDscJ6JtbbIhYFmw3TA4,357
|
|
57
|
-
code_puppy/api/app.py,sha256=
|
|
58
|
+
code_puppy/api/app.py,sha256=J7a0jfSJ1kqS0t3wt0AaCEGqIroVsXtVoVcbJi0Ag5k,5456
|
|
58
59
|
code_puppy/api/main.py,sha256=ycWD5_aWwdOQ2GPnqsQC-BjINNx_Qie6xFyjr9gYofI,453
|
|
59
60
|
code_puppy/api/pty_manager.py,sha256=P-SB9yuMlrwfgedV6VkzWDtGBMKAxnqV-RysQubhrS8,13714
|
|
60
61
|
code_puppy/api/websocket.py,sha256=j_96B2k2XQ-KGsNqGZqTjUeUH8NkDGfgSs32Bj4C634,5360
|
|
61
62
|
code_puppy/api/routers/__init__.py,sha256=-ifjlIm_yeFQ27vIC6OzeQFJZjnUF1e6xbFK1aNG798,430
|
|
62
63
|
code_puppy/api/routers/agents.py,sha256=Lshn89lIBi49if6GoJDBZQ2_8l7JfgAUy4gvYXlfmws,939
|
|
63
|
-
code_puppy/api/routers/commands.py,sha256=
|
|
64
|
+
code_puppy/api/routers/commands.py,sha256=HRvsYmjrUL_tha7-nKFBEJhGRfUlCspKkngwLU8TQ6Y,6513
|
|
64
65
|
code_puppy/api/routers/config.py,sha256=uDUFYZqki0fQd0U5EHpfTgqlZaRFfmhPyWrIHXNBX3A,2005
|
|
65
|
-
code_puppy/api/routers/sessions.py,sha256=
|
|
66
|
+
code_puppy/api/routers/sessions.py,sha256=GqYRT7IJYPpEdTseLF3FIpbvvD86lIqwwPswL31D9Wc,6786
|
|
66
67
|
code_puppy/api/templates/terminal.html,sha256=9alh6tTbLyXPDjBvkXw8nEWPXB-m_LIceGGRYpSLuyo,13125
|
|
67
68
|
code_puppy/command_line/__init__.py,sha256=y7WeRemfYppk8KVbCGeAIiTuiOszIURCDjOMZv_YRmU,45
|
|
68
69
|
code_puppy/command_line/add_model_menu.py,sha256=CpURhxPvUhLHLBV_uwH1ODfJ-WAcGklvlsjEf5Vfvg4,43255
|
|
@@ -183,29 +184,34 @@ code_puppy/plugins/shell_safety/command_cache.py,sha256=adYtSPNVOZfW_6dQdtEihO6E
|
|
|
183
184
|
code_puppy/plugins/shell_safety/register_callbacks.py,sha256=W3v664RR48Fdbbbltf_NnX22_Ahw2AvAOtvXvWc7KxQ,7322
|
|
184
185
|
code_puppy/prompts/antigravity_system_prompt.md,sha256=ZaTfRyY57ttROyZMmOBtqZQu1to7sdTNTv8_0fTgPNw,6807
|
|
185
186
|
code_puppy/prompts/codex_system_prompt.md,sha256=hEFTCziroLqZmqNle5kG34A8kvTteOWezCiVrAEKhE0,24400
|
|
186
|
-
code_puppy/tools/__init__.py,sha256=
|
|
187
|
-
code_puppy/tools/agent_tools.py,sha256=
|
|
188
|
-
code_puppy/tools/command_runner.py,sha256=
|
|
187
|
+
code_puppy/tools/__init__.py,sha256=WC1DO3OeTVSibpvIIoyfdxbeeC0oigiBSUqpmdw8G4o,7615
|
|
188
|
+
code_puppy/tools/agent_tools.py,sha256=XvBQ_IPa4NHLmIA2mdyPwy9GPlYGQwhtdn-w_3i239g,25517
|
|
189
|
+
code_puppy/tools/command_runner.py,sha256=Sresr_ykou_c2V1sKoNxqrqCQovKF5yDiQJ8r3E9lak,50995
|
|
189
190
|
code_puppy/tools/common.py,sha256=lVtF94cn6jtC5YKfitV7L3rk37Ts2gMoHLQrqDFD2E4,46411
|
|
190
191
|
code_puppy/tools/display.py,sha256=-ulDyq55178f8O_TAEmnxGoy_ZdFkbHBw-W4ul851GM,2675
|
|
191
192
|
code_puppy/tools/file_modifications.py,sha256=vz9n7R0AGDSdLUArZr_55yJLkyI30M8zreAppxIx02M,29380
|
|
192
193
|
code_puppy/tools/file_operations.py,sha256=CqhpuBnOFOcQCIYXOujskxq2VMLWYJhibYrH0YcPSfA,35692
|
|
193
194
|
code_puppy/tools/subagent_context.py,sha256=zsiKV3B3DxZ_Y5IHHhtE-SMFDg_jMrY7Hi6r5LH--IU,4781
|
|
194
195
|
code_puppy/tools/tools_content.py,sha256=bsBqW-ppd1XNAS_g50B3UHDQBWEALC1UneH6-afz1zo,2365
|
|
195
|
-
code_puppy/tools/browser/__init__.py,sha256=
|
|
196
|
-
code_puppy/tools/browser/browser_control.py,sha256=
|
|
197
|
-
code_puppy/tools/browser/browser_interactions.py,sha256=
|
|
198
|
-
code_puppy/tools/browser/browser_locators.py,sha256=
|
|
199
|
-
code_puppy/tools/browser/browser_navigation.py,sha256=
|
|
200
|
-
code_puppy/tools/browser/browser_screenshot.py,sha256=
|
|
201
|
-
code_puppy/tools/browser/
|
|
196
|
+
code_puppy/tools/browser/__init__.py,sha256=HqP5_AKL9IuaXeGLhL_Y799DBU28QZBd2x5ISKJlprc,1097
|
|
197
|
+
code_puppy/tools/browser/browser_control.py,sha256=YntpjfWTIv0TDlAO5BqTV_hDbUBw-8wmMn29K3TDQo0,8430
|
|
198
|
+
code_puppy/tools/browser/browser_interactions.py,sha256=ZyJmA2-ZtIATF76uGMt08cfVaYiqg7W2-cHfAzNI0F8,16775
|
|
199
|
+
code_puppy/tools/browser/browser_locators.py,sha256=sxXNm-K087poeSp7Um5Gc1sZxb7HlSZOu0F0r2b0ty8,19177
|
|
200
|
+
code_puppy/tools/browser/browser_navigation.py,sha256=RJdG14UXtA6wz4PNLw2Tqeu4oUDQilOyNbyTjgIFCrY,7416
|
|
201
|
+
code_puppy/tools/browser/browser_screenshot.py,sha256=POlHDG7WJbjF3uBPUD7X2elAs-CKP9Dq7UQ7UZyvZGQ,5666
|
|
202
|
+
code_puppy/tools/browser/browser_screenshot_vqa.py,sha256=DBdQuV7eIaJX2Qy_liwitfakIzrcVziB-zAGIngM5GE,7349
|
|
203
|
+
code_puppy/tools/browser/browser_scripts.py,sha256=CYWdQMtjKTNvJNSCkB2vGo-MOzmT_gw2oFMGtkfuzuA,14779
|
|
202
204
|
code_puppy/tools/browser/browser_workflows.py,sha256=nitW42vCf0ieTX1gLabozTugNQ8phtoFzZbiAhw1V90,6491
|
|
203
|
-
code_puppy/tools/browser/camoufox_manager.py,sha256=
|
|
204
|
-
code_puppy/tools/browser/
|
|
205
|
-
code_puppy
|
|
206
|
-
code_puppy
|
|
207
|
-
code_puppy
|
|
208
|
-
code_puppy
|
|
209
|
-
code_puppy-0.0.
|
|
210
|
-
code_puppy-0.0.
|
|
211
|
-
code_puppy-0.0.
|
|
205
|
+
code_puppy/tools/browser/camoufox_manager.py,sha256=WIr98SrGeC5jd6jX5tjhFR6A3janqV4tq9Mbznnlh44,13920
|
|
206
|
+
code_puppy/tools/browser/chromium_terminal_manager.py,sha256=w1thQ_ACb6oV45L93TSqPQD0o0cTh3FqT5I9zcOOWlM,8226
|
|
207
|
+
code_puppy/tools/browser/terminal_command_tools.py,sha256=9byOZku-dwvTtCl532xt7Lumed_jTn0sLvUe_X75XCQ,19068
|
|
208
|
+
code_puppy/tools/browser/terminal_screenshot_tools.py,sha256=DAqzlqOoTfQZCKKeXccElrrY7s2CwSblvBV7A6A2GYw,17224
|
|
209
|
+
code_puppy/tools/browser/terminal_tools.py,sha256=F5LjVH3udSCFHmqC3O1UJLoLozZFZsEdX42jOmkqkW0,17853
|
|
210
|
+
code_puppy/tools/browser/vqa_agent.py,sha256=0IbS1X3l8ADZI9pGcJbKFoN0-ZuTJa8QvHZ_hGKBKRM,6339
|
|
211
|
+
code_puppy-0.0.357.data/data/code_puppy/models.json,sha256=FMQdE_yvP_8y0xxt3K918UkFL9cZMYAqW1SfXcQkU_k,3105
|
|
212
|
+
code_puppy-0.0.357.data/data/code_puppy/models_dev_api.json,sha256=wHjkj-IM_fx1oHki6-GqtOoCrRMR0ScK0f-Iz0UEcy8,548187
|
|
213
|
+
code_puppy-0.0.357.dist-info/METADATA,sha256=czyAX-ExI8J1C2WqFxnPakQofzpUXqX5r2-Y1WIL34E,27614
|
|
214
|
+
code_puppy-0.0.357.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
215
|
+
code_puppy-0.0.357.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
|
|
216
|
+
code_puppy-0.0.357.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
|
|
217
|
+
code_puppy-0.0.357.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|