codelith 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 (129) hide show
  1. backend/__init__.py +1 -0
  2. backend/agents/__init__.py +6 -0
  3. backend/agents/assessment_agent.py +273 -0
  4. backend/agents/coding_agent.py +779 -0
  5. backend/agents/concept_categories.py +131 -0
  6. backend/agents/concept_detector.py +1217 -0
  7. backend/agents/debug_agent.py +166 -0
  8. backend/agents/teacher_agent.py +179 -0
  9. backend/cli/__init__.py +1 -0
  10. backend/cli/config_cmd.py +135 -0
  11. backend/cli/main.py +606 -0
  12. backend/daemon/__init__.py +1 -0
  13. backend/daemon/launcher.py +243 -0
  14. backend/daemon/server.py +453 -0
  15. backend/daemon/state.py +110 -0
  16. backend/daemon/static/assets/Gambarino-Regular-BjbcsURA.otf +0 -0
  17. backend/daemon/static/assets/abnfDiagram-VCTEODGH-CCJBE2aE.js +1 -0
  18. backend/daemon/static/assets/arc-BEvzHx4o.js +1 -0
  19. backend/daemon/static/assets/architecture-7GRP2DOG-DaWrPggL.js +1 -0
  20. backend/daemon/static/assets/architectureDiagram-5GKGNRK7-pR-klcZv.js +36 -0
  21. backend/daemon/static/assets/array-BifhSqXX.js +1 -0
  22. backend/daemon/static/assets/blockDiagram-I7D4REHJ-C504Gj6_.js +129 -0
  23. backend/daemon/static/assets/c4Diagram-7LVT6UL2-BjM04Mni.js +38 -0
  24. backend/daemon/static/assets/channel-DzSauwD3.js +1 -0
  25. backend/daemon/static/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  26. backend/daemon/static/assets/chunk-4HAMMTFA-EgoP78tp.js +62 -0
  27. backend/daemon/static/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  28. backend/daemon/static/assets/chunk-75Z2AOVW-EXNbuzun.js +2 -0
  29. backend/daemon/static/assets/chunk-DU6HZSFF-CF3OK3MZ.js +127 -0
  30. backend/daemon/static/assets/chunk-F27PBJKO-G71ylWJa.js +1 -0
  31. backend/daemon/static/assets/chunk-FOHPRMQF-DHwB1DNv.js +161 -0
  32. backend/daemon/static/assets/chunk-GMAD6QVW-2yfGg28o.js +72 -0
  33. backend/daemon/static/assets/chunk-GVQU2GXP-C_VeaX4U.js +1 -0
  34. backend/daemon/static/assets/chunk-IMKFNOWR-CNexRjjn.js +231 -0
  35. backend/daemon/static/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  36. backend/daemon/static/assets/chunk-P2QGCYS3-E4AByfsD.js +1 -0
  37. backend/daemon/static/assets/chunk-POPQ4Y6H-Bisbc2-3.js +1 -0
  38. backend/daemon/static/assets/chunk-PWAF6VOD-DaoPxZAa.js +1 -0
  39. backend/daemon/static/assets/chunk-SHT3W25Y-DarPToto.js +168 -0
  40. backend/daemon/static/assets/chunk-SVP7TREG-DvMOAiwI.js +88 -0
  41. backend/daemon/static/assets/chunk-TICWLB2K-DheuvyGM.js +206 -0
  42. backend/daemon/static/assets/chunk-XXDRQBXY-DFBUG-OT.js +1 -0
  43. backend/daemon/static/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  44. backend/daemon/static/assets/classDiagram-ZZMXUADV-Ys5zkCXW.js +1 -0
  45. backend/daemon/static/assets/classDiagram-v2-VYDZK3BY-Ys5zkCXW.js +1 -0
  46. backend/daemon/static/assets/cose-bilkent-JH36ORCC-DLPLnxrP.js +1 -0
  47. backend/daemon/static/assets/cynefin-OW5HDTMX-Dv1OY_0y.js +1 -0
  48. backend/daemon/static/assets/cynefinDiagram-5FMLGOSQ-Ur7MTCmF.js +62 -0
  49. backend/daemon/static/assets/cytoscape.esm-CECbKnxF.js +321 -0
  50. backend/daemon/static/assets/dagre-CJLTJMFW.js +1 -0
  51. backend/daemon/static/assets/dagre-GXQ25YYZ-R3BwTvng.js +4 -0
  52. backend/daemon/static/assets/defaultLocale-BFoDCU3G.js +1 -0
  53. backend/daemon/static/assets/diagram-S7CK7UJ4-BxIoEKb4.js +30 -0
  54. backend/daemon/static/assets/diagram-UQ7AKVKN-DO4cuWN-.js +41 -0
  55. backend/daemon/static/assets/diagram-VSXAHHWV-DW5imp5t.js +3 -0
  56. backend/daemon/static/assets/diagram-VX7I27RA-CdZ3k7wQ.js +24 -0
  57. backend/daemon/static/assets/diagram-Z3DM3KII-DPyjbneL.js +24 -0
  58. backend/daemon/static/assets/dist-DTg6UBE_.js +1 -0
  59. backend/daemon/static/assets/ebnfDiagram-PWID7BFC-BO7VQsye.js +1 -0
  60. backend/daemon/static/assets/erDiagram-RLTQ6QDP-CevvjECq.js +99 -0
  61. backend/daemon/static/assets/eventmodeling-NTZA5JFV-yNfKR6-v.js +1 -0
  62. backend/daemon/static/assets/flowDiagram-HODETNUW-B4GT41mU.js +1 -0
  63. backend/daemon/static/assets/ganttDiagram-EL5Y4UJY-DNW5fWw1.js +292 -0
  64. backend/daemon/static/assets/gitGraph-4MIJSDKK-DKgVkWaZ.js +1 -0
  65. backend/daemon/static/assets/gitGraphDiagram-WWUBYQGX-0S7OF9Aj.js +106 -0
  66. backend/daemon/static/assets/index-D3vj8REa.js +63 -0
  67. backend/daemon/static/assets/index-D4lMFaiv.css +1 -0
  68. backend/daemon/static/assets/info-A6RAGUB7-Bxy-SzRN.js +1 -0
  69. backend/daemon/static/assets/infoDiagram-27XIBGKW-ClzQji6X.js +2 -0
  70. backend/daemon/static/assets/init-C-OQMol4.js +1 -0
  71. backend/daemon/static/assets/ishikawaDiagram-5VMMS53U-B3Lo-sS3.js +70 -0
  72. backend/daemon/static/assets/journeyDiagram-3NMN7TZE-0KL6R2Rz.js +139 -0
  73. backend/daemon/static/assets/kanban-definition-UXKFOSKX-zt5NbEep.js +89 -0
  74. backend/daemon/static/assets/katex-CXMH3UgJ.js +257 -0
  75. backend/daemon/static/assets/line-CiAFRJVJ.js +1 -0
  76. backend/daemon/static/assets/linear-BI6yqEPV.js +1 -0
  77. backend/daemon/static/assets/logo_darkmode-BPDdj6GZ.png +0 -0
  78. backend/daemon/static/assets/logo_lightmode-C3ZWMgAH.png +0 -0
  79. backend/daemon/static/assets/mermaid-parser.core-DEadI1Ja.js +7 -0
  80. backend/daemon/static/assets/mindmap-definition-YA3MSWOX-TGKGYg5n.js +96 -0
  81. backend/daemon/static/assets/ordinal-BDEzSJ7C.js +1 -0
  82. backend/daemon/static/assets/packet-AYTQ26CC-CZTSuh5x.js +1 -0
  83. backend/daemon/static/assets/path-fybaL0A-.js +1 -0
  84. backend/daemon/static/assets/pegDiagram-XKGWAZYB-DGd8LACA.js +1 -0
  85. backend/daemon/static/assets/pie-WAS4IAKB-B59sPr3Z.js +1 -0
  86. backend/daemon/static/assets/pieDiagram-E7YTZNPT-CpwxCR3L.js +39 -0
  87. backend/daemon/static/assets/quadrantDiagram-AXDQQJYC-BwSeF_E_.js +7 -0
  88. backend/daemon/static/assets/radar-RG4KPBEZ-DAa4JvTb.js +1 -0
  89. backend/daemon/static/assets/railroad-74A4TZTK-BitdNgDt.js +1 -0
  90. backend/daemon/static/assets/railroad-abnf-HS5TGJTU-DCrNKqAH.js +1 -0
  91. backend/daemon/static/assets/railroad-ebnf-LZEXJU2U-DmEwx8OK.js +1 -0
  92. backend/daemon/static/assets/railroad-peg-WCYAUIDC-CPc8dTCP.js +1 -0
  93. backend/daemon/static/assets/railroadDiagram-O6MQD6OU-DuizuzwD.js +1 -0
  94. backend/daemon/static/assets/requirementDiagram-BXWQKSXE-BjMk0yS8.js +84 -0
  95. backend/daemon/static/assets/rough.esm-Dy-Kn_BL.js +1 -0
  96. backend/daemon/static/assets/sankeyDiagram-P5KCCOFB-0T_bhkmz.js +40 -0
  97. backend/daemon/static/assets/sequenceDiagram-WJ2MYXX4-Cwa-1Stp.js +162 -0
  98. backend/daemon/static/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  99. backend/daemon/static/assets/src-BH-TyZbA.js +1 -0
  100. backend/daemon/static/assets/stateDiagram-D77RDMKH-BpQSg_QL.js +1 -0
  101. backend/daemon/static/assets/stateDiagram-v2-MP3YSRHH-BItVXKof.js +1 -0
  102. backend/daemon/static/assets/swimlanes-42K2YHIH-h_ED18Vy.js +1 -0
  103. backend/daemon/static/assets/swimlanesDiagram-VR7AAH4N-D0fo0LN-.js +8 -0
  104. backend/daemon/static/assets/timeline-definition-24CTP7MA-DKfSO33a.js +120 -0
  105. backend/daemon/static/assets/treeView-Q6P3EWNA-DAj9fxfC.js +1 -0
  106. backend/daemon/static/assets/treemap-WGGIJYW6-5IIXD9Zu.js +1 -0
  107. backend/daemon/static/assets/vennDiagram-4TSXK5OY-BoBvVEci.js +34 -0
  108. backend/daemon/static/assets/wardley-WFR3VGLG-CGsd7s_-.js +1 -0
  109. backend/daemon/static/assets/wardleyDiagram-VM6X3IG4-QHdK5NsY.js +78 -0
  110. backend/daemon/static/assets/xychartDiagram-S5SC5T6Z-MN_fdKCJ.js +7 -0
  111. backend/daemon/static/index.html +49 -0
  112. backend/database/__init__.py +1 -0
  113. backend/database/concept_slug.py +39 -0
  114. backend/database/concepts.py +804 -0
  115. backend/llm/__init__.py +5 -0
  116. backend/llm/client.py +333 -0
  117. backend/llm/config.py +254 -0
  118. backend/llm/key_setup.py +237 -0
  119. backend/main.py +13 -0
  120. backend/orchestrator/__init__.py +1 -0
  121. backend/orchestrator/events.py +52 -0
  122. backend/orchestrator/graph.py +316 -0
  123. backend/orchestrator/modes.py +125 -0
  124. codelith-0.1.0.dist-info/METADATA +301 -0
  125. codelith-0.1.0.dist-info/RECORD +129 -0
  126. codelith-0.1.0.dist-info/WHEEL +5 -0
  127. codelith-0.1.0.dist-info/entry_points.txt +2 -0
  128. codelith-0.1.0.dist-info/licenses/LICENSE +21 -0
  129. codelith-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,125 @@
1
+ """Session modes — Learn, Pair Programming, and Autonomous.
2
+
3
+ Each mode changes how the orchestrator routes work through the agent graph:
4
+
5
+ - **Learn**: Teacher-led. The teacher agent explains concepts as code is
6
+ written. The coding agent writes code but always includes explanations.
7
+ The user is in teaching mode — concepts are surfaced prominently.
8
+
9
+ - **Pair Programming**: Collaborative. The coding agent writes code and
10
+ the teacher agent identifies concepts in the background. The user
11
+ drives decisions but the AI assists with implementation.
12
+
13
+ - **Autonomous**: Full automation. The coding agent runs with minimal
14
+ explanation. The teacher agent only surfaces critical concepts.
15
+ Focus is on getting things done.
16
+ """
17
+
18
+ from __future__ import annotations
19
+
20
+ from dataclasses import dataclass, field
21
+
22
+
23
+ @dataclass(frozen=True)
24
+ class ModeConfig:
25
+ """Configuration for a session mode."""
26
+
27
+ name: str
28
+ description: str
29
+ # Whether the teacher agent runs after every coding agent turn
30
+ teacher_always_runs: bool
31
+ # Whether the coding agent should explain its code
32
+ agent_explains: bool
33
+ # Whether to use LLM-based concept detection (slower but more thorough)
34
+ llm_detection: bool
35
+ # Whether to surface concepts in real-time to the user
36
+ surface_concepts: bool
37
+ # Max tool rounds for the coding agent (higher = more autonomous)
38
+ max_tool_rounds: int
39
+ # System prompt suffix to append to the coding agent's prompt
40
+ prompt_suffix: str
41
+ # Assessment frequency: "high" = question for every new concept,
42
+ # "low" = question for ~1 in 3 new concepts, "none" = no questions
43
+ assessment_frequency: str = "high"
44
+
45
+
46
+ LEARN_MODE = ModeConfig(
47
+ name="learn",
48
+ description=(
49
+ "Teacher-led mode. Concepts are explained as code is written. "
50
+ "Great for learning new languages or frameworks."
51
+ ),
52
+ teacher_always_runs=True,
53
+ agent_explains=True,
54
+ llm_detection=True,
55
+ surface_concepts=True,
56
+ max_tool_rounds=8,
57
+ assessment_frequency="high",
58
+ prompt_suffix=(
59
+ "\n\n## LEARN MODE\n"
60
+ "You are in Learn Mode. After writing or editing code, briefly "
61
+ "explain what you did and why. Highlight the key concepts used. "
62
+ "Keep explanations clear and educational — the user is learning."
63
+ ),
64
+ )
65
+
66
+ PAIR_PROGRAMMING_MODE = ModeConfig(
67
+ name="pair-programming",
68
+ description=(
69
+ "Collaborative mode. You code together with the user. "
70
+ "The AI assists with implementation while the user drives."
71
+ ),
72
+ teacher_always_runs=True,
73
+ agent_explains=False,
74
+ llm_detection=True,
75
+ surface_concepts=True,
76
+ max_tool_rounds=12,
77
+ assessment_frequency="low",
78
+ prompt_suffix=(
79
+ "\n\n## PAIR PROGRAMMING MODE\n"
80
+ "You are in Pair Programming Mode. Work collaboratively with "
81
+ "the user. Implement what they ask for efficiently. If a "
82
+ "concept is unusual or noteworthy, mention it briefly."
83
+ ),
84
+ )
85
+
86
+ AUTONOMOUS_MODE = ModeConfig(
87
+ name="autonomous",
88
+ description=(
89
+ "Full automation. The AI handles everything with minimal "
90
+ "explanation. Fastest mode for experienced users."
91
+ ),
92
+ teacher_always_runs=False,
93
+ agent_explains=False,
94
+ llm_detection=False,
95
+ surface_concepts=True,
96
+ max_tool_rounds=15,
97
+ assessment_frequency="none",
98
+ prompt_suffix=(
99
+ "\n\n## AUTONOMOUS MODE\n"
100
+ "You are in Autonomous Mode. Work efficiently and minimize "
101
+ "explanation. Focus on producing correct, working code. "
102
+ "Only mention a concept if it's critical to understanding."
103
+ ),
104
+ )
105
+
106
+ MODES: dict[str, ModeConfig] = {
107
+ "learn": LEARN_MODE,
108
+ "pair-programming": PAIR_PROGRAMMING_MODE,
109
+ "autonomous": AUTONOMOUS_MODE,
110
+ }
111
+
112
+ DEFAULT_MODE = "learn"
113
+
114
+
115
+ def get_mode(name: str) -> ModeConfig:
116
+ """Return the ModeConfig for *name*, or the default mode."""
117
+ return MODES.get(name, MODES[DEFAULT_MODE])
118
+
119
+
120
+ def list_modes() -> list[dict[str, str]]:
121
+ """Return a summary of all available modes."""
122
+ return [
123
+ {"name": m.name, "description": m.description}
124
+ for m in MODES.values()
125
+ ]
@@ -0,0 +1,301 @@
1
+ Metadata-Version: 2.4
2
+ Name: codelith
3
+ Version: 0.1.0
4
+ Summary: A multi-agent AI mentor that blends coding assistance with adaptive teaching.
5
+ Author-email: Himani Bagale <himanibagale@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/MakersNeedMore-MnM/Round2-himanibagale
8
+ Project-URL: Repository, https://github.com/MakersNeedMore-MnM/Round2-himanibagale
9
+ Keywords: ai,tutor,mentor,coding-assistant,langgraph,education
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: Education
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Education
20
+ Classifier: Topic :: Software Development
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: fastapi
25
+ Requires-Dist: uvicorn[standard]
26
+ Requires-Dist: openai
27
+ Requires-Dist: langgraph
28
+ Requires-Dist: langchain-core
29
+ Requires-Dist: keyring
30
+ Dynamic: license-file
31
+
32
+ # CodeLith
33
+ <p><strong>Build with AI. Understand what you build.</strong></p>
34
+
35
+ AI has made software development faster than ever, but it has also made it easier to build without understanding. For students and new developers especially, AI-generated code can become a black box rather than an opportunity to learn.
36
+
37
+ CodeLith bridges this gap by combining AI-powered coding with contextual learning—as the agent builds, it identifies the concepts introduced in the code, explains them visually, assesses the user's understanding, and tracks their progress. It transforms AI-assisted coding from simply getting code to actually understanding how it works.
38
+
39
+ ## Prototype
40
+
41
+ <table>
42
+ <tr>
43
+ <th>CodeLith Terminal Agent</th>
44
+ <th>Real-time code explanations - Dark Mode</th>
45
+ </tr>
46
+ <tr>
47
+ <td><img src="https://github.com/user-attachments/assets/f275269f-51ec-4bc7-90bc-ca57c0b72534" alt="CodeLith Dashboard" width="500"/></td>
48
+ <td><img src="https://github.com/user-attachments/assets/7cd62bf1-7920-444d-aba9-578eefea2d33" alt="CodeLith Dashboard - Learning Progress" width="500"></td>
49
+ </tr>
50
+ </table>
51
+
52
+ <table>
53
+ <tr>
54
+ <th>Track Your Learning Progress - Dark Mode</th>
55
+ <th>Choose Your Coding Mode - Dark Mode</th>
56
+ </tr>
57
+ <tr>
58
+ <td><img src="https://github.com/user-attachments/assets/a872b360-429b-4df4-85c8-54d1bb1711b3" alt="CodeLith Dashboard" width="500"/></td>
59
+ <td><img src="https://github.com/user-attachments/assets/0b5088f2-2c33-48ab-91e4-c423d01575d7" alt="CodeLith Dashboard - Learning Progress" width="500"></td>
60
+ </tr>
61
+ </table>
62
+
63
+ <table>
64
+ <tr>
65
+ <th>Check Your Understanding - Light Mode</th>
66
+ <th>Ask CodeLith AI - Dark Mode</th>
67
+ </tr>
68
+ <tr>
69
+ <td><img src="https://github.com/user-attachments/assets/20ac5c89-6169-4698-9f64-713dc2dfbefd" alt="CodeLith Dashboard" width="500"/></td>
70
+ <td><img src="https://github.com/user-attachments/assets/363b3485-5cff-4b93-8dcc-82f1e45fec9e" alt="CodeLith Dashboard - Learning Progress" width="500"></td>
71
+ </tr>
72
+ </table>
73
+
74
+ ## How it works
75
+
76
+ CodeLith does not attach a generic lesson to a coding session. It follows the
77
+ actual work the coding agent performed, finds the important idea inside the
78
+ result, and turns that idea into a path toward independent understanding.
79
+
80
+ ```mermaid
81
+ flowchart LR
82
+ R[User request<br/>Build a notification service] --> A[AI coding agent]
83
+ A --> T[Tool activity<br/>Read, edit, run tests]
84
+ T --> C[Generated code<br/>Provider-backed service]
85
+ C --> D{Meaningful concept<br/>in the changed code?}
86
+ D -->|Evidence found| K[Dependency Injection]
87
+ K --> V[Visual explanation<br/>Receives dependency<br/>instead of creating it]
88
+ V --> Q[Assessment<br/>Why is testing easier?]
89
+ Q --> M[Mastery<br/>Explain and reuse it]
90
+ D -->|No| N[Keep workflow quiet]
91
+
92
+ classDef action fill:#16324f,stroke:#4ba3c7,color:#ffffff
93
+ classDef insight fill:#f3b562,stroke:#c47f24,color:#171717
94
+ classDef outcome fill:#2f6f5e,stroke:#8ed1b2,color:#ffffff
95
+ class A,T,C action
96
+ class K,V,Q insight
97
+ class M outcome
98
+ ```
99
+ The learning is grounded in evidence, not in a static tutorial library:
100
+
101
+ - The **request** provides the goal.
102
+ - The **coding agent's tool activity** shows what it actually changed and ran.
103
+ - The **concept detector** identifies a meaningful technique from that change.
104
+ - The **visual explanation** makes the technique concrete in the context of
105
+ the new code.
106
+ - The **assessment** checks whether the user can reason about the choice,
107
+ rather than merely recognize its name.
108
+ - **Mastery** means the user can explain and reuse the idea independently.
109
+
110
+ ## Architecture
111
+
112
+ CodeLith is a local three-process system: a CLI, a browser dashboard, and a
113
+ background daemon that hosts the API and the agent graph. Both frontends talk
114
+ to the same daemon, which is the single source of truth for session state
115
+ (conversation history, mode, concepts, assessments, teachings).
116
+
117
+
118
+ ```mermaid
119
+ flowchart TB
120
+ subgraph Local[User machine]
121
+ CLI[codelith CLI<br/>interactive terminal]
122
+ UI[React dashboard<br/>concepts, activity, progress]
123
+ D[Local daemon<br/>FastAPI + uvicorn<br/>localhost]
124
+ G[Agent graph<br/>LangGraph orchestration]
125
+ DB[(SQLite<br/>local session state)]
126
+ K[(OS keyring<br/>Groq + OpenRouter keys)]
127
+ CLI <-->|HTTP| D
128
+ UI <-->|HTTP + SSE| D
129
+ D --> G
130
+ D <--> DB
131
+ CLI --> K
132
+ end
133
+
134
+ subgraph Agents[Specialized agents]
135
+ C[Coding]
136
+ X[Concept detection]
137
+ R[Debugging]
138
+ A[Assessment]
139
+ T[Teaching]
140
+ end
141
+
142
+ G --> C
143
+ C -->|failed command| R
144
+ C -->|successful turn| X
145
+ X --> A
146
+ X --> T
147
+ A --> DB
148
+ T --> DB
149
+ C -->|model request| LLM[LLM providers<br/>Groq + OpenRouter<br/>HTTPS]
150
+ R -->|model request| LLM
151
+ X -->|model request when needed| LLM
152
+ A -->|model request| LLM
153
+ T -->|model request| LLM
154
+ ```
155
+
156
+ ## Repository layout
157
+
158
+ ```text
159
+ CodeLith/
160
+ ├── backend/
161
+ │ ├── agents/ # coding, debug, assessment, teacher agents + concept detector
162
+ │ ├── cli/ # the `codelith` command-line interface
163
+ │ ├── daemon/ # FastAPI server, detached-process launcher, state files
164
+ │ ├── database/ # SQLite persistence: concepts, teachings, assessments
165
+ │ ├── llm/ # Groq + OpenRouter clients, key and model resolution
166
+ │ ├── orchestrator/ # LangGraph agent graph, session modes, event stream
167
+ │ └── main.py # backend entrypoint
168
+ ├── frontend/ # React dashboard (Vite + TypeScript + Mermaid)
169
+ ├── tests/ # pytest suite
170
+ ├── pyproject.toml # packaging config + `codelith` entry point
171
+ └── README.md
172
+ ```
173
+
174
+ ## Future Enhancements
175
+
176
+ - Add session export/import so users can save conversations, concepts, assessments, and progress.
177
+ - Add project/workspace awareness so CodeLith can remember the repository being studied and maintain project-specific learning context.
178
+ - Add user progress analytics: mastered concepts, recurring mistakes, learning streaks, and recommended next topics.
179
+ - Build a plugin system for custom agents, tools, concept detectors, and teaching strategies.
180
+
181
+ # First-time CodeLith setup
182
+
183
+ These steps are for users who installed CodeLith from PyPI for the first time.
184
+
185
+ ## 1. Install CodeLith
186
+
187
+ Use Python 3.10 or newer:
188
+
189
+ ```powershell
190
+ py -m pip install codelith
191
+ ```
192
+
193
+ ## 2. Start CodeLith
194
+
195
+ ```powershell
196
+ codelith
197
+ ```
198
+
199
+ On the first run, CodeLith asks for two API keys. Create them from the official provider pages:
200
+
201
+ - Groq: <https://console.groq.com/keys>
202
+ - OpenRouter: <https://openrouter.ai/keys>
203
+
204
+ Paste each key when prompted. CodeLith validates the key before saving it to the Windows credential store. The keys are not written to the project or printed in the terminal.
205
+
206
+ Groq powers teaching, explanations, assessment, and concept detection. OpenRouter powers the coding and debugging agents. Both keys are required for the complete experience.
207
+
208
+ After setup, CodeLith starts its local daemon and opens the dashboard in your browser. The dashboard is normally available at <http://localhost:8765/>.
209
+
210
+ Once installed, CodeLith can be launched anytime with a single command:
211
+
212
+ ```bash
213
+ codelith
214
+ ```
215
+
216
+ ## Commands
217
+
218
+ ### In the terminal session
219
+
220
+ Typed at the `>` prompt, after the banner:
221
+
222
+ | Command | Effect |
223
+ | --- | --- |
224
+ | `exit`, `quit`, `q` | Leave the session — the daemon keeps running in the background |
225
+ | `reset`, `clear`, `/reset` | Start a fresh conversation |
226
+ | `mode` | Show the current mode and the available modes |
227
+ | `mode <name>` | Switch mode — one of `learn`, `pair-programming`, `autonomous` |
228
+
229
+ Anything else is sent to the agent. Mode changes made on the dashboard are
230
+ picked up by the terminal automatically, and vice versa.
231
+
232
+ ### CLI subcommands
233
+
234
+ | Command | Effect |
235
+ | --- | --- |
236
+ | `codelith` | Chat session: first-run key setup, daemon autostart, dashboard link — opens in the browser after a short pause |
237
+ | `codelith setup [groq\|openrouter]` | Enter or re-enter an API key (validated first, saved to the OS credential store) |
238
+ | `codelith config show` | Show every model role and its resolved model |
239
+ | `codelith config set <role> <model>` | Override one role's model (Available agent roles are `coding`, `debugging`, `teaching`, `assessment`,`grading`, and `detection`.) |
240
+ | `codelith config unset <role>` | Remove a role's override — back to the built-in default |
241
+
242
+ ### Daemon control
243
+
244
+ | Command | Effect |
245
+ | --- | --- |
246
+ | `python -m backend.daemon.launcher start` | Start the daemon detached, if not already running |
247
+ | `python -m backend.daemon.launcher status` | Show whether it runs, and on which port |
248
+ | `python -m backend.daemon.launcher open` | Start it if needed, then open the dashboard in the browser |
249
+ | `python -m backend.daemon.launcher stop` | Stop the daemon |
250
+
251
+
252
+ ### Three ways to work
253
+
254
+ | Mode | Best for | Behavior |
255
+ | --- | --- | --- |
256
+ | `learn` | Building understanding | Detects concepts, explains the work, and asks questions about each new concept. |
257
+ | `pair-programming` | Staying in the flow | Focuses on building while detecting concepts and asking occasional questions. |
258
+ | `autonomous` | Finishing a well-defined task | Prioritizes implementation and debugging with minimal learning interruptions. |
259
+
260
+ Switch modes from either interface.
261
+
262
+ ## Development setup
263
+
264
+ ### Backend
265
+
266
+ ```bash
267
+ git clone https://github.com/MakersNeedMore-MnM/Round2-himanibagale
268
+ cd Round2-himanibagale
269
+ python -m venv .venv
270
+ .venv\Scripts\activate # Windows (bash: source .venv/Scripts/activate)
271
+ pip install -e .
272
+
273
+ ```
274
+
275
+ Run from source without installing the package:
276
+
277
+ ```bash
278
+ python -m backend.cli.main
279
+ ```
280
+
281
+ ### Frontend (dashboard)
282
+
283
+ ```bash
284
+ cd frontend
285
+ npm install
286
+ npm run dev # dev server with HMR on :5173, calls the daemon on :8765
287
+ npm run build # writes backend/daemon/static/ inside the Python package
288
+ ```
289
+ ### Tests
290
+
291
+ ```bash
292
+ python -m pytest tests/ -v
293
+ ```
294
+ ## Contributing
295
+
296
+ Want to contribute? Check out our [Contributing Guide](https://github.com/MakersNeedMore-MnM/Round2-himanibagale/blob/main/CONTRIBUTING.md).
297
+
298
+ ## License
299
+
300
+ MIT — see [LICENSE](https://github.com/MakersNeedMore-MnM/Round2-himanibagale/blob/main/LICENSE).
301
+
@@ -0,0 +1,129 @@
1
+ backend/__init__.py,sha256=KzleXgQMPAqzF1Zirf5wGlo-I33fHESFtCDyR7qPyUE,32
2
+ backend/main.py,sha256=kim3lY9IloGtlXGvK0IXx8zOdBXk7HsjJtHsoe_iaHo,279
3
+ backend/agents/__init__.py,sha256=PfhQ0Pz0CoIGIqyWJmywAIHcTJEFQwr_5lnrND3Amsw,268
4
+ backend/agents/assessment_agent.py,sha256=VT8WVPaX0nVObUtW9PA7yO5y2DS8mUa3g4pLPk6mWv4,11197
5
+ backend/agents/coding_agent.py,sha256=U1rq9vYE_7Q_9zIEYY4czcrwOPok2m4ff-44wvPeRn4,29778
6
+ backend/agents/concept_categories.py,sha256=SnFfAQxjAUCWociW1eNBnc-15Z8NmSbcuPjssbi9p6E,4454
7
+ backend/agents/concept_detector.py,sha256=FmA26SmEMayFnQRtwlGMmBT3jxAh2hY_DK-ZtqihVEg,46208
8
+ backend/agents/debug_agent.py,sha256=kp2mkNVy0rkT_YTzB0t_JCvWglHMF-DYSBIbc2XSW9A,6119
9
+ backend/agents/teacher_agent.py,sha256=SriYULkWe-2d9QEiVnT936mrM9zyJE8X6QMgboBQj3Y,6954
10
+ backend/cli/__init__.py,sha256=zxIMr0Xdz-zi0eI1MAgdCqb8lJ8HSAxfpqeI1BQ_IMw,87
11
+ backend/cli/config_cmd.py,sha256=O_GHitkrT0nQa0GNKmL-yL5nqihNjuCc5lsQdTvueIk,4861
12
+ backend/cli/main.py,sha256=dSVYcpudCOkHNoKzw_EqdKE4_5QfzXqAwXyxLS8TNvA,21588
13
+ backend/daemon/__init__.py,sha256=DPRPTu976I_-vRASszQQ2g1o2cWo3OemOp5gi59ywG8,77
14
+ backend/daemon/launcher.py,sha256=tmA682nXblhUDXdbKUFKXkJoLbGqxH9kRXgFQLEw260,8176
15
+ backend/daemon/server.py,sha256=z00QvvL7Ch58XhVaR0JhMwiVB79fAXt1-wP92pPicu0,15206
16
+ backend/daemon/state.py,sha256=pN6SUvtgixFGpMeBRGl5KWZoaTqn6_w1H-nA3oTaH84,3261
17
+ backend/daemon/static/index.html,sha256=xpL4s_kRiZ1hrSUyk9_fcwJ8Jwx9_XU_T8CQJjFPezA,2446
18
+ backend/daemon/static/assets/Gambarino-Regular-BjbcsURA.otf,sha256=PPyBQ7gg1OnllwdIz2GJ0GJK6x-MWgE4wsgru5tQ798,25760
19
+ backend/daemon/static/assets/abnfDiagram-VCTEODGH-CCJBE2aE.js,sha256=pEK0Ak4RqXyFO8wjN4v5VgMDPwGCj4F7SRY4egATOlM,1849
20
+ backend/daemon/static/assets/arc-BEvzHx4o.js,sha256=4b50Jse1rZXJ3leO5noQmwi2_NcLjLK2gsFEKq50_zY,3474
21
+ backend/daemon/static/assets/architecture-7GRP2DOG-DaWrPggL.js,sha256=XB1fhEqRB8pfl81sy6mlviZAWBFN3cCI85Q0gEAS15g,131
22
+ backend/daemon/static/assets/architectureDiagram-5GKGNRK7-pR-klcZv.js,sha256=UUOimpNGuoKsx08axWVfyjgWSEi9GBxJfHnteyoWsns,148883
23
+ backend/daemon/static/assets/array-BifhSqXX.js,sha256=YxJmRtv2EaDPniKTqfY2rDyTyBWo99HpfXgxUauFKbk,107
24
+ backend/daemon/static/assets/blockDiagram-I7D4REHJ-C504Gj6_.js,sha256=VEa5hMFpAji3arCODHXcW2F0NdmUPDKCPoqR7yd1JIE,41410
25
+ backend/daemon/static/assets/c4Diagram-7LVT6UL2-BjM04Mni.js,sha256=v6GPXvu7NAtnYsMF9cxbH9I5_2iR7CSWwkDWBxGjAwQ,64745
26
+ backend/daemon/static/assets/channel-DzSauwD3.js,sha256=OGG53uIQ-ukBfabkZbN4OTXYrN4fnNC6Ll2ivWv-Eyg,114
27
+ backend/daemon/static/assets/chunk-2Q5K7J3B-C1jixKkw.js,sha256=Z13Wy67qO_CRumr7OXz0w96_a2bMe-5tEV2H-oMeBfw,191
28
+ backend/daemon/static/assets/chunk-4HAMMTFA-EgoP78tp.js,sha256=J2x6-pTsOcfToJHoElF62jatEasAKIBu7kJ3Z4gtHxE,104855
29
+ backend/daemon/static/assets/chunk-5VM5RSS4-ZNzvKenW.js,sha256=zufJj5hECx-_BUi3VtQhCXZCx4RUe4NVFfESS5zdQ1E,362
30
+ backend/daemon/static/assets/chunk-75Z2AOVW-EXNbuzun.js,sha256=PZtEvokPeevRYTAQMnp-ImV8Y-99Peog8uM2O7_3wfA,30764
31
+ backend/daemon/static/assets/chunk-DU6HZSFF-CF3OK3MZ.js,sha256=N6-MtVbNc6u1Afpi7JYJBf86WW8HGSXBcMOpUrb-Q4Q,236778
32
+ backend/daemon/static/assets/chunk-F27PBJKO-G71ylWJa.js,sha256=XJw8yHqyAy5Wk_JoMtM_MnIhiwYQIeli2NfsbgXw6ZE,1967
33
+ backend/daemon/static/assets/chunk-FOHPRMQF-DHwB1DNv.js,sha256=Lv2cDTNjznzhhik_BWDj-AFx4mfIje27FqT5ccSJstk,662120
34
+ backend/daemon/static/assets/chunk-GMAD6QVW-2yfGg28o.js,sha256=RphVRYPgQhyxQ42Q8FW2Z4irQrDWDefqqdNMwJHO-Q0,51805
35
+ backend/daemon/static/assets/chunk-GVQU2GXP-C_VeaX4U.js,sha256=vG73nl7hOtSwDg7KtTusMkOyu-8ntnhc5J7P2aEPMuY,1416
36
+ backend/daemon/static/assets/chunk-IMKFNOWR-CNexRjjn.js,sha256=2R-tGz3L8L82yEzuKFq7UtDTWSlhSuTJltdNRUIJkV0,37628
37
+ backend/daemon/static/assets/chunk-JWPE2WC7-DVXcaiue.js,sha256=EeVr6vJSbnMEA20ntOCD7WjO1gBm-t7Q5oMRXaPfoJk,223
38
+ backend/daemon/static/assets/chunk-P2QGCYS3-E4AByfsD.js,sha256=ivZMkH8nSkIjbQCzVKAjLUif2sbZ4HsV6Nlt3JOUn0M,1947
39
+ backend/daemon/static/assets/chunk-POPQ4Y6H-Bisbc2-3.js,sha256=eQXibhPS2QGW6jPbgL7v1JnSIP1vSSy7MCc8TGYcAU0,569
40
+ backend/daemon/static/assets/chunk-PWAF6VOD-DaoPxZAa.js,sha256=ScHL8EKnfjwNMTN6bj0G82dvlQeTLl67gUsBI92Oj7g,5833
41
+ backend/daemon/static/assets/chunk-SHT3W25Y-DarPToto.js,sha256=mnppw1xY0C1gKs83n119oVP5JBvRjVCoLn5zCfw0a6g,61195
42
+ backend/daemon/static/assets/chunk-SVP7TREG-DvMOAiwI.js,sha256=y71WP8dTyBOp3-vD4RqUIBBmAb5nu15SAZtTPPp9Jgo,15638
43
+ backend/daemon/static/assets/chunk-TICWLB2K-DheuvyGM.js,sha256=wIPepChFNOcCEK1lzirw44U-EppbhIzSshX6HPwPq8E,48780
44
+ backend/daemon/static/assets/chunk-XXDRQBXY-DFBUG-OT.js,sha256=rdp1C_C6nhtq61yOUMbsOtJTZBCdK0GztTqAYXUqP_s,262
45
+ backend/daemon/static/assets/chunk-Y2CYZVJY-DsF7k-Jl.js,sha256=p042afNWrQ1nzFIy8eD2L_RUT9uOcFfPmlABoOpvwsw,155
46
+ backend/daemon/static/assets/classDiagram-ZZMXUADV-Ys5zkCXW.js,sha256=5WAakbnSNlVqPVAXW-3LE1uA-K4E6Z90o8JXPWHtDI4,697
47
+ backend/daemon/static/assets/classDiagram-v2-VYDZK3BY-Ys5zkCXW.js,sha256=5WAakbnSNlVqPVAXW-3LE1uA-K4E6Z90o8JXPWHtDI4,697
48
+ backend/daemon/static/assets/cose-bilkent-JH36ORCC-DLPLnxrP.js,sha256=haAlsKru-BT4AaPgXnW0gEDyhgaH8Q-BaF7ixfxIP-I,81229
49
+ backend/daemon/static/assets/cynefin-OW5HDTMX-Dv1OY_0y.js,sha256=iSKeJGArX0_VRw8LKBeBcOXcqpv9gAu4xHfGRsbkfxM,126
50
+ backend/daemon/static/assets/cynefinDiagram-5FMLGOSQ-Ur7MTCmF.js,sha256=umyuK-3x6XhGLegI0VmF7Z3n40BPl0pYBWx2crusiCs,9932
51
+ backend/daemon/static/assets/cytoscape.esm-CECbKnxF.js,sha256=pMhWddBuZhHUuQTq3NgtGUAFzrt764hXOZT5Y23tCxk,434924
52
+ backend/daemon/static/assets/dagre-CJLTJMFW.js,sha256=slny97bOdPuZhkhx0lceezU0B9x-eb4_yOhFLbDUcCY,36863
53
+ backend/daemon/static/assets/dagre-GXQ25YYZ-R3BwTvng.js,sha256=Krw28YKXkEvymBriQJ-AAMDOVt97moKhygWtAdJ70m4,10851
54
+ backend/daemon/static/assets/defaultLocale-BFoDCU3G.js,sha256=CYzEs4D7-lv0Oz3Gr6oTekOw3z8HmEX8CW3KQeOPs0E,4634
55
+ backend/daemon/static/assets/diagram-S7CK7UJ4-BxIoEKb4.js,sha256=FttKrgAjOplIPX-Jv-fNC5TA4zUsBfYVJU57x6D-RpU,8196
56
+ backend/daemon/static/assets/diagram-UQ7AKVKN-DO4cuWN-.js,sha256=VIpiO9vdMSK_cCI5HfP15MPx-a145mXa0Rzc961DMb0,6063
57
+ backend/daemon/static/assets/diagram-VSXAHHWV-DW5imp5t.js,sha256=v2Hb8y8KHn76vC5WO7a5EVqbTO8wIaFxP8KkySpHONs,10666
58
+ backend/daemon/static/assets/diagram-VX7I27RA-CdZ3k7wQ.js,sha256=hs3YPCvxF90faHzqKjJEollQ6_uWmRF-ODqOrVnd1FE,15744
59
+ backend/daemon/static/assets/diagram-Z3DM3KII-DPyjbneL.js,sha256=_fMlVrbq1oABKaydApN7vGwKdfLpoW_1ZTdLkMyR3NI,4279
60
+ backend/daemon/static/assets/dist-DTg6UBE_.js,sha256=hmeQc84vNlJzqFk1hdiGP1J4X8slxe1xItICefhbCLM,2160
61
+ backend/daemon/static/assets/ebnfDiagram-PWID7BFC-BO7VQsye.js,sha256=JtwXgR2B4tePmJkUNrNQbYqmS24IjOJJHumWUCn1rQY,2062
62
+ backend/daemon/static/assets/erDiagram-RLTQ6QDP-CevvjECq.js,sha256=i9DXyiGJhB8_zEIW9LtNIFD0KnAubRV0rb0NhCjyEfA,30604
63
+ backend/daemon/static/assets/eventmodeling-NTZA5JFV-yNfKR6-v.js,sha256=TKsac8pOi86m3FB8ale_TfwVDu5FkpnYDYaFCnLg8jo,132
64
+ backend/daemon/static/assets/flowDiagram-HODETNUW-B4GT41mU.js,sha256=u4q7gTtIdrdkoIMlBsuood1E_zD1itBniJ6eCYSQECI,494
65
+ backend/daemon/static/assets/ganttDiagram-EL5Y4UJY-DNW5fWw1.js,sha256=FuHhP5JufhxxmBSOQIeBvdOW4TkO9q9xEDgmNHqqOlA,69315
66
+ backend/daemon/static/assets/gitGraph-4MIJSDKK-DKgVkWaZ.js,sha256=rj_9j3OPZYWCImxk36MYJtvbjKwISK9RI0H3Yl6igTk,127
67
+ backend/daemon/static/assets/gitGraphDiagram-WWUBYQGX-0S7OF9Aj.js,sha256=OmPum07PqBC7OY-r-WTYpJHgTPmnzEbnckLdA1eUeo0,29013
68
+ backend/daemon/static/assets/index-D3vj8REa.js,sha256=knWVRjiUmhhLYOHE-EXFlsp875K3IMUVfR4-Jxacw6o,419157
69
+ backend/daemon/static/assets/index-D4lMFaiv.css,sha256=Y9ULZaRtbnYEJS7HPiQsLX6q2ZzSvURqjX5NRVTIa7c,26334
70
+ backend/daemon/static/assets/info-A6RAGUB7-Bxy-SzRN.js,sha256=ctjkGPrQ2Of9EtIdaeeGfXheawTXyE9W3GiBCnWXi0Y,123
71
+ backend/daemon/static/assets/infoDiagram-27XIBGKW-ClzQji6X.js,sha256=t0DF6LotLJeKtxwxy6zpHxVafhRaUFbWU0u21rl10CU,645
72
+ backend/daemon/static/assets/init-C-OQMol4.js,sha256=y1yXpDS7XD7rT204ByrX2OSsRU0U4Dmh-26CYsXOgrw,140
73
+ backend/daemon/static/assets/ishikawaDiagram-5VMMS53U-B3Lo-sS3.js,sha256=mARyK-bk_dnaPLKfmYuC1O07Yh9b2cmgTjgVRbq_F9M,17305
74
+ backend/daemon/static/assets/journeyDiagram-3NMN7TZE-0KL6R2Rz.js,sha256=VciKm8VsRPXRyiEO78zf6XNxDHGLuc8Zc9I-ksTXyfc,23163
75
+ backend/daemon/static/assets/kanban-definition-UXKFOSKX-zt5NbEep.js,sha256=tsW5si1mDonv_6Xkn6cwaUZai6VotxQJnn9KPzP5LHY,20216
76
+ backend/daemon/static/assets/katex-CXMH3UgJ.js,sha256=Ib00XIn8yb-yFgPdmhhtXWnsY6TYasd4pa7LExA-cxQ,258693
77
+ backend/daemon/static/assets/line-CiAFRJVJ.js,sha256=xV0o2fV0E4-2Ig2ISCtW1RbxWd9iF_P9S0j7rFKMVmg,943
78
+ backend/daemon/static/assets/linear-BI6yqEPV.js,sha256=D6tuK-o4FuNaCsY2A8sbp_aIeejwX1igJ5JgvzqALPo,5519
79
+ backend/daemon/static/assets/logo_darkmode-BPDdj6GZ.png,sha256=9817m2fOLyih_ucwtf4nE9EUlBs830jBNZsAQDpc8is,495311
80
+ backend/daemon/static/assets/logo_lightmode-C3ZWMgAH.png,sha256=-3O7EUALL-8NjBYpPtlVCc_qkzJ7Nlv4U-_YaWe8U3w,515636
81
+ backend/daemon/static/assets/mermaid-parser.core-DEadI1Ja.js,sha256=VjbFh2CR5zJ3lRFrWfzWGG3nFxZWbj9Ve2hgahyJ_x8,16597
82
+ backend/daemon/static/assets/mindmap-definition-YA3MSWOX-TGKGYg5n.js,sha256=c1y_pPrMI4pILNmK5aC2gZ0iniq19FmIKfwlwZLr3Gw,23360
83
+ backend/daemon/static/assets/ordinal-BDEzSJ7C.js,sha256=GiNs8z1pwT2hhIUv6JCg1dQINjY3PLPOFmU3s-jMDcs,1174
84
+ backend/daemon/static/assets/packet-AYTQ26CC-CZTSuh5x.js,sha256=L9sfdEC_V9N3-kSTL34dvPw5JDqj8ll4uCA3TGcougQ,125
85
+ backend/daemon/static/assets/path-fybaL0A-.js,sha256=cbYsYP1mWWaJlag5Va98D_0bwFSWFIGRhB4BdEGv42s,2278
86
+ backend/daemon/static/assets/pegDiagram-XKGWAZYB-DGd8LACA.js,sha256=dx24h6CR4j7WSoBbmNU1SvpRT6vpD6vIGmL_sxgAD4Q,2009
87
+ backend/daemon/static/assets/pie-WAS4IAKB-B59sPr3Z.js,sha256=vrbb-G-QzCrg3sznJ9ClOeLaVZ4MZNF0uKYd2FHxc6o,122
88
+ backend/daemon/static/assets/pieDiagram-E7YTZNPT-CpwxCR3L.js,sha256=9SM8ttdzBLyUZ_G1PMcYSDRiTHh1r8fuo-oR45_6kbI,6215
89
+ backend/daemon/static/assets/quadrantDiagram-AXDQQJYC-BwSeF_E_.js,sha256=Uumj2hbMR-ndM2wk7BVjIVhFbyCuMCiP9IvmJHgOtjo,33520
90
+ backend/daemon/static/assets/radar-RG4KPBEZ-DAa4JvTb.js,sha256=NZh02cJl0uvXBB1F-tJebNg7Lm70VH31r0TMqEu9F1Y,124
91
+ backend/daemon/static/assets/railroad-74A4TZTK-BitdNgDt.js,sha256=CFtp0-SEV2IQYewrLOCaG77l9xJGC0hkyhiCKWFjqz8,127
92
+ backend/daemon/static/assets/railroad-abnf-HS5TGJTU-DCrNKqAH.js,sha256=Z0t7HOooeDymmYU9auZj1La_twb9Lqp9BkqNOqlGtK0,131
93
+ backend/daemon/static/assets/railroad-ebnf-LZEXJU2U-DmEwx8OK.js,sha256=5rsrrvsZ6MzIeFn6xl6Sn8IrruxOTnKuJLnAwav_y5M,131
94
+ backend/daemon/static/assets/railroad-peg-WCYAUIDC-CPc8dTCP.js,sha256=zpiwCRPYrJzZLGZxyCz15M0Snl7nv5W0BZOOE6W_ut0,130
95
+ backend/daemon/static/assets/railroadDiagram-O6MQD6OU-DuizuzwD.js,sha256=EOFgBZG1XJ6HymEBUyzLClH6THsjcR_g_Gfh3_7UfZM,1662
96
+ backend/daemon/static/assets/requirementDiagram-BXWQKSXE-BjMk0yS8.js,sha256=56l2uBdtuga3HkwciXDcaMHS6mLsRtA-4GqSyJO6doQ,30924
97
+ backend/daemon/static/assets/rough.esm-Dy-Kn_BL.js,sha256=70BcXqozFsdUKPY-xpjjmZO9zC2jWNvH69NV0YkB9j8,27109
98
+ backend/daemon/static/assets/sankeyDiagram-P5KCCOFB-0T_bhkmz.js,sha256=4OD-zkVlhy7e1RnfxjQSEKSLDkYCHNW7eV8yVEFJqqc,22782
99
+ backend/daemon/static/assets/sequenceDiagram-WJ2MYXX4-Cwa-1Stp.js,sha256=s8LLqrP6io2BM0r7aiKJCP1BEW9w2tGo6KAMlI7m5Lc,115742
100
+ backend/daemon/static/assets/sizeCapture-INFHLROL-B0uUizjq.js,sha256=pyY33TJEz7Dxse-TblOlxkLbspvF3gh6zEq7xp8oNSM,875
101
+ backend/daemon/static/assets/src-BH-TyZbA.js,sha256=FX8efx0XKOw7pju2ysk6t6_MEA__p1tR05_pZSkHsjc,46227
102
+ backend/daemon/static/assets/stateDiagram-D77RDMKH-BpQSg_QL.js,sha256=aruD37gny8TYnKbExEJK-f53KAS2H97PnN5949cViT0,10532
103
+ backend/daemon/static/assets/stateDiagram-v2-MP3YSRHH-BItVXKof.js,sha256=u4TGGF0WCH9TNtEznHKSe1x6UOXvnItFz6eYHVsd4sc,700
104
+ backend/daemon/static/assets/swimlanes-42K2YHIH-h_ED18Vy.js,sha256=UONG5xpcwX3hHKdqZpZhwHzXUbJJFxwNDEjoFdsPsiQ,111076
105
+ backend/daemon/static/assets/swimlanesDiagram-VR7AAH4N-D0fo0LN-.js,sha256=Uqct-5eBrJGLJO7Il-f4rIow48RDr-WJMWMn8wbs1UA,753
106
+ backend/daemon/static/assets/timeline-definition-24CTP7MA-DKfSO33a.js,sha256=a31gfvVvclClW8nsFDk0UnXTZ1aGZC95ZWdsIOAiZG0,30368
107
+ backend/daemon/static/assets/treeView-Q6P3EWNA-DAj9fxfC.js,sha256=v3QXA6ZN0gvId-nrokb_JNGdsfZh-sO-DpzW13XU7NA,127
108
+ backend/daemon/static/assets/treemap-WGGIJYW6-5IIXD9Zu.js,sha256=YrioAFempZgDArEUL7Ein9V6Z5gNnJLjazi36VkFV0k,126
109
+ backend/daemon/static/assets/vennDiagram-4TSXK5OY-BoBvVEci.js,sha256=NUCxhUaNpEv3ef3rC4u_GkPsFvoEBVROBbOth3XWgSs,41157
110
+ backend/daemon/static/assets/wardley-WFR3VGLG-CGsd7s_-.js,sha256=4pugep_WKYSNCaDCg3QAppKmbnr0Brn9Hby7wAaUP7k,126
111
+ backend/daemon/static/assets/wardleyDiagram-VM6X3IG4-QHdK5NsY.js,sha256=vB-oxnzT7BefsW12w9M4xYoPFpCZ7iBzeuBFhYNFBQ0,25196
112
+ backend/daemon/static/assets/xychartDiagram-S5SC5T6Z-MN_fdKCJ.js,sha256=Ng8p1W7FqL0tWa9WmNUWrpR3oWEpAv5iv9Y6hqgdzTY,44141
113
+ backend/database/__init__.py,sha256=kDPkYd1lcYkATWYGMtQoJ-80R2SAiJFMcEBrf5k7ahs,84
114
+ backend/database/concept_slug.py,sha256=ARAq16WqaATVHpeDuK7PTOBIV04VaM6Bk6cqghh_Cvw,1342
115
+ backend/database/concepts.py,sha256=DD7A8clitIreiS-s6eLqRnHTm8TdzYnEeA3egQMsdow,29934
116
+ backend/llm/__init__.py,sha256=3qPxmqTQcp7M0LOFWB_JcbPp91c6GaCF59JuQTRO6U8,174
117
+ backend/llm/client.py,sha256=6rjmF1_yFypes7059KT4pvo0BjPu2nprprc9yGzaaTE,12566
118
+ backend/llm/config.py,sha256=uH25TfbFVhj8fATkO9bwPzpwYw2cR0t3JTHmTKhqkwQ,8702
119
+ backend/llm/key_setup.py,sha256=UQckCbHrmGjC6RUudWxbVGz76cCa2gXmlGNFbOMuQq4,8653
120
+ backend/orchestrator/__init__.py,sha256=lRkzIAOK6GOI4Acpy2VgzUK-WCcEt3N2fmtaUerW5nc,88
121
+ backend/orchestrator/events.py,sha256=ptuewj2JLk8Ve6iVppk9FSR2c7c0jukxDKQkXsrqRMc,1607
122
+ backend/orchestrator/graph.py,sha256=5wWTk5AXFAUU2lT1sdS5JqEGN0ScCO5XsTvxJmXM6Vs,12634
123
+ backend/orchestrator/modes.py,sha256=CG-eaUtGepkYC7s6XM2cuRkbCZpOIuLGNEXRwRjEJMo,4144
124
+ codelith-0.1.0.dist-info/licenses/LICENSE,sha256=sHhvXGvlGWjUn4qSR0k5THY7j8Hvd7ArG3DyOXZGwYY,1101
125
+ codelith-0.1.0.dist-info/METADATA,sha256=OMPoF4Lm16ywlQzaZkpksn6HtGoflCdaruayZBNDJSE,11772
126
+ codelith-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
127
+ codelith-0.1.0.dist-info/entry_points.txt,sha256=JcTADLQgqwaXDH8L9o8h5y1mPqFRPn3HyDtbAdW42nk,51
128
+ codelith-0.1.0.dist-info/top_level.txt,sha256=o0r_qMzzBDDtK9APrv2QVcIw9oc00JRmCEsTE2-AFr0,8
129
+ codelith-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
+ codelith = backend.cli.main:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Himani Ghenyappa Bagale
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
+ backend