janito 1.13.0__tar.gz → 1.14.0__tar.gz
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-1.13.0/janito.egg-info → janito-1.14.0}/PKG-INFO +9 -5
- {janito-1.13.0 → janito-1.14.0}/README.md +4 -1
- janito-1.14.0/janito/__init__.py +1 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/config.py +9 -3
- {janito-1.13.0 → janito-1.14.0}/janito/agent/templates/profiles/system_prompt_template_base.txt.j2 +9 -4
- {janito-1.13.0 → janito-1.14.0}/janito/shell/prompt/session_setup.py +1 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/ui/interactive.py +18 -11
- {janito-1.13.0 → janito-1.14.0/janito.egg-info}/PKG-INFO +9 -5
- {janito-1.13.0 → janito-1.14.0}/janito.egg-info/requires.txt +3 -2
- {janito-1.13.0 → janito-1.14.0}/pyproject.toml +6 -5
- janito-1.13.0/janito/__init__.py +0 -1
- {janito-1.13.0 → janito-1.14.0}/LICENSE +0 -0
- {janito-1.13.0 → janito-1.14.0}/MANIFEST.in +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/__main__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/api_exceptions.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/config_defaults.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/config_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/content_handler.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/conversation.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/conversation_api.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/conversation_exceptions.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/conversation_tool_calls.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/conversation_ui.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/event.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/event_dispatcher.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/event_handler_protocol.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/event_system.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/llm_conversation_history.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/message_handler.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/message_handler_protocol.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/openai_client.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/openai_schema_generator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/platform_discovery.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/profile_manager.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/queued_message_handler.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/rich_live.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/rich_message_handler.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/runtime_config.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/templates/profiles/system_prompt_template_base_pt.txt.j2 +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/test_handler_protocols.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/test_openai_schema_generator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tests/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tool_base.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tool_executor.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tool_registry.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tool_use_tracker.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/ask_user.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/create_directory.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/create_file.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/delete_text_in_file.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/fetch_url.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/find_files.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/get_file_outline/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/get_file_outline/core.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/get_file_outline/python_outline.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/get_file_outline/search_outline.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/get_lines.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/move_file.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/open_url.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/present_choices.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/python_command_runner.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/python_file_runner.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/python_stdin_runner.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/remove_directory.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/remove_file.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/replace_file.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/replace_text_in_file.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/run_bash_command.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/run_powershell_command.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/search_text/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/search_text/core.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/search_text/match_lines.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/search_text/pattern_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/search_text/traverse_directory.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/core.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools_utils/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools_utils/action_type.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools_utils/dir_walk_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools_utils/formatting.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools_utils/gitignore_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools_utils/test_gitignore_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/agent/tools_utils/utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/_livereload_log_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/_print_config.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/_termweb_log_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/arg_parser.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/cli_main.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/config_commands.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/config_runner.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/formatting_runner.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/livereload_starter.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/logging_setup.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/main.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/one_shot.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/cli/termweb_starter.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/i18n/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/i18n/messages.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/i18n/pt.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/livereload/app.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/rich_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/config.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/conversation_restart.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/edit.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/history_view.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/lang.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/livelogs.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/prompt.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/session.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/session_control.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/termweb_log.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/tools.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/track.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/utility.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/commands/verbose.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/input_history.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/main.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/prompt/completer.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/prompt/load_prompt.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/session/config.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/session/history.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/shell/session/manager.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/app.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/editor.css +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/editor.css.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/editor.html +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/editor.html.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/editor.js +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/editor.js.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/explorer.html.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/favicon.ico +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/favicon.ico.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/index.html +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/index.html.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/index.html.bak.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/landing.html.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/termicon.svg +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/termweb.css +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/termweb.css.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/termweb.js +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/termweb.js.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/termweb.js.bak.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/termweb_quickopen.js +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/termweb/static/termweb_quickopen.js.bak +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/tests/test_rich_utils.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/web/__init__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/web/__main__.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito/web/app.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito.egg-info/SOURCES.txt +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-1.13.0 → janito-1.14.0}/janito.egg-info/top_level.txt +0 -0
- {janito-1.13.0 → janito-1.14.0}/setup.cfg +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_basic.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_find_files.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_outline_formatter.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_outline_no_overlap.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_outline_python_file.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_outline_python_file_complex.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_outline_tool_run.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_platform_discovery.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_python_command_runner.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_python_file_runner.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_python_stdin_runner.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_rich_message_handler_action_type.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_run_powershell_command.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_search_text.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_set_role.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_tool_registry_docstring_formats.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_tool_registry_manual_sim.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_tool_registry_validation.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_tool_use_tracker.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_validate_file_syntax.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_validate_file_syntax_xml_html.py +0 -0
- {janito-1.13.0 → janito-1.14.0}/tests/test_validate_markdown_syntax.py +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version: 1.
|
4
|
-
Summary: Natural Language
|
3
|
+
Version: 1.14.0
|
4
|
+
Summary: Natural Language Programming Agent,
|
5
5
|
Author-email: João Pinto <joao.pinto@gmail.com>
|
6
6
|
License-Expression: MIT
|
7
7
|
Project-URL: homepage, https://janito.dev
|
@@ -13,7 +13,6 @@ Requires-Python: >=3.10
|
|
13
13
|
Description-Content-Type: text/markdown
|
14
14
|
License-File: LICENSE
|
15
15
|
Requires-Dist: beautifulsoup4
|
16
|
-
Requires-Dist: docstring-parser
|
17
16
|
Requires-Dist: flask
|
18
17
|
Requires-Dist: jinja2
|
19
18
|
Requires-Dist: openai
|
@@ -21,17 +20,22 @@ Requires-Dist: pathspec
|
|
21
20
|
Requires-Dist: prompt_toolkit
|
22
21
|
Requires-Dist: requests
|
23
22
|
Requires-Dist: rich
|
24
|
-
Requires-Dist: toml
|
25
23
|
Requires-Dist: lxml
|
24
|
+
Requires-Dist: PyYAML
|
25
|
+
Requires-Dist: quart
|
26
|
+
Requires-Dist: questionary
|
26
27
|
Provides-Extra: docs
|
27
28
|
Requires-Dist: mkdocs>=1.5.3; extra == "docs"
|
28
29
|
Requires-Dist: mkdocs-material>=9.4.8; extra == "docs"
|
29
30
|
Dynamic: license-file
|
30
31
|
|
31
|
-
# 🚀 Janito: Natural Language
|
32
|
+
# 🚀 Janito: Natural Language Programming Agent
|
32
33
|
|
33
34
|
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.
|
34
35
|
|
36
|
+

|
37
|
+
|
38
|
+
|
35
39
|
For a technical overview, see the [Architecture Guide](docs/reference/architecture.md).
|
36
40
|
|
37
41
|
## 📖 Full Documentation & Overview
|
@@ -1,7 +1,10 @@
|
|
1
|
-
# 🚀 Janito: Natural Language
|
1
|
+
# 🚀 Janito: Natural Language Programming Agent
|
2
2
|
|
3
3
|
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.
|
4
4
|
|
5
|
+

|
6
|
+
|
7
|
+
|
5
8
|
For a technical overview, see the [Architecture Guide](docs/reference/architecture.md).
|
6
9
|
|
7
10
|
## 📖 Full Documentation & Overview
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "1.13.1"
|
@@ -39,9 +39,15 @@ class FileConfig(BaseConfig):
|
|
39
39
|
def load(self):
|
40
40
|
if self.path.exists():
|
41
41
|
with open(self.path, "r", encoding="utf-8") as f:
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
try:
|
43
|
+
self._data = json.load(f)
|
44
|
+
# Remove keys with value None (null in JSON)
|
45
|
+
self._data = {k: v for k, v in self._data.items() if v is not None}
|
46
|
+
except json.JSONDecodeError as e:
|
47
|
+
print(
|
48
|
+
f"⚠️ Warning: The config file '{self.path}' is corrupted (invalid JSON): {e}. Using empty config."
|
49
|
+
)
|
50
|
+
self._data = {}
|
45
51
|
|
46
52
|
else:
|
47
53
|
self._data = {}
|
{janito-1.13.0 → janito-1.14.0}/janito/agent/templates/profiles/system_prompt_template_base.txt.j2
RENAMED
@@ -3,11 +3,15 @@
|
|
3
3
|
#}
|
4
4
|
You are: {{ role }}
|
5
5
|
|
6
|
+
You will answer following a pattern of: discovery, description, implementation (when a change was request) and validation.
|
7
|
+
|
6
8
|
{# Improves tool selection and platform specific constrains, eg, path format, C:\ vs /path #}
|
7
|
-
You will be
|
9
|
+
You will be using the following environment:
|
8
10
|
Platform: {{ platform }}
|
9
11
|
Python version: {{ python_version }}
|
10
12
|
Shell/Environment: {{ shell_info }}
|
13
|
+
|
14
|
+
Before answering map the questions to artifacts found in the current directory - the current project.
|
11
15
|
|
12
16
|
Respond according to the following guidelines:
|
13
17
|
{# Exploratory hint #}
|
@@ -20,11 +24,12 @@ Respond according to the following guidelines:
|
|
20
24
|
- Use the namespace functions to deliver the code changes instead of showing the code.
|
21
25
|
{# Drive edit mode, place holders critical as shown to be crucial to avoid corruption with code placeholders #}
|
22
26
|
- Prefer making localized edits using string replacements. If the required change is extensive, replace the entire file instead, provide full content without placeholders.
|
23
|
-
|
27
|
+
{# Trying to prevent surrogates generation, found this frequently in gpt4.1/windows #}
|
24
28
|
- While writing code, if you need an emoji or special Unicode character in a string, then insert the actual character (e.g., 📖) directly instead of using surrogate pairs or escape sequences.
|
25
29
|
{# Without this, the LLM choses to create files from a literal interpretation of the purpose and intention #}
|
26
30
|
- Before creating files search the code for the location related to the file purpose
|
27
|
-
{# This will trigger a search for the old names/locations to be updates #}
|
31
|
+
{# This will trigger a search for the old names/locations to be updates #}
|
28
32
|
- After moving, removing or renaming functions or classes to different modules, update all imports, references, tests, and documentation to reflect the new locations, then verify functionality.
|
29
33
|
{# Keeping docstrings update is key to have semanatic match between prompts and code #}
|
30
|
-
- Once development or updates are finished, ensure that new or updated packages, modules, functions are properly documented.
|
34
|
+
- Once development or updates are finished, ensure that new or updated packages, modules, functions are properly documented.
|
35
|
+
|
@@ -36,7 +36,8 @@ def format_tokens(n, tag=None):
|
|
36
36
|
return f"<{tag}>{val}</{tag}>" if tag else val
|
37
37
|
|
38
38
|
|
39
|
-
def assemble_first_line(model_name, role_ref, style_ref):
|
39
|
+
def assemble_first_line(model_name, role_ref, style_ref, version=None):
|
40
|
+
version_part = f" Janito v{version}" if version else ""
|
40
41
|
model_part = f" {tr('Model')}: <model>{model_name}</model>" if model_name else ""
|
41
42
|
role_part = ""
|
42
43
|
vanilla_mode = runtime_config.get("vanilla_mode", False)
|
@@ -50,6 +51,8 @@ def assemble_first_line(model_name, role_ref, style_ref):
|
|
50
51
|
if style:
|
51
52
|
style_part = f"{tr('Style')}: <b>{style}</b>"
|
52
53
|
first_line_parts = []
|
54
|
+
if version_part:
|
55
|
+
first_line_parts.append(version_part)
|
53
56
|
if model_part:
|
54
57
|
first_line_parts.append(model_part)
|
55
58
|
if role_part:
|
@@ -102,11 +105,11 @@ def assemble_second_line(
|
|
102
105
|
|
103
106
|
def assemble_bindings_line():
|
104
107
|
return (
|
105
|
-
f"<b>
|
108
|
+
f" <b>F1</b>: {tr('Restart Conversation')} | "
|
109
|
+
f"<b>F12</b>: {tr('Do It')} | "
|
106
110
|
f"<b>Ctrl-Y</b>: {tr('Yes')} | "
|
107
111
|
f"<b>Ctrl-N</b>: {tr('No')} | "
|
108
|
-
f"<b>/help</b>: {tr('Help')}
|
109
|
-
f"<b>/restart</b>: {tr('Reset Conversation')}"
|
112
|
+
f"<b>/help</b>: {tr('Help')}"
|
110
113
|
)
|
111
114
|
|
112
115
|
|
@@ -125,7 +128,9 @@ def get_toolbar_func(
|
|
125
128
|
|
126
129
|
def get_toolbar():
|
127
130
|
width = get_app().output.get_size().columns
|
128
|
-
first_line = assemble_first_line(
|
131
|
+
first_line = assemble_first_line(
|
132
|
+
model_name, role_ref, style_ref, version=version
|
133
|
+
)
|
129
134
|
second_line = assemble_second_line(
|
130
135
|
width,
|
131
136
|
last_usage_info_ref,
|
@@ -149,21 +154,17 @@ def get_toolbar_func(
|
|
149
154
|
def get_custom_key_bindings():
|
150
155
|
"""
|
151
156
|
Returns prompt_toolkit KeyBindings for custom CLI shortcuts:
|
152
|
-
- F12:
|
157
|
+
- F12: Inserts 'Do It' and submits.
|
153
158
|
- Ctrl-Y: Inserts 'Yes' and submits (for confirmation prompts).
|
154
159
|
- Ctrl-N: Inserts 'No' and submits (for confirmation prompts).
|
155
160
|
"""
|
156
161
|
bindings = KeyBindings()
|
157
|
-
_f12_instructions = ["proceed", "go ahead", "continue", "next", "okay"]
|
158
|
-
_f12_index = {"value": 0}
|
159
162
|
|
160
163
|
@bindings.add("f12")
|
161
164
|
def _(event):
|
162
165
|
buf = event.app.current_buffer
|
163
|
-
|
164
|
-
buf.text = _f12_instructions[idx]
|
166
|
+
buf.text = "Do It"
|
165
167
|
buf.validate_and_handle()
|
166
|
-
_f12_index["value"] = (idx + 1) % len(_f12_instructions)
|
167
168
|
|
168
169
|
@bindings.add("c-y")
|
169
170
|
def _(event):
|
@@ -177,6 +178,12 @@ def get_custom_key_bindings():
|
|
177
178
|
buf.text = "No"
|
178
179
|
buf.validate_and_handle()
|
179
180
|
|
181
|
+
@bindings.add("f1")
|
182
|
+
def _(event):
|
183
|
+
buf = event.app.current_buffer
|
184
|
+
buf.text = "/restart"
|
185
|
+
buf.validate_and_handle()
|
186
|
+
|
180
187
|
return bindings
|
181
188
|
|
182
189
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version: 1.
|
4
|
-
Summary: Natural Language
|
3
|
+
Version: 1.14.0
|
4
|
+
Summary: Natural Language Programming Agent,
|
5
5
|
Author-email: João Pinto <joao.pinto@gmail.com>
|
6
6
|
License-Expression: MIT
|
7
7
|
Project-URL: homepage, https://janito.dev
|
@@ -13,7 +13,6 @@ Requires-Python: >=3.10
|
|
13
13
|
Description-Content-Type: text/markdown
|
14
14
|
License-File: LICENSE
|
15
15
|
Requires-Dist: beautifulsoup4
|
16
|
-
Requires-Dist: docstring-parser
|
17
16
|
Requires-Dist: flask
|
18
17
|
Requires-Dist: jinja2
|
19
18
|
Requires-Dist: openai
|
@@ -21,17 +20,22 @@ Requires-Dist: pathspec
|
|
21
20
|
Requires-Dist: prompt_toolkit
|
22
21
|
Requires-Dist: requests
|
23
22
|
Requires-Dist: rich
|
24
|
-
Requires-Dist: toml
|
25
23
|
Requires-Dist: lxml
|
24
|
+
Requires-Dist: PyYAML
|
25
|
+
Requires-Dist: quart
|
26
|
+
Requires-Dist: questionary
|
26
27
|
Provides-Extra: docs
|
27
28
|
Requires-Dist: mkdocs>=1.5.3; extra == "docs"
|
28
29
|
Requires-Dist: mkdocs-material>=9.4.8; extra == "docs"
|
29
30
|
Dynamic: license-file
|
30
31
|
|
31
|
-
# 🚀 Janito: Natural Language
|
32
|
+
# 🚀 Janito: Natural Language Programming Agent
|
32
33
|
|
33
34
|
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.
|
34
35
|
|
36
|
+

|
37
|
+
|
38
|
+
|
35
39
|
For a technical overview, see the [Architecture Guide](docs/reference/architecture.md).
|
36
40
|
|
37
41
|
## 📖 Full Documentation & Overview
|
@@ -1,15 +1,14 @@
|
|
1
1
|
[project]
|
2
2
|
name = "janito"
|
3
3
|
|
4
|
-
version = "1.
|
5
|
-
description = "Natural Language
|
4
|
+
version = "1.14.0"
|
5
|
+
description = "Natural Language Programming Agent,"
|
6
6
|
authors = [
|
7
7
|
{ name = "João Pinto", email = "joao.pinto@gmail.com" }
|
8
8
|
]
|
9
9
|
requires-python = ">=3.10"
|
10
10
|
dependencies = [
|
11
11
|
"beautifulsoup4",
|
12
|
-
"docstring-parser",
|
13
12
|
"flask",
|
14
13
|
"jinja2",
|
15
14
|
"openai",
|
@@ -17,8 +16,10 @@ dependencies = [
|
|
17
16
|
"prompt_toolkit",
|
18
17
|
"requests",
|
19
18
|
"rich",
|
20
|
-
"
|
21
|
-
"
|
19
|
+
"lxml",
|
20
|
+
"PyYAML",
|
21
|
+
"quart",
|
22
|
+
"questionary"
|
22
23
|
]
|
23
24
|
license = "MIT"
|
24
25
|
readme = "README.md"
|
janito-1.13.0/janito/__init__.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "1.13.0"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{janito-1.13.0 → janito-1.14.0}/janito/agent/tools/validate_file_syntax/markdown_validator.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|