aja-codeintel 0.1.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 (73) hide show
  1. aja_codeintel-0.1.0/LICENSE +21 -0
  2. aja_codeintel-0.1.0/PKG-INFO +436 -0
  3. aja_codeintel-0.1.0/README.md +399 -0
  4. aja_codeintel-0.1.0/aja_codeintel.egg-info/PKG-INFO +436 -0
  5. aja_codeintel-0.1.0/aja_codeintel.egg-info/SOURCES.txt +71 -0
  6. aja_codeintel-0.1.0/aja_codeintel.egg-info/dependency_links.txt +1 -0
  7. aja_codeintel-0.1.0/aja_codeintel.egg-info/entry_points.txt +3 -0
  8. aja_codeintel-0.1.0/aja_codeintel.egg-info/requires.txt +1 -0
  9. aja_codeintel-0.1.0/aja_codeintel.egg-info/top_level.txt +1 -0
  10. aja_codeintel-0.1.0/codeintel_cli/__init__.py +1 -0
  11. aja_codeintel-0.1.0/codeintel_cli/__main__.py +4 -0
  12. aja_codeintel-0.1.0/codeintel_cli/cli.py +41 -0
  13. aja_codeintel-0.1.0/codeintel_cli/commands/__init__.py +1 -0
  14. aja_codeintel-0.1.0/codeintel_cli/commands/graph/__init__.py +18 -0
  15. aja_codeintel-0.1.0/codeintel_cli/commands/graph/deps_cmd.py +35 -0
  16. aja_codeintel-0.1.0/codeintel_cli/commands/graph/related_cmd.py +121 -0
  17. aja_codeintel-0.1.0/codeintel_cli/commands/graph/relsymbols_cmd.py +347 -0
  18. aja_codeintel-0.1.0/codeintel_cli/commands/graph/reverse_related_cmd.py +54 -0
  19. aja_codeintel-0.1.0/codeintel_cli/commands/nav/__init__.py +12 -0
  20. aja_codeintel-0.1.0/codeintel_cli/commands/nav/copy_cmd.py +101 -0
  21. aja_codeintel-0.1.0/codeintel_cli/commands/nav/open_cmd.py +18 -0
  22. aja_codeintel-0.1.0/codeintel_cli/commands/nav/where_cmd.py +21 -0
  23. aja_codeintel-0.1.0/codeintel_cli/commands/project/__init__.py +26 -0
  24. aja_codeintel-0.1.0/codeintel_cli/commands/project/context_cmd.py +326 -0
  25. aja_codeintel-0.1.0/codeintel_cli/commands/project/folder_cmd.py +51 -0
  26. aja_codeintel-0.1.0/codeintel_cli/commands/project/imports_cmd.py +90 -0
  27. aja_codeintel-0.1.0/codeintel_cli/commands/project/models_cmd.py +98 -0
  28. aja_codeintel-0.1.0/codeintel_cli/commands/project/modeltree_cmd.py +476 -0
  29. aja_codeintel-0.1.0/codeintel_cli/commands/project/new.py +0 -0
  30. aja_codeintel-0.1.0/codeintel_cli/commands/project/resolve_cmd.py +29 -0
  31. aja_codeintel-0.1.0/codeintel_cli/commands/project/scan_cmd.py +51 -0
  32. aja_codeintel-0.1.0/codeintel_cli/commands/project/servicemap_cmd.py +180 -0
  33. aja_codeintel-0.1.0/codeintel_cli/commands/project/tree_cmd.py +203 -0
  34. aja_codeintel-0.1.0/codeintel_cli/commands/project/version_cmd.py +14 -0
  35. aja_codeintel-0.1.0/codeintel_cli/context/java_context.py +180 -0
  36. aja_codeintel-0.1.0/codeintel_cli/context/java_rel.py +299 -0
  37. aja_codeintel-0.1.0/codeintel_cli/context/java_service.py +291 -0
  38. aja_codeintel-0.1.0/codeintel_cli/context/python_context.py +91 -0
  39. aja_codeintel-0.1.0/codeintel_cli/context/python_rel.py +251 -0
  40. aja_codeintel-0.1.0/codeintel_cli/context/python_service.py +205 -0
  41. aja_codeintel-0.1.0/codeintel_cli/core/fuzzy.py +72 -0
  42. aja_codeintel-0.1.0/codeintel_cli/core/opener.py +37 -0
  43. aja_codeintel-0.1.0/codeintel_cli/core/project.py +34 -0
  44. aja_codeintel-0.1.0/codeintel_cli/core/resolve_folder.py +68 -0
  45. aja_codeintel-0.1.0/codeintel_cli/core/resolve_model_target.py +92 -0
  46. aja_codeintel-0.1.0/codeintel_cli/core/resolve_target.py +53 -0
  47. aja_codeintel-0.1.0/codeintel_cli/core/timing.py +13 -0
  48. aja_codeintel-0.1.0/codeintel_cli/core/where.py +77 -0
  49. aja_codeintel-0.1.0/codeintel_cli/db/__init__.py +7 -0
  50. aja_codeintel-0.1.0/codeintel_cli/db/cache.py +224 -0
  51. aja_codeintel-0.1.0/codeintel_cli/db/operations.py +333 -0
  52. aja_codeintel-0.1.0/codeintel_cli/db/schema.py +102 -0
  53. aja_codeintel-0.1.0/codeintel_cli/errors.py +78 -0
  54. aja_codeintel-0.1.0/codeintel_cli/graph/__init__.py +1 -0
  55. aja_codeintel-0.1.0/codeintel_cli/graph/builder.py +149 -0
  56. aja_codeintel-0.1.0/codeintel_cli/graph/query.py +30 -0
  57. aja_codeintel-0.1.0/codeintel_cli/graph/traverse.py +49 -0
  58. aja_codeintel-0.1.0/codeintel_cli/lang/__init__.py +0 -0
  59. aja_codeintel-0.1.0/codeintel_cli/lang/java/__init__.py +0 -0
  60. aja_codeintel-0.1.0/codeintel_cli/lang/java/engine.py +18 -0
  61. aja_codeintel-0.1.0/codeintel_cli/lang/java/models.py +105 -0
  62. aja_codeintel-0.1.0/codeintel_cli/lang/java/resolve.py +49 -0
  63. aja_codeintel-0.1.0/codeintel_cli/lang/python/__init__.py +0 -0
  64. aja_codeintel-0.1.0/codeintel_cli/lang/python/engine.py +8 -0
  65. aja_codeintel-0.1.0/codeintel_cli/lang/python/models.py +86 -0
  66. aja_codeintel-0.1.0/codeintel_cli/lang/router.py +24 -0
  67. aja_codeintel-0.1.0/codeintel_cli/parser/imports.py +26 -0
  68. aja_codeintel-0.1.0/codeintel_cli/parser/resolve.py +49 -0
  69. aja_codeintel-0.1.0/codeintel_cli/parser/symbols.py +92 -0
  70. aja_codeintel-0.1.0/codeintel_cli/scanner/__init__.py +0 -0
  71. aja_codeintel-0.1.0/codeintel_cli/scanner/scanner.py +41 -0
  72. aja_codeintel-0.1.0/pyproject.toml +36 -0
  73. aja_codeintel-0.1.0/setup.cfg +4 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shiva Areti
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,436 @@
1
+ Metadata-Version: 2.4
2
+ Name: aja-codeintel
3
+ Version: 0.1.0
4
+ Summary: CodeIntel CLI tool
5
+ Author: Your Name
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Shiva Areti
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+ Keywords: cli,java,python,codebase,intelligence
28
+ Classifier: Programming Language :: Python :: 3
29
+ Classifier: License :: OSI Approved :: MIT License
30
+ Classifier: Operating System :: OS Independent
31
+ Classifier: Environment :: Console
32
+ Requires-Python: >=3.10
33
+ Description-Content-Type: text/markdown
34
+ License-File: LICENSE
35
+ Requires-Dist: typer[all]>=0.21.1
36
+ Dynamic: license-file
37
+
38
+ # AJA – Code Intelligence for Java & Python
39
+
40
+ **Understand your codebase. Not just files — architecture.**
41
+
42
+ AJA is a codebase intelligence CLI for Java and Python projects. It gives you structural visibility that no IDE provides by default — how services connect to models, what depends on what, and where code actually lives across layers.
43
+
44
+ Built for developers who work in real, messy, large codebases — not toy projects.
45
+
46
+ ---
47
+
48
+ ## Why AJA?
49
+
50
+ Standard IDE tools give you:
51
+ - Go to definition
52
+ - File search
53
+ - Text grep
54
+
55
+ That's not enough in real codebases where:
56
+ - A single service touches a dozen models
57
+ - Relationships are implicit and never documented
58
+ - "Go to definition" sends you three layers deep with no map back
59
+
60
+ AJA gives you the layer above all of that:
61
+
62
+ > **Architectural navigation — understand the system, not just the file.**
63
+
64
+ ---
65
+
66
+ ## Core Workflow
67
+
68
+ AJA is built around three actions:
69
+
70
+ ### 🔍 Analyze
71
+ Scan your project once. AJA builds a structural map of every service, model, repository, controller, and their relationships — across your entire codebase.
72
+
73
+ ### 🧭 Jump
74
+ Navigate instantly to any file, model, or service by name. No folder browsing. No tab switching. No guessing.
75
+
76
+ ### 📋 Act
77
+ Extract exactly the right context for code review, refactoring, documentation, or AI-assisted analysis.
78
+
79
+ ---
80
+
81
+ ## Key Features
82
+
83
+ | Feature | Details |
84
+ |---|---|
85
+ | Java & Python support | Static analysis, no compilation needed |
86
+ | Service → model → repository mapping | Full architectural layer visibility |
87
+ | Forward dependency traversal | What does this file depend on? |
88
+ | Reverse dependency traversal | What depends on this file? |
89
+ | Symbol-level relationships | Classes, methods, interfaces across files |
90
+ | Offline & local | No network, no server, no telemetry |
91
+ | Read-only | Zero modification to your project, ever |
92
+
93
+ ---
94
+
95
+ ## Getting Started
96
+
97
+ ```bash
98
+ pip install aja-codeintel
99
+ cd your-project/
100
+ aja scan .
101
+ aja tree .
102
+ ```
103
+
104
+ That's it. AJA is now aware of your project structure.
105
+
106
+ ---
107
+
108
+ ## Commands — Full Reference
109
+
110
+ ---
111
+
112
+ ### `aja scan .`
113
+
114
+ **What it does:** Indexes all Java and Python source files in your project. Builds the internal graph of imports, dependencies, and relationships that every other command relies on.
115
+
116
+ **When to use it:** Once when you first open a project. Again after major structural changes (adding services, moving files).
117
+
118
+ ```bash
119
+ aja scan .
120
+ ```
121
+
122
+ > Run this first. Everything else depends on it.
123
+
124
+ ---
125
+
126
+ ### `aja tree .`
127
+
128
+ **What it does:** Prints a clean, source-only tree of your project. Filters out build artifacts, cache folders, and non-source files so you see only what matters.
129
+
130
+ **When to use it:** Getting your bearings in an unfamiliar codebase. Understanding folder structure at a glance.
131
+
132
+ ```bash
133
+ aja tree .
134
+ ```
135
+
136
+ Example output:
137
+ ```
138
+ project/
139
+ ├── controller/
140
+ │ └── UserController.java
141
+ ├── service/
142
+ │ └── UserService.java
143
+ ├── model/
144
+ │ └── User.java
145
+ └── repository/
146
+ └── UserRepository.java
147
+ ```
148
+
149
+ ---
150
+
151
+ ### `aja open <name>`
152
+
153
+ **What it does:** Fuzzy-searches your indexed project and opens the best matching file. You don't need the full path or exact name.
154
+
155
+ **When to use it:** When you know roughly what you're looking for but don't want to browse folders.
156
+
157
+ ```bash
158
+ aja open UserService
159
+ aja open EmailService
160
+ aja open AppConfig
161
+ ```
162
+
163
+ > Saves you from clicking through 6 folders to find one file.
164
+
165
+ ---
166
+
167
+ ### `aja servicemap <service>`
168
+
169
+ **What it does:** Maps a service to everything it touches — controllers that call it, models it uses, and repositories it depends on. Gives you a full architectural picture of one service in seconds.
170
+
171
+ **When to use it:** Before modifying a service. During code review. When onboarding to understand how a service fits into the system.
172
+
173
+ ```bash
174
+ aja servicemap userservice
175
+ ```
176
+
177
+ Example output:
178
+ ```
179
+ UserService
180
+ ├── Called by → UserController
181
+ ├── Uses model → User, Address
182
+ └── Depends on → UserRepository, EmailService
183
+ ```
184
+
185
+ > This is the command that replaces 20 minutes of manual tracing.
186
+
187
+ ---
188
+
189
+ ### `aja modeltree <model>`
190
+
191
+ **What it does:** Shows everywhere a domain model is referenced — which services use it, which repositories store it, which controllers expose it. Full vertical slice through your architecture for one model.
192
+
193
+ **When to use it:** Before renaming or modifying a model. Understanding the full impact of a data structure change.
194
+
195
+ ```bash
196
+ aja modeltree User
197
+ aja modeltree Address
198
+ aja modeltree Order
199
+ ```
200
+
201
+ Example output:
202
+ ```
203
+ User (model)
204
+ ├── UserService (service)
205
+ ├── UserRepository (repository)
206
+ ├── UserController (controller)
207
+ ├── UserResponse (dto)
208
+ └── UserCreateRequest (dto)
209
+ ```
210
+
211
+ > Know the full blast radius before you touch anything.
212
+
213
+ ---
214
+
215
+ ### `aja related <file> --depth <n>`
216
+
217
+ **What it does:** Shows all files that the given file directly or transitively imports and depends on. Depth controls how many layers deep to traverse.
218
+
219
+ **When to use it:** Understanding what a file pulls in. Checking for bloated dependencies. Preparing for a refactor.
220
+
221
+ ```bash
222
+ aja related UserService --depth 1 # direct dependencies only
223
+ aja related UserService --depth 2 # dependencies of dependencies
224
+ aja related UserService --depth 3 # full transitive graph
225
+ ```
226
+
227
+ > Start at depth 1, go deeper only when you need to.
228
+
229
+ ---
230
+
231
+ ### `aja rrelated <file>`
232
+
233
+ **What it does:** The reverse of `related`. Shows every file in your project that imports or depends on the given file. This is what standard IDEs almost never show you clearly.
234
+
235
+ **When to use it:** Before deleting or renaming a file. Understanding who will break if you change this. Identifying high-impact files in your codebase.
236
+
237
+ ```bash
238
+ aja rrelated User
239
+ aja rrelated EmailService
240
+ aja rrelated ValidationUtil
241
+ ```
242
+
243
+ Example output:
244
+ ```
245
+ User.java is depended on by:
246
+ ├── UserService.java
247
+ ├── UserRepository.java
248
+ ├── UserController.java
249
+ └── UserResponse.java
250
+ ```
251
+
252
+ > If this list is long, think twice before changing that file.
253
+
254
+ ---
255
+
256
+ ### `aja relsymbols <file>`
257
+
258
+ **What it does:** Goes deeper than file-level relationships. Shows which specific classes, methods, and interfaces from this file are used across other files — and exactly where.
259
+
260
+ **When to use it:** Refactoring a class or method. Understanding which parts of a file are actually used vs. dead code candidates.
261
+
262
+ ```bash
263
+ aja relsymbols UserService
264
+ aja relsymbols ValidationUtil
265
+ ```
266
+
267
+ Example output:
268
+ ```
269
+ UserService
270
+ ├── createUser() → used in UserController.java
271
+ ├── getUserById() → used in UserController.java, AdminService.java
272
+ └── deleteUser() → used in AdminController.java
273
+ ```
274
+
275
+ > Symbol-level precision, not just file-level noise.
276
+
277
+ ---
278
+
279
+ ### `aja imports <file>`
280
+
281
+ **What it does:** Lists all local imports found in a given file — what it directly pulls in from your project (not third-party libraries).
282
+
283
+ **When to use it:** Quick check of what a file depends on without running the full graph.
284
+
285
+ ```bash
286
+ aja imports UserService.java
287
+ aja imports orders.py
288
+ ```
289
+
290
+ ---
291
+
292
+ ### `aja resolve <import-path>`
293
+
294
+ **What it does:** Converts a logical import path (like a Java package path or Python module path) into the actual file location on disk.
295
+
296
+ **When to use it:** When you see an import in code and want to jump to the real file fast.
297
+
298
+ ```bash
299
+ aja resolve com.example.service.UserService
300
+ aja resolve app.domain.entity.user
301
+ ```
302
+
303
+ ---
304
+
305
+ ### `aja where <file>`
306
+
307
+ **What it does:** The reverse of `resolve`. Takes a file path and tells you its import path — what you'd write if you were importing it from another file.
308
+
309
+ **When to use it:** When you need to write an import and don't want to manually construct the package path.
310
+
311
+ ```bash
312
+ aja where src/main/java/com/example/service/UserService.java
313
+ aja where app/domain/entity/user.py
314
+ ```
315
+
316
+ ---
317
+
318
+ ### `aja folder <path>`
319
+
320
+ **What it does:** Lists all source files under a given folder recursively. Respects AJA's source-file filtering (Java and Python only).
321
+
322
+ **When to use it:** Quickly auditing what's inside a specific module or package folder.
323
+
324
+ ```bash
325
+ aja folder src/main/java/com/example/service
326
+ aja folder app/domain
327
+ ```
328
+
329
+ ---
330
+
331
+ ### `aja models`
332
+
333
+ **What it does:** Lists all domain models and entities found in your project, detected from conventional model/entity folder patterns.
334
+
335
+ **When to use it:** Getting a full inventory of your data models. Onboarding. Architecture review.
336
+
337
+ ```bash
338
+ aja models
339
+ ```
340
+
341
+ ---
342
+
343
+ ### `aja copy <file>`
344
+
345
+ **What it does:** Copies the full contents of a file (or multiple files) to your clipboard — ready to paste into a code review, chat, or AI tool.
346
+
347
+ **When to use it:** Preparing context for AI-assisted analysis. Sharing code in reviews. Extracting content without opening the file.
348
+
349
+ ```bash
350
+ aja copy src/main/java/com/example/service/UserService.java
351
+ ```
352
+
353
+ ---
354
+
355
+ ### `aja context <file>`
356
+
357
+ **What it does:** Builds a layered context bundle around a file — the file itself plus its most relevant related files. Designed to give AI tools or code reviewers exactly the right amount of context, nothing more.
358
+
359
+ **When to use it:** Before asking an AI tool to review or refactor a component. Preparing a PR description.
360
+
361
+ ```bash
362
+ aja context UserService
363
+ aja context UserService --depth 2
364
+ ```
365
+
366
+ ---
367
+
368
+ ### `aja version`
369
+
370
+ ```bash
371
+ aja version
372
+ ```
373
+
374
+ Prints the current AJA version.
375
+
376
+ ---
377
+
378
+ ## Supported Languages
379
+
380
+ | Language | Analysis | Imports | Symbols | Services | Models |
381
+ |----------|----------|---------|---------|----------|--------|
382
+ | Java | ✅ | ✅ | ✅ | ✅ | ✅ |
383
+ | Python | ✅ | ✅ | ✅ | ✅ | ✅ |
384
+
385
+ > Static analysis only — no compilation, no runtime, no build tools required.
386
+
387
+ ---
388
+
389
+ ## When to Use AJA
390
+
391
+ | Situation | Best Command |
392
+ |---|---|
393
+ | Just opened an unfamiliar codebase | `aja tree .` → `aja models` |
394
+ | About to modify a service | `aja servicemap <service>` |
395
+ | About to delete or rename a file | `aja rrelated <file>` |
396
+ | Reviewing a PR | `aja related <file> --depth 2` |
397
+ | Want to understand a model's impact | `aja modeltree <model>` |
398
+ | Preparing context for AI tools | `aja context <file>` or `aja copy <file>` |
399
+ | Tracing an import to its source | `aja resolve <import>` |
400
+
401
+ ---
402
+
403
+ ## What AJA Is NOT
404
+
405
+ | ❌ Not this | ✅ It's this instead |
406
+ |---|---|
407
+ | A debugger | A static structure analyzer |
408
+ | A build tool | A read-only intelligence layer |
409
+ | A language server | A fast, offline graph query tool |
410
+ | Cloud-dependent | Fully local, no telemetry |
411
+ | An IDE replacement | A complement to your IDE |
412
+
413
+ ---
414
+
415
+ ## Design Principles
416
+
417
+ - **Zero configuration** — point it at any project and it works
418
+ - **Read-only always** — AJA never writes to or modifies your project
419
+ - **Human-readable output** — designed for terminals and humans, not just machines
420
+ - **Deterministic** — same input always produces the same output
421
+ - **Fast** — sub-second responses on most commands
422
+
423
+ ---
424
+
425
+ ## Requirements
426
+
427
+ - Python 3.8+
428
+ - Java or Python project (or both)
429
+
430
+ ---
431
+
432
+
433
+ ---
434
+
435
+ >If IDEs help you write code,
436
+ > **AJA helps you understand it.**