janito 3.6.1__py3-none-any.whl → 3.7.0__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 (170) hide show
  1. janito/README.md +4 -7
  2. janito/cli/chat_mode/bindings.py +0 -50
  3. janito/cli/chat_mode/session.py +1 -12
  4. janito/cli/chat_mode/shell/commands/multi.py +0 -5
  5. janito/cli/chat_mode/shell/commands/security/allowed_sites.py +33 -47
  6. janito/cli/cli_commands/list_plugins.py +43 -52
  7. janito/cli/cli_commands/list_tools.py +1 -6
  8. janito/cli/core/getters.py +0 -3
  9. janito/cli/core/model_guesser.py +24 -40
  10. janito/cli/main_cli.py +13 -10
  11. janito/cli/prompt_core.py +9 -47
  12. janito/cli/rich_terminal_reporter.py +4 -4
  13. janito/docs/GETTING_STARTED.md +9 -8
  14. janito/drivers/openai/driver.py +0 -1
  15. janito/drivers/zai/driver.py +0 -1
  16. janito/i18n/it.py +46 -46
  17. janito/llm/agent.py +16 -32
  18. janito/llm/auth_utils.py +5 -14
  19. janito/llm/driver.py +0 -8
  20. janito/plugins/__init__.py +12 -31
  21. janito/plugins/auto_loader.py +11 -12
  22. janito/plugins/auto_loader_fixed.py +11 -12
  23. janito/{plugin_system → plugins}/base.py +2 -5
  24. janito/plugins/builtin.py +1 -15
  25. janito/plugins/core_adapter.py +11 -89
  26. janito/plugins/core_loader.py +120 -0
  27. janito/plugins/core_loader_fixed.py +125 -0
  28. janito/plugins/discovery.py +5 -5
  29. janito/plugins/discovery_core.py +9 -14
  30. janito/plugins/manager.py +1 -1
  31. janito/providers/__init__.py +0 -1
  32. janito/providers/moonshot/model_info.py +7 -7
  33. janito/providers/moonshot/provider.py +1 -1
  34. janito/tools/__init__.py +7 -41
  35. janito/tools/adapters/__init__.py +1 -6
  36. janito/tools/adapters/local/__init__.py +70 -7
  37. janito/{plugins/tools/core → tools/adapters/local}/ask_user.py +3 -3
  38. janito/tools/adapters/local/copy_file.py +87 -0
  39. janito/tools/adapters/local/create_file.py +138 -0
  40. janito/{plugins/tools/core → tools/adapters/local}/fetch_url.py +23 -20
  41. janito/tools/adapters/local/move_file.py +131 -0
  42. janito/{plugins/tools/core → tools/adapters/local}/python_code_run.py +7 -23
  43. janito/{plugins/tools/core → tools/adapters/local}/python_command_run.py +5 -21
  44. janito/{plugins/tools/core → tools/adapters/local}/python_file_run.py +5 -21
  45. janito/tools/adapters/local/remove_file.py +58 -0
  46. janito/{plugins/tools/core → tools/adapters/local}/replace_text_in_file.py +4 -4
  47. janito/{plugins/tools/core → tools/adapters/local}/run_bash_command.py +3 -3
  48. janito/{plugins/tools/core → tools/adapters/local}/run_powershell_command.py +3 -3
  49. janito/{plugins/tools/core → tools/adapters/local}/show_image.py +6 -15
  50. janito/{plugins/core/imagedisplay/tools → tools/adapters/local}/show_image_grid.py +5 -13
  51. janito/tools/adapters/local/view_file.py +172 -0
  52. janito/tools/function_adapter.py +65 -0
  53. janito/tools/loop_protection_decorator.py +117 -114
  54. janito-3.7.0.dist-info/METADATA +84 -0
  55. janito-3.7.0.dist-info/RECORD +264 -0
  56. janito/cli/cli_commands/check_tools.py +0 -212
  57. janito/data/blocked.txt +0 -96
  58. janito/llm/cancellation_manager.py +0 -63
  59. janito/llm/enter_cancellation.py +0 -107
  60. janito/plugin_system/__init__.py +0 -10
  61. janito/plugin_system/core_loader.py +0 -217
  62. janito/plugin_system/core_loader_fixed.py +0 -225
  63. janito/plugins/core/__init__.py +0 -7
  64. janito/plugins/core/codeanalyzer/__init__.py +0 -43
  65. janito/plugins/core/filemanager/__init__.py +0 -124
  66. janito/plugins/core/filemanager/tools/copy_file.py +0 -87
  67. janito/plugins/core/filemanager/tools/create_file.py +0 -87
  68. janito/plugins/core/filemanager/tools/move_file.py +0 -131
  69. janito/plugins/core/filemanager/tools/remove_file.py +0 -58
  70. janito/plugins/core/filemanager/tools/replace_text_in_file.py +0 -270
  71. janito/plugins/core/filemanager/tools/view_file.py +0 -172
  72. janito/plugins/core/imagedisplay/__init__.py +0 -14
  73. janito/plugins/core/imagedisplay/plugin.py +0 -51
  74. janito/plugins/core/imagedisplay/tools/__init__.py +0 -1
  75. janito/plugins/core/imagedisplay/tools/show_image.py +0 -83
  76. janito/plugins/core/system/__init__.py +0 -23
  77. janito/plugins/core/system/tools/run_bash_command.py +0 -204
  78. janito/plugins/core/system/tools/run_powershell_command.py +0 -234
  79. janito/plugins/dev/__init__.py +0 -7
  80. janito/plugins/dev/pythondev/__init__.py +0 -37
  81. janito/plugins/dev/visualization/__init__.py +0 -23
  82. janito/plugins/example_plugin.py +0 -108
  83. janito/plugins/tools/__init__.py +0 -39
  84. janito/plugins/tools/core/__init__.py +0 -65
  85. janito/plugins/tools/core/copy_file.py +0 -87
  86. janito/plugins/tools/core/create_directory.py +0 -70
  87. janito/plugins/tools/core/create_file.py +0 -138
  88. janito/plugins/tools/core/decorators.py +0 -19
  89. janito/plugins/tools/core/delete_text_in_file.py +0 -134
  90. janito/plugins/tools/core/find_files.py +0 -143
  91. janito/plugins/tools/core/get_file_outline/__init__.py +0 -7
  92. janito/plugins/tools/core/get_file_outline/core.py +0 -122
  93. janito/plugins/tools/core/get_file_outline/java_outline.py +0 -47
  94. janito/plugins/tools/core/get_file_outline/markdown_outline.py +0 -14
  95. janito/plugins/tools/core/get_file_outline/python_outline.py +0 -303
  96. janito/plugins/tools/core/get_file_outline/search_outline.py +0 -36
  97. janito/plugins/tools/core/move_file.py +0 -131
  98. janito/plugins/tools/core/open_html_in_browser.py +0 -51
  99. janito/plugins/tools/core/open_url.py +0 -37
  100. janito/plugins/tools/core/read_chart.py +0 -259
  101. janito/plugins/tools/core/read_files.py +0 -58
  102. janito/plugins/tools/core/remove_directory.py +0 -55
  103. janito/plugins/tools/core/remove_file.py +0 -58
  104. janito/plugins/tools/core/search_text/__init__.py +0 -7
  105. janito/plugins/tools/core/search_text/core.py +0 -205
  106. janito/plugins/tools/core/search_text/match_lines.py +0 -67
  107. janito/plugins/tools/core/search_text/pattern_utils.py +0 -73
  108. janito/plugins/tools/core/search_text/traverse_directory.py +0 -145
  109. janito/plugins/tools/core/show_image_grid.py +0 -85
  110. janito/plugins/tools/core/validate_file_syntax/__init__.py +0 -7
  111. janito/plugins/tools/core/validate_file_syntax/core.py +0 -114
  112. janito/plugins/tools/core/validate_file_syntax/css_validator.py +0 -35
  113. janito/plugins/tools/core/validate_file_syntax/html_validator.py +0 -100
  114. janito/plugins/tools/core/validate_file_syntax/jinja2_validator.py +0 -50
  115. janito/plugins/tools/core/validate_file_syntax/js_validator.py +0 -27
  116. janito/plugins/tools/core/validate_file_syntax/json_validator.py +0 -6
  117. janito/plugins/tools/core/validate_file_syntax/markdown_validator.py +0 -109
  118. janito/plugins/tools/core/validate_file_syntax/ps1_validator.py +0 -32
  119. janito/plugins/tools/core/validate_file_syntax/python_validator.py +0 -5
  120. janito/plugins/tools/core/validate_file_syntax/xml_validator.py +0 -11
  121. janito/plugins/tools/core/validate_file_syntax/yaml_validator.py +0 -6
  122. janito/plugins/tools/core/view_file.py +0 -172
  123. janito/plugins/ui/__init__.py +0 -7
  124. janito/plugins/ui/userinterface/__init__.py +0 -16
  125. janito/plugins/ui/userinterface/tools/ask_user.py +0 -110
  126. janito/plugins/web/__init__.py +0 -7
  127. janito/plugins/web/webtools/__init__.py +0 -23
  128. janito/providers/together/__init__.py +0 -1
  129. janito/providers/together/model_info.py +0 -69
  130. janito/providers/together/provider.py +0 -108
  131. janito/tools/blocked_sites.py +0 -74
  132. janito/tools/cli_initializer.py +0 -88
  133. janito/tools/initialize.py +0 -70
  134. janito-3.6.1.dist-info/METADATA +0 -228
  135. janito-3.6.1.dist-info/RECORD +0 -339
  136. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/create_directory.py +0 -0
  137. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/delete_text_in_file.py +0 -0
  138. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/find_files.py +0 -0
  139. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/get_file_outline/__init__.py +0 -0
  140. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/get_file_outline/core.py +0 -0
  141. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/get_file_outline/java_outline.py +0 -0
  142. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/get_file_outline/markdown_outline.py +0 -0
  143. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/get_file_outline/python_outline.py +0 -0
  144. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/get_file_outline/search_outline.py +0 -0
  145. /janito/{plugins/web/webtools/tools → tools/adapters/local}/open_html_in_browser.py +0 -0
  146. /janito/{plugins/web/webtools/tools → tools/adapters/local}/open_url.py +0 -0
  147. /janito/{plugins/dev/visualization/tools → tools/adapters/local}/read_chart.py +0 -0
  148. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/read_files.py +0 -0
  149. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/remove_directory.py +0 -0
  150. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/search_text/__init__.py +0 -0
  151. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/search_text/core.py +0 -0
  152. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/search_text/match_lines.py +0 -0
  153. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/search_text/pattern_utils.py +0 -0
  154. /janito/{plugins/core/codeanalyzer/tools → tools/adapters/local}/search_text/traverse_directory.py +0 -0
  155. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/__init__.py +0 -0
  156. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/core.py +0 -0
  157. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/css_validator.py +0 -0
  158. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/html_validator.py +0 -0
  159. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/jinja2_validator.py +0 -0
  160. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/js_validator.py +0 -0
  161. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/json_validator.py +0 -0
  162. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/markdown_validator.py +0 -0
  163. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/ps1_validator.py +0 -0
  164. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/python_validator.py +0 -0
  165. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/xml_validator.py +0 -0
  166. /janito/{plugins/core/filemanager/tools → tools/adapters/local}/validate_file_syntax/yaml_validator.py +0 -0
  167. {janito-3.6.1.dist-info → janito-3.7.0.dist-info}/WHEEL +0 -0
  168. {janito-3.6.1.dist-info → janito-3.7.0.dist-info}/entry_points.txt +0 -0
  169. {janito-3.6.1.dist-info → janito-3.7.0.dist-info}/licenses/LICENSE +0 -0
  170. {janito-3.6.1.dist-info → janito-3.7.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,264 @@
1
+ janito/README.md,sha256=AOgBj3v721gNifltyzna7mxoQ7BDowRmjBQAM-0r_aQ,4759
2
+ janito/__init__.py,sha256=a0pFui3A_AfWJiUfg93yE-Vf4868bqG3y9yg2fkTIuY,244
3
+ janito/__main__.py,sha256=lPQ8kAyYfyeS1KopmJ8EVY5g1YswlIqCS615mM_B_rM,70
4
+ janito/_version.py,sha256=PtAVr2K9fOS5sv6aXzmcb7UaR5NLGMFOofL7Ndjh75o,2344
5
+ janito/config.py,sha256=DXuC74NEywKvpTkOSrrxJGvHdL_tvXEf27pkedV3XZA,313
6
+ janito/config_manager.py,sha256=0dnECwhkgk8dWYZDtHZ24lNXhYJ4PkmYEDty9Vc1s3c,6281
7
+ janito/conversation_history.py,sha256=GqqEJElTVONzOMRe-9g25WCMcDi0PF7DOnqGWLTrY_8,897
8
+ janito/dir_walk_utils.py,sha256=ON9EyVH7Aaik8WtCH5z8DQis9ycdoNVkjNvU16HH498,1193
9
+ janito/driver_events.py,sha256=51ab7KW_W6fVZVeO0ez-HJFY4NbTI327ZlEmEsEkxQc,3405
10
+ janito/exceptions.py,sha256=5YoffZeZDh2BEdPfhYG6JExvIqOoX7V7TjzrJqzoklw,1786
11
+ janito/formatting.py,sha256=SMvOmL6bst3KGcI7OLa5D4DE127fQYuHZS3oY8OPsn8,2031
12
+ janito/formatting_token.py,sha256=UefBF8Nn3BU8bJNQRrJWB3i3zXEwkRRZMPGuAOJaDYI,2440
13
+ janito/gitignore_utils.py,sha256=P3iF9fMWAomqULq2xsoqHtI9uNIFSPcagljrxZshmLw,4110
14
+ janito/hello.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ janito/mkdocs.yml,sha256=hceV1mnCuj5Eo42jJQHSAhqHC4emiMExgnISiiwqSow,925
16
+ janito/perf_singleton.py,sha256=g1h0Sdf4ydzegeEpJlMhQt4H0GQZ2hryXrdYOTL-b30,113
17
+ janito/performance_collector.py,sha256=RYu4av16Trj3RljJZ8-2Gbn1KlGdJUosrcVFYtwviNI,6285
18
+ janito/platform_discovery.py,sha256=JN3kC7hkxdvuj-AyrJTlbbDJjtNHke3fdlZDqGi_uz0,4621
19
+ janito/provider_config.py,sha256=acn2FEgWsEIyi2AxZiuCLoP2rXDd-nXcP5VB4CZHaeE,3189
20
+ janito/provider_registry.py,sha256=IRNB35Cjn4PSXMWOxKBjPg0DfUEOoL4vh63OSPxhMtk,6925
21
+ janito/report_events.py,sha256=q4OR_jTZNfcqaQF_fzTjgqo6_VlUIxSGWfhpT4nJWcw,938
22
+ janito/shell.bak.zip,sha256=hznHbmgfkAkjuQDJ3w73XPQh05yrtUZQxLmtGbanbYU,22
23
+ janito/utils.py,sha256=eXSsMgM69YyzahgCNrJQLcEbB8ssLI1MQqaa20ONxbE,376
24
+ janito/agent/setup_agent.py,sha256=DIc8gcX41CHWg6YGVSqQJuQxl1iUYk9JIR07wTvHJyk,13012
25
+ janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2,sha256=gA_Br5UoM-CS8eyoYUtoPz4v2IXCjBcaRQmZ-chEEAI,4064
26
+ janito/agent/templates/profiles/system_prompt_template_developer.txt.j2,sha256=6cKS-UJ8pJX3voGsMFqMrJWCCYH0aX8ZWcToRCeEbI4,3747
27
+ janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2,sha256=V9JAxdZcWkl53rmSRnrJCjHIsRM6GWEsNLno2hdKx7M,4256
28
+ janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2,sha256=Zgoa26AlR37rjYAPl-4ydA3NdHm8ylT831IaMiGTd5o,1722
29
+ janito/cli/__init__.py,sha256=xaPDOrWphBbCR63Xpcx_yfpXSJIlCaaICc4j2qpWqrM,194
30
+ janito/cli/config.py,sha256=HkZ14701HzIqrvaNyDcDhGlVHfpX_uHlLp2rHmhRm_k,872
31
+ janito/cli/console.py,sha256=gJolqzWL7jEPLxeuH-CwBDRFpXt976KdZOEAB2tdBDs,64
32
+ janito/cli/main.py,sha256=s5odou0txf8pzTf1ADk2yV7T5m8B6cejJ81e7iu776U,312
33
+ janito/cli/main_cli.py,sha256=FXpoybaEbDRlK5-oMOMlcdM7TpVfnOdr6-mOkgJHeTo,16648
34
+ janito/cli/prompt_core.py,sha256=F68J4Xl6jZMYFN4oBBYZFj15Jp-HTYoLub4bw2XpNRU,11648
35
+ janito/cli/prompt_handler.py,sha256=SnPTlL64noeAMGlI08VBDD5IDD8jlVMIYA4-fS8zVLg,215
36
+ janito/cli/prompt_setup.py,sha256=s48gvNfZhKjsEhf4EzL1tKIGm4wDidPMDvlM6TAPYes,2116
37
+ janito/cli/rich_terminal_reporter.py,sha256=Hitf5U13gncad4GPVAcDMfdSwlfzQzOn9KdeX4TjTWU,6806
38
+ janito/cli/utils.py,sha256=plCQiDKIf3V8mFhhX5H9-MF2W86i-xRdWf8Xi117Z0w,677
39
+ janito/cli/verbose_output.py,sha256=wY_B4of5e8Vv7w1fRwOZzNGU2JqbMdcFnGjtEr4hLus,7686
40
+ janito/cli/chat_mode/bindings.py,sha256=odjc5_-YW1t2FRhBUNRNoBMoQIg5sMz3ktV7xG0ADFU,975
41
+ janito/cli/chat_mode/chat_entry.py,sha256=RFdPd23jsA2DMHRacpjAdwI_1dFBaWrtnwyQEgb2fHA,475
42
+ janito/cli/chat_mode/prompt_style.py,sha256=vsqQ9xxmrYjj1pWuVe9CayQf39fo2EIXrkKPkflSVn4,805
43
+ janito/cli/chat_mode/script_runner.py,sha256=WFTFVWzg_VQrD2Ujj02XWjscfGgHwmjBeRxaEjWw9ps,6505
44
+ janito/cli/chat_mode/session.py,sha256=1mCET4V9u1FGEMnr8HJGOc6X8lhTNkhAYlZ3cvIvefw,18540
45
+ janito/cli/chat_mode/toolbar.py,sha256=SzdWAJdcY1g2rTPZCPL6G5X8jO6ZQYjwko2-nw54_nU,3397
46
+ janito/cli/chat_mode/shell/autocomplete.py,sha256=lE68MaVaodbA2VfUM0_YLqQVLBJAE_BJsd5cMtwuD-g,793
47
+ janito/cli/chat_mode/shell/commands.bak.zip,sha256=I7GFjXg2ORT5NzFpicH1vQ3kchhduQsZinzqo0xO8wU,74238
48
+ janito/cli/chat_mode/shell/input_history.py,sha256=9620dKYSpXfGhdd2msbuqnkNW3Drv0dZ0eisWBaGKbg,2586
49
+ janito/cli/chat_mode/shell/session.bak.zip,sha256=m1GyO3Wy4G4D9sVgRO6ZDyC0VjclsmnEJsiQoer4LzI,5789
50
+ janito/cli/chat_mode/shell/commands/__init__.py,sha256=27m5syilHSQlZX4AewgwIBpknQuf3hsuJhX2khVgZ6o,2464
51
+ janito/cli/chat_mode/shell/commands/_priv_check.py,sha256=OBPRMZlFlLSJSfbXrLqRCqD3ISKqR0QNzBJpa7g30Ro,206
52
+ janito/cli/chat_mode/shell/commands/_priv_status.py,sha256=WgCEK38Hllz3Bz4TgVgODdmo0BDaBey5t0uMyA3125k,478
53
+ janito/cli/chat_mode/shell/commands/bang.py,sha256=qVCUM8ZnGE1J3yG1hjYYw7upY4PR6bhNNYfJa-NfnI4,1860
54
+ janito/cli/chat_mode/shell/commands/base.py,sha256=I6-SVOcRd7q4PpoutLdrbhbqeUpJic2oyPhOSMgMihA,288
55
+ janito/cli/chat_mode/shell/commands/clear.py,sha256=wYEHGYcAohUoCJlbEhiXKfDbJvuzAVK4e9uirskIllw,422
56
+ janito/cli/chat_mode/shell/commands/conversation_restart.py,sha256=idPjWQ4Caps2vMOZ_tgTFOHr2U-cnf6Jqtt8wdyilGc,3848
57
+ janito/cli/chat_mode/shell/commands/execute.py,sha256=ms8qM3mGc-B2rMznPVj01Lx_qYbIOBXzitVuue5nUEo,2518
58
+ janito/cli/chat_mode/shell/commands/help.py,sha256=scbjpb37WT9GLrYf-Cn7MrUhL_ZUQORWVfBRTc1Y5ME,1293
59
+ janito/cli/chat_mode/shell/commands/history_view.py,sha256=9dyxYpDHjT77LEIikjBQA03Ep3P2AmKXUwUnVsG0OQc,3584
60
+ janito/cli/chat_mode/shell/commands/lang.py,sha256=uIelDs3gPYDZ9X9gw7iDMmiwefT7TiBo32420pq2tW8,837
61
+ janito/cli/chat_mode/shell/commands/model.py,sha256=DrtQuqbac5VCpzBikpdu9vVgFVm_K9FYIjUOqmUztD4,1518
62
+ janito/cli/chat_mode/shell/commands/multi.py,sha256=HAAk0fAO3n8KFta3I4hT_scOAlz4SxWDyaNBUJBQ4nc,1985
63
+ janito/cli/chat_mode/shell/commands/privileges.py,sha256=0u6x48lZl3orBPkO04KnRqfB-w7Y_OUyg-rHrNGxx-Q,1157
64
+ janito/cli/chat_mode/shell/commands/prompt.py,sha256=6mj1oUO6bodyED19-_tJVO0x-l3REzYjKhp8OKFFWy4,1790
65
+ janito/cli/chat_mode/shell/commands/provider.py,sha256=p8PM7SPs-ghAfg0Tdd3jVoVpIscaCcrMZC2k5FxkE8I,1155
66
+ janito/cli/chat_mode/shell/commands/read.py,sha256=Nf8pC4W_Sw3ts1bxhJKZmf2jLpjRtLddTirqbB_25oI,2331
67
+ janito/cli/chat_mode/shell/commands/role.py,sha256=4Mt3okuNwOjqHbNhOFawcWB9KCLkpTDuLoDJFeXr3-E,1079
68
+ janito/cli/chat_mode/shell/commands/security_command.py,sha256=w8Gg95fT0jd9CxGWx3PGNi9t2E3TNoAP18agE4sgnUo,1784
69
+ janito/cli/chat_mode/shell/commands/session.py,sha256=9wsw5U24-KJgTT70KAwnGuS8MVPyvpxCJfAt_Io76O0,1574
70
+ janito/cli/chat_mode/shell/commands/session_control.py,sha256=tmMGJ8IvWoBwSIJu7T6GPnFYFrmXWIG2Gr9tTni4y3U,1307
71
+ janito/cli/chat_mode/shell/commands/tools.py,sha256=hc-3D8TVDgEsPF4FJf5wWjsC1STYOeqfisbrMD_3MbM,3505
72
+ janito/cli/chat_mode/shell/commands/unrestricted.py,sha256=U-BvzKtG2Ut1RHKcDgDADr-M3vY7W87GuXzMrqZBut4,1701
73
+ janito/cli/chat_mode/shell/commands/utility.py,sha256=K982P-UwgPLzpEvSuSBGwiQ3zC34S_6T2ork_djweQw,847
74
+ janito/cli/chat_mode/shell/commands/verbose.py,sha256=HDTe0NhdcjBuhh-eJSW8iLPDeeBO95K5iSDAMAljxa4,953
75
+ janito/cli/chat_mode/shell/commands/write.py,sha256=NHPj2xe8icUBcpxALIoZZ1zAsX6bhBFqBhnQPqq7fHs,2341
76
+ janito/cli/chat_mode/shell/commands/security/__init__.py,sha256=od-vkuI7LqmUqz2Q42YToWauRM6IPHGeNj14867yIgM,50
77
+ janito/cli/chat_mode/shell/commands/security/allowed_sites.py,sha256=K_izmERZlumlTVxiTMvMXbMhADlJBvhyeeM5IGva_X8,3240
78
+ janito/cli/chat_mode/shell/session/__init__.py,sha256=uTYE_QpZFEn7v9QE5o1LdulpCWa9vmk0OsefbBGWg_c,37
79
+ janito/cli/chat_mode/shell/session/history.py,sha256=tYav6GgjAZkvWhlI_rfG6OArNqW6Wn2DTv39Hb20QYc,1262
80
+ janito/cli/chat_mode/shell/session/manager.py,sha256=MwD9reHsRaly0CyRB-S1JJ0wPKz2g8Xdj2VvlU35Hgc,1001
81
+ janito/cli/cli_commands/enable_disable_plugin.py,sha256=IIEg5Gz2aAW_7BKrMQTXSGF0zWBoBdrcQQMjfQ7yay4,2985
82
+ janito/cli/cli_commands/list_config.py,sha256=oiQEGaGPjwjG-PrOcakpNMbbqISTsBEs7rkGH3ceQsI,1179
83
+ janito/cli/cli_commands/list_drivers.py,sha256=r2ENykUcvf_9XYp6LHd3RvLXGXyVUA6oe_Pr0dyv92I,5124
84
+ janito/cli/cli_commands/list_models.py,sha256=QF3Wa7OhNcJFKeBxaw0C_rDfsvJFNb-siz5uorajBvo,1595
85
+ janito/cli/cli_commands/list_plugins.py,sha256=Lv-M6EAFiqnj0tl9Bq23s162t--81AIs2EqZxhi81lQ,7996
86
+ janito/cli/cli_commands/list_profiles.py,sha256=O4k6U9iCEeNH3lM-NP_XX_E9W0h__hheLSn23241dkA,3538
87
+ janito/cli/cli_commands/list_providers.py,sha256=oilrBjNL5mot1nz45XQQY6oeiSxoNvphhQYspNcEJpw,391
88
+ janito/cli/cli_commands/list_providers_region.py,sha256=qrMj_gtgEMty8UH0P_O5SgWCVJ9ZKxGUp_GdsE4_EH4,2548
89
+ janito/cli/cli_commands/list_tools.py,sha256=JFRdlhPeA3BzhJ2PkjIt3u137IJoNc-vYSjUuPlaOXw,3593
90
+ janito/cli/cli_commands/model_selection.py,sha256=ANWtwC5glZkGMdaNtARDbEG3QmuBUcDLVxzzC5jeBNo,1643
91
+ janito/cli/cli_commands/model_utils.py,sha256=4t2ZN8DYA8jxluXHiiliV8gMbF_90nKGtgU9VO4-gMg,5088
92
+ janito/cli/cli_commands/ping_providers.py,sha256=hetZAKKZzQYRpRDT5OvRTOe4jYUVNZGjo8gFoyeRA3I,1921
93
+ janito/cli/cli_commands/set_api_key.py,sha256=IR_hUcLjK-2oJmiIVdjc8epPsQAzqEN9MS7lSTVqmKM,1060
94
+ janito/cli/cli_commands/show_config.py,sha256=ammzVEqJQCAdWFRrhI1zjjmzgTCH2l38REoT4gYJPP0,3467
95
+ janito/cli/cli_commands/show_system_prompt.py,sha256=WQclY_bmJrHbIBRU1qx1WV4VyooyXVx_XQyX_4Rb1hs,6335
96
+ janito/cli/core/__init__.py,sha256=YH95fhgY9yBX8RgqX9dSrEkl4exjV0T4rbmJ6xUpG-Y,196
97
+ janito/cli/core/event_logger.py,sha256=1X6lR0Ax7AgF8HlPWFoY5Ystuu7Bh4ooTo78vXzeGB0,2008
98
+ janito/cli/core/getters.py,sha256=opmcSz86J-I95Klsh0c4y6lsYvNakrvRqvuA0o5ARWI,2869
99
+ janito/cli/core/model_guesser.py,sha256=V7LBkIllSp_tP9-2B1gcl5b4b-La7mrOvE3AZQQm8lk,1716
100
+ janito/cli/core/runner.py,sha256=gi8xke6re9AoHHNCivV50i0eUAliw8QTUdXyqMkMplM,9044
101
+ janito/cli/core/setters.py,sha256=zjSUxy6iUzcrmEunFk7dA90KqbMaq2O7LTGP8wn2HxA,5378
102
+ janito/cli/core/unsetters.py,sha256=FEw9gCt0vRvoCt0kRSNfVB2tzi_TqppJIx2nHPP59-k,2012
103
+ janito/cli/single_shot_mode/__init__.py,sha256=Ct99pKe9tINzVW6oedZJfzfZQKWpXz-weSSCn0hrwHY,115
104
+ janito/cli/single_shot_mode/handler.py,sha256=d251ObY-5bkUyccV9NYkKDF0VCKrQTrGEnwt3mtj61w,5529
105
+ janito/docs/GETTING_STARTED.md,sha256=xt2eRDL3gvMZyErg0sKsbr5CxNsAqg9fn_YEXqAeli8,5003
106
+ janito/drivers/dashscope.bak.zip,sha256=9Pv4Xyciju8jO1lEMFVgYXexoZkxmDO3Ig6vw3ODfL8,4936
107
+ janito/drivers/openai_responses.bak.zip,sha256=E43eDCHGa2tCtdjzj_pMnWDdnsOZzj8BJTR5tJp8wcM,13352
108
+ janito/drivers/azure_openai/driver.py,sha256=L2rQOl1d0BHaDChHLtZszAeuWNoyYIgwuYuahE1qJps,4152
109
+ janito/drivers/cerebras/__init__.py,sha256=wXWxPTy4KH5Esw8ml9h-TeApi6XXujNFY2Q4jKVdcAY,26
110
+ janito/drivers/openai/README.md,sha256=bgPdaYX0pyotCoJ9t3cJbYM-teQ_YM1DAFEKLCMP32Q,666
111
+ janito/drivers/openai/driver.py,sha256=NbR_1Btr7QpJjNzJ3CxJa1-Kfw17lImZFU9fyKDLSRo,19567
112
+ janito/drivers/zai/__init__.py,sha256=rleES3ZJEslJ8M02TdTPyxHKXxA4-e2fDJa6yjuzY8s,22
113
+ janito/drivers/zai/driver.py,sha256=uOR7VFEMjd7Dw_zSFO1SN5SgBCIG8b4CEzRMIUXBgUQ,18859
114
+ janito/event_bus/__init__.py,sha256=VG6GOhKMBh0O_92D-zW8a3YitJPKDajGgPiFezTXlNE,77
115
+ janito/event_bus/bus.py,sha256=LokZbAdwcWhWOyKSp7H3Ism57x4EZhxlRPjl3NE4UKU,2847
116
+ janito/event_bus/event.py,sha256=MtgcBPD7cvCuubiLIyo-BWcsNSO-941HLk6bScHTJtQ,427
117
+ janito/event_bus/handler.py,sha256=RhBtT1E48VEM2-k8u3HYsESw7VX5qAgiB8ZTJeKXhHc,1322
118
+ janito/event_bus/queue_bus.py,sha256=l4phun3pxXxi8ZlIq8ChYaiYDVO1PZeXoOzyi3vyu20,1558
119
+ janito/i18n/__init__.py,sha256=6zCIu6pSQpoMJvIRK9oOD3pkzbNeJik3lFDXse0X6ag,994
120
+ janito/i18n/it.py,sha256=jpWyCrwoZXxHaLEbmYL2B1ouOa854ecdCfpXq4mqroc,4052
121
+ janito/i18n/messages.py,sha256=fBuwOTFoygyHPkYphm6Y0r1iE8497Z4iryVAmPhMEkg,1851
122
+ janito/i18n/pt.py,sha256=NlTgpDSftUfFG7FGbs7TK54vQlJVMyaZDHGcWjelwMc,4168
123
+ janito/llm/README.md,sha256=6GRqCu_a9va5HCB1YqNqbshyWKFyAGlnXugrjom-xj8,1213
124
+ janito/llm/__init__.py,sha256=dpyVH51qVRCw-PDyAFLAxq0zd4jl5MDcuV6Cri0D-dQ,134
125
+ janito/llm/agent.py,sha256=T0JfeMoOudTWsHwWCcaocrHyq9k0TvkL4_YePlXvZfo,21269
126
+ janito/llm/auth.py,sha256=8Dl_orUEPhn2X6XjkO2Nr-j1HFT2YDxk1qJl9hSFI88,2286
127
+ janito/llm/auth_utils.py,sha256=7GH7bIScKhVWJW6ugcDrJLcYRamj5dl_l8N1rrvR4Ws,663
128
+ janito/llm/driver.py,sha256=stiicPe_MXTuWW4q6MSwK7PCj8UZcA_30pGACu6xYUQ,10039
129
+ janito/llm/driver_config.py,sha256=OW0ae49EfgKDqaThuDjZBiaN78voNzwiZ6szERMqJos,1406
130
+ janito/llm/driver_config_builder.py,sha256=BvWGx7vaBR5NyvPY1XNAP3lAgo1uf-T25CSsIo2kkCU,1401
131
+ janito/llm/driver_input.py,sha256=Zq7IO4KdQPUraeIo6XoOaRy1IdQAyYY15RQw4JU30uA,389
132
+ janito/llm/message_parts.py,sha256=QY_0kDjaxdoErDgKPRPv1dNkkYJuXIBmHWNLiOEKAH4,1365
133
+ janito/llm/model.py,sha256=EioBkdgn8hJ0iQaKN-0KbXlsrk3YKmwR9IbvoEbdVTE,1159
134
+ janito/llm/provider.py,sha256=3FbhQPrWBSEoIdIi-5DWIh0DD_CM570EFf1NcuGyGko,7961
135
+ janito/plugins/__init__.py,sha256=6tTpUDNJJCRqlGK6RBd40wP_xEowuZZh0FRGeQ5lQQA,400
136
+ janito/plugins/auto_loader.py,sha256=8DRpPZtAUtP-et4Lzaam93MH4s_sqQXXKI8Ly5-GQf8,2329
137
+ janito/plugins/auto_loader_fixed.py,sha256=11pL7J0bX3XOOevQa10_oUtNbH-CXkpKhxOl69Bmzro,2335
138
+ janito/plugins/base.py,sha256=4sQdTOogtDgmLWgA3q1Z8h8s-JySRkk9nSAmg0mHoNM,4285
139
+ janito/plugins/builtin.py,sha256=rAdOz5cekFfsTfXJd5-2AXW4Nh81JoBMONqj1skiTR8,2985
140
+ janito/plugins/config.py,sha256=ex5f1XsKPEgIO4DgJCohPzMKAQoUdx1OdSVU0FlSr5o,2331
141
+ janito/plugins/core_adapter.py,sha256=zOhRMLIsqPb5r-8-pJGucEiWEB1_M5btW6TmsAm-mdE,1877
142
+ janito/plugins/core_loader.py,sha256=VcIwuKUaR2bvRZIFEiUHaS8YulTOKrYtvO_VhKHRpGI,3576
143
+ janito/plugins/core_loader_fixed.py,sha256=ZjBOU-aQCMnRXxQfFSI5caUR_IqaI0HdqOJSt-G-Lkc,3909
144
+ janito/plugins/discovery.py,sha256=JKaoROD4Ci-k8HN1hns130mXq28ZZhQsWfTBSJoOqYc,10106
145
+ janito/plugins/discovery_core.py,sha256=O5OccNWNyrSXGeeTk5xSG0qbsjNsajclNNCiHljFRpI,1613
146
+ janito/plugins/manager.py,sha256=OyqGiZubcPgogs2u_rIV2cs_r4HNPwFZH9U25Z9g5cI,8135
147
+ janito/providers/__init__.py,sha256=EvOFeiqucAY9tgCosJ81p0QA6wQwMT1cR3EeIGrhSQQ,528
148
+ janito/providers/dashscope.bak.zip,sha256=BwXxRmZreEivvRtmqbr5BR62IFVlNjAf4y6DrF2BVJo,5998
149
+ janito/providers/registry.py,sha256=Ygwv9eVrTXOKhv0EKxSWQXO5WMHvajWE2Q_Lc3p7dKo,730
150
+ janito/providers/alibaba/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
+ janito/providers/alibaba/model_info.py,sha256=7S-Wl2qs54zHd7ssi_JHWK7iryAJ8dv_gJdJr5eZosU,3318
152
+ janito/providers/alibaba/provider.py,sha256=FhCulaG0eMI1QJtpbsEMnQaMxIgfna4HOSO3dh09agQ,4210
153
+ janito/providers/anthropic/model_info.py,sha256=m6pBh0Ia8_xC1KZ7ke_4HeHIFw7nWjnYVItnRpkCSWc,1206
154
+ janito/providers/anthropic/provider.py,sha256=aGynBxCFc7oTyvGNDUkbutJCKurC_9J4AkReC2LTPYo,3023
155
+ janito/providers/azure_openai/model_info.py,sha256=TMSqEpQROIIYUGAyulYJ5xGhj7CbLoaKL_JXeLbXaG0,689
156
+ janito/providers/azure_openai/provider.py,sha256=q7DB2J_kaLCTDeE9reS30K9TKY6vr38ZJggT3WPPyTs,5365
157
+ janito/providers/cerebras/__init__.py,sha256=w7VvVDG-AmW7axvt80TSM_HvAM7MjtH_2yM2wzy-Wok,28
158
+ janito/providers/cerebras/model_info.py,sha256=kfIYk9ypKyrSSBCtyXZejDGexSkerBqNhaU1_sQQPKw,2176
159
+ janito/providers/cerebras/provider.py,sha256=2O-L5pNxOVX0MfB2muUoLgj6BO-lNfwlILm1sAV_bpk,5615
160
+ janito/providers/deepseek/__init__.py,sha256=4sISEpq4bJO29vxFK9cfnO-SRUmKoD7oSdeCvz0hVno,36
161
+ janito/providers/deepseek/model_info.py,sha256=CzpdcUjDSjx43REcf9TydI5MrFM7quljXfEThZYo2C4,1176
162
+ janito/providers/deepseek/provider.py,sha256=EmNT4GfkE_zevEalwxy6HmoTb6eD1f3UgroRzYIQ85Y,4154
163
+ janito/providers/google/__init__.py,sha256=hE3OGJvLEhvNLhIK_XmCGIdrIj8MKlyGgdOLJ4mdess,38
164
+ janito/providers/google/model_info.py,sha256=AakTmzvWm1GPvFzGAq6-PeE_Dpq7BmAAqmh3L8N5KKo,1126
165
+ janito/providers/google/provider.py,sha256=NQVG5kovHOc2SDgWjVIwYGMqshvMUAqRAk9iMntQ52k,3606
166
+ janito/providers/ibm/README.md,sha256=5RLzoS8n0i4yxDrg7qbubbIc5wkqycvhFMn_JRdBY00,2621
167
+ janito/providers/ibm/__init__.py,sha256=xwB2n-GP1oUsi8LuYKMgziclSSE2yJoFR9WImuUgqNw,26
168
+ janito/providers/ibm/model_info.py,sha256=ZUz_j0cEiVcT87I0xAMiIWeGgA38fFx77zJ4RO8pchM,2538
169
+ janito/providers/ibm/provider.py,sha256=PvFseMD527XuBtg9SImIzwyohjnzvE7KgK-ix3Ly8K0,5362
170
+ janito/providers/mistral/__init__.py,sha256=jFHSvtQro8BnHajv7M0Zf9vssXyTzLxyN2J-7ithZlo,28
171
+ janito/providers/mistral/model_info.py,sha256=yeCg30ZjJ-HL4QaH7YjADKReINkDMmA3Cj28g7MyMP0,2268
172
+ janito/providers/mistral/provider.py,sha256=rBFrwT40vnPi-whNCMI8o-OurIdCRxm3tkgPXBDB3Gk,4775
173
+ janito/providers/moonshot/__init__.py,sha256=QBirGjijujOZuJ1UZ8c7MflSy5EHjWnuBmAr3AupbH0,29
174
+ janito/providers/moonshot/model_info.py,sha256=hmDsc6WxKwZ7Y9PSudEHye8aUGQ01xprpYInwcaJAp0,1030
175
+ janito/providers/moonshot/provider.py,sha256=LJxNoC7Oo-ZoFKs2ulK2lXzUEx7kV-79HJ8JG4J-UWU,3856
176
+ janito/providers/openai/__init__.py,sha256=f0m16-sIqScjL9Mp4A0CQBZx6H3PTEy0cnE08jeaB5U,38
177
+ janito/providers/openai/model_info.py,sha256=VTkq3xcx2vk0tXlFVHQxKeFzl-DL1T1J2elVOEwCdHI,4265
178
+ janito/providers/openai/provider.py,sha256=PPr_qmSe5GyysnZCxhjeUVhE2LWKjKOSRel-8aaxq_U,4761
179
+ janito/providers/openai/schema_generator.py,sha256=hTqeLcPTR8jeKn5DUUpo7b-EZ-V-g1WwXiX7MbHnFzE,2234
180
+ janito/providers/zai/__init__.py,sha256=qtIr9_QBFaXG8xB6cRDGhS7se6ir11CWseI9azLMRBo,24
181
+ janito/providers/zai/model_info.py,sha256=ldwD8enpxXv1G-YsDw4YJn31YsVueQ4vj5HgoYvnPxo,1183
182
+ janito/providers/zai/provider.py,sha256=aKqDTdcwWk-FT70wTbTrTzlWx2NwRWkLoB64upiliU8,5066
183
+ janito/providers/zai/schema_generator.py,sha256=0kuxbrWfNKGO9fzxFStqOpTT09ldyI6vYxeDxFN4ku8,4091
184
+ janito/regions/__init__.py,sha256=DVUiWPXGKX73tj3PJcLJXdQTwhiYWlcWPNpPcNNeYhk,484
185
+ janito/regions/cli.py,sha256=dFiHj1XxqhegqK1kFz-08QpYgiYniEi_ZQiDqjyUaJs,3612
186
+ janito/regions/geo_utils.py,sha256=nLJ2x0tx1xMNI0_cMEiji-X8denynsaPYmXR9gGg8uk,5908
187
+ janito/regions/provider_regions.py,sha256=QJdbsdgjg-WcTRqPLGtm3pHJAm2o0-Y9MgE_vNzENEk,4619
188
+ janito/tools/DOCSTRING_STANDARD.txt,sha256=VLPwNgjxRVD_xZSSVvUZ4H-4bBwM-VKh_RyfzYQsYSs,1735
189
+ janito/tools/README.md,sha256=5HkLpF5k4PENJER7SlDPRXj0yo9mpHvAHW4uuzhq4ak,115
190
+ janito/tools/__init__.py,sha256=W1B39PztC2UF7PS2WyLH6el32MFOETMlN1-LurOROCg,1171
191
+ janito/tools/base.py,sha256=R38A9xWYh3JRYZMDSom2d1taNDy9J7HpLbZo9X2wH_o,316
192
+ janito/tools/disabled_tools.py,sha256=Tx__16wtMWZ9z34cYLdH1gukwot5MCL-9kLjd5MPX6Y,2110
193
+ janito/tools/function_adapter.py,sha256=A_-5pA5Y3v0TAYMA-vq3A-Cawg75kH5XWcUEkNHSOoI,2267
194
+ janito/tools/inspect_registry.py,sha256=Jo7PrMPRKLuR-j_mBAk9PBcTzeJf1eQrS1ChGofgQk0,538
195
+ janito/tools/loop_protection.py,sha256=WQ2Cqt459vXvrO0T1EqkEHynHlRkPzfaC83RSmXzjkM,4718
196
+ janito/tools/loop_protection_decorator.py,sha256=R1j2ouscKbVcDm2wlxRZ6zQuKExgj633ijeDq4j0oO0,6457
197
+ janito/tools/outline_file.bak.zip,sha256=EeI2cBXCwTdWVgJDNiroxKeYlkjwo6NLKeXz3J-2iZI,15607
198
+ janito/tools/path_security.py,sha256=40b0hV0X3449Dht93A04Q3c9AYSsBQsBFy2BjzM83lA,8214
199
+ janito/tools/path_utils.py,sha256=Rg5GE4kiu7rky6I2KTtivW6wPXzc9Qmq0_lOjwkPYlI,832
200
+ janito/tools/permissions.py,sha256=_viTVXyetZC01HjI2s5c3klIJ8-RkWB1ShdOaV__loY,1508
201
+ janito/tools/permissions_parse.py,sha256=LHadt0bWglm9Q2BbbVVbKePg4oa7QLeRQ-ChQZsE_dI,384
202
+ janito/tools/tool_base.py,sha256=TSrXDknqIqOtY3xzuvtsxZ3qwbvmGzUruBiqVzzICfc,3689
203
+ janito/tools/tool_events.py,sha256=czRtC2TYakAySBZvfHS_Q6_NY_7_krxzAzAL1ggRFWA,1527
204
+ janito/tools/tool_run_exception.py,sha256=43yWgTaGBGEtRteo6FvTrane6fEVGo9FU1uOdjMRWJE,525
205
+ janito/tools/tool_use_tracker.py,sha256=IaEmA22D6RuL1xMUCScOMGv0crLPwEJVGmj49cydIaM,2662
206
+ janito/tools/tool_utils.py,sha256=alPm9DvtXSw_zPRKvP5GjbebPRf_nfvmWk2TNlL5Cws,1219
207
+ janito/tools/tools_adapter.py,sha256=F1Wkji222dY53HMaZWf3vqVas1Bimm3UXERKvxF54Ew,21687
208
+ janito/tools/tools_schema.py,sha256=rGrKrmpPNR07VXHAJ_haGBRRO-YGLOF51BlYRep9AAQ,4415
209
+ janito/tools/url_whitelist.py,sha256=0CPLkHTp5HgnwgjxwgXnJmwPeZQ30q4j3YjW59hiUUE,4295
210
+ janito/tools/adapters/__init__.py,sha256=XKixOKtUJs1R-rGwGDXSLVLg5-Kp090gvWbsseWT4LI,92
211
+ janito/tools/adapters/local/__init__.py,sha256=I6LtLnDTyApZrSlKcihSQqZv3gADVX781Mcj46LH7ac,2362
212
+ janito/tools/adapters/local/adapter.py,sha256=u4nLHTaYdwZXMi1J8lsKvlG6rOmdq9xjey_3zeyCG4k,8707
213
+ janito/tools/adapters/local/ask_user.py,sha256=-shjMRKrRe7HNHM2w_6YAl7eEgl8QXaIV6LKrUDEBxU,4060
214
+ janito/tools/adapters/local/copy_file.py,sha256=SBJm19Ipe5dqRE1Mxl6JSrn4bNmfObVnDr5b1mcEu6c,3682
215
+ janito/tools/adapters/local/create_directory.py,sha256=LxwqQEsnOrEphCIoaMRRx9P9bu0MzidP3Fc5q6letxc,2584
216
+ janito/tools/adapters/local/create_file.py,sha256=fLTVnMpDnHzzIVK3nS0DtawBT-I18Is-qa0Hg8y6TXY,6385
217
+ janito/tools/adapters/local/delete_text_in_file.py,sha256=uEeedRxXAR7_CqUc_qhbEdM0OzRi_pgnP-iDjs2Zvjk,5087
218
+ janito/tools/adapters/local/fetch_url.py,sha256=QjoOZj06PjsU8uFjJ6O8Fy-WUvS4GhSaHAJQx2rAzoE,18212
219
+ janito/tools/adapters/local/find_files.py,sha256=Zbag3aP34vc7ffJh8bOqAwXj3KiZhV--uzTVHtNb-fI,6250
220
+ janito/tools/adapters/local/move_file.py,sha256=LMGm8bn3NNyIPJG4vrlO09smXQcgzA09EwoooZxkIA8,4695
221
+ janito/tools/adapters/local/open_html_in_browser.py,sha256=XqICIwVx5vEE77gHkaNAC-bAeEEy0DBmDksATiL-sRY,2101
222
+ janito/tools/adapters/local/open_url.py,sha256=V3Sv7iLynUreLjVl5-bl-XFH_LzpTeBrS8-cvzp_7rM,1552
223
+ janito/tools/adapters/local/python_code_run.py,sha256=HdDuiRb7Fd7WC6bFS292XnSI1EYhn9XKlh8Hs_4Cz8E,6981
224
+ janito/tools/adapters/local/python_command_run.py,sha256=BT9emL3PsNGupkENNfUymPECiQEAm9tBhniCaOuatj0,6935
225
+ janito/tools/adapters/local/python_file_run.py,sha256=p0iOoxByCoKqW7QqfxTdHbPbRzEd_KWyZqnzrSb1qLQ,6859
226
+ janito/tools/adapters/local/read_chart.py,sha256=qQebp_MEE_x2AL_pl85uA58A4lbhLQsyGl7wiG_Cjhc,10411
227
+ janito/tools/adapters/local/read_files.py,sha256=LzlNrQEadYF8dF97Wm8AHde2nuqbMkN5vVskQLhvFdA,2329
228
+ janito/tools/adapters/local/remove_directory.py,sha256=DEhHdmwJRl5Yp9eEukIIooMrpATCtXcv5HmaDRn8vH8,1913
229
+ janito/tools/adapters/local/remove_file.py,sha256=Imra4jGkBfAd6pnUAmbUsjN0exj2vzZWuNRXq_GOMsI,2093
230
+ janito/tools/adapters/local/replace_text_in_file.py,sha256=zJIDecviF2YRpWxbvhtka4Iaje-QYhcaqQX1PxWolzE,10966
231
+ janito/tools/adapters/local/run_bash_command.py,sha256=7fABqAeAu7WJwzzwHmT54_m5OSwPMcgpQ74lQhPG7TA,7955
232
+ janito/tools/adapters/local/run_powershell_command.py,sha256=uQSJVQe40wSGbesyvZxDmIKJthAbDJFaxXm1dEN3gBs,9313
233
+ janito/tools/adapters/local/show_image.py,sha256=OkdiIkaRhjqPMSF5QFcqjLK-fN1oljo_YQM9TH2ZK_A,2932
234
+ janito/tools/adapters/local/show_image_grid.py,sha256=w_U04_K0qmCcX8ac6KUcs-UsnfCb-qsXT3-kasr17dM,3000
235
+ janito/tools/adapters/local/view_file.py,sha256=cBKcbwbfH-UMyvQ7PmYTgsshcFmorjWtyH1kaYi7oNY,7379
236
+ janito/tools/adapters/local/get_file_outline/__init__.py,sha256=OKV_BHnoD9h-vkcVoW6AHmsuDjjauHPCKNK0nVFl4sU,37
237
+ janito/tools/adapters/local/get_file_outline/core.py,sha256=25k6a8PaDYxAfxnEAvZvOWg2BgUcgKU_BkzJmZKUMEA,4611
238
+ janito/tools/adapters/local/get_file_outline/java_outline.py,sha256=_UeUY5JoQEUdlHcK8aqGTqYJl0T2KxIFXPTdwum9gKQ,1825
239
+ janito/tools/adapters/local/get_file_outline/markdown_outline.py,sha256=bXEBg0D93tEBDNy8t-wh4i7WxsxfpQ2C3dX1_rmtj08,434
240
+ janito/tools/adapters/local/get_file_outline/python_outline.py,sha256=RAcf9Vxec08lA06drYaNre5HCJ2lTzrRAskZ3rlyE-U,10326
241
+ janito/tools/adapters/local/get_file_outline/search_outline.py,sha256=bski24TpnJVf3L0TNzkx3HfvaXwttQl4EVkwk2POQOw,1348
242
+ janito/tools/adapters/local/search_text/__init__.py,sha256=FEYpF5tTtf0fiAyRGIGSn-kV-MJDkhdFIbus16mYW8Y,34
243
+ janito/tools/adapters/local/search_text/core.py,sha256=Qoid7FESJGVIsFm5oasgv9vZDy0aSzqeJPBWAF2_Edo,7877
244
+ janito/tools/adapters/local/search_text/match_lines.py,sha256=RLR8fZFP-Q57rY0fTENbMItmt3dJZiYX0otmGHVRjfw,2131
245
+ janito/tools/adapters/local/search_text/pattern_utils.py,sha256=D7vtAr8oT0tGV0C_UUarAXS9XQtP-MTYmmc8Yg8iVTg,2362
246
+ janito/tools/adapters/local/search_text/traverse_directory.py,sha256=EpL1qywAV0H29pm8-QsHrjKchKP4i4sRUOENVuNptCo,4000
247
+ janito/tools/adapters/local/validate_file_syntax/__init__.py,sha256=P53RHmas4BbHL90cMxH9m-RpMCJI8JquoJb0rpkPVVk,29
248
+ janito/tools/adapters/local/validate_file_syntax/core.py,sha256=oYCpk_kyCbseKG_xX5xQjW91bPSpzzl18TPm7mMpwPI,3714
249
+ janito/tools/adapters/local/validate_file_syntax/css_validator.py,sha256=jE5d26C_fU9k9azujbGVISn2WIRL-Ys6de4dsCq30bo,1351
250
+ janito/tools/adapters/local/validate_file_syntax/html_validator.py,sha256=VV93BRcAeUraXHc9dUyH1cs9gRwRwO84K1-L5zbJnYU,3207
251
+ janito/tools/adapters/local/validate_file_syntax/jinja2_validator.py,sha256=lfM0SsKsFygiEp1IuLNr5jdS7XJyjCLOPw2yo9vl-pY,1763
252
+ janito/tools/adapters/local/validate_file_syntax/js_validator.py,sha256=42LvgyMVhG9c2EAaSz3J9pu-yuh1oyIvRp0wN2rHiDQ,998
253
+ janito/tools/adapters/local/validate_file_syntax/json_validator.py,sha256=muCB0-bdxk9zNulzH1It3hWpYzJC3hD8LbxCnE0P5is,150
254
+ janito/tools/adapters/local/validate_file_syntax/markdown_validator.py,sha256=k4UT88fXvtclygz-nFhCMHJL5sk5WlGD-fP_cWqWMyU,3511
255
+ janito/tools/adapters/local/validate_file_syntax/ps1_validator.py,sha256=TeIkPt08t_-w2JiKksXHHK9lJNT348ZDkWoSTzMtRrI,1152
256
+ janito/tools/adapters/local/validate_file_syntax/python_validator.py,sha256=BfCO_K18qy92m-2ZVvHsbEU5e11OPo1pO9Vz4G4616E,130
257
+ janito/tools/adapters/local/validate_file_syntax/xml_validator.py,sha256=AijlsP_PgNuC8ZbGsC5vOTt3Jur76otQzkd_7qR0QFY,284
258
+ janito/tools/adapters/local/validate_file_syntax/yaml_validator.py,sha256=TgyI0HRL6ug_gBcWEm5TGJJuA4E34ZXcIzMpAbv3oJs,155
259
+ janito-3.7.0.dist-info/licenses/LICENSE,sha256=dXV4fOF2ZErugtN8l_Nrj5tsRTYgtjE3cgiya0UfBio,11356
260
+ janito-3.7.0.dist-info/METADATA,sha256=MjCqsl4RpH5z-2pwH3f2r84WtTEGu6I2EhTgIX4d_3s,2312
261
+ janito-3.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
262
+ janito-3.7.0.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
263
+ janito-3.7.0.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
264
+ janito-3.7.0.dist-info/RECORD,,
@@ -1,212 +0,0 @@
1
- """
2
- CLI Command: Check all registered tools for signature validation and availability
3
- """
4
-
5
- import inspect
6
- import sys
7
- from typing import Dict, List, Tuple, Any
8
-
9
-
10
- def _validate_tool_signature(tool_instance) -> Tuple[bool, List[str]]:
11
- """Validate the signature of a tool's run method."""
12
- errors = []
13
-
14
- if not hasattr(tool_instance, "run"):
15
- errors.append("Missing 'run' method")
16
- return False, errors
17
-
18
- try:
19
- sig = inspect.signature(tool_instance.run)
20
- except ValueError as e:
21
- errors.append(f"Invalid signature: {e}")
22
- return False, errors
23
-
24
- # Basic signature validation - just check if it's callable
25
- if not callable(getattr(tool_instance, "run")):
26
- errors.append("'run' method is not callable")
27
-
28
- return len(errors) == 0, errors
29
-
30
-
31
- def _check_tool_availability(tool_instance) -> Tuple[bool, List[str]]:
32
- """Check if a tool is available for use."""
33
- errors = []
34
-
35
- # Check if tool has required attributes
36
- required_attrs = ["tool_name"]
37
- for attr in required_attrs:
38
- if not hasattr(tool_instance, attr):
39
- errors.append(f"Missing required attribute: {attr}")
40
-
41
- # Check description (optional for now)
42
- if not hasattr(tool_instance, "description"):
43
- pass # Allow missing description
44
-
45
- # Check permissions
46
- if not hasattr(tool_instance, "permissions"):
47
- # Function-based tools use permissions from function decorators
48
- pass # Allow missing permissions for function-based tools
49
- else:
50
- perms = tool_instance.permissions
51
- if (
52
- not hasattr(perms, "read")
53
- or not hasattr(perms, "write")
54
- or not hasattr(perms, "execute")
55
- ):
56
- errors.append("Invalid permissions structure")
57
-
58
- return len(errors) == 0, errors
59
-
60
-
61
- def _get_tool_status_summary(
62
- tools: List[Any], disabled_tools: List[str]
63
- ) -> Dict[str, Any]:
64
- """Get a comprehensive status summary for all tools."""
65
- summary = {
66
- "total": len(tools),
67
- "available": 0,
68
- "disabled": 0,
69
- "invalid": 0,
70
- "details": [],
71
- }
72
-
73
- for tool in tools:
74
- tool_name = getattr(tool, "tool_name", str(tool))
75
-
76
- # Check if disabled
77
- is_disabled = tool_name in disabled_tools
78
-
79
- # Validate signature and availability
80
- sig_valid, sig_errors = _validate_tool_signature(tool)
81
- avail_valid, avail_errors = _check_tool_availability(tool)
82
-
83
- status = {
84
- "name": tool_name,
85
- "disabled": is_disabled,
86
- "signature_valid": sig_valid,
87
- "available": avail_valid,
88
- "signature_errors": sig_errors,
89
- "availability_errors": avail_errors,
90
- }
91
-
92
- summary["details"].append(status)
93
-
94
- if is_disabled:
95
- summary["disabled"] += 1
96
- elif not sig_valid or not avail_valid:
97
- summary["invalid"] += 1
98
- else:
99
- summary["available"] += 1
100
-
101
- return summary
102
-
103
-
104
- def _print_check_results(console, summary: Dict[str, Any], verbose: bool = False):
105
- """Print the tool check results in a formatted way."""
106
- from rich.table import Table
107
- from rich.panel import Panel
108
- from rich.text import Text
109
-
110
- # Overall summary
111
- summary_text = Text()
112
- summary_text.append(f"Total tools: {summary['total']}", style="cyan")
113
- summary_text.append(" | ")
114
- summary_text.append(f"Available: {summary['available']}", style="green")
115
- summary_text.append(" | ")
116
- summary_text.append(f"Disabled: {summary['disabled']}", style="yellow")
117
- summary_text.append(" | ")
118
- summary_text.append(f"Invalid: {summary['invalid']}", style="red")
119
-
120
- console.print(Panel(summary_text, title="Tool Check Summary", style="bold"))
121
-
122
- # Always show the table for check-tools
123
- table = Table(title="Tool Details", show_header=True, header_style="bold")
124
- table.add_column("Tool", style="cyan", no_wrap=True)
125
- table.add_column("Status", style="green")
126
- table.add_column("Issues", style="red")
127
-
128
- for detail in summary["details"]:
129
- name = detail["name"]
130
-
131
- if detail["disabled"]:
132
- status = "[yellow]Disabled[/yellow]"
133
- issues = "-"
134
- elif not detail["available"] or not detail["signature_valid"]:
135
- status = "[red]Invalid[/red]"
136
- all_issues = detail["signature_errors"] + detail["availability_errors"]
137
- issues = "\n".join(all_issues)
138
- else:
139
- status = "[green]Available[/green]"
140
- issues = "-"
141
-
142
- table.add_row(name, status, issues)
143
-
144
- console.print(table)
145
-
146
-
147
- def handle_check_tools(args=None):
148
- """Handle the --check-tools CLI command."""
149
- from janito.tools.adapters.local.adapter import LocalToolsAdapter
150
- import janito.tools # Ensure all tools are registered
151
-
152
- # Load disabled tools from config
153
- from janito.tools.disabled_tools import DisabledToolsState
154
- from janito.config import config
155
-
156
- disabled_str = config.get("disabled_tools", "")
157
- if disabled_str:
158
- DisabledToolsState.set_disabled_tools(disabled_str)
159
- disabled_tools = DisabledToolsState.get_disabled_tools()
160
-
161
- # Initialize tools properly using the same approach as list_tools.py
162
- from janito.tools.adapters.local.adapter import LocalToolsAdapter
163
- from janito.tools.tool_base import ToolPermissions
164
- import janito.tools # Ensure all tools are registered
165
-
166
- read = getattr(args, "read", False) if args else False
167
- write = getattr(args, "write", False) if args else False
168
- execute = getattr(args, "exec", False) if args else False
169
- if not (read or write or execute):
170
- read = write = execute = True
171
- from janito.tools.permissions import set_global_allowed_permissions
172
-
173
- set_global_allowed_permissions(
174
- ToolPermissions(read=read, write=write, execute=execute)
175
- )
176
-
177
- # Load disabled tools from config
178
- from janito.tools.disabled_tools import DisabledToolsState
179
- from janito.config import config
180
-
181
- disabled_str = config.get("disabled_tools", "")
182
- if disabled_str:
183
- DisabledToolsState.set_disabled_tools(disabled_str)
184
- disabled_tools = DisabledToolsState.get_disabled_tools()
185
-
186
- # Initialize tools using the same method as list_tools.py
187
- from janito.tools.initialize import initialize_tools
188
-
189
- registry = initialize_tools()
190
-
191
- # Get actual tool instances
192
- tool_instances = []
193
- for name, tool_info in registry._tools.items():
194
- if "instance" in tool_info:
195
- tool_instances.append(tool_info["instance"])
196
-
197
- if not tool_instances:
198
- print("No tools registered.")
199
- return
200
-
201
- from rich.console import Console
202
-
203
- console = Console()
204
-
205
- verbose = getattr(args, "verbose", False) if args else False
206
-
207
- summary = _get_tool_status_summary(tool_instances, disabled_tools)
208
- _print_check_results(console, summary, verbose=verbose)
209
-
210
- # Exit with error code if there are invalid tools
211
- if summary["invalid"] > 0:
212
- sys.exit(1)
janito/data/blocked.txt DELETED
@@ -1,96 +0,0 @@
1
- # Sites known to be unexplorable due to authentication/paywall restrictions
2
- # This list helps identify URLs that should be skipped during automated exploration
3
-
4
- # News sites with paywalls
5
- https://www.reuters.com
6
- https://www.wsj.com
7
- https://www.ft.com
8
- https://www.thetimes.co.uk
9
- https://www.nytimes.com
10
- https://www.washingtonpost.com
11
- https://www.economist.com
12
- https://www.bloomberg.com
13
- https://www.thestreet.com
14
- https://www.marketwatch.com
15
-
16
- # Academic/research databases
17
- https://www.jstor.org
18
- https://academic.oup.com
19
- https://www.sciencedirect.com
20
- https://ieeexplore.ieee.org
21
- https://dl.acm.org
22
- https://pubs.acs.org
23
- https://www.nature.com
24
- https://www.science.org
25
- https://link.springer.com
26
- https://onlinelibrary.wiley.com
27
-
28
- # Social media platforms (require login)
29
- https://www.facebook.com
30
- https://www.twitter.com
31
- https://www.instagram.com
32
- https://www.linkedin.com
33
- https://www.tiktok.com
34
- https://www.snapchat.com
35
- https://www.threads.net
36
-
37
- # Streaming services
38
- https://www.netflix.com
39
- https://www.hulu.com
40
- https://www.disneyplus.com
41
- https://www.primevideo.com
42
- https://www.hbomax.com
43
- https://www.spotify.com
44
- https://music.apple.com
45
-
46
- # Cloud services requiring authentication
47
- https://drive.google.com
48
- https://www.dropbox.com
49
- https://onedrive.live.com
50
- https://www.icloud.com
51
- https://github.com (private repos)
52
- https://gitlab.com (private repos)
53
-
54
- # Financial services
55
- https://www.paypal.com
56
- https://www.venmo.com
57
- https://www.cash.app
58
- https://www.zellepay.com
59
- https://www.robinhood.com
60
- https://www.coinbase.com
61
-
62
- # Government services requiring login
63
- https://www.irs.gov
64
- https://www.ssa.gov
65
- https://www.medicare.gov
66
- https://www.dmv.ca.gov
67
- https://www.gov.uk
68
-
69
- # Shopping sites requiring accounts
70
- https://www.amazon.com (account areas)
71
- https://www.ebay.com (account areas)
72
- https://www.etsy.com (account areas)
73
-
74
- # Professional tools
75
- https://slack.com
76
- https://zoom.us
77
- https://teams.microsoft.com
78
- https://www.notion.so
79
- https://trello.com
80
- https://asana.com
81
-
82
- # Dating apps
83
- https://tinder.com
84
- https://www.bumble.com
85
- https://www.okcupid.com
86
- https://match.com
87
- https://eharmony.com
88
-
89
- # Gaming platforms
90
- https://www.steamcommunity.com
91
- https://www.xbox.com
92
- https://www.playstation.com
93
- https://www.nintendo.com
94
-
95
- # Note: These URLs are generally inaccessible without proper authentication
96
- # Some may allow limited public access, but core functionality requires login
@@ -1,63 +0,0 @@
1
- """
2
- Global cancellation manager for LLM requests.
3
- Provides a centralized way to cancel ongoing requests.
4
- """
5
-
6
- import threading
7
- from typing import Optional
8
-
9
-
10
- class CancellationManager:
11
- """Manages cancellation of LLM requests across the application."""
12
-
13
- def __init__(self):
14
- self._current_cancel_event: Optional[threading.Event] = None
15
- self._lock = threading.Lock()
16
- self._keyboard_cancellation = None
17
-
18
- def start_new_request(self) -> threading.Event:
19
- """Start a new request and return its cancellation event."""
20
- with self._lock:
21
- # Create new cancellation event for this request
22
- self._current_cancel_event = threading.Event()
23
-
24
- # Start keyboard monitoring
25
- from janito.llm.enter_cancellation import get_enter_cancellation
26
-
27
- self._keyboard_cancellation = get_enter_cancellation()
28
- self._keyboard_cancellation.start_monitoring(self._current_cancel_event)
29
-
30
- return self._current_cancel_event
31
-
32
- def cancel_current_request(self) -> bool:
33
- """Cancel the current request if one is active."""
34
- with self._lock:
35
- if self._current_cancel_event is not None:
36
- self._current_cancel_event.set()
37
- return True
38
- return False
39
-
40
- def get_current_cancel_event(self) -> Optional[threading.Event]:
41
- """Get the current cancellation event."""
42
- with self._lock:
43
- return self._current_cancel_event
44
-
45
- def clear_current_request(self):
46
- """Clear the current request cancellation event."""
47
- with self._lock:
48
- if self._keyboard_cancellation:
49
- self._keyboard_cancellation.stop_monitoring()
50
- self._keyboard_cancellation = None
51
- self._current_cancel_event = None
52
-
53
-
54
- # Global cancellation manager instance
55
- _global_manager = None
56
-
57
-
58
- def get_cancellation_manager() -> CancellationManager:
59
- """Get the global cancellation manager instance."""
60
- global _global_manager
61
- if _global_manager is None:
62
- _global_manager = CancellationManager()
63
- return _global_manager