codeui-python 0.1.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 (52) hide show
  1. codeui/__init__.py +23 -0
  2. codeui/agent/__init__.py +15 -0
  3. codeui/agent/context.py +207 -0
  4. codeui/agent/contribution.py +224 -0
  5. codeui/agent/edit_tools.py +280 -0
  6. codeui/agent/integrations.py +243 -0
  7. codeui/agent/mcp_server.py +94 -0
  8. codeui/analysis/__init__.py +1 -0
  9. codeui/analysis/api_drift.py +79 -0
  10. codeui/analysis/base.py +42 -0
  11. codeui/analysis/circular.py +116 -0
  12. codeui/analysis/dead_code.py +63 -0
  13. codeui/analysis/duplicates.py +69 -0
  14. codeui/analysis/runner.py +57 -0
  15. codeui/analysis/shadowing.py +49 -0
  16. codeui/analysis/undefined.py +97 -0
  17. codeui/analysis/unreachable.py +28 -0
  18. codeui/analysis/unresolved_import.py +153 -0
  19. codeui/cli/__init__.py +1 -0
  20. codeui/cli/main.py +437 -0
  21. codeui/core/__init__.py +1 -0
  22. codeui/core/cache.py +135 -0
  23. codeui/core/graph.py +435 -0
  24. codeui/core/ir.py +218 -0
  25. codeui/core/override.py +230 -0
  26. codeui/core/repo.py +85 -0
  27. codeui/core/resolver.py +281 -0
  28. codeui/errors.py +98 -0
  29. codeui/lang/__init__.py +1 -0
  30. codeui/lang/base.py +117 -0
  31. codeui/lang/generic.py +90 -0
  32. codeui/lang/go.py +167 -0
  33. codeui/lang/python.py +294 -0
  34. codeui/lang/registry.py +83 -0
  35. codeui/lang/rust.py +185 -0
  36. codeui/lang/ts.py +396 -0
  37. codeui/plugins/__init__.py +1 -0
  38. codeui/plugins/registry.py +31 -0
  39. codeui/report/__init__.py +1 -0
  40. codeui/report/json_emitter.py +24 -0
  41. codeui/report/markdown_emitter.py +33 -0
  42. codeui/report/sarif_emitter.py +56 -0
  43. codeui/server/__init__.py +1 -0
  44. codeui/server/server.py +705 -0
  45. codeui/tracer/__init__.py +1 -0
  46. codeui/tracer/tracer.py +147 -0
  47. codeui_python-0.1.0.dist-info/METADATA +191 -0
  48. codeui_python-0.1.0.dist-info/RECORD +52 -0
  49. codeui_python-0.1.0.dist-info/WHEEL +5 -0
  50. codeui_python-0.1.0.dist-info/entry_points.txt +2 -0
  51. codeui_python-0.1.0.dist-info/licenses/LICENSE +21 -0
  52. codeui_python-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1 @@
1
+ """Call-chain and logic tracing package for codeui."""
@@ -0,0 +1,147 @@
1
+ """Logic and call-chain tracer across files and languages."""
2
+ import fnmatch
3
+ from collections import deque
4
+ from pathlib import Path
5
+ from typing import Generator, Iterable, List, Set, Tuple
6
+ from codeui.core.graph import Graph
7
+ from codeui.core.ir import Edge, EdgeKind, Symbol, SymbolKind
8
+ from codeui.errors import SymbolNotFoundError
9
+
10
+ class Tracer:
11
+ """Graph logic tracer yielding call chains, data flow, and entry points.
12
+ Example:
13
+ >>> g = Graph()
14
+ >>> tracer = Tracer(g)
15
+ >>> list(tracer.entry_points())
16
+ []
17
+ """
18
+ def __init__(self, graph: Graph) -> None:
19
+ self.graph = graph
20
+
21
+ def forward(self, symbol_id: str, depth: int | None = None) -> Generator[Symbol, None, None]:
22
+ """Follow symbol usage forward (who uses or calls this symbol?).
23
+ Example:
24
+ >>> g = Graph()
25
+ >>> tracer = Tracer(g)
26
+ >>> list(tracer.forward("nonexistent", 1))
27
+ []
28
+ """
29
+ if not self.graph.has_symbol(symbol_id):
30
+ return
31
+ visited: Set[str] = {symbol_id}
32
+ queue: deque[Tuple[str, int]] = deque([(symbol_id, 0)])
33
+ while queue:
34
+ curr_id, curr_depth = queue.popleft()
35
+ if depth is not None and curr_depth >= depth:
36
+ continue
37
+ incoming = self.graph.get_incoming_edges(curr_id)
38
+ for edge in incoming:
39
+ src_id = edge.source_id
40
+ if src_id not in visited and self.graph.has_symbol(src_id):
41
+ visited.add(src_id)
42
+ queue.append((src_id, curr_depth + 1))
43
+ yield self.graph.get_symbol(src_id)
44
+
45
+ def backward(self, symbol_id: str, depth: int | None = None) -> Generator[Symbol, None, None]:
46
+ """Follow symbol dependencies backward (what does this symbol depend on?).
47
+ Example:
48
+ >>> g = Graph()
49
+ >>> tracer = Tracer(g)
50
+ >>> list(tracer.backward("nonexistent", 1))
51
+ []
52
+ """
53
+ if not self.graph.has_symbol(symbol_id):
54
+ return
55
+ visited: Set[str] = {symbol_id}
56
+ queue: deque[Tuple[str, int]] = deque([(symbol_id, 0)])
57
+ while queue:
58
+ curr_id, curr_depth = queue.popleft()
59
+ if depth is not None and curr_depth >= depth:
60
+ continue
61
+ outgoing = self.graph.get_outgoing_edges(curr_id)
62
+ for edge in outgoing:
63
+ tgt_id = edge.target_id
64
+ if tgt_id not in visited and self.graph.has_symbol(tgt_id):
65
+ visited.add(tgt_id)
66
+ queue.append((tgt_id, curr_depth + 1))
67
+ yield self.graph.get_symbol(tgt_id)
68
+
69
+ def paths(self, from_id: str, to_id: str, max_paths: int = 5) -> Generator[List[Symbol], None, None]:
70
+ """Find shortest call or reference paths between two symbols.
71
+ Example:
72
+ >>> g = Graph()
73
+ >>> tracer = Tracer(g)
74
+ >>> list(tracer.paths("a", "b", 5))
75
+ []
76
+ """
77
+ if not self.graph.has_symbol(from_id) or not self.graph.has_symbol(to_id):
78
+ return
79
+ paths_found = 0
80
+ queue: deque[List[str]] = deque([[from_id]])
81
+ visited: Set[Tuple[str, ...]] = set()
82
+ while queue and paths_found < max_paths:
83
+ path = queue.popleft()
84
+ last_node = path[-1]
85
+ if last_node == to_id:
86
+ paths_found += 1
87
+ yield [self.graph.get_symbol(nid) for nid in path]
88
+ continue
89
+ for edge in self.graph.get_outgoing_edges(last_node):
90
+ nxt = edge.target_id
91
+ if nxt not in path and self.graph.has_symbol(nxt):
92
+ new_path = path + [nxt]
93
+ path_tuple = tuple(new_path)
94
+ if path_tuple not in visited:
95
+ visited.add(path_tuple)
96
+ queue.append(new_path)
97
+
98
+ def data_flow(self, symbol_id: str) -> Generator[Tuple[Symbol, str], None, None]:
99
+ """Trace definition-use data flow chains for a variable or parameter.
100
+ Example:
101
+ >>> g = Graph()
102
+ >>> tracer = Tracer(g)
103
+ >>> list(tracer.data_flow("s1"))
104
+ []
105
+ """
106
+ if not self.graph.has_symbol(symbol_id):
107
+ return
108
+ for edge in self.graph.get_outgoing_edges(symbol_id):
109
+ if edge.kind in (EdgeKind.READS, EdgeKind.WRITES, EdgeKind.RETURNS):
110
+ if self.graph.has_symbol(edge.target_id):
111
+ yield (self.graph.get_symbol(edge.target_id), str(edge.kind))
112
+
113
+ def entry_points(self) -> Generator[Symbol, None, None]:
114
+ """Discover project entry point symbols across languages with user entry precedence.
115
+ Example:
116
+ >>> from codeui.core.ir import Location, Symbol, SymbolKind, Visibility
117
+ >>> g = Graph()
118
+ >>> g.set_entry_points(["custom_script.py"])
119
+ >>> loc = Location("custom_script.py", 1, 0, 2, 0)
120
+ >>> g.add_symbol(Symbol("custom_script.py::run", "run", "custom_script.run", SymbolKind.FUNCTION, "python", loc, None, "def run():", Visibility.PUBLIC, (), "h"))
121
+ >>> tracer = Tracer(g)
122
+ >>> [s.name for s in tracer.entry_points()]
123
+ ['run']
124
+ """
125
+ if getattr(self.graph, "_entry_points", None):
126
+ user_entries = [str(ep).replace("\\", "/").lstrip("./") for ep in self.graph._entry_points]
127
+ yielded_ids = set()
128
+ for sym in self.graph.get_all_symbols():
129
+ f_id = (sym.location.file_id if sym.location else sym.id).replace("\\", "/").lstrip("./")
130
+ is_match = False
131
+ for ep in user_entries:
132
+ ep_sub = ep.split("/", 1)[1] if "/" in ep else ep
133
+ if f_id == ep or f_id == ep_sub or (any(c in ep for c in "*?[") and fnmatch.fnmatch(f_id, ep)):
134
+ is_match = True
135
+ break
136
+ if is_match and sym.id not in yielded_ids:
137
+ yielded_ids.add(sym.id)
138
+ yield sym
139
+ if yielded_ids:
140
+ return
141
+
142
+ entry_names = {"main", "index", "App", "app", "run", "handler", "cli", "start", "init", "__main__"}
143
+ for sym in self.graph.get_all_symbols():
144
+ if sym.kind in (SymbolKind.FUNCTION, SymbolKind.FILE) and not sym.name.startswith("test_") and (
145
+ sym.name in entry_names or any(sym.name.startswith(p) for p in ("start_", "run_", "main_")) or sym.id.endswith("main.py") or sym.id.endswith("main.go") or sym.id.endswith("main.rs") or sym.id.endswith("index.ts") or sym.id.endswith("index.js")
146
+ ):
147
+ yield sym
@@ -0,0 +1,191 @@
1
+ Metadata-Version: 2.4
2
+ Name: codeui-python
3
+ Version: 0.1.0
4
+ Summary: Universal static analysis code intelligence library, defect detector, graph visualizer, and agent context builder
5
+ Home-page: https://github.com/AAlsubari/codeUI
6
+ Author: Akram Alsubari
7
+ Author-email: Akram Alsubari <akramsubari@gmail.com>
8
+ License: MIT
9
+ Project-URL: Homepage, https://github.com/AAlsubari/codeUI
10
+ Project-URL: Documentation, https://github.com/AAlsubari/codeUI#readme
11
+ Project-URL: Repository, https://github.com/AAlsubari/codeUI.git
12
+ Project-URL: Issues, https://github.com/AAlsubari/codeUI/issues
13
+ Keywords: code-analysis,static-analysis,code-graph,ast,ai-agents,code-intelligence,llm-context,defect-detection
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: Software Development :: Quality Assurance
23
+ Classifier: Topic :: Software Development :: Code Generators
24
+ Requires-Python: >=3.10
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
29
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
30
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
31
+ Requires-Dist: build; extra == "dev"
32
+ Requires-Dist: twine; extra == "dev"
33
+ Dynamic: author
34
+ Dynamic: home-page
35
+ Dynamic: license-file
36
+ Dynamic: requires-python
37
+
38
+ # codeui
39
+
40
+ [![PyPI Version](https://img.shields.io/pypi/v/codeui.svg)](https://pypi.org/project/codeui/)
41
+ [![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
42
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
43
+ [![Code Style](https://img.shields.io/badge/code%20style-strict-green.svg)](https://github.com/AAlsubari/codeUI)
44
+
45
+ **`codeui`** is a universal, static-analysis-based code-intelligence library, defect detector, interactive graph visualizer, override store, and AI agent context builder.
46
+
47
+ It parses code bases safely without ever executing or importing analyzed code, extracting frozen intermediate representation (IR) graphs, tracing call hierarchies, detecting subtle architectural defects, and serving an interactive web visualizer.
48
+
49
+ Repository: [https://github.com/AAlsubari/codeUI](https://github.com/AAlsubari/codeUI)
50
+
51
+ ---
52
+
53
+ ## Key Features
54
+
55
+ - **100% Static Analysis**: Safe AST extraction — **NEVER** executes, imports, or evaluates target project code.
56
+ - **Multi-Language Adapters**: Native analyzers for Python, TypeScript, JavaScript, Go, Rust, Dockerfiles, Makefiles, and generic fallback parser.
57
+ - **Defect Detection Engine**: 8 built-in static defect analyzers:
58
+ - `undefined`: Missing symbols and functions
59
+ - `dead_code`: Unreferenced private routines and unused exports
60
+ - `unresolved_import`: Missing or invalid import paths
61
+ - `circular`: Cyclic dependency detection via Tarjan's SCC algorithm
62
+ - `duplicates`: Structural code clone identification via shingling
63
+ - `unreachable`: Code following terminal control statements
64
+ - `shadowing`: Variable shadowing across nested scopes
65
+ - `api_drift`: Interface drift tracking against baseline snapshots
66
+ - **Interactive Localhost Visualizer**: Force-directed multi-window canvas with live code editor, mini-map, symbol inspection, and direct disk edit toggle (`http://127.0.0.1:3000`).
67
+ - **Direct Disk & Non-Destructive Override Store**: Save edits live to project disk files or non-destructively in an in-memory shadow store with unified diff generation (`EditTools`, `OverrideStore`).
68
+ - **AI Agent Context Engine**: Graph-traversal based dynamic context bundling (`ContextBuilder`) optimized for LLM prompts without token counting overhead.
69
+ - **Agent Self-Contribution Workflow**: Integrated `ContributionManager` allowing AI agents to dynamically fetch repository metadata, clone `https://github.com/AAlsubari/codeUI`, apply bug fixes or feature additions, and submit contributions.
70
+
71
+ ---
72
+
73
+ ## Installation
74
+
75
+ Install via PyPI:
76
+
77
+ ```bash
78
+ pip install codeui
79
+ ```
80
+
81
+ Or install from source in editable mode:
82
+
83
+ ```bash
84
+ git clone https://github.com/AAlsubari/codeUI.git
85
+ cd codeUI
86
+ pip install -e ".[dev]"
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Quickstart
92
+
93
+ ### 1. Command Line Interface (CLI)
94
+
95
+ ```bash
96
+ # Scan a project directory and print summary
97
+ codeui scan .
98
+
99
+ # Start the interactive visualizer server
100
+ codeui serve . --port 3000
101
+
102
+ # Perform forward symbol call trace
103
+ codeui trace "src/app.py::main" . --direction forward --depth 3
104
+
105
+ # Generate AI Agent Context Bundle for a symbol
106
+ codeui context . --symbol "src/app.py::main"
107
+
108
+ # List detected code defects in SARIF format
109
+ codeui defects . --format sarif
110
+
111
+ # Apply direct disk edit to a file
112
+ codeui apply src/main.py --content "print('hello world')" --disk
113
+
114
+ # Submit automated contribution to codeui repo
115
+ codeui contribute --title "Fix import resolution bug" --file src/fix.py "content"
116
+ ```
117
+
118
+ ### 2. Python API Usage
119
+
120
+ ```python
121
+ from pathlib import Path
122
+ from codeui.cli.main import scan_project
123
+ from codeui.tracer.tracer import Tracer
124
+ from codeui.agent.context import ContextBuilder
125
+
126
+ # 1. Scan codebase into a Universal Graph
127
+ graph = scan_project(Path("."))
128
+
129
+ # 2. Perform Call Graph Tracing
130
+ tracer = Tracer(graph)
131
+ called_symbols = list(tracer.forward("src/main.py::run"))
132
+
133
+ # 3. Build Minimal Context Bundle for LLM Prompts
134
+ builder = ContextBuilder(graph)
135
+ bundle = builder.for_symbol("src/main.py::run", depth=2)
136
+ print(bundle.to_json())
137
+ ```
138
+
139
+ ---
140
+
141
+ ## AI Agent Self-Improvement Workflow
142
+
143
+ `codeui` provides first-class support for AI agents to automatically improve the library when encountering bugs, missing features, or optimization opportunities:
144
+
145
+ ```python
146
+ from codeui.agent.contribution import ContributionManager
147
+ from codeui.core.repo import get_library_repo_url
148
+
149
+ # Get official library repository URL (https://github.com/AAlsubari/codeUI)
150
+ repo_url = get_library_repo_url()
151
+
152
+ # Submit automated agent bug fix
153
+ mgr = ContributionManager()
154
+ result = mgr.submit_contribution(
155
+ title="Agent: Add missing exception handling",
156
+ description="Identified edge case in AST parser during project scan.",
157
+ file_changes={"codeui/lang/python.py": "# fixed parser logic"},
158
+ push=True,
159
+ )
160
+ ```
161
+
162
+ ---
163
+
164
+ ## Code Examples
165
+
166
+ Check out the [`examples/`](./examples/) folder for complete, runnable scripts:
167
+
168
+ - [`01_basic_project_scan.py`](./examples/01_basic_project_scan.py) — Project scanning & defect detection
169
+ - [`02_symbol_tracing.py`](./examples/02_symbol_tracing.py) — Call graph forward/backward tracing
170
+ - [`03_agent_context_bundle.py`](./examples/03_agent_context_bundle.py) — LLM context bundle construction
171
+ - [`04_edits_and_overrides.py`](./examples/04_edits_and_overrides.py) — OverrideStore & direct disk edits
172
+ - [`05_agent_contribution.py`](./examples/05_agent_contribution.py) — Agent automated contribution workflow
173
+
174
+ ---
175
+
176
+ ## Documentation
177
+
178
+ Full documentation is available in the [`docs/`](./docs/) directory:
179
+
180
+ - [Quickstart Guide](./docs/quickstart.md)
181
+ - [Python API Reference](./docs/api.md)
182
+ - [AI Agent Integration & MCP](./docs/agent_integration.md)
183
+ - [Architecture Overview](./docs/architecture.md)
184
+ - [Static Analyzer & Defect Reference](./docs/analyzer_reference.md)
185
+ - [Extending codeui](./docs/extending.md)
186
+
187
+ ---
188
+
189
+ ## License
190
+
191
+ `codeui` is released under the [MIT License](./LICENSE). Copyright (c) 2026 Akram Alsubari and codeui maintainers.
@@ -0,0 +1,52 @@
1
+ codeui/__init__.py,sha256=Ssnr9tSfNJ4WoELTMsVUt6XJo1dI-HW2DwR8SGyS_ak,591
2
+ codeui/errors.py,sha256=hk3V3M8QIRe_wzJS8qhhfkGhC-S0qJJ9KnHgR9KaUl4,3248
3
+ codeui/agent/__init__.py,sha256=NKsihtOXuJb695kvKb_nl5ROTb79bCn1fvqkFsm7A9U,470
4
+ codeui/agent/context.py,sha256=zYKYcfARJ7Fn0TlqmqRdLLBcsomE9H0LK0-B5f5updk,7979
5
+ codeui/agent/contribution.py,sha256=86aj76DOc5HS-LQYTv2BIgvA8SYVF2cf62FWKIVmy7Q,9197
6
+ codeui/agent/edit_tools.py,sha256=aI6Najno8K8kE0y-S7tLkUoszOqzLSYDIGnMw00j0aA,11712
7
+ codeui/agent/integrations.py,sha256=KU_Vw6h9hKBn1xU1fqfdaoxZdW2bd7fs4pECCs3RpHA,9425
8
+ codeui/agent/mcp_server.py,sha256=eRYhjqIWk16ONOTL_bszfdcsuNw4Ad-cakdpaG1bWJ0,4856
9
+ codeui/analysis/__init__.py,sha256=imkrR1KRFQYYgZIqAshQh8OrDoonUHQ1Pts_t5DQ9Gc,63
10
+ codeui/analysis/api_drift.py,sha256=GyNKNJ5PBhX7lW3P2RLx24T9MfEMKBQzPqMqWqI91yk,3425
11
+ codeui/analysis/base.py,sha256=cyokp43Dj48J9_pzCB2iPcN4wrrT3-NefvXbI36yk5c,1237
12
+ codeui/analysis/circular.py,sha256=KT7jMGzIXk7YbaxL3Tg5cnglbPSJP1VGemLowTkLXZI,5027
13
+ codeui/analysis/dead_code.py,sha256=xwXOzd7Qds_NUF1E_78XPrEjuBYw69AHlwYpYlId0Cw,3022
14
+ codeui/analysis/duplicates.py,sha256=od8_H8c-ToczoDNDJJFXgJrqN6cSAliAKv1nWvg7MP4,3378
15
+ codeui/analysis/runner.py,sha256=AaRBD96o3GQ6v5IJES1cY_eqoWyFiCpx2amBSPOEzEU,2296
16
+ codeui/analysis/shadowing.py,sha256=61n9j0NWbsEpP5nS8v4m9cjNFFHVH95C28eua1ge2w0,2282
17
+ codeui/analysis/undefined.py,sha256=N5vdLPGM4yHmH_LQe_OPzWZFexASiwshPiG_dwHgByY,4338
18
+ codeui/analysis/unreachable.py,sha256=9UTEquXx88nphC_AARvyBDfN1_ywuyPcQM9CV9v9GF8,1016
19
+ codeui/analysis/unresolved_import.py,sha256=0YVDLOsZua4nBPWjJ17jIY-loXHcnnrJIiWw_HNsrRw,7547
20
+ codeui/cli/__init__.py,sha256=tlowuhKkia3n0Sw6SYZVedruaGe2CeadIAJsVLlOxVY,40
21
+ codeui/cli/main.py,sha256=O9ZwXqTO6Lh5_4_oSqR2yPoagT9LuV-Rja20SU4tXwE,20591
22
+ codeui/core/__init__.py,sha256=DOCOJBKyDDlejtxYipqP3utHr6iBcMoCVdt0WUa2NJw,34
23
+ codeui/core/cache.py,sha256=3jPnxxkGl1Y560jM5Fb8pIksNGPCTpJKMbvSQfVnm34,4984
24
+ codeui/core/graph.py,sha256=HDyT89ofI_jkM3HnuQkFwaOBqPPs-txLThtK6MfE_G0,19642
25
+ codeui/core/ir.py,sha256=GyAyovIAc-8eQioCv1iZne5HnIRh6uoiBrkVNu__F6w,5903
26
+ codeui/core/override.py,sha256=KLzGn-0Y0sNF_3dhT_yaGAGsC7DuQxJGmrG_hadYN44,8650
27
+ codeui/core/repo.py,sha256=s6ibeq_NHYhs0MOZ3dt6yTj4KxhUXAUfvQJxd8IKSd8,3068
28
+ codeui/core/resolver.py,sha256=xHJoDdhnzUrmD4O82sAMOIkNUA__MhbxVDc0jASfNsQ,14194
29
+ codeui/lang/__init__.py,sha256=aR8wCunv92M1PzMmPHaO7d2PdDlYftGbfAV1Ux-IM1o,44
30
+ codeui/lang/base.py,sha256=Nhc8KeR3mV7zNmt71duS2cdNJgBSe59X75byXrkSlAo,4074
31
+ codeui/lang/generic.py,sha256=XpBbVI4gqIug3oRHVA_q_-XDgmJOQE7hapn2rHlWLnk,3452
32
+ codeui/lang/go.py,sha256=wTojhFthwUL22QqkDN_QMweQwmC3QyQAAOlXzax_j30,7166
33
+ codeui/lang/python.py,sha256=_lXBHau0k5ZrRJIppMkmPpyQ-clzUYYzBTRipIGws6A,14810
34
+ codeui/lang/registry.py,sha256=OmVM9csJJHSFfg7b9Aed1O8WA3wNx83QlaOZKdiw2ao,3098
35
+ codeui/lang/rust.py,sha256=KKIC4xPQjkip6Or4F6lMx1rcc3utm2oiZhoVIhHmmI4,8173
36
+ codeui/lang/ts.py,sha256=D0x-WlRUDU91HOH5_rvo4jmTDfNVatDuc1OyO5_YSdw,20431
37
+ codeui/plugins/__init__.py,sha256=R7rl3eQcvZIhY2bOX_5nuz18HhlVLSvsQPG2-VFMqbk,42
38
+ codeui/plugins/registry.py,sha256=fH3HTp8h3csn1oYhptdZ6a0XZHyFuU_Ecc14DKRubkk,1061
39
+ codeui/report/__init__.py,sha256=RnVWBV3S6zb2-0GIhWt8SQUTWrTrZK9DZe9L1URSHC0,42
40
+ codeui/report/json_emitter.py,sha256=tO1XU4qtbU46cBgmMcwOP_wAQXk4lJq7MqlUrWABkto,727
41
+ codeui/report/markdown_emitter.py,sha256=_MbgZFOvJF0L1QUhlITRG_HiblgfFlr5a1XcatCK-_g,1199
42
+ codeui/report/sarif_emitter.py,sha256=WOcIecwjw-e0b3Ptw_1yT0ekEZMMVfNxsqyywQsgPyo,2065
43
+ codeui/server/__init__.py,sha256=hTzKyzjkE5f1_7f7pFpawNMwfFDu6d5FWcpYy1m4Izo,67
44
+ codeui/server/server.py,sha256=gy45SsizqzLPqVUxLO76VIW6zRBOi2Pa0VVXT03nFwo,33653
45
+ codeui/tracer/__init__.py,sha256=3adNXTX-dCUEA_0BPoF2dlwzhbzcHeIBHWhHR6EyQt0,55
46
+ codeui/tracer/tracer.py,sha256=2sQEUyszMk1tKBBsMfqpL-k1EkmrN4P-9AbWVJjyQAY,6733
47
+ codeui_python-0.1.0.dist-info/licenses/LICENSE,sha256=BGKtZolnVKzRs03b5DmUycVMnwmxB0DaTcQM4yxTSH0,1075
48
+ codeui_python-0.1.0.dist-info/METADATA,sha256=TGD29dHpTECvSvYGfvZbR5xPcCZT9VIwf2S1DSyynK0,7567
49
+ codeui_python-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
50
+ codeui_python-0.1.0.dist-info/entry_points.txt,sha256=Hbzhq_KxDKeDM4axxCo5_J3IjD916Dcv46O5OrAoXtk,48
51
+ codeui_python-0.1.0.dist-info/top_level.txt,sha256=fu8I8ZJUDYg0A7SXYdG4cNjxYXV19i9CjYntx1GEx7I,7
52
+ codeui_python-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ codeui = codeui.cli.main:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 codeui maintainers
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 @@
1
+ codeui