janito 2.27.0__py3-none-any.whl → 2.28.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 (88) hide show
  1. janito/README.md +9 -9
  2. janito/agent/setup_agent.py +29 -16
  3. janito/cli/chat_mode/script_runner.py +1 -1
  4. janito/cli/chat_mode/session.py +50 -24
  5. janito/cli/chat_mode/session_profile_select.py +8 -2
  6. janito/cli/chat_mode/shell/commands/__init__.py +2 -0
  7. janito/cli/chat_mode/shell/commands/execute.py +4 -2
  8. janito/cli/chat_mode/shell/commands/help.py +8 -1
  9. janito/cli/chat_mode/shell/commands/privileges.py +6 -2
  10. janito/cli/chat_mode/shell/commands/provider.py +28 -0
  11. janito/cli/chat_mode/shell/commands/read.py +4 -2
  12. janito/cli/chat_mode/shell/commands/security/__init__.py +1 -1
  13. janito/cli/chat_mode/shell/commands/security/allowed_sites.py +16 -13
  14. janito/cli/chat_mode/shell/commands/security_command.py +14 -10
  15. janito/cli/chat_mode/shell/commands/tools.py +4 -2
  16. janito/cli/chat_mode/shell/commands/unrestricted.py +17 -12
  17. janito/cli/chat_mode/shell/commands/write.py +4 -2
  18. janito/cli/chat_mode/toolbar.py +15 -1
  19. janito/cli/cli_commands/enable_disable_plugin.py +87 -0
  20. janito/cli/cli_commands/list_models.py +2 -2
  21. janito/cli/cli_commands/list_plugins.py +35 -19
  22. janito/cli/cli_commands/list_profiles.py +6 -6
  23. janito/cli/cli_commands/list_providers.py +1 -1
  24. janito/cli/cli_commands/model_utils.py +45 -20
  25. janito/cli/cli_commands/ping_providers.py +10 -10
  26. janito/cli/cli_commands/set_api_key.py +5 -3
  27. janito/cli/cli_commands/show_config.py +13 -7
  28. janito/cli/cli_commands/show_system_prompt.py +13 -6
  29. janito/cli/core/getters.py +7 -0
  30. janito/cli/core/model_guesser.py +18 -15
  31. janito/cli/core/runner.py +28 -6
  32. janito/cli/core/setters.py +21 -6
  33. janito/cli/main_cli.py +14 -12
  34. janito/cli/prompt_core.py +2 -0
  35. janito/cli/prompt_setup.py +4 -4
  36. janito/cli/single_shot_mode/handler.py +2 -0
  37. janito/config_manager.py +2 -0
  38. janito/docs/GETTING_STARTED.md +9 -9
  39. janito/drivers/cerebras/__init__.py +1 -1
  40. janito/exceptions.py +6 -4
  41. janito/plugins/__init__.py +2 -2
  42. janito/plugins/base.py +48 -40
  43. janito/plugins/builtin.py +88 -0
  44. janito/plugins/config.py +16 -19
  45. janito/plugins/discovery.py +129 -40
  46. janito/plugins/manager.py +63 -59
  47. janito/provider_registry.py +10 -10
  48. janito/providers/__init__.py +1 -1
  49. janito/providers/alibaba/model_info.py +3 -5
  50. janito/providers/alibaba/provider.py +3 -1
  51. janito/providers/cerebras/__init__.py +1 -1
  52. janito/providers/cerebras/model_info.py +12 -27
  53. janito/providers/cerebras/provider.py +11 -9
  54. janito/providers/mistral/__init__.py +1 -1
  55. janito/providers/mistral/model_info.py +1 -1
  56. janito/providers/mistral/provider.py +1 -1
  57. janito/providers/moonshot/__init__.py +1 -0
  58. janito/providers/{moonshotai → moonshot}/model_info.py +3 -3
  59. janito/providers/{moonshotai → moonshot}/provider.py +8 -8
  60. janito/providers/openai/provider.py +3 -1
  61. janito/report_events.py +0 -1
  62. janito/tools/adapters/local/ask_user.py +7 -1
  63. janito/tools/adapters/local/create_file.py +1 -1
  64. janito/tools/adapters/local/fetch_url.py +45 -29
  65. janito/tools/adapters/local/python_command_run.py +2 -1
  66. janito/tools/adapters/local/python_file_run.py +1 -0
  67. janito/tools/adapters/local/run_powershell_command.py +1 -1
  68. janito/tools/adapters/local/search_text/core.py +1 -1
  69. janito/tools/adapters/local/validate_file_syntax/jinja2_validator.py +14 -11
  70. janito/tools/base.py +12 -0
  71. janito/tools/loop_protection.py +24 -22
  72. janito/tools/path_utils.py +7 -7
  73. janito/tools/tool_base.py +0 -2
  74. janito/tools/tools_adapter.py +15 -5
  75. janito/tools/url_whitelist.py +27 -26
  76. {janito-2.27.0.dist-info → janito-2.28.0.dist-info}/METADATA +3 -1
  77. {janito-2.27.0.dist-info → janito-2.28.0.dist-info}/RECORD +81 -82
  78. janito-2.28.0.dist-info/top_level.txt +1 -0
  79. janito/providers/moonshotai/__init__.py +0 -1
  80. janito-2.27.0.dist-info/top_level.txt +0 -2
  81. janito-coder/janito_coder/__init__.py +0 -9
  82. janito-coder/janito_coder/plugins/__init__.py +0 -27
  83. janito-coder/janito_coder/plugins/code_navigator.py +0 -618
  84. janito-coder/janito_coder/plugins/git_analyzer.py +0 -273
  85. janito-coder/pyproject.toml +0 -347
  86. {janito-2.27.0.dist-info → janito-2.28.0.dist-info}/WHEEL +0 -0
  87. {janito-2.27.0.dist-info → janito-2.28.0.dist-info}/entry_points.txt +0 -0
  88. {janito-2.27.0.dist-info → janito-2.28.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,273 +0,0 @@
1
- """
2
- Git repository analysis plugin for janito.
3
- """
4
-
5
- import os
6
- import subprocess
7
- from typing import Dict, List, Optional, Any
8
- from datetime import datetime
9
-
10
- from janito.plugins.base import Plugin, PluginMetadata
11
- from janito.tools.tool_base import ToolBase, ToolPermissions
12
-
13
-
14
- class GitStatusTool(ToolBase):
15
- """Tool to analyze git repository status."""
16
-
17
- tool_name = "git_status"
18
- permissions = ToolPermissions(read=True, write=False, execute=True)
19
-
20
- def run(self, path: str = ".") -> str:
21
- """
22
- Get git status for the repository.
23
-
24
- Args:
25
- path: Path to the git repository
26
-
27
- Returns:
28
- Git status information as string
29
- """
30
- try:
31
- os.chdir(path)
32
- result = subprocess.run(
33
- ["git", "status", "--porcelain"],
34
- capture_output=True,
35
- text=True,
36
- check=True,
37
- )
38
-
39
- if not result.stdout.strip():
40
- return "Working directory clean"
41
-
42
- lines = result.stdout.strip().split("\n")
43
- status_summary = {}
44
-
45
- for line in lines:
46
- if len(line) >= 2:
47
- status = line[:2]
48
- filename = line[3:]
49
- if status not in status_summary:
50
- status_summary[status] = []
51
- status_summary[status].append(filename)
52
-
53
- output = []
54
- for status, files in status_summary.items():
55
- output.append(f"{status}: {len(files)} files")
56
- for f in files[:5]: # Show first 5 files
57
- output.append(f" {f}")
58
- if len(files) > 5:
59
- output.append(f" ... and {len(files) - 5} more")
60
-
61
- return "\n".join(output)
62
-
63
- except subprocess.CalledProcessError as e:
64
- return f"Error getting git status: {e.stderr}"
65
- except FileNotFoundError:
66
- return "Git not found. Please install git."
67
-
68
-
69
- class GitLogTool(ToolBase):
70
- """Tool to analyze git commit history."""
71
-
72
- tool_name = "git_log"
73
- permissions = ToolPermissions(read=True, write=False, execute=True)
74
-
75
- def run(self, path: str = ".", limit: int = 10) -> str:
76
- """
77
- Get recent git commits.
78
-
79
- Args:
80
- path: Path to the git repository
81
- limit: Number of commits to show
82
-
83
- Returns:
84
- Git log information as string
85
- """
86
- try:
87
- os.chdir(path)
88
- result = subprocess.run(
89
- ["git", "log", "--oneline", "--max-count", str(limit)],
90
- capture_output=True,
91
- text=True,
92
- check=True,
93
- )
94
-
95
- return result.stdout.strip()
96
-
97
- except subprocess.CalledProcessError as e:
98
- return f"Error getting git log: {e.stderr}"
99
- except FileNotFoundError:
100
- return "Git not found. Please install git."
101
-
102
-
103
- class GitBranchTool(ToolBase):
104
- """Tool to analyze git branches."""
105
-
106
- tool_name = "git_branches"
107
- permissions = ToolPermissions(read=True, write=False, execute=True)
108
-
109
- def run(self, path: str = ".") -> str:
110
- """
111
- Get git branch information.
112
-
113
- Args:
114
- path: Path to the git repository
115
-
116
- Returns:
117
- Branch information as string
118
- """
119
- try:
120
- os.chdir(path)
121
-
122
- # Get current branch
123
- current_result = subprocess.run(
124
- ["git", "branch", "--show-current"],
125
- capture_output=True,
126
- text=True,
127
- check=True,
128
- )
129
-
130
- current_branch = current_result.stdout.strip()
131
-
132
- # Get all branches
133
- branches_result = subprocess.run(
134
- ["git", "branch", "-a"], capture_output=True, text=True, check=True
135
- )
136
-
137
- branches = branches_result.stdout.strip().split("\n")
138
-
139
- output = [f"Current branch: {current_branch}"]
140
- output.append("All branches:")
141
-
142
- for branch in branches:
143
- branch = branch.strip()
144
- if branch.startswith("*"):
145
- branch = branch[2:] # Remove asterisk
146
- output.append(f" * {branch} (current)")
147
- else:
148
- output.append(f" {branch}")
149
-
150
- return "\n".join(output)
151
-
152
- except subprocess.CalledProcessError as e:
153
- return f"Error getting git branches: {e.stderr}"
154
- except FileNotFoundError:
155
- return "Git not found. Please install git."
156
-
157
-
158
- class GitStatsTool(ToolBase):
159
- """Tool to get git repository statistics."""
160
-
161
- tool_name = "git_stats"
162
- permissions = ToolPermissions(read=True, write=False, execute=True)
163
-
164
- def run(self, path: str = ".") -> str:
165
- """
166
- Get git repository statistics.
167
-
168
- Args:
169
- path: Path to the git repository
170
-
171
- Returns:
172
- Repository statistics as string
173
- """
174
- try:
175
- os.chdir(path)
176
-
177
- stats = {}
178
-
179
- # Total commits
180
- commits_result = subprocess.run(
181
- ["git", "rev-list", "--count", "HEAD"],
182
- capture_output=True,
183
- text=True,
184
- check=True,
185
- )
186
- stats["total_commits"] = commits_result.stdout.strip()
187
-
188
- # Contributors
189
- contributors_result = subprocess.run(
190
- ["git", "shortlog", "-sn", "--all"],
191
- capture_output=True,
192
- text=True,
193
- check=True,
194
- )
195
-
196
- contributors = contributors_result.stdout.strip().split("\n")
197
- stats["total_contributors"] = len(contributors)
198
- stats["top_contributors"] = contributors[:5]
199
-
200
- # Files
201
- files_result = subprocess.run(
202
- ["git", "ls-files"], capture_output=True, text=True, check=True
203
- )
204
-
205
- files = files_result.stdout.strip().split("\n")
206
- stats["total_files"] = len(files)
207
-
208
- # Languages (approximate by file extension)
209
- extensions = {}
210
- for f in files:
211
- ext = os.path.splitext(f)[1].lower()
212
- if ext:
213
- extensions[ext] = extensions.get(ext, 0) + 1
214
-
215
- top_languages = sorted(
216
- extensions.items(), key=lambda x: x[1], reverse=True
217
- )[:5]
218
-
219
- output = [
220
- f"Repository Statistics:",
221
- f"Total commits: {stats['total_commits']}",
222
- f"Total contributors: {stats['total_contributors']}",
223
- f"Total files: {stats['total_files']}",
224
- "",
225
- "Top contributors:",
226
- ]
227
-
228
- for contributor in stats["top_contributors"]:
229
- output.append(f" {contributor.strip()}")
230
-
231
- output.extend(
232
- [
233
- "",
234
- "Top file types:",
235
- ]
236
- )
237
-
238
- for ext, count in top_languages:
239
- output.append(f" {ext}: {count} files")
240
-
241
- return "\n".join(output)
242
-
243
- except subprocess.CalledProcessError as e:
244
- return f"Error getting git stats: {e.stderr}"
245
- except FileNotFoundError:
246
- return "Git not found. Please install git."
247
-
248
-
249
- class GitAnalyzerPlugin(Plugin):
250
- """Plugin providing git repository analysis tools."""
251
-
252
- def get_metadata(self) -> PluginMetadata:
253
- return PluginMetadata(
254
- name="git_analyzer",
255
- version="1.0.0",
256
- description="Git repository analysis and insights",
257
- author="Janito Coder Team",
258
- license="MIT",
259
- homepage="https://github.com/ikignosis/janito-coder",
260
- )
261
-
262
- def get_tools(self):
263
- return [GitStatusTool, GitLogTool, GitBranchTool, GitStatsTool]
264
-
265
- def initialize(self):
266
- print("Git Analyzer plugin initialized!")
267
-
268
- def cleanup(self):
269
- print("Git Analyzer plugin cleaned up!")
270
-
271
-
272
- # This makes the plugin discoverable
273
- PLUGIN_CLASS = GitAnalyzerPlugin
@@ -1,347 +0,0 @@
1
- [build-system]
2
- requires = ["setuptools>=61.0", "setuptools_scm>=8.0"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "janito-coder"
7
- description = "Extra plugins for janito focused on software development and coding tasks"
8
- authors = [
9
- { name="João Pinto", email="janito@ikignosis.org" }
10
- ]
11
- readme = "README.md"
12
- requires-python = ">=3.7"
13
- dynamic = ["version"]
14
- dependencies = [
15
- "janito",
16
- "gitpython>=3.1.0",
17
- "tree-sitter>=0.20.0",
18
- "tree-sitter-python>=0.20.0",
19
- "tree-sitter-javascript>=0.20.0",
20
- "tree-sitter-java>=0.20.0",
21
- "tree-sitter-c>=0.20.0",
22
- "tree-sitter-cpp>=0.20.0",
23
- "tree-sitter-rust>=0.20.0",
24
- "tree-sitter-go>=0.20.0",
25
- "tree-sitter-typescript>=0.20.0",
26
- "tree-sitter-bash>=0.20.0",
27
- "tree-sitter-json>=0.20.0",
28
- "tree-sitter-yaml>=0.20.0",
29
- "tree-sitter-markdown>=0.20.0",
30
- "tree-sitter-html>=0.20.0",
31
- "tree-sitter-css>=0.20.0",
32
- "tree-sitter-sql>=0.20.0",
33
- "tree-sitter-dockerfile>=0.20.0",
34
- "tree-sitter-regex>=0.20.0",
35
- "tree-sitter-toml>=0.20.0",
36
- "tree-sitter-xml>=0.20.0",
37
- "tree-sitter-php>=0.20.0",
38
- "tree-sitter-ruby>=0.20.0",
39
- "tree-sitter-swift>=0.20.0",
40
- "tree-sitter-kotlin>=0.20.0",
41
- "tree-sitter-scala>=0.20.0",
42
- "tree-sitter-c-sharp>=0.20.0",
43
- "tree-sitter-lua>=0.20.0",
44
- "tree-sitter-perl>=0.20.0",
45
- "tree-sitter-r>=0.20.0",
46
- "tree-sitter-shell>=0.20.0",
47
- "tree-sitter-make>=0.20.0",
48
- "tree-sitter-cmake>=0.20.0",
49
- "tree-sitter-llvm>=0.20.0",
50
- "tree-sitter-bash>=0.20.0",
51
- "tree-sitter-zsh>=0.20.0",
52
- "tree-sitter-fish>=0.20.0",
53
- "tree-sitter-powershell>=0.20.0",
54
- "tree-sitter-batch>=0.20.0",
55
- "tree-sitter-cmd>=0.20.0",
56
- "tree-sitter-awk>=0.20.0",
57
- "tree-sitter-sed>=0.20.0",
58
- "tree-sitter-vim>=0.20.0",
59
- "tree-sitter-emacs-lisp>=0.20.0",
60
- "tree-sitter-elisp>=0.20.0",
61
- "tree-sitter-clojure>=0.20.0",
62
- "tree-sitter-haskell>=0.20.0",
63
- "tree-sitter-ocaml>=0.20.0",
64
- "tree-sitter-fsharp>=0.20.0",
65
- "tree-sitter-elixir>=0.20.0",
66
- "tree-sitter-erlang>=0.20.0",
67
- "tree-sitter-dart>=0.20.0",
68
- "tree-sitter-flutter>=0.20.0",
69
- "tree-sitter-vue>=0.20.0",
70
- "tree-sitter-svelte>=0.20.0",
71
- "tree-sitter-angular>=0.20.0",
72
- "tree-sitter-react>=0.20.0",
73
- "tree-sitter-jsx>=0.20.0",
74
- "tree-sitter-tsx>=0.20.0",
75
- "tree-sitter-graphql>=0.20.0",
76
- "tree-sitter-protobuf>=0.20.0",
77
- "tree-sitter-thrift>=0.20.0",
78
- "tree-sitter-avro>=0.20.0",
79
- "tree-sitter-parquet>=0.20.0",
80
- "tree-sitter-orc>=0.20.0",
81
- "tree-sitter-csv>=0.20.0",
82
- "tree-sitter-tsv>=0.20.0",
83
- "tree-sitter-log>=0.20.0",
84
- "tree-sitter-ini>=0.20.0",
85
- "tree-sitter-properties>=0.20.0",
86
- "tree-sitter-env>=0.20.0",
87
- "tree-sitter-ssh-config>=0.20.0",
88
- "tree-sitter-nginx>=0.20.0",
89
- "tree-sitter-apache>=0.20.0",
90
- "tree-sitter-terraform>=0.20.0",
91
- "tree-sitter-cloudformation>=0.20.0",
92
- "tree-sitter-ansible>=0.20.0",
93
- "tree-sitter-puppet>=0.20.0",
94
- "tree-sitter-chef>=0.20.0",
95
- "tree-sitter-salt>=0.20.0",
96
- "tree-sitter-vagrant>=0.20.0",
97
- "tree-sitter-packer>=0.20.0",
98
- "tree-sitter-consul>=0.20.0",
99
- "tree-sitter-vault>=0.20.0",
100
- "tree-sitter-nomad>=0.20.0",
101
- "tree-sitter-k8s>=0.20.0",
102
- "tree-sitter-helm>=0.20.0",
103
- "tree-sitter-kustomize>=0.20.0",
104
- "tree-sitter-skaffold>=0.20.0",
105
- "tree-sitter-argocd>=0.20.0",
106
- "tree-sitter-flux>=0.20.0",
107
- "tree-sitter-istio>=0.20.0",
108
- "tree-sitter-linkerd>=0.20.0",
109
- "tree-sitter-consul-template>=0.20.0",
110
- "tree-sitter-envoy>=0.20.0",
111
- "tree-sitter-haproxy>=0.20.0",
112
- "tree-sitter-varnish>=0.20.0",
113
- "tree-sitter-squid>=0.20.0",
114
- "tree-sitter-bind>=0.20.0",
115
- "tree-sitter-dns>=0.20.0",
116
- "tree-sitter-dhcp>=0.20.0",
117
- "tree-sitter-ftp>=0.20.0",
118
- "tree-sitter-sftp>=0.20.0",
119
- "tree-sitter-ssh>=0.20.0",
120
- "tree-sitter-telnet>=0.20.0",
121
- "tree-sitter-smtp>=0.20.0",
122
- "tree-sitter-imap>=0.20.0",
123
- "tree-sitter-pop3>=0.20.0",
124
- "tree-sitter-http>=0.20.0",
125
- "tree-sitter-https>=0.20.0",
126
- "tree-sitter-websocket>=0.20.0",
127
- "tree-sitter-grpc>=0.20.0",
128
- "tree-sitter-thrift>=0.20.0",
129
- "tree-sitter-avro>=0.20.0",
130
- "tree-sitter-protobuf>=0.20.0",
131
- "tree-sitter-capnproto>=0.20.0",
132
- "tree-sitter-flatbuffers>=0.20.0",
133
- "tree-sitter-msgpack>=0.20.0",
134
- "tree-sitter-cbor>=0.20.0",
135
- "tree-sitter-bson>=0.20.0",
136
- "tree-sitter-yaml>=0.20.0",
137
- "tree-sitter-toml>=0.20.0",
138
- "tree-sitter-json>=0.20.0",
139
- "tree-sitter-xml>=0.20.0",
140
- "tree-sitter-html>=0.20.0",
141
- "tree-sitter-css>=0.20.0",
142
- "tree-sitter-scss>=0.20.0",
143
- "tree-sitter-sass>=0.20.0",
144
- "tree-sitter-less>=0.20.0",
145
- "tree-sitter-stylus>=0.20.0",
146
- "tree-sitter-postcss>=0.20.0",
147
- "tree-sitter-tailwind>=0.20.0",
148
- "tree-sitter-bootstrap>=0.20.0",
149
- "tree-sitter-bulma>=0.20.0",
150
- "tree-sitter-foundation>=0.20.0",
151
- "tree-sitter-semantic-ui>=0.20.0",
152
- "tree-sitter-materialize>=0.20.0",
153
- "tree-sitter-uikit>=0.20.0",
154
- "tree-sitter-primer>=0.20.0",
155
- "tree-sitter-chakra-ui>=0.20.0",
156
- "tree-sitter-ant-design>=0.20.0",
157
- "tree-sitter-element-ui>=0.20.0",
158
- "tree-sitter-vuetify>=0.20.0",
159
- "tree-sitter-quasar>=0.20.0",
160
- "tree-sitter-nuxt>=0.20.0",
161
- "tree-sitter-next>=0.20.0",
162
- "tree-sitter-gatsby>=0.20.0",
163
- "tree-sitter-jekyll>=0.20.0",
164
- "tree-sitter-hugo>=0.20.0",
165
- "tree-sitter-hexo>=0.20.0",
166
- "tree-sitter-eleventy>=0.20.0",
167
- "tree-sitter-astro>=0.20.0",
168
- "tree-sitter-svelte-kit>=0.20.0",
169
- "tree-sitter-remix>=0.20.0",
170
- "tree-sitter-solid-js>=0.20.0",
171
- "tree-sitter-solid-start>=0.20.0",
172
- "tree-sitter-qwik>=0.20.0",
173
- "tree-sitter-marko>=0.20.0",
174
- "tree-sitter-handlebars>=0.20.0",
175
- "tree-sitter-mustache>=0.20.0",
176
- "tree-sitter-liquid>=0.20.0",
177
- "tree-sitter-nunjucks>=0.20.0",
178
- "tree-sitter-ejs>=0.20.0",
179
- "tree-sitter-pug>=0.20.0",
180
- "tree-sitter-haml>=0.20.0",
181
- "tree-sitter-slim>=0.20.0",
182
- "tree-sitter-jade>=0.20.0",
183
- "tree-sitter-blade>=0.20.0",
184
- "tree-sitter-twig>=0.20.0",
185
- "tree-sitter-smarty>=0.20.0",
186
- "tree-sitter-django>=0.20.0",
187
- "tree-sitter-flask>=0.20.0",
188
- "tree-sitter-fastapi>=0.20.0",
189
- "tree-sitter-express>=0.20.0",
190
- "tree-sitter-koa>=0.20.0",
191
- "tree-sitter-hapi>=0.20.0",
192
- "tree-sitter-sails>=0.20.0",
193
- "tree-sitter-nest>=0.20.0",
194
- "tree-sitter-spring>=0.20.0",
195
- "tree-sitter-django-rest>=0.20.0",
196
- "tree-sitter-laravel>=0.20.0",
197
- "tree-sitter-symfony>=0.20.0",
198
- "tree-sitter-codeigniter>=0.20.0",
199
- "tree-sitter-yii>=0.20.0",
200
- "tree-sitter-zend>=0.20.0",
201
- "tree-sitter-phalcon>=0.20.0",
202
- "tree-sitter-slim>=0.20.0",
203
- "tree-sitter-sinatra>=0.20.0",
204
- "tree-sitter-rails>=0.20.0",
205
- "tree-sitter-grails>=0.20.0",
206
- "tree-sitter-play>=0.20.0",
207
- "tree-sitter-ktor>=0.20.0",
208
- "tree-sitter-micronaut>=0.20.0",
209
- "tree-sitter-quarkus>=0.20.0",
210
- "tree-sitter-vertx>=0.20.0",
211
- "tree-sitter-dropwizard>=0.20.0",
212
- "tree-sitter-spark>=0.20.0",
213
- "tree-sitter-akka>=0.20.0",
214
- "tree-sitter-lagom>=0.20.0",
215
- "tree-sitter-finagle>=0.20.0",
216
- "tree-sitter-scalatra>=0.20.0",
217
- "tree-sitter-unfiltered>=0.20.0",
218
- "tree-sitter-http4s>=0.20.0",
219
- "tree-sitter-cats>=0.20.0",
220
- "tree-sitter-monix>=0.20.0",
221
- "tree-sitter-zio>=0.20.0",
222
- "tree-sitter-fs2>=0.20.0",
223
- "tree-sitter-doobie>=0.20.0",
224
- "tree-sitter-slick>=0.20.0",
225
- "tree-sitter-anorm>=0.20.0",
226
- "tree-sitter-squeryl>=0.20.0",
227
- "tree-sitter-ebean>=0.20.0",
228
- "tree-sitter-hibernate>=0.20.0",
229
- "tree-sitter-jpa>=0.20.0",
230
- "tree-sitter-mybatis>=0.20.0",
231
- "tree-sitter-ibatis>=0.20.0",
232
- "tree-sitter-spring-data>=0.20.0",
233
- "tree-sitter-spring-boot>=0.20.0",
234
- "tree-sitter-spring-cloud>=0.20.0",
235
- "tree-sitter-spring-security>=0.20.0",
236
- "tree-sitter-spring-batch>=0.20.0",
237
- "tree-sitter-spring-integration>=0.20.0",
238
- "tree-sitter-spring-session>=0.20.0",
239
- "tree-sitter-spring-cache>=0.20.0",
240
- "tree-sitter-spring-websocket>=0.20.0",
241
- "tree-sitter-spring-messaging>=0.20.0",
242
- "tree-sitter-spring-amqp>=0.20.0",
243
- "tree-sitter-spring-kafka>=0.20.0",
244
- "tree-sitter-spring-cloud-stream>=0.20.0",
245
- "tree-sitter-spring-cloud-config>=0.20.0",
246
- "tree-sitter-spring-cloud-gateway>=0.20.0",
247
- "tree-sitter-spring-cloud-netflix>=0.20.0",
248
- "tree-sitter-spring-cloud-consul>=0.20.0",
249
- "tree-sitter-spring-cloud-zookeeper>=0.20.0",
250
- "tree-sitter-spring-cloud-kubernetes>=0.20.0",
251
- "tree-sitter-spring-cloud-openfeign>=0.20.0",
252
- "tree-sitter-spring-cloud-ribbon>=0.20.0",
253
- "tree-sitter-spring-cloud-hystrix>=0.20.0",
254
- "tree-sitter-spring-cloud-sleuth>=0.20.0",
255
- "tree-sitter-spring-cloud-zipkin>=0.20.0",
256
- "tree-sitter-spring-cloud-bus>=0.20.0",
257
- "tree-sitter-spring-cloud-vault>=0.20.0",
258
- "tree-sitter-spring-cloud-aws>=0.20.0",
259
- "tree-sitter-spring-cloud-gcp>=0.20.0",
260
- "tree-sitter-spring-cloud-azure>=0.20.0",
261
- "tree-sitter-spring-cloud-alibaba>=0.20.0",
262
- "tree-sitter-spring-cloud-tencent>=0.20.0",
263
- "tree-sitter-spring-cloud-huawei>=0.20.0",
264
- "tree-sitter-spring-cloud-baidu>=0.20.0",
265
- "tree-sitter-spring-cloud-jd>=0.20.0",
266
- "tree-sitter-spring-cloud-meituan>=0.20.0",
267
- "tree-sitter-spring-cloud-didi>=0.20.0",
268
- "tree-sitter-spring-cloud-ctrip>=0.20.0",
269
- "tree-sitter-spring-cloud-qunar>=0.20.0",
270
- "tree-sitter-spring-cloud-tujia>=0.20.0",
271
- "tree-sitter-spring-cloud-xiaozhu>=0.20.0",
272
- "tree-sitter-spring-cloud-mayi>=0.20.0",
273
- "tree-sitter-spring-cloud-ziru>=0.20.0",
274
- "tree-sitter-spring-cloud-58>=0.20.0",
275
- "tree-sitter-spring-cloud-ganji>=0.20.0",
276
- "tree-sitter-spring-cloud-baixing>=0.20.0",
277
- "tree-sitter-spring-cloud-anjuke>=0.20.0",
278
- "tree-sitter-spring-cloud-lianjia>=0.20.0",
279
- "tree-sitter-spring-cloud-fang>=0.20.0",
280
- "tree-sitter-spring-cloud-soufun>=0.20.0",
281
- "tree-sitter-spring-cloud-5i5j>=0.20.0",
282
- "tree-sitter-spring-cloud-zhuge>=0.20.0",
283
- "tree-sitter-spring-cloud-woaiwojia>=0.20.0",
284
- "tree-sitter-spring-cloud-kufang>=0.20.0",
285
- "tree-sitter-spring-cloud-fangdd>=0.20.0",
286
- "tree-sitter-spring-cloud-leyoujia>=0.20.0",
287
- "tree-sitter-spring-cloud-jiwu>=0.20.0",
288
- "tree-sitter-spring-cloud-zhongyuan>=0.20.0",
289
- "tree-sitter-spring-cloud-tongcheng>=0.20.0",
290
- "tree-sitter-spring-cloud-quna>=0.20.0",
291
- "tree-sitter-spring-cloud-elong>=0.20.0",
292
- "tree-sitter-spring-cloud-ctrip>=0.20.0",
293
- "tree-sitter-spring-cloud-lvmama>=0.20.0",
294
- "tree-sitter-spring-cloud-mafengwo>=0.20.0",
295
- "tree-sitter-spring-cloud-tuniu>=0.20.0",
296
- "tree-sitter-spring-cloud-qyer>=0.20.0",
297
- "tree-sitter-spring-cloud-daochu>=0.20.0",
298
- "tree-sitter-spring-cloud-mfw>=0.20.0",
299
- "tree-sitter-spring-cloud-lx>=0.20.0",
300
- "tree-sitter-spring-cloud-fliggy>=0.20.0",
301
- "tree-sitter-spring-cloud-alitrip>=0.20.0",
302
- "tree-sitter-spring-cloud-trip>=0.20.0",
303
- "tree-sitter-spring-cloud-xiecheng>=0.20.0",
304
- "tree-sitter-spring-cloud-qunaer>=0.20.0",
305
- "tree-sitter-spring-cloud-tongcheng>=0.20.0",
306
- "tree-sitter-spring-cloud-lvmama>=0.20.0",
307
- "tree-sitter-spring-cloud-mafengwo>=0.20.0",
308
- "tree-sitter-spring-cloud-tuniu>=0.20.0",
309
- "tree-sitter-spring-cloud-qyer>=0.20.0",
310
- "tree-sitter-spring-cloud-daochu>=0.20.0",
311
- "tree-sitter-spring-cloud-mfw>=0.20.0",
312
- "tree-sitter-spring-cloud-lx>=0.20.0",
313
- "tree-sitter-spring-cloud-fliggy>=0.20.0",
314
- "tree-sitter-spring-cloud-alitrip>=0.20.0",
315
- "tree-sitter-spring-cloud-trip>=0.20.0",
316
- "tree-sitter-spring-cloud-xiecheng>=0.20.0",
317
- "tree-sitter-spring-cloud-qunaer>=0.20.0",
318
- "tree-sitter-spring-cloud-tongcheng>=0.20.0",
319
- "tree-sitter-spring-cloud-lvmama>=0.20.0",
320
- "tree-sitter-spring-cloud-mafengwo>=0.20.0",
321
- "tree-sitter-spring-cloud-tuniu>=0.20.0",
322
- "tree-sitter-spring-cloud-qyer>=0.20.0",
323
- "tree-sitter-spring-cloud-daochu>=0.20.0",
324
- "tree-sitter-spring-cloud-mfw>=0.20.0",
325
- "tree-sitter-spring-cloud-lx>=0.20.0",
326
- "tree-sitter-spring-cloud-fliggy>=0.20.0",
327
- "tree-sitter-spring-cloud-alitrip>=0.20.0",
328
- "tree-sitter-spring-cloud-trip>=0.20.0",
329
- "tree-sitter-spring-cloud-xiecheng>=0.20.0",
330
- "tree-sitter-spring-cloud-qunaer>=0.20.0"
331
- ]
332
-
333
- [project.urls]
334
- Homepage = "https://github.com/ikignosis/janito-coder"
335
- Repository = "https://github.com/ikignosis/janito-coder"
336
- Documentation = "https://github.com/ikignosis/janito-coder/blob/main/README.md"
337
-
338
- [tool.setuptools.packages.find]
339
- where = ["."]
340
- include = ["janito_coder*"]
341
-
342
- [tool.setuptools.package-data]
343
- "janito_coder.plugins" = ["*.py"]
344
-
345
- [tool.setuptools_scm]
346
- version_scheme = "post-release"
347
- local_scheme = "node-and-date"