shellbrain 0.1.33__tar.gz → 0.1.35__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.
- {shellbrain-0.1.33 → shellbrain-0.1.35}/PKG-INFO +1 -1
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/episodes/knowledge_building.py +25 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/knowledge_builder.py +6 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +60 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +1 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/build_context/execute.py +1 -1
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/knowledge_builder.py +14 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +26 -1
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/process/episode_sync/poller.py +18 -7
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/settings/internal-agents/defaults.yaml +1 -1
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/knowledge_builder.py +2 -0
- shellbrain-0.1.35/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +29 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/pyproject.toml +1 -1
- {shellbrain-0.1.33 → shellbrain-0.1.35}/shellbrain.egg-info/PKG-INFO +1 -1
- {shellbrain-0.1.33 → shellbrain-0.1.35}/shellbrain.egg-info/SOURCES.txt +1 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/README.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/__main__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/admin_errors.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/associations.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/backups.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/concepts.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/episodes.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/evidence.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/facts.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/guidance.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/identity.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/ids.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/inner_agents.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/knowledge_builder.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/machine_config.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/memories.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/runtime_context.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/scenarios.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/session_state.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/settings.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/entities/utility.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/errors.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/concepts/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/concepts/relation_rules.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/concepts/search_text.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/episodes/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/episodes/event_content.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/memories/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/memories/add_plan.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/memories/link_rules.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/memories/update_plan.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/retrieval/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/retrieval/bm25.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/retrieval/context_pack.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/retrieval/expansion.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/retrieval/fusion_rrf.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/retrieval/lexical_query.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/policies/retrieval/scoring.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/concept_repositories.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/episode_repositories.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/guidance.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/memory_repositories.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/problem_runs.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/retrieval_repositories.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/db/unit_of_work.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/embeddings/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/embeddings/provider.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/embeddings/retrieval.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/host_apps/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/host_apps/inner_agents.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/local_state/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/local_state/session_state_store.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/reporting/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/reporting/metrics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/system/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/system/clock.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/ports/system/idgen.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/create_backup.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/initialize_runtime.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/restore_backup.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/verify_backup.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/build_guidance.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/add/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/add/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/add/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/add/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/containment_checks.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/embeddings.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/reference_checks.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/show/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/show/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/show/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/show/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/update/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/update/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/update/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/update/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/concepts/views.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/events/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/events/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/add/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/add/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/add/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/add/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/effect_plan.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/reference_checks.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/update/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/update/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/update/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/memories/update/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/metrics/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/metrics/build_snapshot.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/metrics/generate_dashboard.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/plan_execution.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/context_pack_pipeline.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/deterministic_graph_recall.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/expansion.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/read/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/read/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/read/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/read/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/read_concepts.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/recall/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/recall/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/recall/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/recall/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/scenarios/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/scenarios/record/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/scenarios/record/execute.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/scenarios/record/request.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/scenarios/record/result.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/error_responses.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/dependencies.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/human/admin.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/human/admin_dependencies.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/human/init.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/human/metrics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/human/upgrade.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/session_state.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/main.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/operation_command.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/parser/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/parser/builder.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/presenters/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/presenters/init.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/presenters/json.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/presenters/metrics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/memories.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/request_parsing/teach.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/runner.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/cli/runtime.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/host_hooks/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/jobs/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/entrypoints/jobs/episode_sync.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/app_role_safety.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/backups/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/backups/restore.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/connection.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/instance_guard.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/migrations.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/privileges.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/admin/storage_setup.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/engine.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/associations.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/concepts.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/episodes.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/evidence.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/experiences.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/memories.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/metadata.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/registry.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/utility.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/views.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/queries/metrics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/queries/metrics_adapter.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/session.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/uow.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/embeddings/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/embeddings/local_provider.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/embeddings/prewarm.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/embeddings/query_vector_search.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/claude.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/codex.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/cursor.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/inspection.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/paths.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/service.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/assets/types.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/identity/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/identity/resolver.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/inner_agents/prompt.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/local_state/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/local_state/init_lock.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/local_state/machine_config_store.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/local_state/operation_registration.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/local_state/paths.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/local_state/repo_registration_store.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/local_state/session_state_file_store.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/process/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/process/episode_sync/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/process/episode_sync/autostart.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/process/episode_sync/launcher.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/process/episode_sync/status_store.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/reporting/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/reporting/metrics/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/reporting/metrics/artifacts.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/reporting/metrics/browser.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/reporting/metrics/pager.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/reporting/metrics/render_html.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/system/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/system/clock.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/system/id_generator.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/system/package_upgrade.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/operation_invocations.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/operation_polling.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/read_records.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/recall_records.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/recorder.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/records.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/sink.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/storage_protocols.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/sync_records.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/telemetry/write_records.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/settings/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/settings/defaults/create_policy.yaml +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/settings/defaults/read_policy.yaml +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/settings/defaults/runtime.yaml +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/settings/defaults/thresholds.yaml +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/settings/defaults/update_policy.yaml +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/admin.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/admin_db.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/admin_dependencies.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/admin_diagnose.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/analytics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/backup.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/cli.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/cli_runtime.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/config.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/create_policy.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/db.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/dsn_resolution.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/embeddings.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/episode_poller.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/episode_sync_launcher.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/host_hooks.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/internal_agent_config.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/internal_agents.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/metrics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/migrations.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/model_usage_backfill.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/operation_dependencies.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/read_policy.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/repo_context.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/repos.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/retrieval.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/runtime_admin.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/runtime_context.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/settings.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/thresholds.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/update_policy.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/app/startup/use_cases.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/env.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260226_0001_initial_schema.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260422_0015_problem_runs.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260515_0019_scenario_records.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/migrations/versions/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/__init__.py +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/claude/CLAUDE.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/AGENTS.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain/references/request-shapes.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/setup.cfg +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/shellbrain.egg-info/dependency_links.txt +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/shellbrain.egg-info/entry_points.txt +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/shellbrain.egg-info/requires.txt +0 -0
- {shellbrain-0.1.33 → shellbrain-0.1.35}/shellbrain.egg-info/top_level.txt +0 -0
|
@@ -16,6 +16,7 @@ class KnowledgeBuildPlan:
|
|
|
16
16
|
|
|
17
17
|
episode_id: str
|
|
18
18
|
trigger: KnowledgeBuildTrigger
|
|
19
|
+
baseline_only: bool = False
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
def plan_stable_watermark_builds(
|
|
@@ -23,12 +24,18 @@ def plan_stable_watermark_builds(
|
|
|
23
24
|
snapshots: Iterable[EpisodeBuildSnapshot],
|
|
24
25
|
now: datetime,
|
|
25
26
|
idle_stable_seconds: int,
|
|
27
|
+
lifecycle_activated_at: datetime | None = None,
|
|
26
28
|
) -> tuple[KnowledgeBuildPlan, ...]:
|
|
27
29
|
"""Return build plans for closed or idle-stable episodes with new events."""
|
|
28
30
|
|
|
29
31
|
if idle_stable_seconds < 0:
|
|
30
32
|
raise ValueError("idle_stable_seconds must be non-negative")
|
|
31
33
|
stable_before = now - timedelta(seconds=idle_stable_seconds)
|
|
34
|
+
legacy_baseline_before = (
|
|
35
|
+
None
|
|
36
|
+
if lifecycle_activated_at is None
|
|
37
|
+
else lifecycle_activated_at - timedelta(seconds=idle_stable_seconds)
|
|
38
|
+
)
|
|
32
39
|
plans: list[KnowledgeBuildPlan] = []
|
|
33
40
|
seen: set[str] = set()
|
|
34
41
|
for snapshot in snapshots:
|
|
@@ -46,6 +53,10 @@ def plan_stable_watermark_builds(
|
|
|
46
53
|
KnowledgeBuildPlan(
|
|
47
54
|
episode_id=snapshot.episode_id,
|
|
48
55
|
trigger=KnowledgeBuildTrigger.WATERMARK_STABLE,
|
|
56
|
+
baseline_only=_should_baseline_legacy_first_build(
|
|
57
|
+
snapshot=snapshot,
|
|
58
|
+
legacy_baseline_before=legacy_baseline_before,
|
|
59
|
+
),
|
|
49
60
|
)
|
|
50
61
|
)
|
|
51
62
|
return tuple(plans)
|
|
@@ -69,3 +80,17 @@ def _is_stable_build_candidate(
|
|
|
69
80
|
if snapshot.status is not EpisodeStatus.ACTIVE:
|
|
70
81
|
return False
|
|
71
82
|
return snapshot.latest_event_at <= stable_before
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def _should_baseline_legacy_first_build(
|
|
86
|
+
*,
|
|
87
|
+
snapshot: EpisodeBuildSnapshot,
|
|
88
|
+
legacy_baseline_before: datetime | None,
|
|
89
|
+
) -> bool:
|
|
90
|
+
"""Return whether an old first-build episode should be watermarked only."""
|
|
91
|
+
|
|
92
|
+
if legacy_baseline_before is None:
|
|
93
|
+
return False
|
|
94
|
+
if snapshot.latest_successful_build_watermark is not None:
|
|
95
|
+
return False
|
|
96
|
+
return snapshot.latest_event_at <= legacy_baseline_before
|
|
@@ -24,6 +24,12 @@ class IKnowledgeBuildRunsRepo(ABC):
|
|
|
24
24
|
) -> int | None:
|
|
25
25
|
"""Return the newest successfully processed event watermark."""
|
|
26
26
|
|
|
27
|
+
@abstractmethod
|
|
28
|
+
def ensure_lifecycle_activation_started_at(
|
|
29
|
+
self, *, repo_id: str, activated_at: datetime
|
|
30
|
+
) -> datetime:
|
|
31
|
+
"""Return the repo lifecycle-builder activation time, creating it if absent."""
|
|
32
|
+
|
|
27
33
|
@abstractmethod
|
|
28
34
|
def list_running_runs(
|
|
29
35
|
self, *, repo_id: str, episode_id: str
|
|
@@ -116,6 +116,16 @@ def execute_build_knowledge(
|
|
|
116
116
|
finished_at=now,
|
|
117
117
|
)
|
|
118
118
|
|
|
119
|
+
if request.baseline_only and previous_watermark is None:
|
|
120
|
+
return _record_baseline_run(
|
|
121
|
+
request=request,
|
|
122
|
+
settings=settings,
|
|
123
|
+
uow=uow,
|
|
124
|
+
id_generator=id_generator,
|
|
125
|
+
event_watermark=event_watermark,
|
|
126
|
+
now=now,
|
|
127
|
+
)
|
|
128
|
+
|
|
119
129
|
run_id = id_generator.new_id()
|
|
120
130
|
uow.knowledge_build_runs.add(
|
|
121
131
|
KnowledgeBuildRun(
|
|
@@ -261,6 +271,56 @@ def _fresh_running_run(
|
|
|
261
271
|
return None
|
|
262
272
|
|
|
263
273
|
|
|
274
|
+
def _record_baseline_run(
|
|
275
|
+
*,
|
|
276
|
+
request: BuildKnowledgeRequest,
|
|
277
|
+
settings: BuildKnowledgeSettings,
|
|
278
|
+
uow: IUnitOfWork,
|
|
279
|
+
id_generator: IIdGenerator,
|
|
280
|
+
event_watermark: int,
|
|
281
|
+
now: datetime,
|
|
282
|
+
) -> BuildKnowledgeResult:
|
|
283
|
+
"""Persist a no-provider watermark for history that predates lifecycle builds."""
|
|
284
|
+
|
|
285
|
+
run_id = id_generator.new_id()
|
|
286
|
+
run_summary = (
|
|
287
|
+
"Baselined legacy episode without invoking build_knowledge; "
|
|
288
|
+
"future events after this watermark remain eligible."
|
|
289
|
+
)
|
|
290
|
+
uow.knowledge_build_runs.add(
|
|
291
|
+
KnowledgeBuildRun(
|
|
292
|
+
id=run_id,
|
|
293
|
+
repo_id=request.repo_id,
|
|
294
|
+
episode_id=request.episode_id,
|
|
295
|
+
trigger=request.trigger,
|
|
296
|
+
status=KnowledgeBuildRunStatus.SKIPPED,
|
|
297
|
+
event_watermark=event_watermark,
|
|
298
|
+
previous_event_watermark=None,
|
|
299
|
+
provider=settings.provider,
|
|
300
|
+
model=settings.model,
|
|
301
|
+
reasoning=settings.reasoning,
|
|
302
|
+
run_summary=run_summary,
|
|
303
|
+
error_code="legacy_episode_baselined",
|
|
304
|
+
started_at=now,
|
|
305
|
+
finished_at=now,
|
|
306
|
+
created_at=now,
|
|
307
|
+
)
|
|
308
|
+
)
|
|
309
|
+
return BuildKnowledgeResult(
|
|
310
|
+
status=KnowledgeBuildRunStatus.SKIPPED,
|
|
311
|
+
run_id=run_id,
|
|
312
|
+
event_watermark=event_watermark,
|
|
313
|
+
previous_event_watermark=None,
|
|
314
|
+
provider=settings.provider,
|
|
315
|
+
model=settings.model,
|
|
316
|
+
reasoning=settings.reasoning,
|
|
317
|
+
write_count=0,
|
|
318
|
+
skipped_item_count=0,
|
|
319
|
+
run_summary=run_summary,
|
|
320
|
+
error_code="legacy_episode_baselined",
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
|
|
264
324
|
def _skipped_result(
|
|
265
325
|
*,
|
|
266
326
|
settings: BuildKnowledgeSettings,
|
|
@@ -18,6 +18,7 @@ class BuildKnowledgeRequest(_StrictModel):
|
|
|
18
18
|
repo_root: str = Field(min_length=1)
|
|
19
19
|
episode_id: str = Field(min_length=1)
|
|
20
20
|
trigger: KnowledgeBuildTrigger
|
|
21
|
+
baseline_only: bool = False
|
|
21
22
|
|
|
22
23
|
@field_validator("repo_id", "repo_root", "episode_id")
|
|
23
24
|
@classmethod
|
{shellbrain-0.1.33 → shellbrain-0.1.35}/app/infrastructure/db/runtime/models/knowledge_builder.py
RENAMED
|
@@ -118,6 +118,20 @@ knowledge_build_runs = Table(
|
|
|
118
118
|
),
|
|
119
119
|
)
|
|
120
120
|
|
|
121
|
+
|
|
122
|
+
knowledge_build_lifecycle = Table(
|
|
123
|
+
"knowledge_build_lifecycle",
|
|
124
|
+
metadata,
|
|
125
|
+
Column("repo_id", String, primary_key=True),
|
|
126
|
+
Column("activated_at", TIMESTAMP(timezone=True), nullable=False),
|
|
127
|
+
Column(
|
|
128
|
+
"created_at",
|
|
129
|
+
TIMESTAMP(timezone=True),
|
|
130
|
+
nullable=False,
|
|
131
|
+
server_default=text("NOW()"),
|
|
132
|
+
),
|
|
133
|
+
)
|
|
134
|
+
|
|
121
135
|
Index(
|
|
122
136
|
"idx_knowledge_build_runs_episode_status_created_at",
|
|
123
137
|
knowledge_build_runs.c.repo_id,
|
|
@@ -5,6 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
from datetime import datetime, timezone
|
|
6
6
|
|
|
7
7
|
from sqlalchemy import desc, select, text, update
|
|
8
|
+
from sqlalchemy.dialects.postgresql import insert
|
|
8
9
|
|
|
9
10
|
from app.core.entities.knowledge_builder import (
|
|
10
11
|
KnowledgeBuildRun,
|
|
@@ -12,7 +13,10 @@ from app.core.entities.knowledge_builder import (
|
|
|
12
13
|
KnowledgeBuildTrigger,
|
|
13
14
|
)
|
|
14
15
|
from app.core.ports.db.knowledge_builder import IKnowledgeBuildRunsRepo
|
|
15
|
-
from app.infrastructure.db.runtime.models.knowledge_builder import
|
|
16
|
+
from app.infrastructure.db.runtime.models.knowledge_builder import (
|
|
17
|
+
knowledge_build_lifecycle,
|
|
18
|
+
knowledge_build_runs,
|
|
19
|
+
)
|
|
16
20
|
|
|
17
21
|
|
|
18
22
|
class KnowledgeBuildRunsRepo(IKnowledgeBuildRunsRepo):
|
|
@@ -67,6 +71,27 @@ class KnowledgeBuildRunsRepo(IKnowledgeBuildRunsRepo):
|
|
|
67
71
|
)
|
|
68
72
|
return None if row is None else int(row)
|
|
69
73
|
|
|
74
|
+
def ensure_lifecycle_activation_started_at(
|
|
75
|
+
self, *, repo_id: str, activated_at: datetime
|
|
76
|
+
) -> datetime:
|
|
77
|
+
"""Return the repo lifecycle-builder activation time, creating it if absent."""
|
|
78
|
+
|
|
79
|
+
self._session.execute(
|
|
80
|
+
insert(knowledge_build_lifecycle)
|
|
81
|
+
.values(
|
|
82
|
+
repo_id=repo_id,
|
|
83
|
+
activated_at=activated_at,
|
|
84
|
+
created_at=activated_at,
|
|
85
|
+
)
|
|
86
|
+
.on_conflict_do_nothing(index_elements=[knowledge_build_lifecycle.c.repo_id])
|
|
87
|
+
)
|
|
88
|
+
value = self._session.execute(
|
|
89
|
+
select(knowledge_build_lifecycle.c.activated_at).where(
|
|
90
|
+
knowledge_build_lifecycle.c.repo_id == repo_id
|
|
91
|
+
)
|
|
92
|
+
).scalar_one()
|
|
93
|
+
return value
|
|
94
|
+
|
|
70
95
|
def list_running_runs(
|
|
71
96
|
self, *, repo_id: str, episode_id: str
|
|
72
97
|
) -> tuple[KnowledgeBuildRun, ...]:
|
|
@@ -272,14 +272,22 @@ def _run_stable_builds_best_effort(
|
|
|
272
272
|
return
|
|
273
273
|
try:
|
|
274
274
|
with uow_factory() as uow:
|
|
275
|
+
now = _utc_now()
|
|
276
|
+
lifecycle_activated_at = (
|
|
277
|
+
uow.knowledge_build_runs.ensure_lifecycle_activation_started_at(
|
|
278
|
+
repo_id=repo_id,
|
|
279
|
+
activated_at=now,
|
|
280
|
+
)
|
|
281
|
+
)
|
|
275
282
|
snapshots = tuple(uow.episodes.list_build_snapshots(repo_id=repo_id))
|
|
276
283
|
except Exception:
|
|
277
284
|
return
|
|
278
285
|
|
|
279
286
|
for plan in plan_stable_watermark_builds(
|
|
280
287
|
snapshots=snapshots,
|
|
281
|
-
now=
|
|
288
|
+
now=now,
|
|
282
289
|
idle_stable_seconds=idle_stable_seconds,
|
|
290
|
+
lifecycle_activated_at=lifecycle_activated_at,
|
|
283
291
|
):
|
|
284
292
|
_run_build_knowledge_plan_best_effort(
|
|
285
293
|
run_build_knowledge=run_build_knowledge,
|
|
@@ -301,12 +309,15 @@ def _run_build_knowledge_plan_best_effort(
|
|
|
301
309
|
if run_build_knowledge is None or plan is None:
|
|
302
310
|
return
|
|
303
311
|
try:
|
|
304
|
-
|
|
305
|
-
repo_id
|
|
306
|
-
repo_root
|
|
307
|
-
episode_id
|
|
308
|
-
trigger
|
|
309
|
-
|
|
312
|
+
kwargs = {
|
|
313
|
+
"repo_id": repo_id,
|
|
314
|
+
"repo_root": repo_root,
|
|
315
|
+
"episode_id": plan.episode_id,
|
|
316
|
+
"trigger": plan.trigger,
|
|
317
|
+
}
|
|
318
|
+
if plan.baseline_only:
|
|
319
|
+
kwargs["baseline_only"] = True
|
|
320
|
+
run_build_knowledge(**kwargs)
|
|
310
321
|
except Exception:
|
|
311
322
|
return
|
|
312
323
|
|
|
@@ -24,6 +24,7 @@ def run_build_knowledge(
|
|
|
24
24
|
repo_root: Path,
|
|
25
25
|
episode_id: str,
|
|
26
26
|
trigger: KnowledgeBuildTrigger | str,
|
|
27
|
+
baseline_only: bool = False,
|
|
27
28
|
) -> dict[str, object]:
|
|
28
29
|
"""Wire dependencies and run build_knowledge for one episode."""
|
|
29
30
|
|
|
@@ -32,6 +33,7 @@ def run_build_knowledge(
|
|
|
32
33
|
repo_root=str(repo_root.resolve()),
|
|
33
34
|
episode_id=episode_id,
|
|
34
35
|
trigger=KnowledgeBuildTrigger(trigger),
|
|
36
|
+
baseline_only=baseline_only,
|
|
35
37
|
)
|
|
36
38
|
result = execute_build_knowledge(
|
|
37
39
|
request,
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Add lifecycle activation state for forward-only knowledge building."""
|
|
2
|
+
|
|
3
|
+
from alembic import op
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
revision = "20260520_0028"
|
|
7
|
+
down_revision = "20260519_0027"
|
|
8
|
+
branch_labels = None
|
|
9
|
+
depends_on = None
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def upgrade() -> None:
|
|
13
|
+
"""Create per-repo lifecycle activation state."""
|
|
14
|
+
|
|
15
|
+
op.execute(
|
|
16
|
+
"""
|
|
17
|
+
CREATE TABLE IF NOT EXISTS knowledge_build_lifecycle (
|
|
18
|
+
repo_id TEXT PRIMARY KEY,
|
|
19
|
+
activated_at TIMESTAMPTZ NOT NULL,
|
|
20
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
21
|
+
);
|
|
22
|
+
"""
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def downgrade() -> None:
|
|
27
|
+
"""Drop per-repo lifecycle activation state."""
|
|
28
|
+
|
|
29
|
+
op.execute("DROP TABLE IF EXISTS knowledge_build_lifecycle;")
|
|
@@ -414,6 +414,7 @@ migrations/versions/20260519_0024_read_retrieval_latency_indexes.py
|
|
|
414
414
|
migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py
|
|
415
415
|
migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py
|
|
416
416
|
migrations/versions/20260519_0027_concept_embeddings.py
|
|
417
|
+
migrations/versions/20260520_0028_knowledge_build_lifecycle.py
|
|
417
418
|
migrations/versions/__init__.py
|
|
418
419
|
onboarding_assets/__init__.py
|
|
419
420
|
onboarding_assets/claude/CLAUDE.md
|
|
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
|
{shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/backfill_model_usage/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/backfill_model_usage/request.py
RENAMED
|
File without changes
|
{shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/backfill_model_usage/result.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/admin/generate_analytics_report.py
RENAMED
|
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
|
{shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/sync_discovered_host_session.py
RENAMED
|
File without changes
|
{shellbrain-0.1.33 → shellbrain-0.1.35}/app/core/use_cases/episodes/sync_episode/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|