firme-tutor 0.2.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 (151) hide show
  1. firme_tutor/__init__.py +46 -0
  2. firme_tutor/__main__.py +8 -0
  3. firme_tutor/curriculum.py +5623 -0
  4. firme_tutor/db/__init__.py +16 -0
  5. firme_tutor/db/engine.py +42 -0
  6. firme_tutor/db/models.py +160 -0
  7. firme_tutor/firme_logo_purple.png +0 -0
  8. firme_tutor/multimodal/__init__.py +0 -0
  9. firme_tutor/multimodal/modes.py +66 -0
  10. firme_tutor/prompts.py +183 -0
  11. firme_tutor/tutor.py +137 -0
  12. firme_tutor/typing_game/__init__.py +0 -0
  13. firme_tutor/typing_game/keyboard.py +77 -0
  14. firme_tutor/typing_game/scoring.py +22 -0
  15. firme_tutor/typing_game/sentences.py +229 -0
  16. firme_tutor/web/__init__.py +22 -0
  17. firme_tutor/web/app.py +60 -0
  18. firme_tutor/web/config.py +38 -0
  19. firme_tutor/web/dependencies.py +59 -0
  20. firme_tutor/web/dist/assets/arc-B8bv5B3N.js +1 -0
  21. firme_tutor/web/dist/assets/arc-hcHIXwUj.js +1 -0
  22. firme_tutor/web/dist/assets/architecture-7EHR7CIX-CfWJRDbS.js +1 -0
  23. firme_tutor/web/dist/assets/architecture-7EHR7CIX-D7wqdsRm.js +1 -0
  24. firme_tutor/web/dist/assets/architectureDiagram-3BPJPVTR-CjMDtn76.js +36 -0
  25. firme_tutor/web/dist/assets/architectureDiagram-3BPJPVTR-DP_FUTYE.js +36 -0
  26. firme_tutor/web/dist/assets/blockDiagram-GPEHLZMM-BwUytfp7.js +132 -0
  27. firme_tutor/web/dist/assets/blockDiagram-GPEHLZMM-aYsXAwRW.js +132 -0
  28. firme_tutor/web/dist/assets/c4Diagram-AAUBKEIU-Bp77wM0V.js +10 -0
  29. firme_tutor/web/dist/assets/c4Diagram-AAUBKEIU-H-Jn5xGT.js +10 -0
  30. firme_tutor/web/dist/assets/channel-D3zhJf12.js +1 -0
  31. firme_tutor/web/dist/assets/channel-DUET4myG.js +1 -0
  32. firme_tutor/web/dist/assets/chunk-2J33WTMH-B2JfwxXI.js +1 -0
  33. firme_tutor/web/dist/assets/chunk-2J33WTMH-CmbDIqse.js +1 -0
  34. firme_tutor/web/dist/assets/chunk-4BX2VUAB-CiRJvBSS.js +1 -0
  35. firme_tutor/web/dist/assets/chunk-4BX2VUAB-DFJ9PiVX.js +1 -0
  36. firme_tutor/web/dist/assets/chunk-55IACEB6-D3HDZt19.js +1 -0
  37. firme_tutor/web/dist/assets/chunk-55IACEB6-DDqBhfOL.js +1 -0
  38. firme_tutor/web/dist/assets/chunk-727SXJPM-DOKYRhEn.js +206 -0
  39. firme_tutor/web/dist/assets/chunk-727SXJPM-dQ45P2iw.js +206 -0
  40. firme_tutor/web/dist/assets/chunk-AQP2D5EJ-Bee_W2_Y.js +231 -0
  41. firme_tutor/web/dist/assets/chunk-AQP2D5EJ-f6mrCGpl.js +231 -0
  42. firme_tutor/web/dist/assets/chunk-FMBD7UC4-BlVqdx0u.js +15 -0
  43. firme_tutor/web/dist/assets/chunk-FMBD7UC4-CsLkUbYG.js +15 -0
  44. firme_tutor/web/dist/assets/chunk-ND2GUHAM-BE3EMr9M.js +1 -0
  45. firme_tutor/web/dist/assets/chunk-ND2GUHAM-DPCZFRwg.js +1 -0
  46. firme_tutor/web/dist/assets/chunk-QZHKN3VN-C2EmNhuC.js +1 -0
  47. firme_tutor/web/dist/assets/chunk-QZHKN3VN-CsETkrdx.js +1 -0
  48. firme_tutor/web/dist/assets/classDiagram-4FO5ZUOK-6z0PHbLf.js +1 -0
  49. firme_tutor/web/dist/assets/classDiagram-4FO5ZUOK-_VQcyODs.js +1 -0
  50. firme_tutor/web/dist/assets/classDiagram-v2-Q7XG4LA2-6z0PHbLf.js +1 -0
  51. firme_tutor/web/dist/assets/classDiagram-v2-Q7XG4LA2-_VQcyODs.js +1 -0
  52. firme_tutor/web/dist/assets/cose-bilkent-S5V4N54A-DDbXV7Jg.js +1 -0
  53. firme_tutor/web/dist/assets/cose-bilkent-S5V4N54A-b1UkYwjp.js +1 -0
  54. firme_tutor/web/dist/assets/cytoscape.esm-FqbQrHcz.js +321 -0
  55. firme_tutor/web/dist/assets/dagre-BM42HDAG-BsNa8bKt.js +4 -0
  56. firme_tutor/web/dist/assets/dagre-BM42HDAG-Sj4pza0E.js +4 -0
  57. firme_tutor/web/dist/assets/dagre-Bx709z4p.js +1 -0
  58. firme_tutor/web/dist/assets/defaultLocale-C8Fc0cco.js +1 -0
  59. firme_tutor/web/dist/assets/diagram-2AECGRRQ-BG1EVSbc.js +43 -0
  60. firme_tutor/web/dist/assets/diagram-2AECGRRQ-BKbqr1fn.js +43 -0
  61. firme_tutor/web/dist/assets/diagram-5GNKFQAL-BNip8_sK.js +10 -0
  62. firme_tutor/web/dist/assets/diagram-5GNKFQAL-zB-3Fy6R.js +10 -0
  63. firme_tutor/web/dist/assets/diagram-KO2AKTUF-BjYQE0x7.js +3 -0
  64. firme_tutor/web/dist/assets/diagram-KO2AKTUF-_PS8ucO2.js +3 -0
  65. firme_tutor/web/dist/assets/diagram-LMA3HP47-CwrlWP0x.js +24 -0
  66. firme_tutor/web/dist/assets/diagram-LMA3HP47-DthtUw5L.js +24 -0
  67. firme_tutor/web/dist/assets/diagram-OG6HWLK6-DVwpvzfb.js +24 -0
  68. firme_tutor/web/dist/assets/diagram-OG6HWLK6-qEpybCEy.js +24 -0
  69. firme_tutor/web/dist/assets/erDiagram-TEJ5UH35-ClFzIpuj.js +85 -0
  70. firme_tutor/web/dist/assets/erDiagram-TEJ5UH35-Hd0qiO8b.js +85 -0
  71. firme_tutor/web/dist/assets/eventmodeling-FCH6USID--Mtgjm_v.js +1 -0
  72. firme_tutor/web/dist/assets/eventmodeling-FCH6USID-D_pZo8i_.js +1 -0
  73. firme_tutor/web/dist/assets/flowDiagram-I6XJVG4X-Ig0KZKOS.js +162 -0
  74. firme_tutor/web/dist/assets/flowDiagram-I6XJVG4X-um4xeAwx.js +162 -0
  75. firme_tutor/web/dist/assets/ganttDiagram-6RSMTGT7-BKf9wbVM.js +292 -0
  76. firme_tutor/web/dist/assets/ganttDiagram-6RSMTGT7-C0geFI1t.js +292 -0
  77. firme_tutor/web/dist/assets/gitGraph-WXDBUCRP-CX6Fr11a.js +1 -0
  78. firme_tutor/web/dist/assets/gitGraph-WXDBUCRP-D6XLrz9f.js +1 -0
  79. firme_tutor/web/dist/assets/gitGraphDiagram-PVQCEYII-B9ranWDI.js +106 -0
  80. firme_tutor/web/dist/assets/gitGraphDiagram-PVQCEYII-CvumOUae.js +106 -0
  81. firme_tutor/web/dist/assets/graphlib-B8gBHxth.js +1 -0
  82. firme_tutor/web/dist/assets/index-BTb5-sb9.js +339 -0
  83. firme_tutor/web/dist/assets/index-BVsG-zyT.css +1 -0
  84. firme_tutor/web/dist/assets/index-BsQieKqg.js +339 -0
  85. firme_tutor/web/dist/assets/index-DzgywBd5.css +1 -0
  86. firme_tutor/web/dist/assets/info-J43DQDTF-BIlDfkV-.js +1 -0
  87. firme_tutor/web/dist/assets/info-J43DQDTF-Cl5xrj6u.js +1 -0
  88. firme_tutor/web/dist/assets/infoDiagram-5YYISTIA-LFNqA-Ef.js +2 -0
  89. firme_tutor/web/dist/assets/infoDiagram-5YYISTIA-gh4R7xRA.js +2 -0
  90. firme_tutor/web/dist/assets/init-D6jRqBbL.js +1 -0
  91. firme_tutor/web/dist/assets/ishikawaDiagram-YF4QCWOH-Cm_oPlFP.js +70 -0
  92. firme_tutor/web/dist/assets/ishikawaDiagram-YF4QCWOH-CxggAMWN.js +70 -0
  93. firme_tutor/web/dist/assets/journeyDiagram-JHISSGLW-CX0FSEjo.js +139 -0
  94. firme_tutor/web/dist/assets/journeyDiagram-JHISSGLW-D7I1V3cu.js +139 -0
  95. firme_tutor/web/dist/assets/kanban-definition-UN3LZRKU-ABQNt4rG.js +89 -0
  96. firme_tutor/web/dist/assets/kanban-definition-UN3LZRKU-C5n2jO9q.js +89 -0
  97. firme_tutor/web/dist/assets/katex-Vhh-h91d.js +257 -0
  98. firme_tutor/web/dist/assets/linear-CD4Oo35k.js +1 -0
  99. firme_tutor/web/dist/assets/linear-CtNFkBk8.js +1 -0
  100. firme_tutor/web/dist/assets/mermaid-parser.core-78hM4Y96.js +161 -0
  101. firme_tutor/web/dist/assets/mermaid-parser.core-BkDxsFuj.js +161 -0
  102. firme_tutor/web/dist/assets/mindmap-definition-RKZ34NQL-C1pGZ1LG.js +96 -0
  103. firme_tutor/web/dist/assets/mindmap-definition-RKZ34NQL-GGLqgti3.js +96 -0
  104. firme_tutor/web/dist/assets/ordinal-hYBb2elL.js +1 -0
  105. firme_tutor/web/dist/assets/packet-YPE3B663-B8-1g1QF.js +1 -0
  106. firme_tutor/web/dist/assets/packet-YPE3B663-DqtUQHPE.js +1 -0
  107. firme_tutor/web/dist/assets/pie-LRSECV5Y-BPuzttrq.js +1 -0
  108. firme_tutor/web/dist/assets/pie-LRSECV5Y-DwwS2nmL.js +1 -0
  109. firme_tutor/web/dist/assets/pieDiagram-4H26LBE5-DtT_nRRn.js +30 -0
  110. firme_tutor/web/dist/assets/pieDiagram-4H26LBE5-LYEy49q8.js +30 -0
  111. firme_tutor/web/dist/assets/quadrantDiagram-W4KKPZXB-Bvd1jbhg.js +7 -0
  112. firme_tutor/web/dist/assets/quadrantDiagram-W4KKPZXB-D1ov-gdL.js +7 -0
  113. firme_tutor/web/dist/assets/radar-GUYGQ44K-DXtzkNxC.js +1 -0
  114. firme_tutor/web/dist/assets/radar-GUYGQ44K-TjLlmiCU.js +1 -0
  115. firme_tutor/web/dist/assets/requirementDiagram-4Y6WPE33-B1VZI8BL.js +84 -0
  116. firme_tutor/web/dist/assets/requirementDiagram-4Y6WPE33-CCfFYSqM.js +84 -0
  117. firme_tutor/web/dist/assets/sankeyDiagram-5OEKKPKP-BztZ_EFc.js +40 -0
  118. firme_tutor/web/dist/assets/sankeyDiagram-5OEKKPKP-CXb7EmOJ.js +40 -0
  119. firme_tutor/web/dist/assets/sequenceDiagram-3UESZ5HK-QX4NdcK_.js +162 -0
  120. firme_tutor/web/dist/assets/sequenceDiagram-3UESZ5HK-Sp2tvkoT.js +162 -0
  121. firme_tutor/web/dist/assets/stateDiagram-AJRCARHV-CpsWzZ9I.js +1 -0
  122. firme_tutor/web/dist/assets/stateDiagram-AJRCARHV-DIOdasDM.js +1 -0
  123. firme_tutor/web/dist/assets/stateDiagram-v2-BHNVJYJU-Jt9E-Zt_.js +1 -0
  124. firme_tutor/web/dist/assets/stateDiagram-v2-BHNVJYJU-LfyaYy96.js +1 -0
  125. firme_tutor/web/dist/assets/timeline-definition-PNZ67QCA-D0_o57jX.js +120 -0
  126. firme_tutor/web/dist/assets/timeline-definition-PNZ67QCA-Ue-hnFjk.js +120 -0
  127. firme_tutor/web/dist/assets/treeView-BLDUP644-BueViHYx.js +1 -0
  128. firme_tutor/web/dist/assets/treeView-BLDUP644-ZtLGkb3B.js +1 -0
  129. firme_tutor/web/dist/assets/treemap-LRROVOQU-BBsbNAZ6.js +1 -0
  130. firme_tutor/web/dist/assets/treemap-LRROVOQU-Cm4jfzQA.js +1 -0
  131. firme_tutor/web/dist/assets/vennDiagram-CIIHVFJN-DihoR2xs.js +34 -0
  132. firme_tutor/web/dist/assets/vennDiagram-CIIHVFJN-NQ-U2Ihc.js +34 -0
  133. firme_tutor/web/dist/assets/wardley-L42UT6IY-mqWJpr_T.js +1 -0
  134. firme_tutor/web/dist/assets/wardley-L42UT6IY-nzZZ6F8x.js +1 -0
  135. firme_tutor/web/dist/assets/wardleyDiagram-YWT4CUSO-BXAvaj3_.js +78 -0
  136. firme_tutor/web/dist/assets/wardleyDiagram-YWT4CUSO-ChvZuWwP.js +78 -0
  137. firme_tutor/web/dist/assets/xychartDiagram-2RQKCTM6-BaC7fSuu.js +7 -0
  138. firme_tutor/web/dist/assets/xychartDiagram-2RQKCTM6-BvyHx8AJ.js +7 -0
  139. firme_tutor/web/dist/favicon.svg +1 -0
  140. firme_tutor/web/dist/firme_logo_purple.png +0 -0
  141. firme_tutor/web/dist/icons.svg +24 -0
  142. firme_tutor/web/dist/index.html +14 -0
  143. firme_tutor/web/routers/__init__.py +0 -0
  144. firme_tutor/web/routers/auth.py +43 -0
  145. firme_tutor/web/routers/chat.py +244 -0
  146. firme_tutor/web/routers/progress.py +242 -0
  147. firme_tutor/web/routers/typing_game.py +217 -0
  148. firme_tutor-0.2.0.dist-info/METADATA +15 -0
  149. firme_tutor-0.2.0.dist-info/RECORD +151 -0
  150. firme_tutor-0.2.0.dist-info/WHEEL +5 -0
  151. firme_tutor-0.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,46 @@
1
+ """
2
+ firme-tutor
3
+ -----------
4
+ AI-powered Socratic tutor for Firme Coding fellows.
5
+ Built on the Claude API. Designed to guide learners through
6
+ lessons and homework without giving direct answers.
7
+
8
+ Includes:
9
+ - Socratic AI tutor with multi-modal teaching (text, visual, audio, hands-on)
10
+ - Typing practice game with reentry-themed content
11
+ - Progress tracking API for staff and funders
12
+ - Fellow memory — the tutor remembers each learner across sessions
13
+
14
+ Basic usage:
15
+ from firme_tutor import FirmeTutor
16
+
17
+ tutor = FirmeTutor(topic="What is a variable?")
18
+ reply = tutor.chat("I don't understand what a variable does")
19
+ print(reply)
20
+
21
+ Run the web app:
22
+ pip install "firme-tutor[web]"
23
+ firme-tutor-web
24
+
25
+ # or
26
+ python -m firme_tutor
27
+ """
28
+
29
+ from .tutor import FirmeTutor
30
+ from .prompts import build_system_prompt, BASE_SYSTEM_PROMPT
31
+ from .curriculum import MODULES, get_curriculum_for_module
32
+ from .multimodal.modes import LearningMode
33
+ from .typing_game.sentences import STAGES as TYPING_STAGES
34
+
35
+ __version__ = "0.2.0"
36
+ __author__ = "Maria D. Martinez <maria@firmecoding.org>"
37
+
38
+ __all__ = [
39
+ "FirmeTutor",
40
+ "build_system_prompt",
41
+ "BASE_SYSTEM_PROMPT",
42
+ "MODULES",
43
+ "get_curriculum_for_module",
44
+ "LearningMode",
45
+ "TYPING_STAGES",
46
+ ]
@@ -0,0 +1,8 @@
1
+ """
2
+ Allow running the web server with: python -m firme_tutor
3
+ """
4
+
5
+ from firme_tutor.web import run_server
6
+
7
+ if __name__ == "__main__":
8
+ run_server()