shellbrain 0.1.43__tar.gz → 0.1.45__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.43 → shellbrain-0.1.45}/PKG-INFO +1 -1
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/admin.py +27 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/admin_dependencies.py +2 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/parser/builder.py +25 -0
- shellbrain-0.1.45/app/infrastructure/local_state/recall_mode_store.py +60 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/admin_dependencies.py +2 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/cli.py +3 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/internal_agents.py +19 -2
- shellbrain-0.1.45/onboarding_assets/claude/CLAUDE.md +40 -0
- shellbrain-0.1.45/onboarding_assets/codex/AGENTS.md +40 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/pyproject.toml +1 -1
- {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/PKG-INFO +1 -1
- {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/SOURCES.txt +1 -0
- shellbrain-0.1.43/onboarding_assets/claude/CLAUDE.md +0 -52
- shellbrain-0.1.43/onboarding_assets/codex/AGENTS.md +0 -52
- {shellbrain-0.1.43 → shellbrain-0.1.45}/README.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/__main__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/admin_errors.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/associations.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/backups.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/concepts.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/episodes.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/evidence.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/guidance.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/identity.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/ids.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/inner_agents.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/knowledge_builder.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/machine_config.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/memories.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/repositories.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/runtime_context.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/scenarios.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/session_state.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/settings.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/snapshots.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/structural_memory_relations.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/utility.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/wiki_summaries.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/errors.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/concepts/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/concepts/relation_rules.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/concepts/search_text.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/episodes/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/episodes/event_content.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/episodes/knowledge_building.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/memories/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/memories/add_plan.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/memories/link_rules.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/memories/update_plan.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/bm25.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/context_pack.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/expansion.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/fusion_rrf.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/lexical_query.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/ontology_semantics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/scoring.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/wiki_summary_freshness.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/concept_repositories.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/episode_repositories.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/guidance.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/knowledge_builder.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/memory_repositories.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/problem_runs.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/repository_index.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/retrieval_repositories.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/snapshots.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/unit_of_work.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/wiki_summaries.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/embeddings/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/embeddings/provider.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/embeddings/retrieval.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/host_apps/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/host_apps/inner_agents.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/local_state/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/local_state/session_state_store.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/local_state/shadow_git.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/reporting/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/reporting/metrics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/system/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/system/clock.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/system/idgen.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/create_backup.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/initialize_runtime.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/restore_backup.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/verify_backup.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/build_guidance.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/containment_checks.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/embeddings.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/reference_checks.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/views.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/events/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/events/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/add/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/add/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/add/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/add/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/effect_plan.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/reference_checks.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/update/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/update/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/update/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/update/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/metrics/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/metrics/build_snapshot.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/metrics/generate_dashboard.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/plan_execution.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/build_context/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/context_pack_pipeline.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/deterministic_graph_recall.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/expansion.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read_concepts.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/execute.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/request.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/result.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/summaries.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/error_responses.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/dependencies.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/init.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/metrics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/upgrade.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/wiki.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/session_state.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/snapshot.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/main.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/operation_command.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/parser/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/init.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/json.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/metrics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/memories.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/teach.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/runner.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/runtime.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/host_hooks/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/jobs/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/jobs/episode_sync.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/app_role_safety.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/restore.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/connection.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/instance_guard.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/migrations.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/privileges.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/storage_setup.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/engine.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/associations.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/concepts.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/episodes.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/evidence.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/experiences.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/memories.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/metadata.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/registry.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/utility.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/views.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/wiki_summaries.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/metrics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/metrics_adapter.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/repository_index_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/wiki_summaries_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/session.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/uow.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/embeddings/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/embeddings/local_provider.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/embeddings/prewarm.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/embeddings/query_vector_search.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/claude.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/codex.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/cursor.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/inspection.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/paths.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/service.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/types.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/resolver.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/prompt.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/init_lock.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/machine_config_store.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/operation_registration.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/paths.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/repo_registration_store.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/session_state_file_store.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/shadow_git_store.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/autostart.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/launcher.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/poller.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/status_store.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/artifacts.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/browser.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/pager.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/render_html.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/browser.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/render_html.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/server.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/summary_worker.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/system/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/system/clock.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/system/id_generator.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/system/package_upgrade.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/operation_invocations.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/operation_polling.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/read_records.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/recall_records.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/recorder.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/records.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/sink.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/storage_protocols.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/sync_records.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/write_records.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/create_policy.yaml +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/read_policy.yaml +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/runtime.yaml +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/thresholds.yaml +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/update_policy.yaml +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/internal-agents/defaults.yaml +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/admin.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/admin_db.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/admin_diagnose.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/analytics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/backup.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/cli_runtime.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/config.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/create_policy.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/db.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/dsn_resolution.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/embeddings.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/episode_poller.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/episode_sync_launcher.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/host_hooks.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/internal_agent_config.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/knowledge_builder.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/metrics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/migrations.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/model_usage_backfill.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/operation_dependencies.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/read_policy.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/repo_context.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/repos.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/retrieval.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/runtime_admin.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/runtime_context.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/settings.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/snapshot_baseline.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/thresholds.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/update_policy.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/use_cases.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/wiki.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/_legacy_usage_views.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/_usage_view_sql.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/env.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260226_0001_initial_schema.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260422_0015_problem_runs.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260515_0019_scenario_records.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/__init__.py +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/references/request-shapes.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/setup.cfg +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/dependency_links.txt +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/entry_points.txt +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/requires.txt +0 -0
- {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/top_level.txt +0 -0
|
@@ -106,6 +106,18 @@ def run_admin_command(
|
|
|
106
106
|
print(json.dumps(summary.to_payload(), indent=2, sort_keys=True))
|
|
107
107
|
return 0
|
|
108
108
|
|
|
109
|
+
if args.admin_command == "recall":
|
|
110
|
+
try:
|
|
111
|
+
if args.recall_command in {"fast", "full"}:
|
|
112
|
+
mode, path, exists = dependencies.save_recall_mode(args.recall_command)
|
|
113
|
+
else:
|
|
114
|
+
mode, path, exists = dependencies.load_recall_mode()
|
|
115
|
+
except ValueError as exc:
|
|
116
|
+
print(str(exc), file=sys.stderr)
|
|
117
|
+
return 1
|
|
118
|
+
print(_format_recall_mode(mode=mode, path=path, exists=exists))
|
|
119
|
+
return 0
|
|
120
|
+
|
|
109
121
|
repo_root = resolve_admin_repo_root(getattr(args, "repo_root", None))
|
|
110
122
|
if args.admin_command == "install-claude-hook":
|
|
111
123
|
settings_path = dependencies.install_repo_claude_hook(repo_root=repo_root)
|
|
@@ -141,3 +153,18 @@ def run_admin_command(
|
|
|
141
153
|
print(json.dumps({"deleted": deleted}, indent=2, sort_keys=True))
|
|
142
154
|
return 0
|
|
143
155
|
raise ValueError(f"Unsupported admin command: {args.admin_command}")
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def _format_recall_mode(*, mode: str, path: Path, exists: bool) -> str:
|
|
159
|
+
if not exists:
|
|
160
|
+
return "Recall mode: full (default; no override file)"
|
|
161
|
+
if mode == "fast":
|
|
162
|
+
return f"Recall mode: fast (deterministic only) from {_display_path(path)}"
|
|
163
|
+
return f"Recall mode: full (LLM synthesis) from {_display_path(path)}"
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def _display_path(path: Path) -> str:
|
|
167
|
+
try:
|
|
168
|
+
return f"~/{path.expanduser().resolve().relative_to(Path.home())}"
|
|
169
|
+
except ValueError:
|
|
170
|
+
return str(path)
|
|
@@ -291,6 +291,18 @@ _ADMIN_HELP = dedent(
|
|
|
291
291
|
Example:
|
|
292
292
|
shellbrain init
|
|
293
293
|
shellbrain admin migrate
|
|
294
|
+
shellbrain admin recall fast
|
|
295
|
+
"""
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
_RECALL_MODE_HELP = dedent(
|
|
299
|
+
"""\
|
|
300
|
+
Toggle whether recall uses the inner LLM synthesis agent.
|
|
301
|
+
|
|
302
|
+
Examples:
|
|
303
|
+
shellbrain admin recall fast
|
|
304
|
+
shellbrain admin recall full
|
|
305
|
+
shellbrain admin recall status
|
|
294
306
|
"""
|
|
295
307
|
)
|
|
296
308
|
|
|
@@ -754,6 +766,19 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
754
766
|
epilog=_BACKFILL_TOKEN_USAGE_HELP,
|
|
755
767
|
formatter_class=_HelpFormatter,
|
|
756
768
|
)
|
|
769
|
+
recall_parser = admin_subparsers.add_parser(
|
|
770
|
+
"recall",
|
|
771
|
+
help="Toggle recall between fast deterministic mode and full LLM synthesis.",
|
|
772
|
+
description="Toggle whether recall uses the inner LLM synthesis agent.",
|
|
773
|
+
epilog=_RECALL_MODE_HELP,
|
|
774
|
+
formatter_class=_HelpFormatter,
|
|
775
|
+
)
|
|
776
|
+
recall_subparsers = recall_parser.add_subparsers(
|
|
777
|
+
dest="recall_command", required=True, metavar="recall-command"
|
|
778
|
+
)
|
|
779
|
+
recall_subparsers.add_parser("fast", help="Use deterministic-only recall.")
|
|
780
|
+
recall_subparsers.add_parser("full", help="Use LLM synthesis recall.")
|
|
781
|
+
recall_subparsers.add_parser("status", help="Print the current recall mode.")
|
|
757
782
|
install_hook_parser = admin_subparsers.add_parser(
|
|
758
783
|
"install-claude-hook",
|
|
759
784
|
help="Install the repo-local Claude hook used for trusted caller identity.",
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""Machine-local recall mode override storage."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
import tomllib
|
|
8
|
+
|
|
9
|
+
from app.infrastructure.local_state.paths import get_shellbrain_home
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
RECALL_MODE_FAST = "fast"
|
|
13
|
+
RECALL_MODE_FULL = "full"
|
|
14
|
+
DEFAULT_RECALL_MODE = RECALL_MODE_FULL
|
|
15
|
+
VALID_RECALL_MODES = {RECALL_MODE_FAST, RECALL_MODE_FULL}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def get_recall_mode_path() -> Path:
|
|
19
|
+
"""Return the machine-local recall mode override path."""
|
|
20
|
+
|
|
21
|
+
return get_shellbrain_home() / "recall.toml"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def load_recall_mode(path: Path | None = None) -> tuple[str, Path, bool]:
|
|
25
|
+
"""Return recall mode, config path, and whether an override file exists."""
|
|
26
|
+
|
|
27
|
+
target = path or get_recall_mode_path()
|
|
28
|
+
try:
|
|
29
|
+
text = target.read_text(encoding="utf-8")
|
|
30
|
+
except FileNotFoundError:
|
|
31
|
+
return DEFAULT_RECALL_MODE, target, False
|
|
32
|
+
try:
|
|
33
|
+
payload = tomllib.loads(text)
|
|
34
|
+
except tomllib.TOMLDecodeError as exc:
|
|
35
|
+
raise ValueError(f"Invalid recall mode config at {target}: {exc}") from exc
|
|
36
|
+
if set(payload) != {"mode"}:
|
|
37
|
+
raise ValueError(
|
|
38
|
+
f"Invalid recall mode config at {target}: expected only the 'mode' key."
|
|
39
|
+
)
|
|
40
|
+
mode = payload.get("mode")
|
|
41
|
+
if not isinstance(mode, str) or mode not in VALID_RECALL_MODES:
|
|
42
|
+
raise ValueError(
|
|
43
|
+
f"Invalid recall mode config at {target}: mode must be 'fast' or 'full'."
|
|
44
|
+
)
|
|
45
|
+
return mode, target, True
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def save_recall_mode(mode: str, path: Path | None = None) -> tuple[str, Path, bool]:
|
|
49
|
+
"""Persist one machine-local recall mode override."""
|
|
50
|
+
|
|
51
|
+
if mode not in VALID_RECALL_MODES:
|
|
52
|
+
raise ValueError("Recall mode must be 'fast' or 'full'.")
|
|
53
|
+
target = path or get_recall_mode_path()
|
|
54
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
55
|
+
target.write_text(f'mode = "{mode}"\n', encoding="utf-8")
|
|
56
|
+
try:
|
|
57
|
+
os.chmod(target, 0o600)
|
|
58
|
+
except OSError:
|
|
59
|
+
pass
|
|
60
|
+
return mode, target, True
|
|
@@ -81,6 +81,7 @@ def build_admin_command_dependencies():
|
|
|
81
81
|
from app.startup import migrations
|
|
82
82
|
from app.startup import model_usage_backfill
|
|
83
83
|
from app.startup.admin_dependencies import AdminCommandDependencies
|
|
84
|
+
from app.infrastructure.local_state import recall_mode_store
|
|
84
85
|
|
|
85
86
|
return AdminCommandDependencies(
|
|
86
87
|
upgrade_database=migrations.upgrade_database,
|
|
@@ -107,6 +108,8 @@ def build_admin_command_dependencies():
|
|
|
107
108
|
load_session_state=startup_admin.load_session_state,
|
|
108
109
|
delete_session_state=startup_admin.delete_session_state,
|
|
109
110
|
gc_session_state=startup_admin.gc_session_state,
|
|
111
|
+
load_recall_mode=recall_mode_store.load_recall_mode,
|
|
112
|
+
save_recall_mode=recall_mode_store.save_recall_mode,
|
|
110
113
|
)
|
|
111
114
|
|
|
112
115
|
|
|
@@ -21,6 +21,10 @@ from app.core.ports.host_apps.inner_agents import (
|
|
|
21
21
|
)
|
|
22
22
|
from app.infrastructure.host_apps.inner_agents.claude_cli import ClaudeCliInnerAgentRunner
|
|
23
23
|
from app.infrastructure.host_apps.inner_agents.codex_cli import CodexCliInnerAgentRunner
|
|
24
|
+
from app.infrastructure.local_state.recall_mode_store import (
|
|
25
|
+
RECALL_MODE_FAST,
|
|
26
|
+
load_recall_mode,
|
|
27
|
+
)
|
|
24
28
|
from app.startup.config import get_config_provider
|
|
25
29
|
from app.startup.internal_agent_config import InternalAgentsConfig
|
|
26
30
|
|
|
@@ -43,7 +47,7 @@ def get_build_context_settings() -> InnerAgentSettings:
|
|
|
43
47
|
"""Return typed settings for the read-only build_context agent."""
|
|
44
48
|
|
|
45
49
|
config = get_internal_agents_config()
|
|
46
|
-
return
|
|
50
|
+
return _resolve_build_context_settings(config)
|
|
47
51
|
|
|
48
52
|
|
|
49
53
|
def get_build_knowledge_settings() -> BuildKnowledgeSettings:
|
|
@@ -71,7 +75,10 @@ def get_build_context_inner_agent_runner() -> IInnerAgentRunner | None:
|
|
|
71
75
|
"""Return the configured build_context provider adapter."""
|
|
72
76
|
|
|
73
77
|
config = get_internal_agents_config()
|
|
74
|
-
|
|
78
|
+
settings = _resolve_build_context_settings(config)
|
|
79
|
+
if settings.strategy == "deterministic_only":
|
|
80
|
+
return None
|
|
81
|
+
return _runner_for(config, settings)
|
|
75
82
|
|
|
76
83
|
|
|
77
84
|
def get_build_knowledge_inner_agent_runner() -> IBuildKnowledgeAgentRunner | None:
|
|
@@ -138,6 +145,16 @@ def _resolve_settings(
|
|
|
138
145
|
)
|
|
139
146
|
|
|
140
147
|
|
|
148
|
+
def _resolve_build_context_settings(config: InternalAgentsConfig) -> InnerAgentSettings:
|
|
149
|
+
settings = _resolve_settings(config, config.build_context)
|
|
150
|
+
mode, _path, exists = load_recall_mode()
|
|
151
|
+
if not exists:
|
|
152
|
+
return settings
|
|
153
|
+
if mode == RECALL_MODE_FAST:
|
|
154
|
+
return settings.model_copy(update={"strategy": "deterministic_only"})
|
|
155
|
+
return settings.model_copy(update={"strategy": "deterministic_synthesis"})
|
|
156
|
+
|
|
157
|
+
|
|
141
158
|
def _select_provider(
|
|
142
159
|
config: InternalAgentsConfig,
|
|
143
160
|
requested_provider: str,
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
## Shellbrain
|
|
2
|
+
|
|
3
|
+
Use Shellbrain for targeted recall during agent work.
|
|
4
|
+
|
|
5
|
+
Keep this tuple in mind:
|
|
6
|
+
|
|
7
|
+
`goal | surface | obstacle | hypothesis`
|
|
8
|
+
|
|
9
|
+
Emit one `SB:` line when the tuple changes or you hit a boundary state:
|
|
10
|
+
|
|
11
|
+
- goal, surface, obstacle, or hypothesis changed
|
|
12
|
+
- same approach failed twice
|
|
13
|
+
- an error repeats
|
|
14
|
+
- you are about to make an evidence-bearing decision
|
|
15
|
+
- you switch files, subsystems, or strategy
|
|
16
|
+
- you are closing out
|
|
17
|
+
|
|
18
|
+
If prior context may help:
|
|
19
|
+
|
|
20
|
+
`SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
|
|
21
|
+
|
|
22
|
+
Then run:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
If recall would not help:
|
|
29
|
+
|
|
30
|
+
`SB: skip | same signature | <one-line reason>`
|
|
31
|
+
|
|
32
|
+
Then continue. Do not call recall reflexively.
|
|
33
|
+
|
|
34
|
+
Use `shellbrain recall` for normal task context. Use `shellbrain teach` only when the user explicitly asks you to store or teach Shellbrain something.
|
|
35
|
+
|
|
36
|
+
If you changed any files since your last user-facing response, run `shellbrain snapshot` exactly once after validation and immediately before your next user-facing response. Do this on every response cycle where files changed; skip only when no files changed.
|
|
37
|
+
|
|
38
|
+
Do not call `shellbrain read`, `shellbrain events`, `shellbrain memory`, `shellbrain concept`, or `shellbrain scenario`.
|
|
39
|
+
|
|
40
|
+
Use the installed `shellbrain` skill for the detailed recall workflow.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
## Shellbrain
|
|
2
|
+
|
|
3
|
+
Use Shellbrain for targeted recall during agent work.
|
|
4
|
+
|
|
5
|
+
Keep this tuple in mind:
|
|
6
|
+
|
|
7
|
+
`goal | surface | obstacle | hypothesis`
|
|
8
|
+
|
|
9
|
+
Emit one `SB:` line when the tuple changes or you hit a boundary state:
|
|
10
|
+
|
|
11
|
+
- goal, surface, obstacle, or hypothesis changed
|
|
12
|
+
- same approach failed twice
|
|
13
|
+
- an error repeats
|
|
14
|
+
- you are about to make an evidence-bearing decision
|
|
15
|
+
- you switch files, subsystems, or strategy
|
|
16
|
+
- you are closing out
|
|
17
|
+
|
|
18
|
+
If prior context may help:
|
|
19
|
+
|
|
20
|
+
`SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
|
|
21
|
+
|
|
22
|
+
Then run:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
If recall would not help:
|
|
29
|
+
|
|
30
|
+
`SB: skip | same signature | <one-line reason>`
|
|
31
|
+
|
|
32
|
+
Then continue. Do not call recall reflexively.
|
|
33
|
+
|
|
34
|
+
Use `shellbrain recall` for normal task context. Use `shellbrain teach` only when the user explicitly asks you to store or teach Shellbrain something.
|
|
35
|
+
|
|
36
|
+
If you changed any files since your last user-facing response, run `shellbrain snapshot` exactly once after validation and immediately before your next user-facing response. Do this on every response cycle where files changed; skip only when no files changed.
|
|
37
|
+
|
|
38
|
+
Do not call `shellbrain read`, `shellbrain events`, `shellbrain memory`, `shellbrain concept`, or `shellbrain scenario`.
|
|
39
|
+
|
|
40
|
+
Use the installed `shellbrain` skill for the detailed recall workflow.
|
|
@@ -343,6 +343,7 @@ app/infrastructure/local_state/init_lock.py
|
|
|
343
343
|
app/infrastructure/local_state/machine_config_store.py
|
|
344
344
|
app/infrastructure/local_state/operation_registration.py
|
|
345
345
|
app/infrastructure/local_state/paths.py
|
|
346
|
+
app/infrastructure/local_state/recall_mode_store.py
|
|
346
347
|
app/infrastructure/local_state/repo_registration_store.py
|
|
347
348
|
app/infrastructure/local_state/session_state_file_store.py
|
|
348
349
|
app/infrastructure/local_state/shadow_git_store.py
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
## Shellbrain
|
|
2
|
-
|
|
3
|
-
You have a persistent memory system called Shellbrain. This section exists to make you remember to use it at the right moments.
|
|
4
|
-
|
|
5
|
-
### The Core Habit
|
|
6
|
-
|
|
7
|
-
As you work, maintain a mental summary of your current subproblem as:
|
|
8
|
-
|
|
9
|
-
`goal | surface | obstacle | hypothesis`
|
|
10
|
-
|
|
11
|
-
When that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This keeps Shellbrain in your local attention so you can decide whether recall would help.
|
|
12
|
-
|
|
13
|
-
Boundary states:
|
|
14
|
-
|
|
15
|
-
- The goal, surface, obstacle, or hypothesis changed.
|
|
16
|
-
- The same approach failed twice.
|
|
17
|
-
- An error is repeating.
|
|
18
|
-
- You are about to make an evidence-bearing decision.
|
|
19
|
-
- You are switching files, subsystems, or implementation strategy.
|
|
20
|
-
- You are closing out a task.
|
|
21
|
-
|
|
22
|
-
### What To Say
|
|
23
|
-
|
|
24
|
-
If prior context might help:
|
|
25
|
-
|
|
26
|
-
`SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
|
|
27
|
-
|
|
28
|
-
Then call Shellbrain recall:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
If the tuple has not changed and there is no new evidence, failure, or uncertainty:
|
|
35
|
-
|
|
36
|
-
`SB: skip | same signature | <one-line reason>`
|
|
37
|
-
|
|
38
|
-
Then continue. Do not call recall reflexively.
|
|
39
|
-
|
|
40
|
-
### Worker Boundary
|
|
41
|
-
|
|
42
|
-
As the working agent, use `shellbrain recall` for normal task context. Use `shellbrain teach` only when the user explicitly asks you to store or teach Shellbrain something.
|
|
43
|
-
|
|
44
|
-
If you changed any files since your last user-facing response, run `shellbrain snapshot` exactly once after validation and immediately before your next user-facing response. Do this on every response cycle where files changed; skip only when no files changed.
|
|
45
|
-
|
|
46
|
-
Do not call `shellbrain read`, `shellbrain events`, `shellbrain memory`, `shellbrain concept`, or `shellbrain scenario`.
|
|
47
|
-
|
|
48
|
-
Shellbrain's internal agents handle raw retrieval, synthesis, memory writing, concept updates, scenario recording, and teach consolidation.
|
|
49
|
-
|
|
50
|
-
### Reference
|
|
51
|
-
|
|
52
|
-
Use the installed `shellbrain` skill for the detailed recall workflow.
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
## Shellbrain
|
|
2
|
-
|
|
3
|
-
You have a persistent memory system called Shellbrain. This section exists to make you remember to use it at the right moments.
|
|
4
|
-
|
|
5
|
-
### The Core Habit
|
|
6
|
-
|
|
7
|
-
As you work, maintain a mental summary of your current subproblem as:
|
|
8
|
-
|
|
9
|
-
`goal | surface | obstacle | hypothesis`
|
|
10
|
-
|
|
11
|
-
When that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This keeps Shellbrain in your local attention so you can decide whether recall would help.
|
|
12
|
-
|
|
13
|
-
Boundary states:
|
|
14
|
-
|
|
15
|
-
- The goal, surface, obstacle, or hypothesis changed.
|
|
16
|
-
- The same approach failed twice.
|
|
17
|
-
- An error is repeating.
|
|
18
|
-
- You are about to make an evidence-bearing decision.
|
|
19
|
-
- You are switching files, subsystems, or implementation strategy.
|
|
20
|
-
- You are closing out a task.
|
|
21
|
-
|
|
22
|
-
### What To Say
|
|
23
|
-
|
|
24
|
-
If prior context might help:
|
|
25
|
-
|
|
26
|
-
`SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
|
|
27
|
-
|
|
28
|
-
Then call Shellbrain recall:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
If the tuple has not changed and there is no new evidence, failure, or uncertainty:
|
|
35
|
-
|
|
36
|
-
`SB: skip | same signature | <one-line reason>`
|
|
37
|
-
|
|
38
|
-
Then continue. Do not call recall reflexively.
|
|
39
|
-
|
|
40
|
-
### Worker Boundary
|
|
41
|
-
|
|
42
|
-
As the working agent, use `shellbrain recall` for normal task context. Use `shellbrain teach` only when the user explicitly asks you to store or teach Shellbrain something.
|
|
43
|
-
|
|
44
|
-
If you changed any files since your last user-facing response, run `shellbrain snapshot` exactly once after validation and immediately before your next user-facing response. Do this on every response cycle where files changed; skip only when no files changed.
|
|
45
|
-
|
|
46
|
-
Do not call `shellbrain read`, `shellbrain events`, `shellbrain memory`, `shellbrain concept`, or `shellbrain scenario`.
|
|
47
|
-
|
|
48
|
-
Shellbrain's internal agents handle raw retrieval, synthesis, memory writing, concept updates, scenario recording, and teach consolidation.
|
|
49
|
-
|
|
50
|
-
### Reference
|
|
51
|
-
|
|
52
|
-
Use the installed `shellbrain` skill for the detailed recall workflow.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|