clawed 2.4.0__tar.gz → 2.5.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 (257) hide show
  1. {clawed-2.4.0 → clawed-2.5.0}/.gitignore +6 -0
  2. clawed-2.5.0/PKG-INFO +359 -0
  3. clawed-2.5.0/README.md +283 -0
  4. {clawed-2.4.0 → clawed-2.5.0}/clawed/__init__.py +1 -1
  5. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent.py +8 -5
  6. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/generate.py +8 -5
  7. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/train.py +8 -8
  8. {clawed-2.4.0 → clawed-2.5.0}/clawed/lesson.py +42 -20
  9. {clawed-2.4.0 → clawed-2.5.0}/clawed/models.py +35 -8
  10. {clawed-2.4.0 → clawed-2.5.0}/clawed/multi_agent.py +0 -1
  11. {clawed-2.4.0 → clawed-2.5.0}/clawed/onboarding.py +137 -51
  12. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/master_content.txt +26 -5
  13. {clawed-2.4.0 → clawed-2.5.0}/pyproject.toml +1 -1
  14. clawed-2.4.0/PKG-INFO +0 -314
  15. clawed-2.4.0/README.md +0 -238
  16. {clawed-2.4.0 → clawed-2.5.0}/LICENSE +0 -0
  17. {clawed-2.4.0 → clawed-2.5.0}/clawed/__main__.py +0 -0
  18. {clawed-2.4.0 → clawed-2.5.0}/clawed/_legacy_gateway.py +0 -0
  19. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/__init__.py +0 -0
  20. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/approvals.py +0 -0
  21. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/autonomy.py +0 -0
  22. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/context.py +0 -0
  23. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/core.py +0 -0
  24. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/custom_tools.py +0 -0
  25. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/drive/__init__.py +0 -0
  26. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/drive/auth.py +0 -0
  27. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/drive/client.py +0 -0
  28. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/fake_llm.py +0 -0
  29. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/loop.py +0 -0
  30. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/memory/__init__.py +0 -0
  31. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/memory/curriculum.py +0 -0
  32. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/memory/curriculum_kb.py +0 -0
  33. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/memory/embeddings.py +0 -0
  34. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/memory/episodes.py +0 -0
  35. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/memory/identity.py +0 -0
  36. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/memory/loader.py +0 -0
  37. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/memory/preferences.py +0 -0
  38. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/planner.py +0 -0
  39. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/prompt.py +0 -0
  40. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/scheduler.py +0 -0
  41. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/__init__.py +0 -0
  42. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/base.py +0 -0
  43. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/configure_profile.py +0 -0
  44. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/curriculum_map.py +0 -0
  45. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/drive_create_doc.py +0 -0
  46. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/drive_create_slides.py +0 -0
  47. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/drive_list.py +0 -0
  48. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/drive_organize.py +0 -0
  49. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/drive_read.py +0 -0
  50. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/drive_upload.py +0 -0
  51. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/export_document.py +0 -0
  52. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/gap_analysis.py +0 -0
  53. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/generate_assessment.py +0 -0
  54. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/generate_lesson.py +0 -0
  55. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/generate_lesson_bundle.py +0 -0
  56. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/generate_materials.py +0 -0
  57. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/generate_unit.py +0 -0
  58. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/ingest_materials.py +0 -0
  59. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/parent_comm.py +0 -0
  60. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/read_heartbeat.py +0 -0
  61. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/read_workspace.py +0 -0
  62. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/request_approval.py +0 -0
  63. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/schedule_task.py +0 -0
  64. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/search_lessons.py +0 -0
  65. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/search_my_materials.py +0 -0
  66. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/search_standards.py +0 -0
  67. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/student_insights.py +0 -0
  68. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/sub_packet.py +0 -0
  69. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/switch_model.py +0 -0
  70. {clawed-2.4.0 → clawed-2.5.0}/clawed/agent_core/tools/update_soul.py +0 -0
  71. {clawed-2.4.0 → clawed-2.5.0}/clawed/analytics.py +0 -0
  72. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/__init__.py +0 -0
  73. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/deps.py +0 -0
  74. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/__init__.py +0 -0
  75. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/chat.py +0 -0
  76. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/export.py +0 -0
  77. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/feedback.py +0 -0
  78. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/gateway_chat.py +0 -0
  79. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/generate.py +0 -0
  80. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/ingest.py +0 -0
  81. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/lessons.py +0 -0
  82. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/school.py +0 -0
  83. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/settings.py +0 -0
  84. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/routes/tools.py +0 -0
  85. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/server.py +0 -0
  86. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/static/app.js +0 -0
  87. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/static/style.css +0 -0
  88. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/static/widget.js +0 -0
  89. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/analytics.html +0 -0
  90. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/base.html +0 -0
  91. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/dashboard.html +0 -0
  92. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/generate.html +0 -0
  93. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/index.html +0 -0
  94. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/lesson.html +0 -0
  95. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/profile.html +0 -0
  96. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/settings.html +0 -0
  97. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/stats.html +0 -0
  98. {clawed-2.4.0 → clawed-2.5.0}/clawed/api/templates/students.html +0 -0
  99. {clawed-2.4.0 → clawed-2.5.0}/clawed/assessment.py +0 -0
  100. {clawed-2.4.0 → clawed-2.5.0}/clawed/asset_registry.py +0 -0
  101. {clawed-2.4.0 → clawed-2.5.0}/clawed/async_utils.py +0 -0
  102. {clawed-2.4.0 → clawed-2.5.0}/clawed/auth/__init__.py +0 -0
  103. {clawed-2.4.0 → clawed-2.5.0}/clawed/auth/google_auth.py +0 -0
  104. {clawed-2.4.0 → clawed-2.5.0}/clawed/bot_state.py +0 -0
  105. {clawed-2.4.0 → clawed-2.5.0}/clawed/chat.py +0 -0
  106. {clawed-2.4.0 → clawed-2.5.0}/clawed/cli.py +0 -0
  107. {clawed-2.4.0 → clawed-2.5.0}/clawed/cli_chat.py +0 -0
  108. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/__init__.py +0 -0
  109. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/_helpers.py +0 -0
  110. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/bot.py +0 -0
  111. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/config.py +0 -0
  112. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/config_llm.py +0 -0
  113. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/config_profile.py +0 -0
  114. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/export.py +0 -0
  115. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/generate_assessment.py +0 -0
  116. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/generate_unit.py +0 -0
  117. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/queue.py +0 -0
  118. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/schedule_cmd.py +0 -0
  119. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/sub.py +0 -0
  120. {clawed-2.4.0 → clawed-2.5.0}/clawed/commands/workspace_cmd.py +0 -0
  121. {clawed-2.4.0 → clawed-2.5.0}/clawed/compile_slides.py +0 -0
  122. {clawed-2.4.0 → clawed-2.5.0}/clawed/compile_student.py +0 -0
  123. {clawed-2.4.0 → clawed-2.5.0}/clawed/compile_teacher.py +0 -0
  124. {clawed-2.4.0 → clawed-2.5.0}/clawed/config.py +0 -0
  125. {clawed-2.4.0 → clawed-2.5.0}/clawed/corpus.py +0 -0
  126. {clawed-2.4.0 → clawed-2.5.0}/clawed/curriculum_map.py +0 -0
  127. {clawed-2.4.0 → clawed-2.5.0}/clawed/database.py +0 -0
  128. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/__init__.py +0 -0
  129. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_assessment.json +0 -0
  130. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_formative_assessment.json +0 -0
  131. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_lesson_materials.json +0 -0
  132. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_lesson_science_g6.json +0 -0
  133. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_lesson_social_studies_g8.json +0 -0
  134. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_master_content.json +0 -0
  135. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_pacing_guide.json +0 -0
  136. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_quiz.json +0 -0
  137. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_rubric.json +0 -0
  138. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_unit_plan.json +0 -0
  139. {clawed-2.4.0 → clawed-2.5.0}/clawed/demo/demo_year_map.json +0 -0
  140. {clawed-2.4.0 → clawed-2.5.0}/clawed/differentiation.py +0 -0
  141. {clawed-2.4.0 → clawed-2.5.0}/clawed/doc_export.py +0 -0
  142. {clawed-2.4.0 → clawed-2.5.0}/clawed/drive.py +0 -0
  143. {clawed-2.4.0 → clawed-2.5.0}/clawed/evaluation.py +0 -0
  144. {clawed-2.4.0 → clawed-2.5.0}/clawed/export_docx.py +0 -0
  145. {clawed-2.4.0 → clawed-2.5.0}/clawed/export_handout.py +0 -0
  146. {clawed-2.4.0 → clawed-2.5.0}/clawed/export_markdown.py +0 -0
  147. {clawed-2.4.0 → clawed-2.5.0}/clawed/export_pdf.py +0 -0
  148. {clawed-2.4.0 → clawed-2.5.0}/clawed/export_pptx.py +0 -0
  149. {clawed-2.4.0 → clawed-2.5.0}/clawed/export_templates.py +0 -0
  150. {clawed-2.4.0 → clawed-2.5.0}/clawed/export_theme.py +0 -0
  151. {clawed-2.4.0 → clawed-2.5.0}/clawed/exporter.py +0 -0
  152. {clawed-2.4.0 → clawed-2.5.0}/clawed/failure_codes.py +0 -0
  153. {clawed-2.4.0 → clawed-2.5.0}/clawed/feedback.py +0 -0
  154. {clawed-2.4.0 → clawed-2.5.0}/clawed/formats/__init__.py +0 -0
  155. {clawed-2.4.0 → clawed-2.5.0}/clawed/formats/flipchart.py +0 -0
  156. {clawed-2.4.0 → clawed-2.5.0}/clawed/formats/notebook.py +0 -0
  157. {clawed-2.4.0 → clawed-2.5.0}/clawed/formats/xbk.py +0 -0
  158. {clawed-2.4.0 → clawed-2.5.0}/clawed/gateway.py +0 -0
  159. {clawed-2.4.0 → clawed-2.5.0}/clawed/gateway_response.py +0 -0
  160. {clawed-2.4.0 → clawed-2.5.0}/clawed/generation.py +0 -0
  161. {clawed-2.4.0 → clawed-2.5.0}/clawed/generation_report.py +0 -0
  162. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/__init__.py +0 -0
  163. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/export.py +0 -0
  164. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/feedback.py +0 -0
  165. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/gaps.py +0 -0
  166. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/generate.py +0 -0
  167. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/ingest.py +0 -0
  168. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/misc.py +0 -0
  169. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/onboard.py +0 -0
  170. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/schedule.py +0 -0
  171. {clawed-2.4.0 → clawed-2.5.0}/clawed/handlers/standards.py +0 -0
  172. {clawed-2.4.0 → clawed-2.5.0}/clawed/hermes_plugin.py +0 -0
  173. {clawed-2.4.0 → clawed-2.5.0}/clawed/image_pipeline.py +0 -0
  174. {clawed-2.4.0 → clawed-2.5.0}/clawed/improver.py +0 -0
  175. {clawed-2.4.0 → clawed-2.5.0}/clawed/ingestor.py +0 -0
  176. {clawed-2.4.0 → clawed-2.5.0}/clawed/io.py +0 -0
  177. {clawed-2.4.0 → clawed-2.5.0}/clawed/llm.py +0 -0
  178. {clawed-2.4.0 → clawed-2.5.0}/clawed/master_content.py +0 -0
  179. {clawed-2.4.0 → clawed-2.5.0}/clawed/materials.py +0 -0
  180. {clawed-2.4.0 → clawed-2.5.0}/clawed/mcp_server.py +0 -0
  181. {clawed-2.4.0 → clawed-2.5.0}/clawed/memory_engine.py +0 -0
  182. {clawed-2.4.0 → clawed-2.5.0}/clawed/model_router.py +0 -0
  183. {clawed-2.4.0 → clawed-2.5.0}/clawed/openclaw_plugin.py +0 -0
  184. {clawed-2.4.0 → clawed-2.5.0}/clawed/parent_comm.py +0 -0
  185. {clawed-2.4.0 → clawed-2.5.0}/clawed/persona.py +0 -0
  186. {clawed-2.4.0 → clawed-2.5.0}/clawed/persona_evolution.py +0 -0
  187. {clawed-2.4.0 → clawed-2.5.0}/clawed/planner.py +0 -0
  188. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/504_accommodations.txt +0 -0
  189. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/admin_lesson_plan.txt +0 -0
  190. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/assessment.txt +0 -0
  191. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/curriculum_gaps.txt +0 -0
  192. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/dbq_assessment.txt +0 -0
  193. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/differentiation.txt +0 -0
  194. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/formative_assessment.txt +0 -0
  195. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/iep_modification.txt +0 -0
  196. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/lesson_plan.txt +0 -0
  197. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/multi_agent_researcher.txt +0 -0
  198. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/multi_agent_reviewer.txt +0 -0
  199. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/pacing_guide.txt +0 -0
  200. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/parent_note.txt +0 -0
  201. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/persona_extract.txt +0 -0
  202. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/quiz.txt +0 -0
  203. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/rubric.txt +0 -0
  204. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/student_packet.txt +0 -0
  205. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/sub_packet.txt +0 -0
  206. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/summative_assessment.txt +0 -0
  207. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/tiered_assignments.txt +0 -0
  208. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/unit_plan.txt +0 -0
  209. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/worksheet.txt +0 -0
  210. {clawed-2.4.0 → clawed-2.5.0}/clawed/prompts/year_map.txt +0 -0
  211. {clawed-2.4.0 → clawed-2.5.0}/clawed/quality.py +0 -0
  212. {clawed-2.4.0 → clawed-2.5.0}/clawed/reading_report.py +0 -0
  213. {clawed-2.4.0 → clawed-2.5.0}/clawed/router.py +0 -0
  214. {clawed-2.4.0 → clawed-2.5.0}/clawed/sanitize.py +0 -0
  215. {clawed-2.4.0 → clawed-2.5.0}/clawed/scheduler.py +0 -0
  216. {clawed-2.4.0 → clawed-2.5.0}/clawed/school.py +0 -0
  217. {clawed-2.4.0 → clawed-2.5.0}/clawed/search.py +0 -0
  218. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/__init__.py +0 -0
  219. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/art.py +0 -0
  220. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/base.py +0 -0
  221. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/computer_science.py +0 -0
  222. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/ela.py +0 -0
  223. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/foreign_language.py +0 -0
  224. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/history.py +0 -0
  225. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/library.py +0 -0
  226. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/math.py +0 -0
  227. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/music.py +0 -0
  228. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/physical_education.py +0 -0
  229. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/science.py +0 -0
  230. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/social_studies.py +0 -0
  231. {clawed-2.4.0 → clawed-2.5.0}/clawed/skills/special_education.py +0 -0
  232. {clawed-2.4.0 → clawed-2.5.0}/clawed/slide_images.py +0 -0
  233. {clawed-2.4.0 → clawed-2.5.0}/clawed/standards.py +0 -0
  234. {clawed-2.4.0 → clawed-2.5.0}/clawed/state.py +0 -0
  235. {clawed-2.4.0 → clawed-2.5.0}/clawed/state_standards.py +0 -0
  236. {clawed-2.4.0 → clawed-2.5.0}/clawed/student_bot.py +0 -0
  237. {clawed-2.4.0 → clawed-2.5.0}/clawed/student_cli.py +0 -0
  238. {clawed-2.4.0 → clawed-2.5.0}/clawed/student_telegram_bot.py +0 -0
  239. {clawed-2.4.0 → clawed-2.5.0}/clawed/sub_packet.py +0 -0
  240. {clawed-2.4.0 → clawed-2.5.0}/clawed/task_queue.py +0 -0
  241. {clawed-2.4.0 → clawed-2.5.0}/clawed/templates_lib.py +0 -0
  242. {clawed-2.4.0 → clawed-2.5.0}/clawed/tools.py +0 -0
  243. {clawed-2.4.0 → clawed-2.5.0}/clawed/transports/__init__.py +0 -0
  244. {clawed-2.4.0 → clawed-2.5.0}/clawed/transports/cli.py +0 -0
  245. {clawed-2.4.0 → clawed-2.5.0}/clawed/transports/hermes.py +0 -0
  246. {clawed-2.4.0 → clawed-2.5.0}/clawed/transports/openclaw.py +0 -0
  247. {clawed-2.4.0 → clawed-2.5.0}/clawed/transports/student_telegram.py +0 -0
  248. {clawed-2.4.0 → clawed-2.5.0}/clawed/transports/telegram.py +0 -0
  249. {clawed-2.4.0 → clawed-2.5.0}/clawed/transports/web.py +0 -0
  250. {clawed-2.4.0 → clawed-2.5.0}/clawed/tui.py +0 -0
  251. {clawed-2.4.0 → clawed-2.5.0}/clawed/tui_chat.py +0 -0
  252. {clawed-2.4.0 → clawed-2.5.0}/clawed/validation.py +0 -0
  253. {clawed-2.4.0 → clawed-2.5.0}/clawed/voice.py +0 -0
  254. {clawed-2.4.0 → clawed-2.5.0}/clawed/voice_check.py +0 -0
  255. {clawed-2.4.0 → clawed-2.5.0}/clawed/workspace.py +0 -0
  256. {clawed-2.4.0 → clawed-2.5.0}/eduagent/__init__.py +0 -0
  257. {clawed-2.4.0 → clawed-2.5.0}/eduagent/_compat.py +0 -0
@@ -40,3 +40,9 @@ htmlcov/
40
40
 
41
41
  # Build prompts (internal)
42
42
  BUILD_PROMPT.md
43
+
44
+ # Local utility scripts
45
+ check_jon.py
46
+ check_db.py
47
+ update_jon_persona.py
48
+ output/
clawed-2.5.0/PKG-INFO ADDED
@@ -0,0 +1,359 @@
1
+ Metadata-Version: 2.4
2
+ Name: clawed
3
+ Version: 2.5.0
4
+ Summary: Free AI lesson planner for teachers. Learns your teaching voice from your curriculum files and generates complete lesson packages. Open source, runs locally, no subscription.
5
+ Project-URL: Homepage, https://sirhanmacx.github.io/Claw-ED
6
+ Project-URL: Documentation, https://github.com/SirhanMacx/Claw-ED#readme
7
+ Project-URL: Repository, https://github.com/SirhanMacx/Claw-ED
8
+ Project-URL: Bug Tracker, https://github.com/SirhanMacx/Claw-ED/issues
9
+ Project-URL: Changelog, https://github.com/SirhanMacx/Claw-ED/blob/main/CHANGELOG.md
10
+ Project-URL: PyPI, https://pypi.org/project/clawed/
11
+ Author: Jon Maccarello & Claw-ED contributors
12
+ License-Expression: MIT
13
+ License-File: LICENSE
14
+ Keywords: ai,ai-for-teachers,claw-ed,clawed,curriculum,edtech,education,hermes-agent,k12,lesson-plan-generator,lesson-planner,lesson-planning,lesson-plans,open-source-education,pedagogy,teacher-tools,teachers,teaching,teaching-assistant
15
+ Classifier: Development Status :: 3 - Alpha
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Education
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Topic :: Education
25
+ Classifier: Topic :: Education :: Computer Aided Instruction (CAI)
26
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
+ Requires-Python: >=3.10
28
+ Requires-Dist: apscheduler<4.0,>=3.10.0
29
+ Requires-Dist: fastapi<1.0,>=0.110.0
30
+ Requires-Dist: httpx<1.0,>=0.25.0
31
+ Requires-Dist: jinja2>=3.1.0
32
+ Requires-Dist: json-repair>=0.30.0
33
+ Requires-Dist: lxml>=4.9.0
34
+ Requires-Dist: mcp>=1.0.0
35
+ Requires-Dist: pydantic<3.0,>=2.0.0
36
+ Requires-Dist: pymupdf>=1.23.0
37
+ Requires-Dist: python-docx>=1.0.0
38
+ Requires-Dist: python-multipart>=0.0.6
39
+ Requires-Dist: python-pptx>=0.6.21
40
+ Requires-Dist: pyyaml<7.0,>=6.0
41
+ Requires-Dist: reportlab>=4.0.0
42
+ Requires-Dist: rich>=13.0.0
43
+ Requires-Dist: sse-starlette>=1.6.0
44
+ Requires-Dist: typer<1.0,>=0.9.0
45
+ Requires-Dist: uvicorn[standard]>=0.27.0
46
+ Provides-Extra: all
47
+ Requires-Dist: faster-whisper>=0.10.0; extra == 'all'
48
+ Requires-Dist: keyring>=24.0.0; extra == 'all'
49
+ Requires-Dist: onnxruntime>=1.16.0; extra == 'all'
50
+ Requires-Dist: qrcode[pil]>=7.0; extra == 'all'
51
+ Requires-Dist: textual>=0.56.0; extra == 'all'
52
+ Requires-Dist: uvicorn[standard]>=0.27.0; extra == 'all'
53
+ Provides-Extra: dev
54
+ Requires-Dist: apscheduler<4.0,>=3.10.0; extra == 'dev'
55
+ Requires-Dist: faster-whisper>=0.10.0; extra == 'dev'
56
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
57
+ Requires-Dist: pytest-cov>=4.0; extra == 'dev'
58
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
59
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
60
+ Provides-Extra: google
61
+ Requires-Dist: google-api-python-client>=2.0.0; extra == 'google'
62
+ Requires-Dist: google-auth-oauthlib>=1.0.0; extra == 'google'
63
+ Provides-Extra: keyring
64
+ Requires-Dist: keyring>=24.0.0; extra == 'keyring'
65
+ Provides-Extra: memory
66
+ Requires-Dist: onnxruntime>=1.16.0; extra == 'memory'
67
+ Provides-Extra: pdf
68
+ Requires-Dist: weasyprint>=60.0; extra == 'pdf'
69
+ Provides-Extra: qr
70
+ Requires-Dist: qrcode[pil]>=7.0; extra == 'qr'
71
+ Provides-Extra: tui
72
+ Requires-Dist: textual>=0.56.0; extra == 'tui'
73
+ Provides-Extra: voice
74
+ Requires-Dist: faster-whisper>=0.10.0; extra == 'voice'
75
+ Description-Content-Type: text/markdown
76
+
77
+ # Claw-ED
78
+
79
+ **Your AI co-teacher. Learns your voice. Generates lessons that sound like you wrote them.**
80
+
81
+ <p align="center">
82
+ <a href="https://pypi.org/project/clawed/"><img src="https://img.shields.io/pypi/v/clawed?color=blue" alt="PyPI version"></a>
83
+ <a href="https://pypi.org/project/clawed/"><img src="https://img.shields.io/pypi/pyversions/clawed" alt="Python versions"></a>
84
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="MIT License"></a>
85
+ <a href="https://github.com/SirhanMacx/Claw-ED/stargazers"><img src="https://img.shields.io/github/stars/SirhanMacx/Claw-ED" alt="GitHub stars"></a>
86
+ <a href="https://pepy.tech/project/clawed"><img src="https://static.pepy.tech/badge/clawed" alt="Downloads"></a>
87
+ </p>
88
+
89
+ ---
90
+
91
+ Claw-ED is an open-source AI teaching assistant that learns your actual teaching style from your curriculum files. Not a generic lesson template generator — a personal agent that captures your voice, your scaffolding patterns, your assessment style, and your classroom personality. It generates complete lesson packages that your colleagues would swear you wrote yourself.
92
+
93
+ ```bash
94
+ pip install clawed
95
+ ```
96
+
97
+ ---
98
+
99
+ ## For Teachers
100
+
101
+ **Feed it your files. Get lessons in your voice.**
102
+
103
+ ```bash
104
+ clawed ingest ~/Documents/Lessons/ # Teach it your style
105
+ clawed lesson "The Missouri Compromise" -g 8 -s "US History" # Generate a lesson
106
+ ```
107
+
108
+ Claw-ED reads your existing lesson plans, handouts, slideshows, and assessments. It extracts your pedagogical fingerprint: how you structure a Do Now, what graphic organizers you use, how you scaffold for ELL and IEP students, your favorite primary source types, your questioning patterns, your signature teaching moves.
109
+
110
+ Then it generates new lessons that match. Not "inspired by" — actually match. Same structure, same voice, same scaffolding, same assessment alignment.
111
+
112
+ **What you get:**
113
+
114
+ - Complete daily lesson plans in your format (DOCX, PPTX, PDF)
115
+ - Unit plans with essential questions and pacing
116
+ - Assessments aligned to your state standards (50 states supported)
117
+ - Differentiated materials for ELL, IEP, and gifted students
118
+ - Homework, rubrics, sub plans, parent communications
119
+ - Gap analysis showing what standards you haven't covered
120
+ - Morning prep that runs before you wake up
121
+
122
+ **What makes it different:**
123
+
124
+ - **Your voice, not generic AI.** Lessons sound like you, not like a chatbot.
125
+ - **Your files stay on your machine.** Local-first architecture. No accounts, no subscriptions, no data collection.
126
+ - **Works with any AI provider.** Claude, GPT, Gemini, Ollama (free local models), or your own fine-tuned model.
127
+ - **Gets better over time.** Rate lessons, give feedback — it learns what you want.
128
+ - **Open source.** MIT license. Free forever.
129
+
130
+ ---
131
+
132
+ ## Quick Start
133
+
134
+ ```bash
135
+ # Install
136
+ pip install clawed
137
+
138
+ # First run — picks your AI provider and creates your workspace
139
+ clawed
140
+
141
+ # Feed it your curriculum files (PDF, DOCX, PPTX, and 20+ formats)
142
+ clawed ingest ~/Documents/Lessons/
143
+
144
+ # Generate
145
+ clawed lesson "Causes of World War I" -g 10 -s "Global History"
146
+ clawed unit "The Renaissance" -g 9 -s "Global History" -w 3
147
+ clawed full "Westward Expansion" -g 8 -s "US History"
148
+ ```
149
+
150
+ ---
151
+
152
+ ## How It Works
153
+
154
+ ```
155
+ Your curriculum files (PDF, DOCX, PPTX, and 20+ formats)
156
+ |
157
+ v
158
+ Claw-ED learns your teaching style
159
+ - Extracts your voice, structure, vocabulary
160
+ - Maps your pedagogical fingerprint
161
+ - Builds a searchable knowledge base
162
+ |
163
+ v
164
+ You talk naturally
165
+ "Prep my week"
166
+ "Make a quiz on chapter 5"
167
+ "What standards haven't I covered?"
168
+ |
169
+ v
170
+ The agent acts
171
+ - Searches your existing materials first
172
+ - Generates in your voice
173
+ - Exports professional documents
174
+ - Aligns to your state standards
175
+ |
176
+ v
177
+ You teach, give feedback, it improves
178
+ ```
179
+
180
+ ---
181
+
182
+ ## Commands
183
+
184
+ | Command | What it does |
185
+ |---------|-------------|
186
+ | `clawed` | Chat with your agent |
187
+ | `clawed ingest <path>` | Teach it your style from your files |
188
+ | `clawed lesson "Topic" -g 8 -s "Subject"` | Generate a daily lesson plan |
189
+ | `clawed lesson "Topic" --multi-agent` | Multi-agent generation (higher quality) |
190
+ | `clawed unit "Topic" -g 9 -w 3` | Plan a 3-week unit |
191
+ | `clawed full "Topic" -g 10` | Full package: unit + lessons + materials |
192
+ | `clawed materials -l lesson.json` | Generate supporting materials |
193
+ | `clawed assess "Topic" --type dbq` | Generate assessments (DBQ, quiz, rubric) |
194
+ | `clawed differentiate -l lesson.json` | Create IEP/504/ELL modifications |
195
+ | `clawed standards list -g 8 -s "Math"` | Browse state standards |
196
+ | `clawed gap-analyze` | Find curriculum gaps |
197
+ | `clawed train --benchmark -n 5` | Score lesson quality |
198
+ | `clawed bot --token TOKEN` | Connect Telegram bot |
199
+ | `clawed serve` | Web dashboard |
200
+ | `clawed mcp-server` | MCP server (for Claude Code integration) |
201
+ | `clawed demo` | Try it without an API key |
202
+
203
+ ---
204
+
205
+ ## Features
206
+
207
+ ### Voice Learning
208
+
209
+ Claw-ED doesn't use a generic "teacher tone." It extracts your specific patterns from your files:
210
+
211
+ - **Teaching structure:** How you organize lessons (I Do / We Do / You Do, stations, jigsaw, etc.)
212
+ - **Questioning style:** Your progression from recall to analysis to evaluation
213
+ - **Scaffolding moves:** Sentence starters, graphic organizers, writing frames you actually use
214
+ - **Assessment patterns:** Your Do Now format, exit ticket style, essay scaffolds
215
+ - **Classroom personality:** Your humor, your catchphrases, your signature moves
216
+
217
+ ### Standards Alignment
218
+
219
+ Built-in support for all 50 US states:
220
+
221
+ - Common Core (CCSS) — Math and ELA
222
+ - Next Generation Science Standards (NGSS)
223
+ - C3 Framework — Social Studies
224
+ - State-specific frameworks (NY NGLS, TX TEKS, CA CCSS, VA SOL, and more)
225
+ - Automatic gap analysis against your state's standards
226
+
227
+ ### Multi-Agent Generation
228
+
229
+ For higher-quality output, the `--multi-agent` flag activates a three-agent pipeline:
230
+
231
+ 1. **Researcher** — Finds primary sources, historical context, and key arguments
232
+ 2. **Writer** — Drafts the lesson in your voice using your pedagogical fingerprint
233
+ 3. **Reviewer** — Scores voice fidelity, pedagogy, and differentiation. Sends back for revision if quality is below threshold.
234
+
235
+ ### Professional Export
236
+
237
+ - **DOCX** — Print-ready with headers, differentiation callouts, and images
238
+ - **PPTX** — Themed slideshows with section dividers and academic images
239
+ - **PDF** — Clean layout for distribution
240
+ - **Google Docs/Slides** — Direct export via Google Drive integration
241
+
242
+ ### Differentiation
243
+
244
+ Every lesson can be automatically differentiated:
245
+
246
+ - **ELL support:** Simplified vocabulary, sentence frames, visual organizers
247
+ - **IEP modifications:** Chunked tasks, explicit instructions, modified assessments
248
+ - **504 accommodations:** Extended time, preferential seating, scribe access
249
+ - **Gifted extensions:** Deeper inquiry, independent research, cross-topic connections
250
+
251
+ ### Autonomous Operation
252
+
253
+ Claw-ED can work while you sleep:
254
+
255
+ - **Morning prep** — Drafts today's materials before you wake up
256
+ - **Weekly planning** — Assembles next week's lessons on Sunday evening
257
+ - **Continuous improvement** — Ingests new files, refines your persona, measures quality
258
+ - **Telegram bot** — Message it from your phone anytime
259
+
260
+ ---
261
+
262
+ ## Architecture
263
+
264
+ ```
265
+ Teacher (Telegram, CLI, Web, MCP)
266
+ |
267
+ Gateway (feature-flag router)
268
+ |-- Control Plane (deterministic: files, onboarding, export)
269
+ |-- Agent Loop (LLM with 28 typed tools)
270
+ | |
271
+ Tool Registry Workspace
272
+ - generate_lesson - SOUL.md (identity)
273
+ - search_materials - HEARTBEAT.md (schedule)
274
+ - generate_assessment - Memory (3-layer cognitive)
275
+ - curriculum_map |
276
+ - export_document Curriculum KB
277
+ - 23 more tools (semantic search over your files)
278
+ |
279
+ Professional exports (DOCX, PPTX, PDF, Google Docs)
280
+ ```
281
+
282
+ **Key design decisions:**
283
+
284
+ - **Agent-first.** Natural language goes through an LLM that decides which tools to call. No rigid command parsing.
285
+ - **Master Content Track.** One LLM generation produces a unified `MasterContent` object. Teacher view, student packet, and slideshow are compiled mechanically — no redundant AI calls.
286
+ - **Fail-closed quality gates.** Every generation is validated. If quality review crashes, it reports failure instead of silently passing.
287
+ - **Subject-specific skills.** 13 built-in subject skills (Math, Science, History, ELA, Music, Art, PE, CS, Foreign Language, Library, Special Ed, and more) tune the generation for each discipline's pedagogy.
288
+
289
+ ---
290
+
291
+ ## Privacy
292
+
293
+ - **Local-first.** Your files stay on your machine. The knowledge base is a local database.
294
+ - **API keys in OS keychain.** macOS Keychain, Linux Secret Service, Windows Credential Manager.
295
+ - **No telemetry, no data collection, no accounts.**
296
+ - **Your choice of AI provider.** Use free local models (Ollama) for complete privacy, or cloud providers (Claude, GPT, Gemini) for maximum quality.
297
+
298
+ ---
299
+
300
+ ## For Developers
301
+
302
+ ### Contributing
303
+
304
+ ```bash
305
+ git clone https://github.com/SirhanMacx/Claw-ED.git
306
+ cd Claw-ED
307
+ pip install -e ".[dev]"
308
+ pytest tests/
309
+ ```
310
+
311
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines and [ARCHITECTURE.md](docs/ARCHITECTURE.md) for system design.
312
+
313
+ ### MCP Server
314
+
315
+ Claw-ED exposes its tools as an MCP server for integration with Claude Code, VS Code, and other AI-powered editors:
316
+
317
+ ```bash
318
+ clawed mcp-server
319
+ ```
320
+
321
+ ### Custom Tools
322
+
323
+ Define custom tools in `~/.eduagent/tools/` using YAML templates — no code required:
324
+
325
+ ```yaml
326
+ name: bell_ringer
327
+ description: Generate a warm-up question for the start of class
328
+ parameters:
329
+ topic: string
330
+ grade: string
331
+ prompt: |
332
+ Generate a bell ringer question about {topic} for grade {grade}.
333
+ Use a visual stimulus or thought experiment. Never use recall questions.
334
+ ```
335
+
336
+ ### API
337
+
338
+ ```python
339
+ from clawed.lesson import generate_lesson
340
+ from clawed.models import AppConfig
341
+
342
+ config = AppConfig.load()
343
+ lesson = await generate_lesson(
344
+ lesson_number=1,
345
+ unit=unit_plan,
346
+ persona=persona,
347
+ config=config,
348
+ )
349
+ ```
350
+
351
+ ---
352
+
353
+ ## License
354
+
355
+ MIT License. Free for personal and commercial use.
356
+
357
+ Built by educators, for educators.
358
+
359
+ [GitHub](https://github.com/SirhanMacx/Claw-ED) | [PyPI](https://pypi.org/project/clawed/) | [Changelog](CHANGELOG.md)
clawed-2.5.0/README.md ADDED
@@ -0,0 +1,283 @@
1
+ # Claw-ED
2
+
3
+ **Your AI co-teacher. Learns your voice. Generates lessons that sound like you wrote them.**
4
+
5
+ <p align="center">
6
+ <a href="https://pypi.org/project/clawed/"><img src="https://img.shields.io/pypi/v/clawed?color=blue" alt="PyPI version"></a>
7
+ <a href="https://pypi.org/project/clawed/"><img src="https://img.shields.io/pypi/pyversions/clawed" alt="Python versions"></a>
8
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="MIT License"></a>
9
+ <a href="https://github.com/SirhanMacx/Claw-ED/stargazers"><img src="https://img.shields.io/github/stars/SirhanMacx/Claw-ED" alt="GitHub stars"></a>
10
+ <a href="https://pepy.tech/project/clawed"><img src="https://static.pepy.tech/badge/clawed" alt="Downloads"></a>
11
+ </p>
12
+
13
+ ---
14
+
15
+ Claw-ED is an open-source AI teaching assistant that learns your actual teaching style from your curriculum files. Not a generic lesson template generator — a personal agent that captures your voice, your scaffolding patterns, your assessment style, and your classroom personality. It generates complete lesson packages that your colleagues would swear you wrote yourself.
16
+
17
+ ```bash
18
+ pip install clawed
19
+ ```
20
+
21
+ ---
22
+
23
+ ## For Teachers
24
+
25
+ **Feed it your files. Get lessons in your voice.**
26
+
27
+ ```bash
28
+ clawed ingest ~/Documents/Lessons/ # Teach it your style
29
+ clawed lesson "The Missouri Compromise" -g 8 -s "US History" # Generate a lesson
30
+ ```
31
+
32
+ Claw-ED reads your existing lesson plans, handouts, slideshows, and assessments. It extracts your pedagogical fingerprint: how you structure a Do Now, what graphic organizers you use, how you scaffold for ELL and IEP students, your favorite primary source types, your questioning patterns, your signature teaching moves.
33
+
34
+ Then it generates new lessons that match. Not "inspired by" — actually match. Same structure, same voice, same scaffolding, same assessment alignment.
35
+
36
+ **What you get:**
37
+
38
+ - Complete daily lesson plans in your format (DOCX, PPTX, PDF)
39
+ - Unit plans with essential questions and pacing
40
+ - Assessments aligned to your state standards (50 states supported)
41
+ - Differentiated materials for ELL, IEP, and gifted students
42
+ - Homework, rubrics, sub plans, parent communications
43
+ - Gap analysis showing what standards you haven't covered
44
+ - Morning prep that runs before you wake up
45
+
46
+ **What makes it different:**
47
+
48
+ - **Your voice, not generic AI.** Lessons sound like you, not like a chatbot.
49
+ - **Your files stay on your machine.** Local-first architecture. No accounts, no subscriptions, no data collection.
50
+ - **Works with any AI provider.** Claude, GPT, Gemini, Ollama (free local models), or your own fine-tuned model.
51
+ - **Gets better over time.** Rate lessons, give feedback — it learns what you want.
52
+ - **Open source.** MIT license. Free forever.
53
+
54
+ ---
55
+
56
+ ## Quick Start
57
+
58
+ ```bash
59
+ # Install
60
+ pip install clawed
61
+
62
+ # First run — picks your AI provider and creates your workspace
63
+ clawed
64
+
65
+ # Feed it your curriculum files (PDF, DOCX, PPTX, and 20+ formats)
66
+ clawed ingest ~/Documents/Lessons/
67
+
68
+ # Generate
69
+ clawed lesson "Causes of World War I" -g 10 -s "Global History"
70
+ clawed unit "The Renaissance" -g 9 -s "Global History" -w 3
71
+ clawed full "Westward Expansion" -g 8 -s "US History"
72
+ ```
73
+
74
+ ---
75
+
76
+ ## How It Works
77
+
78
+ ```
79
+ Your curriculum files (PDF, DOCX, PPTX, and 20+ formats)
80
+ |
81
+ v
82
+ Claw-ED learns your teaching style
83
+ - Extracts your voice, structure, vocabulary
84
+ - Maps your pedagogical fingerprint
85
+ - Builds a searchable knowledge base
86
+ |
87
+ v
88
+ You talk naturally
89
+ "Prep my week"
90
+ "Make a quiz on chapter 5"
91
+ "What standards haven't I covered?"
92
+ |
93
+ v
94
+ The agent acts
95
+ - Searches your existing materials first
96
+ - Generates in your voice
97
+ - Exports professional documents
98
+ - Aligns to your state standards
99
+ |
100
+ v
101
+ You teach, give feedback, it improves
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Commands
107
+
108
+ | Command | What it does |
109
+ |---------|-------------|
110
+ | `clawed` | Chat with your agent |
111
+ | `clawed ingest <path>` | Teach it your style from your files |
112
+ | `clawed lesson "Topic" -g 8 -s "Subject"` | Generate a daily lesson plan |
113
+ | `clawed lesson "Topic" --multi-agent` | Multi-agent generation (higher quality) |
114
+ | `clawed unit "Topic" -g 9 -w 3` | Plan a 3-week unit |
115
+ | `clawed full "Topic" -g 10` | Full package: unit + lessons + materials |
116
+ | `clawed materials -l lesson.json` | Generate supporting materials |
117
+ | `clawed assess "Topic" --type dbq` | Generate assessments (DBQ, quiz, rubric) |
118
+ | `clawed differentiate -l lesson.json` | Create IEP/504/ELL modifications |
119
+ | `clawed standards list -g 8 -s "Math"` | Browse state standards |
120
+ | `clawed gap-analyze` | Find curriculum gaps |
121
+ | `clawed train --benchmark -n 5` | Score lesson quality |
122
+ | `clawed bot --token TOKEN` | Connect Telegram bot |
123
+ | `clawed serve` | Web dashboard |
124
+ | `clawed mcp-server` | MCP server (for Claude Code integration) |
125
+ | `clawed demo` | Try it without an API key |
126
+
127
+ ---
128
+
129
+ ## Features
130
+
131
+ ### Voice Learning
132
+
133
+ Claw-ED doesn't use a generic "teacher tone." It extracts your specific patterns from your files:
134
+
135
+ - **Teaching structure:** How you organize lessons (I Do / We Do / You Do, stations, jigsaw, etc.)
136
+ - **Questioning style:** Your progression from recall to analysis to evaluation
137
+ - **Scaffolding moves:** Sentence starters, graphic organizers, writing frames you actually use
138
+ - **Assessment patterns:** Your Do Now format, exit ticket style, essay scaffolds
139
+ - **Classroom personality:** Your humor, your catchphrases, your signature moves
140
+
141
+ ### Standards Alignment
142
+
143
+ Built-in support for all 50 US states:
144
+
145
+ - Common Core (CCSS) — Math and ELA
146
+ - Next Generation Science Standards (NGSS)
147
+ - C3 Framework — Social Studies
148
+ - State-specific frameworks (NY NGLS, TX TEKS, CA CCSS, VA SOL, and more)
149
+ - Automatic gap analysis against your state's standards
150
+
151
+ ### Multi-Agent Generation
152
+
153
+ For higher-quality output, the `--multi-agent` flag activates a three-agent pipeline:
154
+
155
+ 1. **Researcher** — Finds primary sources, historical context, and key arguments
156
+ 2. **Writer** — Drafts the lesson in your voice using your pedagogical fingerprint
157
+ 3. **Reviewer** — Scores voice fidelity, pedagogy, and differentiation. Sends back for revision if quality is below threshold.
158
+
159
+ ### Professional Export
160
+
161
+ - **DOCX** — Print-ready with headers, differentiation callouts, and images
162
+ - **PPTX** — Themed slideshows with section dividers and academic images
163
+ - **PDF** — Clean layout for distribution
164
+ - **Google Docs/Slides** — Direct export via Google Drive integration
165
+
166
+ ### Differentiation
167
+
168
+ Every lesson can be automatically differentiated:
169
+
170
+ - **ELL support:** Simplified vocabulary, sentence frames, visual organizers
171
+ - **IEP modifications:** Chunked tasks, explicit instructions, modified assessments
172
+ - **504 accommodations:** Extended time, preferential seating, scribe access
173
+ - **Gifted extensions:** Deeper inquiry, independent research, cross-topic connections
174
+
175
+ ### Autonomous Operation
176
+
177
+ Claw-ED can work while you sleep:
178
+
179
+ - **Morning prep** — Drafts today's materials before you wake up
180
+ - **Weekly planning** — Assembles next week's lessons on Sunday evening
181
+ - **Continuous improvement** — Ingests new files, refines your persona, measures quality
182
+ - **Telegram bot** — Message it from your phone anytime
183
+
184
+ ---
185
+
186
+ ## Architecture
187
+
188
+ ```
189
+ Teacher (Telegram, CLI, Web, MCP)
190
+ |
191
+ Gateway (feature-flag router)
192
+ |-- Control Plane (deterministic: files, onboarding, export)
193
+ |-- Agent Loop (LLM with 28 typed tools)
194
+ | |
195
+ Tool Registry Workspace
196
+ - generate_lesson - SOUL.md (identity)
197
+ - search_materials - HEARTBEAT.md (schedule)
198
+ - generate_assessment - Memory (3-layer cognitive)
199
+ - curriculum_map |
200
+ - export_document Curriculum KB
201
+ - 23 more tools (semantic search over your files)
202
+ |
203
+ Professional exports (DOCX, PPTX, PDF, Google Docs)
204
+ ```
205
+
206
+ **Key design decisions:**
207
+
208
+ - **Agent-first.** Natural language goes through an LLM that decides which tools to call. No rigid command parsing.
209
+ - **Master Content Track.** One LLM generation produces a unified `MasterContent` object. Teacher view, student packet, and slideshow are compiled mechanically — no redundant AI calls.
210
+ - **Fail-closed quality gates.** Every generation is validated. If quality review crashes, it reports failure instead of silently passing.
211
+ - **Subject-specific skills.** 13 built-in subject skills (Math, Science, History, ELA, Music, Art, PE, CS, Foreign Language, Library, Special Ed, and more) tune the generation for each discipline's pedagogy.
212
+
213
+ ---
214
+
215
+ ## Privacy
216
+
217
+ - **Local-first.** Your files stay on your machine. The knowledge base is a local database.
218
+ - **API keys in OS keychain.** macOS Keychain, Linux Secret Service, Windows Credential Manager.
219
+ - **No telemetry, no data collection, no accounts.**
220
+ - **Your choice of AI provider.** Use free local models (Ollama) for complete privacy, or cloud providers (Claude, GPT, Gemini) for maximum quality.
221
+
222
+ ---
223
+
224
+ ## For Developers
225
+
226
+ ### Contributing
227
+
228
+ ```bash
229
+ git clone https://github.com/SirhanMacx/Claw-ED.git
230
+ cd Claw-ED
231
+ pip install -e ".[dev]"
232
+ pytest tests/
233
+ ```
234
+
235
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines and [ARCHITECTURE.md](docs/ARCHITECTURE.md) for system design.
236
+
237
+ ### MCP Server
238
+
239
+ Claw-ED exposes its tools as an MCP server for integration with Claude Code, VS Code, and other AI-powered editors:
240
+
241
+ ```bash
242
+ clawed mcp-server
243
+ ```
244
+
245
+ ### Custom Tools
246
+
247
+ Define custom tools in `~/.eduagent/tools/` using YAML templates — no code required:
248
+
249
+ ```yaml
250
+ name: bell_ringer
251
+ description: Generate a warm-up question for the start of class
252
+ parameters:
253
+ topic: string
254
+ grade: string
255
+ prompt: |
256
+ Generate a bell ringer question about {topic} for grade {grade}.
257
+ Use a visual stimulus or thought experiment. Never use recall questions.
258
+ ```
259
+
260
+ ### API
261
+
262
+ ```python
263
+ from clawed.lesson import generate_lesson
264
+ from clawed.models import AppConfig
265
+
266
+ config = AppConfig.load()
267
+ lesson = await generate_lesson(
268
+ lesson_number=1,
269
+ unit=unit_plan,
270
+ persona=persona,
271
+ config=config,
272
+ )
273
+ ```
274
+
275
+ ---
276
+
277
+ ## License
278
+
279
+ MIT License. Free for personal and commercial use.
280
+
281
+ Built by educators, for educators.
282
+
283
+ [GitHub](https://github.com/SirhanMacx/Claw-ED) | [PyPI](https://pypi.org/project/clawed/) | [Changelog](CHANGELOG.md)
@@ -17,7 +17,7 @@ if hasattr(sys.stderr, "reconfigure"):
17
17
  except Exception:
18
18
  pass
19
19
 
20
- __version__ = "2.4.0"
20
+ __version__ = "2.5.0"
21
21
  __author__ = "Jon Maccarello & Claw-ED contributors"
22
22
  __description__ = "Personal AI teaching agent. Learns your voice, works while you sleep."
23
23
 
@@ -13,6 +13,10 @@ from __future__ import annotations
13
13
 
14
14
  import json
15
15
  import logging
16
+ from typing import Any
17
+
18
+ from clawed.models import AppConfig, LLMProvider
19
+ from clawed.tools import TOOL_DEFINITIONS, execute_tool
16
20
 
17
21
 
18
22
  def _anthropic_headers(api_key: str) -> dict[str, str]:
@@ -26,7 +30,10 @@ def _anthropic_headers(api_key: str) -> dict[str, str]:
26
30
  return {
27
31
  "authorization": f"Bearer {api_key}",
28
32
  "anthropic-version": "2023-06-01",
29
- "anthropic-beta": "interleaved-thinking-2025-05-14,claude-code-20250219,oauth-2025-04-20",
33
+ "anthropic-beta": (
34
+ "interleaved-thinking-2025-05-14,"
35
+ "claude-code-20250219,oauth-2025-04-20"
36
+ ),
30
37
  "user-agent": "claude-cli/1.0.0 (external, cli)",
31
38
  "x-app": "cli",
32
39
  "content-type": "application/json",
@@ -36,10 +43,6 @@ def _anthropic_headers(api_key: str) -> dict[str, str]:
36
43
  "anthropic-version": "2023-06-01",
37
44
  "content-type": "application/json",
38
45
  }
39
- from typing import Any
40
-
41
- from clawed.models import AppConfig, LLMProvider
42
- from clawed.tools import TOOL_DEFINITIONS, execute_tool
43
46
 
44
47
  logger = logging.getLogger(__name__)
45
48