janito 2.0.1__py3-none-any.whl → 2.1.1__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.
- janito/__init__.py +1 -1
- janito/cli/config.py +0 -1
- janito/cli/core/runner.py +12 -9
- janito/cli/main_cli.py +8 -0
- janito/drivers/azure_openai/driver.py +21 -2
- janito/llm/provider.py +9 -0
- janito/providers/azure_openai/provider.py +6 -0
- janito/providers/deepseek/model_info.py +2 -2
- janito/providers/deepseek/provider.py +1 -1
- janito/tools/__init__.py +6 -2
- janito/tools/adapters/local/__init__.py +9 -1
- janito/tools/adapters/local/adapter.py +5 -1
- janito/tools/adapters/local/ask_user.py +2 -15
- janito/tools/adapters/local/open_html_in_browser.py +15 -6
- janito/tools/adapters/local/python_code_run.py +1 -0
- janito/tools/adapters/local/python_command_run.py +1 -0
- janito/tools/adapters/local/python_file_run.py +1 -0
- janito/version.py +1 -1
- {janito-2.0.1.dist-info → janito-2.1.1.dist-info}/METADATA +1 -1
- {janito-2.0.1.dist-info → janito-2.1.1.dist-info}/RECORD +23 -23
- {janito-2.0.1.dist-info → janito-2.1.1.dist-info}/WHEEL +0 -0
- {janito-2.0.1.dist-info → janito-2.1.1.dist-info}/entry_points.txt +0 -0
- {janito-2.0.1.dist-info → janito-2.1.1.dist-info}/top_level.txt +0 -0
janito/__init__.py
CHANGED
janito/cli/config.py
CHANGED
@@ -8,7 +8,6 @@ CONFIG_OPTIONS = {
|
|
8
8
|
"role": "Role description for the Agent Profile (e.g., 'software engineer')",
|
9
9
|
"temperature": "Sampling temperature (float, e.g., 0.0 - 2.0)",
|
10
10
|
"max_tokens": "Maximum tokens for model response (int)",
|
11
|
-
"use_azure_openai": "Whether to use Azure OpenAI client (default: False)",
|
12
11
|
"template": "Template context dictionary for Agent Profile prompt rendering (nested)",
|
13
12
|
"profile": "Agent Profile name (only 'base' is supported)",
|
14
13
|
}
|
janito/cli/core/runner.py
CHANGED
@@ -66,16 +66,18 @@ def prepare_llm_driver_config(args, modifiers):
|
|
66
66
|
provider_instance = None
|
67
67
|
try:
|
68
68
|
provider_instance = ProviderRegistry().get_instance(provider)
|
69
|
-
|
70
|
-
m["name"]
|
71
|
-
for m in provider_instance.get_model_info().values()
|
72
|
-
if isinstance(m, dict) and "name" in m
|
73
|
-
]
|
74
|
-
if model not in available_models:
|
69
|
+
if not provider_instance.is_model_available(model):
|
75
70
|
print(
|
76
71
|
f"Error: Model '{model}' is not available for provider '{provider}'."
|
77
72
|
)
|
78
|
-
print
|
73
|
+
# Optionally, print available models if possible
|
74
|
+
if hasattr(provider_instance, 'get_model_info'):
|
75
|
+
available_models = [
|
76
|
+
m["name"]
|
77
|
+
for m in provider_instance.get_model_info().values()
|
78
|
+
if isinstance(m, dict) and "name" in m
|
79
|
+
]
|
80
|
+
print(f"Available models: {', '.join(available_models)}")
|
79
81
|
return provider, None, None
|
80
82
|
except Exception as e:
|
81
83
|
print(f"Error validating model for provider '{provider}': {e}")
|
@@ -98,11 +100,12 @@ def handle_runner(args, provider, llm_driver_config, agent_role, verbose_tools=F
|
|
98
100
|
# Patch: disable execution/run tools if not enabled
|
99
101
|
if not exec_enabled:
|
100
102
|
import janito.tools
|
101
|
-
adapter = janito.tools.get_local_tools_adapter()
|
103
|
+
adapter = janito.tools.get_local_tools_adapter(workdir=getattr(args, "workdir", None))
|
102
104
|
if hasattr(adapter, "disable_execution_tools"):
|
103
105
|
adapter.disable_execution_tools()
|
104
106
|
else:
|
105
|
-
|
107
|
+
import janito.tools
|
108
|
+
adapter = janito.tools.get_local_tools_adapter(workdir=getattr(args, "workdir", None))
|
106
109
|
|
107
110
|
provider_instance = ProviderRegistry().get_instance(provider, llm_driver_config)
|
108
111
|
mode = get_prompt_mode(args)
|
janito/cli/main_cli.py
CHANGED
@@ -13,6 +13,14 @@ from janito.cli.core.event_logger import (
|
|
13
13
|
)
|
14
14
|
|
15
15
|
definition = [
|
16
|
+
(
|
17
|
+
["-W", "--workdir"],
|
18
|
+
{
|
19
|
+
"metavar": "WORKDIR",
|
20
|
+
"help": "Working directory to chdir to before tool execution",
|
21
|
+
"default": None,
|
22
|
+
},
|
23
|
+
),
|
16
24
|
(
|
17
25
|
["--verbose-api"],
|
18
26
|
{
|
@@ -28,9 +28,28 @@ class AzureOpenAIModelDriver(OpenAIModelDriver):
|
|
28
28
|
raise ImportError(
|
29
29
|
f"AzureOpenAIModelDriver unavailable: {self.unavailable_reason}"
|
30
30
|
)
|
31
|
-
super().__init__
|
31
|
+
# Do NOT call super().__init__ if Azure SDK is not available
|
32
|
+
OpenAIModelDriver.__init__(self, tools_adapter=tools_adapter)
|
32
33
|
self.azure_endpoint = None
|
33
34
|
self.api_version = None
|
34
35
|
self.api_key = None
|
35
36
|
|
36
|
-
|
37
|
+
def _instantiate_openai_client(self, config):
|
38
|
+
try:
|
39
|
+
from openai import AzureOpenAI
|
40
|
+
api_key_display = str(config.api_key)
|
41
|
+
if api_key_display and len(api_key_display) > 8:
|
42
|
+
api_key_display = api_key_display[:4] + "..." + api_key_display[-4:]
|
43
|
+
client_kwargs = {
|
44
|
+
"api_key": config.api_key,
|
45
|
+
"azure_endpoint": getattr(config, "base_url", None),
|
46
|
+
"api_version": config.extra.get("api_version", "2023-05-15"),
|
47
|
+
}
|
48
|
+
client = AzureOpenAI(**client_kwargs)
|
49
|
+
return client
|
50
|
+
except Exception as e:
|
51
|
+
print(f"[ERROR] Exception during AzureOpenAI client instantiation: {e}", flush=True)
|
52
|
+
import traceback
|
53
|
+
print(traceback.format_exc(), flush=True)
|
54
|
+
raise
|
55
|
+
|
janito/llm/provider.py
CHANGED
@@ -93,6 +93,15 @@ class LLMProvider(ABC):
|
|
93
93
|
def driver(self) -> LLMDriver:
|
94
94
|
pass
|
95
95
|
|
96
|
+
def is_model_available(self, model_name):
|
97
|
+
"""
|
98
|
+
Returns True if the given model is available for this provider.
|
99
|
+
Default implementation checks MODEL_SPECS; override for dynamic providers.
|
100
|
+
"""
|
101
|
+
if not hasattr(self, "MODEL_SPECS"):
|
102
|
+
return False
|
103
|
+
return model_name in self.MODEL_SPECS
|
104
|
+
|
96
105
|
def get_model_info(self, model_name=None):
|
97
106
|
"""
|
98
107
|
Return the info dict for a given model (driver, params, etc). If model_name is None, return all model info dicts.
|
@@ -55,6 +55,12 @@ class AzureOpenAIProvider(LLMProvider):
|
|
55
55
|
def unavailable_reason(self):
|
56
56
|
return unavailable_reason
|
57
57
|
|
58
|
+
def is_model_available(self, model_name):
|
59
|
+
"""
|
60
|
+
Returns True for any model name, since Azure deployments are user-defined and not enumerable in advance.
|
61
|
+
"""
|
62
|
+
return True
|
63
|
+
|
58
64
|
def create_agent(self, tools_adapter=None, agent_name: str = None, **kwargs):
|
59
65
|
from janito.llm.agent import LLMAgent
|
60
66
|
from janito.drivers.azure_openai.driver import AzureOpenAIModelDriver
|
@@ -6,8 +6,8 @@ MODEL_SPECS = {
|
|
6
6
|
"family": "deepseek",
|
7
7
|
"default": True,
|
8
8
|
},
|
9
|
-
"deepseek-
|
10
|
-
"description": "DeepSeek
|
9
|
+
"deepseek-reasoner": {
|
10
|
+
"description": "DeepSeek Reasoner Model (OpenAI-compatible)",
|
11
11
|
"context_window": 8192,
|
12
12
|
"max_tokens": 4096,
|
13
13
|
"family": "deepseek",
|
@@ -16,7 +16,7 @@ class DeepseekProvider(LLMProvider):
|
|
16
16
|
name = "deepseek"
|
17
17
|
maintainer = "Needs maintainer"
|
18
18
|
MODEL_SPECS = MODEL_SPECS
|
19
|
-
DEFAULT_MODEL = "deepseek-chat" # Options: deepseek-chat, deepseek-
|
19
|
+
DEFAULT_MODEL = "deepseek-chat" # Options: deepseek-chat, deepseek-reasoner
|
20
20
|
|
21
21
|
def __init__(
|
22
22
|
self, auth_manager: LLMAuthManager = None, config: LLMDriverConfig = None
|
janito/tools/__init__.py
CHANGED
@@ -4,9 +4,13 @@ from janito.tools.adapters.local import (
|
|
4
4
|
)
|
5
5
|
|
6
6
|
|
7
|
-
def get_local_tools_adapter():
|
8
|
-
|
7
|
+
def get_local_tools_adapter(workdir=None):
|
9
8
|
# Use set_verbose_tools on the returned adapter to set verbosity as needed
|
9
|
+
if workdir is not None:
|
10
|
+
import os
|
11
|
+
if not os.path.exists(workdir):
|
12
|
+
os.makedirs(workdir, exist_ok=True)
|
13
|
+
return LocalToolsAdapter(workdir=workdir)
|
10
14
|
return _internal_local_tools_adapter
|
11
15
|
|
12
16
|
|
@@ -9,6 +9,7 @@ from .find_files import FindFilesTool
|
|
9
9
|
from .view_file import ViewFileTool
|
10
10
|
from .move_file import MoveFileTool
|
11
11
|
from .open_url import OpenUrlTool
|
12
|
+
from .open_html_in_browser import OpenHtmlInBrowserTool
|
12
13
|
from .python_code_run import PythonCodeRunTool
|
13
14
|
from .python_command_run import PythonCommandRunTool
|
14
15
|
from .python_file_run import PythonFileRunTool
|
@@ -23,7 +24,12 @@ from .search_text.core import SearchTextTool
|
|
23
24
|
from .validate_file_syntax.core import ValidateFileSyntaxTool
|
24
25
|
|
25
26
|
# Singleton tools adapter with all standard tools registered
|
26
|
-
|
27
|
+
import os
|
28
|
+
local_tools_adapter = LocalToolsAdapter(workdir=os.getcwd())
|
29
|
+
|
30
|
+
def get_local_tools_adapter(workdir=None):
|
31
|
+
import os
|
32
|
+
return LocalToolsAdapter(workdir=workdir or os.getcwd())
|
27
33
|
|
28
34
|
# Register tools
|
29
35
|
for tool_class in [
|
@@ -36,6 +42,7 @@ for tool_class in [
|
|
36
42
|
ViewFileTool,
|
37
43
|
MoveFileTool,
|
38
44
|
OpenUrlTool,
|
45
|
+
OpenHtmlInBrowserTool,
|
39
46
|
PythonCodeRunTool,
|
40
47
|
PythonCommandRunTool,
|
41
48
|
PythonFileRunTool,
|
@@ -52,3 +59,4 @@ for tool_class in [
|
|
52
59
|
local_tools_adapter.register_tool(tool_class)
|
53
60
|
|
54
61
|
# DEBUG: Print registered tools at startup
|
62
|
+
|
@@ -15,9 +15,13 @@ class LocalToolsAdapter(ToolsAdapter):
|
|
15
15
|
Handles registration, lookup, enabling/disabling, listing, and now, tool execution (merged from executor).
|
16
16
|
"""
|
17
17
|
|
18
|
-
def __init__(self, tools=None, event_bus=None, allowed_tools=None):
|
18
|
+
def __init__(self, tools=None, event_bus=None, allowed_tools=None, workdir=None):
|
19
19
|
super().__init__(tools=tools, event_bus=event_bus, allowed_tools=allowed_tools)
|
20
20
|
self._tools: Dict[str, Dict[str, Any]] = {}
|
21
|
+
self.workdir = workdir
|
22
|
+
if self.workdir:
|
23
|
+
import os
|
24
|
+
os.chdir(self.workdir)
|
21
25
|
if tools:
|
22
26
|
for tool in tools:
|
23
27
|
self.register_tool(tool)
|
@@ -43,26 +43,13 @@ class AskUserTool(ToolBase):
|
|
43
43
|
def _(event):
|
44
44
|
pass
|
45
45
|
|
46
|
-
# F12 instruction rotation
|
47
|
-
_f12_instructions = [
|
48
|
-
tr("proceed"),
|
49
|
-
tr("go ahead"),
|
50
|
-
tr("continue"),
|
51
|
-
tr("next"),
|
52
|
-
tr("okay"),
|
53
|
-
]
|
54
|
-
_f12_index = {"value": 0}
|
55
|
-
|
56
46
|
@bindings.add("f12")
|
57
47
|
def _(event):
|
58
|
-
"""When F12 is pressed, rotate through a set of short instructions."""
|
59
48
|
buf = event.app.current_buffer
|
60
|
-
|
61
|
-
buf.text = _f12_instructions[idx]
|
49
|
+
buf.text = "Do It"
|
62
50
|
buf.validate_and_handle()
|
63
|
-
_f12_index["value"] = (idx + 1) % len(_f12_instructions)
|
64
51
|
|
65
|
-
|
52
|
+
# Use shared CLI styles
|
66
53
|
|
67
54
|
# prompt_style contains the prompt area and input background
|
68
55
|
# toolbar_style contains the bottom-toolbar styling
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from janito.tools.tool_base import ToolBase
|
2
2
|
from janito.tools.adapters.local.adapter import register_local_tool
|
3
|
+
from janito.report_events import ReportAction
|
3
4
|
import webbrowser
|
4
5
|
import os
|
5
6
|
|
@@ -21,14 +22,22 @@ class OpenHtmlInBrowserTool(ToolBase):
|
|
21
22
|
tool_name = "open_html_in_browser"
|
22
23
|
|
23
24
|
def run(self, file_path: str) -> str:
|
25
|
+
from janito.i18n import tr
|
26
|
+
disp_path = file_path
|
27
|
+
self.report_action(tr("📖 Opening HTML file: '{disp_path}'", disp_path=disp_path), ReportAction.EXECUTE)
|
28
|
+
|
24
29
|
if not os.path.exists(file_path):
|
25
|
-
|
26
|
-
|
30
|
+
self.report_error(tr("⚠️ The specified file does not exist: '{disp_path}'", disp_path=disp_path))
|
31
|
+
return "⚠️ The specified file does not exist."
|
32
|
+
|
27
33
|
if not file_path.lower().endswith('.html'):
|
28
|
-
|
29
|
-
|
34
|
+
self.report_error(tr("⚠️ The specified file is not an HTML file: '{disp_path}'", disp_path=disp_path))
|
35
|
+
return "⚠️ The specified file is not an HTML file."
|
36
|
+
|
30
37
|
try:
|
31
38
|
webbrowser.open(f"file://{os.path.abspath(file_path)}")
|
32
|
-
|
39
|
+
self.report_success(tr("✅ Ok"))
|
40
|
+
return "✅ Ok"
|
33
41
|
except Exception as e:
|
34
|
-
|
42
|
+
self.report_error(tr("⚠️ Failed to open the HTML file: {err}", err=str(e)))
|
43
|
+
return f"⚠️ Failed to open the file: {str(e)}"
|
janito/version.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
janito/__init__.py,sha256=
|
1
|
+
janito/__init__.py,sha256=M4zdHzm5FHPuO032Xj6O8eX4k9nLYI2euPuHZdV_Xqs,232
|
2
2
|
janito/__main__.py,sha256=lPQ8kAyYfyeS1KopmJ8EVY5g1YswlIqCS615mM_B_rM,70
|
3
3
|
janito/config.py,sha256=HJh0CmZEx7AbMQOmFkiYHFNzc-fO7fqpZ9rh6RenxK8,201
|
4
4
|
janito/config_manager.py,sha256=bbviXlbrSyQSVsYjcNo--ZLr_jFuAVL6ntuuWrvHbjs,4297
|
@@ -16,15 +16,15 @@ janito/provider_config.py,sha256=dzYvxWg3Smjt9Jbkw0CNdXmBMwSTgoFTOAajdPL2w5w,304
|
|
16
16
|
janito/provider_registry.py,sha256=Heg6Kq59ObBLcTHvQc8VrTn6I0glzRmELjdsT5Y69mk,6411
|
17
17
|
janito/report_events.py,sha256=q4OR_jTZNfcqaQF_fzTjgqo6_VlUIxSGWfhpT4nJWcw,938
|
18
18
|
janito/utils.py,sha256=eXSsMgM69YyzahgCNrJQLcEbB8ssLI1MQqaa20ONxbE,376
|
19
|
-
janito/version.py,sha256=
|
19
|
+
janito/version.py,sha256=Cb_l7kFyD82KlvXN_TppP2yrLKII4Vm6g0S9HOt2L1M,108
|
20
20
|
janito/agent/setup_agent.py,sha256=4TdZeutRKsjjWx5qIqEId4VY1rUUXED8XiWKdY1n4ac,4940
|
21
21
|
janito/agent/templates/profiles/system_prompt_template_base_pt.txt.j2,sha256=FX8piXbR9XNOEKkOSMt4ieZ2wn5fzQlffeQFf8d7gIc,723
|
22
22
|
janito/agent/templates/profiles/system_prompt_template_main.txt.j2,sha256=1MRFx_NRXAoBWFq_2c-CXGUCuWwmlGGcnbdpWv9x0pQ,2497
|
23
23
|
janito/cli/__init__.py,sha256=xaPDOrWphBbCR63Xpcx_yfpXSJIlCaaICc4j2qpWqrM,194
|
24
|
-
janito/cli/config.py,sha256=
|
24
|
+
janito/cli/config.py,sha256=enpW6oQa2U1ywPr8sCrI1KbKbjiCmDtDgXaLK3jbyMM,1060
|
25
25
|
janito/cli/console.py,sha256=gJolqzWL7jEPLxeuH-CwBDRFpXt976KdZOEAB2tdBDs,64
|
26
26
|
janito/cli/main.py,sha256=s5odou0txf8pzTf1ADk2yV7T5m8B6cejJ81e7iu776U,312
|
27
|
-
janito/cli/main_cli.py,sha256=
|
27
|
+
janito/cli/main_cli.py,sha256=oekJEa4TqhebIrSjT8pAAiGeQPY1qLmlrNWHE4J8D0A,10811
|
28
28
|
janito/cli/prompt_core.py,sha256=hss97xsNhx3YSrvgU0p9RanNRgRGZeomHEzOOXdrmew,10423
|
29
29
|
janito/cli/prompt_handler.py,sha256=SnPTlL64noeAMGlI08VBDD5IDD8jlVMIYA4-fS8zVLg,215
|
30
30
|
janito/cli/rich_terminal_reporter.py,sha256=cMi_e6uBMMk9DqGHeMEbWdqiuIoPn-5f1abB3WLWIts,4265
|
@@ -71,14 +71,14 @@ janito/cli/cli_commands/show_system_prompt.py,sha256=OtcIsmI9au7JE7hxEuJPw118Vaq
|
|
71
71
|
janito/cli/core/__init__.py,sha256=YH95fhgY9yBX8RgqX9dSrEkl4exjV0T4rbmJ6xUpG-Y,196
|
72
72
|
janito/cli/core/event_logger.py,sha256=1X6lR0Ax7AgF8HlPWFoY5Ystuu7Bh4ooTo78vXzeGB0,2008
|
73
73
|
janito/cli/core/getters.py,sha256=IfweIK5uZZz9y-p8lyHHmXaqjWk6BkzY6ImJxxh7ATc,1426
|
74
|
-
janito/cli/core/runner.py,sha256=
|
74
|
+
janito/cli/core/runner.py,sha256=5mSDigcIWQCKRbbfYyjmpZ-xHyQpxyAenvEBDF2rpzY,6000
|
75
75
|
janito/cli/core/setters.py,sha256=c_JAlaEPpwR514Y7lQHgnZC9X2PpsjWia2fRzKmSFV8,6633
|
76
76
|
janito/cli/core/unsetters.py,sha256=FEw9gCt0vRvoCt0kRSNfVB2tzi_TqppJIx2nHPP59-k,2012
|
77
77
|
janito/cli/single_shot_mode/__init__.py,sha256=Ct99pKe9tINzVW6oedZJfzfZQKWpXz-weSSCn0hrwHY,115
|
78
78
|
janito/cli/single_shot_mode/handler.py,sha256=2VTGiYOHIZE5z_S0pic9-rBcyL_nb5NgldNZKKZtibM,5600
|
79
79
|
janito/drivers/driver_registry.py,sha256=zEvCJwaKhmGFGTIpSoZOncNwmJhrRTbaDz7yVF-1ZTk,1133
|
80
80
|
janito/drivers/anthropic/driver.py,sha256=4yLaf2T0g2zr-MSwXOx32s7ETut9FOl0uXyJGYiJzZU,3937
|
81
|
-
janito/drivers/azure_openai/driver.py,sha256=
|
81
|
+
janito/drivers/azure_openai/driver.py,sha256=NiAIeaDVTcyUi01qYdt0hKDbqasuesNrk_pHTwMgvv0,2006
|
82
82
|
janito/drivers/google_genai/driver.py,sha256=qg3bApr954LexMlnsL3MLaHAS8X4aacmRKsyEPj6KKo,1680
|
83
83
|
janito/drivers/google_genai/schema_generator.py,sha256=p5hWxzcjeTlLAQZAt6kTXjxnHnBYyDAkKi4KkZctAJQ,2565
|
84
84
|
janito/drivers/mistralai/driver.py,sha256=r7iMMAG5V7OmzrtQhVCuK3ueAEzgbgS1qcPDKHTNKoo,1208
|
@@ -100,17 +100,17 @@ janito/llm/driver_config_builder.py,sha256=BvWGx7vaBR5NyvPY1XNAP3lAgo1uf-T25CSsI
|
|
100
100
|
janito/llm/driver_input.py,sha256=Zq7IO4KdQPUraeIo6XoOaRy1IdQAyYY15RQw4JU30uA,389
|
101
101
|
janito/llm/message_parts.py,sha256=QY_0kDjaxdoErDgKPRPv1dNkkYJuXIBmHWNLiOEKAH4,1365
|
102
102
|
janito/llm/model.py,sha256=42hjcffZDTuzjAJoVhDcDqwIXm6rUmmi5UwTOYopf5w,1131
|
103
|
-
janito/llm/provider.py,sha256=
|
103
|
+
janito/llm/provider.py,sha256=lfIJnh06F0kf8--Pg_W7ALhkbIzn7N4iItQ93pntyuM,7978
|
104
104
|
janito/providers/__init__.py,sha256=j11MccCveqDTiZTicJH00eZ3qVDEL1KDbihGZhEvGYg,326
|
105
105
|
janito/providers/provider_static_info.py,sha256=f0g2UbyLdHFBPb45x19t6Lx_FoIXp0mJLboH4Jqn1L0,611
|
106
106
|
janito/providers/registry.py,sha256=wd9fFafXeMOnqk4mvVsY9HYYGNa5ipG9LbieDuTHves,774
|
107
107
|
janito/providers/anthropic/model_info.py,sha256=saofXNs73WhlAhm58AcIkSem7C8FMUgHP19BvkoLV5Y,641
|
108
108
|
janito/providers/anthropic/provider.py,sha256=nTMTroXCffU9JIEpMtMlY7a4FZS1J90gr9cAVRwrCJE,2371
|
109
109
|
janito/providers/azure_openai/model_info.py,sha256=v4zHgPDBCZkQUE40i-BseDnYzvjPd8c8NaspIor3l10,396
|
110
|
-
janito/providers/azure_openai/provider.py,sha256=
|
110
|
+
janito/providers/azure_openai/provider.py,sha256=Y65oOt3yfzTXNzAKLCM99GVN_OoIMvwbmQQSvDFwvWo,3089
|
111
111
|
janito/providers/deepseek/__init__.py,sha256=4sISEpq4bJO29vxFK9cfnO-SRUmKoD7oSdeCvz0hVno,36
|
112
|
-
janito/providers/deepseek/model_info.py,sha256=
|
113
|
-
janito/providers/deepseek/provider.py,sha256=
|
112
|
+
janito/providers/deepseek/model_info.py,sha256=tAlFRtWiyNF_MKZ1gy5_-VNlvqoIwAinv6bAv9dNFsc,465
|
113
|
+
janito/providers/deepseek/provider.py,sha256=h3xD3uAoE9Kr-IumcQsEK3oNZbkXH-bDfzQK1Uz3nM4,3659
|
114
114
|
janito/providers/google/__init__.py,sha256=hE3OGJvLEhvNLhIK_XmCGIdrIj8MKlyGgdOLJ4mdess,38
|
115
115
|
janito/providers/google/model_info.py,sha256=tw0_o8Z3Zhcl5BtcShgE-a0Sinz2gsiiiSWWOIjm5us,1220
|
116
116
|
janito/providers/google/provider.py,sha256=O60BJXhjmwfmI-FqHUAAO022H7CUbhVU_Qj-FIrPnp4,2626
|
@@ -121,7 +121,7 @@ janito/providers/openai/model_info.py,sha256=eqlkKswDcZKDLrR1qL_uSYw5KRarx8JTSUN
|
|
121
121
|
janito/providers/openai/provider.py,sha256=DnFhq1H9_fX-KjcIkeMk9duxAU3OIPzaiM188-gXNhU,4493
|
122
122
|
janito/providers/openai/schema_generator.py,sha256=hTqeLcPTR8jeKn5DUUpo7b-EZ-V-g1WwXiX7MbHnFzE,2234
|
123
123
|
janito/termweb/app.py,sha256=lOZqNf5TEvijryLXaa2CDx722PqBR_DH32A44V1Lfz0,3305
|
124
|
-
janito/tools/__init__.py,sha256=
|
124
|
+
janito/tools/__init__.py,sha256=Xk6i_b2VTfrSGt_iBGAe61uSZGyrztv_WzbGlxQVNrU,566
|
125
125
|
janito/tools/inspect_registry.py,sha256=Jo7PrMPRKLuR-j_mBAk9PBcTzeJf1eQrS1ChGofgQk0,538
|
126
126
|
janito/tools/tool_base.py,sha256=223MKZFYE8DMcSXfPofj6fro7YAvT7HaXmAUUUAv_AU,3370
|
127
127
|
janito/tools/tool_events.py,sha256=czRtC2TYakAySBZvfHS_Q6_NY_7_krxzAzAL1ggRFWA,1527
|
@@ -131,9 +131,9 @@ janito/tools/tool_utils.py,sha256=57nfiq0XKTxzSy7ZqgmR_ItMt0-Ri3sENQzCiLWDR_M,13
|
|
131
131
|
janito/tools/tools_adapter.py,sha256=5UXiL0F1oADFDaV2UQRviMYpylfZPl8AKrGVW0RkdAw,8410
|
132
132
|
janito/tools/tools_schema.py,sha256=rGrKrmpPNR07VXHAJ_haGBRRO-YGLOF51BlYRep9AAQ,4415
|
133
133
|
janito/tools/adapters/__init__.py,sha256=XKixOKtUJs1R-rGwGDXSLVLg5-Kp090gvWbsseWT4LI,92
|
134
|
-
janito/tools/adapters/local/__init__.py,sha256=
|
135
|
-
janito/tools/adapters/local/adapter.py,sha256=
|
136
|
-
janito/tools/adapters/local/ask_user.py,sha256=
|
134
|
+
janito/tools/adapters/local/__init__.py,sha256=6Kkfh96Q1HCS5EImW2U9GXI_tY19KFVpZ57gWCxpGBI,2003
|
135
|
+
janito/tools/adapters/local/adapter.py,sha256=6W-0HgCoKBJcefmMuXhfS114mDbg7G8Oygm8PFTGsCg,3565
|
136
|
+
janito/tools/adapters/local/ask_user.py,sha256=GiGnID--Wd7uvF4I9JyQn4m4PzdwSACfo5kH7O9rFuo,3431
|
137
137
|
janito/tools/adapters/local/copy_file.py,sha256=wNr6mQBxYxGMGZFJmDnWXm5ogJ8iskpA6izBJH4cQvk,3507
|
138
138
|
janito/tools/adapters/local/create_directory.py,sha256=4PpSKETzqdUPmSk5vX2ikatHcobRK7vZEgV1quMsTVs,2551
|
139
139
|
janito/tools/adapters/local/create_file.py,sha256=a-Wrx4sN0YAxiTKow2EfFvQHLO3hyfS2kV2Zq1aG4fs,3463
|
@@ -141,11 +141,11 @@ janito/tools/adapters/local/delete_text_in_file.py,sha256=ZPCBMDPHlxi5eUuILyAJQ1
|
|
141
141
|
janito/tools/adapters/local/fetch_url.py,sha256=b5eRFRTG2L5rVIQAGXrPNm4j0kSUszhuG9pRVwnl_L0,3806
|
142
142
|
janito/tools/adapters/local/find_files.py,sha256=5_7YxzxPWigNEvIG9kKwzaPB1n-Gt0TkWEHY3ynJUd4,6137
|
143
143
|
janito/tools/adapters/local/move_file.py,sha256=_Pn34fYbRq7Ax2kSv0LeTHKRn0LnNScxaM7jA_QTjR8,5213
|
144
|
-
janito/tools/adapters/local/open_html_in_browser.py,sha256=
|
144
|
+
janito/tools/adapters/local/open_html_in_browser.py,sha256=uQ_RtxpmHid0AHLGmSoSl3nsgEczx-SbiZEHFH-NRi0,1775
|
145
145
|
janito/tools/adapters/local/open_url.py,sha256=gzueNkGLNWikWzbB32X4VQUGyBq31xuZ11t-qKioHAk,1221
|
146
|
-
janito/tools/adapters/local/python_code_run.py,sha256=
|
147
|
-
janito/tools/adapters/local/python_command_run.py,sha256=
|
148
|
-
janito/tools/adapters/local/python_file_run.py,sha256=
|
146
|
+
janito/tools/adapters/local/python_code_run.py,sha256=MCZqd8L3xJ4rsi4QmGytNrfRvv0FCqrhivAn5lQgm9k,6650
|
147
|
+
janito/tools/adapters/local/python_command_run.py,sha256=2bP9YnBP_-w6VQtmC7ROonsgDo2dq0_iVOFB2JEdCJs,6590
|
148
|
+
janito/tools/adapters/local/python_file_run.py,sha256=1xaaMsHrobJ3z0T8bIS469zIKqwdNpFlnV8UorO8LTQ,6465
|
149
149
|
janito/tools/adapters/local/remove_directory.py,sha256=A0qriZkcf85t3bwX52G9O6PYQFdUxWqVqbwRpjCzp1Q,2628
|
150
150
|
janito/tools/adapters/local/remove_file.py,sha256=dSAbP1NvuJT9NaReD_1TIKcJSp3psGW_d_pzWHk3GWE,2479
|
151
151
|
janito/tools/adapters/local/replace_text_in_file.py,sha256=V4v3Z_BwxdwBb_zuIUnDQBrcNoCORFdaih4DFsx1NDU,11108
|
@@ -174,8 +174,8 @@ janito/tools/adapters/local/validate_file_syntax/ps1_validator.py,sha256=cP1jsMh
|
|
174
174
|
janito/tools/adapters/local/validate_file_syntax/python_validator.py,sha256=lHzjlA4g9nCF9hXkGx3izWF0b0vJH3yV7Pu3buLyBbI,140
|
175
175
|
janito/tools/adapters/local/validate_file_syntax/xml_validator.py,sha256=3CK7BEGO7gKI3bpeTtCFe0kJ5aKDZVh3Kh67bGIhcuc,294
|
176
176
|
janito/tools/adapters/local/validate_file_syntax/yaml_validator.py,sha256=XLmOp7Ef6pLd97ICVnF3PxNKL1Yo5tLZsasvxPY478Y,165
|
177
|
-
janito-2.
|
178
|
-
janito-2.
|
179
|
-
janito-2.
|
180
|
-
janito-2.
|
181
|
-
janito-2.
|
177
|
+
janito-2.1.1.dist-info/METADATA,sha256=cgY0sY4_XDoOpgOXyFyYbNTU_OtjCWuT9hicnZCDKtA,10494
|
178
|
+
janito-2.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
179
|
+
janito-2.1.1.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
|
180
|
+
janito-2.1.1.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
|
181
|
+
janito-2.1.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|