janito 1.9.0__py3-none-any.whl → 1.10.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 (81) hide show
  1. janito/__init__.py +1 -1
  2. janito/agent/api_exceptions.py +4 -0
  3. janito/agent/config.py +1 -1
  4. janito/agent/config_defaults.py +2 -26
  5. janito/agent/conversation.py +163 -122
  6. janito/agent/conversation_api.py +149 -159
  7. janito/agent/{conversation_history.py → llm_conversation_history.py} +18 -1
  8. janito/agent/openai_client.py +38 -23
  9. janito/agent/openai_schema_generator.py +162 -129
  10. janito/agent/platform_discovery.py +134 -77
  11. janito/agent/profile_manager.py +5 -5
  12. janito/agent/rich_message_handler.py +80 -31
  13. janito/agent/templates/profiles/system_prompt_template_base.txt.j2 +5 -4
  14. janito/agent/test_openai_schema_generator.py +93 -0
  15. janito/agent/tool_base.py +7 -2
  16. janito/agent/tool_executor.py +54 -49
  17. janito/agent/tool_registry.py +5 -2
  18. janito/agent/tool_use_tracker.py +26 -5
  19. janito/agent/tools/__init__.py +6 -3
  20. janito/agent/tools/create_directory.py +3 -1
  21. janito/agent/tools/create_file.py +7 -1
  22. janito/agent/tools/fetch_url.py +40 -3
  23. janito/agent/tools/find_files.py +3 -1
  24. janito/agent/tools/get_file_outline/core.py +6 -7
  25. janito/agent/tools/get_file_outline/search_outline.py +3 -1
  26. janito/agent/tools/get_lines.py +7 -2
  27. janito/agent/tools/move_file.py +3 -1
  28. janito/agent/tools/present_choices.py +3 -1
  29. janito/agent/tools/python_command_runner.py +150 -0
  30. janito/agent/tools/python_file_runner.py +148 -0
  31. janito/agent/tools/python_stdin_runner.py +154 -0
  32. janito/agent/tools/remove_directory.py +3 -1
  33. janito/agent/tools/remove_file.py +5 -1
  34. janito/agent/tools/replace_file.py +12 -2
  35. janito/agent/tools/replace_text_in_file.py +4 -2
  36. janito/agent/tools/run_bash_command.py +30 -69
  37. janito/agent/tools/run_powershell_command.py +134 -105
  38. janito/agent/tools/search_text.py +172 -122
  39. janito/agent/tools/validate_file_syntax/core.py +3 -1
  40. janito/agent/tools_utils/action_type.py +7 -0
  41. janito/agent/tools_utils/dir_walk_utils.py +3 -2
  42. janito/agent/tools_utils/formatting.py +47 -21
  43. janito/agent/tools_utils/gitignore_utils.py +66 -40
  44. janito/agent/tools_utils/test_gitignore_utils.py +46 -0
  45. janito/cli/_print_config.py +63 -61
  46. janito/cli/arg_parser.py +13 -12
  47. janito/cli/cli_main.py +137 -147
  48. janito/cli/main.py +152 -174
  49. janito/cli/one_shot.py +40 -26
  50. janito/i18n/__init__.py +1 -1
  51. janito/rich_utils.py +46 -8
  52. janito/shell/commands/__init__.py +2 -4
  53. janito/shell/commands/conversation_restart.py +3 -1
  54. janito/shell/commands/edit.py +3 -0
  55. janito/shell/commands/history_view.py +3 -3
  56. janito/shell/commands/lang.py +3 -0
  57. janito/shell/commands/livelogs.py +5 -3
  58. janito/shell/commands/prompt.py +6 -0
  59. janito/shell/commands/session.py +3 -0
  60. janito/shell/commands/session_control.py +3 -0
  61. janito/shell/commands/termweb_log.py +8 -0
  62. janito/shell/commands/tools.py +3 -0
  63. janito/shell/commands/track.py +36 -0
  64. janito/shell/commands/utility.py +13 -18
  65. janito/shell/commands/verbose.py +3 -4
  66. janito/shell/input_history.py +62 -0
  67. janito/shell/main.py +117 -181
  68. janito/shell/session/manager.py +0 -21
  69. janito/shell/ui/interactive.py +0 -2
  70. janito/termweb/static/editor.css +0 -4
  71. janito/tests/test_rich_utils.py +44 -0
  72. janito/web/app.py +0 -75
  73. {janito-1.9.0.dist-info → janito-1.10.0.dist-info}/METADATA +61 -42
  74. {janito-1.9.0.dist-info → janito-1.10.0.dist-info}/RECORD +78 -71
  75. {janito-1.9.0.dist-info → janito-1.10.0.dist-info}/WHEEL +1 -1
  76. janito/agent/providers.py +0 -77
  77. janito/agent/tools/run_python_command.py +0 -161
  78. janito/shell/commands/sum.py +0 -49
  79. {janito-1.9.0.dist-info → janito-1.10.0.dist-info}/entry_points.txt +0 -0
  80. {janito-1.9.0.dist-info → janito-1.10.0.dist-info}/licenses/LICENSE +0 -0
  81. {janito-1.9.0.dist-info → janito-1.10.0.dist-info}/top_level.txt +0 -0
janito/web/app.py CHANGED
@@ -1,19 +1,13 @@
1
1
  from flask import (
2
2
  Flask,
3
3
  request,
4
- Response,
5
4
  send_from_directory,
6
5
  jsonify,
7
6
  render_template,
8
7
  )
9
- from queue import Queue
10
8
  import json
11
- from janito.agent.queued_message_handler import QueuedMessageHandler
12
9
  from janito.agent.profile_manager import AgentProfileManager
13
10
  import os
14
- import threading
15
- import traceback
16
- import sys
17
11
 
18
12
  from janito.agent.runtime_config import unified_config, runtime_config
19
13
 
@@ -53,13 +47,6 @@ conversation_file = os.path.expanduser("~/.janito/last_conversation_web.json")
53
47
  # Initially no conversation loaded
54
48
  conversation = None
55
49
 
56
-
57
- # Global event queue for streaming
58
- stream_queue = Queue()
59
-
60
- # Create a QueuedMessageHandler with the queue
61
- message_handler = QueuedMessageHandler(stream_queue)
62
-
63
50
  # Instantiate the Agent with config-driven parameters (no tool_handler)
64
51
  agent = profile_manager.agent
65
52
 
@@ -156,65 +143,3 @@ def new_conversation():
156
143
  global conversation
157
144
  conversation = []
158
145
  return jsonify({"status": "ok"})
159
-
160
-
161
- @app.route("/execute_stream", methods=["POST"])
162
- def execute_stream():
163
- data = request.get_json()
164
- user_input = data.get("input", "")
165
-
166
- global conversation
167
- if conversation is None:
168
- # If no conversation loaded, start a new one
169
- conversation = []
170
-
171
- # Always start with the system prompt as the first message
172
- if not conversation or conversation[0]["role"] != "system":
173
- conversation.insert(0, {"role": "system", "content": system_prompt_template})
174
-
175
- # Append the new user message
176
- conversation.append({"role": "user", "content": user_input})
177
-
178
- def run_agent():
179
- try:
180
- response = agent.chat(conversation, message_handler=message_handler)
181
- if response and "content" in response:
182
- conversation.append(
183
- {"role": "assistant", "content": response["content"]}
184
- )
185
- try:
186
- os.makedirs(os.path.dirname(conversation_file), exist_ok=True)
187
- with open(conversation_file, "w", encoding="utf-8") as f:
188
- json.dump(conversation, f, indent=2)
189
- except Exception as e:
190
- print(f"Error saving conversation: {e}")
191
- except Exception as e:
192
- tb = traceback.format_exc()
193
- stream_queue.put({"type": "error", "error": str(e), "traceback": tb})
194
- finally:
195
- stream_queue.put(None)
196
-
197
- threading.Thread(target=run_agent, daemon=True).start()
198
-
199
- def generate():
200
- while True:
201
- content = stream_queue.get()
202
- if content is None:
203
- break
204
- if isinstance(content, tuple) and content[0] == "tool_progress":
205
- message = json.dumps({"type": "tool_progress", "data": content[1]})
206
- else:
207
- message = json.dumps(content)
208
- yield f"data: {message}\n\n"
209
- sys.stdout.flush()
210
-
211
- return Response(
212
- generate(),
213
- mimetype="text/event-stream",
214
- headers={
215
- "Cache-Control": "no-cache",
216
- "X-Accel-Buffering": "no",
217
- "Connection": "keep-alive",
218
- "Transfer-Encoding": "chunked",
219
- },
220
- )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 1.9.0
3
+ Version: 1.10.0
4
4
  Summary: Natural Language Coding Agent,
5
5
  Author-email: João Pinto <joao.pinto@gmail.com>
6
6
  License-Expression: MIT
@@ -30,38 +30,12 @@ Dynamic: license-file
30
30
 
31
31
  # 🚀 Janito: Natural Language Coding Agent
32
32
 
33
- **Current Version: 1.8.1**
34
- See [CHANGELOG.md](./CHANGELOG.md) for details on the latest release.
35
-
36
33
  Janito is an AI-powered assistant for the command line and web that interprets natural language system_prompt_template to edit code, manage files, and analyze projects using patterns and tools designed by experienced software engineers. It prioritizes transparency, interactive clarification, and precise, reviewable changes.
37
34
 
38
35
  For a technical overview, see the [Architecture Guide](docs/reference/architecture.md).
39
36
 
40
- ## 🧪 Experimental Feature: termweb File Viewer
41
-
42
- Janito now includes an experimental lightweight web file viewer for use with the CLI chat shell. This feature allows you to click on file paths in the terminal (when using a Rich-compatible terminal) and instantly preview file contents in your browser—no full IDE required!
43
-
44
- ### How to Use
45
-
46
- - Start the CLI chat shell with the `--termweb` flag:
47
- ```bash
48
- janito --termweb
49
- ```
50
- - To disable the termweb file viewer, use the `--no-termweb` flag.
51
- - By default, the viewer runs at http://localhost:8088 (or the next available port up to 8100).
52
- - To specify a port, use `--termweb-port 8090`.
53
- - File paths in CLI output become clickable links that open the file in your browser.
54
-
55
- **Note:** This feature is experimental. It is intended for quick file previews and review, not for editing or production use. Feedback is welcome!
56
-
57
- ### Why is this useful?
58
- - Enables instant file previews from the CLI without a full IDE.
59
- - Works with all Janito file tools and outputs that display file paths.
60
- - Uses the Rich library’s link markup for clickable terminal links.
61
-
62
- ---
63
-
64
37
  ## 📖 Full Documentation & Overview
38
+
65
39
  - For structured and in-depth guides, visit the [Janito Documentation Site](https://docs.janito.dev).
66
40
  - For a high-level, user-friendly overview, see [janito.dev](https://janito.dev).
67
41
 
@@ -80,6 +54,7 @@ This will display a colorful table with the name, description, and parameters of
80
54
  ## ⚡ Quick Start
81
55
 
82
56
  ## 🖥️ Supported Human Interfaces
57
+
83
58
  Janito supports multiple ways for users to interact with the agent:
84
59
 
85
60
  - **CLI (Command Line Interface):** Run single prompts or commands directly from your terminal (e.g., `janito "Refactor the data processing module"`).
@@ -90,6 +65,7 @@ Janito supports multiple ways for users to interact with the agent:
90
65
  ![Janito Terminal Screenshot](https://github.com/joaompinto/janito/blob/main/docs/imgs/terminal.png?raw=true)
91
66
 
92
67
  ### 🛠️ Common CLI Modifiers
68
+
93
69
  You can alter Janito's behavior in any interface using these flags:
94
70
 
95
71
  - `--system` / `--system-file`: Override or customize the system prompt for the session.
@@ -100,13 +76,20 @@ You can alter Janito's behavior in any interface using these flags:
100
76
 
101
77
  These modifiers can be combined with any interface mode for tailored workflows.
102
78
 
79
+ ---
80
+
81
+ ## 📝 Full CLI Options Reference
82
+
83
+ The full list of CLI options has been moved to its own document for clarity. Please see [docs/CLI_OPTIONS.md](docs/CLI_OPTIONS.md) for a comprehensive, up-to-date reference of all supported command-line flags and their descriptions.
103
84
 
104
85
  Run a one-off prompt:
86
+
105
87
  ```bash
106
88
  janito "Refactor the data processing module to improve readability."
107
89
  ```
108
90
 
109
91
  Or start the interactive chat shell:
92
+
110
93
  ```bash
111
94
  janito
112
95
  ```
@@ -114,6 +97,7 @@ janito
114
97
  While in the chat shell, you can use special commands like `/reload` to reload the system prompt from a file without restarting your session. See the documentation for more shell commands.
115
98
 
116
99
  Launch the web UI:
100
+
117
101
  ```bash
118
102
  janito --web
119
103
  ```
@@ -121,25 +105,23 @@ janito --web
121
105
  ---
122
106
 
123
107
  ## ✨ Key Features
108
+
124
109
  - 📝 **Code Editing via Natural Language:** Modify, create, or delete code files simply by describing the changes.
125
110
  - 📁 **File & Directory Management:** Navigate, create, move, or remove files and folders.
126
111
  - 🧠 **Context-Aware:** Understands your project structure for precise edits.
127
112
  - 💬 **Interactive User Prompts:** Asks for clarification when needed.
128
113
  - 🛠️ **Extensible Tooling:** Built-in tools for file operations, shell commands, directory and file management, Python code execution and validation, text replacement, and more.
129
- - See [janito/agent/tools/README.md](janito/agent/tools/README.md) for the full list of built-in tools and their usage details. For the message handler model, see [docs/MESSAGE_HANDLER_MODEL.md](docs/MESSAGE_HANDLER_MODEL.md).
130
- - 🌐 **Web Interface (In Development):** Simple web UI for streaming responses and tool progress.
114
+ - See [janito/agent/tools/README.md](janito/agent/tools/README.md) for the full list of built-in tools and their usage details. For the message handler model, see [docs/reference/message-handler-model.md](docs/reference/message-handler-model.md).
131
115
 
132
116
  ## 📦 Installation
133
117
 
134
118
  ### Requirements
135
- - Python 3.10+
136
119
 
120
+ - Python 3.10+
137
121
 
138
122
  ### Contributing & Developer Guide
139
123
 
140
- If you want to extend Janito or add new tools, see the [Developer Guide](docs/README_DEV.md) for system_prompt_template, tool registration requirements, and code profile guidelines. For the full list of built-in tools and their usage, see the [Tools Reference](janito/agent/tools/README.md).
141
-
142
-
124
+ If you want to extend Janito or add new tools, see the [Developer Guide](docs/guides/developing.md) for system_prompt_template, tool registration requirements, and code profile guidelines. For the full list of built-in tools and their usage, see the [Tools Reference](janito/agent/tools/README.md).
143
125
 
144
126
  For the full changelog, see [CHANGELOG.md](./CHANGELOG.md).
145
127
 
@@ -149,28 +131,27 @@ For the full changelog, see [CHANGELOG.md](./CHANGELOG.md).
149
131
 
150
132
  See [docs/CONFIGURATION.md](docs/CONFIGURATION.md) for all configuration parameters, CLI flags, and advanced usage details. All CLI and configuration options have been moved there for clarity and maintainability.
151
133
 
152
-
153
134
  ### Obtaining an API Key from OpenRouter
154
135
 
155
136
  To use Janito with OpenRouter, you need an API key:
156
137
 
157
- 1. Visit https://openrouter.ai and sign up for an account.
138
+ 1. Visit https://platform.openai.com and sign up for an account.
158
139
  2. After logging in, go to your account dashboard.
159
140
  3. Navigate to the "API Keys" section.
160
141
  4. Click "Create new key" and copy the generated API key.
161
142
  5. Set your API key in Janito using:
143
+
162
144
  ```bash
163
145
  python -m janito --set-api-key YOUR_OPENROUTER_KEY
164
146
  ```
147
+
165
148
  Or add it to your configuration file as `api_key`.
166
149
 
167
150
  **Keep your API key secure and do not share it publicly.**
168
151
 
169
152
  ### Using Azure OpenAI
170
153
 
171
- For details on using models hosted on Azure OpenAI, see [docs/AZURE_OPENAI.md](docs/AZURE_OPENAI.md).
172
-
173
-
154
+ For details on using models hosted on Azure OpenAI, see [docs/reference/azure-openai.md](docs/reference/azure-openai.md).
174
155
 
175
156
  ---
176
157
 
@@ -179,20 +160,20 @@ For details on using models hosted on Azure OpenAI, see [docs/AZURE_OPENAI.md](d
179
160
  Janito operates using a system prompt template that defines its behavior, communication profile, and capabilities. By default, Janito assumes the role of a "software engineer"—this means its responses and actions are tailored to the expectations and best practices of professional software engineering.
180
161
 
181
162
  - **Role:** You can customize the agent's role (e.g., "data scientist", "DevOps engineer") using the `--role` flag or config. The default is `software engineer`.
182
- - **System Prompt Template:** The system prompt is rendered from a Jinja2 template (see `janito/agent/templates/prompt_prompt_template.j2`). This template governs how the agent interprets system_prompt_template, interacts with files, and communicates with users.
163
+ - **System Prompt Template:** The system prompt is rendered from a Jinja2 template (see `janito/agent/templates/profiles/system_prompt_template_base.txt.j2`). This template governs how the agent interprets system_prompt_template, interacts with files, and communicates with users.
183
164
  - **Customization & Precedence:** Advanced users can override the system prompt with the `--system` flag (raw string), or point to a custom file using `--system-file`. The precedence is: `--system-file` > `--system`/config > default template.
184
165
 
185
166
  The default template ensures the agent:
167
+
186
168
  - Prioritizes safe, reviewable, and minimal changes
187
169
  - Asks for clarification when system_prompt_template are ambiguous
188
170
  - Provides concise plans before taking action
189
171
  - Documents any changes made
190
172
 
191
- For more details or to customize the prompt, see the template file at `janito/agent/templates/prompt_prompt_template.j2` and the architecture overview in [docs/reference/architecture.md](docs/reference/architecture.md).
173
+ For more details or to customize the prompt, see the template file at `janito/agent/templates/profiles/system_prompt_template_base.txt.j2` and the architecture overview in [docs/reference/architecture.md](docs/reference/architecture.md).
192
174
 
193
175
  ---
194
176
 
195
-
196
177
  ## 🥛 Vanilla Mode
197
178
 
198
179
  Janito supports a "vanilla mode" for pure LLM interaction:
@@ -214,6 +195,7 @@ python -m janito --vanilla
214
195
  ```
215
196
 
216
197
  Vanilla mode is ideal for:
198
+
217
199
  - Testing raw model behavior
218
200
  - Comparing LLM output with and without agent guidance
219
201
  - Ensuring no agent-side intervention or context is added
@@ -223,12 +205,14 @@ Vanilla mode is ideal for:
223
205
  ## 👨‍💻 AgentProfileManager: Profile, Role, and Prompt Management
224
206
 
225
207
  Janito now uses a dedicated `AgentProfileManager` class to manage user profiles, roles, interaction profiles, and system prompt selection. This manager:
208
+
226
209
  - Stores the current role (e.g., "software engineer") and interaction profile (e.g., "default", "technical").
227
210
  - Renders the system prompt from the appropriate template based on interaction profile.
228
211
  - Instantiates and manages the low-level LLM Agent, passing the correct prompt.
229
212
  - Provides methods to update the role, interaction profile, and refresh the prompt at runtime.
230
213
 
231
214
  ### Multiple System Prompt Templates
215
+
232
216
  - The system prompt template is now selected based on the interaction profile (e.g., `default` or `technical`).
233
217
  - Templates are located in `janito/agent/templates/` (see `system_prompt_template.j2` and `system_prompt_template_technical.j2`).
234
218
  - You can switch interaction profiles at runtime using the profile manager, enabling different agent behaviors for different user needs.
@@ -240,19 +224,24 @@ See `janito/agent/profile_manager.py` for implementation details.
240
224
  ### Agent Interaction Style
241
225
 
242
226
  You can control the agent's behavior and prompt profile globally or per-project using the `profile` config key. See [Prompt Profiles Guide](docs/guides/prompt_profiles.md) for all available styles and combinations.
227
+
243
228
  - `default`: Concise, general-purpose agent (default)
244
229
  - `technical`: Strict, workflow-oriented for technical/developer use
245
230
 
246
231
  Set globally:
232
+
247
233
  ```bash
248
234
  janito --set-global-config profile=technical
249
235
  ```
236
+
250
237
  Or per-project (in your project root):
238
+
251
239
  ```bash
252
240
  janito --set-local-config profile=technical
253
241
  ```
254
242
 
255
243
  You can also override for a session with the CLI flag:
244
+
256
245
  ```bash
257
246
  janito --profile technical
258
247
  ```
@@ -268,11 +257,13 @@ Janito now supports combinatorial profiles for system prompts, allowing you to c
268
257
  - **Syntax:** Use a hyphen to combine, e.g., `technical-commit_all`.
269
258
 
270
259
  **How it works:**
260
+
271
261
  - The main profile template is loaded first.
272
262
  - Each feature extension template is layered on top, overriding or extending specific blocks in the main template.
273
263
  - Feature templates must use `{% extends parent_template %}` for dynamic inheritance.
274
264
 
275
265
  **Example usage:**
266
+
276
267
  ```bash
277
268
  janito --profile technical-commit_all
278
269
  ```
@@ -281,5 +272,33 @@ This will apply the `technical` profile with the `commit_all` feature enabled in
281
272
 
282
273
  See `janito/render_prompt.py` and `janito/agent/templates/` for implementation details and to create your own feature extensions.
283
274
 
275
+ ---
276
+
277
+ ## 📂 termweb File Viewer (Web File Preview)
278
+
279
+ Janito includes a lightweight web file viewer (termweb) that starts by default when you use the CLI chat shell. This feature allows you to click on file paths in the terminal (when using a Rich-compatible terminal) and instantly preview file contents in your browser—no full IDE required!
280
+
281
+ ### How to Use
282
+
283
+ - Start the CLI chat shell normally:
284
+
285
+ ```bash
286
+ janito
287
+ ```
288
+
289
+ - The termweb file viewer will start automatically by default.
290
+ - To disable the termweb file viewer, use the `--no-termweb` flag.
291
+ - By default, the viewer runs at http://localhost:8088 (or the next available port up to 8100).
292
+ - To specify a port, use `--termweb-port 8090`.
293
+ - File paths in CLI output become clickable links that open the file in your browser.
294
+
295
+ **Note:** The termweb file viewer is intended for quick file previews and review, not for editing or production use. Feedback is welcome!
296
+
297
+ ### Why is this useful?
298
+
299
+ - Enables instant file previews from the CLI without a full IDE.
300
+ - Works with all Janito file tools and outputs that display file paths.
301
+ - Uses the Rich library’s link markup for clickable terminal links.
302
+
284
303
  ---
285
304
  _generated by janito.dev_
@@ -1,65 +1,68 @@
1
- janito/__init__.py,sha256=l2eVHfMNFg4kPmiXtGSDPYsmLE4H8f13ozPPxATkS5s,23
1
+ janito/__init__.py,sha256=0Z1bbkzuusGr4X6p3MaoSYDAyNO2Ru3F4GP4ZJ1kBMg,28
2
2
  janito/__main__.py,sha256=KKIoPBE9xPcb54PRYO2UOt0ti04iAwLeJlg8YY36vew,76
3
- janito/rich_utils.py,sha256=T_DxBFwv4ZYP1qpZn-vzWRB2SzH46j0M6Upqf_bf6Pc,531
3
+ janito/rich_utils.py,sha256=x7OsZdwtAOtUu_HYbrAMga0LElFMPbQL8GZ62vw5Jh8,1825
4
4
  janito/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- janito/agent/config.py,sha256=SMpyt9k1LhLn8DimhHcaOFmyk_iexEPnOREM1tWcMow,4616
6
- janito/agent/config_defaults.py,sha256=nzlOPZ2xllzcXLdFt5hSkjVKg6hT5NVkHiGEqj8WKvg,1324
5
+ janito/agent/api_exceptions.py,sha256=TAz3FTE4soqUgKPqei2Jod9LOpA37g3s2-S3G5WGw4E,84
6
+ janito/agent/config.py,sha256=dO64nxiiHj-tLJLN8sfY10GUuIaOmWu-NX73n9zVHfg,4609
7
+ janito/agent/config_defaults.py,sha256=22MxI84GF8YL5avIjAWxHlvARxu4A2wD0oou_lqNCeA,460
7
8
  janito/agent/config_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
9
  janito/agent/content_handler.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- janito/agent/conversation.py,sha256=Re6RrA7wlr30hq4HvYlEMHU8H8PaXfZIyvtvg-CAeck,8105
10
- janito/agent/conversation_api.py,sha256=fLs2LQg1NAajXM2Q_ikTojYlVwyhhQYvEg-s3ZpfWpI,9369
10
+ janito/agent/conversation.py,sha256=jxt3DmvuWDQRNObvHwiWkj74qsfrNAjn4Syh-QBXuAA,9564
11
+ janito/agent/conversation_api.py,sha256=iRixc5Y5fEhdAwHBsLnC5gwzFvxhr1iHj3F8NO8MBSs,8104
11
12
  janito/agent/conversation_exceptions.py,sha256=Aw7PRLb3eUfyDOGynKds5F48dgjyiOrTCEcWSprYC58,381
12
- janito/agent/conversation_history.py,sha256=hV2zzlYrbOsCaMEiu39grE1TK8MQ7Lsq5dtIb_3Y--4,1929
13
13
  janito/agent/conversation_tool_calls.py,sha256=wz9FFtwNXgnyJQbcLzZfHfCPkiLfItE2vJ1JqjpKucA,1553
14
14
  janito/agent/conversation_ui.py,sha256=y4f0IoJQoWGrFMB3yi7uIwXokuTjhFtJGK_R7zcTv3w,397
15
15
  janito/agent/event.py,sha256=1jcua88NT-T4jA0mGIyIF1LvqXKu2GDT8NMjlelWmCI,517
16
16
  janito/agent/event_dispatcher.py,sha256=eFNDfGY8o63yNLFdMe82LqfmDyGWjrAw9CpyUAcLJAM,856
17
17
  janito/agent/event_handler_protocol.py,sha256=uIIf9u82BWm8pha4sZxydeEwgbxDoiWVSyplBPI0knE,130
18
18
  janito/agent/event_system.py,sha256=QxPSQ2XeTyiWV6ejcmS8kTqTBrs7fLHRVXdhyeVHpas,608
19
+ janito/agent/llm_conversation_history.py,sha256=ldDGOV4iYqEVNr4DYJUI3ahEs02kZcxQxCoydhv5PEA,2651
19
20
  janito/agent/message_handler.py,sha256=oZJ2u0C7OewHiHwlJslT2o3RPlvY2HhPXPoRcSsBv4M,856
20
21
  janito/agent/message_handler_protocol.py,sha256=E8PLl9ucNvPK_xmhLEkV-vhQzfO_P_BMvzpqDvUkcVY,150
21
- janito/agent/openai_client.py,sha256=5l45zgMK3lC5k7xS83hKC6jUEyZIjgsY7VwKWmxGaDY,4996
22
- janito/agent/openai_schema_generator.py,sha256=cquQLJYBIKaiA6ErDo-JRRF2mYl0kAu3bZzL6xcFHLQ,5925
23
- janito/agent/platform_discovery.py,sha256=yp6KTvc-_u22Dr8-J4cdjVMUS8HkCf343aeSGRu2wek,2712
24
- janito/agent/profile_manager.py,sha256=B-bwo1ZhtD2DaVPAfn0bNv1_inoduZhKGd694Pfy5GM,3231
25
- janito/agent/providers.py,sha256=fiLrYHR_rqUs6mlKXv_QMbOwzSrf3GqoabBVV4JXA9U,2199
22
+ janito/agent/openai_client.py,sha256=Hd4Rzq4ZiwVWgT1NgSCs7U_1YrXbdypQ4Wa1A_MK090,5341
23
+ janito/agent/openai_schema_generator.py,sha256=lxZocrm_HZzyONFrZsOx21FaAodAC63YGtck5TvTQZk,7654
24
+ janito/agent/platform_discovery.py,sha256=JN3kC7hkxdvuj-AyrJTlbbDJjtNHke3fdlZDqGi_uz0,4621
25
+ janito/agent/profile_manager.py,sha256=Esm8tewDVHnBdd7P04WeTY3F5p9O_ZB8cGlvC7awn7E,3196
26
26
  janito/agent/queued_message_handler.py,sha256=sjsZneGWkqvfuJNac9QERdHasp9lWZvNcow8dul7tVU,1844
27
27
  janito/agent/rich_live.py,sha256=NKWU89hRakiJ-0N6FPg40bYREOxQizqicbDv9eUfsKs,927
28
- janito/agent/rich_message_handler.py,sha256=HOm6-xUq7UrrGkE7UlDGtUPXz4BS6LZJuFv2Io1qZFs,2408
28
+ janito/agent/rich_message_handler.py,sha256=80-y0FjAmOYUxUqrEN0Sx1tOXS_mRcczrs4t0OUQTpk,4023
29
29
  janito/agent/runtime_config.py,sha256=xSx0-RD-WVA9niSCEmEn2ZPLFbQfRhPwwGIa8tid_v8,901
30
30
  janito/agent/test_handler_protocols.py,sha256=4o1IitFDUN1fdw48oQCRizKWahahumdmEZ4URHrlmiY,1404
31
- janito/agent/tool_base.py,sha256=rf88iEX_uZ7MwkeDl4gGMtHeESg0dlFKUo2Jr_ZqDTY,1900
32
- janito/agent/tool_executor.py,sha256=FuWpE4itUxtOS6n0JflCJePrBtXjed06R7haxZVIxmE,4677
33
- janito/agent/tool_registry.py,sha256=FlZ8YEoHdk2n7t8vZ26bVbu-fi4UeSE_yu2mZq8pusU,1594
34
- janito/agent/tool_use_tracker.py,sha256=QdzDieMJvmBk60Yd5NTyob0QE-9lSVraDjROw5jz-E4,2096
35
- janito/agent/templates/profiles/system_prompt_template_base.txt.j2,sha256=Z_Nu6tsJIJ01QF7RgUP6oYZOF0Gl5xRpMpPeaRtwr7k,913
31
+ janito/agent/test_openai_schema_generator.py,sha256=PJ6wrnNpH50MAzbXjuohZpe2rX7LLkQVdlWMcjxyXdk,2431
32
+ janito/agent/tool_base.py,sha256=KKWmMKyjxpWNukgdImLwZqs9cnS_tVzBt6cpQ532-KM,2025
33
+ janito/agent/tool_executor.py,sha256=yizyu88QteTHtJ_ktj679IqsaMyS-TQYR7rXnWI6lOg,5114
34
+ janito/agent/tool_registry.py,sha256=AjxYgQTeG9wUTyi0h128AG7INCyziF0z3zux12BlXnE,1673
35
+ janito/agent/tool_use_tracker.py,sha256=bEHirQX79u1uHnkmXO7t3JrBt2tHaQhaOzII7Nqiq5A,2874
36
+ janito/agent/templates/profiles/system_prompt_template_base.txt.j2,sha256=H7KtCXlBizxPUMQ9yGKuD_qpxOkS7-30RqOgl_fCBbA,963
36
37
  janito/agent/templates/profiles/system_prompt_template_base_pt.txt.j2,sha256=FX8piXbR9XNOEKkOSMt4ieZ2wn5fzQlffeQFf8d7gIc,723
37
38
  janito/agent/tests/__init__.py,sha256=QuXHKEzUJ_DooaKqenv_tKuNH-HabuIVZhvW5JNaeIc,52
38
- janito/agent/tools/__init__.py,sha256=EC8IPYi3VML4kH78CujL3b-bKBJp0mG5BslL4HNqDnw,1098
39
+ janito/agent/tools/__init__.py,sha256=KtK5WMrtXfxr5NA2XZXDMSV4GdH4tN6KESFnEdv0BaQ,1207
39
40
  janito/agent/tools/ask_user.py,sha256=DL-jBU-njSjwhNSbgi23RZCrRBt5beDgZq_PG4yzbWM,3217
40
- janito/agent/tools/create_directory.py,sha256=KFI2v3H3Mq_O2wN7jrOaIXiiZg7baJPanLoCNoLVJWM,2504
41
- janito/agent/tools/create_file.py,sha256=On8vIPbbbCOTw_xL1vJ_anQbIpPisouoKuUM-i6e53k,2225
41
+ janito/agent/tools/create_directory.py,sha256=biCLH3fuwuDdN7rb3VQl14JFhMAH3mk7giXepCD1_gM,2597
42
+ janito/agent/tools/create_file.py,sha256=O5thLevSXU61NdEi2z3kd9TAoq_dPA6-tvj1Jz6tR3k,2422
42
43
  janito/agent/tools/delete_text_in_file.py,sha256=WIUDPgaaPK2Dk1WzKTPdfyckcoA6p51cwAf0SMiJj8c,3494
43
- janito/agent/tools/fetch_url.py,sha256=KQI9w71N5KI6ThBeSlLqNRdLL9WCxYDdIMTwYTa9wrI,2371
44
- janito/agent/tools/find_files.py,sha256=N467bqpx3j0VDUxc3wQGlK786vRYj-sQ3tQ7yXgkqj0,4137
45
- janito/agent/tools/get_lines.py,sha256=LhH8tQexESRIuAWWkBypq0yUkW6J2njcjWlYx4M1brI,5099
46
- janito/agent/tools/move_file.py,sha256=1EYe55JT-osFTXDzeCYHtEV7-i0cjPcc7tASzcOJyjI,4336
47
- janito/agent/tools/present_choices.py,sha256=e7SpOs3RIUXL6zi6PoeFc64akTVVuiQe2yLrm0rKpNs,2327
48
- janito/agent/tools/remove_directory.py,sha256=xXVqkaseRcjXSO3FwciJaf6WKaV00fkgHb-VC1ECaW4,2409
49
- janito/agent/tools/remove_file.py,sha256=rm74sNFbP9Ikc6R5G-y2x--Cdm_Xhs037jZKR-L9Q78,2294
50
- janito/agent/tools/replace_file.py,sha256=fxnrNeHNudexYL_Ko_CzrERGGKDAoC9pTUCgUEE8QPg,2840
51
- janito/agent/tools/replace_text_in_file.py,sha256=E-efxMYKZMgrf2Gb38qRdJnd4AvfoOBguVKVZtQd_CY,9451
52
- janito/agent/tools/run_bash_command.py,sha256=4tpHwJmBekVBb75vSnT6R8vlpxp8LD_FHhzmq6TxbV0,7474
53
- janito/agent/tools/run_powershell_command.py,sha256=geqse-o2fZrc8u5Rr6fFH-9HNKL3V389GStcmUe4dXU,8230
54
- janito/agent/tools/run_python_command.py,sha256=ti7yfjvRC8ZjvOucXp7ixeKgT4pY8i10uDeAjl3_1DY,6991
55
- janito/agent/tools/search_text.py,sha256=eqvlZkdXHt5TQrSn8IDnZfgnnQF2asF9diSU2AeLuVo,9298
44
+ janito/agent/tools/fetch_url.py,sha256=pBSjh9lXs3ZN_2I_rNGUZDE-VSv3llLKYR3h_TyuQQY,3866
45
+ janito/agent/tools/find_files.py,sha256=QAUSHH7rlhJ7jkOot7UNCkAP2gsD9FvSVqxxgHGmNNA,4233
46
+ janito/agent/tools/get_lines.py,sha256=rzOE_MK3fvU76Rw2t2rY-jjJS3DpJiZq5sZq-U9Sz6Q,5262
47
+ janito/agent/tools/move_file.py,sha256=PX6uIDj91k4hvXl-dtsvDzdIcHLcaQxe7ePqQiqjc-Q,4433
48
+ janito/agent/tools/present_choices.py,sha256=XVO9jhWOUry7TedGPkOU4CG3COV_YdTUp3YiKyNKo2U,2422
49
+ janito/agent/tools/python_command_runner.py,sha256=CVQ-j1ZNpCYMJDg1nHELL9cn6GIA1yCmE9IBIbxgTWA,6404
50
+ janito/agent/tools/python_file_runner.py,sha256=1f43eQVPdetML-mPje0s5onfvPf4AqkbqvSM0AwKeU8,6231
51
+ janito/agent/tools/python_stdin_runner.py,sha256=X052bc4sHuEAq7KY6B33cyI254792W12jBr9e9nZY8E,6579
52
+ janito/agent/tools/remove_directory.py,sha256=3fKKbhQZaWHCOD_FW36NLL9jCPqOYWO9CO5vUS-_n04,2502
53
+ janito/agent/tools/remove_file.py,sha256=MGy5UrSGdyR5eT32XEXDQaFwogxLadrP-CDzXMvFygY,2411
54
+ janito/agent/tools/replace_file.py,sha256=JJ_9xY20GQaURCbU6yHcpFoyhMkD-TZp3OowWjx5KqY,3279
55
+ janito/agent/tools/replace_text_in_file.py,sha256=WThFVT7HeG2l93_LaN6jhK95RhPb021uI3s5dIo4WDw,9536
56
+ janito/agent/tools/run_bash_command.py,sha256=rmX0qwtK7OLEi53xO6yH8hyx6X9awV2RgoI7meemBrc,5881
57
+ janito/agent/tools/run_powershell_command.py,sha256=ZD9wR7bvNJH6Mepqd5UA1wMjz2WYblmkoWRqlvUSEBk,8913
58
+ janito/agent/tools/search_text.py,sha256=OHyJ3UTfrJjy7WLM1KXvjMxVVeK6nUYPMV-uzeDjY6E,10321
56
59
  janito/agent/tools/get_file_outline/__init__.py,sha256=OKV_BHnoD9h-vkcVoW6AHmsuDjjauHPCKNK0nVFl4sU,37
57
- janito/agent/tools/get_file_outline/core.py,sha256=crpumYww-2JXYGjWNO13sWy3rzWWlJjcUDjpdxWs4Jw,3235
60
+ janito/agent/tools/get_file_outline/core.py,sha256=eT09a_kpyHq60M7Sat73s4u4yfVYVwD1o9sTU4_fpbI,3314
58
61
  janito/agent/tools/get_file_outline/markdown_outline.py,sha256=bXEBg0D93tEBDNy8t-wh4i7WxsxfpQ2C3dX1_rmtj08,434
59
62
  janito/agent/tools/get_file_outline/python_outline.py,sha256=P_GDB3ElMZtrLc5D3pQIueIA_7MxoOiyUbdcQXClyWo,4998
60
- janito/agent/tools/get_file_outline/search_outline.py,sha256=l6yk1BJLpYRLbM2u4igvxMXeAmOXmyThT_Q-5Pj_B0o,987
63
+ janito/agent/tools/get_file_outline/search_outline.py,sha256=_wPdylEFvl-iE3fuwY3MEUlaDKO5cbHxN1_DTJf5x8s,1079
61
64
  janito/agent/tools/validate_file_syntax/__init__.py,sha256=P53RHmas4BbHL90cMxH9m-RpMCJI8JquoJb0rpkPVVk,29
62
- janito/agent/tools/validate_file_syntax/core.py,sha256=tXcXWyQUQKOMwESOt3uSVC93FK4Qc3obJzwAQiyIS2M,3162
65
+ janito/agent/tools/validate_file_syntax/core.py,sha256=eO6XliUGS94-ofqsdHY2Rgw2ETzsdmcrnprayOulyq8,3254
63
66
  janito/agent/tools/validate_file_syntax/css_validator.py,sha256=tRnCzNkpiYKQ_X9yvPeDPqZvc59He2T-2CbXmCs8Hjw,1371
64
67
  janito/agent/tools/validate_file_syntax/html_validator.py,sha256=X1sS0-ZJn1d0hlfN-sIPHjCLME_o1PIs_G_YsswNqiA,2739
65
68
  janito/agent/tools/validate_file_syntax/js_validator.py,sha256=oVkGxK9wBbZ3cFqwrV_aF76FDQwKPDvbXxXn1tL4We0,1018
@@ -70,56 +73,59 @@ janito/agent/tools/validate_file_syntax/python_validator.py,sha256=SN9eNgk9Uormr
70
73
  janito/agent/tools/validate_file_syntax/xml_validator.py,sha256=nDHMnrSdjAyQhbSIJZcDuqEkeiJmjvTALlKdtn_Ny0k,304
71
74
  janito/agent/tools/validate_file_syntax/yaml_validator.py,sha256=zDg0F-7y9WDU5ur75tBEicIreQjZ8pXjc_FYyTUuXmo,175
72
75
  janito/agent/tools_utils/__init__.py,sha256=tMniEJ8rcFeiztKqidRe-sCRJh02gMw_s1OjcQB1Rg4,28
73
- janito/agent/tools_utils/dir_walk_utils.py,sha256=0r86VlWt_7TL0MtKpYR_G3KTESMl5seRT0fsY61CSVo,1081
74
- janito/agent/tools_utils/formatting.py,sha256=p781lIQ1tqGMQgOlo5KyddPmurqoromrsNVdxKKJQDY,1132
75
- janito/agent/tools_utils/gitignore_utils.py,sha256=vVcUqd5XGNp3BMMAxiGTzbaDPfjemHpbIVZrKMllo4Q,1340
76
+ janito/agent/tools_utils/action_type.py,sha256=_BzW1VnJB48WiJCyniKWVzk-M9_d14KBK5oV4VAJ30c,119
77
+ janito/agent/tools_utils/dir_walk_utils.py,sha256=MY0bdKfYhAZ-8bT5S9XfFqWiq2ZOzQl0NAqz0BkyIg4,1127
78
+ janito/agent/tools_utils/formatting.py,sha256=SMvOmL6bst3KGcI7OLa5D4DE127fQYuHZS3oY8OPsn8,2031
79
+ janito/agent/tools_utils/gitignore_utils.py,sha256=YG8G_7_z0mbAL_xVbmJ8Aq6wHULfXkEP8WW6nBLh1rc,2977
80
+ janito/agent/tools_utils/test_gitignore_utils.py,sha256=ydA9mzza7QzgyEPjYsecKzPLyYFk0DGBVBz113LGklY,1891
76
81
  janito/agent/tools_utils/utils.py,sha256=nVFOqaclfs18z4XB2rvr0JlwPa-RH1H-eSs8ejdXR5k,966
77
82
  janito/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
83
  janito/cli/_livereload_log_utils.py,sha256=BGhf1VT3dVR2ZhyTnZeTFg4I8Zj2tAn2UslME-ouxXA,482
79
- janito/cli/_print_config.py,sha256=C_27QdwzhqorzeJflBFK0f46zTUtqqmdYe3EBurjOOE,3574
84
+ janito/cli/_print_config.py,sha256=fzrVy23Ppe-Dax97VU759bus-KRe1VycU5MAPbHE72g,3259
80
85
  janito/cli/_termweb_log_utils.py,sha256=QpH40uxPhksrJHWqthW4cR7BhcSSYakpza_qTeFGABs,722
81
86
  janito/cli/_utils.py,sha256=tRAUMDWKczd81ZvKYkwpsHWSeLzQoVlOoQ-lOw9Iujw,291
82
- janito/cli/arg_parser.py,sha256=uQLDOr-m4azb1xQ9_HEXNPRR6qolx2l6jLrl30Gjcrw,8271
83
- janito/cli/cli_main.py,sha256=SCCxKC9WIBb4qNqsSsfxW3KiyO8WiDLGIZgUFFCaDck,11265
87
+ janito/cli/arg_parser.py,sha256=8cE0E6zHWy4VE1jio3E3hyBpULD2AKo8q6QkTjyeWiQ,8345
88
+ janito/cli/cli_main.py,sha256=egi9Ql8iskSlmP_QU6eGAVqbzRp4lU5dt97K9WrIsn0,10341
84
89
  janito/cli/config_commands.py,sha256=vfU7XciVMRNR5kDvn6tnCo1PLvSEXg0Y0PzLcDEFI9w,8539
85
90
  janito/cli/config_runner.py,sha256=Nzam25C8P55dFlT_f6IlEj2ZvFwS63AAbnkIWe3oNsg,1702
86
91
  janito/cli/formatting_runner.py,sha256=k0mtHoglqR8fKcebSK81iWTT_EL-gDl7eNfjlFZRY6g,287
87
92
  janito/cli/livereload_starter.py,sha256=JivN7PRG9_dCEEOobXETQcJ7Ro9ELczg8AUbI8LHFPI,2285
88
93
  janito/cli/logging_setup.py,sha256=_KLF69xqq1xLPIfkXxy0EIewO-Ef2eYoxNVjqjsC0vc,1361
89
- janito/cli/main.py,sha256=wjmvbF2DdjMs8thZQQi80RSey62PObK2BNNOqtW2Ltc,8874
90
- janito/cli/one_shot.py,sha256=Iqaj3DlcrqjUzwqqOKpKmsMIbLfNvqRvFIqHy4t7nIc,2696
94
+ janito/cli/main.py,sha256=6__L7xJS74SDVywpqqU7hw2_KpjTXu58-l-E9DBxiXQ,7296
95
+ janito/cli/one_shot.py,sha256=CP-05-jPhrKub1sButXytcfkTcfWXD9FWHLFO4pLjbA,3244
91
96
  janito/cli/termweb_starter.py,sha256=lN_MXGr_Glr82kS983caPyCXdKmhwzcEERmpCrfgcDA,2797
92
- janito/i18n/__init__.py,sha256=7HYvwOTTf51pVm4adU79rl1FCtAjgOy6GzeShfYCdQY,970
97
+ janito/i18n/__init__.py,sha256=6zCIu6pSQpoMJvIRK9oOD3pkzbNeJik3lFDXse0X6ag,994
93
98
  janito/i18n/messages.py,sha256=fBuwOTFoygyHPkYphm6Y0r1iE8497Z4iryVAmPhMEkg,1851
94
99
  janito/i18n/pt.py,sha256=52-ENCIrPW4A1tXFRT28xA8TwuUFoihs6ezJj-m3-Y4,4260
95
100
  janito/livereload/app.py,sha256=oJTKDN5vpix26d1MA5iQz9mPLDu4VaHisAW8wtOUEhY,666
96
101
  janito/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
102
  janito/shell/commands.py,sha256=gqMKLvb6MrESPx51O28OP5I9hDZuBkRMaom3hT_ACqA,1586
98
- janito/shell/main.py,sha256=hzsoflpMRVP6CXaw5YdKeh7JGeWR_OsJ88SoKgVz5R4,12551
99
- janito/shell/commands/__init__.py,sha256=XGnXf6w_JZqpREJG3YN_UI9Zfc2uKK0Z_K9JMJ8gmfg,2002
103
+ janito/shell/input_history.py,sha256=JedB9TQoRf31l2XGadeQtyx1qAAFPLRyXSvMLltRwZE,2542
104
+ janito/shell/main.py,sha256=oKmBrCxtTh9vkKH13g9ECR15lkqlueO_KaWl59SJKYA,9863
105
+ janito/shell/commands/__init__.py,sha256=CJGXhVFEQdbIL214g3vF7vhyvlvtjqjFHjSMMTjXHjM,2016
100
106
  janito/shell/commands/config.py,sha256=UTNbyNOLpIqlAle_JpCiffP7h5IOk7wxih-10_ok62w,959
101
- janito/shell/commands/conversation_restart.py,sha256=IGCNO7Br9iHj1JH327B-R4Ps73g4qJOq2IvCZvJY-T0,2752
102
- janito/shell/commands/edit.py,sha256=6o7T1FM18S2bGPadE61rvO3feWxGa5dfDFqtI4BwX9w,720
103
- janito/shell/commands/history_view.py,sha256=m_-Olds5BI3gAdjZmx0i4kDBaMpLgmNBHVIIGDd6zq4,812
104
- janito/shell/commands/lang.py,sha256=cG_gX61LUgzv_Bxk-UPTTNF1JQFfcUVaYBnPovUylNw,521
105
- janito/shell/commands/livelogs.py,sha256=7lM7RRcsyisZz26Tk00_BYSkd9gvDuco_8z31xr49Ug,1753
106
- janito/shell/commands/prompt.py,sha256=HW3z_JuJT6Zc5Yx8wJHDh4n2PZphu4ONTIMabVRTFnk,1949
107
- janito/shell/commands/session.py,sha256=AHWC8eDrV5jta9Ak77FXu57qQvxEQC_8hVCICbkglRQ,1192
108
- janito/shell/commands/session_control.py,sha256=nWxrc6OEX0ih872EwSEtodYhzBNPUC7rMr-ghmDw7ns,1249
109
- janito/shell/commands/sum.py,sha256=WB89_NY34GrulqzKJchR5ovXmyJSYX7LP3sdaOgCT_E,1884
110
- janito/shell/commands/termweb_log.py,sha256=jaVDefd2Sz-xBxGPcJqvsTRIpeynmVdi8vR2rP_nwCY,3321
111
- janito/shell/commands/tools.py,sha256=_cnxXdu-xNkElcUnAv_lSrh3l9AKX5mH0E4HR1hZCU4,917
112
- janito/shell/commands/utility.py,sha256=mfxv1J-VCzL4V2pAKMxQo1Rk8ZbyTFJ1PNh9hmqRVn0,1232
113
- janito/shell/commands/verbose.py,sha256=vNtWCfpKxRY2t3Pzcz7FC1A9kZxMD26-zHSpE1JhuHc,1008
107
+ janito/shell/commands/conversation_restart.py,sha256=b32vWa7rm43lA1SrFZ0v-OAB-zf4dTP307rEr52Mt9A,2825
108
+ janito/shell/commands/edit.py,sha256=l06cigmTSfWmhzCSP7enajHf2EW6HaKlQyr-5QLLEFw,791
109
+ janito/shell/commands/history_view.py,sha256=SoAR5bPIF6xN85F6HoxQJxAV8BluU_934T-CaMYnN7A,797
110
+ janito/shell/commands/lang.py,sha256=Ry1OgQmzgR0p6SgjWg-j5sdpHkLRIUCVGtTzkBOhJzg,599
111
+ janito/shell/commands/livelogs.py,sha256=GDx9UL7bYOfemCBsIWLrKOCgG-PYy7X_VLrl5USqpgE,1758
112
+ janito/shell/commands/prompt.py,sha256=OpcKg3-Vhy8enFJEc2LS-JrEQzH4Y-nogzVj2-dnGqI,2059
113
+ janito/shell/commands/session.py,sha256=tYav6GgjAZkvWhlI_rfG6OArNqW6Wn2DTv39Hb20QYc,1262
114
+ janito/shell/commands/session_control.py,sha256=PAFg00vXQvIhAuCtd4L149hrj8jGguB0EtBJwo-CFLo,1295
115
+ janito/shell/commands/termweb_log.py,sha256=xxFz2GhFRI7w7jNk0D0Gq6RFBuzIZF1paDMK2MBeNWA,3519
116
+ janito/shell/commands/tools.py,sha256=Z6kB0Lu87gzWYiUcjNB_kkX-jCNSRpZZh_qgetzhFMU,970
117
+ janito/shell/commands/track.py,sha256=xOqVHjcnrMWZ_vhP1gpT0-2NUvJqPVT-MGdC38NJatg,1577
118
+ janito/shell/commands/utility.py,sha256=kuUw1kklQa7c4okSFJ2bRA92NV-YUXqgor5Io7y1zGM,860
119
+ janito/shell/commands/verbose.py,sha256=mg7BlsWTkNwbUBN2p_GME4ep3zzAp0jMSc6N4BT3Ebg,980
114
120
  janito/shell/prompt/completer.py,sha256=6gNu0DNNSbUUVgjk8Y0hWwJwk-jbN8Lm6Y4u0mRu930,755
115
121
  janito/shell/prompt/load_prompt.py,sha256=gHedc5TtaFBKiGgwRM_u9nVnBuLHDTSa8VPlPOtoMEA,2125
116
122
  janito/shell/prompt/session_setup.py,sha256=ry4TqiXYyw3JmZfGRGIpvAgNMXGeWltCwz56NoiBqSY,1531
117
123
  janito/shell/session/config.py,sha256=sG04S_z27wI7nXKMaVDcwDpBCuo6Cvd4uhutUQesJKo,3807
118
124
  janito/shell/session/history.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
- janito/shell/session/manager.py,sha256=E8TNBhiXHCbdNhhvzhUp4Zr_S3tdWagh1veDprwFTHY,3919
120
- janito/shell/ui/interactive.py,sha256=XhR1vEZlLG8LijsZJqZCqvRoZVqruXHny3z-911XO6Q,7669
125
+ janito/shell/session/manager.py,sha256=LGf2x9mprGOHAJhq7_OfIZM8Z2bmAEJ_KakaZr1XqXc,3116
126
+ janito/shell/ui/interactive.py,sha256=Uuy7Kr-wUeibO6sCqrOP3YBrAuv1znB3cl9EyHGp-wc,7491
121
127
  janito/termweb/app.py,sha256=co4a7cw6pC2P79dMZaNxjPJrP_B9suTGRIWTgqK5ccw,3322
122
- janito/termweb/static/editor.css,sha256=rPSbQIVBCBnLlFJOQjHBOy2wWZkdbPDt4z8dWEBB83s,2870
128
+ janito/termweb/static/editor.css,sha256=lGUS--FZ7gw8nlm2Apb7Xoa3Wai0V8D789TFxQHat7Q,2799
123
129
  janito/termweb/static/editor.css.bak,sha256=KPjMz7YwryaxOUmyHJNAlOv96KYtcMLj0zfYkUuc9Vs,924
124
130
  janito/termweb/static/editor.html,sha256=XZpNejyIyzc1JVHnLGzc7dfUZO0ID_hX__rHpach9HU,2377
125
131
  janito/termweb/static/editor.html.bak,sha256=X7t-EBYzv5RorkdM_kc0JerD6lXoNes4_ZIF8aFFfzs,2245
@@ -140,12 +146,13 @@ janito/termweb/static/termweb.js.bak,sha256=G1UQJqtWMZOoPFMiSm4MRo-Pm1OqX1oMZ_Jc
140
146
  janito/termweb/static/termweb.js.bak.bak,sha256=SQeqc9YwdreCmFJ7LtCYlHOjRHi8rsoW_fZ3x5WroWQ,7692
141
147
  janito/termweb/static/termweb_quickopen.js,sha256=HNT85JjWAvjI5ROwukOU-oI4ZVVjCO6yg5IT115pdXI,5379
142
148
  janito/termweb/static/termweb_quickopen.js.bak,sha256=sk_zbEw6HJt1iZSAYlaW0qAhq0to-KcBsOKx0AZqkKA,4814
149
+ janito/tests/test_rich_utils.py,sha256=S_mGVynekAP0DM4A_ZaY-SseJGtdlBJxOlzc-v8lJX8,1283
143
150
  janito/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
151
  janito/web/__main__.py,sha256=5Ck6okOZmxKYkQ-ir4mxXDH7XWMNR-9szgsm0UyQLE0,734
145
- janito/web/app.py,sha256=NarccXYgeYEMvws1lQSGZtArrzJIvw94LSNR0rW9Dq4,7331
146
- janito-1.9.0.dist-info/licenses/LICENSE,sha256=sHBqv0bvtrb29H7WRR-Z603YHm9pLtJIo3nHU_9cmgE,1091
147
- janito-1.9.0.dist-info/METADATA,sha256=Cxe4t_iI7poul_W8JwJX2ErMvdWZfQat18eD2Onphtw,12640
148
- janito-1.9.0.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
149
- janito-1.9.0.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
150
- janito-1.9.0.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
151
- janito-1.9.0.dist-info/RECORD,,
152
+ janito/web/app.py,sha256=-zUBA1zlnrZdYbI421CSAgFZXOisLmIznNzUJrkSLQQ,4762
153
+ janito-1.10.0.dist-info/licenses/LICENSE,sha256=sHBqv0bvtrb29H7WRR-Z603YHm9pLtJIo3nHU_9cmgE,1091
154
+ janito-1.10.0.dist-info/METADATA,sha256=SYVAEStx_BmbZBWGtORTqaoFLtv5ej9iT730hPX2Tg8,12879
155
+ janito-1.10.0.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
156
+ janito-1.10.0.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
157
+ janito-1.10.0.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
158
+ janito-1.10.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.1.0)
2
+ Generator: setuptools (80.3.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5