janito 3.14.2__py3-none-any.whl → 3.15.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.
- janito/platform_discovery.py +1 -8
- janito/plugins/tools/local/adapter.py +3 -2
- janito/plugins/tools/local/ask_user.py +111 -112
- janito/plugins/tools/local/copy_file.py +86 -87
- janito/plugins/tools/local/create_directory.py +111 -112
- janito/plugins/tools/local/create_file.py +0 -1
- janito/plugins/tools/local/delete_text_in_file.py +133 -134
- janito/plugins/tools/local/fetch_url.py +465 -466
- janito/plugins/tools/local/find_files.py +142 -143
- janito/plugins/tools/local/markdown_view.py +0 -1
- janito/plugins/tools/local/move_file.py +130 -131
- janito/plugins/tools/local/open_html_in_browser.py +50 -51
- janito/plugins/tools/local/open_url.py +36 -37
- janito/plugins/tools/local/python_code_run.py +171 -172
- janito/plugins/tools/local/python_command_run.py +170 -171
- janito/plugins/tools/local/python_file_run.py +171 -172
- janito/plugins/tools/local/read_chart.py +258 -259
- janito/plugins/tools/local/read_files.py +57 -58
- janito/plugins/tools/local/remove_directory.py +54 -55
- janito/plugins/tools/local/remove_file.py +57 -58
- janito/plugins/tools/local/replace_text_in_file.py +275 -276
- janito/plugins/tools/local/run_bash_command.py +182 -183
- janito/plugins/tools/local/run_powershell_command.py +217 -218
- janito/plugins/tools/local/show_image.py +0 -1
- janito/plugins/tools/local/show_image_grid.py +0 -1
- janito/plugins/tools/local/view_file.py +0 -1
- janito/providers/alibaba/provider.py +1 -1
- janito/tools/base.py +19 -12
- janito/tools/tool_base.py +122 -121
- janito/tools/tools_schema.py +104 -104
- {janito-3.14.2.dist-info → janito-3.15.0.dist-info}/METADATA +9 -29
- {janito-3.14.2.dist-info → janito-3.15.0.dist-info}/RECORD +36 -36
- {janito-3.14.2.dist-info → janito-3.15.0.dist-info}/WHEEL +0 -0
- {janito-3.14.2.dist-info → janito-3.15.0.dist-info}/entry_points.txt +0 -0
- {janito-3.14.2.dist-info → janito-3.15.0.dist-info}/licenses/LICENSE +0 -0
- {janito-3.14.2.dist-info → janito-3.15.0.dist-info}/top_level.txt +0 -0
janito/tools/tool_base.py
CHANGED
@@ -1,121 +1,122 @@
|
|
1
|
-
from janito.report_events import ReportEvent, ReportSubtype, ReportAction
|
2
|
-
from janito.event_bus.bus import event_bus as default_event_bus
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
self.
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
1
|
+
from janito.report_events import ReportEvent, ReportSubtype, ReportAction
|
2
|
+
from janito.event_bus.bus import event_bus as default_event_bus
|
3
|
+
from janito.tools.base import BaseTool
|
4
|
+
|
5
|
+
import inspect
|
6
|
+
from collections import namedtuple
|
7
|
+
|
8
|
+
|
9
|
+
class ToolPermissions(namedtuple("ToolPermissions", ["read", "write", "execute"])):
|
10
|
+
__slots__ = ()
|
11
|
+
|
12
|
+
def __new__(cls, read=False, write=False, execute=False):
|
13
|
+
return super().__new__(cls, read, write, execute)
|
14
|
+
|
15
|
+
def __repr__(self):
|
16
|
+
return f"ToolPermissions(read={self.read}, write={self.write}, execute={self.execute})"
|
17
|
+
|
18
|
+
|
19
|
+
class ToolBase(BaseTool):
|
20
|
+
"""
|
21
|
+
Base class for all tools in the janito project.
|
22
|
+
Extend this class to implement specific tool functionality.
|
23
|
+
"""
|
24
|
+
|
25
|
+
permissions: "ToolPermissions" = None # Required: must be set by subclasses
|
26
|
+
|
27
|
+
def __init__(self, name=None, event_bus=None):
|
28
|
+
if self.permissions is None or not isinstance(
|
29
|
+
self.permissions, ToolPermissions
|
30
|
+
):
|
31
|
+
raise ValueError(
|
32
|
+
f"Tool '{self.__class__.__name__}' must define a 'permissions' attribute of type ToolPermissions."
|
33
|
+
)
|
34
|
+
self.name = name or self.__class__.__name__
|
35
|
+
self._event_bus = event_bus or default_event_bus
|
36
|
+
|
37
|
+
@property
|
38
|
+
def event_bus(self):
|
39
|
+
return self._event_bus
|
40
|
+
|
41
|
+
@event_bus.setter
|
42
|
+
def event_bus(self, bus):
|
43
|
+
self._event_bus = bus or default_event_bus
|
44
|
+
|
45
|
+
def report_action(self, message: str, action: ReportAction, context: dict = None):
|
46
|
+
"""
|
47
|
+
Report that a tool action is starting. This should be the first reporting call for every tool action.
|
48
|
+
"""
|
49
|
+
self._event_bus.publish(
|
50
|
+
ReportEvent(
|
51
|
+
subtype=ReportSubtype.ACTION_INFO,
|
52
|
+
message=" " + message,
|
53
|
+
action=action,
|
54
|
+
tool=self.name,
|
55
|
+
context=context,
|
56
|
+
)
|
57
|
+
)
|
58
|
+
|
59
|
+
def report_error(self, message: str, context: dict = None):
|
60
|
+
self._event_bus.publish(
|
61
|
+
ReportEvent(
|
62
|
+
subtype=ReportSubtype.ERROR,
|
63
|
+
message=message,
|
64
|
+
action=None,
|
65
|
+
tool=self.name,
|
66
|
+
context=context,
|
67
|
+
)
|
68
|
+
)
|
69
|
+
|
70
|
+
def report_success(self, message: str, context: dict = None):
|
71
|
+
self._event_bus.publish(
|
72
|
+
ReportEvent(
|
73
|
+
subtype=ReportSubtype.SUCCESS,
|
74
|
+
message=message,
|
75
|
+
action=None,
|
76
|
+
tool=self.name,
|
77
|
+
context=context,
|
78
|
+
)
|
79
|
+
)
|
80
|
+
|
81
|
+
def report_warning(self, message: str, context: dict = None):
|
82
|
+
self._event_bus.publish(
|
83
|
+
ReportEvent(
|
84
|
+
subtype=ReportSubtype.WARNING,
|
85
|
+
message=message,
|
86
|
+
action=None,
|
87
|
+
tool=self.name,
|
88
|
+
context=context,
|
89
|
+
)
|
90
|
+
)
|
91
|
+
|
92
|
+
def report_stdout(self, message: str, context: dict = None):
|
93
|
+
self._event_bus.publish(
|
94
|
+
ReportEvent(
|
95
|
+
subtype=ReportSubtype.STDOUT,
|
96
|
+
message=message,
|
97
|
+
action=None,
|
98
|
+
tool=self.name,
|
99
|
+
context=context,
|
100
|
+
)
|
101
|
+
)
|
102
|
+
|
103
|
+
def report_stderr(self, message: str, context: dict = None):
|
104
|
+
self._event_bus.publish(
|
105
|
+
ReportEvent(
|
106
|
+
subtype=ReportSubtype.STDERR,
|
107
|
+
message=message,
|
108
|
+
action=None,
|
109
|
+
tool=self.name,
|
110
|
+
context=context,
|
111
|
+
)
|
112
|
+
)
|
113
|
+
|
114
|
+
def run(self, *args, **kwargs):
|
115
|
+
raise NotImplementedError("Subclasses must implement the run method.")
|
116
|
+
|
117
|
+
def get_signature(self):
|
118
|
+
"""
|
119
|
+
Return the function signature for this tool's run method.
|
120
|
+
This is used for introspection and validation.
|
121
|
+
"""
|
122
|
+
return inspect.signature(self.run)
|
janito/tools/tools_schema.py
CHANGED
@@ -1,104 +1,104 @@
|
|
1
|
-
import inspect
|
2
|
-
import typing
|
3
|
-
import re
|
4
|
-
|
5
|
-
|
6
|
-
class ToolSchemaBase:
|
7
|
-
def parse_param_section(self, lines, param_section_headers):
|
8
|
-
param_descs = {}
|
9
|
-
in_params = False
|
10
|
-
for line in lines:
|
11
|
-
stripped_line = line.strip()
|
12
|
-
if any(
|
13
|
-
stripped_line.lower().startswith(h + ":") or stripped_line.lower() == h
|
14
|
-
for h in param_section_headers
|
15
|
-
):
|
16
|
-
in_params = True
|
17
|
-
continue
|
18
|
-
if in_params:
|
19
|
-
m = re.match(
|
20
|
-
r"([a-zA-Z_][a-zA-Z0-9_]*)\s*(?:\(([^)]+)\))?\s*[:\-]?\s*(.+)",
|
21
|
-
stripped_line,
|
22
|
-
)
|
23
|
-
if m:
|
24
|
-
param, _, desc = m.groups()
|
25
|
-
param_descs[param] = desc.strip()
|
26
|
-
elif stripped_line and stripped_line[0] != "-":
|
27
|
-
if param_descs:
|
28
|
-
last = list(param_descs)[-1]
|
29
|
-
param_descs[last] += " " + stripped_line
|
30
|
-
if (
|
31
|
-
stripped_line.lower().startswith("returns:")
|
32
|
-
or stripped_line.lower() == "returns"
|
33
|
-
):
|
34
|
-
break
|
35
|
-
return param_descs
|
36
|
-
|
37
|
-
def parse_return_section(self, lines):
|
38
|
-
in_returns = False
|
39
|
-
return_desc = ""
|
40
|
-
for line in lines:
|
41
|
-
stripped_line = line.strip()
|
42
|
-
if (
|
43
|
-
stripped_line.lower().startswith("returns:")
|
44
|
-
or stripped_line.lower() == "returns"
|
45
|
-
):
|
46
|
-
in_returns = True
|
47
|
-
continue
|
48
|
-
if in_returns:
|
49
|
-
if stripped_line:
|
50
|
-
return_desc += (" " if return_desc else "") + stripped_line
|
51
|
-
return return_desc
|
52
|
-
|
53
|
-
def parse_docstring(self, docstring: str):
|
54
|
-
if not docstring:
|
55
|
-
return "", {}, ""
|
56
|
-
lines = docstring.strip().split("\n")
|
57
|
-
summary = lines[0].strip()
|
58
|
-
param_section_headers = ("args", "arguments", "params", "parameters")
|
59
|
-
param_descs = self.parse_param_section(lines[1:], param_section_headers)
|
60
|
-
return_desc = self.parse_return_section(lines[1:])
|
61
|
-
return summary, param_descs, return_desc
|
62
|
-
|
63
|
-
def validate_tool_class(self, tool_class):
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
sig = inspect.signature(func)
|
75
|
-
if sig.return_annotation is inspect._empty or sig.return_annotation is not str:
|
76
|
-
raise ValueError(
|
77
|
-
f"Tool '{tool_name}' must have an explicit return type of 'str'. Found: {sig.return_annotation}"
|
78
|
-
)
|
79
|
-
missing_type_hints = [
|
80
|
-
name
|
81
|
-
for name, param in sig.parameters.items()
|
82
|
-
if name != "self" and param.annotation is inspect._empty
|
83
|
-
]
|
84
|
-
if missing_type_hints:
|
85
|
-
raise ValueError(
|
86
|
-
f"Tool '{tool_name}' is missing type hints for parameter(s): {', '.join(missing_type_hints)}.\nAll parameters must have explicit type hints for schema generation."
|
87
|
-
)
|
88
|
-
class_doc = (
|
89
|
-
tool_class.__doc__.strip() if tool_class and tool_class.__doc__ else ""
|
90
|
-
)
|
91
|
-
summary, param_descs, return_desc = self.parse_docstring(class_doc)
|
92
|
-
description = summary
|
93
|
-
if return_desc:
|
94
|
-
description += f"\n\nReturns: {return_desc}"
|
95
|
-
undocumented = [
|
96
|
-
name
|
97
|
-
for name, param in sig.parameters.items()
|
98
|
-
if name != "self" and name not in param_descs
|
99
|
-
]
|
100
|
-
if undocumented:
|
101
|
-
raise ValueError(
|
102
|
-
f"Tool '{tool_name}' is missing docstring documentation for parameter(s): {', '.join(undocumented)}.\nParameter documentation must be provided in the Tool class docstring, not the method docstring."
|
103
|
-
)
|
104
|
-
return func, tool_name, sig, summary, param_descs, return_desc, description
|
1
|
+
import inspect
|
2
|
+
import typing
|
3
|
+
import re
|
4
|
+
|
5
|
+
|
6
|
+
class ToolSchemaBase:
|
7
|
+
def parse_param_section(self, lines, param_section_headers):
|
8
|
+
param_descs = {}
|
9
|
+
in_params = False
|
10
|
+
for line in lines:
|
11
|
+
stripped_line = line.strip()
|
12
|
+
if any(
|
13
|
+
stripped_line.lower().startswith(h + ":") or stripped_line.lower() == h
|
14
|
+
for h in param_section_headers
|
15
|
+
):
|
16
|
+
in_params = True
|
17
|
+
continue
|
18
|
+
if in_params:
|
19
|
+
m = re.match(
|
20
|
+
r"([a-zA-Z_][a-zA-Z0-9_]*)\s*(?:\(([^)]+)\))?\s*[:\-]?\s*(.+)",
|
21
|
+
stripped_line,
|
22
|
+
)
|
23
|
+
if m:
|
24
|
+
param, _, desc = m.groups()
|
25
|
+
param_descs[param] = desc.strip()
|
26
|
+
elif stripped_line and stripped_line[0] != "-":
|
27
|
+
if param_descs:
|
28
|
+
last = list(param_descs)[-1]
|
29
|
+
param_descs[last] += " " + stripped_line
|
30
|
+
if (
|
31
|
+
stripped_line.lower().startswith("returns:")
|
32
|
+
or stripped_line.lower() == "returns"
|
33
|
+
):
|
34
|
+
break
|
35
|
+
return param_descs
|
36
|
+
|
37
|
+
def parse_return_section(self, lines):
|
38
|
+
in_returns = False
|
39
|
+
return_desc = ""
|
40
|
+
for line in lines:
|
41
|
+
stripped_line = line.strip()
|
42
|
+
if (
|
43
|
+
stripped_line.lower().startswith("returns:")
|
44
|
+
or stripped_line.lower() == "returns"
|
45
|
+
):
|
46
|
+
in_returns = True
|
47
|
+
continue
|
48
|
+
if in_returns:
|
49
|
+
if stripped_line:
|
50
|
+
return_desc += (" " if return_desc else "") + stripped_line
|
51
|
+
return return_desc
|
52
|
+
|
53
|
+
def parse_docstring(self, docstring: str):
|
54
|
+
if not docstring:
|
55
|
+
return "", {}, ""
|
56
|
+
lines = docstring.strip().split("\n")
|
57
|
+
summary = lines[0].strip()
|
58
|
+
param_section_headers = ("args", "arguments", "params", "parameters")
|
59
|
+
param_descs = self.parse_param_section(lines[1:], param_section_headers)
|
60
|
+
return_desc = self.parse_return_section(lines[1:])
|
61
|
+
return summary, param_descs, return_desc
|
62
|
+
|
63
|
+
def validate_tool_class(self, tool_class):
|
64
|
+
# Create instance to get tool_name property
|
65
|
+
instance = tool_class()
|
66
|
+
tool_name = instance.tool_name
|
67
|
+
if not tool_name or not isinstance(tool_name, str):
|
68
|
+
raise ValueError(
|
69
|
+
"Tool class must have a valid 'tool_name' property for registry and schema generation."
|
70
|
+
)
|
71
|
+
if not hasattr(tool_class, "run") or not callable(getattr(tool_class, "run")):
|
72
|
+
raise ValueError("Tool class must have a callable 'run' method.")
|
73
|
+
func = tool_class.run
|
74
|
+
sig = inspect.signature(func)
|
75
|
+
if sig.return_annotation is inspect._empty or sig.return_annotation is not str:
|
76
|
+
raise ValueError(
|
77
|
+
f"Tool '{tool_name}' must have an explicit return type of 'str'. Found: {sig.return_annotation}"
|
78
|
+
)
|
79
|
+
missing_type_hints = [
|
80
|
+
name
|
81
|
+
for name, param in sig.parameters.items()
|
82
|
+
if name != "self" and param.annotation is inspect._empty
|
83
|
+
]
|
84
|
+
if missing_type_hints:
|
85
|
+
raise ValueError(
|
86
|
+
f"Tool '{tool_name}' is missing type hints for parameter(s): {', '.join(missing_type_hints)}.\nAll parameters must have explicit type hints for schema generation."
|
87
|
+
)
|
88
|
+
class_doc = (
|
89
|
+
tool_class.__doc__.strip() if tool_class and tool_class.__doc__ else ""
|
90
|
+
)
|
91
|
+
summary, param_descs, return_desc = self.parse_docstring(class_doc)
|
92
|
+
description = summary
|
93
|
+
if return_desc:
|
94
|
+
description += f"\n\nReturns: {return_desc}"
|
95
|
+
undocumented = [
|
96
|
+
name
|
97
|
+
for name, param in sig.parameters.items()
|
98
|
+
if name != "self" and name not in param_descs
|
99
|
+
]
|
100
|
+
if undocumented:
|
101
|
+
raise ValueError(
|
102
|
+
f"Tool '{tool_name}' is missing docstring documentation for parameter(s): {', '.join(undocumented)}.\nParameter documentation must be provided in the Tool class docstring, not the method docstring."
|
103
|
+
)
|
104
|
+
return func, tool_name, sig, summary, param_descs, return_desc, description
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.15.0
|
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
|
@@ -40,7 +40,7 @@ Dynamic: license-file
|
|
40
40
|
$ janito --help
|
41
41
|
Usage: janito <command>
|
42
42
|
|
43
|
-
|
43
|
+
A command-line tool for managing your projects.
|
44
44
|
|
45
45
|
Run "janito <command> --help" for more information on a command.
|
46
46
|
```
|
@@ -48,35 +48,15 @@ Run "janito <command> --help" for more information on a command.
|
|
48
48
|
## Setup
|
49
49
|
|
50
50
|
```bash
|
51
|
-
#
|
52
|
-
|
51
|
+
# Install using pip
|
52
|
+
pip install janito
|
53
53
|
|
54
|
-
#
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
# Fedora/RHEL
|
60
|
-
cat <<EOF > /etc/yum.repos.d/repo.nine.ch.repo
|
61
|
-
[repo.nine.ch]
|
62
|
-
name=Nine Repo
|
63
|
-
baseurl=https://repo.nine.ch/yum/
|
64
|
-
enabled=1
|
65
|
-
gpgcheck=0
|
66
|
-
EOF
|
67
|
-
dnf install janito
|
68
|
-
|
69
|
-
# Arch
|
70
|
-
# Install yay: https://github.com/Jguer/yay#binary
|
71
|
-
yay --version
|
72
|
-
yay -S janito-bin
|
54
|
+
# Or install from source
|
55
|
+
git clone https://github.com/yourusername/janito.git
|
56
|
+
cd janito
|
57
|
+
pip install -e .
|
73
58
|
```
|
74
59
|
|
75
|
-
For Windows users, janito is also built for arm64 and amd64. You can download the
|
76
|
-
latest exe file from the [releases](https://github.com/ninech/janito/releases) and
|
77
|
-
install it.
|
78
|
-
|
79
60
|
## Getting started
|
80
61
|
|
81
|
-
*
|
82
|
-
* run `janito --help` to get a list of all available commands
|
62
|
+
* Run `janito --help` to get a list of all available commands
|
@@ -15,7 +15,7 @@ janito/gitignore_utils.py,sha256=P3iF9fMWAomqULq2xsoqHtI9uNIFSPcagljrxZshmLw,411
|
|
15
15
|
janito/hello.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
janito/perf_singleton.py,sha256=g1h0Sdf4ydzegeEpJlMhQt4H0GQZ2hryXrdYOTL-b30,113
|
17
17
|
janito/performance_collector.py,sha256=RYu4av16Trj3RljJZ8-2Gbn1KlGdJUosrcVFYtwviNI,6285
|
18
|
-
janito/platform_discovery.py,sha256=
|
18
|
+
janito/platform_discovery.py,sha256=RpGQ1VMUwLl-sofWAjsKZ1Moyud1u_OwZKaqbz6q1Ic,5964
|
19
19
|
janito/provider_config.py,sha256=acn2FEgWsEIyi2AxZiuCLoP2rXDd-nXcP5VB4CZHaeE,3189
|
20
20
|
janito/provider_registry.py,sha256=IRNB35Cjn4PSXMWOxKBjPg0DfUEOoL4vh63OSPxhMtk,6925
|
21
21
|
janito/report_events.py,sha256=q4OR_jTZNfcqaQF_fzTjgqo6_VlUIxSGWfhpT4nJWcw,938
|
@@ -152,32 +152,32 @@ janito/plugins/core/filemanager/tools/validate_file_syntax/core.py,sha256=EoBMJ_
|
|
152
152
|
janito/plugins/core/filemanager/tools/validate_file_syntax/txt_validator.py,sha256=5GbO_IhbOUjHM-klorS3dUKeEOfKXXIuK3T-1JjSIeU,909
|
153
153
|
janito/plugins/tools/__init__.py,sha256=XKixOKtUJs1R-rGwGDXSLVLg5-Kp090gvWbsseWT4LI,92
|
154
154
|
janito/plugins/tools/local/__init__.py,sha256=ytz-wxMyLoJFyL7HqSYbI6ue0E4LUsvZiNeCE8bvdYk,2700
|
155
|
-
janito/plugins/tools/local/adapter.py,sha256=
|
156
|
-
janito/plugins/tools/local/ask_user.py,sha256=
|
155
|
+
janito/plugins/tools/local/adapter.py,sha256=H0-TnX5okDaOqqMUkIRRD93w3HzK0zuicCvxZ4YYJTg,8776
|
156
|
+
janito/plugins/tools/local/ask_user.py,sha256=BSy7eZxIzfZqo8AavbWmnMx0oYPopOutZ1I-zr2tNRQ,3920
|
157
157
|
janito/plugins/tools/local/clear_context.py,sha256=95yvLv9Sn3frzq3r55FSTX_uveoZh50FndrfUF4FE-E,3501
|
158
|
-
janito/plugins/tools/local/copy_file.py,sha256=
|
159
|
-
janito/plugins/tools/local/create_directory.py,sha256=
|
160
|
-
janito/plugins/tools/local/create_file.py,sha256=
|
161
|
-
janito/plugins/tools/local/delete_text_in_file.py,sha256=
|
162
|
-
janito/plugins/tools/local/fetch_url.py,sha256=
|
163
|
-
janito/plugins/tools/local/find_files.py,sha256=
|
164
|
-
janito/plugins/tools/local/markdown_view.py,sha256=
|
165
|
-
janito/plugins/tools/local/move_file.py,sha256=
|
166
|
-
janito/plugins/tools/local/open_html_in_browser.py,sha256=
|
167
|
-
janito/plugins/tools/local/open_url.py,sha256=
|
168
|
-
janito/plugins/tools/local/python_code_run.py,sha256=
|
169
|
-
janito/plugins/tools/local/python_command_run.py,sha256=
|
170
|
-
janito/plugins/tools/local/python_file_run.py,sha256=
|
171
|
-
janito/plugins/tools/local/read_chart.py,sha256=
|
172
|
-
janito/plugins/tools/local/read_files.py,sha256=
|
173
|
-
janito/plugins/tools/local/remove_directory.py,sha256
|
174
|
-
janito/plugins/tools/local/remove_file.py,sha256=
|
175
|
-
janito/plugins/tools/local/replace_text_in_file.py,sha256=
|
176
|
-
janito/plugins/tools/local/run_bash_command.py,sha256=
|
177
|
-
janito/plugins/tools/local/run_powershell_command.py,sha256=
|
178
|
-
janito/plugins/tools/local/show_image.py,sha256=
|
179
|
-
janito/plugins/tools/local/show_image_grid.py,sha256=
|
180
|
-
janito/plugins/tools/local/view_file.py,sha256
|
158
|
+
janito/plugins/tools/local/copy_file.py,sha256=CTVoQ1CnlU81AKJVvieqx6aUfBIqJNCAHZnYgqPQXX4,3566
|
159
|
+
janito/plugins/tools/local/create_directory.py,sha256=k_VigiQInZfJPxzEmHSAdaXoZA9udkeMWo6PAiWbfvE,4233
|
160
|
+
janito/plugins/tools/local/create_file.py,sha256=MMOcfCkilr9A8NwCC03adUOCoXwQ1gi7OFy1Johcxwk,8042
|
161
|
+
janito/plugins/tools/local/delete_text_in_file.py,sha256=K2HiN-Dz4TT4k0sEw2oA1OqjQnDA7Cvod-kdJUD4wWQ,4913
|
162
|
+
janito/plugins/tools/local/fetch_url.py,sha256=0w6I-8wgiAJMCkhuCNDbHCOB4XZk1u_NeUp6H4A7Y3k,17726
|
163
|
+
janito/plugins/tools/local/find_files.py,sha256=xANjrVPi2F5g2jVwDywBrx5oZ6cTtzaU9S0Wc5ldKVU,6077
|
164
|
+
janito/plugins/tools/local/markdown_view.py,sha256=MqnoNLLEc2YXMluCO_IR1akufvwa_-E94OoLGXtddVk,3653
|
165
|
+
janito/plugins/tools/local/move_file.py,sha256=hF5nSd-3Kun4oGqHCkHcdobHuCIituzydCSk0R8E4xw,4535
|
166
|
+
janito/plugins/tools/local/open_html_in_browser.py,sha256=5oaGLubzIc7J7p97wAyr-khhbcJJNX5MiZwT8GyI3_Y,2010
|
167
|
+
janito/plugins/tools/local/open_url.py,sha256=E9r6mAbvoiSanuoLUJjLpuzjNjOeusdd20ji0MX_Nfw,1487
|
168
|
+
janito/plugins/tools/local/python_code_run.py,sha256=s5wy5CkG9Ls4T-wggi5wDPmUjokVqy0cBiMTOpkOz0k,6774
|
169
|
+
janito/plugins/tools/local/python_command_run.py,sha256=OcYDqVkvrgPsTOlumQMeAuM82rAWTLPtWR3VYnbQ-OA,6726
|
170
|
+
janito/plugins/tools/local/python_file_run.py,sha256=v9ECNOpR2R3SIFXRV_n-mTh-ZxAD1Unxfd9qmJ53Fqo,6652
|
171
|
+
janito/plugins/tools/local/read_chart.py,sha256=WyzoEsVmS30Y2PAOZ1dvkh7lAiAwBkzK3GhxaIfbWSA,10122
|
172
|
+
janito/plugins/tools/local/read_files.py,sha256=5j69bhCamQnsUpKedvr24xTC5WfZy1-6UhDWuNZOcxc,2234
|
173
|
+
janito/plugins/tools/local/remove_directory.py,sha256=-a5nYhm-qPmCml4RHKD4GXvTkdHZysSTvXaxIGkOVHY,1822
|
174
|
+
janito/plugins/tools/local/remove_file.py,sha256=ulWkOr0CAcbipI04YzH4b3b7UJKos2ZVN2L6d9VKvD8,2004
|
175
|
+
janito/plugins/tools/local/replace_text_in_file.py,sha256=c8cKac6-ln2qUoAOnGwsX7d7zyhUIZpKbugaUXRDnCA,10647
|
176
|
+
janito/plugins/tools/local/run_bash_command.py,sha256=uEQqOb3sniKHxe9kLrp4R-o3I-QMa7WcIUbmXpzQgbU,7736
|
177
|
+
janito/plugins/tools/local/run_powershell_command.py,sha256=pt8a4PLN_mMdG37JEvDdzhfL1E3tX2UpSLRJg61TuL0,9053
|
178
|
+
janito/plugins/tools/local/show_image.py,sha256=aryXMMbrilRsVMsQt0wcbB1aikIjlDdBqqNAm6Unv-Q,4910
|
179
|
+
janito/plugins/tools/local/show_image_grid.py,sha256=AAIz4J5r6gHLKlyMXNPiyehJU1UjepdpPEoR8c78Zys,5260
|
180
|
+
janito/plugins/tools/local/view_file.py,sha256=qkORSwDcc-jEAWu40OJ4UwjrT5cp_2vI439OgqdIVwk,8010
|
181
181
|
janito/plugins/tools/local/get_file_outline/__init__.py,sha256=OKV_BHnoD9h-vkcVoW6AHmsuDjjauHPCKNK0nVFl4sU,37
|
182
182
|
janito/plugins/tools/local/get_file_outline/core.py,sha256=E8nV5Qx7DuslRTwhONlBS1LxJJLWsE1TWeOSXMFKtFs,4609
|
183
183
|
janito/plugins/tools/local/get_file_outline/java_outline.py,sha256=_UeUY5JoQEUdlHcK8aqGTqYJl0T2KxIFXPTdwum9gKQ,1825
|
@@ -207,7 +207,7 @@ janito/providers/dashscope.bak.zip,sha256=BwXxRmZreEivvRtmqbr5BR62IFVlNjAf4y6DrF
|
|
207
207
|
janito/providers/registry.py,sha256=Ygwv9eVrTXOKhv0EKxSWQXO5WMHvajWE2Q_Lc3p7dKo,730
|
208
208
|
janito/providers/alibaba/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
209
209
|
janito/providers/alibaba/model_info.py,sha256=XNDDEH9g7gsllizel3VhmWeHrIt75PVQ43zrcluKF3A,5526
|
210
|
-
janito/providers/alibaba/provider.py,sha256=
|
210
|
+
janito/providers/alibaba/provider.py,sha256=bVJqo_WNsbun4v7bSJcM20-eGWx07pjjqbwOTE3UgBk,3482
|
211
211
|
janito/providers/anthropic/model_info.py,sha256=m6pBh0Ia8_xC1KZ7ke_4HeHIFw7nWjnYVItnRpkCSWc,1206
|
212
212
|
janito/providers/anthropic/provider.py,sha256=x_aAP7dJ64rXk6ZbzjcF8VH8y8JV9Bko_Yx5SXjPLwc,2810
|
213
213
|
janito/providers/azure_openai/model_info.py,sha256=TMSqEpQROIIYUGAyulYJ5xGhj7CbLoaKL_JXeLbXaG0,689
|
@@ -247,7 +247,7 @@ janito/tests/test_tool_adapter_case_insensitive.py,sha256=ZZd7-bnWabzYoQ3P0TugBW
|
|
247
247
|
janito/tools/DOCSTRING_STANDARD.txt,sha256=VLPwNgjxRVD_xZSSVvUZ4H-4bBwM-VKh_RyfzYQsYSs,1735
|
248
248
|
janito/tools/README.md,sha256=5HkLpF5k4PENJER7SlDPRXj0yo9mpHvAHW4uuzhq4ak,115
|
249
249
|
janito/tools/__init__.py,sha256=8Dmc23B-OancdQsUK4xzKj9wsopsNa5bwm_6sYU63wE,1169
|
250
|
-
janito/tools/base.py,sha256=
|
250
|
+
janito/tools/base.py,sha256=mDPECz5crAEyxkhl7nVzY2r63Yv5vv4tfvPI5UGRREw,632
|
251
251
|
janito/tools/disabled_tools.py,sha256=Tx__16wtMWZ9z34cYLdH1gukwot5MCL-9kLjd5MPX6Y,2110
|
252
252
|
janito/tools/function_adapter.py,sha256=A_-5pA5Y3v0TAYMA-vq3A-Cawg75kH5XWcUEkNHSOoI,2267
|
253
253
|
janito/tools/inspect_registry.py,sha256=95vFn9dZVv9J0JO4SSunduI2AVnVkCMDHbOZ_XQaAxc,537
|
@@ -258,17 +258,17 @@ janito/tools/path_security.py,sha256=40b0hV0X3449Dht93A04Q3c9AYSsBQsBFy2BjzM83lA
|
|
258
258
|
janito/tools/path_utils.py,sha256=Rg5GE4kiu7rky6I2KTtivW6wPXzc9Qmq0_lOjwkPYlI,832
|
259
259
|
janito/tools/permissions.py,sha256=_viTVXyetZC01HjI2s5c3klIJ8-RkWB1ShdOaV__loY,1508
|
260
260
|
janito/tools/permissions_parse.py,sha256=LHadt0bWglm9Q2BbbVVbKePg4oa7QLeRQ-ChQZsE_dI,384
|
261
|
-
janito/tools/tool_base.py,sha256=
|
261
|
+
janito/tools/tool_base.py,sha256=DIy2NgXyXle70j2qrA6tMzrwc2efqLz3bz65LSbYIVM,3856
|
262
262
|
janito/tools/tool_events.py,sha256=czRtC2TYakAySBZvfHS_Q6_NY_7_krxzAzAL1ggRFWA,1527
|
263
263
|
janito/tools/tool_run_exception.py,sha256=43yWgTaGBGEtRteo6FvTrane6fEVGo9FU1uOdjMRWJE,525
|
264
264
|
janito/tools/tool_use_tracker.py,sha256=IaEmA22D6RuL1xMUCScOMGv0crLPwEJVGmj49cydIaM,2662
|
265
265
|
janito/tools/tool_utils.py,sha256=alPm9DvtXSw_zPRKvP5GjbebPRf_nfvmWk2TNlL5Cws,1219
|
266
266
|
janito/tools/tools_adapter.py,sha256=3Phjw34mOqG0KvXzQpZKIWigfSgZWRvdYuSdvV7Dj4M,21965
|
267
|
-
janito/tools/tools_schema.py,sha256=
|
267
|
+
janito/tools/tools_schema.py,sha256=bv7jQfjh6yCbiRNPJykmbCTBgZZrOV2z_WqWQOjeY5o,4324
|
268
268
|
janito/tools/url_whitelist.py,sha256=0CPLkHTp5HgnwgjxwgXnJmwPeZQ30q4j3YjW59hiUUE,4295
|
269
|
-
janito-3.
|
270
|
-
janito-3.
|
271
|
-
janito-3.
|
272
|
-
janito-3.
|
273
|
-
janito-3.
|
274
|
-
janito-3.
|
269
|
+
janito-3.15.0.dist-info/licenses/LICENSE,sha256=dXV4fOF2ZErugtN8l_Nrj5tsRTYgtjE3cgiya0UfBio,11356
|
270
|
+
janito-3.15.0.dist-info/METADATA,sha256=0ZH7-ZmiyshNQ0WU4lY4ujiTGEjD0Wn6O4x2ZgMXsow,1660
|
271
|
+
janito-3.15.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
272
|
+
janito-3.15.0.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
|
273
|
+
janito-3.15.0.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
|
274
|
+
janito-3.15.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|