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.
Files changed (33) hide show
  1. janito/__init__.py +1 -0
  2. janito/__main__.py +1 -0
  3. janito/_version.py +1 -0
  4. janito/agent/setup_agent.py +240 -230
  5. janito/agent/templates/profiles/{system_prompt_template_software_developer.txt.j2 → system_prompt_template_plain_software_developer.txt.j2} +39 -39
  6. janito/cli/__init__.py +1 -0
  7. janito/cli/chat_mode/bindings.py +1 -0
  8. janito/cli/chat_mode/chat_entry.py +1 -0
  9. janito/cli/chat_mode/prompt_style.py +1 -0
  10. janito/cli/chat_mode/script_runner.py +1 -0
  11. janito/cli/chat_mode/session.py +282 -282
  12. janito/cli/chat_mode/session_profile_select.py +5 -5
  13. janito/cli/single_shot_mode/handler.py +95 -95
  14. janito/drivers/driver_registry.py +27 -27
  15. janito/drivers/openai/driver.py +435 -435
  16. janito/provider_registry.py +178 -178
  17. janito/providers/__init__.py +1 -0
  18. janito/providers/anthropic/model_info.py +41 -41
  19. janito/providers/anthropic/provider.py +80 -80
  20. janito/providers/moonshotai/__init__.py +1 -0
  21. janito/providers/moonshotai/model_info.py +15 -0
  22. janito/providers/moonshotai/provider.py +82 -0
  23. janito/providers/openai/model_info.py +1 -0
  24. janito/providers/provider_static_info.py +21 -18
  25. janito/tools/adapters/local/__init__.py +66 -66
  26. janito/tools/adapters/local/move_file.py +3 -3
  27. janito/tools/adapters/local/read_files.py +40 -40
  28. {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/METADATA +419 -412
  29. {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/RECORD +33 -30
  30. {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/WHEEL +0 -0
  31. {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/entry_points.txt +0 -0
  32. {janito-2.6.0.dist-info → janito-2.7.0.dist-info}/licenses/LICENSE +0 -0
  33. {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