janito 2.1.1__py3-none-any.whl → 2.2.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/__init__.py +1 -1
- janito/cli/chat_mode/shell/commands/__init__.py +0 -2
- janito/cli/chat_mode/shell/input_history.py +2 -2
- janito/cli/chat_mode/toolbar.py +2 -1
- janito/cli/config.py +1 -1
- janito/cli/core/runner.py +148 -144
- janito/provider_registry.py +158 -152
- janito/providers/azure_openai/provider.py +14 -0
- janito/providers/openai/model_info.py +0 -11
- janito/providers/openai/provider.py +1 -1
- janito/providers/registry.py +26 -26
- janito/tools/adapters/local/__init__.py +62 -62
- janito/tools/adapters/local/find_files.py +0 -2
- janito/tools/adapters/local/get_file_outline/core.py +68 -102
- janito/tools/adapters/local/get_file_outline/java_outline.py +40 -0
- janito/tools/adapters/local/open_html_in_browser.py +24 -29
- janito/tools/adapters/local/open_url.py +3 -2
- janito/tools/adapters/local/remove_file.py +5 -5
- janito/version.py +1 -1
- {janito-2.1.1.dist-info → janito-2.2.0.dist-info}/METADATA +21 -2
- {janito-2.1.1.dist-info → janito-2.2.0.dist-info}/RECORD +25 -24
- janito-2.2.0.dist-info/licenses/LICENSE +21 -0
- janito/cli/chat_mode/shell/commands/last.py +0 -137
- {janito-2.1.1.dist-info → janito-2.2.0.dist-info}/WHEEL +0 -0
- {janito-2.1.1.dist-info → janito-2.2.0.dist-info}/entry_points.txt +0 -0
- {janito-2.1.1.dist-info → janito-2.2.0.dist-info}/top_level.txt +0 -0
@@ -2,6 +2,7 @@ from janito.tools.adapters.local.adapter import register_local_tool
|
|
2
2
|
from .python_outline import parse_python_outline
|
3
3
|
from .markdown_outline import parse_markdown_outline
|
4
4
|
from janito.formatting import OutlineFormatter
|
5
|
+
from .java_outline import parse_java_outline
|
5
6
|
import os
|
6
7
|
from janito.tools.tool_base import ToolBase
|
7
8
|
from janito.report_events import ReportAction
|
@@ -34,57 +35,7 @@ class GetFileOutlineTool(ToolBase):
|
|
34
35
|
ext = os.path.splitext(file_path)[1].lower()
|
35
36
|
with open(file_path, "r", encoding="utf-8", errors="replace") as f:
|
36
37
|
lines = f.readlines()
|
37
|
-
|
38
|
-
outline_items = parse_python_outline(lines)
|
39
|
-
outline_type = "python"
|
40
|
-
table = OutlineFormatter.format_outline_table(outline_items)
|
41
|
-
self.report_success(
|
42
|
-
tr(
|
43
|
-
"✅ Outlined {count} {item_word}",
|
44
|
-
count=len(outline_items),
|
45
|
-
item_word=pluralize("item", len(outline_items)),
|
46
|
-
),
|
47
|
-
ReportAction.READ,
|
48
|
-
)
|
49
|
-
return (
|
50
|
-
tr(
|
51
|
-
"Outline: {count} items ({outline_type})\n",
|
52
|
-
count=len(outline_items),
|
53
|
-
outline_type=outline_type,
|
54
|
-
)
|
55
|
-
+ table
|
56
|
-
)
|
57
|
-
elif ext == ".md":
|
58
|
-
outline_items = parse_markdown_outline(lines)
|
59
|
-
outline_type = "markdown"
|
60
|
-
table = OutlineFormatter.format_markdown_outline_table(outline_items)
|
61
|
-
self.report_success(
|
62
|
-
tr(
|
63
|
-
"✅ Outlined {count} {item_word}",
|
64
|
-
count=len(outline_items),
|
65
|
-
item_word=pluralize("item", len(outline_items)),
|
66
|
-
),
|
67
|
-
ReportAction.READ,
|
68
|
-
)
|
69
|
-
return (
|
70
|
-
tr(
|
71
|
-
"Outline: {count} items ({outline_type})\n",
|
72
|
-
count=len(outline_items),
|
73
|
-
outline_type=outline_type,
|
74
|
-
)
|
75
|
-
+ table
|
76
|
-
)
|
77
|
-
else:
|
78
|
-
outline_type = "default"
|
79
|
-
self.report_success(
|
80
|
-
tr("✅ Outlined {count} items", count=len(lines)),
|
81
|
-
ReportAction.READ,
|
82
|
-
)
|
83
|
-
return tr(
|
84
|
-
"Outline: {count} lines ({outline_type})\nFile has {count} lines.",
|
85
|
-
count=len(lines),
|
86
|
-
outline_type=outline_type,
|
87
|
-
)
|
38
|
+
return self._outline_by_extension(ext, lines)
|
88
39
|
except Exception as e:
|
89
40
|
self.report_error(
|
90
41
|
tr("❌ Error reading file: {error}", error=e),
|
@@ -92,60 +43,75 @@ class GetFileOutlineTool(ToolBase):
|
|
92
43
|
)
|
93
44
|
return tr("Error reading file: {error}", error=e)
|
94
45
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
),
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
+ table
|
114
|
-
)
|
115
|
-
elif ext == ".md":
|
116
|
-
outline_items = parse_markdown_outline(lines)
|
117
|
-
outline_type = "markdown"
|
118
|
-
table = OutlineFormatter.format_markdown_outline_table(outline_items)
|
119
|
-
self.report_success(
|
120
|
-
tr(
|
121
|
-
"✅ Outlined {count} {item_word}",
|
122
|
-
count=len(outline_items),
|
123
|
-
item_word=pluralize("item", len(outline_items)),
|
124
|
-
),
|
125
|
-
ReportAction.READ,
|
126
|
-
)
|
127
|
-
return (
|
128
|
-
tr(
|
129
|
-
"Outline: {count} items ({outline_type})\n",
|
130
|
-
count=len(outline_items),
|
131
|
-
outline_type=outline_type,
|
132
|
-
)
|
133
|
-
+ table
|
46
|
+
def _outline_by_extension(self, ext, lines):
|
47
|
+
if ext == ".py":
|
48
|
+
outline_items = parse_python_outline(lines)
|
49
|
+
outline_type = "python"
|
50
|
+
table = OutlineFormatter.format_outline_table(outline_items)
|
51
|
+
self.report_success(
|
52
|
+
tr(
|
53
|
+
"✅ Outlined {count} {item_word}",
|
54
|
+
count=len(outline_items),
|
55
|
+
item_word=pluralize("item", len(outline_items)),
|
56
|
+
),
|
57
|
+
ReportAction.READ,
|
58
|
+
)
|
59
|
+
return (
|
60
|
+
tr(
|
61
|
+
"Outline: {count} items ({outline_type})\n",
|
62
|
+
count=len(outline_items),
|
63
|
+
outline_type=outline_type,
|
134
64
|
)
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
65
|
+
+ table
|
66
|
+
)
|
67
|
+
elif ext == ".md":
|
68
|
+
outline_items = parse_markdown_outline(lines)
|
69
|
+
outline_type = "markdown"
|
70
|
+
table = OutlineFormatter.format_markdown_outline_table(outline_items)
|
71
|
+
self.report_success(
|
72
|
+
tr(
|
73
|
+
"✅ Outlined {count} {item_word}",
|
74
|
+
count=len(outline_items),
|
75
|
+
item_word=pluralize("item", len(outline_items)),
|
76
|
+
),
|
77
|
+
ReportAction.READ,
|
78
|
+
)
|
79
|
+
return (
|
80
|
+
tr(
|
81
|
+
"Outline: {count} items ({outline_type})\n",
|
82
|
+
count=len(outline_items),
|
83
|
+
outline_type=outline_type,
|
140
84
|
)
|
141
|
-
|
142
|
-
|
143
|
-
|
85
|
+
+ table
|
86
|
+
)
|
87
|
+
elif ext == ".java":
|
88
|
+
outline_items = parse_java_outline(lines)
|
89
|
+
outline_type = "java"
|
90
|
+
table = OutlineFormatter.format_outline_table(outline_items)
|
91
|
+
self.report_success(
|
92
|
+
tr(
|
93
|
+
"✅ Outlined {count} {item_word}",
|
94
|
+
count=len(outline_items),
|
95
|
+
item_word=pluralize("item", len(outline_items)),
|
96
|
+
),
|
97
|
+
ReportAction.READ,
|
98
|
+
)
|
99
|
+
return (
|
100
|
+
tr(
|
101
|
+
"Outline: {count} items ({outline_type})\n",
|
102
|
+
count=len(outline_items),
|
144
103
|
outline_type=outline_type,
|
145
104
|
)
|
146
|
-
|
147
|
-
|
148
|
-
|
105
|
+
+ table
|
106
|
+
)
|
107
|
+
else:
|
108
|
+
outline_type = "default"
|
109
|
+
self.report_success(
|
110
|
+
tr("✅ Outlined {count} items", count=len(lines)),
|
149
111
|
ReportAction.READ,
|
150
112
|
)
|
151
|
-
return tr(
|
113
|
+
return tr(
|
114
|
+
"Outline: {count} lines ({outline_type})\nFile has {count} lines.",
|
115
|
+
count=len(lines),
|
116
|
+
outline_type=outline_type,
|
117
|
+
)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import re
|
2
|
+
from typing import List, Dict
|
3
|
+
|
4
|
+
def parse_java_outline(lines: List[str]) -> List[Dict]:
|
5
|
+
"""
|
6
|
+
Parses Java source code lines and extracts classes and methods with their signatures.
|
7
|
+
Returns a list of outline items: {type, name, return_type, parameters, generics, line}
|
8
|
+
"""
|
9
|
+
outline = []
|
10
|
+
class_pattern = re.compile(r"\bclass\s+(\w+)(\s*<[^>]+>)?")
|
11
|
+
# Match methods with or without visibility modifiers (including package-private)
|
12
|
+
method_pattern = re.compile(r"^(?:\s*(public|protected|private)\s+)?(?:static\s+)?([\w<>\[\]]+)\s+(\w+)\s*\(([^)]*)\)")
|
13
|
+
current_class = None
|
14
|
+
for idx, line in enumerate(lines, 1):
|
15
|
+
class_match = class_pattern.search(line)
|
16
|
+
if class_match:
|
17
|
+
class_name = class_match.group(1)
|
18
|
+
generics = class_match.group(2) or ""
|
19
|
+
outline.append({
|
20
|
+
"type": "class",
|
21
|
+
"name": class_name,
|
22
|
+
"generics": generics.strip("<>") if generics else None,
|
23
|
+
"line": idx
|
24
|
+
})
|
25
|
+
current_class = class_name
|
26
|
+
else:
|
27
|
+
method_match = method_pattern.search(line)
|
28
|
+
if method_match:
|
29
|
+
return_type = method_match.group(2)
|
30
|
+
method_name = method_match.group(3)
|
31
|
+
params = method_match.group(4)
|
32
|
+
outline.append({
|
33
|
+
"type": "method",
|
34
|
+
"class": current_class,
|
35
|
+
"name": method_name,
|
36
|
+
"return_type": return_type,
|
37
|
+
"parameters": params.strip(),
|
38
|
+
"line": idx
|
39
|
+
})
|
40
|
+
return outline
|
@@ -1,43 +1,38 @@
|
|
1
|
-
|
1
|
+
import os
|
2
|
+
import webbrowser
|
2
3
|
from janito.tools.adapters.local.adapter import register_local_tool
|
4
|
+
from janito.tools.tool_base import ToolBase
|
3
5
|
from janito.report_events import ReportAction
|
4
|
-
import
|
5
|
-
import os
|
6
|
+
from janito.i18n import tr
|
6
7
|
|
7
8
|
@register_local_tool
|
8
9
|
class OpenHtmlInBrowserTool(ToolBase):
|
9
10
|
"""
|
10
|
-
|
11
|
+
Open the supplied HTML file in the default web browser.
|
11
12
|
|
12
13
|
Args:
|
13
|
-
file_path (str):
|
14
|
-
|
14
|
+
file_path (str): Path to the HTML file to open.
|
15
15
|
Returns:
|
16
|
-
str: Status message indicating the result.
|
17
|
-
- "✅ Successfully opened the file in the default browser."
|
18
|
-
- "⚠️ Error: The specified file does not exist."
|
19
|
-
- "⚠️ Error: The specified file is not an HTML file."
|
16
|
+
str: Status message indicating the result.
|
20
17
|
"""
|
21
|
-
|
22
18
|
tool_name = "open_html_in_browser"
|
23
19
|
|
24
20
|
def run(self, file_path: str) -> str:
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
21
|
+
if not file_path.strip():
|
22
|
+
self.report_warning(tr("ℹ️ Empty file path provided."))
|
23
|
+
return tr("Warning: Empty file path provided. Operation skipped.")
|
24
|
+
if not os.path.isfile(file_path):
|
25
|
+
self.report_error(tr("❗ File does not exist: {file_path}", file_path=file_path))
|
26
|
+
return tr("Warning: File does not exist: {file_path}", file_path=file_path)
|
27
|
+
if not file_path.lower().endswith(('.html', '.htm')):
|
28
|
+
self.report_warning(tr("⚠️ Not an HTML file: {file_path}", file_path=file_path))
|
29
|
+
return tr("Warning: Not an HTML file: {file_path}", file_path=file_path)
|
30
|
+
url = 'file://' + os.path.abspath(file_path)
|
31
|
+
self.report_action(tr("📖 Opening HTML file in browser: {file_path}", file_path=file_path), ReportAction.READ)
|
37
32
|
try:
|
38
|
-
webbrowser.open(
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
33
|
+
webbrowser.open(url)
|
34
|
+
except Exception as err:
|
35
|
+
self.report_error(tr("❗ Error opening HTML file: {file_path}: {err}", file_path=file_path, err=str(err)))
|
36
|
+
return tr("Warning: Error opening HTML file: {file_path}: {err}", file_path=file_path, err=str(err))
|
37
|
+
self.report_success(tr("✅ HTML file opened in browser: {file_path}", file_path=file_path))
|
38
|
+
return tr("HTML file opened in browser: {file_path}", file_path=file_path)
|
@@ -8,9 +8,10 @@ from janito.i18n import tr
|
|
8
8
|
@register_local_tool
|
9
9
|
class OpenUrlTool(ToolBase):
|
10
10
|
"""
|
11
|
-
Open the supplied URL in the default web browser.
|
11
|
+
Open the supplied URL or local file in the default web browser.
|
12
|
+
|
12
13
|
Args:
|
13
|
-
url (str): The URL to open.
|
14
|
+
url (str): The URL or local file path (as a file:// URL) to open. Supports both web URLs (http, https) and local files (file://).
|
14
15
|
Returns:
|
15
16
|
str: Status message indicating the result.
|
16
17
|
"""
|
@@ -32,20 +32,20 @@ class RemoveFileTool(ToolBase):
|
|
32
32
|
# Report initial info about what is going to be removed
|
33
33
|
self.report_action(
|
34
34
|
tr("🗑️ Remove file '{disp_path}' ...", disp_path=disp_path),
|
35
|
-
ReportAction.
|
35
|
+
ReportAction.DELETE,
|
36
36
|
)
|
37
37
|
if not os.path.exists(path):
|
38
|
-
self.report_error(tr("❌ File does not exist."), ReportAction.
|
38
|
+
self.report_error(tr("❌ File does not exist."), ReportAction.DELETE)
|
39
39
|
return tr("❌ File does not exist.")
|
40
40
|
if not os.path.isfile(path):
|
41
|
-
self.report_error(tr("❌ Path is not a file."), ReportAction.
|
41
|
+
self.report_error(tr("❌ Path is not a file."), ReportAction.DELETE)
|
42
42
|
return tr("❌ Path is not a file.")
|
43
43
|
try:
|
44
44
|
if backup:
|
45
45
|
backup_path = path + ".bak"
|
46
46
|
shutil.copy2(path, backup_path)
|
47
47
|
os.remove(path)
|
48
|
-
self.report_success(tr("✅ File removed"), ReportAction.
|
48
|
+
self.report_success(tr("✅ File removed"), ReportAction.DELETE)
|
49
49
|
msg = tr(
|
50
50
|
"✅ Successfully removed the file at '{disp_path}'.",
|
51
51
|
disp_path=disp_path,
|
@@ -58,6 +58,6 @@ class RemoveFileTool(ToolBase):
|
|
58
58
|
return msg
|
59
59
|
except Exception as e:
|
60
60
|
self.report_error(
|
61
|
-
tr("❌ Error removing file: {error}", error=e), ReportAction.
|
61
|
+
tr("❌ Error removing file: {error}", error=e), ReportAction.DELETE
|
62
62
|
)
|
63
63
|
return tr("❌ Error removing file: {error}", error=e)
|
janito/version.py
CHANGED
@@ -1,11 +1,30 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.2.0
|
4
4
|
Summary: A new Python package called janito.
|
5
|
-
Author-email:
|
5
|
+
Author-email: João Pinto <lamego.pinto@gmail.com>
|
6
6
|
Project-URL: Homepage, https://github.com/janito-dev/janito
|
7
7
|
Requires-Python: >=3.7
|
8
8
|
Description-Content-Type: text/markdown
|
9
|
+
License-File: LICENSE
|
10
|
+
Requires-Dist: attrs==25.3.0
|
11
|
+
Requires-Dist: rich==14.0.0
|
12
|
+
Requires-Dist: pathspec==0.12.1
|
13
|
+
Requires-Dist: setuptools>=61.0
|
14
|
+
Requires-Dist: pyyaml>=6.0
|
15
|
+
Requires-Dist: jinja2>=3.0.0
|
16
|
+
Requires-Dist: prompt_toolkit>=3.0.51
|
17
|
+
Requires-Dist: lxml>=5.4.0
|
18
|
+
Requires-Dist: requests>=2.32.4
|
19
|
+
Requires-Dist: bs4>=0.0.2
|
20
|
+
Provides-Extra: dev
|
21
|
+
Requires-Dist: pytest; extra == "dev"
|
22
|
+
Requires-Dist: pre-commit; extra == "dev"
|
23
|
+
Requires-Dist: ruff==0.11.9; extra == "dev"
|
24
|
+
Requires-Dist: detect-secrets==1.4.0; extra == "dev"
|
25
|
+
Requires-Dist: codespell==2.4.1; extra == "dev"
|
26
|
+
Requires-Dist: black; extra == "dev"
|
27
|
+
Dynamic: license-file
|
9
28
|
|
10
29
|
# Janito
|
11
30
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
janito/__init__.py,sha256=
|
1
|
+
janito/__init__.py,sha256=qQhVl9yA_ONcd5dtk2RR9dJK3vbjvQXZSOu783eI6AY,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
|
@@ -13,15 +13,15 @@ janito/perf_singleton.py,sha256=g1h0Sdf4ydzegeEpJlMhQt4H0GQZ2hryXrdYOTL-b30,113
|
|
13
13
|
janito/performance_collector.py,sha256=RYu4av16Trj3RljJZ8-2Gbn1KlGdJUosrcVFYtwviNI,6285
|
14
14
|
janito/platform_discovery.py,sha256=JN3kC7hkxdvuj-AyrJTlbbDJjtNHke3fdlZDqGi_uz0,4621
|
15
15
|
janito/provider_config.py,sha256=dzYvxWg3Smjt9Jbkw0CNdXmBMwSTgoFTOAajdPL2w5w,3048
|
16
|
-
janito/provider_registry.py,sha256=
|
16
|
+
janito/provider_registry.py,sha256=wq_HFN0UGMC88IXIH_jbsM7DPsryCIYKlrtbxcOTnjI,6558
|
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=oziPMzlDXUmNwuhEbuBxrideguRRqIU6Vp0g75Q5nKI,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=wMxlJhHl8EyqrVZ9xi8Hb302fvbz0nLf5mcORRxTFlw,1044
|
25
25
|
janito/cli/console.py,sha256=gJolqzWL7jEPLxeuH-CwBDRFpXt976KdZOEAB2tdBDs,64
|
26
26
|
janito/cli/main.py,sha256=s5odou0txf8pzTf1ADk2yV7T5m8B6cejJ81e7iu776U,312
|
27
27
|
janito/cli/main_cli.py,sha256=oekJEa4TqhebIrSjT8pAAiGeQPY1qLmlrNWHE4J8D0A,10811
|
@@ -35,10 +35,10 @@ janito/cli/chat_mode/bindings.py,sha256=hj6KXw81-Dt80lu4MR-l5h6Olui29E20fEmiktw_
|
|
35
35
|
janito/cli/chat_mode/chat_entry.py,sha256=Rdaq7-3OHtro2ncUOPHXZOLpOoKPRJnoz7Jqr8_fuDQ,604
|
36
36
|
janito/cli/chat_mode/prompt_style.py,sha256=-viZYJgjGID6kR9toz6HtzIkIxGOCG28xNqiiD2MwX0,640
|
37
37
|
janito/cli/chat_mode/session.py,sha256=C8016U66s_cQKw6ueNlhOeMAkLVcGOO6GkwCvzxyvVg,11528
|
38
|
-
janito/cli/chat_mode/toolbar.py,sha256=
|
38
|
+
janito/cli/chat_mode/toolbar.py,sha256=6XMbe7DGbEE6pF_9PiZbg7deAK54TXbv2vlBXNzS43Y,3642
|
39
39
|
janito/cli/chat_mode/shell/autocomplete.py,sha256=lE68MaVaodbA2VfUM0_YLqQVLBJAE_BJsd5cMtwuD-g,793
|
40
|
-
janito/cli/chat_mode/shell/input_history.py,sha256=
|
41
|
-
janito/cli/chat_mode/shell/commands/__init__.py,sha256=
|
40
|
+
janito/cli/chat_mode/shell/input_history.py,sha256=mdcu8XNPp1ewVQMTEmqoAdgj1Lsig5cKkUfvFVxShYo,2537
|
41
|
+
janito/cli/chat_mode/shell/commands/__init__.py,sha256=C4XsKVP3PNvu1Ln9r_brtZfZZPzffFmR2n3ktHbLV3I,1955
|
42
42
|
janito/cli/chat_mode/shell/commands/base.py,sha256=I6-SVOcRd7q4PpoutLdrbhbqeUpJic2oyPhOSMgMihA,288
|
43
43
|
janito/cli/chat_mode/shell/commands/clear.py,sha256=wYEHGYcAohUoCJlbEhiXKfDbJvuzAVK4e9uirskIllw,422
|
44
44
|
janito/cli/chat_mode/shell/commands/conversation_restart.py,sha256=2YH_BkU0200liuZAKO6YZULrzB0i15wWWahuA_QODgw,2905
|
@@ -46,7 +46,6 @@ janito/cli/chat_mode/shell/commands/edit.py,sha256=OU3BmJEgslTmazCYo23XCIT99hhzs
|
|
46
46
|
janito/cli/chat_mode/shell/commands/help.py,sha256=Oa1oJ-Ea9uR6b57gwv7dVKKNRTFHyupahhOVh-P4rk8,633
|
47
47
|
janito/cli/chat_mode/shell/commands/history_view.py,sha256=9dyxYpDHjT77LEIikjBQA03Ep3P2AmKXUwUnVsG0OQc,3584
|
48
48
|
janito/cli/chat_mode/shell/commands/lang.py,sha256=uIelDs3gPYDZ9X9gw7iDMmiwefT7TiBo32420pq2tW8,837
|
49
|
-
janito/cli/chat_mode/shell/commands/last.py,sha256=UU7VIH7NCO-Vbm8Z5vIYm8PyizKKBAY6VJok_SZXxgU,3904
|
50
49
|
janito/cli/chat_mode/shell/commands/livelogs.py,sha256=uJI14qyubXEz8m0Cajd-vURPYxC__7p_CNCq6PVOHN0,2142
|
51
50
|
janito/cli/chat_mode/shell/commands/multi.py,sha256=HAAk0fAO3n8KFta3I4hT_scOAlz4SxWDyaNBUJBQ4nc,1985
|
52
51
|
janito/cli/chat_mode/shell/commands/prompt.py,sha256=x9S3mOpplpR5aiy5b8LSIsZEEFGenQtPGK6HxYdwx1Y,2448
|
@@ -71,7 +70,7 @@ janito/cli/cli_commands/show_system_prompt.py,sha256=OtcIsmI9au7JE7hxEuJPw118Vaq
|
|
71
70
|
janito/cli/core/__init__.py,sha256=YH95fhgY9yBX8RgqX9dSrEkl4exjV0T4rbmJ6xUpG-Y,196
|
72
71
|
janito/cli/core/event_logger.py,sha256=1X6lR0Ax7AgF8HlPWFoY5Ystuu7Bh4ooTo78vXzeGB0,2008
|
73
72
|
janito/cli/core/getters.py,sha256=IfweIK5uZZz9y-p8lyHHmXaqjWk6BkzY6ImJxxh7ATc,1426
|
74
|
-
janito/cli/core/runner.py,sha256=
|
73
|
+
janito/cli/core/runner.py,sha256=baDS5_fwnabYr87h37pE3g-t4H4_TcsTowkQ_eQs310,5979
|
75
74
|
janito/cli/core/setters.py,sha256=c_JAlaEPpwR514Y7lQHgnZC9X2PpsjWia2fRzKmSFV8,6633
|
76
75
|
janito/cli/core/unsetters.py,sha256=FEw9gCt0vRvoCt0kRSNfVB2tzi_TqppJIx2nHPP59-k,2012
|
77
76
|
janito/cli/single_shot_mode/__init__.py,sha256=Ct99pKe9tINzVW6oedZJfzfZQKWpXz-weSSCn0hrwHY,115
|
@@ -103,11 +102,11 @@ janito/llm/model.py,sha256=42hjcffZDTuzjAJoVhDcDqwIXm6rUmmi5UwTOYopf5w,1131
|
|
103
102
|
janito/llm/provider.py,sha256=lfIJnh06F0kf8--Pg_W7ALhkbIzn7N4iItQ93pntyuM,7978
|
104
103
|
janito/providers/__init__.py,sha256=j11MccCveqDTiZTicJH00eZ3qVDEL1KDbihGZhEvGYg,326
|
105
104
|
janito/providers/provider_static_info.py,sha256=f0g2UbyLdHFBPb45x19t6Lx_FoIXp0mJLboH4Jqn1L0,611
|
106
|
-
janito/providers/registry.py,sha256=
|
105
|
+
janito/providers/registry.py,sha256=u8nWy4JtVM4mibLTnGYNs6QrN64A4dBB-hTCYfLSnWo,704
|
107
106
|
janito/providers/anthropic/model_info.py,sha256=saofXNs73WhlAhm58AcIkSem7C8FMUgHP19BvkoLV5Y,641
|
108
107
|
janito/providers/anthropic/provider.py,sha256=nTMTroXCffU9JIEpMtMlY7a4FZS1J90gr9cAVRwrCJE,2371
|
109
108
|
janito/providers/azure_openai/model_info.py,sha256=v4zHgPDBCZkQUE40i-BseDnYzvjPd8c8NaspIor3l10,396
|
110
|
-
janito/providers/azure_openai/provider.py,sha256=
|
109
|
+
janito/providers/azure_openai/provider.py,sha256=a4EBTr6K417-MrFuw4JhAqjeJziXYB_q-XmfjKLsJYk,3682
|
111
110
|
janito/providers/deepseek/__init__.py,sha256=4sISEpq4bJO29vxFK9cfnO-SRUmKoD7oSdeCvz0hVno,36
|
112
111
|
janito/providers/deepseek/model_info.py,sha256=tAlFRtWiyNF_MKZ1gy5_-VNlvqoIwAinv6bAv9dNFsc,465
|
113
112
|
janito/providers/deepseek/provider.py,sha256=h3xD3uAoE9Kr-IumcQsEK3oNZbkXH-bDfzQK1Uz3nM4,3659
|
@@ -117,8 +116,8 @@ janito/providers/google/provider.py,sha256=O60BJXhjmwfmI-FqHUAAO022H7CUbhVU_Qj-F
|
|
117
116
|
janito/providers/mistralai/model_info.py,sha256=Kh0S_3O76fcPGYW-ywmsF4Hhd8011wLpORPLRu3zdlQ,1026
|
118
117
|
janito/providers/mistralai/provider.py,sha256=hYb4VMJE9PUJjwM2hxKpJwU-TK7xf-Cx_f-0wIbGzc8,2537
|
119
118
|
janito/providers/openai/__init__.py,sha256=f0m16-sIqScjL9Mp4A0CQBZx6H3PTEy0cnE08jeaB5U,38
|
120
|
-
janito/providers/openai/model_info.py,sha256=
|
121
|
-
janito/providers/openai/provider.py,sha256=
|
119
|
+
janito/providers/openai/model_info.py,sha256=cz08O26Ychm-aP3T8guJRqpR96Im9Cwtgl2iMgM7tJs,3384
|
120
|
+
janito/providers/openai/provider.py,sha256=d2MsSuaR8GhE966FKhY8cX2jSFv5EPAVTf36-ZJwC7I,4481
|
122
121
|
janito/providers/openai/schema_generator.py,sha256=hTqeLcPTR8jeKn5DUUpo7b-EZ-V-g1WwXiX7MbHnFzE,2234
|
123
122
|
janito/termweb/app.py,sha256=lOZqNf5TEvijryLXaa2CDx722PqBR_DH32A44V1Lfz0,3305
|
124
123
|
janito/tools/__init__.py,sha256=Xk6i_b2VTfrSGt_iBGAe61uSZGyrztv_WzbGlxQVNrU,566
|
@@ -131,7 +130,7 @@ janito/tools/tool_utils.py,sha256=57nfiq0XKTxzSy7ZqgmR_ItMt0-Ri3sENQzCiLWDR_M,13
|
|
131
130
|
janito/tools/tools_adapter.py,sha256=5UXiL0F1oADFDaV2UQRviMYpylfZPl8AKrGVW0RkdAw,8410
|
132
131
|
janito/tools/tools_schema.py,sha256=rGrKrmpPNR07VXHAJ_haGBRRO-YGLOF51BlYRep9AAQ,4415
|
133
132
|
janito/tools/adapters/__init__.py,sha256=XKixOKtUJs1R-rGwGDXSLVLg5-Kp090gvWbsseWT4LI,92
|
134
|
-
janito/tools/adapters/local/__init__.py,sha256=
|
133
|
+
janito/tools/adapters/local/__init__.py,sha256=WPTSOMrZpRg7ioNqCp3fYmnMaF3HnzymGzVpvH0Mp5w,1941
|
135
134
|
janito/tools/adapters/local/adapter.py,sha256=6W-0HgCoKBJcefmMuXhfS114mDbg7G8Oygm8PFTGsCg,3565
|
136
135
|
janito/tools/adapters/local/ask_user.py,sha256=GiGnID--Wd7uvF4I9JyQn4m4PzdwSACfo5kH7O9rFuo,3431
|
137
136
|
janito/tools/adapters/local/copy_file.py,sha256=wNr6mQBxYxGMGZFJmDnWXm5ogJ8iskpA6izBJH4cQvk,3507
|
@@ -139,21 +138,22 @@ janito/tools/adapters/local/create_directory.py,sha256=4PpSKETzqdUPmSk5vX2ikatHc
|
|
139
138
|
janito/tools/adapters/local/create_file.py,sha256=a-Wrx4sN0YAxiTKow2EfFvQHLO3hyfS2kV2Zq1aG4fs,3463
|
140
139
|
janito/tools/adapters/local/delete_text_in_file.py,sha256=ZPCBMDPHlxi5eUuILyAJQ1TzRPX_USvjwAfQBJ9CfNM,5417
|
141
140
|
janito/tools/adapters/local/fetch_url.py,sha256=b5eRFRTG2L5rVIQAGXrPNm4j0kSUszhuG9pRVwnl_L0,3806
|
142
|
-
janito/tools/adapters/local/find_files.py,sha256=
|
141
|
+
janito/tools/adapters/local/find_files.py,sha256=P-besMFSh_3C86Vcqe1WD42kAmlewwePsIYghCv8vHA,5964
|
143
142
|
janito/tools/adapters/local/move_file.py,sha256=_Pn34fYbRq7Ax2kSv0LeTHKRn0LnNScxaM7jA_QTjR8,5213
|
144
|
-
janito/tools/adapters/local/open_html_in_browser.py,sha256=
|
145
|
-
janito/tools/adapters/local/open_url.py,sha256=
|
143
|
+
janito/tools/adapters/local/open_html_in_browser.py,sha256=ankH5hFjhZ7IUym2qUgmwtOSdhvnBSj9SLwirIJNCQM,1925
|
144
|
+
janito/tools/adapters/local/open_url.py,sha256=40qPXTyq2SINHQgEnqfCEfBnGAQOJB4uZlQoe-R2sNU,1339
|
146
145
|
janito/tools/adapters/local/python_code_run.py,sha256=MCZqd8L3xJ4rsi4QmGytNrfRvv0FCqrhivAn5lQgm9k,6650
|
147
146
|
janito/tools/adapters/local/python_command_run.py,sha256=2bP9YnBP_-w6VQtmC7ROonsgDo2dq0_iVOFB2JEdCJs,6590
|
148
147
|
janito/tools/adapters/local/python_file_run.py,sha256=1xaaMsHrobJ3z0T8bIS469zIKqwdNpFlnV8UorO8LTQ,6465
|
149
148
|
janito/tools/adapters/local/remove_directory.py,sha256=A0qriZkcf85t3bwX52G9O6PYQFdUxWqVqbwRpjCzp1Q,2628
|
150
|
-
janito/tools/adapters/local/remove_file.py,sha256=
|
149
|
+
janito/tools/adapters/local/remove_file.py,sha256=ThC1yMv0u6DHBDjxNmOf-Txp3nPZfo-Uh2K1rgENGlI,2479
|
151
150
|
janito/tools/adapters/local/replace_text_in_file.py,sha256=V4v3Z_BwxdwBb_zuIUnDQBrcNoCORFdaih4DFsx1NDU,11108
|
152
151
|
janito/tools/adapters/local/run_bash_command.py,sha256=mfYeZMlvEIdPVQaeGeeMc7gBMQ2k0GbBGFHaFP_l3BA,7591
|
153
152
|
janito/tools/adapters/local/run_powershell_command.py,sha256=Gaz--9vkKfST09fiMNuWhdZvD2-wd-GDqhxVudec8IM,9229
|
154
153
|
janito/tools/adapters/local/view_file.py,sha256=MzGUjnOM-eMBANisAkNSvANn2UpA-GDqlE96KuCOkC4,7134
|
155
154
|
janito/tools/adapters/local/get_file_outline/__init__.py,sha256=OKV_BHnoD9h-vkcVoW6AHmsuDjjauHPCKNK0nVFl4sU,37
|
156
|
-
janito/tools/adapters/local/get_file_outline/core.py,sha256=
|
155
|
+
janito/tools/adapters/local/get_file_outline/core.py,sha256=Vxmwn60IQA_5Ru9WIjOObYctGDL2djKi7285s_miYDQ,4335
|
156
|
+
janito/tools/adapters/local/get_file_outline/java_outline.py,sha256=5xCX7zMOpTljwNTxKmc4ewTnCykCOC9TDd62gZzP_BU,1685
|
157
157
|
janito/tools/adapters/local/get_file_outline/markdown_outline.py,sha256=bXEBg0D93tEBDNy8t-wh4i7WxsxfpQ2C3dX1_rmtj08,434
|
158
158
|
janito/tools/adapters/local/get_file_outline/python_outline.py,sha256=RAcf9Vxec08lA06drYaNre5HCJ2lTzrRAskZ3rlyE-U,10326
|
159
159
|
janito/tools/adapters/local/get_file_outline/python_outline_v2.py,sha256=OOHKDGbOwxiCtr3i5m5ZAnELvoF12fKdzO2RCDuTsCs,5453
|
@@ -174,8 +174,9 @@ 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.2.0.dist-info/licenses/LICENSE,sha256=GSAKapQH5ZIGWlpQTA7v5YrfECyaxaohUb1vJX-qepw,1090
|
178
|
+
janito-2.2.0.dist-info/METADATA,sha256=vP59WNSn3LLGZKYm6Jxor4M-oTM-tqp4g5m7zv2GUNg,11141
|
179
|
+
janito-2.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
180
|
+
janito-2.2.0.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
|
181
|
+
janito-2.2.0.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
|
182
|
+
janito-2.2.0.dist-info/RECORD,,
|
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) [year] [fullname]
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|