janito 2.8.0__tar.gz → 2.9.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.
Files changed (298) hide show
  1. {janito-2.8.0 → janito-2.9.0}/CHANGELOG.md +15 -0
  2. janito-2.9.0/CNAME +1 -0
  3. {janito-2.8.0 → janito-2.9.0}/PKG-INFO +8 -8
  4. {janito-2.8.0 → janito-2.9.0}/README.md +5 -5
  5. {janito-2.8.0 → janito-2.9.0}/docs/Interfaces.txt +1 -1
  6. janito-2.9.0/docs/concepts/human-guided-ai.md +87 -0
  7. {janito-2.8.0 → janito-2.9.0}/docs/concepts/index.md +2 -0
  8. {janito-2.8.0 → janito-2.9.0}/docs/deepseek-setup.md +1 -1
  9. {janito-2.8.0 → janito-2.9.0}/docs/drivers.md +3 -3
  10. {janito-2.8.0 → janito-2.9.0}/docs/guides/configuration.md +18 -2
  11. {janito-2.8.0 → janito-2.9.0}/docs/guides/developing.md +2 -2
  12. {janito-2.8.0 → janito-2.9.0}/docs/guides/disabled-tools.md +7 -4
  13. {janito-2.8.0 → janito-2.9.0}/docs/guides/installation.md +1 -1
  14. {janito-2.8.0 → janito-2.9.0}/docs/moonshotai-setup.md +1 -1
  15. {janito-2.8.0 → janito-2.9.0}/docs/reference/cli-options.md +6 -7
  16. {janito-2.8.0 → janito-2.9.0}/docs/tools-index.md +1 -1
  17. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/session.py +24 -6
  18. janito-2.9.0/janito/cli/chat_mode/shell/commands/_priv_status.py +13 -0
  19. janito-2.9.0/janito/cli/cli_commands/list_config.py +31 -0
  20. janito-2.9.0/janito/cli/cli_commands/list_profiles.py +79 -0
  21. {janito-2.8.0 → janito-2.9.0}/janito/cli/cli_commands/show_config.py +4 -11
  22. {janito-2.8.0 → janito-2.9.0}/janito/cli/core/getters.py +14 -1
  23. {janito-2.8.0 → janito-2.9.0}/janito/cli/main_cli.py +51 -2
  24. {janito-2.8.0 → janito-2.9.0}/janito/config.py +1 -0
  25. {janito-2.8.0 → janito-2.9.0}/janito/config_manager.py +11 -2
  26. {janito-2.8.0 → janito-2.9.0}/janito/drivers/openai/driver.py +3 -2
  27. {janito-2.8.0 → janito-2.9.0}/janito/llm/provider.py +1 -1
  28. {janito-2.8.0 → janito-2.9.0}/janito/providers/azure_openai/provider.py +2 -2
  29. {janito-2.8.0 → janito-2.9.0}/janito/providers/deepseek/provider.py +1 -1
  30. {janito-2.8.0 → janito-2.9.0}/janito/providers/google/provider.py +1 -1
  31. {janito-2.8.0 → janito-2.9.0}/janito/providers/groq/model_info.py +0 -1
  32. {janito-2.8.0 → janito-2.9.0}/janito/providers/moonshotai/provider.py +1 -1
  33. {janito-2.8.0 → janito-2.9.0}/janito/providers/openai/provider.py +1 -1
  34. {janito-2.8.0 → janito-2.9.0}/janito.egg-info/PKG-INFO +8 -8
  35. {janito-2.8.0 → janito-2.9.0}/janito.egg-info/SOURCES.txt +5 -1
  36. {janito-2.8.0 → janito-2.9.0}/mkdocs.yml +2 -1
  37. {janito-2.8.0 → janito-2.9.0}/pyproject.toml +2 -2
  38. {janito-2.8.0 → janito-2.9.0}/tests/test_disabled_tools.py +21 -29
  39. janito-2.8.0/docs/terms.md +0 -44
  40. {janito-2.8.0 → janito-2.9.0}/.codespellrc +0 -0
  41. {janito-2.8.0 → janito-2.9.0}/.gitattributes +0 -0
  42. {janito-2.8.0 → janito-2.9.0}/.github/workflows/python-app.yml +0 -0
  43. {janito-2.8.0 → janito-2.9.0}/.gitignore +0 -0
  44. {janito-2.8.0 → janito-2.9.0}/.pre-commit-config.yaml +0 -0
  45. {janito-2.8.0 → janito-2.9.0}/.secrets.baseline +0 -0
  46. {janito-2.8.0 → janito-2.9.0}/.vscode/settings.json +0 -0
  47. {janito-2.8.0 → janito-2.9.0}/LICENSE +0 -0
  48. {janito-2.8.0 → janito-2.9.0}/README-dev.md +0 -0
  49. {janito-2.8.0 → janito-2.9.0}/UPDATING_DOCS.md +0 -0
  50. {janito-2.8.0 → janito-2.9.0}/adding_mcp.txt +0 -0
  51. {janito-2.8.0 → janito-2.9.0}/docs/DIV.md +0 -0
  52. {janito-2.8.0 → janito-2.9.0}/docs/TOOLBAR-STYLING.md +0 -0
  53. {janito-2.8.0 → janito-2.9.0}/docs/about/costs.md +0 -0
  54. {janito-2.8.0 → janito-2.9.0}/docs/about/vs-webchats.md +0 -0
  55. {janito-2.8.0 → janito-2.9.0}/docs/about/why.md +0 -0
  56. {janito-2.8.0 → janito-2.9.0}/docs/alternatives.md +0 -0
  57. {janito-2.8.0 → janito-2.9.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  58. {janito-2.8.0 → janito-2.9.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
  59. {janito-2.8.0 → janito-2.9.0}/docs/code_intelligence/code-generation-observability.md +0 -0
  60. {janito-2.8.0 → janito-2.9.0}/docs/code_intelligence/our-approach.md +0 -0
  61. {janito-2.8.0 → janito-2.9.0}/docs/code_intelligence/why-string-replacement.md +0 -0
  62. {janito-2.8.0 → janito-2.9.0}/docs/concepts/analysis-style.md +0 -0
  63. {janito-2.8.0 → janito-2.9.0}/docs/concepts/language-model-clients.md +0 -0
  64. {janito-2.8.0 → janito-2.9.0}/docs/concepts/prompt-design-style.md +0 -0
  65. {janito-2.8.0 → janito-2.9.0}/docs/driver-flow.md +0 -0
  66. {janito-2.8.0 → janito-2.9.0}/docs/driver-request-cancellation.md +0 -0
  67. {janito-2.8.0 → janito-2.9.0}/docs/drivers/events.md +0 -0
  68. {janito-2.8.0 → janito-2.9.0}/docs/event-bus.md +0 -0
  69. {janito-2.8.0 → janito-2.9.0}/docs/guides/profiles.md +0 -0
  70. {janito-2.8.0 → janito-2.9.0}/docs/guides/prompting/README.md +0 -0
  71. {janito-2.8.0 → janito-2.9.0}/docs/guides/single-shot-terminal.md +0 -0
  72. {janito-2.8.0 → janito-2.9.0}/docs/guides/terminal-shell.md +0 -0
  73. {janito-2.8.0 → janito-2.9.0}/docs/guides/tools-developer-guide.md +0 -0
  74. {janito-2.8.0 → janito-2.9.0}/docs/guides/using.md +0 -0
  75. {janito-2.8.0 → janito-2.9.0}/docs/guides/using_tools.md +0 -0
  76. {janito-2.8.0 → janito-2.9.0}/docs/imgs/code-generation-observability.png +0 -0
  77. {janito-2.8.0 → janito-2.9.0}/docs/imgs/code_generation_observability.png +0 -0
  78. {janito-2.8.0 → janito-2.9.0}/docs/imgs/happy-programmer.png +0 -0
  79. {janito-2.8.0 → janito-2.9.0}/docs/imgs/happy-programmer.svg +0 -0
  80. {janito-2.8.0 → janito-2.9.0}/docs/imgs/terminal-one-shot.png +0 -0
  81. {janito-2.8.0 → janito-2.9.0}/docs/imgs/terminal-shell.png +0 -0
  82. {janito-2.8.0 → janito-2.9.0}/docs/imgs/terminal_one_shot.png +0 -0
  83. {janito-2.8.0 → janito-2.9.0}/docs/imgs/terminal_shell.png +0 -0
  84. {janito-2.8.0 → janito-2.9.0}/docs/index.md +0 -0
  85. {janito-2.8.0 → janito-2.9.0}/docs/llm-drivers-required-config.md +0 -0
  86. {janito-2.8.0 → janito-2.9.0}/docs/llm-drivers.md +0 -0
  87. {janito-2.8.0 → janito-2.9.0}/docs/meta/developer-toolchain.md +0 -0
  88. {janito-2.8.0 → janito-2.9.0}/docs/meta/quality-checks.txt +0 -0
  89. {janito-2.8.0 → janito-2.9.0}/docs/reference/api.md +0 -0
  90. {janito-2.8.0 → janito-2.9.0}/docs/reference/azure-openai.md +0 -0
  91. {janito-2.8.0 → janito-2.9.0}/docs/reference/message-handler-model.md +0 -0
  92. {janito-2.8.0 → janito-2.9.0}/docs/reference/rich-message-handler.md +0 -0
  93. {janito-2.8.0 → janito-2.9.0}/docs/security.md +0 -0
  94. {janito-2.8.0 → janito-2.9.0}/docs/supported-providers-models.md +0 -0
  95. {janito-2.8.0 → janito-2.9.0}/docs/tools/search-text.md +0 -0
  96. {janito-2.8.0 → janito-2.9.0}/docs/tools-natural-results.md +0 -0
  97. {janito-2.8.0 → janito-2.9.0}/docs/tools-precision.md +0 -0
  98. {janito-2.8.0 → janito-2.9.0}/git_diff.txt +0 -0
  99. {janito-2.8.0 → janito-2.9.0}/github_diff +0 -0
  100. {janito-2.8.0 → janito-2.9.0}/janito/__init__.py +0 -0
  101. {janito-2.8.0 → janito-2.9.0}/janito/__main__.py +0 -0
  102. {janito-2.8.0 → janito-2.9.0}/janito/_version.py +0 -0
  103. {janito-2.8.0 → janito-2.9.0}/janito/agent/setup_agent.py +0 -0
  104. {janito-2.8.0 → janito-2.9.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
  105. {janito-2.8.0 → janito-2.9.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
  106. {janito-2.8.0 → janito-2.9.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
  107. {janito-2.8.0 → janito-2.9.0}/janito/cli/__init__.py +0 -0
  108. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/bindings.py +0 -0
  109. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/chat_entry.py +0 -0
  110. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/prompt_style.py +0 -0
  111. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/script_runner.py +0 -0
  112. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/session_profile_select.py +0 -0
  113. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  114. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
  115. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  116. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  117. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  118. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  119. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  120. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
  121. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
  122. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  123. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  124. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  125. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  126. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
  127. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  128. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
  129. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  130. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  131. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  132. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
  133. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  134. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  135. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
  136. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  137. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
  138. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  139. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
  140. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  141. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  142. {janito-2.8.0 → janito-2.9.0}/janito/cli/chat_mode/toolbar.py +0 -0
  143. {janito-2.8.0 → janito-2.9.0}/janito/cli/cli_commands/list_models.py +0 -0
  144. {janito-2.8.0 → janito-2.9.0}/janito/cli/cli_commands/list_providers.py +0 -0
  145. {janito-2.8.0 → janito-2.9.0}/janito/cli/cli_commands/list_tools.py +0 -0
  146. {janito-2.8.0 → janito-2.9.0}/janito/cli/cli_commands/model_selection.py +0 -0
  147. {janito-2.8.0 → janito-2.9.0}/janito/cli/cli_commands/model_utils.py +0 -0
  148. {janito-2.8.0 → janito-2.9.0}/janito/cli/cli_commands/set_api_key.py +0 -0
  149. {janito-2.8.0 → janito-2.9.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
  150. {janito-2.8.0 → janito-2.9.0}/janito/cli/config.py +0 -0
  151. {janito-2.8.0 → janito-2.9.0}/janito/cli/console.py +0 -0
  152. {janito-2.8.0 → janito-2.9.0}/janito/cli/core/__init__.py +0 -0
  153. {janito-2.8.0 → janito-2.9.0}/janito/cli/core/event_logger.py +0 -0
  154. {janito-2.8.0 → janito-2.9.0}/janito/cli/core/runner.py +0 -0
  155. {janito-2.8.0 → janito-2.9.0}/janito/cli/core/setters.py +0 -0
  156. {janito-2.8.0 → janito-2.9.0}/janito/cli/core/unsetters.py +0 -0
  157. {janito-2.8.0 → janito-2.9.0}/janito/cli/main.py +0 -0
  158. {janito-2.8.0 → janito-2.9.0}/janito/cli/prompt_core.py +0 -0
  159. {janito-2.8.0 → janito-2.9.0}/janito/cli/prompt_handler.py +0 -0
  160. {janito-2.8.0 → janito-2.9.0}/janito/cli/prompt_setup.py +0 -0
  161. {janito-2.8.0 → janito-2.9.0}/janito/cli/rich_terminal_reporter.py +0 -0
  162. {janito-2.8.0 → janito-2.9.0}/janito/cli/single_shot_mode/__init__.py +0 -0
  163. {janito-2.8.0 → janito-2.9.0}/janito/cli/single_shot_mode/handler.py +0 -0
  164. {janito-2.8.0 → janito-2.9.0}/janito/cli/utils.py +0 -0
  165. {janito-2.8.0 → janito-2.9.0}/janito/cli/verbose_output.py +0 -0
  166. {janito-2.8.0 → janito-2.9.0}/janito/conversation_history.py +0 -0
  167. {janito-2.8.0 → janito-2.9.0}/janito/dir_walk_utils.py +0 -0
  168. {janito-2.8.0 → janito-2.9.0}/janito/driver_events.py +0 -0
  169. {janito-2.8.0 → janito-2.9.0}/janito/drivers/azure_openai/driver.py +0 -0
  170. {janito-2.8.0 → janito-2.9.0}/janito/drivers/dashscope.bak.zip +0 -0
  171. {janito-2.8.0 → janito-2.9.0}/janito/drivers/driver_registry.py +0 -0
  172. {janito-2.8.0 → janito-2.9.0}/janito/drivers/openai/README.md +0 -0
  173. {janito-2.8.0 → janito-2.9.0}/janito/drivers/openai_responses.bak.zip +0 -0
  174. {janito-2.8.0 → janito-2.9.0}/janito/event_bus/__init__.py +0 -0
  175. {janito-2.8.0 → janito-2.9.0}/janito/event_bus/bus.py +0 -0
  176. {janito-2.8.0 → janito-2.9.0}/janito/event_bus/event.py +0 -0
  177. {janito-2.8.0 → janito-2.9.0}/janito/event_bus/handler.py +0 -0
  178. {janito-2.8.0 → janito-2.9.0}/janito/event_bus/queue_bus.py +0 -0
  179. {janito-2.8.0 → janito-2.9.0}/janito/exceptions.py +0 -0
  180. {janito-2.8.0 → janito-2.9.0}/janito/formatting.py +0 -0
  181. {janito-2.8.0 → janito-2.9.0}/janito/formatting_token.py +0 -0
  182. {janito-2.8.0 → janito-2.9.0}/janito/gitignore_utils.py +0 -0
  183. {janito-2.8.0 → janito-2.9.0}/janito/i18n/__init__.py +0 -0
  184. {janito-2.8.0 → janito-2.9.0}/janito/i18n/messages.py +0 -0
  185. {janito-2.8.0 → janito-2.9.0}/janito/i18n/pt.py +0 -0
  186. {janito-2.8.0 → janito-2.9.0}/janito/llm/README.md +0 -0
  187. {janito-2.8.0 → janito-2.9.0}/janito/llm/__init__.py +0 -0
  188. {janito-2.8.0 → janito-2.9.0}/janito/llm/agent.py +0 -0
  189. {janito-2.8.0 → janito-2.9.0}/janito/llm/auth.py +0 -0
  190. {janito-2.8.0 → janito-2.9.0}/janito/llm/driver.py +0 -0
  191. {janito-2.8.0 → janito-2.9.0}/janito/llm/driver_config.py +0 -0
  192. {janito-2.8.0 → janito-2.9.0}/janito/llm/driver_config_builder.py +0 -0
  193. {janito-2.8.0 → janito-2.9.0}/janito/llm/driver_input.py +0 -0
  194. {janito-2.8.0 → janito-2.9.0}/janito/llm/message_parts.py +0 -0
  195. {janito-2.8.0 → janito-2.9.0}/janito/llm/model.py +0 -0
  196. {janito-2.8.0 → janito-2.9.0}/janito/perf_singleton.py +0 -0
  197. {janito-2.8.0 → janito-2.9.0}/janito/performance_collector.py +0 -0
  198. {janito-2.8.0 → janito-2.9.0}/janito/platform_discovery.py +0 -0
  199. {janito-2.8.0 → janito-2.9.0}/janito/provider_config.py +0 -0
  200. {janito-2.8.0 → janito-2.9.0}/janito/provider_registry.py +0 -0
  201. {janito-2.8.0 → janito-2.9.0}/janito/providers/__init__.py +0 -0
  202. {janito-2.8.0 → janito-2.9.0}/janito/providers/anthropic/model_info.py +0 -0
  203. {janito-2.8.0 → janito-2.9.0}/janito/providers/anthropic/provider.py +0 -0
  204. {janito-2.8.0 → janito-2.9.0}/janito/providers/azure_openai/model_info.py +0 -0
  205. {janito-2.8.0 → janito-2.9.0}/janito/providers/dashscope.bak.zip +0 -0
  206. {janito-2.8.0 → janito-2.9.0}/janito/providers/deepseek/__init__.py +0 -0
  207. {janito-2.8.0 → janito-2.9.0}/janito/providers/deepseek/model_info.py +0 -0
  208. {janito-2.8.0 → janito-2.9.0}/janito/providers/google/__init__.py +0 -0
  209. {janito-2.8.0 → janito-2.9.0}/janito/providers/google/model_info.py +0 -0
  210. {janito-2.8.0 → janito-2.9.0}/janito/providers/groq/__init__.py +0 -0
  211. {janito-2.8.0 → janito-2.9.0}/janito/providers/groq/provider.py +0 -0
  212. {janito-2.8.0 → janito-2.9.0}/janito/providers/moonshotai/__init__.py +0 -0
  213. {janito-2.8.0 → janito-2.9.0}/janito/providers/moonshotai/model_info.py +0 -0
  214. {janito-2.8.0 → janito-2.9.0}/janito/providers/openai/__init__.py +0 -0
  215. {janito-2.8.0 → janito-2.9.0}/janito/providers/openai/model_info.py +0 -0
  216. {janito-2.8.0 → janito-2.9.0}/janito/providers/openai/schema_generator.py +0 -0
  217. {janito-2.8.0 → janito-2.9.0}/janito/providers/registry.py +0 -0
  218. {janito-2.8.0 → janito-2.9.0}/janito/report_events.py +0 -0
  219. {janito-2.8.0 → janito-2.9.0}/janito/shell.bak.zip +0 -0
  220. {janito-2.8.0 → janito-2.9.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  221. {janito-2.8.0 → janito-2.9.0}/janito/tools/README.md +0 -0
  222. {janito-2.8.0 → janito-2.9.0}/janito/tools/__init__.py +0 -0
  223. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/__init__.py +0 -0
  224. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/__init__.py +0 -0
  225. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/adapter.py +0 -0
  226. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/ask_user.py +0 -0
  227. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/copy_file.py +0 -0
  228. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/create_directory.py +0 -0
  229. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/create_file.py +0 -0
  230. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/delete_text_in_file.py +0 -0
  231. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/fetch_url.py +0 -0
  232. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/find_files.py +0 -0
  233. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/get_file_outline/__init__.py +0 -0
  234. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/get_file_outline/core.py +0 -0
  235. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/get_file_outline/java_outline.py +0 -0
  236. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/get_file_outline/markdown_outline.py +0 -0
  237. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/get_file_outline/python_outline.py +0 -0
  238. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/get_file_outline/search_outline.py +0 -0
  239. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/move_file.py +0 -0
  240. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/open_html_in_browser.py +0 -0
  241. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/open_url.py +0 -0
  242. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/python_code_run.py +0 -0
  243. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/python_command_run.py +0 -0
  244. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/python_file_run.py +0 -0
  245. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/read_files.py +0 -0
  246. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/remove_directory.py +0 -0
  247. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/remove_file.py +0 -0
  248. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/replace_text_in_file.py +0 -0
  249. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/run_bash_command.py +0 -0
  250. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/run_powershell_command.py +0 -0
  251. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/search_text/__init__.py +0 -0
  252. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/search_text/core.py +0 -0
  253. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/search_text/match_lines.py +0 -0
  254. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/search_text/pattern_utils.py +0 -0
  255. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/search_text/traverse_directory.py +0 -0
  256. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/__init__.py +0 -0
  257. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/core.py +0 -0
  258. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/css_validator.py +0 -0
  259. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/html_validator.py +0 -0
  260. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/js_validator.py +0 -0
  261. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/json_validator.py +0 -0
  262. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/markdown_validator.py +0 -0
  263. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/ps1_validator.py +0 -0
  264. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/python_validator.py +0 -0
  265. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/xml_validator.py +0 -0
  266. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/validate_file_syntax/yaml_validator.py +0 -0
  267. {janito-2.8.0 → janito-2.9.0}/janito/tools/adapters/local/view_file.py +0 -0
  268. {janito-2.8.0 → janito-2.9.0}/janito/tools/disabled_tools.py +0 -0
  269. {janito-2.8.0 → janito-2.9.0}/janito/tools/inspect_registry.py +0 -0
  270. {janito-2.8.0 → janito-2.9.0}/janito/tools/outline_file.bak.zip +0 -0
  271. {janito-2.8.0 → janito-2.9.0}/janito/tools/path_security.py +0 -0
  272. {janito-2.8.0 → janito-2.9.0}/janito/tools/permissions.py +0 -0
  273. {janito-2.8.0 → janito-2.9.0}/janito/tools/permissions_parse.py +0 -0
  274. {janito-2.8.0 → janito-2.9.0}/janito/tools/tool_base.py +0 -0
  275. {janito-2.8.0 → janito-2.9.0}/janito/tools/tool_events.py +0 -0
  276. {janito-2.8.0 → janito-2.9.0}/janito/tools/tool_run_exception.py +0 -0
  277. {janito-2.8.0 → janito-2.9.0}/janito/tools/tool_use_tracker.py +0 -0
  278. {janito-2.8.0 → janito-2.9.0}/janito/tools/tool_utils.py +0 -0
  279. {janito-2.8.0 → janito-2.9.0}/janito/tools/tools_adapter.py +0 -0
  280. {janito-2.8.0 → janito-2.9.0}/janito/tools/tools_schema.py +0 -0
  281. {janito-2.8.0 → janito-2.9.0}/janito/utils.py +0 -0
  282. {janito-2.8.0 → janito-2.9.0}/janito.egg-info/dependency_links.txt +0 -0
  283. {janito-2.8.0 → janito-2.9.0}/janito.egg-info/entry_points.txt +0 -0
  284. {janito-2.8.0 → janito-2.9.0}/janito.egg-info/requires.txt +0 -0
  285. {janito-2.8.0 → janito-2.9.0}/janito.egg-info/top_level.txt +0 -0
  286. {janito-2.8.0 → janito-2.9.0}/pytest.ini +0 -0
  287. {janito-2.8.0 → janito-2.9.0}/requirements-dev.txt +0 -0
  288. {janito-2.8.0 → janito-2.9.0}/requirements.txt +0 -0
  289. {janito-2.8.0 → janito-2.9.0}/setup.cfg +0 -0
  290. {janito-2.8.0 → janito-2.9.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
  291. {janito-2.8.0 → janito-2.9.0}/tests/adapters/local/test_read_files.py +0 -0
  292. {janito-2.8.0 → janito-2.9.0}/tests/test_cli_list_models.py +0 -0
  293. {janito-2.8.0 → janito-2.9.0}/tests/test_cli_list_providers.py +0 -0
  294. {janito-2.8.0 → janito-2.9.0}/tests/test_cli_list_providers_moonshotai.py +0 -0
  295. {janito-2.8.0 → janito-2.9.0}/tests/test_cli_version.py +0 -0
  296. {janito-2.8.0 → janito-2.9.0}/tests/test_provider_moonshotai.py +0 -0
  297. {janito-2.8.0 → janito-2.9.0}/tools/release.py +0 -0
  298. {janito-2.8.0 → janito-2.9.0}/tox.ini +0 -0
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [Unreleased]
6
+ ### Changed
7
+ - Updated project URLs, author email, and documentation for migration to ikignosis organization.
8
+ - Updated repository links in documentation and configuration files to point to ikignosis GitHub organization.
9
+ - Changed maintainer email in provider modules to janito@ikignosis.org.
10
+ - Updated homepage and repo_url in pyproject.toml and mkdocs.yml to new organization URLs.
11
+
12
+ ### Added
13
+ - Added CNAME file for docs.ikignosis.org custom domain.
14
+ - Added CLI command to list available system prompt profiles (`list_profiles.py`).
15
+ - Added privilege status message utility (`_priv_status.py`).
16
+
17
+ ### Style
18
+ - Fixed formatting in CLI command and privilege status modules.
19
+
5
20
  ## [2.8.0] - 2025-07-16
6
21
  ### Added
7
22
  - **Groq provider**: New provider with support for moonshotai/kimi-k2-instruct model.
janito-2.9.0/CNAME ADDED
@@ -0,0 +1 @@
1
+ docs.ikignosis.org
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 2.8.0
3
+ Version: 2.9.0
4
4
  Summary: A new Python package called janito.
5
- Author-email: João Pinto <lamego.pinto@gmail.com>
6
- Project-URL: Homepage, https://github.com/janito-dev/janito
5
+ Author-email: João Pinto <janito@ikignosis.org>
6
+ Project-URL: Homepage, https://github.com/ikignosis/janito
7
7
  Requires-Python: >=3.7
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
@@ -30,7 +30,7 @@ Requires-Dist: questionary>=2.0.1; extra == "dev"
30
30
  Requires-Dist: setuptools_scm>=8.0; extra == "dev"
31
31
  Dynamic: license-file
32
32
 
33
- # Janito
33
+ # Janito, control you context
34
34
 
35
35
  [![PyPI version](https://badge.fury.io/py/janito.svg)](https://badge.fury.io/py/janito)
36
36
 
@@ -39,7 +39,7 @@ Janito is a command-line interface (CLI) tool for managing and interacting with
39
39
  ## Features
40
40
 
41
41
  - 🔑 Manage API keys and provider configurations
42
- - 🤖 Interact with multiple LLM providers (OpenAI, Google Gemini, Mistral, DeepSeek, and more)
42
+ - 🤖 Interact with multiple LLM providers (OpenAI, Google Gemini, DeepSeek, and more)
43
43
  - 🛠️ List and use a variety of registered tools
44
44
  - 📝 Submit prompts and receive responses directly from the CLI
45
45
  - 📋 List available models for each provider
@@ -61,7 +61,7 @@ Janito is a command-line interface (CLI) tool for managing and interacting with
61
61
  Janito is a Python package. Since this is a development version, you can install it directly from GitHub:
62
62
 
63
63
  ```bash
64
- pip install git+https://github.com/janito-dev/janito.git
64
+ pip install git+git@github.com:ikignosis/janito.git
65
65
  ```
66
66
 
67
67
  ### First launch and quick setup
@@ -307,7 +307,7 @@ For more information, see the documentation in the `docs/` directory or run `jan
307
307
 
308
308
  ## 📖 Detailed Documentation
309
309
 
310
- Full and up-to-date documentation is available at: https://janito-dev.github.io/janito/
310
+ Full and up-to-date documentation is available at: https://ikignosis.github.io/janito/
311
311
 
312
312
  ---
313
313
 
@@ -388,7 +388,7 @@ janito -p deepseek --list-models
388
388
  ## Ask Me Anything
389
389
 
390
390
  <div align="center">
391
- <a href="https://github.com/janito-dev/janito" title="Ask Me Anything">
391
+ <a href="git@github.com:ikignosis/janito.git" title="Ask Me Anything">
392
392
  <img width="250" src="docs/imgs/ama.png" alt="Ask Me Anything">
393
393
  </a>
394
394
  </div
@@ -1,4 +1,4 @@
1
- # Janito
1
+ # Janito, control you context
2
2
 
3
3
  [![PyPI version](https://badge.fury.io/py/janito.svg)](https://badge.fury.io/py/janito)
4
4
 
@@ -7,7 +7,7 @@ Janito is a command-line interface (CLI) tool for managing and interacting with
7
7
  ## Features
8
8
 
9
9
  - 🔑 Manage API keys and provider configurations
10
- - 🤖 Interact with multiple LLM providers (OpenAI, Google Gemini, Mistral, DeepSeek, and more)
10
+ - 🤖 Interact with multiple LLM providers (OpenAI, Google Gemini, DeepSeek, and more)
11
11
  - 🛠️ List and use a variety of registered tools
12
12
  - 📝 Submit prompts and receive responses directly from the CLI
13
13
  - 📋 List available models for each provider
@@ -29,7 +29,7 @@ Janito is a command-line interface (CLI) tool for managing and interacting with
29
29
  Janito is a Python package. Since this is a development version, you can install it directly from GitHub:
30
30
 
31
31
  ```bash
32
- pip install git+https://github.com/janito-dev/janito.git
32
+ pip install git+git@github.com:ikignosis/janito.git
33
33
  ```
34
34
 
35
35
  ### First launch and quick setup
@@ -275,7 +275,7 @@ For more information, see the documentation in the `docs/` directory or run `jan
275
275
 
276
276
  ## 📖 Detailed Documentation
277
277
 
278
- Full and up-to-date documentation is available at: https://janito-dev.github.io/janito/
278
+ Full and up-to-date documentation is available at: https://ikignosis.github.io/janito/
279
279
 
280
280
  ---
281
281
 
@@ -356,7 +356,7 @@ janito -p deepseek --list-models
356
356
  ## Ask Me Anything
357
357
 
358
358
  <div align="center">
359
- <a href="https://github.com/janito-dev/janito" title="Ask Me Anything">
359
+ <a href="git@github.com:ikignosis/janito.git" title="Ask Me Anything">
360
360
  <img width="250" src="docs/imgs/ama.png" alt="Ask Me Anything">
361
361
  </a>
362
362
  </div
@@ -2,7 +2,7 @@
2
2
  CLI:
3
3
  requirements: config manager
4
4
  --set
5
- --show-config
5
+ --show-config # shows config file path and current config
6
6
 
7
7
  requirements: provider registry
8
8
  --list-providers
@@ -0,0 +1,87 @@
1
+ # Human-Guided AI: A Principle for Empowerment Through Tools and Instruments
2
+
3
+ In the accelerating world of artificial intelligence, the **Human-Guided AI principle** emphasizes that AI systems exist as **extensions of human intent**, designed to deliver powerful tools and instruments under human direction. This framework not only clarifies the role of AI in society but also anchors ethical responsibility and governance firmly with users and designers.
4
+
5
+ ---
6
+
7
+ ## Human-Guided AI Principle
8
+
9
+ At the core, the **Human-Guided AI principle** asserts that every AI system should operate as a **tool for human purposes**, avoiding undue autonomy—that is, preventing the system from acting or making decisions beyond the scope of intended human oversight and control. AI under this principle is valued for its capacity to augment human capabilities, automate repetitive tasks, and generate novel insights—all while remaining firmly under human oversight and ethical accountability.
10
+
11
+ ---
12
+
13
+ ## What Are AI Instruments?
14
+
15
+ Under the Human-Guided AI principle, an **AI instrument** is any system explicitly designed as a **tool for human use**, with clear boundaries of operation defined by its creators and users. Unlike autonomous AI agents, which may perceive environments and pursue goals independently, AI instruments function strictly as **means to human-defined ends**.
16
+
17
+ > **Instrumentality:** Under Human-Guided AI, every algorithm and model is a means to amplify human skill and judgment, never to supplant it.
18
+
19
+ ---
20
+
21
+ ## Examples of AI Instruments
22
+
23
+ AI instruments manifest across diverse domains, each embodying the Human-Guided AI principle in action:
24
+
25
+ * **Scientific Discovery Tools**
26
+ AI-driven simulations, drug-design algorithms, and protein-folding models (e.g., AlphaFold) accelerate human-led research and hypothesis testing.
27
+
28
+ * **Creative Assistance**
29
+ Generative text, image, and music platforms serve as digital co-creators, enabling artists and writers to explore new creative horizons.
30
+
31
+ * **Data Analysis**
32
+ Machine learning frameworks that surface patterns in massive datasets support economists, epidemiologists, and climate scientists in human-led decision making.
33
+
34
+ * **Accessibility Technology**
35
+ Speech-to-text converters, real-time translators, and other assistive AIs extend communication capabilities, underpinned by human values of inclusion.
36
+
37
+ ---
38
+
39
+ ## Instruments and Agents: Complementary Roles under Human-Guided AI
40
+
41
+ While similar technologies underlie both AI instruments and AI agents, the **Human-Guided AI principle** differentiates them by intent and control:
42
+
43
+ | Aspect | AI Instrument (Human-Guided) | AI Agent |
44
+ | ------------------ | --------------------------------- | ----------------------------------- |
45
+ | **Role** | Tool under human direction | Autonomous actor |
46
+ | **Control** | Defined and managed by users | Independent decision making |
47
+ | **Responsibility** | Clearly human | Shared or ambiguous |
48
+ | **Examples** | ChatGPT as co-writer, AI art apps | Self-driving vehicles, trading bots |
49
+
50
+ This spectrum underscores that applying the Human-Guided AI principle ensures clarity in both design and governance.
51
+
52
+ ---
53
+
54
+ ## Why Human-Guided AI Matters
55
+
56
+ Framing AI through this principle:
57
+
58
+ 1. **Centers human creativity and judgment.**
59
+ 2. **Anchors accountability with tool operators and designers.**
60
+ 3. **Guides policy toward regulating instruments rather than hypothetical actors.**
61
+
62
+ By viewing AI as instruments of human agency, stakeholders can better craft regulations, standards, and best practices that prioritize human welfare and ethical use.
63
+
64
+ ---
65
+
66
+ ## Toward a Responsible Future
67
+
68
+ Integrating the Human-Guided AI principle into development and governance prompts key questions:
69
+
70
+ * Are our systems built to amplify human potential or to operate with hidden objectives?
71
+ * Do we embed technical controls in AI tools and instruments to require explicit user validation and prevent blind acceptance of AI outputs?
72
+
73
+ Adopting Human-Guided AI as a guiding philosophy empowers researchers, policymakers, and communities to ensure that AI technologies remain true to human values and oversight.
74
+
75
+ ---
76
+
77
+ ## Security & Safety Considerations
78
+
79
+ Although AI instruments amplify human capability, they can, like any other tool, be mis-used to cause harm. The Human-Guided AI principle therefore makes **no claim of providing additional, intrinsic technical safeguards beyond those that already apply at the point of use**. Ultimate responsibility for secure, lawful, and ethical operation lies with each user. Every deployment must adhere to the laws, regulations, and policies that govern the user’s jurisdiction and domain.
80
+
81
+ ---
82
+
83
+ ## Conclusion
84
+
85
+ The **Human-Guided AI principle** reframes artificial intelligence not as an independent mind but as a suite of instruments and tools—each a testament to human ingenuity and responsibility. As we harness these capabilities, we must remember:
86
+
87
+ > **Tools are only as good as the skill and integrity of those who wield them.**
@@ -9,4 +9,6 @@ This section collects foundational explanations, terminology, and conventions us
9
9
  - [Prompt Analysis Style](analysis-style.md)
10
10
  - [Prompt Design Style](prompt-design-style.md)
11
11
 
12
+ - [Human-Guided AI Principle](human-guided-ai.md)
13
+
12
14
  *More topics will be added here as the documentation evolves.*
@@ -45,7 +45,7 @@ janito -p deepseek -m deepseek-reasoner "Your prompt here"
45
45
 
46
46
  ## 5. Verify Your Configuration
47
47
 
48
- Show your current configuration:
48
+ Show your current configuration (the config file path will be shown at the top):
49
49
 
50
50
  ```bash
51
51
  janito --show-config
@@ -53,7 +53,7 @@ See `janito/drivers/openai/driver.py` for a complete example. Highlights:
53
53
  - Handles cancellation and error reporting robustly.
54
54
 
55
55
  ## References
56
- - Base class: [`janito/llm/driver.py`](https://github.com/janito-dev/janito/tree/main/janito/llm/driver.py)
57
- - OpenAI driver: [`janito/drivers/openai/driver.py`](https://github.com/janito-dev/janito/tree/main/janito/drivers/openai/driver.py)
58
- - Driver events: [`janito/driver_events.py`](https://github.com/janito-dev/janito/tree/main/janito/driver_events.py)
56
+ - Base class: [`janito/llm/driver.py`](git@github.com:ikignosis/janito.git/tree/main/janito/llm/driver.py)
57
+ - OpenAI driver: [`janito/drivers/openai/driver.py`](git@github.com:ikignosis/janito.git/tree/main/janito/drivers/openai/driver.py)
58
+ - Driver events: [`janito/driver_events.py`](git@github.com:ikignosis/janito.git/tree/main/janito/driver_events.py)
59
59
 
@@ -16,9 +16,23 @@ janito -p openai -m gpt-3.5-turbo "Your prompt here"
16
16
  - Use `-m MODEL_NAME` to select a model for the provider.
17
17
  - See [CLI Options](../reference/cli-options.md) for the full list of flags.
18
18
 
19
- ## 3. Configuration File
19
+ ## 2. Using Custom Configuration Files
20
20
 
21
- Janito uses a `config.json` file located in the `.janito` directory under your home folder for persistent settings.
21
+ You can use the `-c NAME` or `--config NAME` option to load and save configuration from a custom file:
22
+
23
+ ```bash
24
+ janito -c myproject "Prompt for my project"
25
+ ```
26
+
27
+ This will use the config file at:
28
+ - Windows: `C:\Users\<YourUser>\.janito\configs\myproject.json`
29
+ - Linux/macOS: `/home/<youruser>/.janito/configs/myproject.json`
30
+
31
+ If the file does not exist, it will be created automatically when you save settings.
32
+
33
+ ## 3. Default Configuration File
34
+
35
+ By default, Janito uses a `config.json` file located in the `.janito` directory under your home folder for persistent settings.
22
36
 
23
37
  **Path:**
24
38
 
@@ -34,6 +48,8 @@ Show the current configuration with:
34
48
  janito --show-config
35
49
  ```
36
50
 
51
+ This will display the config file path at the top. If you use `-c NAME`, this will show the configuration for that custom file and its path.
52
+
37
53
  ## Advanced Configuration
38
54
 
39
55
  ### Disabling Tools
@@ -7,7 +7,7 @@ This guide explains how to set up Janito for development and install the latest
7
7
  To install the most recent development version from the GitHub main branch, run:
8
8
 
9
9
  ```bash
10
- pip install git+https://github.com/janito-dev/janito.git@main
10
+ pip install git+git@github.com:ikignosis/janito.git@main
11
11
  ```
12
12
 
13
13
  ## Editable Install for Local Development
@@ -15,7 +15,7 @@ pip install git+https://github.com/janito-dev/janito.git@main
15
15
  To make code changes and see them reflected immediately (without reinstalling), use an editable install:
16
16
 
17
17
  ```bash
18
- git clone https://github.com/janito-dev/janito.git
18
+ git clone git@github.com:ikignosis/janito.git
19
19
  cd janito
20
20
  git checkout main
21
21
  pip install -e .
@@ -25,7 +25,7 @@ janito --set disabled_tools=""
25
25
 
26
26
  ### Via Configuration File
27
27
 
28
- Edit your `config.json` file (located in `~/.janito/config.json`) and add the `disabled_tools` key:
28
+ Edit your configuration file (by default `~/.janito/config.json`, or a custom file if using `-c NAME` such as `~/.janito/configs/NAME.json`) and add the `disabled_tools` key:
29
29
 
30
30
  ```json
31
31
  {
@@ -35,6 +35,8 @@ Edit your `config.json` file (located in `~/.janito/config.json`) and add the `d
35
35
  }
36
36
  ```
37
37
 
38
+ If you use `-c NAME`, the disabled tools will be saved and loaded from that custom config file.
39
+
38
40
  ## Viewing Disabled Tools
39
41
 
40
42
  Check which tools are currently disabled:
@@ -43,8 +45,9 @@ Check which tools are currently disabled:
43
45
  janito --show-config
44
46
  ```
45
47
 
46
- This will display a section showing your disabled tools, for example:
48
+ This will display the config file path and a section showing your disabled tools, for example:
47
49
  ```
50
+ Config file: /home/youruser/.janito/config.json
48
51
  Disabled tools: ask_user, python_code_run
49
52
  ```
50
53
 
@@ -116,6 +119,6 @@ Use the exact tool names as shown in `janito --list-tools`. Common tool names in
116
119
 
117
120
  ### Configuration Not Persisting
118
121
 
119
- - Verify the config file path: `janito --show-config` shows the location
120
- - Check file permissions for your `~/.janito/config.json` file
122
+ - Verify the config file path: `janito --show-config` shows the config file location at the top (if using `-c NAME`, it will show the custom config file)
123
+ - Check file permissions for your config file
121
124
  - Ensure no syntax errors in the JSON configuration
@@ -17,7 +17,7 @@ pip install janito
17
17
 
18
18
  ### From GitHub (Development Version)
19
19
  ```bash
20
- pip install git+https://github.com/janito-dev/janito.git
20
+ pip install git+git@github.com:ikignosis/janito.git
21
21
  ```
22
22
 
23
23
  > For development setup and contributing, see [Developing & Extending](developing.md).
@@ -48,7 +48,7 @@ janito -p moonshotai -m kimi-k1-32k "Your prompt here"
48
48
 
49
49
  ## 5. Verify Your Configuration
50
50
 
51
- Show your current configuration:
51
+ Show your current configuration (the config file path will be shown at the top):
52
52
 
53
53
  ```bash
54
54
  janito --show-config
@@ -1,6 +1,6 @@
1
1
  # 🏁 Janito CLI Options
2
2
 
3
- This page documents all command-line options for Janito, as shown by `janito --help`. These options temporarily override configuration for a single session and do not persist changes to config files.
3
+ This page documents all command-line options for Janito, as shown by `janito --help`. These options temporarily override configuration for a single session and do not persist changes to config files unless you use `--set` or a custom config file with `-c`.
4
4
 
5
5
  **Syntax:** `janito [options] [prompt]`
6
6
 
@@ -14,6 +14,7 @@ These options are useful for one-off runs, scripting, or experimentation. They t
14
14
  |--------|-------------|
15
15
  | `prompt` | Prompt to submit (optional positional argument) |
16
16
  | `-h`, `--help` | Show this help message and exit |
17
+ | `-c NAME`, `--config NAME` | Use custom configuration file `~/.janito/configs/NAME.json` instead of the default config.json |
17
18
  | `--verbose-api` | Print API calls and responses of LLM driver APIs for debugging/tracing. |
18
19
  | `--verbose-tools` | Print info messages for tool execution in tools adapter. |
19
20
  | `--verbose-agent` | Print info messages for agent event and message part handling. |
@@ -25,21 +26,19 @@ These options are useful for one-off runs, scripting, or experimentation. They t
25
26
  | `--unset KEY` | Unset (remove) a config key |
26
27
  | `--version` | Show program's version number and exit |
27
28
  | `--list-tools` | List all registered tools |
28
- | `--show-config` | Show the current config |
29
+ | `--show-config` | Show the current config and config file path |
30
+ | `--list-config` | List all config files (default and custom) |
29
31
  | `--list-providers` | List supported LLM providers |
30
32
  | `-l`, `--list-models` | List all supported models |
31
33
  | `--set-api-key API_KEY` | Set API key for the provider (requires -p PROVIDER) |
32
34
  | `--set KEY=VALUE` | Set a config key |
33
35
  | `-s SYSTEM_PROMPT`, `--system SYSTEM_PROMPT` | Set a system prompt |
34
36
  | `-S`, `--show-system` | Show the resolved system prompt for the main agent |
35
-
36
37
  | `-p PROVIDER`, `--provider PROVIDER` | Select the provider |
37
38
  | `-m MODEL`, `--model MODEL` | Select the model |
38
39
  | `-t TEMPERATURE`, `--temperature TEMPERATURE` | Set the temperature |
39
40
  | `-v`, `--verbose` | Print extra information before answering |
40
41
  | `-R`, `--raw` | Print the raw JSON response from the OpenAI API (if applicable) |
41
-
42
-
43
42
  | `--effort {low, medium, high, none}` | Set the reasoning effort for models that support it (low, medium, high, none) |
44
43
  | `-e`, `--event-log` | Enable event logging to the system bus |
45
44
  | `--event-debug` | Print debug info on event subscribe/submit methods |
@@ -49,7 +48,7 @@ These options are useful for one-off runs, scripting, or experimentation. They t
49
48
  ```sh
50
49
  janito [options] [prompt]
51
50
  janito -p openai -m gpt-3.5-turbo "Your prompt here"
52
- janito -p google -m gemini-2.5-flash "Your prompt here"
51
+ janito -c myproject -p openai "Prompt for my project (uses ~/.janito/configs/myproject.json)"
53
52
  janito --list-tools
54
53
  janito --web # Enable clickable file links via web viewer
55
54
  janito -u -x --read --write "Run a tool with unrestricted paths (DANGEROUS)"
@@ -96,7 +95,7 @@ The `--set` command supports the following configuration keys:
96
95
  | `model` | Set the default model | `--set model=gpt-4.1` |
97
96
  | `max_tokens` | Set maximum tokens | `--set max_tokens=4000` |
98
97
  | `base_url` | Set custom API base URL | `--set base_url=https://api.example.com` |
99
- | `tool_permissions` | Set tool permission level | `--set tool_permissions=rwe` |
98
+ | `tool_permissions` | Set tool permission level | `--set tool_permissions=rwx` |
100
99
  | `disabled_tools` | Disable specific tools | `--set disabled_tools=ask_user,python_code_run` |
101
100
 
102
101
  For more details on disabling tools, see the [Disabling Tools Guide](../guides/disabled-tools.md).
@@ -62,7 +62,7 @@ janito --set disabled_tools=ask_user
62
62
  # Disable code execution
63
63
  janito --set disabled_tools=python_code_run,run_powershell_command
64
64
 
65
- # View current disabled tools
65
+ # View current disabled tools and config file path
66
66
  janito --show-config
67
67
  ```
68
68
 
@@ -72,11 +72,13 @@ class ChatSession:
72
72
  self.provider_instance = provider_instance
73
73
  self.llm_driver_config = llm_driver_config
74
74
 
75
- profile, role, profile_system_prompt, no_tools_mode = self._select_profile_and_role(args, role)
75
+ profile, role, profile_system_prompt, no_tools_mode = (
76
+ self._select_profile_and_role(args, role)
77
+ )
76
78
  # Propagate no_tools_mode flag to downstream components via args
77
- if args is not None and not hasattr(args, 'no_tools_mode'):
79
+ if args is not None and not hasattr(args, "no_tools_mode"):
78
80
  try:
79
- setattr(args, 'no_tools_mode', no_tools_mode)
81
+ setattr(args, "no_tools_mode", no_tools_mode)
80
82
  except Exception:
81
83
  pass
82
84
  conversation_history = self._create_conversation_history()
@@ -126,7 +128,9 @@ class ChatSession:
126
128
  profile = "Developer with Python Tools"
127
129
  else:
128
130
  profile = (
129
- "Developer with Python Tools" if result == "Developer" else result
131
+ "Developer with Python Tools"
132
+ if result == "Developer"
133
+ else result
130
134
  )
131
135
  except ImportError:
132
136
  profile = "Raw Model Session (no tools, no context)"
@@ -200,13 +204,27 @@ class ChatSession:
200
204
  cwd_display = "~" + cwd[len(home) :]
201
205
  else:
202
206
  cwd_display = cwd
203
- self.console.print(f"[green]Working Dir:[/green] {cwd_display}")
207
+ from janito.cli.chat_mode.shell.commands._priv_status import (
208
+ get_privilege_status_message,
209
+ )
210
+
211
+ priv_status = get_privilege_status_message()
212
+ self.console.print(
213
+ f"[green]Working Dir:[/green] {cwd_display} | {priv_status}"
214
+ )
204
215
 
205
216
  from janito.cli.chat_mode.shell.commands._priv_check import (
206
217
  user_has_any_privileges,
207
218
  )
208
219
 
209
- if not user_has_any_privileges():
220
+ perms = __import__(
221
+ "janito.tools.permissions", fromlist=["get_global_allowed_permissions"]
222
+ ).get_global_allowed_permissions()
223
+ if perms.execute:
224
+ self.console.print(
225
+ "[bold red]Commands/Code execution is enabled - Be cautious[/bold red]"
226
+ )
227
+ if not (perms.read or perms.write or perms.execute):
210
228
  self.console.print(
211
229
  "[yellow]Note: You currently have no privileges enabled. If you need to interact with files or the system, enable permissions using /read on, /write on, or /execute on.[/yellow]"
212
230
  )
@@ -0,0 +1,13 @@
1
+ from janito.tools.permissions import get_global_allowed_permissions
2
+
3
+
4
+ def get_privilege_status_message():
5
+ perms = get_global_allowed_permissions()
6
+ if perms.read and perms.write:
7
+ return "[cyan]Read-Write tools enabled[/cyan]"
8
+ elif perms.read:
9
+ return "[cyan]Read-Only tools enabled[/cyan]"
10
+ elif perms.write:
11
+ return "[cyan]Write-Only tools enabled[/cyan]"
12
+ else:
13
+ return "[yellow]No tool permissions enabled[/yellow]"
@@ -0,0 +1,31 @@
1
+ from rich.console import Console
2
+ from pathlib import Path
3
+ import os
4
+
5
+
6
+ def handle_list_config(args=None):
7
+ console = Console()
8
+ home = Path.home()
9
+ default_config = home / ".janito" / "config.json"
10
+ custom_dir = home / ".janito" / "configs"
11
+ console.print("[bold green]Janito configuration files:[/bold green]")
12
+ if default_config.exists():
13
+ console.print(f"[bold yellow]Default config:[/bold yellow] {default_config}")
14
+ else:
15
+ console.print(
16
+ f"[bold yellow]Default config:[/bold yellow] {default_config} [red](not found)"
17
+ )
18
+ if custom_dir.exists() and custom_dir.is_dir():
19
+ files = sorted(
20
+ f for f in custom_dir.iterdir() if f.is_file() and f.suffix == ".json"
21
+ )
22
+ if files:
23
+ console.print("[bold yellow]Custom configs:[/bold yellow]")
24
+ for f in files:
25
+ console.print(f" - {f}")
26
+ else:
27
+ console.print("[bold yellow]Custom configs:[/bold yellow] (none found)")
28
+ else:
29
+ console.print(
30
+ f"[bold yellow]Custom configs:[/bold yellow] {custom_dir} [red](directory not found)"
31
+ )
@@ -0,0 +1,79 @@
1
+ """
2
+ CLI Command: List available system prompt profiles (default and user-specific)
3
+ """
4
+
5
+ from pathlib import Path
6
+ import importlib.resources as resources
7
+ from rich.console import Console
8
+ from rich.table import Table
9
+
10
+
11
+ _PREFIX = "system_prompt_template_"
12
+ _SUFFIX = ".txt.j2"
13
+
14
+
15
+ def _extract_profile_name(filename: str) -> str:
16
+ """Return the human-readable profile name from template file name."""
17
+ # Remove prefix & suffix and convert underscores back to spaces
18
+ if filename.startswith(_PREFIX):
19
+ filename = filename[len(_PREFIX) :]
20
+ if filename.endswith(_SUFFIX):
21
+ filename = filename[: -len(_SUFFIX)]
22
+ return filename.replace("_", " ")
23
+
24
+
25
+ def _gather_default_profiles():
26
+ """Return list of built-in profile names bundled with janito."""
27
+ profiles = []
28
+ try:
29
+ package_files = resources.files("janito.agent.templates.profiles")
30
+ for path in package_files.iterdir():
31
+ name = path.name
32
+ if name.startswith(_PREFIX) and name.endswith(_SUFFIX):
33
+ profiles.append(_extract_profile_name(name))
34
+ except Exception:
35
+ # If for some reason the resources are not available fall back to empty list
36
+ pass
37
+ return sorted(profiles, key=str.lower)
38
+
39
+
40
+ def _gather_user_profiles():
41
+ """Return list of user-defined profile names from ~/.janito/profiles directory."""
42
+ user_dir = Path.home() / ".janito" / "profiles"
43
+ profiles = []
44
+ if user_dir.exists() and user_dir.is_dir():
45
+ for path in user_dir.iterdir():
46
+ if (
47
+ path.is_file()
48
+ and path.name.startswith(_PREFIX)
49
+ and path.name.endswith(_SUFFIX)
50
+ ):
51
+ profiles.append(_extract_profile_name(path.name))
52
+ return sorted(profiles, key=str.lower)
53
+
54
+
55
+ def _print_profiles_table(default_profiles, user_profiles):
56
+ console = Console()
57
+ table = Table(title="Available System Prompt Profiles", box=None, show_lines=False)
58
+ table.add_column("Profile Name", style="cyan", no_wrap=False)
59
+ table.add_column("Source", style="magenta", no_wrap=True)
60
+
61
+ for p in default_profiles:
62
+ table.add_row(p, "default")
63
+ for p in user_profiles:
64
+ table.add_row(p, "user")
65
+
66
+ console.print(table)
67
+
68
+
69
+ def handle_list_profiles(args=None):
70
+ """Entry point for the --list-profiles CLI flag."""
71
+ default_profiles = _gather_default_profiles()
72
+ user_profiles = _gather_user_profiles()
73
+
74
+ if not default_profiles and not user_profiles:
75
+ print("No profiles found.")
76
+ return
77
+
78
+ _print_profiles_table(default_profiles, user_profiles)
79
+ return
@@ -34,21 +34,14 @@ def handle_show_config(args):
34
34
  provider_names = ProviderRegistry()._get_provider_names()
35
35
  except Exception:
36
36
  pass
37
+ from janito.provider_config import get_config_path
38
+
39
+ config_path = get_config_path()
37
40
  console.print("[bold green]Current configuration:[/bold green]")
41
+ console.print(f"[bold yellow]Config file:[/bold yellow] {config_path}")
38
42
  console.print(f"[bold yellow]Current provider:[/bold yellow] {provider!r}\n")
39
43
  if model is not None:
40
44
  console.print(f"[bold yellow]Global model:[/bold yellow] {model!r}\n")
41
- if provider_names:
42
- console.print("[bold cyan]Provider specific default models:[/bold cyan]")
43
- for pname in provider_names:
44
- eff_model = resolve_effective_model(pname)
45
- prov_cfg = config.get_provider_config(pname)
46
- prov_model = prov_cfg.get("model") if prov_cfg else None
47
- extra = f" (override)" if prov_model else ""
48
- sel = "[default]" if pname == provider else ""
49
- console.print(
50
- f" [bold]{pname}[/bold]{' '+sel if sel else ''}: model = [magenta]{eff_model}[/magenta]{extra}"
51
- )
52
45
 
53
46
  # Show disabled tools
54
47
  from janito.tools.disabled_tools import load_disabled_tools_from_config