clawed 2.0.2__tar.gz → 2.0.4__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.
- {clawed-2.0.2 → clawed-2.0.4}/PKG-INFO +1 -1
- {clawed-2.0.2 → clawed-2.0.4}/clawed/__init__.py +1 -1
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/generate.py +50 -1
- {clawed-2.0.2 → clawed-2.0.4}/pyproject.toml +1 -1
- {clawed-2.0.2 → clawed-2.0.4}/.gitignore +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/LICENSE +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/README.md +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/__main__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/_legacy_gateway.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/approvals.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/autonomy.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/context.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/core.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/custom_tools.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/drive/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/drive/auth.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/drive/client.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/fake_llm.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/loop.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/memory/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/memory/curriculum.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/memory/curriculum_kb.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/memory/embeddings.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/memory/episodes.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/memory/identity.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/memory/loader.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/memory/preferences.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/planner.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/prompt.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/scheduler.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/base.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/configure_profile.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/curriculum_map.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/drive_create_doc.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/drive_create_slides.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/drive_list.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/drive_organize.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/drive_read.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/drive_upload.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/export_document.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/gap_analysis.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/generate_assessment.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/generate_lesson.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/generate_lesson_bundle.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/generate_materials.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/generate_unit.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/ingest_materials.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/parent_comm.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/read_heartbeat.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/read_workspace.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/request_approval.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/schedule_task.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/search_lessons.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/search_my_materials.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/search_standards.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/student_insights.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/sub_packet.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/switch_model.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/agent_core/tools/update_soul.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/analytics.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/deps.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/chat.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/export.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/feedback.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/gateway_chat.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/generate.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/ingest.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/lessons.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/school.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/settings.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/routes/tools.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/server.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/static/app.js +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/static/style.css +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/static/widget.js +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/analytics.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/base.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/dashboard.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/generate.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/index.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/lesson.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/profile.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/settings.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/stats.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/api/templates/students.html +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/assessment.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/auth/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/auth/google_auth.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/bot_state.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/chat.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/cli.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/cli_chat.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/_helpers.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/bot.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/config.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/config_llm.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/config_profile.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/export.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/generate_assessment.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/generate_unit.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/queue.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/schedule_cmd.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/sub.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/commands/workspace_cmd.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/config.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/corpus.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/curriculum_map.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/database.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/demo/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/demo/demo_assessment.json +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/demo/demo_lesson_science_g6.json +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/demo/demo_lesson_social_studies_g8.json +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/demo/demo_unit_plan.json +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/differentiation.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/doc_export.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/drive.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/evaluation.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/export_docx.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/export_handout.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/export_markdown.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/export_pdf.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/export_pptx.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/export_templates.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/export_theme.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/exporter.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/feedback.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/formats/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/formats/flipchart.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/formats/notebook.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/formats/xbk.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/gateway.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/gateway_response.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/generation.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/export.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/feedback.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/gaps.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/generate.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/ingest.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/misc.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/onboard.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/schedule.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/handlers/standards.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/improver.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/ingestor.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/io.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/lesson.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/llm.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/materials.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/mcp_server.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/memory_engine.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/model_router.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/models.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/onboarding.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/openclaw_plugin.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/parent_comm.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/persona.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/planner.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/504_accommodations.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/assessment.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/curriculum_gaps.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/dbq_assessment.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/differentiation.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/formative_assessment.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/iep_modification.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/lesson_plan.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/pacing_guide.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/parent_note.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/persona_extract.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/quiz.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/rubric.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/sub_packet.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/summative_assessment.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/tiered_assignments.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/unit_plan.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/worksheet.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/prompts/year_map.txt +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/quality.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/reading_report.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/router.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/sanitize.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/scheduler.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/school.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/search.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/art.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/base.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/computer_science.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/ela.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/foreign_language.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/history.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/library.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/math.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/music.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/physical_education.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/science.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/social_studies.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/skills/special_education.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/slide_images.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/standards.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/state.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/state_standards.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/student_bot.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/student_cli.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/student_telegram_bot.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/sub_packet.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/task_queue.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/templates_lib.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/tools.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/transports/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/transports/cli.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/transports/openclaw.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/transports/student_telegram.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/transports/telegram.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/transports/web.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/tui.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/tui_chat.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/voice.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/clawed/workspace.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/eduagent/__init__.py +0 -0
- {clawed-2.0.2 → clawed-2.0.4}/eduagent/_compat.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clawed
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.4
|
|
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.
|
|
20
|
+
__version__ = "2.0.4"
|
|
21
21
|
__author__ = "Jon Maccarello & Claw-ED contributors"
|
|
22
22
|
__description__ = "Personal AI teaching agent. Learns your voice, works while you sleep."
|
|
23
23
|
|
|
@@ -131,13 +131,37 @@ def ingest(
|
|
|
131
131
|
progress.update(task, description="Persona extracted!")
|
|
132
132
|
|
|
133
133
|
out = save_persona(persona, _output_dir())
|
|
134
|
+
|
|
135
|
+
# Index documents into curriculum knowledge base for KB search
|
|
136
|
+
try:
|
|
137
|
+
from clawed.agent_core.memory.curriculum_kb import CurriculumKB
|
|
138
|
+
kb = CurriculumKB()
|
|
139
|
+
total_chunks = 0
|
|
140
|
+
for doc in documents:
|
|
141
|
+
doc_type_val = doc.doc_type.value if hasattr(doc.doc_type, "value") else str(doc.doc_type)
|
|
142
|
+
total_chunks += kb.index(
|
|
143
|
+
teacher_id="default",
|
|
144
|
+
doc_title=doc.title,
|
|
145
|
+
source_path=doc.source_path or "",
|
|
146
|
+
full_text=doc.content,
|
|
147
|
+
metadata={"doc_type": doc_type_val},
|
|
148
|
+
)
|
|
149
|
+
stats = kb.stats("default")
|
|
150
|
+
kb_msg = (
|
|
151
|
+
f"[bold]Knowledge base:[/bold] {stats['doc_count']} documents, "
|
|
152
|
+
f"{stats['chunk_count']} searchable sections"
|
|
153
|
+
)
|
|
154
|
+
except Exception:
|
|
155
|
+
kb_msg = ""
|
|
156
|
+
|
|
134
157
|
console.print(
|
|
135
158
|
Panel(
|
|
136
159
|
f"[green]Persona saved to {out}[/green]\n\n"
|
|
137
160
|
f"[bold]Style:[/bold] {persona.teaching_style.value.replace('_', ' ').title()}\n"
|
|
138
161
|
f"[bold]Tone:[/bold] {persona.tone}\n"
|
|
139
162
|
f"[bold]Subject:[/bold] {persona.subject_area}\n"
|
|
140
|
-
f"[bold]Format:[/bold] {persona.preferred_lesson_format}"
|
|
163
|
+
f"[bold]Format:[/bold] {persona.preferred_lesson_format}"
|
|
164
|
+
+ (f"\n{kb_msg}" if kb_msg else ""),
|
|
141
165
|
title="Teacher Persona",
|
|
142
166
|
)
|
|
143
167
|
)
|
|
@@ -246,6 +270,30 @@ def lesson(
|
|
|
246
270
|
)
|
|
247
271
|
lesson_num = 1
|
|
248
272
|
|
|
273
|
+
# ── Search curriculum KB for teacher's existing materials ──────
|
|
274
|
+
kb_prompt_section = ""
|
|
275
|
+
try:
|
|
276
|
+
from clawed.agent_core.memory.curriculum_kb import CurriculumKB
|
|
277
|
+
kb = CurriculumKB()
|
|
278
|
+
kb_results = kb.search("default", topic, top_k=3)
|
|
279
|
+
if kb_results:
|
|
280
|
+
kb_parts = [r for r in kb_results if r.get("similarity", 0) > 0.1]
|
|
281
|
+
if kb_parts:
|
|
282
|
+
kb_prompt_section = (
|
|
283
|
+
"Teacher's Existing Materials on This Topic\n"
|
|
284
|
+
"The teacher has created content on this topic before. "
|
|
285
|
+
"Reference and build on their existing work:\n\n"
|
|
286
|
+
+ "\n\n".join(
|
|
287
|
+
f"From \"{r['doc_title']}\":\n{r['chunk_text'][:500]}"
|
|
288
|
+
for r in kb_parts
|
|
289
|
+
)
|
|
290
|
+
+ "\n\nUse these materials as a foundation. Reference the teacher's existing "
|
|
291
|
+
"lessons, reuse their graphic organizer formats, build on their approach."
|
|
292
|
+
)
|
|
293
|
+
console.print(f"[dim]Found {len(kb_parts)} existing materials on this topic[/dim]")
|
|
294
|
+
except Exception:
|
|
295
|
+
pass
|
|
296
|
+
|
|
249
297
|
with _safe_progress(console=console) as progress:
|
|
250
298
|
task = progress.add_task(
|
|
251
299
|
f"Generating lesson {lesson_num}...", total=None
|
|
@@ -256,6 +304,7 @@ def lesson(
|
|
|
256
304
|
unit=unit_plan,
|
|
257
305
|
persona=persona,
|
|
258
306
|
include_homework=homework,
|
|
307
|
+
teacher_materials=kb_prompt_section,
|
|
259
308
|
)
|
|
260
309
|
)
|
|
261
310
|
progress.update(task, description="Lesson plan complete!")
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|