code-puppy 0.0.348__py3-none-any.whl → 0.0.361__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 (70) 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_qa_kitten.py +12 -7
  5. code_puppy/agents/agent_terminal_qa.py +323 -0
  6. code_puppy/agents/base_agent.py +17 -4
  7. code_puppy/agents/event_stream_handler.py +101 -8
  8. code_puppy/agents/pack/__init__.py +34 -0
  9. code_puppy/agents/pack/bloodhound.py +304 -0
  10. code_puppy/agents/pack/husky.py +321 -0
  11. code_puppy/agents/pack/retriever.py +393 -0
  12. code_puppy/agents/pack/shepherd.py +348 -0
  13. code_puppy/agents/pack/terrier.py +287 -0
  14. code_puppy/agents/pack/watchdog.py +367 -0
  15. code_puppy/agents/subagent_stream_handler.py +276 -0
  16. code_puppy/api/__init__.py +13 -0
  17. code_puppy/api/app.py +169 -0
  18. code_puppy/api/main.py +21 -0
  19. code_puppy/api/pty_manager.py +446 -0
  20. code_puppy/api/routers/__init__.py +12 -0
  21. code_puppy/api/routers/agents.py +36 -0
  22. code_puppy/api/routers/commands.py +217 -0
  23. code_puppy/api/routers/config.py +74 -0
  24. code_puppy/api/routers/sessions.py +232 -0
  25. code_puppy/api/templates/terminal.html +361 -0
  26. code_puppy/api/websocket.py +154 -0
  27. code_puppy/callbacks.py +73 -0
  28. code_puppy/claude_cache_client.py +249 -34
  29. code_puppy/command_line/core_commands.py +85 -0
  30. code_puppy/config.py +66 -62
  31. code_puppy/messaging/__init__.py +15 -0
  32. code_puppy/messaging/messages.py +27 -0
  33. code_puppy/messaging/queue_console.py +1 -1
  34. code_puppy/messaging/rich_renderer.py +36 -1
  35. code_puppy/messaging/spinner/__init__.py +20 -2
  36. code_puppy/messaging/subagent_console.py +461 -0
  37. code_puppy/model_utils.py +54 -0
  38. code_puppy/plugins/antigravity_oauth/antigravity_model.py +90 -19
  39. code_puppy/plugins/antigravity_oauth/transport.py +1 -0
  40. code_puppy/plugins/frontend_emitter/__init__.py +25 -0
  41. code_puppy/plugins/frontend_emitter/emitter.py +121 -0
  42. code_puppy/plugins/frontend_emitter/register_callbacks.py +261 -0
  43. code_puppy/prompts/antigravity_system_prompt.md +1 -0
  44. code_puppy/status_display.py +6 -2
  45. code_puppy/tools/__init__.py +37 -1
  46. code_puppy/tools/agent_tools.py +83 -33
  47. code_puppy/tools/browser/__init__.py +37 -0
  48. code_puppy/tools/browser/browser_control.py +6 -6
  49. code_puppy/tools/browser/browser_interactions.py +21 -20
  50. code_puppy/tools/browser/browser_locators.py +9 -9
  51. code_puppy/tools/browser/browser_navigation.py +7 -7
  52. code_puppy/tools/browser/browser_screenshot.py +78 -140
  53. code_puppy/tools/browser/browser_scripts.py +15 -13
  54. code_puppy/tools/browser/camoufox_manager.py +226 -64
  55. code_puppy/tools/browser/chromium_terminal_manager.py +259 -0
  56. code_puppy/tools/browser/terminal_command_tools.py +521 -0
  57. code_puppy/tools/browser/terminal_screenshot_tools.py +556 -0
  58. code_puppy/tools/browser/terminal_tools.py +525 -0
  59. code_puppy/tools/command_runner.py +292 -101
  60. code_puppy/tools/common.py +176 -1
  61. code_puppy/tools/display.py +84 -0
  62. code_puppy/tools/subagent_context.py +158 -0
  63. {code_puppy-0.0.348.dist-info → code_puppy-0.0.361.dist-info}/METADATA +13 -11
  64. {code_puppy-0.0.348.dist-info → code_puppy-0.0.361.dist-info}/RECORD +69 -38
  65. code_puppy/tools/browser/vqa_agent.py +0 -90
  66. {code_puppy-0.0.348.data → code_puppy-0.0.361.data}/data/code_puppy/models.json +0 -0
  67. {code_puppy-0.0.348.data → code_puppy-0.0.361.data}/data/code_puppy/models_dev_api.json +0 -0
  68. {code_puppy-0.0.348.dist-info → code_puppy-0.0.361.dist-info}/WHEEL +0 -0
  69. {code_puppy-0.0.348.dist-info → code_puppy-0.0.361.dist-info}/entry_points.txt +0 -0
  70. {code_puppy-0.0.348.dist-info → code_puppy-0.0.361.dist-info}/licenses/LICENSE +0 -0
@@ -1,17 +1,17 @@
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
- code_puppy/claude_cache_client.py,sha256=MLIRSJP428r9IK_aV6XyCXrCfQnNti32U60psPymLM4,14860
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=z4c-rKwQOEsg13HHd1KskIQG4Ygdr9krQsCAiZU-Wa0,52441
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
11
11
  code_puppy/keymap.py,sha256=IvMkTlB_bIqOWpbTpmftkdyjhtD5todXuEIw1zCZ4u0,3584
12
12
  code_puppy/main.py,sha256=82r3vZy_XcyEsenLn82BnUusaoyL3Bpm_Th_jKgqecE,273
13
13
  code_puppy/model_factory.py,sha256=BSGHZlwtF7jkYz2qFG9oJglG-NnfmbsQXbx4I6stXW0,38313
14
- code_puppy/model_utils.py,sha256=NU8W8NW5F7QS_PXHaLeh55Air1koUV7IVYFP7Rz3XpY,3615
14
+ code_puppy/model_utils.py,sha256=55TKNnGTXQlHJNqejL2PfQqQmChXfzOjJg-hlarfR7w,5551
15
15
  code_puppy/models.json,sha256=FMQdE_yvP_8y0xxt3K918UkFL9cZMYAqW1SfXcQkU_k,3105
16
16
  code_puppy/models_dev_api.json,sha256=wHjkj-IM_fx1oHki6-GqtOoCrRMR0ScK0f-Iz0UEcy8,548187
17
17
  code_puppy/models_dev_parser.py,sha256=8ndmWrsSyKbXXpRZPXc0w6TfWMuCcgaHiMifmlaBaPc,20611
@@ -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,18 +32,39 @@ 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
35
+ code_puppy/agents/agent_manager.py,sha256=IWHhgebDF6UzuGHNM5HvxZyfVpCcJmdQqA0RajeWSCA,15026
36
+ code_puppy/agents/agent_pack_leader.py,sha256=DrP5rnYZbqkOm4ClK_Q4-aehjqXXVlq1UFs1bu11zbA,15766
36
37
  code_puppy/agents/agent_planning.py,sha256=LtFqQixrDUPudSvmhbntK-zRbDHn0lSi1xrKFVqCwDo,6902
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
40
- code_puppy/agents/agent_qa_kitten.py,sha256=5PeFFSwCFlTUvP6h5bGntx0xv5NmRwBiw0HnMqY8nLI,9107
41
+ code_puppy/agents/agent_qa_kitten.py,sha256=qvry-1u_CiXi8eRueHTax4OtqsS_mQrtXHsbTXWzGYs,9517
41
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
42
44
  code_puppy/agents/agent_typescript_reviewer.py,sha256=vsnpp98xg6cIoFAEJrRTUM_i4wLEWGm5nJxs6fhHobM,10275
43
- code_puppy/agents/base_agent.py,sha256=zX7XPNgveBoBCm-SoRncwabnU0uSyEwtG3q-x8JFkiU,73256
44
- code_puppy/agents/event_stream_handler.py,sha256=C1TDkp9eTHEFvnTQzaGFh_q9izL1r-EnCRTez9kqO2Y,11438
45
+ code_puppy/agents/base_agent.py,sha256=oKlX9CEIWSvdXyQDVi9F1jauA6rjKleY_n6044Ux5DY,73840
46
+ code_puppy/agents/event_stream_handler.py,sha256=JttLZJpNADE5HXiXY-GZ6tpwaBeFRODcy34KiquPOvU,14952
45
47
  code_puppy/agents/json_agent.py,sha256=lhopDJDoiSGHvD8A6t50hi9ZBoNRKgUywfxd0Po_Dzc,4886
46
48
  code_puppy/agents/prompt_reviewer.py,sha256=JJrJ0m5q0Puxl8vFsyhAbY9ftU9n6c6UxEVdNct1E-Q,5558
49
+ code_puppy/agents/subagent_stream_handler.py,sha256=5imUFYOJCv7blfv4fTHm6OQ7JpqlyFv_luBYGSj16MA,10329
50
+ code_puppy/agents/pack/__init__.py,sha256=evYSWr_t1B0v88DuCkTFdcGNZ0MANK_XiVRfXTbbHd4,1214
51
+ code_puppy/agents/pack/bloodhound.py,sha256=bfYSvggVNWJKxDhZT_wIWDKGM5StIvbqeFe_xP-N1JU,9407
52
+ code_puppy/agents/pack/husky.py,sha256=xSmHhIoiQ4rVrs3od36hnEIH5jnd_j72R9PY2gIjaTQ,9455
53
+ code_puppy/agents/pack/retriever.py,sha256=kz9sqnKMtJT3xoeplVdXFs_2YdHuW5JkB-vMDnQ4ZY8,10143
54
+ code_puppy/agents/pack/shepherd.py,sha256=gSsPAj7MV_AaiSUWNNoFLW0C932ToctJl2X9ySZN8CM,9878
55
+ code_puppy/agents/pack/terrier.py,sha256=bw0f5g0fmIMVsVZsBYwDrIUwMhldg1U7tzGk1EHhgK0,7935
56
+ code_puppy/agents/pack/watchdog.py,sha256=xgiyrGgMdf8CNJoZ0bPqZ_oZBc6cu6It8d_jeNONiy4,10039
57
+ code_puppy/api/__init__.py,sha256=q0VZ5PgiCjEL2xWPVsElwAffDscJ6JtbbIhYFmw3TA4,357
58
+ code_puppy/api/app.py,sha256=J7a0jfSJ1kqS0t3wt0AaCEGqIroVsXtVoVcbJi0Ag5k,5456
59
+ code_puppy/api/main.py,sha256=ycWD5_aWwdOQ2GPnqsQC-BjINNx_Qie6xFyjr9gYofI,453
60
+ code_puppy/api/pty_manager.py,sha256=P-SB9yuMlrwfgedV6VkzWDtGBMKAxnqV-RysQubhrS8,13714
61
+ code_puppy/api/websocket.py,sha256=j_96B2k2XQ-KGsNqGZqTjUeUH8NkDGfgSs32Bj4C634,5360
62
+ code_puppy/api/routers/__init__.py,sha256=-ifjlIm_yeFQ27vIC6OzeQFJZjnUF1e6xbFK1aNG798,430
63
+ code_puppy/api/routers/agents.py,sha256=Lshn89lIBi49if6GoJDBZQ2_8l7JfgAUy4gvYXlfmws,939
64
+ code_puppy/api/routers/commands.py,sha256=HRvsYmjrUL_tha7-nKFBEJhGRfUlCspKkngwLU8TQ6Y,6513
65
+ code_puppy/api/routers/config.py,sha256=uDUFYZqki0fQd0U5EHpfTgqlZaRFfmhPyWrIHXNBX3A,2005
66
+ code_puppy/api/routers/sessions.py,sha256=GqYRT7IJYPpEdTseLF3FIpbvvD86lIqwwPswL31D9Wc,6786
67
+ code_puppy/api/templates/terminal.html,sha256=9alh6tTbLyXPDjBvkXw8nEWPXB-m_LIceGGRYpSLuyo,13125
47
68
  code_puppy/command_line/__init__.py,sha256=y7WeRemfYppk8KVbCGeAIiTuiOszIURCDjOMZv_YRmU,45
48
69
  code_puppy/command_line/add_model_menu.py,sha256=CpURhxPvUhLHLBV_uwH1ODfJ-WAcGklvlsjEf5Vfvg4,43255
49
70
  code_puppy/command_line/attachments.py,sha256=4Q5I2Es4j0ltnz5wjw2z0QXMsiMJvEfWRkPf_lJeITM,13093
@@ -53,7 +74,7 @@ code_puppy/command_line/colors_menu.py,sha256=LoFVfJ-Mo-Eq9hnb2Rj5mn7oBCnadAGr-8
53
74
  code_puppy/command_line/command_handler.py,sha256=CY9F27eovZJK_kpU1YmbroYLWGTCuouCOQ-TXfDp-nw,10916
54
75
  code_puppy/command_line/command_registry.py,sha256=qFySsw1g8dol3kgi0p6cXrIDlP11_OhOoaQ5nAadWXg,4416
55
76
  code_puppy/command_line/config_commands.py,sha256=qS9Cm758DPz2QGvHLhAV4Tp_Xfgo3PyoCoLDusbnmCw,25742
56
- code_puppy/command_line/core_commands.py,sha256=ujAPD4yDbXwYGJJfR2u4ei24eBV-Ps_-BVBjFMEoJy0,27668
77
+ code_puppy/command_line/core_commands.py,sha256=q5yi_xjPSoCjX8ET4PnMVsZlGwJ2PlEXVnao_7_1rJk,30619
57
78
  code_puppy/command_line/diff_menu.py,sha256=_Gr9SP9fbItk-08dya9WTAR53s_PlyAvEnbt-8VWKPk,24141
58
79
  code_puppy/command_line/file_path_completion.py,sha256=gw8NpIxa6GOpczUJRyh7VNZwoXKKn-yvCqit7h2y6Gg,2931
59
80
  code_puppy/command_line/load_context_completion.py,sha256=a3JvLDeLLSYxVgTjAdqWzS4spjv6ccCrK2LKZgVJ1IM,2202
@@ -108,23 +129,24 @@ code_puppy/mcp_/server_registry_catalog.py,sha256=fr_wsr99BphnaDiPLcN60t4Mp62lbt
108
129
  code_puppy/mcp_/status_tracker.py,sha256=uekxrzkzIWrv3OfSVgblaPuoGFcAh_dBYwCcaHZ_CrM,12183
109
130
  code_puppy/mcp_/system_tools.py,sha256=7_oR8k0c8YjtCcYF9g7A946oAGuKOf_i-92aJH7VmlQ,7331
110
131
  code_puppy/mcp_/examples/retry_example.py,sha256=Qi5K6cNmhc5-zncZa0F_dkJUEdZ6OIgt1xfG5PUxt3Q,7234
111
- code_puppy/messaging/__init__.py,sha256=THJQDdRub3jiWIRPqF34VggXem3Y2tuUFAJGdDALgzw,6444
132
+ code_puppy/messaging/__init__.py,sha256=PmQWdm0f9RBv8I7Km3qU_OCUiBqxHIDenN9DKELzQCE,6832
112
133
  code_puppy/messaging/bus.py,sha256=TbdltJ0D5tqnaE4irq1fcXllDYm-mQ_SiX1IFm-S4sw,21406
113
134
  code_puppy/messaging/commands.py,sha256=77CtKVNaF5KS3Xyzd0ccDAisZWQxL3weVEt3J-SfYxo,5464
114
135
  code_puppy/messaging/markdown_patches.py,sha256=dMIJozzJChuHa8QNMSEz_kC-dyt7kZiDLZ7rjthbcmg,1626
115
136
  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
137
+ code_puppy/messaging/messages.py,sha256=wiDnsuFe9P-dWrzfeBwD2_zEdbDKTInCAK7rFMnex9I,17614
138
+ code_puppy/messaging/queue_console.py,sha256=Xp-rFEpaOtMi-qHvgCi9QTNvTiNgaZ9qXubddOOmImE,9983
118
139
  code_puppy/messaging/renderers.py,sha256=GHVtMnxE1pJ-yrcRjacY81JcjlHRz3UVHzp-ohN-CGE,12058
119
- code_puppy/messaging/rich_renderer.py,sha256=FiT1e5S8nNQte0E6CMFQ3KyTixadkgKSjp1hcZXtyOE,37892
120
- code_puppy/messaging/spinner/__init__.py,sha256=KpK5tJqq9YnN3wklqvdH0BQmuwYnT83Mp4tPfQa9RqI,1664
140
+ code_puppy/messaging/rich_renderer.py,sha256=EkncFhKzoKTaFcTK23KcJ4VOiaMunILYg643lT_wlng,39114
141
+ code_puppy/messaging/subagent_console.py,sha256=HkqYPxYly24Gr1c0m8fa-RsUFA4JJpVCyA7oM0MNdv0,15976
142
+ code_puppy/messaging/spinner/__init__.py,sha256=eR221vdrDT7CtY3O7cLvIcPViazjNdpX0Oyqa3xpPSQ,2304
121
143
  code_puppy/messaging/spinner/console_spinner.py,sha256=YIReuWPD01YPy58FqWdMDWj2QhauTUxKo675Ub4-eDA,8451
122
144
  code_puppy/messaging/spinner/spinner_base.py,sha256=JiQDAhCfwrWUFunb8Xcj1caEl34JJY7Bcio7mDeckSc,2694
123
145
  code_puppy/plugins/__init__.py,sha256=gWgrXWoFpl-3Mxz2DAvxKW6SkCWrOnw-hKsY9O7nHcI,6710
124
146
  code_puppy/plugins/oauth_puppy_html.py,sha256=Wpa-V_NlRiBAvo_OXHuR7wvOH_jSt8L9HSFGiab6xI0,13058
125
147
  code_puppy/plugins/antigravity_oauth/__init__.py,sha256=1miHihSqRNXO20Vh_Gn9M3Aa2szh0gtdSCaKKj9nq0Q,362
126
148
  code_puppy/plugins/antigravity_oauth/accounts.py,sha256=GQit2-K24bsopmTZyscFUq3M0cAEO5WutHWnipVdgz8,14304
127
- code_puppy/plugins/antigravity_oauth/antigravity_model.py,sha256=g0_nXnMg288CvBE48CFgZ-iAqlYbtbi1dcB4Up6cYYc,26115
149
+ code_puppy/plugins/antigravity_oauth/antigravity_model.py,sha256=T81dp_j59BAKxcE8lIt3XKJQVB9Wb0IFugcNeR8mdVQ,29195
128
150
  code_puppy/plugins/antigravity_oauth/config.py,sha256=BoQgqf5I2XoHWnBBo9vhCIc_XwPj9Mbp0Z95ygWwt78,1362
129
151
  code_puppy/plugins/antigravity_oauth/constants.py,sha256=qsrA10JJvzNuY0OobvvwCQcoGpILBninllcUUMKkUrQ,4644
130
152
  code_puppy/plugins/antigravity_oauth/oauth.py,sha256=ZHXJtZP63l6brOpX1WdLfuUClIleA79-4y36YUJc6Wo,15137
@@ -132,7 +154,7 @@ code_puppy/plugins/antigravity_oauth/register_callbacks.py,sha256=uKIvfzH-dXj1g_
132
154
  code_puppy/plugins/antigravity_oauth/storage.py,sha256=LW1DkY6Z-GRbBDrIitT6glKemZptp3NzldIrLRqTAK0,8971
133
155
  code_puppy/plugins/antigravity_oauth/test_plugin.py,sha256=n0kjFG8Vt2n1j0GgTRSdSyhF0t9xxE8Ht60SH5CSwzw,11027
134
156
  code_puppy/plugins/antigravity_oauth/token.py,sha256=WbiFCkrZvChpGXvwIYsJMgqU9xdJ81KwR062lFlnL3U,5038
135
- code_puppy/plugins/antigravity_oauth/transport.py,sha256=yZztRm8NHWemAtv7aVKsHdCQtU9BJKAd9RcqF91ZQOw,27689
157
+ code_puppy/plugins/antigravity_oauth/transport.py,sha256=GykwfwDmru5bw5WqGyVgxALQ_UyshMSmtDXsUfdgbD4,27729
136
158
  code_puppy/plugins/antigravity_oauth/utils.py,sha256=mXHRv0l07r27VjtSsIy9rlpkUheP88RaM4x4M0O1mMY,5401
137
159
  code_puppy/plugins/chatgpt_oauth/__init__.py,sha256=Kjc6Hsz1sWvMD2OdAlWZvJRiKJSj4fx22boa-aVFKjA,189
138
160
  code_puppy/plugins/chatgpt_oauth/config.py,sha256=H_wAH9Duyn8WH2Kq8oe72uda-_4qu1uXLPun_SDdtsk,2023
@@ -153,32 +175,41 @@ code_puppy/plugins/example_custom_command/README.md,sha256=5c5Zkm7CW6BDSfe3WoLU7
153
175
  code_puppy/plugins/example_custom_command/register_callbacks.py,sha256=1vkch42NISx1BiWivcT7Va8fRV2evTOS8zFtRWS18us,1658
154
176
  code_puppy/plugins/file_permission_handler/__init__.py,sha256=yuR7qt2pTQ-E2DLf4aIy16cAiuaTKX6x1Zixs54PZFo,144
155
177
  code_puppy/plugins/file_permission_handler/register_callbacks.py,sha256=QlUqENkbN8e6lv1hjFixNPANwyQ1o2fQQkzerEXar94,17968
178
+ code_puppy/plugins/frontend_emitter/__init__.py,sha256=4_o6anYxDpJGvKyMomRy4FfLXZx6VOLnX0PcZIL-fws,661
179
+ code_puppy/plugins/frontend_emitter/emitter.py,sha256=GNcnoKLPAjrD_see82nuRutZEHxXwb2aUEKR4K8TJvQ,3787
180
+ code_puppy/plugins/frontend_emitter/register_callbacks.py,sha256=3j7Emn3VeWSJSN9ozZ_Z78ZU8JvN7yfJNQ4bSH2KGdE,7704
156
181
  code_puppy/plugins/shell_safety/__init__.py,sha256=B-RYLWKlvrws9XCHG1Z99mBMC3VC394HAlMOhhCoGGI,243
157
182
  code_puppy/plugins/shell_safety/agent_shell_safety.py,sha256=5JutYlzzTzyFcbFujlNkV4NunVvD5QIpOSumjS3Fjc8,2408
158
183
  code_puppy/plugins/shell_safety/command_cache.py,sha256=adYtSPNVOZfW_6dQdtEihO6E-JYXYrdvlS1Cl7xBkDU,4546
159
184
  code_puppy/plugins/shell_safety/register_callbacks.py,sha256=W3v664RR48Fdbbbltf_NnX22_Ahw2AvAOtvXvWc7KxQ,7322
185
+ code_puppy/prompts/antigravity_system_prompt.md,sha256=ZaTfRyY57ttROyZMmOBtqZQu1to7sdTNTv8_0fTgPNw,6807
160
186
  code_puppy/prompts/codex_system_prompt.md,sha256=hEFTCziroLqZmqNle5kG34A8kvTteOWezCiVrAEKhE0,24400
161
- code_puppy/tools/__init__.py,sha256=BVTZ85jLHgDANwOnUSOz3UDlp8VQDq4DoGF23BRlyWw,6032
162
- code_puppy/tools/agent_tools.py,sha256=pRIzGH8jJjlg1XiMrQn_kn0OzUfsCq4EWTuISD2D6hQ,23393
163
- code_puppy/tools/command_runner.py,sha256=3qXVnVTaBPia6y2D29As47_TRKgpyCj82yMFK-8UUYc,44954
164
- code_puppy/tools/common.py,sha256=IYf-KOcP5eN2MwTlpULSXNATn7GzloAKl7_M1Uyfe4Y,40360
187
+ code_puppy/tools/__init__.py,sha256=9bzVIjX9CAr2YTZkhD7IWFYt4KpnFRx6ge_Tqazugbs,7425
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
190
+ code_puppy/tools/common.py,sha256=lVtF94cn6jtC5YKfitV7L3rk37Ts2gMoHLQrqDFD2E4,46411
191
+ code_puppy/tools/display.py,sha256=-ulDyq55178f8O_TAEmnxGoy_ZdFkbHBw-W4ul851GM,2675
165
192
  code_puppy/tools/file_modifications.py,sha256=vz9n7R0AGDSdLUArZr_55yJLkyI30M8zreAppxIx02M,29380
166
193
  code_puppy/tools/file_operations.py,sha256=CqhpuBnOFOcQCIYXOujskxq2VMLWYJhibYrH0YcPSfA,35692
194
+ code_puppy/tools/subagent_context.py,sha256=zsiKV3B3DxZ_Y5IHHhtE-SMFDg_jMrY7Hi6r5LH--IU,4781
167
195
  code_puppy/tools/tools_content.py,sha256=bsBqW-ppd1XNAS_g50B3UHDQBWEALC1UneH6-afz1zo,2365
168
- code_puppy/tools/browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
- code_puppy/tools/browser/browser_control.py,sha256=MWBv_WR_A6wmm1NJCYFGQGRyYhTLplL4J0_ECZD0IhE,8388
170
- code_puppy/tools/browser/browser_interactions.py,sha256=AGQkAtNl2YI9aS9jM1KgYoMywVDhPOZSV6yf1b5yeyE,16517
171
- code_puppy/tools/browser/browser_locators.py,sha256=U7a6fi1LdCiIImeVhm0_VKn0WZ1A2DnpR6eSroXgQkg,19114
172
- code_puppy/tools/browser/browser_navigation.py,sha256=sX0EIACIUVjWvod_aJpqzDznPbhrBaMRYWBapRNsHr0,7367
173
- code_puppy/tools/browser/browser_screenshot.py,sha256=7jeG5N4-OkpRPY3JMwOrsJjutYV8wRYF6R8sjg5LawU,8132
174
- code_puppy/tools/browser/browser_scripts.py,sha256=sNb8eLEyzhasy5hV4B9OjM8yIVMLVEMRcQ4K77ABjRI,14564
196
+ code_puppy/tools/browser/__init__.py,sha256=SPiEQwsDj5KoxDwX_viNUKFsn4tczxY-Jq2C64EzSNI,927
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=AJe9JbZv8vC93AFWzsAUlrg1YNshv4SWNde-O-_mfQU,6282
202
+ code_puppy/tools/browser/browser_scripts.py,sha256=CYWdQMtjKTNvJNSCkB2vGo-MOzmT_gw2oFMGtkfuzuA,14779
175
203
  code_puppy/tools/browser/browser_workflows.py,sha256=nitW42vCf0ieTX1gLabozTugNQ8phtoFzZbiAhw1V90,6491
176
- code_puppy/tools/browser/camoufox_manager.py,sha256=RZjGOEftE5sI_tsercUyXFSZI2wpStXf-q0PdYh2G3I,8680
177
- code_puppy/tools/browser/vqa_agent.py,sha256=DBn9HKloILqJSTSdNZzH_PYWT0B2h9VwmY6akFQI_uU,2913
178
- code_puppy-0.0.348.data/data/code_puppy/models.json,sha256=FMQdE_yvP_8y0xxt3K918UkFL9cZMYAqW1SfXcQkU_k,3105
179
- code_puppy-0.0.348.data/data/code_puppy/models_dev_api.json,sha256=wHjkj-IM_fx1oHki6-GqtOoCrRMR0ScK0f-Iz0UEcy8,548187
180
- code_puppy-0.0.348.dist-info/METADATA,sha256=jDNlXNr6nSsNNf8O2QJCuRlD9rZWGOV-fU-iZPt4kF0,27550
181
- code_puppy-0.0.348.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
182
- code_puppy-0.0.348.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
183
- code_puppy-0.0.348.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
184
- code_puppy-0.0.348.dist-info/RECORD,,
204
+ code_puppy/tools/browser/camoufox_manager.py,sha256=WIr98SrGeC5jd6jX5tjhFR6A3janqV4tq9Mbznnlh44,13920
205
+ code_puppy/tools/browser/chromium_terminal_manager.py,sha256=w1thQ_ACb6oV45L93TSqPQD0o0cTh3FqT5I9zcOOWlM,8226
206
+ code_puppy/tools/browser/terminal_command_tools.py,sha256=9byOZku-dwvTtCl532xt7Lumed_jTn0sLvUe_X75XCQ,19068
207
+ code_puppy/tools/browser/terminal_screenshot_tools.py,sha256=J_21YO_495NvYgNFu9KQP6VYg2K_f8CtSdZuF94Yhnw,18448
208
+ code_puppy/tools/browser/terminal_tools.py,sha256=F5LjVH3udSCFHmqC3O1UJLoLozZFZsEdX42jOmkqkW0,17853
209
+ code_puppy-0.0.361.data/data/code_puppy/models.json,sha256=FMQdE_yvP_8y0xxt3K918UkFL9cZMYAqW1SfXcQkU_k,3105
210
+ code_puppy-0.0.361.data/data/code_puppy/models_dev_api.json,sha256=wHjkj-IM_fx1oHki6-GqtOoCrRMR0ScK0f-Iz0UEcy8,548187
211
+ code_puppy-0.0.361.dist-info/METADATA,sha256=AkNpl1g19rE0ZEPI-0MWepw8wFq_zLHhe8o_dVlYaRQ,27614
212
+ code_puppy-0.0.361.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
213
+ code_puppy-0.0.361.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
214
+ code_puppy-0.0.361.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
215
+ code_puppy-0.0.361.dist-info/RECORD,,
@@ -1,90 +0,0 @@
1
- """Utilities for running visual question-answering via pydantic-ai."""
2
-
3
- from __future__ import annotations
4
-
5
- from functools import lru_cache
6
-
7
- from pydantic import BaseModel, Field
8
- from pydantic_ai import Agent, BinaryContent
9
-
10
- from code_puppy.config import get_use_dbos, get_vqa_model_name
11
- from code_puppy.model_factory import ModelFactory
12
-
13
-
14
- class VisualAnalysisResult(BaseModel):
15
- """Structured response from the VQA agent."""
16
-
17
- answer: str
18
- confidence: float = Field(ge=0.0, le=1.0)
19
- observations: str
20
-
21
-
22
- def _get_vqa_instructions() -> str:
23
- """Get the system instructions for the VQA agent."""
24
- return (
25
- "You are a visual analysis specialist. Answer the user's question about the provided image. "
26
- "Always respond using the structured schema: answer, confidence (0-1 float), observations. "
27
- "Confidence reflects how certain you are about the answer. Observations should include useful, concise context."
28
- )
29
-
30
-
31
- @lru_cache(maxsize=1)
32
- def _load_vqa_agent(model_name: str) -> Agent[None, VisualAnalysisResult]:
33
- """Create a cached agent instance for visual analysis."""
34
- from code_puppy.model_utils import prepare_prompt_for_model
35
-
36
- models_config = ModelFactory.load_config()
37
- model = ModelFactory.get_model(model_name, models_config)
38
-
39
- # Handle claude-code models: swap instructions (prompt prepending happens in run_vqa_analysis)
40
- instructions = _get_vqa_instructions()
41
- prepared = prepare_prompt_for_model(
42
- model_name, instructions, "", prepend_system_to_user=False
43
- )
44
- instructions = prepared.instructions
45
-
46
- vqa_agent = Agent(
47
- model=model,
48
- instructions=instructions,
49
- output_type=VisualAnalysisResult,
50
- retries=2,
51
- )
52
-
53
- if get_use_dbos():
54
- from pydantic_ai.durable_exec.dbos import DBOSAgent
55
-
56
- dbos_agent = DBOSAgent(vqa_agent, name="vqa-agent")
57
- return dbos_agent
58
-
59
- return vqa_agent
60
-
61
-
62
- def _get_vqa_agent() -> Agent[None, VisualAnalysisResult]:
63
- """Return a cached VQA agent configured with the current model."""
64
- model_name = get_vqa_model_name()
65
- # lru_cache keyed by model_name ensures refresh when configuration changes
66
- return _load_vqa_agent(model_name)
67
-
68
-
69
- def run_vqa_analysis(
70
- question: str,
71
- image_bytes: bytes,
72
- media_type: str = "image/png",
73
- ) -> VisualAnalysisResult:
74
- """Execute the VQA agent synchronously against screenshot bytes."""
75
- from code_puppy.model_utils import prepare_prompt_for_model
76
-
77
- agent = _get_vqa_agent()
78
-
79
- # Handle claude-code models: prepend system prompt to user question
80
- model_name = get_vqa_model_name()
81
- prepared = prepare_prompt_for_model(model_name, _get_vqa_instructions(), question)
82
- question = prepared.user_prompt
83
-
84
- result = agent.run_sync(
85
- [
86
- question,
87
- BinaryContent(data=image_bytes, media_type=media_type),
88
- ]
89
- )
90
- return result.output