janito 2.6.0__py3-none-any.whl → 2.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- janito/__init__.py +1 -0
- janito/__main__.py +1 -0
- janito/_version.py +1 -0
- janito/agent/setup_agent.py +240 -230
- janito/agent/templates/profiles/{system_prompt_template_software_developer.txt.j2 → system_prompt_template_plain_software_developer.txt.j2} +39 -39
- janito/cli/__init__.py +1 -0
- janito/cli/chat_mode/bindings.py +1 -0
- janito/cli/chat_mode/chat_entry.py +1 -0
- janito/cli/chat_mode/prompt_style.py +1 -0
- janito/cli/chat_mode/script_runner.py +1 -0
- janito/cli/chat_mode/session.py +282 -282
- janito/cli/chat_mode/session_profile_select.py +5 -5
- janito/cli/single_shot_mode/handler.py +95 -95
- janito/drivers/driver_registry.py +27 -27
- janito/drivers/openai/driver.py +435 -435
- janito/provider_registry.py +178 -178
- janito/providers/__init__.py +1 -0
- janito/providers/anthropic/model_info.py +41 -41
- janito/providers/anthropic/provider.py +80 -80
- janito/providers/moonshotai/__init__.py +1 -0
- janito/providers/moonshotai/model_info.py +15 -0
- janito/providers/moonshotai/provider.py +82 -0
- janito/providers/openai/model_info.py +1 -0
- janito/providers/provider_static_info.py +21 -18
- janito/tools/adapters/local/__init__.py +66 -66
- janito/tools/adapters/local/move_file.py +3 -3
- janito/tools/adapters/local/read_files.py +40 -40
- {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/METADATA +419 -412
- {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/RECORD +33 -30
- {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/WHEEL +0 -0
- {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/entry_points.txt +0 -0
- {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/licenses/LICENSE +0 -0
- {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/top_level.txt +0 -0
@@ -1,95 +1,95 @@
|
|
1
|
-
"""
|
2
|
-
PromptHandler: Handles prompt submission and response formatting for janito CLI (one-shot prompt execution).
|
3
|
-
"""
|
4
|
-
|
5
|
-
from __future__ import annotations
|
6
|
-
|
7
|
-
from janito.cli.prompt_setup import setup_agent_and_prompt_handler
|
8
|
-
import janito.tools # Ensure all tools are registered
|
9
|
-
from janito.cli.console import shared_console
|
10
|
-
import time
|
11
|
-
|
12
|
-
|
13
|
-
class PromptHandler:
|
14
|
-
def __init__(self, args, provider_instance, llm_driver_config, role=None, allowed_permissions=None):
|
15
|
-
self.args = args
|
16
|
-
self.provider_instance = provider_instance
|
17
|
-
self.llm_driver_config = llm_driver_config
|
18
|
-
self.role = role
|
19
|
-
# Instantiate agent together with prompt handler using the shared helper
|
20
|
-
self.agent, self.generic_handler = setup_agent_and_prompt_handler(
|
21
|
-
args=args,
|
22
|
-
provider_instance=provider_instance,
|
23
|
-
llm_driver_config=llm_driver_config,
|
24
|
-
role=role,
|
25
|
-
verbose_tools=getattr(args, "verbose_tools", False),
|
26
|
-
verbose_agent=getattr(args, "verbose_agent", False),
|
27
|
-
|
28
|
-
allowed_permissions=allowed_permissions,
|
29
|
-
profile=getattr(args, "profile", None),
|
30
|
-
)
|
31
|
-
|
32
|
-
def handle(self) -> None:
|
33
|
-
import traceback
|
34
|
-
|
35
|
-
user_prompt = " ".join(getattr(self.args, "user_prompt", [])).strip()
|
36
|
-
# UTF-8 sanitize user_prompt
|
37
|
-
sanitized = user_prompt
|
38
|
-
try:
|
39
|
-
sanitized.encode("utf-8")
|
40
|
-
except UnicodeEncodeError:
|
41
|
-
sanitized = sanitized.encode("utf-8", errors="replace").decode("utf-8")
|
42
|
-
shared_console.print(
|
43
|
-
"[yellow]Warning: Some characters in your input were not valid UTF-8 and have been replaced.[/yellow]"
|
44
|
-
)
|
45
|
-
import time
|
46
|
-
try:
|
47
|
-
start_time = time.time()
|
48
|
-
self.generic_handler.handle_prompt(
|
49
|
-
sanitized,
|
50
|
-
args=self.args,
|
51
|
-
print_header=True,
|
52
|
-
raw=getattr(self.args, "raw", False),
|
53
|
-
)
|
54
|
-
end_time = time.time()
|
55
|
-
elapsed = end_time - start_time
|
56
|
-
self._post_prompt_actions(elapsed=elapsed)
|
57
|
-
if hasattr(self.args, "verbose_agent") and self.args.verbose_agent:
|
58
|
-
print("[debug] handle_prompt() completed without exception.")
|
59
|
-
except Exception as e:
|
60
|
-
print(
|
61
|
-
f"[error] Exception occurred in handle_prompt: {type(e).__name__}: {e}"
|
62
|
-
)
|
63
|
-
traceback.print_exc()
|
64
|
-
|
65
|
-
def _post_prompt_actions(self, elapsed=None):
|
66
|
-
# Align with chat mode: only print token usage summary
|
67
|
-
import sys
|
68
|
-
from janito.formatting_token import print_token_message_summary
|
69
|
-
from janito.perf_singleton import performance_collector
|
70
|
-
usage = performance_collector.get_last_request_usage()
|
71
|
-
# If running in stdin mode, do not print token usage
|
72
|
-
if sys.stdin.isatty():
|
73
|
-
print_token_message_summary(shared_console, msg_count=1, usage=usage, elapsed=elapsed)
|
74
|
-
self._cleanup_driver_and_console()
|
75
|
-
|
76
|
-
|
77
|
-
def _cleanup_driver_and_console(self):
|
78
|
-
if hasattr(self.agent, "join_driver"):
|
79
|
-
if (
|
80
|
-
hasattr(self.agent, "input_queue")
|
81
|
-
and self.agent.input_queue is not None
|
82
|
-
):
|
83
|
-
self.agent.input_queue.put(None)
|
84
|
-
self.agent.join_driver()
|
85
|
-
try:
|
86
|
-
shared_console.file.flush()
|
87
|
-
except Exception:
|
88
|
-
pass
|
89
|
-
try:
|
90
|
-
import sys
|
91
|
-
|
92
|
-
sys.stdout.flush()
|
93
|
-
except Exception:
|
94
|
-
pass
|
95
|
-
# If event logger is active, flush event log
|
1
|
+
"""
|
2
|
+
PromptHandler: Handles prompt submission and response formatting for janito CLI (one-shot prompt execution).
|
3
|
+
"""
|
4
|
+
|
5
|
+
from __future__ import annotations
|
6
|
+
|
7
|
+
from janito.cli.prompt_setup import setup_agent_and_prompt_handler
|
8
|
+
import janito.tools # Ensure all tools are registered
|
9
|
+
from janito.cli.console import shared_console
|
10
|
+
import time
|
11
|
+
|
12
|
+
|
13
|
+
class PromptHandler:
|
14
|
+
def __init__(self, args, provider_instance, llm_driver_config, role=None, allowed_permissions=None):
|
15
|
+
self.args = args
|
16
|
+
self.provider_instance = provider_instance
|
17
|
+
self.llm_driver_config = llm_driver_config
|
18
|
+
self.role = role
|
19
|
+
# Instantiate agent together with prompt handler using the shared helper
|
20
|
+
self.agent, self.generic_handler = setup_agent_and_prompt_handler(
|
21
|
+
args=args,
|
22
|
+
provider_instance=provider_instance,
|
23
|
+
llm_driver_config=llm_driver_config,
|
24
|
+
role=role,
|
25
|
+
verbose_tools=getattr(args, "verbose_tools", False),
|
26
|
+
verbose_agent=getattr(args, "verbose_agent", False),
|
27
|
+
|
28
|
+
allowed_permissions=allowed_permissions,
|
29
|
+
profile=getattr(args, "profile", None),
|
30
|
+
)
|
31
|
+
|
32
|
+
def handle(self) -> None:
|
33
|
+
import traceback
|
34
|
+
|
35
|
+
user_prompt = " ".join(getattr(self.args, "user_prompt", [])).strip()
|
36
|
+
# UTF-8 sanitize user_prompt
|
37
|
+
sanitized = user_prompt
|
38
|
+
try:
|
39
|
+
sanitized.encode("utf-8")
|
40
|
+
except UnicodeEncodeError:
|
41
|
+
sanitized = sanitized.encode("utf-8", errors="replace").decode("utf-8")
|
42
|
+
shared_console.print(
|
43
|
+
"[yellow]Warning: Some characters in your input were not valid UTF-8 and have been replaced.[/yellow]"
|
44
|
+
)
|
45
|
+
import time
|
46
|
+
try:
|
47
|
+
start_time = time.time()
|
48
|
+
self.generic_handler.handle_prompt(
|
49
|
+
sanitized,
|
50
|
+
args=self.args,
|
51
|
+
print_header=True,
|
52
|
+
raw=getattr(self.args, "raw", False),
|
53
|
+
)
|
54
|
+
end_time = time.time()
|
55
|
+
elapsed = end_time - start_time
|
56
|
+
self._post_prompt_actions(elapsed=elapsed)
|
57
|
+
if hasattr(self.args, "verbose_agent") and self.args.verbose_agent:
|
58
|
+
print("[debug] handle_prompt() completed without exception.")
|
59
|
+
except Exception as e:
|
60
|
+
print(
|
61
|
+
f"[error] Exception occurred in handle_prompt: {type(e).__name__}: {e}"
|
62
|
+
)
|
63
|
+
traceback.print_exc()
|
64
|
+
|
65
|
+
def _post_prompt_actions(self, elapsed=None):
|
66
|
+
# Align with chat mode: only print token usage summary
|
67
|
+
import sys
|
68
|
+
from janito.formatting_token import print_token_message_summary
|
69
|
+
from janito.perf_singleton import performance_collector
|
70
|
+
usage = performance_collector.get_last_request_usage()
|
71
|
+
# If running in stdin mode, do not print token usage
|
72
|
+
if sys.stdin.isatty():
|
73
|
+
print_token_message_summary(shared_console, msg_count=1, usage=usage, elapsed=elapsed)
|
74
|
+
self._cleanup_driver_and_console()
|
75
|
+
|
76
|
+
|
77
|
+
def _cleanup_driver_and_console(self):
|
78
|
+
if hasattr(self.agent, "join_driver"):
|
79
|
+
if (
|
80
|
+
hasattr(self.agent, "input_queue")
|
81
|
+
and self.agent.input_queue is not None
|
82
|
+
):
|
83
|
+
self.agent.input_queue.put(None)
|
84
|
+
self.agent.join_driver()
|
85
|
+
try:
|
86
|
+
shared_console.file.flush()
|
87
|
+
except Exception:
|
88
|
+
pass
|
89
|
+
try:
|
90
|
+
import sys
|
91
|
+
|
92
|
+
sys.stdout.flush()
|
93
|
+
except Exception:
|
94
|
+
pass
|
95
|
+
# If event logger is active, flush event log
|
@@ -1,27 +1,27 @@
|
|
1
|
-
# janito/drivers/driver_registry.py
|
2
|
-
"""
|
3
|
-
DriverRegistry: Maps driver string names to class objects for use by providers.
|
4
|
-
"""
|
5
|
-
|
6
|
-
from typing import Dict, Type
|
7
|
-
|
8
|
-
# --- Import driver classes ---
|
9
|
-
from janito.drivers.azure_openai.driver import AzureOpenAIModelDriver
|
10
|
-
from janito.drivers.openai.driver import OpenAIModelDriver
|
11
|
-
|
12
|
-
_DRIVER_REGISTRY: Dict[str, Type] = {
|
13
|
-
"AzureOpenAIModelDriver": AzureOpenAIModelDriver,
|
14
|
-
"OpenAIModelDriver": OpenAIModelDriver,
|
15
|
-
}
|
16
|
-
|
17
|
-
|
18
|
-
def get_driver_class(name: str):
|
19
|
-
"""Get the driver class by string name."""
|
20
|
-
try:
|
21
|
-
return _DRIVER_REGISTRY[name]
|
22
|
-
except KeyError:
|
23
|
-
raise ValueError(f"No driver found for name: {name}")
|
24
|
-
|
25
|
-
|
26
|
-
def register_driver(name: str, cls: type):
|
27
|
-
_DRIVER_REGISTRY[name] = cls
|
1
|
+
# janito/drivers/driver_registry.py
|
2
|
+
"""
|
3
|
+
DriverRegistry: Maps driver string names to class objects for use by providers.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from typing import Dict, Type
|
7
|
+
|
8
|
+
# --- Import driver classes ---
|
9
|
+
from janito.drivers.azure_openai.driver import AzureOpenAIModelDriver
|
10
|
+
from janito.drivers.openai.driver import OpenAIModelDriver
|
11
|
+
|
12
|
+
_DRIVER_REGISTRY: Dict[str, Type] = {
|
13
|
+
"AzureOpenAIModelDriver": AzureOpenAIModelDriver,
|
14
|
+
"OpenAIModelDriver": OpenAIModelDriver,
|
15
|
+
}
|
16
|
+
|
17
|
+
|
18
|
+
def get_driver_class(name: str):
|
19
|
+
"""Get the driver class by string name."""
|
20
|
+
try:
|
21
|
+
return _DRIVER_REGISTRY[name]
|
22
|
+
except KeyError:
|
23
|
+
raise ValueError(f"No driver found for name: {name}")
|
24
|
+
|
25
|
+
|
26
|
+
def register_driver(name: str, cls: type):
|
27
|
+
_DRIVER_REGISTRY[name] = cls
|