shellbrain 0.1.54__tar.gz → 0.1.56__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.54 → shellbrain-0.1.56}/PKG-INFO +1 -1
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/evidence.py +0 -16
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/memories.py +0 -16
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/session_state.py +0 -8
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/snapshots.py +0 -1
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/retrieval/context_pack.py +0 -5
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/retrieval/ontology_semantics.py +0 -11
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/retrieval/scoring.py +1 -2
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/embeddings/retrieval.py +0 -8
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/add/result.py +0 -3
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/show/result.py +0 -3
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/update/result.py +0 -3
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/context_pack_pipeline.py +1 -1
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/deterministic_graph_recall.py +6 -10
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/expansion.py +8 -22
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/scenarios/record/result.py +0 -4
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -4
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/runner.py +22 -9
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +5 -1
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -15
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/shadow_git_store.py +0 -2
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/runtime_admin.py +12 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/_usage_view_sql.py +0 -9
- {shellbrain-0.1.54 → shellbrain-0.1.56}/pyproject.toml +1 -1
- {shellbrain-0.1.54 → shellbrain-0.1.56}/shellbrain.egg-info/PKG-INFO +1 -1
- {shellbrain-0.1.54 → shellbrain-0.1.56}/shellbrain.egg-info/SOURCES.txt +0 -5
- shellbrain-0.1.54/app/entrypoints/cli/handlers/human/upgrade.py +0 -11
- shellbrain-0.1.54/app/entrypoints/cli/operation_command.py +0 -45
- shellbrain-0.1.54/app/entrypoints/cli/presenters/json.py +0 -10
- shellbrain-0.1.54/app/infrastructure/db/admin/backups/restore.py +0 -33
- shellbrain-0.1.54/app/infrastructure/db/runtime/models/views.py +0 -1110
- {shellbrain-0.1.54 → shellbrain-0.1.56}/README.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/__main__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/admin_errors.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/associations.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/backups.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/concepts.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/episodes.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/guidance.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/identity.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/ids.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/inner_agents.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/knowledge_builder.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/machine_config.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/runtime_context.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/scenarios.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/settings.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/structural_memory_relations.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/entities/utility.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/errors.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/concepts/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/concepts/relation_rules.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/concepts/search_text.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/episodes/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/episodes/event_content.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/episodes/knowledge_building.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/memories/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/memories/add_plan.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/memories/link_rules.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/memories/update_plan.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/retrieval/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/retrieval/bm25.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/retrieval/expansion.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/retrieval/fusion_rrf.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/policies/retrieval/lexical_query.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/concept_repositories.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/episode_repositories.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/guidance.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/knowledge_builder.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/memory_repositories.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/problem_runs.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/retrieval_repositories.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/snapshots.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/db/unit_of_work.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/embeddings/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/embeddings/provider.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/host_apps/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/host_apps/inner_agents.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/local_state/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/local_state/session_state_store.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/local_state/shadow_git.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/system/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/system/clock.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/ports/system/idgen.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/create_backup.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/initialize_runtime.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/restore_backup.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/admin/verify_backup.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/build_guidance.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/add/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/add/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/add/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/containment_checks.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/embeddings.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/reference_checks.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/show/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/show/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/show/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/update/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/update/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/update/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/concepts/views.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/episodes/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/episodes/events/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/episodes/events/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/add/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/add/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/add/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/add/result.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/effect_plan.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/reference_checks.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/update/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/update/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/update/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/memories/update/result.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/metrics/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/plan_execution.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/build_context/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/read/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/read/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/read/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/read/result.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/read_concepts.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/recall/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/recall/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/recall/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/recall/result.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/scenarios/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/scenarios/record/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/scenarios/record/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/scenarios/record/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/code_delta_context/execute.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/error_responses.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/dependencies.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/human/admin.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/human/admin_dependencies.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/human/init.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/session_state.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/working_agent/snapshot.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/main.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/parser/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/parser/builder.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/presenters/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/presenters/init.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/memories.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/request_parsing/teach.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/cli/runtime.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/host_hooks/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/jobs/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/entrypoints/jobs/episode_sync.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/app_role_safety.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/backups/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/connection.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/instance_guard.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/migrations.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/privileges.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/admin/storage_setup.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/engine.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/associations.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/concepts.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/episodes.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/evidence.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/experiences.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/memories.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/metadata.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/registry.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/models/utility.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/session.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/db/runtime/uow.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/embeddings/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/embeddings/local_provider.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/embeddings/prewarm.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/embeddings/query_vector_search.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/claude.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/codex.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/cursor.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/inspection.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/paths.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/service.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/assets/types.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/identity/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/identity/resolver.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/inner_agents/prompt.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/init_lock.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/machine_config_store.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/operation_registration.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/paths.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/recall_mode_store.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/repo_registration_store.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/local_state/session_state_file_store.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/process/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/process/episode_sync/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/process/episode_sync/autostart.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/process/episode_sync/launcher.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/process/episode_sync/poller.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/process/episode_sync/status_store.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/system/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/system/clock.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/system/id_generator.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/system/package_upgrade.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/operation_invocations.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/operation_polling.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/read_records.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/recall_records.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/recorder.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/records.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/sink.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/storage_protocols.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/sync_records.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/infrastructure/telemetry/write_records.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/settings/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/settings/defaults/create_policy.yaml +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/settings/defaults/read_policy.yaml +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/settings/defaults/runtime.yaml +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/settings/defaults/thresholds.yaml +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/settings/defaults/update_policy.yaml +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/settings/internal-agents/defaults.yaml +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/admin.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/admin_db.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/admin_dependencies.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/admin_diagnose.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/analytics.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/backup.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/cli.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/cli_runtime.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/config.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/create_policy.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/db.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/dsn_resolution.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/embeddings.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/episode_poller.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/episode_sync_launcher.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/host_hooks.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/internal_agent_config.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/internal_agents.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/knowledge_builder.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/migrations.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/model_usage_backfill.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/operation_dependencies.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/read_policy.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/repo_context.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/repos.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/retrieval.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/runtime_context.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/settings.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/snapshot_baseline.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/thresholds.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/update_policy.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/app/startup/use_cases.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/_legacy_usage_views.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/env.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260226_0001_initial_schema.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260422_0015_problem_runs.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260515_0019_scenario_records.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/20260815_0038_drop_wiki_summaries.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/migrations/versions/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/__init__.py +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/claude/CLAUDE.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/AGENTS.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/setup.cfg +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/shellbrain.egg-info/dependency_links.txt +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/shellbrain.egg-info/entry_points.txt +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/shellbrain.egg-info/requires.txt +0 -0
- {shellbrain-0.1.54 → shellbrain-0.1.56}/shellbrain.egg-info/top_level.txt +0 -0
|
@@ -7,10 +7,8 @@ from datetime import datetime
|
|
|
7
7
|
from enum import Enum
|
|
8
8
|
|
|
9
9
|
from app.core.entities.ids import (
|
|
10
|
-
AssociationEdgeId,
|
|
11
10
|
EvidenceId,
|
|
12
11
|
EvidenceRefText,
|
|
13
|
-
MemoryId,
|
|
14
12
|
RepoId,
|
|
15
13
|
)
|
|
16
14
|
|
|
@@ -147,20 +145,6 @@ class EvidenceLinkView:
|
|
|
147
145
|
created_at: datetime | None = None
|
|
148
146
|
|
|
149
147
|
|
|
150
|
-
@dataclass(kw_only=True)
|
|
151
|
-
class MemoryEvidenceLink:
|
|
152
|
-
"""This dataclass models a many-to-many link between shellbrain and evidence."""
|
|
153
|
-
|
|
154
|
-
memory_id: MemoryId
|
|
155
|
-
evidence_id: EvidenceId
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
@dataclass(kw_only=True)
|
|
159
|
-
class AssociationEdgeEvidenceLink:
|
|
160
|
-
"""This dataclass models a many-to-many link between association edges and evidence."""
|
|
161
|
-
|
|
162
|
-
edge_id: AssociationEdgeId
|
|
163
|
-
evidence_id: EvidenceId
|
|
164
148
|
|
|
165
149
|
|
|
166
150
|
_SOURCE_REQUIRED_FIELD: dict[EvidenceSourceKind, str] = {
|
|
@@ -34,13 +34,6 @@ class MemoryKind(str, Enum):
|
|
|
34
34
|
|
|
35
35
|
return self in {MemoryKind.SOLUTION, MemoryKind.FAILED_TACTIC}
|
|
36
36
|
|
|
37
|
-
@property
|
|
38
|
-
def is_mature(self) -> bool:
|
|
39
|
-
"""Return whether this kind belongs to the durable mature-memory set."""
|
|
40
|
-
|
|
41
|
-
return self in MATURE_MEMORY_KINDS
|
|
42
|
-
|
|
43
|
-
|
|
44
37
|
MATURE_MEMORY_KINDS: Final[tuple[MemoryKind, ...]] = (
|
|
45
38
|
MemoryKind.PROBLEM,
|
|
46
39
|
MemoryKind.SOLUTION,
|
|
@@ -52,15 +45,6 @@ MATURE_MEMORY_KINDS: Final[tuple[MemoryKind, ...]] = (
|
|
|
52
45
|
MATURE_MEMORY_KIND_VALUES: Final[tuple[str, ...]] = tuple(
|
|
53
46
|
kind.value for kind in MATURE_MEMORY_KINDS
|
|
54
47
|
)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def is_mature_memory_kind(kind: MemoryKind | str) -> bool:
|
|
58
|
-
"""Return whether one kind belongs to the mature durable-memory set."""
|
|
59
|
-
|
|
60
|
-
normalized_kind = kind if isinstance(kind, MemoryKind) else MemoryKind(kind)
|
|
61
|
-
return normalized_kind.is_mature
|
|
62
|
-
|
|
63
|
-
|
|
64
48
|
class MemoryScope(str, Enum):
|
|
65
49
|
"""This enum defines shellbrain visibility scope."""
|
|
66
50
|
|
|
@@ -3,14 +3,6 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from dataclasses import dataclass, field
|
|
6
|
-
from enum import Enum
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class SessionStateResetReason(str, Enum):
|
|
10
|
-
"""Reasons a working session may be reset while preserving caller identity metadata."""
|
|
11
|
-
|
|
12
|
-
IDLE_EXPIRED = "idle_expired"
|
|
13
|
-
CALLER_SWITCHED = "caller_switched"
|
|
14
6
|
|
|
15
7
|
|
|
16
8
|
@dataclass(kw_only=True)
|
|
@@ -7,11 +7,6 @@ from app.core.policies.retrieval.ontology_semantics import why_included_for_expa
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
_BUCKET_ORDER = ("direct", "explicit", "implicit")
|
|
10
|
-
_SECTION_NAMES = {
|
|
11
|
-
"direct": "direct",
|
|
12
|
-
"explicit": "explicit_related",
|
|
13
|
-
"implicit": "implicit_related",
|
|
14
|
-
}
|
|
15
10
|
_BUCKET_PRIORITY = {
|
|
16
11
|
bucket_name: index for index, bucket_name in enumerate(_BUCKET_ORDER)
|
|
17
12
|
}
|
|
@@ -16,9 +16,6 @@ ARCHIVED_STATUS = "archived"
|
|
|
16
16
|
POSITIVE_LIFECYCLE_STATUSES = frozenset(
|
|
17
17
|
{ACTIVE_STATUS, MAYBE_STALE_STATUS, STALE_STATUS}
|
|
18
18
|
)
|
|
19
|
-
NO_POSITIVE_RETRIEVAL_STATUSES = frozenset(
|
|
20
|
-
{SUPERSEDED_STATUS, WRONG_STATUS, ARCHIVED_STATUS}
|
|
21
|
-
)
|
|
22
19
|
|
|
23
20
|
LIFECYCLE_RETRIEVAL_MULTIPLIERS: Mapping[str, float] = {
|
|
24
21
|
ACTIVE_STATUS: 1.0,
|
|
@@ -90,14 +87,6 @@ def lifecycle_retrieval_multiplier(status: Any) -> float:
|
|
|
90
87
|
"""Return the default positive retrieval multiplier for one lifecycle status."""
|
|
91
88
|
|
|
92
89
|
return LIFECYCLE_RETRIEVAL_MULTIPLIERS[normalize_lifecycle_status(status)]
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
def has_positive_lifecycle_signal(status: Any) -> bool:
|
|
96
|
-
"""Return whether a lifecycle status can contribute normal retrieval signal."""
|
|
97
|
-
|
|
98
|
-
return normalize_lifecycle_status(status) in POSITIVE_LIFECYCLE_STATUSES
|
|
99
|
-
|
|
100
|
-
|
|
101
90
|
def is_active_lifecycle(status: Any) -> bool:
|
|
102
91
|
"""Return whether a lifecycle status is active."""
|
|
103
92
|
|
|
@@ -4,11 +4,10 @@ from typing import Any
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
def score_candidates(
|
|
7
|
-
candidates: dict[str, list[dict[str, Any]]],
|
|
7
|
+
candidates: dict[str, list[dict[str, Any]]],
|
|
8
8
|
) -> dict[str, list[dict[str, Any]]]:
|
|
9
9
|
"""This function computes base scores used for bucket ranking and spillover."""
|
|
10
10
|
|
|
11
|
-
_ = payload
|
|
12
11
|
return {
|
|
13
12
|
"direct": _score_direct_candidates(candidates.get("direct", [])),
|
|
14
13
|
"explicit": _score_explicit_candidates(candidates.get("explicit", [])),
|
|
@@ -15,11 +15,3 @@ class IVectorSearch(ABC):
|
|
|
15
15
|
@abstractmethod
|
|
16
16
|
def embed_query(self, text: str) -> Sequence[float]:
|
|
17
17
|
"""This method returns an embedding vector for query text."""
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class IKeywordSearch(ABC):
|
|
21
|
-
"""This interface defines lexical lookup capabilities for query text."""
|
|
22
|
-
|
|
23
|
-
@abstractmethod
|
|
24
|
-
def normalize_query(self, text: str) -> str:
|
|
25
|
-
"""This method normalizes text before lexical retrieval."""
|
{shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/context_pack_pipeline.py
RENAMED
|
@@ -67,7 +67,7 @@ def build_context_pack(
|
|
|
67
67
|
"explicit": expanded_candidates["explicit"],
|
|
68
68
|
"implicit": expanded_candidates["implicit"],
|
|
69
69
|
}
|
|
70
|
-
scored_candidates = score_candidates(bucketed_candidates
|
|
70
|
+
scored_candidates = score_candidates(bucketed_candidates)
|
|
71
71
|
pack = assemble_context_pack(
|
|
72
72
|
scored_candidates, request_data, read_settings=read_settings
|
|
73
73
|
)
|
{shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/retrieval/deterministic_graph_recall.py
RENAMED
|
@@ -49,9 +49,7 @@ from app.core.use_cases.retrieval.seed_retrieval import retrieve_seeds
|
|
|
49
49
|
|
|
50
50
|
_MEMORY_LANE_LIMIT = 12
|
|
51
51
|
_FINAL_MEMORY_TARGET = 24
|
|
52
|
-
_FINAL_MEMORY_HARD_CAP = 32
|
|
53
52
|
_CONCEPT_TARGET = 6
|
|
54
|
-
_CONCEPT_HARD_CAP = 8
|
|
55
53
|
_RELATION_NEIGHBOR_CAP = 4
|
|
56
54
|
_HIGH_SIGNAL_RELATIONS = {"depends_on", "constrains", "precedes", "contains"}
|
|
57
55
|
_HIGH_SIGNAL_CLAIMS = {"invariant", "failure_mode", "usage_note", "behavior"}
|
|
@@ -606,12 +604,12 @@ def _select_concepts(
|
|
|
606
604
|
)
|
|
607
605
|
)
|
|
608
606
|
selected.sort(key=lambda item: (-item[0], item[1]))
|
|
609
|
-
chosen = [entry for _, _, entry in selected[:
|
|
610
|
-
return chosen
|
|
607
|
+
chosen = [entry for _, _, entry in selected[:_CONCEPT_TARGET]]
|
|
608
|
+
return chosen, {
|
|
611
609
|
"candidate_count": len(concept_candidates),
|
|
612
|
-
"selected": len(chosen
|
|
610
|
+
"selected": len(chosen),
|
|
613
611
|
"rejected": rejected_count + max(0, len(selected) - _CONCEPT_TARGET),
|
|
614
|
-
"selected_refs": [entry["bundle"]["concept"].slug for entry in chosen
|
|
612
|
+
"selected_refs": [entry["bundle"]["concept"].slug for entry in chosen],
|
|
615
613
|
}
|
|
616
614
|
|
|
617
615
|
|
|
@@ -724,8 +722,6 @@ def _select_final_memories(
|
|
|
724
722
|
|
|
725
723
|
def take(predicate, limit: int) -> None:
|
|
726
724
|
for item in ordered:
|
|
727
|
-
if len(selected) >= _FINAL_MEMORY_HARD_CAP:
|
|
728
|
-
return
|
|
729
725
|
memory_id = str(item["memory"].id)
|
|
730
726
|
if memory_id in selected_ids or not predicate(item):
|
|
731
727
|
continue
|
|
@@ -766,8 +762,8 @@ def _select_final_memories(
|
|
|
766
762
|
if memory_id not in selected_ids:
|
|
767
763
|
rejected.append(_rejected_memory(item, "budget_or_role_balance"))
|
|
768
764
|
|
|
769
|
-
return selected
|
|
770
|
-
"selected_memory_count": len(selected
|
|
765
|
+
return selected, {
|
|
766
|
+
"selected_memory_count": len(selected),
|
|
771
767
|
"rejected_memory_count": len(rejected),
|
|
772
768
|
"top_rejected_memory_ids": [item["memory_id"] for item in rejected[:10]],
|
|
773
769
|
"rejected": rejected[:20],
|
|
@@ -38,39 +38,25 @@ def expand_candidates(
|
|
|
38
38
|
min_strength = float(expand["min_association_strength"])
|
|
39
39
|
semantic_hops = int(expand["semantic_hops"])
|
|
40
40
|
max_association_depth = int(expand["max_association_depth"])
|
|
41
|
+
structural_relation_groups = (
|
|
42
|
+
(expand["include_problem_links"], STRUCTURAL_PROBLEM_RELATION_PREDICATES),
|
|
43
|
+
(expand["include_fact_update_links"], STRUCTURAL_FACT_UPDATE_RELATION_PREDICATES),
|
|
44
|
+
)
|
|
41
45
|
|
|
42
46
|
for direct_candidate in direct_candidates:
|
|
43
47
|
anchor_memory_id = direct_candidate["memory_id"]
|
|
44
48
|
anchor_score = _candidate_anchor_score(direct_candidate)
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
repo_id=repo_id,
|
|
50
|
-
include_global=include_global,
|
|
51
|
-
anchor_memory_id=anchor_memory_id,
|
|
52
|
-
kinds=kinds,
|
|
53
|
-
predicates=STRUCTURAL_PROBLEM_RELATION_PREDICATES,
|
|
54
|
-
),
|
|
55
|
-
anchor_memory_id=anchor_memory_id,
|
|
56
|
-
):
|
|
57
|
-
explicit.append(
|
|
58
|
-
{
|
|
59
|
-
"memory_id": neighbor["memory_id"],
|
|
60
|
-
"anchor_memory_id": anchor_memory_id,
|
|
61
|
-
"anchor_score": anchor_score,
|
|
62
|
-
"depth": 1,
|
|
63
|
-
"expansion_type": neighbor["expansion_type"],
|
|
64
|
-
}
|
|
65
|
-
)
|
|
66
|
-
if expand["include_fact_update_links"]:
|
|
50
|
+
for enabled, predicates in structural_relation_groups:
|
|
51
|
+
if not enabled:
|
|
52
|
+
continue
|
|
67
53
|
for neighbor in select_structural_memory_relation_neighbors(
|
|
68
54
|
read_policy.list_structural_memory_relation_rows(
|
|
69
55
|
repo_id=repo_id,
|
|
70
56
|
include_global=include_global,
|
|
71
57
|
anchor_memory_id=anchor_memory_id,
|
|
72
58
|
kinds=kinds,
|
|
73
|
-
predicates=
|
|
59
|
+
predicates=predicates,
|
|
74
60
|
),
|
|
75
61
|
anchor_memory_id=anchor_memory_id,
|
|
76
62
|
):
|
|
@@ -42,10 +42,6 @@ class ScenarioRecordResult:
|
|
|
42
42
|
created: bool
|
|
43
43
|
solution_delta: SolutionDeltaRecordResult | None = None
|
|
44
44
|
|
|
45
|
-
@property
|
|
46
|
-
def data(self) -> dict[str, object]:
|
|
47
|
-
return self.to_response_data()
|
|
48
|
-
|
|
49
45
|
def to_response_data(self) -> dict[str, object]:
|
|
50
46
|
"""Return the stable CLI response payload."""
|
|
51
47
|
|
{shellbrain-0.1.54 → shellbrain-0.1.56}/app/core/use_cases/snapshots/capture_snapshot/result.py
RENAMED
|
@@ -23,10 +23,6 @@ class CaptureSnapshotResult:
|
|
|
23
23
|
operation_invocation_id: str | None = None
|
|
24
24
|
reason: str | None = None
|
|
25
25
|
|
|
26
|
-
@property
|
|
27
|
-
def data(self) -> dict[str, object]:
|
|
28
|
-
return self.to_response_data()
|
|
29
|
-
|
|
30
26
|
def to_response_data(self) -> dict[str, object]:
|
|
31
27
|
"""Return the stable CLI response payload."""
|
|
32
28
|
|
|
@@ -11,7 +11,6 @@ import sys
|
|
|
11
11
|
from typing import Any, Sequence
|
|
12
12
|
|
|
13
13
|
from app.entrypoints.cli.parser import build_parser
|
|
14
|
-
from app.entrypoints.cli.presenters.json import render
|
|
15
14
|
from app.entrypoints.cli.runtime import CliRuntime
|
|
16
15
|
|
|
17
16
|
|
|
@@ -44,9 +43,27 @@ _INNER_AGENT_ALLOWED_COMMANDS_BY_MODE = {
|
|
|
44
43
|
def run_operation_command(**kwargs):
|
|
45
44
|
"""Lazy operation-command wrapper so CLI help stays dependency-light."""
|
|
46
45
|
|
|
47
|
-
from app.entrypoints.cli.
|
|
46
|
+
from app.entrypoints.cli.handlers.cli_operation import (
|
|
47
|
+
CliOperationEffects,
|
|
48
|
+
run_cli_operation,
|
|
49
|
+
)
|
|
48
50
|
|
|
49
|
-
|
|
51
|
+
runtime = kwargs.pop("runtime")
|
|
52
|
+
return run_cli_operation(
|
|
53
|
+
**kwargs,
|
|
54
|
+
effects=CliOperationEffects(
|
|
55
|
+
new_invocation_id=runtime.new_invocation_id,
|
|
56
|
+
resolve_caller_identity=runtime.resolve_caller_identity,
|
|
57
|
+
set_operation_context=runtime.set_operation_context,
|
|
58
|
+
reset_operation_context=runtime.reset_operation_context,
|
|
59
|
+
ensure_managed_runtime_ready=runtime.ensure_managed_runtime_ready,
|
|
60
|
+
warn_or_fail_on_unsafe_app_role=runtime.warn_or_fail_on_unsafe_app_role,
|
|
61
|
+
ensure_repo_registration=runtime.ensure_repo_registration,
|
|
62
|
+
ensure_shadow_baseline=runtime.ensure_shadow_baseline,
|
|
63
|
+
maybe_start_sync=runtime.maybe_start_sync,
|
|
64
|
+
update_operation_polling_status=runtime.update_operation_polling_status,
|
|
65
|
+
),
|
|
66
|
+
)
|
|
50
67
|
|
|
51
68
|
|
|
52
69
|
def main(
|
|
@@ -83,11 +100,7 @@ def main(
|
|
|
83
100
|
return 2
|
|
84
101
|
|
|
85
102
|
if args.command == "upgrade":
|
|
86
|
-
|
|
87
|
-
run as run_upgrade_command,
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
return run_upgrade_command(run_upgrade_command=runtime.run_upgrade_command)
|
|
103
|
+
return runtime.run_upgrade_command()
|
|
91
104
|
|
|
92
105
|
if args.command == "admin":
|
|
93
106
|
from app.entrypoints.cli.handlers.human.admin import run_admin_command
|
|
@@ -127,7 +140,7 @@ def main(
|
|
|
127
140
|
_dispatch_operation_command(command, payload, context, runtime=runtime)
|
|
128
141
|
),
|
|
129
142
|
)
|
|
130
|
-
print(
|
|
143
|
+
print(json.dumps(result, separators=(",", ":")))
|
|
131
144
|
if result.get("status") == "error":
|
|
132
145
|
return 1
|
|
133
146
|
return 0
|
|
@@ -21,8 +21,12 @@ def ensure_docker_runtime_available() -> None:
|
|
|
21
21
|
check=False,
|
|
22
22
|
)
|
|
23
23
|
if completed.returncode != 0:
|
|
24
|
+
detail = completed.stderr.strip() or completed.stdout.strip()
|
|
25
|
+
if not detail:
|
|
26
|
+
detail = f"docker info exited with status {completed.returncode}"
|
|
24
27
|
raise InitDependencyError(
|
|
25
|
-
"Shellbrain
|
|
28
|
+
"Shellbrain requires a reachable Docker daemon for managed-local runtime operations. "
|
|
29
|
+
f"docker info failed: {detail}"
|
|
26
30
|
)
|
|
27
31
|
|
|
28
32
|
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
5
|
from sqlalchemy import text
|
|
8
6
|
from sqlalchemy.engine import Engine
|
|
9
7
|
|
|
@@ -28,16 +26,3 @@ def load_linked_model_usage_sessions(*, engine: Engine) -> list[dict[str, object
|
|
|
28
26
|
)
|
|
29
27
|
with engine.connect() as conn:
|
|
30
28
|
return [dict(row) for row in conn.execute(statement).mappings().all()]
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def to_linked_session(row: dict[str, Any]) -> dict[str, object]:
|
|
34
|
-
"""Keep query rows as JSON-like primitives for the core use case."""
|
|
35
|
-
|
|
36
|
-
return {
|
|
37
|
-
"repo_id": row["repo_id"],
|
|
38
|
-
"host_app": row["host_app"],
|
|
39
|
-
"host_session_key": row["host_session_key"],
|
|
40
|
-
"thread_id": row.get("thread_id"),
|
|
41
|
-
"episode_id": row.get("episode_id"),
|
|
42
|
-
"transcript_path": row["transcript_path"],
|
|
43
|
-
}
|
|
@@ -80,7 +80,6 @@ class ShadowGitStore(IShadowGitStore):
|
|
|
80
80
|
shadow_commit_sha=parent_commit,
|
|
81
81
|
parent_shadow_commit_sha=parent_commit,
|
|
82
82
|
changed_paths=(),
|
|
83
|
-
tree_sha=tree_sha,
|
|
84
83
|
)
|
|
85
84
|
|
|
86
85
|
commit_sha = _commit_tree(
|
|
@@ -99,7 +98,6 @@ class ShadowGitStore(IShadowGitStore):
|
|
|
99
98
|
commit_sha=commit_sha,
|
|
100
99
|
parent_commit=parent_commit,
|
|
101
100
|
),
|
|
102
|
-
tree_sha=tree_sha,
|
|
103
101
|
)
|
|
104
102
|
|
|
105
103
|
def diff_snapshot_pair(
|
|
@@ -172,11 +172,23 @@ def ensure_managed_runtime_ready() -> None:
|
|
|
172
172
|
return
|
|
173
173
|
if config.runtime_mode != RUNTIME_MODE_MANAGED_LOCAL:
|
|
174
174
|
return
|
|
175
|
+
if _postgres_is_ready(config.database.admin_dsn):
|
|
176
|
+
return
|
|
175
177
|
ensure_managed_runtime_available()
|
|
176
178
|
managed_runtime.ensure_existing_managed_container_running(config)
|
|
177
179
|
wait_for_postgres(config.database.admin_dsn, timeout_seconds=15)
|
|
178
180
|
|
|
179
181
|
|
|
182
|
+
def _postgres_is_ready(admin_dsn: str) -> bool:
|
|
183
|
+
"""Return whether the configured PostgreSQL runtime accepts connections."""
|
|
184
|
+
|
|
185
|
+
try:
|
|
186
|
+
wait_for_postgres(admin_dsn, timeout_seconds=0)
|
|
187
|
+
except InitConflictError:
|
|
188
|
+
return False
|
|
189
|
+
return True
|
|
190
|
+
|
|
191
|
+
|
|
180
192
|
def _build_fresh_machine_config() -> MachineConfig:
|
|
181
193
|
"""Construct a fresh machine config for managed-local mode."""
|
|
182
194
|
|
|
@@ -19,15 +19,6 @@ WHERE m.kind = 'fact'
|
|
|
19
19
|
);
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
GLOBAL_UTILITY_SQL = """
|
|
24
|
-
CREATE OR REPLACE VIEW global_utility AS
|
|
25
|
-
SELECT memory_id, AVG(vote) AS utility_mean, COUNT(*) AS observations
|
|
26
|
-
FROM utility_observations
|
|
27
|
-
GROUP BY memory_id;
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
|
|
31
22
|
USAGE_COMMAND_DAILY_SQL = """
|
|
32
23
|
CREATE OR REPLACE VIEW usage_command_daily AS
|
|
33
24
|
SELECT
|
|
@@ -162,7 +162,6 @@ app/entrypoints/__init__.py
|
|
|
162
162
|
app/entrypoints/cli/__init__.py
|
|
163
163
|
app/entrypoints/cli/error_responses.py
|
|
164
164
|
app/entrypoints/cli/main.py
|
|
165
|
-
app/entrypoints/cli/operation_command.py
|
|
166
165
|
app/entrypoints/cli/runner.py
|
|
167
166
|
app/entrypoints/cli/runtime.py
|
|
168
167
|
app/entrypoints/cli/handlers/__init__.py
|
|
@@ -174,7 +173,6 @@ app/entrypoints/cli/handlers/human/__init__.py
|
|
|
174
173
|
app/entrypoints/cli/handlers/human/admin.py
|
|
175
174
|
app/entrypoints/cli/handlers/human/admin_dependencies.py
|
|
176
175
|
app/entrypoints/cli/handlers/human/init.py
|
|
177
|
-
app/entrypoints/cli/handlers/human/upgrade.py
|
|
178
176
|
app/entrypoints/cli/handlers/internal_agent/__init__.py
|
|
179
177
|
app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py
|
|
180
178
|
app/entrypoints/cli/handlers/internal_agent/concepts/add.py
|
|
@@ -201,7 +199,6 @@ app/entrypoints/cli/parser/__init__.py
|
|
|
201
199
|
app/entrypoints/cli/parser/builder.py
|
|
202
200
|
app/entrypoints/cli/presenters/__init__.py
|
|
203
201
|
app/entrypoints/cli/presenters/init.py
|
|
204
|
-
app/entrypoints/cli/presenters/json.py
|
|
205
202
|
app/entrypoints/cli/request_parsing/__init__.py
|
|
206
203
|
app/entrypoints/cli/request_parsing/concepts.py
|
|
207
204
|
app/entrypoints/cli/request_parsing/episodes.py
|
|
@@ -230,7 +227,6 @@ app/infrastructure/db/admin/backups/__init__.py
|
|
|
230
227
|
app/infrastructure/db/admin/backups/destructive_guard.py
|
|
231
228
|
app/infrastructure/db/admin/backups/logical_backup.py
|
|
232
229
|
app/infrastructure/db/admin/backups/manifest_store.py
|
|
233
|
-
app/infrastructure/db/admin/backups/restore.py
|
|
234
230
|
app/infrastructure/db/admin/provisioning/__init__.py
|
|
235
231
|
app/infrastructure/db/admin/provisioning/docker_prerequisites.py
|
|
236
232
|
app/infrastructure/db/admin/provisioning/external_postgres.py
|
|
@@ -255,7 +251,6 @@ app/infrastructure/db/runtime/models/registry.py
|
|
|
255
251
|
app/infrastructure/db/runtime/models/snapshots.py
|
|
256
252
|
app/infrastructure/db/runtime/models/telemetry.py
|
|
257
253
|
app/infrastructure/db/runtime/models/utility.py
|
|
258
|
-
app/infrastructure/db/runtime/models/views.py
|
|
259
254
|
app/infrastructure/db/runtime/queries/__init__.py
|
|
260
255
|
app/infrastructure/db/runtime/queries/agent_behavior.py
|
|
261
256
|
app/infrastructure/db/runtime/queries/analytics.py
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"""Human CLI endpoint for package upgrades."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from collections.abc import Callable
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def run(*, run_upgrade_command: Callable[[], int]) -> int:
|
|
9
|
-
"""Run the hosted upgrade path."""
|
|
10
|
-
|
|
11
|
-
return run_upgrade_command()
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"""Entry-point ownership for one agent-facing CLI operation command."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
|
-
from app.entrypoints.cli.handlers.cli_operation import (
|
|
8
|
-
CliOperationEffects,
|
|
9
|
-
run_cli_operation,
|
|
10
|
-
)
|
|
11
|
-
from app.entrypoints.cli.runtime import CliRuntime
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def run_operation_command(
|
|
15
|
-
*,
|
|
16
|
-
command: str,
|
|
17
|
-
payload: dict[str, Any],
|
|
18
|
-
repo_context,
|
|
19
|
-
repo_id_override: str | None,
|
|
20
|
-
no_sync: bool,
|
|
21
|
-
dispatch_operation,
|
|
22
|
-
runtime: CliRuntime,
|
|
23
|
-
) -> dict[str, Any]:
|
|
24
|
-
"""Run one hydrated CLI operation with startup-supplied concrete callbacks."""
|
|
25
|
-
|
|
26
|
-
return run_cli_operation(
|
|
27
|
-
command=command,
|
|
28
|
-
payload=payload,
|
|
29
|
-
repo_context=repo_context,
|
|
30
|
-
repo_id_override=repo_id_override,
|
|
31
|
-
no_sync=no_sync,
|
|
32
|
-
dispatch_operation=dispatch_operation,
|
|
33
|
-
effects=CliOperationEffects(
|
|
34
|
-
new_invocation_id=runtime.new_invocation_id,
|
|
35
|
-
resolve_caller_identity=runtime.resolve_caller_identity,
|
|
36
|
-
set_operation_context=runtime.set_operation_context,
|
|
37
|
-
reset_operation_context=runtime.reset_operation_context,
|
|
38
|
-
ensure_managed_runtime_ready=runtime.ensure_managed_runtime_ready,
|
|
39
|
-
warn_or_fail_on_unsafe_app_role=runtime.warn_or_fail_on_unsafe_app_role,
|
|
40
|
-
ensure_repo_registration=runtime.ensure_repo_registration,
|
|
41
|
-
ensure_shadow_baseline=runtime.ensure_shadow_baseline,
|
|
42
|
-
maybe_start_sync=runtime.maybe_start_sync,
|
|
43
|
-
update_operation_polling_status=runtime.update_operation_polling_status,
|
|
44
|
-
),
|
|
45
|
-
)
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"""This module defines deterministic JSON presentation helpers for CLI responses."""
|
|
2
|
-
|
|
3
|
-
import json
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def render(payload: dict[str, Any]) -> str:
|
|
8
|
-
"""This function renders payloads as deterministic compact JSON output."""
|
|
9
|
-
|
|
10
|
-
return json.dumps(payload, separators=(",", ":"))
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"""Restore helpers for Shellbrain logical backups."""
|
|
2
|
-
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
|
|
5
|
-
from app.core.entities.backups import BackupManifest
|
|
6
|
-
from app.infrastructure.db.admin.backups.logical_backup import (
|
|
7
|
-
restore_backup as _restore_backup,
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def restore_backup(
|
|
12
|
-
*,
|
|
13
|
-
admin_dsn: str,
|
|
14
|
-
backup_root: Path,
|
|
15
|
-
target_db: str,
|
|
16
|
-
app_dsn: str | None = None,
|
|
17
|
-
backup_id: str | None = None,
|
|
18
|
-
container_name: str | None = None,
|
|
19
|
-
container_admin_user: str | None = None,
|
|
20
|
-
container_admin_password: str | None = None,
|
|
21
|
-
) -> BackupManifest:
|
|
22
|
-
"""Restore one backup into a fresh scratch database."""
|
|
23
|
-
|
|
24
|
-
return _restore_backup(
|
|
25
|
-
admin_dsn=admin_dsn,
|
|
26
|
-
backup_root=backup_root,
|
|
27
|
-
target_db=target_db,
|
|
28
|
-
app_dsn=app_dsn,
|
|
29
|
-
backup_id=backup_id,
|
|
30
|
-
container_name=container_name,
|
|
31
|
-
container_admin_user=container_admin_user,
|
|
32
|
-
container_admin_password=container_admin_password,
|
|
33
|
-
)
|