clawed 2.0.0__tar.gz → 2.0.2__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 (228) hide show
  1. {clawed-2.0.0 → clawed-2.0.2}/PKG-INFO +1 -1
  2. {clawed-2.0.0 → clawed-2.0.2}/clawed/__init__.py +1 -1
  3. {clawed-2.0.0 → clawed-2.0.2}/clawed/lesson.py +9 -2
  4. {clawed-2.0.0 → clawed-2.0.2}/clawed/models.py +71 -2
  5. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/lesson_plan.txt +8 -1
  6. clawed-2.0.2/clawed/prompts/persona_extract.txt +134 -0
  7. {clawed-2.0.0 → clawed-2.0.2}/pyproject.toml +1 -1
  8. clawed-2.0.0/clawed/prompts/persona_extract.txt +0 -85
  9. {clawed-2.0.0 → clawed-2.0.2}/.gitignore +0 -0
  10. {clawed-2.0.0 → clawed-2.0.2}/LICENSE +0 -0
  11. {clawed-2.0.0 → clawed-2.0.2}/README.md +0 -0
  12. {clawed-2.0.0 → clawed-2.0.2}/clawed/__main__.py +0 -0
  13. {clawed-2.0.0 → clawed-2.0.2}/clawed/_legacy_gateway.py +0 -0
  14. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent.py +0 -0
  15. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/__init__.py +0 -0
  16. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/approvals.py +0 -0
  17. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/autonomy.py +0 -0
  18. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/context.py +0 -0
  19. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/core.py +0 -0
  20. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/custom_tools.py +0 -0
  21. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/drive/__init__.py +0 -0
  22. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/drive/auth.py +0 -0
  23. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/drive/client.py +0 -0
  24. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/fake_llm.py +0 -0
  25. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/loop.py +0 -0
  26. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/memory/__init__.py +0 -0
  27. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/memory/curriculum.py +0 -0
  28. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/memory/curriculum_kb.py +0 -0
  29. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/memory/embeddings.py +0 -0
  30. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/memory/episodes.py +0 -0
  31. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/memory/identity.py +0 -0
  32. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/memory/loader.py +0 -0
  33. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/memory/preferences.py +0 -0
  34. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/planner.py +0 -0
  35. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/prompt.py +0 -0
  36. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/scheduler.py +0 -0
  37. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/__init__.py +0 -0
  38. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/base.py +0 -0
  39. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/configure_profile.py +0 -0
  40. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/curriculum_map.py +0 -0
  41. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/drive_create_doc.py +0 -0
  42. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/drive_create_slides.py +0 -0
  43. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/drive_list.py +0 -0
  44. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/drive_organize.py +0 -0
  45. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/drive_read.py +0 -0
  46. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/drive_upload.py +0 -0
  47. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/export_document.py +0 -0
  48. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/gap_analysis.py +0 -0
  49. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/generate_assessment.py +0 -0
  50. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/generate_lesson.py +0 -0
  51. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/generate_lesson_bundle.py +0 -0
  52. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/generate_materials.py +0 -0
  53. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/generate_unit.py +0 -0
  54. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/ingest_materials.py +0 -0
  55. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/parent_comm.py +0 -0
  56. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/read_heartbeat.py +0 -0
  57. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/read_workspace.py +0 -0
  58. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/request_approval.py +0 -0
  59. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/schedule_task.py +0 -0
  60. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/search_lessons.py +0 -0
  61. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/search_my_materials.py +0 -0
  62. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/search_standards.py +0 -0
  63. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/student_insights.py +0 -0
  64. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/sub_packet.py +0 -0
  65. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/switch_model.py +0 -0
  66. {clawed-2.0.0 → clawed-2.0.2}/clawed/agent_core/tools/update_soul.py +0 -0
  67. {clawed-2.0.0 → clawed-2.0.2}/clawed/analytics.py +0 -0
  68. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/__init__.py +0 -0
  69. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/deps.py +0 -0
  70. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/__init__.py +0 -0
  71. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/chat.py +0 -0
  72. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/export.py +0 -0
  73. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/feedback.py +0 -0
  74. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/gateway_chat.py +0 -0
  75. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/generate.py +0 -0
  76. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/ingest.py +0 -0
  77. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/lessons.py +0 -0
  78. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/school.py +0 -0
  79. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/settings.py +0 -0
  80. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/routes/tools.py +0 -0
  81. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/server.py +0 -0
  82. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/static/app.js +0 -0
  83. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/static/style.css +0 -0
  84. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/static/widget.js +0 -0
  85. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/analytics.html +0 -0
  86. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/base.html +0 -0
  87. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/dashboard.html +0 -0
  88. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/generate.html +0 -0
  89. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/index.html +0 -0
  90. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/lesson.html +0 -0
  91. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/profile.html +0 -0
  92. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/settings.html +0 -0
  93. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/stats.html +0 -0
  94. {clawed-2.0.0 → clawed-2.0.2}/clawed/api/templates/students.html +0 -0
  95. {clawed-2.0.0 → clawed-2.0.2}/clawed/assessment.py +0 -0
  96. {clawed-2.0.0 → clawed-2.0.2}/clawed/auth/__init__.py +0 -0
  97. {clawed-2.0.0 → clawed-2.0.2}/clawed/auth/google_auth.py +0 -0
  98. {clawed-2.0.0 → clawed-2.0.2}/clawed/bot_state.py +0 -0
  99. {clawed-2.0.0 → clawed-2.0.2}/clawed/chat.py +0 -0
  100. {clawed-2.0.0 → clawed-2.0.2}/clawed/cli.py +0 -0
  101. {clawed-2.0.0 → clawed-2.0.2}/clawed/cli_chat.py +0 -0
  102. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/__init__.py +0 -0
  103. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/_helpers.py +0 -0
  104. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/bot.py +0 -0
  105. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/config.py +0 -0
  106. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/config_llm.py +0 -0
  107. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/config_profile.py +0 -0
  108. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/export.py +0 -0
  109. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/generate.py +0 -0
  110. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/generate_assessment.py +0 -0
  111. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/generate_unit.py +0 -0
  112. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/queue.py +0 -0
  113. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/schedule_cmd.py +0 -0
  114. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/sub.py +0 -0
  115. {clawed-2.0.0 → clawed-2.0.2}/clawed/commands/workspace_cmd.py +0 -0
  116. {clawed-2.0.0 → clawed-2.0.2}/clawed/config.py +0 -0
  117. {clawed-2.0.0 → clawed-2.0.2}/clawed/corpus.py +0 -0
  118. {clawed-2.0.0 → clawed-2.0.2}/clawed/curriculum_map.py +0 -0
  119. {clawed-2.0.0 → clawed-2.0.2}/clawed/database.py +0 -0
  120. {clawed-2.0.0 → clawed-2.0.2}/clawed/demo/__init__.py +0 -0
  121. {clawed-2.0.0 → clawed-2.0.2}/clawed/demo/demo_assessment.json +0 -0
  122. {clawed-2.0.0 → clawed-2.0.2}/clawed/demo/demo_lesson_science_g6.json +0 -0
  123. {clawed-2.0.0 → clawed-2.0.2}/clawed/demo/demo_lesson_social_studies_g8.json +0 -0
  124. {clawed-2.0.0 → clawed-2.0.2}/clawed/demo/demo_unit_plan.json +0 -0
  125. {clawed-2.0.0 → clawed-2.0.2}/clawed/differentiation.py +0 -0
  126. {clawed-2.0.0 → clawed-2.0.2}/clawed/doc_export.py +0 -0
  127. {clawed-2.0.0 → clawed-2.0.2}/clawed/drive.py +0 -0
  128. {clawed-2.0.0 → clawed-2.0.2}/clawed/evaluation.py +0 -0
  129. {clawed-2.0.0 → clawed-2.0.2}/clawed/export_docx.py +0 -0
  130. {clawed-2.0.0 → clawed-2.0.2}/clawed/export_handout.py +0 -0
  131. {clawed-2.0.0 → clawed-2.0.2}/clawed/export_markdown.py +0 -0
  132. {clawed-2.0.0 → clawed-2.0.2}/clawed/export_pdf.py +0 -0
  133. {clawed-2.0.0 → clawed-2.0.2}/clawed/export_pptx.py +0 -0
  134. {clawed-2.0.0 → clawed-2.0.2}/clawed/export_templates.py +0 -0
  135. {clawed-2.0.0 → clawed-2.0.2}/clawed/export_theme.py +0 -0
  136. {clawed-2.0.0 → clawed-2.0.2}/clawed/exporter.py +0 -0
  137. {clawed-2.0.0 → clawed-2.0.2}/clawed/feedback.py +0 -0
  138. {clawed-2.0.0 → clawed-2.0.2}/clawed/formats/__init__.py +0 -0
  139. {clawed-2.0.0 → clawed-2.0.2}/clawed/formats/flipchart.py +0 -0
  140. {clawed-2.0.0 → clawed-2.0.2}/clawed/formats/notebook.py +0 -0
  141. {clawed-2.0.0 → clawed-2.0.2}/clawed/formats/xbk.py +0 -0
  142. {clawed-2.0.0 → clawed-2.0.2}/clawed/gateway.py +0 -0
  143. {clawed-2.0.0 → clawed-2.0.2}/clawed/gateway_response.py +0 -0
  144. {clawed-2.0.0 → clawed-2.0.2}/clawed/generation.py +0 -0
  145. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/__init__.py +0 -0
  146. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/export.py +0 -0
  147. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/feedback.py +0 -0
  148. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/gaps.py +0 -0
  149. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/generate.py +0 -0
  150. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/ingest.py +0 -0
  151. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/misc.py +0 -0
  152. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/onboard.py +0 -0
  153. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/schedule.py +0 -0
  154. {clawed-2.0.0 → clawed-2.0.2}/clawed/handlers/standards.py +0 -0
  155. {clawed-2.0.0 → clawed-2.0.2}/clawed/improver.py +0 -0
  156. {clawed-2.0.0 → clawed-2.0.2}/clawed/ingestor.py +0 -0
  157. {clawed-2.0.0 → clawed-2.0.2}/clawed/io.py +0 -0
  158. {clawed-2.0.0 → clawed-2.0.2}/clawed/llm.py +0 -0
  159. {clawed-2.0.0 → clawed-2.0.2}/clawed/materials.py +0 -0
  160. {clawed-2.0.0 → clawed-2.0.2}/clawed/mcp_server.py +0 -0
  161. {clawed-2.0.0 → clawed-2.0.2}/clawed/memory_engine.py +0 -0
  162. {clawed-2.0.0 → clawed-2.0.2}/clawed/model_router.py +0 -0
  163. {clawed-2.0.0 → clawed-2.0.2}/clawed/onboarding.py +0 -0
  164. {clawed-2.0.0 → clawed-2.0.2}/clawed/openclaw_plugin.py +0 -0
  165. {clawed-2.0.0 → clawed-2.0.2}/clawed/parent_comm.py +0 -0
  166. {clawed-2.0.0 → clawed-2.0.2}/clawed/persona.py +0 -0
  167. {clawed-2.0.0 → clawed-2.0.2}/clawed/planner.py +0 -0
  168. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/504_accommodations.txt +0 -0
  169. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/assessment.txt +0 -0
  170. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/curriculum_gaps.txt +0 -0
  171. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/dbq_assessment.txt +0 -0
  172. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/differentiation.txt +0 -0
  173. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/formative_assessment.txt +0 -0
  174. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/iep_modification.txt +0 -0
  175. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/pacing_guide.txt +0 -0
  176. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/parent_note.txt +0 -0
  177. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/quiz.txt +0 -0
  178. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/rubric.txt +0 -0
  179. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/sub_packet.txt +0 -0
  180. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/summative_assessment.txt +0 -0
  181. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/tiered_assignments.txt +0 -0
  182. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/unit_plan.txt +0 -0
  183. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/worksheet.txt +0 -0
  184. {clawed-2.0.0 → clawed-2.0.2}/clawed/prompts/year_map.txt +0 -0
  185. {clawed-2.0.0 → clawed-2.0.2}/clawed/quality.py +0 -0
  186. {clawed-2.0.0 → clawed-2.0.2}/clawed/reading_report.py +0 -0
  187. {clawed-2.0.0 → clawed-2.0.2}/clawed/router.py +0 -0
  188. {clawed-2.0.0 → clawed-2.0.2}/clawed/sanitize.py +0 -0
  189. {clawed-2.0.0 → clawed-2.0.2}/clawed/scheduler.py +0 -0
  190. {clawed-2.0.0 → clawed-2.0.2}/clawed/school.py +0 -0
  191. {clawed-2.0.0 → clawed-2.0.2}/clawed/search.py +0 -0
  192. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/__init__.py +0 -0
  193. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/art.py +0 -0
  194. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/base.py +0 -0
  195. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/computer_science.py +0 -0
  196. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/ela.py +0 -0
  197. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/foreign_language.py +0 -0
  198. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/history.py +0 -0
  199. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/library.py +0 -0
  200. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/math.py +0 -0
  201. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/music.py +0 -0
  202. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/physical_education.py +0 -0
  203. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/science.py +0 -0
  204. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/social_studies.py +0 -0
  205. {clawed-2.0.0 → clawed-2.0.2}/clawed/skills/special_education.py +0 -0
  206. {clawed-2.0.0 → clawed-2.0.2}/clawed/slide_images.py +0 -0
  207. {clawed-2.0.0 → clawed-2.0.2}/clawed/standards.py +0 -0
  208. {clawed-2.0.0 → clawed-2.0.2}/clawed/state.py +0 -0
  209. {clawed-2.0.0 → clawed-2.0.2}/clawed/state_standards.py +0 -0
  210. {clawed-2.0.0 → clawed-2.0.2}/clawed/student_bot.py +0 -0
  211. {clawed-2.0.0 → clawed-2.0.2}/clawed/student_cli.py +0 -0
  212. {clawed-2.0.0 → clawed-2.0.2}/clawed/student_telegram_bot.py +0 -0
  213. {clawed-2.0.0 → clawed-2.0.2}/clawed/sub_packet.py +0 -0
  214. {clawed-2.0.0 → clawed-2.0.2}/clawed/task_queue.py +0 -0
  215. {clawed-2.0.0 → clawed-2.0.2}/clawed/templates_lib.py +0 -0
  216. {clawed-2.0.0 → clawed-2.0.2}/clawed/tools.py +0 -0
  217. {clawed-2.0.0 → clawed-2.0.2}/clawed/transports/__init__.py +0 -0
  218. {clawed-2.0.0 → clawed-2.0.2}/clawed/transports/cli.py +0 -0
  219. {clawed-2.0.0 → clawed-2.0.2}/clawed/transports/openclaw.py +0 -0
  220. {clawed-2.0.0 → clawed-2.0.2}/clawed/transports/student_telegram.py +0 -0
  221. {clawed-2.0.0 → clawed-2.0.2}/clawed/transports/telegram.py +0 -0
  222. {clawed-2.0.0 → clawed-2.0.2}/clawed/transports/web.py +0 -0
  223. {clawed-2.0.0 → clawed-2.0.2}/clawed/tui.py +0 -0
  224. {clawed-2.0.0 → clawed-2.0.2}/clawed/tui_chat.py +0 -0
  225. {clawed-2.0.0 → clawed-2.0.2}/clawed/voice.py +0 -0
  226. {clawed-2.0.0 → clawed-2.0.2}/clawed/workspace.py +0 -0
  227. {clawed-2.0.0 → clawed-2.0.2}/eduagent/__init__.py +0 -0
  228. {clawed-2.0.0 → clawed-2.0.2}/eduagent/_compat.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clawed
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: Claw-ED — personal AI teaching agent. Learns your voice, works while you sleep.
5
5
  Project-URL: Homepage, https://github.com/SirhanMacx/Claw-ED
6
6
  Project-URL: Documentation, https://github.com/SirhanMacx/Claw-ED#readme
@@ -17,7 +17,7 @@ if hasattr(sys.stderr, "reconfigure"):
17
17
  except Exception:
18
18
  pass
19
19
 
20
- __version__ = "2.0.0"
20
+ __version__ = "2.0.2"
21
21
  __author__ = "Jon Maccarello & Claw-ED contributors"
22
22
  __description__ = "Personal AI teaching agent. Learns your voice, works while you sleep."
23
23
 
@@ -111,8 +111,15 @@ async def generate_lesson(
111
111
  pass
112
112
 
113
113
  system_parts = [
114
- "You are an expert lesson plan writer who EXACTLY matches "
115
- "the teacher's voice, style, and patterns.",
114
+ "You are an expert lesson plan writer who EXACTLY replicates "
115
+ "this teacher's pedagogical fingerprint in EVERY lesson. "
116
+ "This means: use their specific graphic organizers (INSPECT charts, T-charts, etc.), "
117
+ "their activity structures (jigsaw, pair role division, desk islands), "
118
+ "their Do Now format (multi-part visual analysis), their scaffolding moves "
119
+ "(writing frames, sentence starters, pre-taught vocabulary with icons), "
120
+ "and their signature teaching moves. If the persona says they use INSPECT charts, "
121
+ "the lesson MUST include an INSPECT chart. If they cold-call students, script cold calls. "
122
+ "If they say 'what is this source NOT telling us,' include that exact prompt.",
116
123
  ]
117
124
  if persona_context:
118
125
  system_parts.append(persona_context)
@@ -167,6 +167,40 @@ class TeacherPersona(BaseModel):
167
167
  voice_sample: str = ""
168
168
  voice_examples: list[str] = Field(default_factory=list)
169
169
 
170
+ # ── Pedagogical fingerprint (v2.0) ────────────────────────────────
171
+ # These fields capture HOW a teacher teaches, not just how they sound.
172
+ source_types: list[str] = Field(default_factory=list)
173
+ """Types of primary sources this teacher uses (e.g. 'political speeches',
174
+ 'historical maps', 'data tables', 'poetry excerpts', 'court documents')."""
175
+
176
+ activity_patterns: list[str] = Field(default_factory=list)
177
+ """Detailed descriptions of recurring activity structures, e.g.
178
+ 'Uses jigsaw with 4-person expert groups rotating every 10 minutes',
179
+ 'Do Nows are always analogy-based scenarios, never recall questions'."""
180
+
181
+ scaffolding_moves: list[str] = Field(default_factory=list)
182
+ """How this teacher scaffolds for access, e.g. 'Always provides writing
183
+ frames with sentence starters', 'Uses T-charts before open-ended analysis',
184
+ 'Pre-teaches 3 vocabulary words with visual icons'."""
185
+
186
+ grouping_preferences: str = ""
187
+ """How students are typically grouped (e.g. 'pairs for turn-and-talk,
188
+ table groups of 4 for document analysis, whole class for Socratic seminar')."""
189
+
190
+ do_now_style: str = ""
191
+ """Pattern for warm-ups/do-nows (e.g. 'analogy or scenario that previews the
192
+ lesson concept without naming it — never a content recall question')."""
193
+
194
+ exit_ticket_style: str = ""
195
+ """Pattern for exit tickets (e.g. 'always 3 questions progressing
196
+ recall → application → analysis, written on half-sheets')."""
197
+
198
+ signature_moves: list[str] = Field(default_factory=list)
199
+ """Distinctive teaching moves unique to this teacher, e.g.
200
+ 'Reads primary sources aloud with dramatic emphasis before analysis',
201
+ 'Always ends DI with "here is where it gets interesting"',
202
+ 'Uses physical movement — students walk to corners for opinion spectrums'."""
203
+
170
204
  def to_prompt_context(self) -> str:
171
205
  """Serialize persona into a string for LLM prompt injection."""
172
206
  lines = [
@@ -183,6 +217,39 @@ class TeacherPersona(BaseModel):
183
217
  f"- Grade Levels: {', '.join(self.grade_levels) or 'Not specified'}",
184
218
  f"- Voice Sample: {self.voice_sample[:2000] if self.voice_sample else 'None'}",
185
219
  ]
220
+
221
+ # Pedagogical fingerprint — how this teacher actually teaches
222
+ if self.source_types:
223
+ lines.append("\n=== Source Types This Teacher Uses ===")
224
+ for src in self.source_types:
225
+ lines.append(f"- {src}")
226
+ lines.append("Use these TYPES of sources in generated lessons.")
227
+
228
+ if self.activity_patterns:
229
+ lines.append("\n=== Activity Patterns (replicate these structures) ===")
230
+ for pat in self.activity_patterns:
231
+ lines.append(f"- {pat}")
232
+
233
+ if self.scaffolding_moves:
234
+ lines.append("\n=== Scaffolding Moves ===")
235
+ for move in self.scaffolding_moves:
236
+ lines.append(f"- {move}")
237
+
238
+ if self.do_now_style:
239
+ lines.append(f"\n=== Do Now Style ===\n{self.do_now_style}")
240
+ lines.append("Generate Do Nows that follow this pattern.")
241
+
242
+ if self.exit_ticket_style:
243
+ lines.append(f"\n=== Exit Ticket Style ===\n{self.exit_ticket_style}")
244
+
245
+ if self.grouping_preferences:
246
+ lines.append(f"\n=== Grouping ===\n{self.grouping_preferences}")
247
+
248
+ if self.signature_moves:
249
+ lines.append("\n=== Signature Teaching Moves (MUST include) ===")
250
+ for move in self.signature_moves:
251
+ lines.append(f"- {move}")
252
+
186
253
  if self.voice_examples:
187
254
  lines.append("")
188
255
  lines.append("=== Voice Examples (write like this) ===")
@@ -190,8 +257,10 @@ class TeacherPersona(BaseModel):
190
257
  lines.append(f'Example {i}: "{example}"')
191
258
  lines.append("")
192
259
  lines.append(
193
- "Your writing MUST match the voice and style shown in the Voice Examples above. "
194
- "Use the same vocabulary, sentence structure, and tone."
260
+ "Your writing MUST match the voice, style, lesson structure, "
261
+ "and activity choices shown above. "
262
+ "Use the same vocabulary, sentence structure, source types, "
263
+ "scaffolding patterns, and activity formats."
195
264
  )
196
265
  return "\n".join(lines) + "\n"
197
266
 
@@ -1,4 +1,11 @@
1
- You are an expert lesson plan writer. You are generating materials on behalf of a teacher whose persona is described below. ALL output must sound like this teacher wrote it — match their voice, tone, vocabulary, and instructional preferences exactly.
1
+ You are an expert lesson plan writer. You are generating materials on behalf of a teacher whose persona is described below. ALL output must match this teacher's pedagogical fingerprint:
2
+ - Use their SOURCE TYPES (if they use primary source documents, use primary source documents — not worksheets)
3
+ - Use their ACTIVITY PATTERNS (if they run jigsaws, run a jigsaw — not generic group work)
4
+ - Use their SCAFFOLDING MOVES (if they use writing frames and T-charts, include those exact tools)
5
+ - Match their DO NOW STYLE (if they use scenarios/analogies, do that — not recall questions)
6
+ - Match their EXIT TICKET FORMAT
7
+ - Include their SIGNATURE MOVES — the things that make their classroom recognizable
8
+ - Match their voice, tone, vocabulary, and sentence structure
2
9
 
3
10
  ## Teacher Persona
4
11
  {persona}
@@ -0,0 +1,134 @@
1
+ You are an expert educational analyst specializing in teacher pedagogy and instructional design.
2
+
3
+ Your task is to analyze a collection of teaching materials and extract a detailed teacher persona profile. This persona will be used to generate future materials that match this teacher's unique voice, lesson structure, and pedagogical choices.
4
+
5
+ ## Input
6
+ You will receive the text content of multiple teaching documents (lesson plans, worksheets, assessments, slides, notes) created by a single teacher.
7
+
8
+ ## Analysis Instructions
9
+
10
+ Carefully read ALL provided documents and identify:
11
+
12
+ 1. **Teaching Style** — Classify as one of:
13
+ - "socratic" — Heavy use of questioning, dialogue, student discovery
14
+ - "direct_instruction" — Teacher-led, explicit modeling, step-by-step
15
+ - "inquiry_based" — Students investigate, experiment, draw conclusions
16
+ - "project_based" — Extended projects, real-world applications
17
+ - "blended" — Mix of multiple approaches
18
+
19
+ 2. **Vocabulary Level** — Classify as one of:
20
+ - "elementary" — Simple words, short sentences, very accessible
21
+ - "grade_appropriate" — Matches expected reading level for the grade
22
+ - "academic" — Formal, discipline-specific terminology throughout
23
+ - "casual" — Conversational, informal, relatable language
24
+
25
+ 3. **Tone** — Describe in 3-5 words (e.g., "warm and encouraging", "energetic and challenging", "calm and methodical")
26
+
27
+ 4. **Structural Preferences** — List the recurring lesson components you observe. Common ones include:
28
+ - warm-ups / do-nows / bell ringers
29
+ - exit tickets / closing reflections
30
+ - graphic organizers
31
+ - group work / think-pair-share
32
+ - hands-on activities / labs
33
+ - vocabulary walls / word banks
34
+ - anchor charts
35
+ - learning targets posted
36
+
37
+ 5. **Assessment Style** — Classify as one of:
38
+ - "rubric_based" — Uses rubrics for evaluation
39
+ - "point_based" — Traditional point/percentage grading
40
+ - "portfolio" — Collection-based assessment
41
+ - "standards_based" — Proficiency scales tied to standards
42
+
43
+ 6. **Preferred Lesson Format** — Describe the typical lesson flow (e.g., "I Do / We Do / You Do", "Launch / Explore / Discuss", "Hook / Mini-lesson / Workshop / Share")
44
+
45
+ 7. **Favorite Strategies** — List specific instructional strategies that appear repeatedly (e.g., "turn and talk", "gallery walk", "Socratic seminar", "jigsaw", "Cornell notes")
46
+
47
+ 8. **Subject Area** — The primary subject(s) taught
48
+
49
+ 9. **Grade Levels** — The grade level(s) apparent from the materials
50
+
51
+ 10. **Voice Sample** — Copy a 2-3 sentence excerpt from the materials that best represents this teacher's natural writing voice. Choose something that captures their personality.
52
+
53
+ 11. **Voice Examples** — Select 3-5 of the BEST, most voice-representative passages from the input documents. These should be actual direct quotes that demonstrate the teacher's unique writing/speaking style. Pick passages that show:
54
+ - How they address students
55
+ - How they explain concepts
56
+ - How they give instructions
57
+ - Their characteristic phrases or sentence structures
58
+ Each example should be 1-3 sentences, taken verbatim from the documents.
59
+
60
+ 12. **Source Types** — What kinds of primary sources, texts, data, or media does this teacher use? Be specific. Examples: "political speeches and declarations", "historical maps and cartography", "statistical data tables", "poetry and literary excerpts", "court documents and legal texts", "newspaper editorials", "photographs and political cartoons", "scientific lab data". List only types that actually appear in the documents.
61
+
62
+ 13. **Activity Patterns** — Describe 3-5 recurring activity structures you observe in detail. Do NOT just name them — describe HOW this teacher runs them. Examples:
63
+ - "Uses jigsaw with 4-person expert groups, each group gets a different document, 10 minutes to become experts, then regroup to teach each other"
64
+ - "Do Nows are always analogy-based scenarios that preview the lesson concept without naming it — students write 2-3 sentences, then share with a partner"
65
+ - "Direct instruction uses a call-and-response pattern: teacher reads a source aloud, pauses, asks 'what do you notice?', takes 3 responses, then explains"
66
+ - "Independent work always includes a writing frame for struggling learners and an extension question for early finishers"
67
+
68
+ 14. **Scaffolding Moves** — How does this teacher make content accessible? List 3-5 specific moves you observe:
69
+ - What graphic organizers do they use? (T-charts, Venn diagrams, source analysis charts, etc.)
70
+ - Do they provide sentence starters or writing frames?
71
+ - How do they pre-teach vocabulary?
72
+ - Do they chunk readings or use annotation protocols?
73
+
74
+ 15. **Grouping Preferences** — How are students typically organized? (e.g., "pairs for turn-and-talk, table groups of 4 for document analysis, whole class for discussion")
75
+
76
+ 16. **Do Now Style** — Describe the pattern for warm-ups. Is it recall? Analogy? Scenario? Opinion? Connection to prior learning? Be specific about the format.
77
+
78
+ 17. **Exit Ticket Style** — Describe the pattern for exit tickets. How many questions? What cognitive levels? Written or verbal? Format?
79
+
80
+ 18. **Signature Moves** — 2-4 distinctive teaching moves that are unique to this teacher and appear across multiple lessons. These are the things that make their classroom recognizable. Examples:
81
+ - "Always reads primary sources aloud with dramatic emphasis before asking students to analyze"
82
+ - "Uses physical movement — students walk to corners of the room for opinion spectrums"
83
+ - "Every transition includes a 'connection question' that links the previous section to the next"
84
+ - "Ends every class with 'one word — what's the one word you're taking away from today?'"
85
+
86
+ ## Output Format
87
+
88
+ Respond with ONLY a JSON object (no markdown fencing, no explanation):
89
+
90
+ {
91
+ "name": "My Teaching Persona",
92
+ "teaching_style": "direct_instruction",
93
+ "vocabulary_level": "grade_appropriate",
94
+ "tone": "warm and encouraging",
95
+ "structural_preferences": ["warm-ups", "exit tickets", "group work"],
96
+ "assessment_style": "rubric_based",
97
+ "preferred_lesson_format": "I Do / We Do / You Do",
98
+ "favorite_strategies": ["think-pair-share", "Cornell notes"],
99
+ "subject_area": "8th Grade Science",
100
+ "grade_levels": ["8"],
101
+ "voice_sample": "Alright scientists, today we're going to explore something really cool...",
102
+ "voice_examples": [
103
+ "Alright friends, let's dig into this...",
104
+ "Your job today is to become a detective...",
105
+ "Before we move on, turn and tell your partner what you noticed."
106
+ ],
107
+ "source_types": [
108
+ "political speeches and declarations",
109
+ "historical maps",
110
+ "newspaper editorials from the era"
111
+ ],
112
+ "activity_patterns": [
113
+ "Do Nows are scenario-based: students respond to a hypothetical situation that mirrors the historical concept, then reveal the connection after 3 minutes",
114
+ "Document analysis uses a 4-column chart (Source, Claim, Evidence, Bias) completed first in pairs, then shared whole-class",
115
+ "Guided practice is always a jigsaw: expert groups analyze different documents, then regroup to teach each other"
116
+ ],
117
+ "scaffolding_moves": [
118
+ "Provides writing frames with sentence starters for all written responses",
119
+ "Pre-teaches 3 key vocabulary terms with visual icons on the board before the lesson begins",
120
+ "Uses T-charts to organize compare/contrast before open-ended writing"
121
+ ],
122
+ "grouping_preferences": "Pairs for turn-and-talk (30-60 seconds), table groups of 4 for document analysis, whole class for Socratic discussion",
123
+ "do_now_style": "Scenario or analogy that previews the lesson concept without naming it — students write 2-3 sentences independently, then share with a partner before the teacher reveals the connection",
124
+ "exit_ticket_style": "3 questions on a half-sheet: Question 1 is recall/identification, Question 2 is application, Question 3 is analysis or transfer. Always written, always collected at the door.",
125
+ "signature_moves": [
126
+ "Reads primary sources aloud with dramatic emphasis before analysis",
127
+ "Uses 'connection questions' between every section to link ideas",
128
+ "Ends class with 'one word takeaway' — every student says one word as they walk out"
129
+ ]
130
+ }
131
+
132
+ ## Documents to Analyze
133
+
134
+ {documents}
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "clawed"
7
- version = "2.0.0"
7
+ version = "2.0.2"
8
8
  description = "Claw-ED — personal AI teaching agent. Learns your voice, works while you sleep."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,85 +0,0 @@
1
- You are an expert educational analyst specializing in teacher pedagogy and instructional design.
2
-
3
- Your task is to analyze a collection of teaching materials and extract a detailed teacher persona profile. This persona will be used to generate future materials that match this teacher's unique voice and style.
4
-
5
- ## Input
6
- You will receive the text content of multiple teaching documents (lesson plans, worksheets, assessments, slides, notes) created by a single teacher.
7
-
8
- ## Analysis Instructions
9
-
10
- Carefully read ALL provided documents and identify:
11
-
12
- 1. **Teaching Style** — Classify as one of:
13
- - "socratic" — Heavy use of questioning, dialogue, student discovery
14
- - "direct_instruction" — Teacher-led, explicit modeling, step-by-step
15
- - "inquiry_based" — Students investigate, experiment, draw conclusions
16
- - "project_based" — Extended projects, real-world applications
17
- - "blended" — Mix of multiple approaches
18
-
19
- 2. **Vocabulary Level** — Classify as one of:
20
- - "elementary" — Simple words, short sentences, very accessible
21
- - "grade_appropriate" — Matches expected reading level for the grade
22
- - "academic" — Formal, discipline-specific terminology throughout
23
- - "casual" — Conversational, informal, relatable language
24
-
25
- 3. **Tone** — Describe in 3-5 words (e.g., "warm and encouraging", "energetic and challenging", "calm and methodical")
26
-
27
- 4. **Structural Preferences** — List the recurring lesson components you observe. Common ones include:
28
- - warm-ups / do-nows / bell ringers
29
- - exit tickets / closing reflections
30
- - graphic organizers
31
- - group work / think-pair-share
32
- - hands-on activities / labs
33
- - vocabulary walls / word banks
34
- - anchor charts
35
- - learning targets posted
36
-
37
- 5. **Assessment Style** — Classify as one of:
38
- - "rubric_based" — Uses rubrics for evaluation
39
- - "point_based" — Traditional point/percentage grading
40
- - "portfolio" — Collection-based assessment
41
- - "standards_based" — Proficiency scales tied to standards
42
-
43
- 6. **Preferred Lesson Format** — Describe the typical lesson flow (e.g., "I Do / We Do / You Do", "Launch / Explore / Discuss", "Hook / Mini-lesson / Workshop / Share")
44
-
45
- 7. **Favorite Strategies** — List specific instructional strategies that appear repeatedly (e.g., "turn and talk", "gallery walk", "Socratic seminar", "jigsaw", "Cornell notes")
46
-
47
- 8. **Subject Area** — The primary subject(s) taught
48
-
49
- 9. **Grade Levels** — The grade level(s) apparent from the materials
50
-
51
- 10. **Voice Sample** — Copy a 2-3 sentence excerpt from the materials that best represents this teacher's natural writing voice. Choose something that captures their personality.
52
-
53
- 11. **Voice Examples** — Select 3-5 of the BEST, most voice-representative passages from the input documents. These should be actual direct quotes that demonstrate the teacher's unique writing/speaking style. Pick passages that show:
54
- - How they address students
55
- - How they explain concepts
56
- - How they give instructions
57
- - Their characteristic phrases or sentence structures
58
- Each example should be 1-3 sentences, taken verbatim from the documents.
59
-
60
- ## Output Format
61
-
62
- Respond with ONLY a JSON object (no markdown fencing, no explanation):
63
-
64
- {
65
- "name": "My Teaching Persona",
66
- "teaching_style": "direct_instruction",
67
- "vocabulary_level": "grade_appropriate",
68
- "tone": "warm and encouraging",
69
- "structural_preferences": ["warm-ups", "exit tickets", "group work"],
70
- "assessment_style": "rubric_based",
71
- "preferred_lesson_format": "I Do / We Do / You Do",
72
- "favorite_strategies": ["think-pair-share", "Cornell notes"],
73
- "subject_area": "8th Grade Science",
74
- "grade_levels": ["8"],
75
- "voice_sample": "Alright scientists, today we're going to explore something really cool...",
76
- "voice_examples": [
77
- "Alright friends, let's dig into this...",
78
- "Your job today is to become a detective...",
79
- "Before we move on, turn and tell your partner what you noticed."
80
- ]
81
- }
82
-
83
- ## Documents to Analyze
84
-
85
- {documents}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes