janito 3.12.1__py3-none-any.whl → 3.12.3__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.
@@ -1,104 +1,104 @@
1
- from janito.llm.provider import LLMProvider
2
- from janito.llm.model import LLMModelInfo
3
- from janito.llm.auth import LLMAuthManager
4
- from janito.llm.driver_config import LLMDriverConfig
5
- from janito.drivers.openai.driver import OpenAIModelDriver
6
- from janito.tools import get_local_tools_adapter
7
- from janito.providers.registry import LLMProviderRegistry
8
- from .model_info import MODEL_SPECS
9
- from queue import Queue
10
-
11
- available = OpenAIModelDriver.available
12
- unavailable_reason = OpenAIModelDriver.unavailable_reason
13
-
14
-
15
- class AlibabaProvider(LLMProvider):
16
- name = "alibaba"
17
- NAME = "alibaba"
18
- MAINTAINER = "João Pinto <janito@ikignosis.org>"
19
- MODEL_SPECS = MODEL_SPECS
20
- DEFAULT_MODEL = "qwen3-max-preview" # 128k context, latest preview model
21
-
22
- def __init__(
23
- self, auth_manager: LLMAuthManager = None, config: LLMDriverConfig = None
24
- ):
25
- # Always set a tools adapter so that even if the driver is unavailable,
26
- # generic code paths that expect provider.execute_tool() continue to work.
27
- self._tools_adapter = get_local_tools_adapter()
28
-
29
- # Always initialize _driver_config to avoid AttributeError
30
- self._driver_config = config or LLMDriverConfig(model=None)
31
-
32
- if not self.available:
33
- self._driver = None
34
- else:
35
- self.auth_manager = auth_manager or LLMAuthManager()
36
- self._api_key = self.auth_manager.get_credentials(type(self).NAME)
37
- if not self._api_key:
38
- from janito.llm.auth_utils import handle_missing_api_key
39
-
40
- handle_missing_api_key(self.name, "ALIBABA_API_KEY")
41
-
42
- if not self._driver_config.model:
43
- self._driver_config.model = self.DEFAULT_MODEL
44
- if not self._driver_config.api_key:
45
- self._driver_config.api_key = self._api_key
46
- # Set Alibaba international endpoint as default base_url if not provided
47
- if not getattr(self._driver_config, "base_url", None):
48
- self._driver_config.base_url = (
49
- "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
50
- )
51
- self.fill_missing_device_info(self._driver_config)
52
- self._driver = None # to be provided by factory/agent
53
-
54
- @property
55
- def driver(self) -> OpenAIModelDriver:
56
- if not self.available:
57
- raise ImportError(f"AlibabaProvider unavailable: {self.unavailable_reason}")
58
- return self._driver
59
-
60
- @property
61
- def available(self):
62
- return available
63
-
64
- @property
65
- def unavailable_reason(self):
66
- return unavailable_reason
67
-
68
- def create_driver(self):
69
- """
70
- Creates and returns a new OpenAIModelDriver instance with input/output queues.
71
- """
72
- driver = OpenAIModelDriver(
73
- tools_adapter=self._tools_adapter, provider_name=self.name
74
- )
75
- driver.config = self.driver_config
76
- # NOTE: The caller is responsible for calling driver.start() if background processing is needed.
77
- return driver
78
-
79
- def create_agent(self, tools_adapter=None, agent_name: str = None, **kwargs):
80
- from janito.llm.agent import LLMAgent
81
-
82
- # Always create a new driver with the passed-in tools_adapter
83
- if tools_adapter is None:
84
- tools_adapter = get_local_tools_adapter()
85
- # Should use new-style driver construction via queues/factory (handled elsewhere)
86
- raise NotImplementedError(
87
- "create_agent must be constructed via new factory using input/output queues and config."
88
- )
89
-
90
- @property
91
- def model_name(self):
92
- return self._driver_config.model
93
-
94
- @property
95
- def driver_config(self):
96
- """Public, read-only access to the provider's LLMDriverConfig object."""
97
- return self._driver_config
98
-
99
- def execute_tool(self, tool_name: str, event_bus, *args, **kwargs):
100
- self._tools_adapter.event_bus = event_bus
101
- return self._tools_adapter.execute_by_name(tool_name, *args, **kwargs)
102
-
103
-
104
- LLMProviderRegistry.register(AlibabaProvider.NAME, AlibabaProvider)
1
+ from janito.llm.provider import LLMProvider
2
+ from janito.llm.model import LLMModelInfo
3
+ from janito.llm.auth import LLMAuthManager
4
+ from janito.llm.driver_config import LLMDriverConfig
5
+ from janito.drivers.openai.driver import OpenAIModelDriver
6
+ from janito.tools import get_local_tools_adapter
7
+ from janito.providers.registry import LLMProviderRegistry
8
+ from .model_info import MODEL_SPECS
9
+ from queue import Queue
10
+
11
+ available = OpenAIModelDriver.available
12
+ unavailable_reason = OpenAIModelDriver.unavailable_reason
13
+
14
+
15
+ class AlibabaProvider(LLMProvider):
16
+ name = "alibaba"
17
+ NAME = "alibaba"
18
+ MAINTAINER = "João Pinto <janito@ikignosis.org>"
19
+ MODEL_SPECS = MODEL_SPECS
20
+ DEFAULT_MODEL = "qwen3-next-80b-a3b-instruct" # 256k context, latest Qwen3 Next model
21
+
22
+ def __init__(
23
+ self, auth_manager: LLMAuthManager = None, config: LLMDriverConfig = None
24
+ ):
25
+ # Always set a tools adapter so that even if the driver is unavailable,
26
+ # generic code paths that expect provider.execute_tool() continue to work.
27
+ self._tools_adapter = get_local_tools_adapter()
28
+
29
+ # Always initialize _driver_config to avoid AttributeError
30
+ self._driver_config = config or LLMDriverConfig(model=None)
31
+
32
+ if not self.available:
33
+ self._driver = None
34
+ else:
35
+ self.auth_manager = auth_manager or LLMAuthManager()
36
+ self._api_key = self.auth_manager.get_credentials(type(self).NAME)
37
+ if not self._api_key:
38
+ from janito.llm.auth_utils import handle_missing_api_key
39
+
40
+ handle_missing_api_key(self.name, "ALIBABA_API_KEY")
41
+
42
+ if not self._driver_config.model:
43
+ self._driver_config.model = self.DEFAULT_MODEL
44
+ if not self._driver_config.api_key:
45
+ self._driver_config.api_key = self._api_key
46
+ # Set Alibaba international endpoint as default base_url if not provided
47
+ if not getattr(self._driver_config, "base_url", None):
48
+ self._driver_config.base_url = (
49
+ "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
50
+ )
51
+ self.fill_missing_device_info(self._driver_config)
52
+ self._driver = None # to be provided by factory/agent
53
+
54
+ @property
55
+ def driver(self) -> OpenAIModelDriver:
56
+ if not self.available:
57
+ raise ImportError(f"AlibabaProvider unavailable: {self.unavailable_reason}")
58
+ return self._driver
59
+
60
+ @property
61
+ def available(self):
62
+ return available
63
+
64
+ @property
65
+ def unavailable_reason(self):
66
+ return unavailable_reason
67
+
68
+ def create_driver(self):
69
+ """
70
+ Creates and returns a new OpenAIModelDriver instance with input/output queues.
71
+ """
72
+ driver = OpenAIModelDriver(
73
+ tools_adapter=self._tools_adapter, provider_name=self.name
74
+ )
75
+ driver.config = self.driver_config
76
+ # NOTE: The caller is responsible for calling driver.start() if background processing is needed.
77
+ return driver
78
+
79
+ def create_agent(self, tools_adapter=None, agent_name: str = None, **kwargs):
80
+ from janito.llm.agent import LLMAgent
81
+
82
+ # Always create a new driver with the passed-in tools_adapter
83
+ if tools_adapter is None:
84
+ tools_adapter = get_local_tools_adapter()
85
+ # Should use new-style driver construction via queues/factory (handled elsewhere)
86
+ raise NotImplementedError(
87
+ "create_agent must be constructed via new factory using input/output queues and config."
88
+ )
89
+
90
+ @property
91
+ def model_name(self):
92
+ return self._driver_config.model
93
+
94
+ @property
95
+ def driver_config(self):
96
+ """Public, read-only access to the provider's LLMDriverConfig object."""
97
+ return self._driver_config
98
+
99
+ def execute_tool(self, tool_name: str, event_bus, *args, **kwargs):
100
+ self._tools_adapter.event_bus = event_bus
101
+ return self._tools_adapter.execute_by_name(tool_name, *args, **kwargs)
102
+
103
+
104
+ LLMProviderRegistry.register(AlibabaProvider.NAME, AlibabaProvider)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 3.12.1
3
+ Version: 3.12.3
4
4
  Summary: A new Python package called janito.
5
5
  Author-email: João Pinto <janito@ikignosis.org>
6
6
  Project-URL: Homepage, https://github.com/ikignosis/janito
@@ -21,7 +21,7 @@ janito/provider_registry.py,sha256=IRNB35Cjn4PSXMWOxKBjPg0DfUEOoL4vh63OSPxhMtk,6
21
21
  janito/report_events.py,sha256=q4OR_jTZNfcqaQF_fzTjgqo6_VlUIxSGWfhpT4nJWcw,938
22
22
  janito/shell.bak.zip,sha256=hznHbmgfkAkjuQDJ3w73XPQh05yrtUZQxLmtGbanbYU,22
23
23
  janito/utils.py,sha256=eXSsMgM69YyzahgCNrJQLcEbB8ssLI1MQqaa20ONxbE,376
24
- janito/agent/setup_agent.py,sha256=DIc8gcX41CHWg6YGVSqQJuQxl1iUYk9JIR07wTvHJyk,13012
24
+ janito/agent/setup_agent.py,sha256=l1Z4DsUEdanzMKCv8cd_PFzfS_ooK5AWZ22CJ0Y3ZPk,12711
25
25
  janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2,sha256=gA_Br5UoM-CS8eyoYUtoPz4v2IXCjBcaRQmZ-chEEAI,4064
26
26
  janito/agent/templates/profiles/system_prompt_template_developer.txt.j2,sha256=6cKS-UJ8pJX3voGsMFqMrJWCCYH0aX8ZWcToRCeEbI4,3747
27
27
  janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2,sha256=V9JAxdZcWkl53rmSRnrJCjHIsRM6GWEsNLno2hdKx7M,4256
@@ -30,7 +30,7 @@ janito/cli/__init__.py,sha256=xaPDOrWphBbCR63Xpcx_yfpXSJIlCaaICc4j2qpWqrM,194
30
30
  janito/cli/config.py,sha256=HkZ14701HzIqrvaNyDcDhGlVHfpX_uHlLp2rHmhRm_k,872
31
31
  janito/cli/console.py,sha256=dWOa6mbfCQd46wVwwZfeYBxroCxdqvnAZQQ80j89qYA,70
32
32
  janito/cli/main.py,sha256=s5odou0txf8pzTf1ADk2yV7T5m8B6cejJ81e7iu776U,312
33
- janito/cli/main_cli.py,sha256=0_mB-FKF-5ilUVZj3xL_MTmiZ-0NGmT2jDZYceiS6xE,16920
33
+ janito/cli/main_cli.py,sha256=TKLbKG1R-BbvzxIp2MphBQg7kKxkj4QF5TZrxnjn1xk,16420
34
34
  janito/cli/prompt_core.py,sha256=x1RcX1p4wCL4YzXS76T6BZ8nt5cGiXCAB3QOlC6BJQQ,14937
35
35
  janito/cli/prompt_handler.py,sha256=SnPTlL64noeAMGlI08VBDD5IDD8jlVMIYA4-fS8zVLg,215
36
36
  janito/cli/prompt_setup.py,sha256=s48gvNfZhKjsEhf4EzL1tKIGm4wDidPMDvlM6TAPYes,2116
@@ -41,7 +41,7 @@ janito/cli/chat_mode/bindings.py,sha256=odjc5_-YW1t2FRhBUNRNoBMoQIg5sMz3ktV7xG0A
41
41
  janito/cli/chat_mode/chat_entry.py,sha256=RFdPd23jsA2DMHRacpjAdwI_1dFBaWrtnwyQEgb2fHA,475
42
42
  janito/cli/chat_mode/prompt_style.py,sha256=vsqQ9xxmrYjj1pWuVe9CayQf39fo2EIXrkKPkflSVn4,805
43
43
  janito/cli/chat_mode/script_runner.py,sha256=WFTFVWzg_VQrD2Ujj02XWjscfGgHwmjBeRxaEjWw9ps,6505
44
- janito/cli/chat_mode/session.py,sha256=yyWSd6TpY0H4pDsB5jv9sg0yVmlJYo41XjIbDDcafnI,18609
44
+ janito/cli/chat_mode/session.py,sha256=EIM-iG7Qda3NGY6Xl8kwIvtxaD6iWgGAjHWBoXRvEhE,18050
45
45
  janito/cli/chat_mode/toolbar.py,sha256=1Va-glkUGJUekOSGbKtD5ruiIfFUfPoICO0wfoEkElI,3988
46
46
  janito/cli/chat_mode/shell/autocomplete.py,sha256=lE68MaVaodbA2VfUM0_YLqQVLBJAE_BJsd5cMtwuD-g,793
47
47
  janito/cli/chat_mode/shell/commands.bak.zip,sha256=I7GFjXg2ORT5NzFpicH1vQ3kchhduQsZinzqo0xO8wU,74238
@@ -84,7 +84,7 @@ janito/cli/cli_commands/list_config.py,sha256=oiQEGaGPjwjG-PrOcakpNMbbqISTsBEs7r
84
84
  janito/cli/cli_commands/list_drivers.py,sha256=K4-8wDxtNAJF1sLhvrqWVAKQYcw6uB98EE-dSglbyRY,4965
85
85
  janito/cli/cli_commands/list_models.py,sha256=QF3Wa7OhNcJFKeBxaw0C_rDfsvJFNb-siz5uorajBvo,1595
86
86
  janito/cli/cli_commands/list_plugins.py,sha256=Lv-M6EAFiqnj0tl9Bq23s162t--81AIs2EqZxhi81lQ,7996
87
- janito/cli/cli_commands/list_profiles.py,sha256=O4k6U9iCEeNH3lM-NP_XX_E9W0h__hheLSn23241dkA,3538
87
+ janito/cli/cli_commands/list_profiles.py,sha256=apQ-RY01dItrcnJONKTE1vcuI1aKp0DGtPOTbtCoFtU,3326
88
88
  janito/cli/cli_commands/list_providers.py,sha256=oilrBjNL5mot1nz45XQQY6oeiSxoNvphhQYspNcEJpw,391
89
89
  janito/cli/cli_commands/list_providers_region.py,sha256=qrMj_gtgEMty8UH0P_O5SgWCVJ9ZKxGUp_GdsE4_EH4,2548
90
90
  janito/cli/cli_commands/list_tools.py,sha256=lHPbwXxPysxnDqatZtFOD7S49nYinE5GGgav2UT_x0E,3592
@@ -93,16 +93,16 @@ janito/cli/cli_commands/model_utils.py,sha256=4t2ZN8DYA8jxluXHiiliV8gMbF_90nKGtg
93
93
  janito/cli/cli_commands/ping_providers.py,sha256=hetZAKKZzQYRpRDT5OvRTOe4jYUVNZGjo8gFoyeRA3I,1921
94
94
  janito/cli/cli_commands/set_api_key.py,sha256=IR_hUcLjK-2oJmiIVdjc8epPsQAzqEN9MS7lSTVqmKM,1060
95
95
  janito/cli/cli_commands/show_config.py,sha256=ammzVEqJQCAdWFRrhI1zjjmzgTCH2l38REoT4gYJPP0,3467
96
- janito/cli/cli_commands/show_system_prompt.py,sha256=WQclY_bmJrHbIBRU1qx1WV4VyooyXVx_XQyX_4Rb1hs,6335
96
+ janito/cli/cli_commands/show_system_prompt.py,sha256=IDjgDFiXX9JLoRhhEq3b7Rtqmwvja8TnDY-_CrWsPR4,6133
97
97
  janito/cli/core/__init__.py,sha256=YH95fhgY9yBX8RgqX9dSrEkl4exjV0T4rbmJ6xUpG-Y,196
98
98
  janito/cli/core/event_logger.py,sha256=1X6lR0Ax7AgF8HlPWFoY5Ystuu7Bh4ooTo78vXzeGB0,2008
99
99
  janito/cli/core/getters.py,sha256=opmcSz86J-I95Klsh0c4y6lsYvNakrvRqvuA0o5ARWI,2869
100
100
  janito/cli/core/model_guesser.py,sha256=V7LBkIllSp_tP9-2B1gcl5b4b-La7mrOvE3AZQQm8lk,1716
101
- janito/cli/core/runner.py,sha256=RhuWk6biW5hj1lBrGJrVmt4TtC5laq_bhEsutuqeyAg,10336
101
+ janito/cli/core/runner.py,sha256=5TLHtt1iU4b1uFAqT94CoORr452Rzk4oHPSOnMbjBfA,9285
102
102
  janito/cli/core/setters.py,sha256=zjSUxy6iUzcrmEunFk7dA90KqbMaq2O7LTGP8wn2HxA,5378
103
103
  janito/cli/core/unsetters.py,sha256=FEw9gCt0vRvoCt0kRSNfVB2tzi_TqppJIx2nHPP59-k,2012
104
104
  janito/cli/single_shot_mode/__init__.py,sha256=Ct99pKe9tINzVW6oedZJfzfZQKWpXz-weSSCn0hrwHY,115
105
- janito/cli/single_shot_mode/handler.py,sha256=dZmUiyZ-rxzPqEUz7VILaIhVgKX_TbM0UjAJo1BB2M4,6314
105
+ janito/cli/single_shot_mode/handler.py,sha256=2sIX2hmX_FRCLI4NkPPABOpMegI0YokjelHQ20f_YG8,6129
106
106
  janito/docs/GETTING_STARTED.md,sha256=IrTTa9tBTGDBw9EQJs0J05EdzjBCcwUd04jI-gswdSc,4774
107
107
  janito/drivers/dashscope.bak.zip,sha256=9Pv4Xyciju8jO1lEMFVgYXexoZkxmDO3Ig6vw3ODfL8,4936
108
108
  janito/drivers/openai_responses.bak.zip,sha256=E43eDCHGa2tCtdjzj_pMnWDdnsOZzj8BJTR5tJp8wcM,13352
@@ -122,22 +122,23 @@ janito/i18n/it.py,sha256=jpWyCrwoZXxHaLEbmYL2B1ouOa854ecdCfpXq4mqroc,4052
122
122
  janito/i18n/messages.py,sha256=fBuwOTFoygyHPkYphm6Y0r1iE8497Z4iryVAmPhMEkg,1851
123
123
  janito/i18n/pt.py,sha256=NlTgpDSftUfFG7FGbs7TK54vQlJVMyaZDHGcWjelwMc,4168
124
124
  janito/llm/README.md,sha256=6GRqCu_a9va5HCB1YqNqbshyWKFyAGlnXugrjom-xj8,1213
125
- janito/llm/__init__.py,sha256=dpyVH51qVRCw-PDyAFLAxq0zd4jl5MDcuV6Cri0D-dQ,134
125
+ janito/llm/__init__.py,sha256=5ZtHZPIj0xyF-Yj5l0N-JYQlczLjt2w4O1uljA5uX5k,171
126
126
  janito/llm/agent.py,sha256=Q7RT42cepDkXQqUVhyvREn9EqGtSkDprV6YRc_gbOxw,23916
127
127
  janito/llm/auth.py,sha256=8Dl_orUEPhn2X6XjkO2Nr-j1HFT2YDxk1qJl9hSFI88,2286
128
128
  janito/llm/auth_utils.py,sha256=7GH7bIScKhVWJW6ugcDrJLcYRamj5dl_l8N1rrvR4Ws,663
129
- janito/llm/driver.py,sha256=stiicPe_MXTuWW4q6MSwK7PCj8UZcA_30pGACu6xYUQ,10039
129
+ janito/llm/driver.py,sha256=jwao63VOzRHKxDFvGMgbeCClWzmQyM6GGXeTfMetnnA,11370
130
130
  janito/llm/driver_config.py,sha256=OW0ae49EfgKDqaThuDjZBiaN78voNzwiZ6szERMqJos,1406
131
131
  janito/llm/driver_config_builder.py,sha256=BvWGx7vaBR5NyvPY1XNAP3lAgo1uf-T25CSsIo2kkCU,1401
132
132
  janito/llm/driver_input.py,sha256=Zq7IO4KdQPUraeIo6XoOaRy1IdQAyYY15RQw4JU30uA,389
133
133
  janito/llm/message_parts.py,sha256=QY_0kDjaxdoErDgKPRPv1dNkkYJuXIBmHWNLiOEKAH4,1365
134
134
  janito/llm/model.py,sha256=EioBkdgn8hJ0iQaKN-0KbXlsrk3YKmwR9IbvoEbdVTE,1159
135
135
  janito/llm/provider.py,sha256=3FbhQPrWBSEoIdIi-5DWIh0DD_CM570EFf1NcuGyGko,7961
136
+ janito/llm/response_cache.py,sha256=mxj030hZJPXyBy7Gzfnia54HGSi5Qw6jybkyY2MLt7s,2263
136
137
  janito/plugins/__init__.py,sha256=6tTpUDNJJCRqlGK6RBd40wP_xEowuZZh0FRGeQ5lQQA,400
137
138
  janito/plugins/auto_loader.py,sha256=8DRpPZtAUtP-et4Lzaam93MH4s_sqQXXKI8Ly5-GQf8,2329
138
139
  janito/plugins/auto_loader_fixed.py,sha256=11pL7J0bX3XOOevQa10_oUtNbH-CXkpKhxOl69Bmzro,2335
139
140
  janito/plugins/base.py,sha256=4sQdTOogtDgmLWgA3q1Z8h8s-JySRkk9nSAmg0mHoNM,4285
140
- janito/plugins/builtin.py,sha256=rAdOz5cekFfsTfXJd5-2AXW4Nh81JoBMONqj1skiTR8,2985
141
+ janito/plugins/builtin.py,sha256=TgZfiiUE2RaRIRnkeY9dFGjHIQiS3j2X5pSzDWRak3I,1954
141
142
  janito/plugins/config.py,sha256=ex5f1XsKPEgIO4DgJCohPzMKAQoUdx1OdSVU0FlSr5o,2331
142
143
  janito/plugins/core_adapter.py,sha256=zOhRMLIsqPb5r-8-pJGucEiWEB1_M5btW6TmsAm-mdE,1877
143
144
  janito/plugins/core_loader.py,sha256=VcIwuKUaR2bvRZIFEiUHaS8YulTOKrYtvO_VhKHRpGI,3576
@@ -149,7 +150,7 @@ janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py,sha256=P5
149
150
  janito/plugins/core/filemanager/tools/validate_file_syntax/core.py,sha256=EoBMJ_A5mJJs7BMhOJ4gpxBd_p8q1e4597k_V5bJNjk,3940
150
151
  janito/plugins/core/filemanager/tools/validate_file_syntax/txt_validator.py,sha256=5GbO_IhbOUjHM-klorS3dUKeEOfKXXIuK3T-1JjSIeU,909
151
152
  janito/plugins/tools/__init__.py,sha256=XKixOKtUJs1R-rGwGDXSLVLg5-Kp090gvWbsseWT4LI,92
152
- janito/plugins/tools/local/__init__.py,sha256=YXsVl-7Tsk2m878RkTEjb7lfKduUvnGTFTFa2LcT0hM,2648
153
+ janito/plugins/tools/local/__init__.py,sha256=bJONOGBzR-d4TN--IGuQcFJW7di3J5qTLoVMHIcK1jU,2634
153
154
  janito/plugins/tools/local/adapter.py,sha256=LENtKWnoHrDSnPid195R_9mSgKieNQKyH6XzaQjh7uY,8706
154
155
  janito/plugins/tools/local/ask_user.py,sha256=RJGPYHUL4tbpjpkfnickJxl_KotBLTqT75JntpOXjCY,4059
155
156
  janito/plugins/tools/local/copy_file.py,sha256=j7isTujW0z0zUMh3QXQES8RdWO7RhE-IHhq7oh6e1q8,3681
@@ -158,6 +159,7 @@ janito/plugins/tools/local/create_file.py,sha256=rWFj9M7-C8Dl4br_1ooDbabb7Q6oKwb
158
159
  janito/plugins/tools/local/delete_text_in_file.py,sha256=K0nry8fsk4ZNjWE-nDNpYYUpumZwo9m4nND8C8TFfOQ,5085
159
160
  janito/plugins/tools/local/fetch_url.py,sha256=cYOSnjiaVo9pTpGDkFKb4lUsP3x_fB2nHStf-CmZuCE,18220
160
161
  janito/plugins/tools/local/find_files.py,sha256=esFwkmJN_d-GkknSjkuBRr_DOsXFQQana-o08Y7YXts,6249
162
+ janito/plugins/tools/local/markdown_view.py,sha256=qM0INFe112LLbDlqM79vtAFHQoepWOU5zx0G8utPSWw,3685
161
163
  janito/plugins/tools/local/move_file.py,sha256=ddl3Jj3Uq7NQ19gsT8oRX_l0qjL6c7kVcH9Qg0VCNi8,4694
162
164
  janito/plugins/tools/local/open_html_in_browser.py,sha256=RUD6QOs5CjEXdFEkIhk4W4m2txI_MJw0CbO4z5t4kL0,2100
163
165
  janito/plugins/tools/local/open_url.py,sha256=BBcUPBo7kyIXPsQj5xB_2dlLiSABYwEpGPLX8NNpZ6A,1551
@@ -165,15 +167,15 @@ janito/plugins/tools/local/python_code_run.py,sha256=oVU3XCuUD5lJE3SrMnslCr_zBE6
165
167
  janito/plugins/tools/local/python_command_run.py,sha256=UJB5Ac0WXvzPDavYd7PC2S2U0qA_OvIkJnf2J_XPr7I,6934
166
168
  janito/plugins/tools/local/python_file_run.py,sha256=wX-R4lP66LCEjFyc5hkrxI9wJgAmwI1oINP5azxxLlw,6858
167
169
  janito/plugins/tools/local/read_chart.py,sha256=H4-fcgHQweAOJsvktJ7XYs39UIVJdXRZK-xhrZEX69E,10410
168
- janito/plugins/tools/local/read_files.py,sha256=Rcke8QHU1NebNnaLsvaS81m4ZSBH0uhRGbezYN00X0E,2328
170
+ janito/plugins/tools/local/read_files.py,sha256=XKd0vkI63wqGX01_MR02rteMM_X89KPFFdsJ8QRRLM0,2321
169
171
  janito/plugins/tools/local/remove_directory.py,sha256=_P1VgC-bSttN-a2-VlEZ2inphG4me91jXe1OZi7bqR4,1912
170
172
  janito/plugins/tools/local/remove_file.py,sha256=YbTByXAnnvlQ57y-2B2qcblmOgEJpeBrGhi4Te4-QlA,2092
171
- janito/plugins/tools/local/replace_text_in_file.py,sha256=OIiXsqaoVOg_umHoPnDECzY7yDCG5ZrU6zHTM1lZhfc,10964
173
+ janito/plugins/tools/local/replace_text_in_file.py,sha256=5nu2_QjSpz1q9CfiZmo7N22sPdxlnrR17YoKoriUPWI,10962
172
174
  janito/plugins/tools/local/run_bash_command.py,sha256=cKE0VUJc_qefrU-VcTk_3ipViKZDLlbfGS8D0cEAHMg,7954
173
175
  janito/plugins/tools/local/run_powershell_command.py,sha256=nA-8rbf2NNG6eWSUwB5YkNOpCADLa_APC9y-ouk1DMc,9312
174
- janito/plugins/tools/local/show_image.py,sha256=mxw9UJdSrmVsznFck__X4jizya2H8-HAWndO75jNY_U,2931
175
- janito/plugins/tools/local/show_image_grid.py,sha256=HbFJwSQonHXFnW3_URk45q4S7fS-opnojscoSe3_QGQ,2999
176
- janito/plugins/tools/local/view_file.py,sha256=5VugCv4xBNeHNqDfUq3nE0y7Ylqg5pZAHe2i0TbNfes,7378
176
+ janito/plugins/tools/local/show_image.py,sha256=KvHUuI54XVGinS3M08ORiQg7EN_xucg5qnWN5Id7YNA,4939
177
+ janito/plugins/tools/local/show_image_grid.py,sha256=L4zFVnmw4m_sDdK2GhgWzqoQmOrV6loUZM3RIc1vcdI,5294
178
+ janito/plugins/tools/local/view_file.py,sha256=sQqyuarSqbvI6-21LQwfu_vOr9Tb3XZF-7IjoteFpU8,7372
177
179
  janito/plugins/tools/local/get_file_outline/__init__.py,sha256=OKV_BHnoD9h-vkcVoW6AHmsuDjjauHPCKNK0nVFl4sU,37
178
180
  janito/plugins/tools/local/get_file_outline/core.py,sha256=E8nV5Qx7DuslRTwhONlBS1LxJJLWsE1TWeOSXMFKtFs,4609
179
181
  janito/plugins/tools/local/get_file_outline/java_outline.py,sha256=_UeUY5JoQEUdlHcK8aqGTqYJl0T2KxIFXPTdwum9gKQ,1825
@@ -181,7 +183,7 @@ janito/plugins/tools/local/get_file_outline/markdown_outline.py,sha256=bXEBg0D93
181
183
  janito/plugins/tools/local/get_file_outline/python_outline.py,sha256=RAcf9Vxec08lA06drYaNre5HCJ2lTzrRAskZ3rlyE-U,10326
182
184
  janito/plugins/tools/local/get_file_outline/search_outline.py,sha256=bski24TpnJVf3L0TNzkx3HfvaXwttQl4EVkwk2POQOw,1348
183
185
  janito/plugins/tools/local/search_text/__init__.py,sha256=FEYpF5tTtf0fiAyRGIGSn-kV-MJDkhdFIbus16mYW8Y,34
184
- janito/plugins/tools/local/search_text/core.py,sha256=Ded2lHocjRMreq6OcXDTdgQGD4KRyI55mjeHJSeecrg,7875
186
+ janito/plugins/tools/local/search_text/core.py,sha256=lSAnOjsxfqaLn0vmh4XDSfqHVZzZ4VF_l4xNSp-jerQ,7871
185
187
  janito/plugins/tools/local/search_text/match_lines.py,sha256=RLR8fZFP-Q57rY0fTENbMItmt3dJZiYX0otmGHVRjfw,2131
186
188
  janito/plugins/tools/local/search_text/pattern_utils.py,sha256=D7vtAr8oT0tGV0C_UUarAXS9XQtP-MTYmmc8Yg8iVTg,2362
187
189
  janito/plugins/tools/local/search_text/traverse_directory.py,sha256=EpL1qywAV0H29pm8-QsHrjKchKP4i4sRUOENVuNptCo,4000
@@ -202,8 +204,8 @@ janito/providers/__init__.py,sha256=EvOFeiqucAY9tgCosJ81p0QA6wQwMT1cR3EeIGrhSQQ,
202
204
  janito/providers/dashscope.bak.zip,sha256=BwXxRmZreEivvRtmqbr5BR62IFVlNjAf4y6DrF2BVJo,5998
203
205
  janito/providers/registry.py,sha256=Ygwv9eVrTXOKhv0EKxSWQXO5WMHvajWE2Q_Lc3p7dKo,730
204
206
  janito/providers/alibaba/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
- janito/providers/alibaba/model_info.py,sha256=YFKRxsTavIN2_wEgjiY8izyU5NiPPqv22094AYfaGtg,3671
206
- janito/providers/alibaba/provider.py,sha256=LBQoovAYKaUMB0O9-t3UC6bakI8lUzqHBRHwVaUZnIg,4179
207
+ janito/providers/alibaba/model_info.py,sha256=A1DL-NCFC6WhEirSfOHTXeFT14pSPvLRbV_DCbaO4jo,4893
208
+ janito/providers/alibaba/provider.py,sha256=inEho2FcYvriqGvzviWKn8klls-u22LFv71BS_Voxxk,4088
207
209
  janito/providers/anthropic/model_info.py,sha256=m6pBh0Ia8_xC1KZ7ke_4HeHIFw7nWjnYVItnRpkCSWc,1206
208
210
  janito/providers/anthropic/provider.py,sha256=aGynBxCFc7oTyvGNDUkbutJCKurC_9J4AkReC2LTPYo,3023
209
211
  janito/providers/azure_openai/model_info.py,sha256=TMSqEpQROIIYUGAyulYJ5xGhj7CbLoaKL_JXeLbXaG0,689
@@ -262,9 +264,9 @@ janito/tools/tool_utils.py,sha256=alPm9DvtXSw_zPRKvP5GjbebPRf_nfvmWk2TNlL5Cws,12
262
264
  janito/tools/tools_adapter.py,sha256=Vd7A2tJ1q-EpoenkztK4he-0WhGjLFDP0vEfmXdFiNk,21361
263
265
  janito/tools/tools_schema.py,sha256=rGrKrmpPNR07VXHAJ_haGBRRO-YGLOF51BlYRep9AAQ,4415
264
266
  janito/tools/url_whitelist.py,sha256=0CPLkHTp5HgnwgjxwgXnJmwPeZQ30q4j3YjW59hiUUE,4295
265
- janito-3.12.1.dist-info/licenses/LICENSE,sha256=dXV4fOF2ZErugtN8l_Nrj5tsRTYgtjE3cgiya0UfBio,11356
266
- janito-3.12.1.dist-info/METADATA,sha256=3vothPYTeu9sadVxfHpyEqUl4djB6FWFvEh3oepMeEg,2330
267
- janito-3.12.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
268
- janito-3.12.1.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
269
- janito-3.12.1.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
270
- janito-3.12.1.dist-info/RECORD,,
267
+ janito-3.12.3.dist-info/licenses/LICENSE,sha256=dXV4fOF2ZErugtN8l_Nrj5tsRTYgtjE3cgiya0UfBio,11356
268
+ janito-3.12.3.dist-info/METADATA,sha256=Pt3b7RGJB6BXxZ8INulk9B-zPA1jHTlzS-KS9yAdGj8,2330
269
+ janito-3.12.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
270
+ janito-3.12.3.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
271
+ janito-3.12.3.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
272
+ janito-3.12.3.dist-info/RECORD,,