shellbrain 0.1.52__tar.gz → 0.1.54__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/PKG-INFO +137 -0
- shellbrain-0.1.54/README.md +123 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/build_context/execute.py +1 -1
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/parser/builder.py +0 -19
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/runner.py +0 -9
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/runtime.py +0 -1
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/inner_agents/prompt.py +9 -4
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/settings/internal-agents/defaults.yaml +1 -1
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/cli.py +0 -2
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/cli_runtime.py +0 -1
- {shellbrain-0.1.52 → shellbrain-0.1.54}/pyproject.toml +1 -1
- shellbrain-0.1.54/shellbrain.egg-info/PKG-INFO +137 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/shellbrain.egg-info/SOURCES.txt +0 -15
- shellbrain-0.1.52/PKG-INFO +0 -141
- shellbrain-0.1.52/README.md +0 -127
- shellbrain-0.1.52/app/core/ports/reporting/__init__.py +0 -1
- shellbrain-0.1.52/app/core/ports/reporting/metrics.py +0 -32
- shellbrain-0.1.52/app/core/use_cases/metrics/build_snapshot.py +0 -496
- shellbrain-0.1.52/app/core/use_cases/metrics/generate_dashboard.py +0 -82
- shellbrain-0.1.52/app/entrypoints/cli/handlers/human/metrics.py +0 -38
- shellbrain-0.1.52/app/entrypoints/cli/presenters/metrics.py +0 -26
- shellbrain-0.1.52/app/infrastructure/db/runtime/queries/metrics.py +0 -219
- shellbrain-0.1.52/app/infrastructure/db/runtime/queries/metrics_adapter.py +0 -54
- shellbrain-0.1.52/app/infrastructure/reporting/__init__.py +0 -1
- shellbrain-0.1.52/app/infrastructure/reporting/metrics/__init__.py +0 -1
- shellbrain-0.1.52/app/infrastructure/reporting/metrics/artifacts.py +0 -65
- shellbrain-0.1.52/app/infrastructure/reporting/metrics/browser.py +0 -12
- shellbrain-0.1.52/app/infrastructure/reporting/metrics/pager.py +0 -274
- shellbrain-0.1.52/app/infrastructure/reporting/metrics/render_html.py +0 -782
- shellbrain-0.1.52/app/startup/metrics.py +0 -64
- shellbrain-0.1.52/shellbrain.egg-info/PKG-INFO +0 -141
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/__main__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/admin_errors.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/associations.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/backups.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/concepts.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/episodes.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/evidence.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/guidance.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/identity.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/ids.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/inner_agents.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/knowledge_builder.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/machine_config.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/memories.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/runtime_context.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/scenarios.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/session_state.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/settings.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/snapshots.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/structural_memory_relations.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/entities/utility.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/errors.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/concepts/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/concepts/relation_rules.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/concepts/search_text.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/episodes/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/episodes/event_content.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/episodes/knowledge_building.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/memories/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/memories/add_plan.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/memories/link_rules.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/memories/update_plan.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/retrieval/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/retrieval/bm25.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/retrieval/context_pack.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/retrieval/expansion.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/retrieval/fusion_rrf.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/retrieval/lexical_query.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/retrieval/ontology_semantics.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/policies/retrieval/scoring.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/concept_repositories.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/episode_repositories.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/guidance.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/knowledge_builder.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/memory_repositories.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/problem_runs.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/retrieval_repositories.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/snapshots.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/db/unit_of_work.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/embeddings/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/embeddings/provider.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/embeddings/retrieval.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/host_apps/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/host_apps/inner_agents.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/local_state/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/local_state/session_state_store.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/local_state/shadow_git.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/system/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/system/clock.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/ports/system/idgen.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/create_backup.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/initialize_runtime.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/restore_backup.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/admin/verify_backup.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/build_guidance.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/add/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/add/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/add/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/add/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/containment_checks.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/embeddings.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/reference_checks.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/show/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/show/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/show/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/show/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/update/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/update/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/update/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/update/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/concepts/views.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/episodes/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/episodes/events/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/episodes/events/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/add/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/add/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/add/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/add/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/effect_plan.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/reference_checks.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/update/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/update/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/update/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/memories/update/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/metrics/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/plan_execution.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/context_pack_pipeline.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/deterministic_graph_recall.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/expansion.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/read/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/read/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/read/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/read/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/read_concepts.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/recall/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/recall/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/recall/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/recall/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/scenarios/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/scenarios/record/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/scenarios/record/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/scenarios/record/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/scenarios/record/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/snapshots/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/snapshots/code_delta_context/execute.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/error_responses.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/dependencies.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/human/admin.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/human/admin_dependencies.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/human/init.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/human/upgrade.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/session_state.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/working_agent/snapshot.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/main.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/operation_command.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/parser/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/presenters/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/presenters/init.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/presenters/json.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/memories.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/cli/request_parsing/teach.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/host_hooks/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/jobs/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/entrypoints/jobs/episode_sync.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/app_role_safety.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/backups/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/backups/restore.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/connection.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/instance_guard.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/migrations.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/privileges.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/admin/storage_setup.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/engine.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/associations.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/concepts.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/episodes.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/evidence.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/experiences.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/memories.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/metadata.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/registry.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/utility.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/models/views.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/session.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/db/runtime/uow.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/embeddings/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/embeddings/local_provider.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/embeddings/prewarm.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/embeddings/query_vector_search.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/claude.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/codex.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/cursor.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/inspection.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/paths.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/service.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/assets/types.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/identity/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/identity/resolver.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/init_lock.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/machine_config_store.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/operation_registration.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/paths.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/recall_mode_store.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/repo_registration_store.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/session_state_file_store.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/local_state/shadow_git_store.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/process/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/process/episode_sync/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/process/episode_sync/autostart.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/process/episode_sync/launcher.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/process/episode_sync/poller.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/process/episode_sync/status_store.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/system/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/system/clock.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/system/id_generator.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/system/package_upgrade.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/operation_invocations.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/operation_polling.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/read_records.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/recall_records.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/recorder.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/records.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/sink.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/storage_protocols.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/sync_records.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/infrastructure/telemetry/write_records.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/settings/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/settings/defaults/create_policy.yaml +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/settings/defaults/read_policy.yaml +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/settings/defaults/runtime.yaml +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/settings/defaults/thresholds.yaml +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/settings/defaults/update_policy.yaml +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/admin.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/admin_db.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/admin_dependencies.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/admin_diagnose.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/analytics.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/backup.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/config.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/create_policy.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/db.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/dsn_resolution.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/embeddings.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/episode_poller.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/episode_sync_launcher.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/host_hooks.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/internal_agent_config.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/internal_agents.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/knowledge_builder.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/migrations.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/model_usage_backfill.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/operation_dependencies.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/read_policy.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/repo_context.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/repos.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/retrieval.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/runtime_admin.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/runtime_context.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/settings.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/snapshot_baseline.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/thresholds.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/update_policy.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/app/startup/use_cases.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/_legacy_usage_views.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/_usage_view_sql.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/env.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260226_0001_initial_schema.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260422_0015_problem_runs.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260515_0019_scenario_records.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/20260815_0038_drop_wiki_summaries.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/migrations/versions/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/__init__.py +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/claude/CLAUDE.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/AGENTS.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/setup.cfg +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/shellbrain.egg-info/dependency_links.txt +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/shellbrain.egg-info/entry_points.txt +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/shellbrain.egg-info/requires.txt +0 -0
- {shellbrain-0.1.52 → shellbrain-0.1.54}/shellbrain.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: shellbrain
|
|
3
|
+
Version: 0.1.54
|
|
4
|
+
Summary: Repo-scoped Shellbrain CLI with explicit evidence-backed writes.
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: SQLAlchemy<3.0,>=2.0
|
|
8
|
+
Requires-Dist: alembic<2.0,>=1.13
|
|
9
|
+
Requires-Dist: pydantic<3.0,>=2.7
|
|
10
|
+
Requires-Dist: PyYAML<7.0,>=6.0
|
|
11
|
+
Requires-Dist: psycopg[binary]<4.0,>=3.1
|
|
12
|
+
Requires-Dist: pgvector<1.0,>=0.3
|
|
13
|
+
Requires-Dist: sentence-transformers<4.0,>=3.0
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<img src="https://raw.githubusercontent.com/cucupac/shellbrain/main/docs/assets/shellbrain_logo_badge.png" alt="ShellBrain logo" height="88">
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<h3 align="center">ShellBrain</h3>
|
|
20
|
+
|
|
21
|
+
<p align="center">Long-term Memory for AI Agents.</p>
|
|
22
|
+
|
|
23
|
+
ShellBrain gives AI agents memory, so they can store and reuse what they learn over time.
|
|
24
|
+
|
|
25
|
+
## Install
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
curl -L shellbrain.ai/install | bash
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Works for Codex, Claude Code, and Cursor.** The installer runs `shellbrain init` for you. Repos register themselves on first use.
|
|
32
|
+
|
|
33
|
+
Requirements.
|
|
34
|
+
- macOS or Linux, Python 3.11+, Docker for the managed local Postgres+pgvector runtime.
|
|
35
|
+
|
|
36
|
+
### Upgrade for latest capabilities
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
shellbrain upgrade
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
You can also run `curl -L shellbrain.ai/upgrade | bash`. Manual alternative: `pipx upgrade shellbrain && shellbrain init`.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Recall in one command
|
|
47
|
+
|
|
48
|
+
<p align="center">
|
|
49
|
+
<img src="docs/assets/shellbrain-recall-context-diagram.png" alt="ShellBrain recall uses vector search and BM25 to search your memories. An inner recall agent summarizes the search results." width="720">
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Architecture
|
|
55
|
+
|
|
56
|
+
ShellBrain builds memory in three grounded layers:
|
|
57
|
+
|
|
58
|
+
- **Episodic knowledge records evidence.** It stores prompts, agent steps, tool calls, and outputs from each session.
|
|
59
|
+
- **Empirical knowledge extracts concrete memories.** It organizes problems, solutions, failed tactics, facts, preferences, and changes in a semantic graph for **case-based reasoning**.
|
|
60
|
+
- **Conceptual knowledge abstracts reusable ideas.** Its concept graph connects claims, relations, and implementations to empirical knowledge.
|
|
61
|
+
|
|
62
|
+
Each higher layer links to evidence in the layer below it. Agents receive a compact orientation first, then request more detail when needed.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## How Agents Use ShellBrain
|
|
67
|
+
|
|
68
|
+
### Recall
|
|
69
|
+
|
|
70
|
+
Working agents run `shellbrain recall` to get one compact brief for the current task.
|
|
71
|
+
|
|
72
|
+
Recall receives only the quoted query. Include the relevant task, failure, subsystem, or decision in the question.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
shellbrain recall "What is ShellBrain, and how does it help a working coding agent?"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Response format:**
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"status": "ok",
|
|
83
|
+
"data": {
|
|
84
|
+
"brief": {
|
|
85
|
+
"summary": "...",
|
|
86
|
+
"constraints": ["..."],
|
|
87
|
+
"known_traps": ["..."],
|
|
88
|
+
"prior_cases": ["..."],
|
|
89
|
+
"concept_orientation": ["..."],
|
|
90
|
+
"anchors": ["`README.md`"],
|
|
91
|
+
"conflicts": ["..."],
|
|
92
|
+
"gaps": ["..."],
|
|
93
|
+
"next_checks": ["..."]
|
|
94
|
+
},
|
|
95
|
+
"fallback_reason": null
|
|
96
|
+
},
|
|
97
|
+
"errors": []
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The brief lets the working agent focus on the current task.
|
|
102
|
+
|
|
103
|
+
### Teach
|
|
104
|
+
|
|
105
|
+
Run `shellbrain teach` only when you explicitly want ShellBrain to remember something important.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Memory Discipline
|
|
110
|
+
|
|
111
|
+
ShellBrain keeps memory grounded in evidence and narrow in scope. Agents request memory when they need it.
|
|
112
|
+
|
|
113
|
+
**Memory that cannot justify itself should not persist.**
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Use ShellBrain
|
|
118
|
+
|
|
119
|
+
Use Shellbrain with your preferred agent. Then work as usual.
|
|
120
|
+
|
|
121
|
+
- **Claude Code:** Use `/shellbrain` to recall context at task boundaries.
|
|
122
|
+
- **Codex:** Use $shellbrain to recall context at task boundaries.
|
|
123
|
+
- **Cursor:** Use `/shellbrain` to recall context at task boundaries.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Repair
|
|
128
|
+
|
|
129
|
+
Run `shellbrain admin doctor` to inspect the installation. If it reports a problem, run `shellbrain init`. Do not run init every session.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Docs
|
|
134
|
+
|
|
135
|
+
- [For Humans](https://shellbrain.ai/humans/): installation, upgrades, and first steps
|
|
136
|
+
- [For Agents](https://shellbrain.ai/agents/): agent workflow and memory rules
|
|
137
|
+
- [Technical Docs](https://deepwiki.com/cucupac/shellbrain): detailed documentation and code map
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/cucupac/shellbrain/main/docs/assets/shellbrain_logo_badge.png" alt="ShellBrain logo" height="88">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h3 align="center">ShellBrain</h3>
|
|
6
|
+
|
|
7
|
+
<p align="center">Long-term Memory for AI Agents.</p>
|
|
8
|
+
|
|
9
|
+
ShellBrain gives AI agents memory, so they can store and reuse what they learn over time.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
curl -L shellbrain.ai/install | bash
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Works for Codex, Claude Code, and Cursor.** The installer runs `shellbrain init` for you. Repos register themselves on first use.
|
|
18
|
+
|
|
19
|
+
Requirements.
|
|
20
|
+
- macOS or Linux, Python 3.11+, Docker for the managed local Postgres+pgvector runtime.
|
|
21
|
+
|
|
22
|
+
### Upgrade for latest capabilities
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
shellbrain upgrade
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
You can also run `curl -L shellbrain.ai/upgrade | bash`. Manual alternative: `pipx upgrade shellbrain && shellbrain init`.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Recall in one command
|
|
33
|
+
|
|
34
|
+
<p align="center">
|
|
35
|
+
<img src="docs/assets/shellbrain-recall-context-diagram.png" alt="ShellBrain recall uses vector search and BM25 to search your memories. An inner recall agent summarizes the search results." width="720">
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Architecture
|
|
41
|
+
|
|
42
|
+
ShellBrain builds memory in three grounded layers:
|
|
43
|
+
|
|
44
|
+
- **Episodic knowledge records evidence.** It stores prompts, agent steps, tool calls, and outputs from each session.
|
|
45
|
+
- **Empirical knowledge extracts concrete memories.** It organizes problems, solutions, failed tactics, facts, preferences, and changes in a semantic graph for **case-based reasoning**.
|
|
46
|
+
- **Conceptual knowledge abstracts reusable ideas.** Its concept graph connects claims, relations, and implementations to empirical knowledge.
|
|
47
|
+
|
|
48
|
+
Each higher layer links to evidence in the layer below it. Agents receive a compact orientation first, then request more detail when needed.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## How Agents Use ShellBrain
|
|
53
|
+
|
|
54
|
+
### Recall
|
|
55
|
+
|
|
56
|
+
Working agents run `shellbrain recall` to get one compact brief for the current task.
|
|
57
|
+
|
|
58
|
+
Recall receives only the quoted query. Include the relevant task, failure, subsystem, or decision in the question.
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
shellbrain recall "What is ShellBrain, and how does it help a working coding agent?"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Response format:**
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"status": "ok",
|
|
69
|
+
"data": {
|
|
70
|
+
"brief": {
|
|
71
|
+
"summary": "...",
|
|
72
|
+
"constraints": ["..."],
|
|
73
|
+
"known_traps": ["..."],
|
|
74
|
+
"prior_cases": ["..."],
|
|
75
|
+
"concept_orientation": ["..."],
|
|
76
|
+
"anchors": ["`README.md`"],
|
|
77
|
+
"conflicts": ["..."],
|
|
78
|
+
"gaps": ["..."],
|
|
79
|
+
"next_checks": ["..."]
|
|
80
|
+
},
|
|
81
|
+
"fallback_reason": null
|
|
82
|
+
},
|
|
83
|
+
"errors": []
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The brief lets the working agent focus on the current task.
|
|
88
|
+
|
|
89
|
+
### Teach
|
|
90
|
+
|
|
91
|
+
Run `shellbrain teach` only when you explicitly want ShellBrain to remember something important.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Memory Discipline
|
|
96
|
+
|
|
97
|
+
ShellBrain keeps memory grounded in evidence and narrow in scope. Agents request memory when they need it.
|
|
98
|
+
|
|
99
|
+
**Memory that cannot justify itself should not persist.**
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Use ShellBrain
|
|
104
|
+
|
|
105
|
+
Use Shellbrain with your preferred agent. Then work as usual.
|
|
106
|
+
|
|
107
|
+
- **Claude Code:** Use `/shellbrain` to recall context at task boundaries.
|
|
108
|
+
- **Codex:** Use $shellbrain to recall context at task boundaries.
|
|
109
|
+
- **Cursor:** Use `/shellbrain` to recall context at task boundaries.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Repair
|
|
114
|
+
|
|
115
|
+
Run `shellbrain admin doctor` to inspect the installation. If it reports a problem, run `shellbrain init`. Do not run init every session.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Docs
|
|
120
|
+
|
|
121
|
+
- [For Humans](https://shellbrain.ai/humans/): installation, upgrades, and first steps
|
|
122
|
+
- [For Agents](https://shellbrain.ai/agents/): agent workflow and memory rules
|
|
123
|
+
- [Technical Docs](https://deepwiki.com/cucupac/shellbrain): detailed documentation and code map
|
|
@@ -38,7 +38,6 @@ _TOP_LEVEL_HELP = dedent(
|
|
|
38
38
|
- Bootstrap or repair with `shellbrain init`.
|
|
39
39
|
- Upgrade with `shellbrain upgrade`.
|
|
40
40
|
- Check health with `shellbrain admin doctor`.
|
|
41
|
-
- Review usage with `shellbrain metrics`.
|
|
42
41
|
|
|
43
42
|
Working agents:
|
|
44
43
|
- Use `shellbrain recall` for normal task context.
|
|
@@ -68,7 +67,6 @@ _TOP_LEVEL_HELP = dedent(
|
|
|
68
67
|
Humans:
|
|
69
68
|
shellbrain init
|
|
70
69
|
shellbrain upgrade
|
|
71
|
-
shellbrain metrics
|
|
72
70
|
shellbrain admin doctor
|
|
73
71
|
shellbrain admin migrate
|
|
74
72
|
|
|
@@ -386,15 +384,6 @@ _BACKFILL_TOKEN_USAGE_HELP = dedent(
|
|
|
386
384
|
"""
|
|
387
385
|
)
|
|
388
386
|
|
|
389
|
-
_METRICS_HELP = dedent(
|
|
390
|
-
"""\
|
|
391
|
-
Generate lightweight metrics snapshots, write local artifacts, and open one browser dashboard that switches repos with arrow keys.
|
|
392
|
-
|
|
393
|
-
Example:
|
|
394
|
-
shellbrain metrics
|
|
395
|
-
"""
|
|
396
|
-
)
|
|
397
|
-
|
|
398
387
|
_INSTALL_CLAUDE_HOOK_HELP = dedent(
|
|
399
388
|
"""\
|
|
400
389
|
Install or update the repo-local Claude Code SessionStart hook used as an explicit repo-local override.
|
|
@@ -499,14 +488,6 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
499
488
|
formatter_class=_HelpFormatter,
|
|
500
489
|
)
|
|
501
490
|
|
|
502
|
-
subparsers.add_parser(
|
|
503
|
-
"metrics",
|
|
504
|
-
help="Browse Shellbrain metrics across repos.",
|
|
505
|
-
description="Generate local metrics snapshots and open one browser dashboard for all repos.",
|
|
506
|
-
epilog=_METRICS_HELP,
|
|
507
|
-
formatter_class=_HelpFormatter,
|
|
508
|
-
)
|
|
509
|
-
|
|
510
491
|
read_parser = subparsers.add_parser(
|
|
511
492
|
"read",
|
|
512
493
|
help="Read Shellbrain context without mutating state.",
|
|
@@ -89,15 +89,6 @@ def main(
|
|
|
89
89
|
|
|
90
90
|
return run_upgrade_command(run_upgrade_command=runtime.run_upgrade_command)
|
|
91
91
|
|
|
92
|
-
if args.command == "metrics":
|
|
93
|
-
from app.entrypoints.cli.handlers.human.metrics import run_metrics_command
|
|
94
|
-
|
|
95
|
-
return run_metrics_command(
|
|
96
|
-
args,
|
|
97
|
-
warn_or_fail_on_unsafe_app_role=runtime.warn_or_fail_on_unsafe_app_role,
|
|
98
|
-
run_metrics_dashboard=runtime.run_metrics_dashboard,
|
|
99
|
-
)
|
|
100
|
-
|
|
101
92
|
if args.command == "admin":
|
|
102
93
|
from app.entrypoints.cli.handlers.human.admin import run_admin_command
|
|
103
94
|
|
|
@@ -77,7 +77,7 @@ shellbrain --no-sync --repo-root "<repo_root>" concept show --help
|
|
|
77
77
|
|
|
78
78
|
Do not run `shellbrain recall`.
|
|
79
79
|
Do not write memories, concepts, scenarios, files, settings, or database data.
|
|
80
|
-
Do not run `admin`, `init`,
|
|
80
|
+
Do not run `admin`, `init`, or `upgrade` commands.
|
|
81
81
|
|
|
82
82
|
# PROTOCOL
|
|
83
83
|
1. Read `query`, `repo_root`, and the budgets from the payload.
|
|
@@ -291,6 +291,11 @@ Leave a section empty when it has no useful content.
|
|
|
291
291
|
Summary: max two sentences. Lists: max three items. Items: max one sentence.
|
|
292
292
|
Keep visible anchors minimal because full provenance belongs in telemetry.
|
|
293
293
|
|
|
294
|
+
# OUTPUT BUDGET
|
|
295
|
+
Treat `max_brief_tokens` as the limit for the complete brief.
|
|
296
|
+
Keep every relevant constraint, trap, conflict, and warning before background context.
|
|
297
|
+
Do not fill the budget when a shorter brief is useful.
|
|
298
|
+
|
|
294
299
|
# OUTPUT
|
|
295
300
|
Return only valid JSON matching `output_contract`. Return a `brief` object only.
|
|
296
301
|
Keep each list compact.
|
|
@@ -451,7 +456,7 @@ Do not edit files.
|
|
|
451
456
|
Do not run a formatter that writes files.
|
|
452
457
|
Do not commit or push.
|
|
453
458
|
Do not run `shellbrain recall` or `shellbrain snapshot`.
|
|
454
|
-
Do not run `admin`, `init`,
|
|
459
|
+
Do not run `admin`, `init`, or `upgrade` commands.
|
|
455
460
|
Do not write directly to the database.
|
|
456
461
|
Do not use `graph_patches`.
|
|
457
462
|
Do not use a write command that this prompt does not list.
|
|
@@ -707,7 +712,7 @@ shellbrain --repo-root "<repo_root>" concept update --help
|
|
|
707
712
|
```
|
|
708
713
|
|
|
709
714
|
Forbidden: `shellbrain events`, `shellbrain scenario record`, `shellbrain
|
|
710
|
-
recall`, `shellbrain snapshot`, admin/init/upgrade
|
|
715
|
+
recall`, `shellbrain snapshot`, admin/init/upgrade, direct DB writes,
|
|
711
716
|
editing files, formatters, commits, pushes, and any write command not listed
|
|
712
717
|
above.
|
|
713
718
|
|
|
@@ -859,7 +864,7 @@ def render_build_context_prompt(request: InnerAgentRunRequest) -> str:
|
|
|
859
864
|
"shellbrain concept add",
|
|
860
865
|
"shellbrain concept update",
|
|
861
866
|
"shellbrain scenario record",
|
|
862
|
-
"any admin, init, upgrade,
|
|
867
|
+
"any admin, init, upgrade, or durable write command",
|
|
863
868
|
],
|
|
864
869
|
"output_contract": {
|
|
865
870
|
"brief": {
|
|
@@ -13,7 +13,6 @@ def build_cli_runtime():
|
|
|
13
13
|
|
|
14
14
|
from app.startup import create_policy
|
|
15
15
|
from app.startup import episode_sync_launcher
|
|
16
|
-
from app.startup import metrics as startup_metrics
|
|
17
16
|
from app.startup import operation_dependencies
|
|
18
17
|
from app.startup import read_policy
|
|
19
18
|
from app.startup import repo_context
|
|
@@ -63,7 +62,6 @@ def build_cli_runtime():
|
|
|
63
62
|
init_success_presenter_context=runtime_admin.init_success_presenter_context,
|
|
64
63
|
run_upgrade_command=run_upgrade_command,
|
|
65
64
|
warn_or_fail_on_unsafe_app_role=warn_or_fail_on_unsafe_app_role,
|
|
66
|
-
run_metrics_dashboard=startup_metrics.run_metrics_dashboard,
|
|
67
65
|
admin_dependencies=build_admin_command_dependencies(),
|
|
68
66
|
)
|
|
69
67
|
|
|
@@ -35,5 +35,4 @@ class CliRuntime:
|
|
|
35
35
|
init_success_presenter_context: Callable[[], dict[str, Any]]
|
|
36
36
|
run_upgrade_command: Callable[[], int]
|
|
37
37
|
warn_or_fail_on_unsafe_app_role: Callable[[], None]
|
|
38
|
-
run_metrics_dashboard: Callable[..., object]
|
|
39
38
|
admin_dependencies: AdminCommandDependencies
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: shellbrain
|
|
3
|
+
Version: 0.1.54
|
|
4
|
+
Summary: Repo-scoped Shellbrain CLI with explicit evidence-backed writes.
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: SQLAlchemy<3.0,>=2.0
|
|
8
|
+
Requires-Dist: alembic<2.0,>=1.13
|
|
9
|
+
Requires-Dist: pydantic<3.0,>=2.7
|
|
10
|
+
Requires-Dist: PyYAML<7.0,>=6.0
|
|
11
|
+
Requires-Dist: psycopg[binary]<4.0,>=3.1
|
|
12
|
+
Requires-Dist: pgvector<1.0,>=0.3
|
|
13
|
+
Requires-Dist: sentence-transformers<4.0,>=3.0
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<img src="https://raw.githubusercontent.com/cucupac/shellbrain/main/docs/assets/shellbrain_logo_badge.png" alt="ShellBrain logo" height="88">
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<h3 align="center">ShellBrain</h3>
|
|
20
|
+
|
|
21
|
+
<p align="center">Long-term Memory for AI Agents.</p>
|
|
22
|
+
|
|
23
|
+
ShellBrain gives AI agents memory, so they can store and reuse what they learn over time.
|
|
24
|
+
|
|
25
|
+
## Install
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
curl -L shellbrain.ai/install | bash
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Works for Codex, Claude Code, and Cursor.** The installer runs `shellbrain init` for you. Repos register themselves on first use.
|
|
32
|
+
|
|
33
|
+
Requirements.
|
|
34
|
+
- macOS or Linux, Python 3.11+, Docker for the managed local Postgres+pgvector runtime.
|
|
35
|
+
|
|
36
|
+
### Upgrade for latest capabilities
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
shellbrain upgrade
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
You can also run `curl -L shellbrain.ai/upgrade | bash`. Manual alternative: `pipx upgrade shellbrain && shellbrain init`.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Recall in one command
|
|
47
|
+
|
|
48
|
+
<p align="center">
|
|
49
|
+
<img src="docs/assets/shellbrain-recall-context-diagram.png" alt="ShellBrain recall uses vector search and BM25 to search your memories. An inner recall agent summarizes the search results." width="720">
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Architecture
|
|
55
|
+
|
|
56
|
+
ShellBrain builds memory in three grounded layers:
|
|
57
|
+
|
|
58
|
+
- **Episodic knowledge records evidence.** It stores prompts, agent steps, tool calls, and outputs from each session.
|
|
59
|
+
- **Empirical knowledge extracts concrete memories.** It organizes problems, solutions, failed tactics, facts, preferences, and changes in a semantic graph for **case-based reasoning**.
|
|
60
|
+
- **Conceptual knowledge abstracts reusable ideas.** Its concept graph connects claims, relations, and implementations to empirical knowledge.
|
|
61
|
+
|
|
62
|
+
Each higher layer links to evidence in the layer below it. Agents receive a compact orientation first, then request more detail when needed.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## How Agents Use ShellBrain
|
|
67
|
+
|
|
68
|
+
### Recall
|
|
69
|
+
|
|
70
|
+
Working agents run `shellbrain recall` to get one compact brief for the current task.
|
|
71
|
+
|
|
72
|
+
Recall receives only the quoted query. Include the relevant task, failure, subsystem, or decision in the question.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
shellbrain recall "What is ShellBrain, and how does it help a working coding agent?"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Response format:**
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"status": "ok",
|
|
83
|
+
"data": {
|
|
84
|
+
"brief": {
|
|
85
|
+
"summary": "...",
|
|
86
|
+
"constraints": ["..."],
|
|
87
|
+
"known_traps": ["..."],
|
|
88
|
+
"prior_cases": ["..."],
|
|
89
|
+
"concept_orientation": ["..."],
|
|
90
|
+
"anchors": ["`README.md`"],
|
|
91
|
+
"conflicts": ["..."],
|
|
92
|
+
"gaps": ["..."],
|
|
93
|
+
"next_checks": ["..."]
|
|
94
|
+
},
|
|
95
|
+
"fallback_reason": null
|
|
96
|
+
},
|
|
97
|
+
"errors": []
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The brief lets the working agent focus on the current task.
|
|
102
|
+
|
|
103
|
+
### Teach
|
|
104
|
+
|
|
105
|
+
Run `shellbrain teach` only when you explicitly want ShellBrain to remember something important.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Memory Discipline
|
|
110
|
+
|
|
111
|
+
ShellBrain keeps memory grounded in evidence and narrow in scope. Agents request memory when they need it.
|
|
112
|
+
|
|
113
|
+
**Memory that cannot justify itself should not persist.**
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Use ShellBrain
|
|
118
|
+
|
|
119
|
+
Use Shellbrain with your preferred agent. Then work as usual.
|
|
120
|
+
|
|
121
|
+
- **Claude Code:** Use `/shellbrain` to recall context at task boundaries.
|
|
122
|
+
- **Codex:** Use $shellbrain to recall context at task boundaries.
|
|
123
|
+
- **Cursor:** Use `/shellbrain` to recall context at task boundaries.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Repair
|
|
128
|
+
|
|
129
|
+
Run `shellbrain admin doctor` to inspect the installation. If it reports a problem, run `shellbrain init`. Do not run init every session.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Docs
|
|
134
|
+
|
|
135
|
+
- [For Humans](https://shellbrain.ai/humans/): installation, upgrades, and first steps
|
|
136
|
+
- [For Agents](https://shellbrain.ai/agents/): agent workflow and memory rules
|
|
137
|
+
- [Technical Docs](https://deepwiki.com/cucupac/shellbrain): detailed documentation and code map
|
|
@@ -63,8 +63,6 @@ app/core/ports/host_apps/inner_agents.py
|
|
|
63
63
|
app/core/ports/local_state/__init__.py
|
|
64
64
|
app/core/ports/local_state/session_state_store.py
|
|
65
65
|
app/core/ports/local_state/shadow_git.py
|
|
66
|
-
app/core/ports/reporting/__init__.py
|
|
67
|
-
app/core/ports/reporting/metrics.py
|
|
68
66
|
app/core/ports/system/__init__.py
|
|
69
67
|
app/core/ports/system/clock.py
|
|
70
68
|
app/core/ports/system/idgen.py
|
|
@@ -130,8 +128,6 @@ app/core/use_cases/memories/update/request.py
|
|
|
130
128
|
app/core/use_cases/memories/update/result.py
|
|
131
129
|
app/core/use_cases/metrics/__init__.py
|
|
132
130
|
app/core/use_cases/metrics/analyze_agent_behavior.py
|
|
133
|
-
app/core/use_cases/metrics/build_snapshot.py
|
|
134
|
-
app/core/use_cases/metrics/generate_dashboard.py
|
|
135
131
|
app/core/use_cases/retrieval/__init__.py
|
|
136
132
|
app/core/use_cases/retrieval/concept_seed_retrieval.py
|
|
137
133
|
app/core/use_cases/retrieval/context_pack_pipeline.py
|
|
@@ -178,7 +174,6 @@ app/entrypoints/cli/handlers/human/__init__.py
|
|
|
178
174
|
app/entrypoints/cli/handlers/human/admin.py
|
|
179
175
|
app/entrypoints/cli/handlers/human/admin_dependencies.py
|
|
180
176
|
app/entrypoints/cli/handlers/human/init.py
|
|
181
|
-
app/entrypoints/cli/handlers/human/metrics.py
|
|
182
177
|
app/entrypoints/cli/handlers/human/upgrade.py
|
|
183
178
|
app/entrypoints/cli/handlers/internal_agent/__init__.py
|
|
184
179
|
app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py
|
|
@@ -207,7 +202,6 @@ app/entrypoints/cli/parser/builder.py
|
|
|
207
202
|
app/entrypoints/cli/presenters/__init__.py
|
|
208
203
|
app/entrypoints/cli/presenters/init.py
|
|
209
204
|
app/entrypoints/cli/presenters/json.py
|
|
210
|
-
app/entrypoints/cli/presenters/metrics.py
|
|
211
205
|
app/entrypoints/cli/request_parsing/__init__.py
|
|
212
206
|
app/entrypoints/cli/request_parsing/concepts.py
|
|
213
207
|
app/entrypoints/cli/request_parsing/episodes.py
|
|
@@ -265,8 +259,6 @@ app/infrastructure/db/runtime/models/views.py
|
|
|
265
259
|
app/infrastructure/db/runtime/queries/__init__.py
|
|
266
260
|
app/infrastructure/db/runtime/queries/agent_behavior.py
|
|
267
261
|
app/infrastructure/db/runtime/queries/analytics.py
|
|
268
|
-
app/infrastructure/db/runtime/queries/metrics.py
|
|
269
|
-
app/infrastructure/db/runtime/queries/metrics_adapter.py
|
|
270
262
|
app/infrastructure/db/runtime/queries/model_usage_backfill.py
|
|
271
263
|
app/infrastructure/db/runtime/repos/__init__.py
|
|
272
264
|
app/infrastructure/db/runtime/repos/relational/__init__.py
|
|
@@ -340,12 +332,6 @@ app/infrastructure/process/episode_sync/launcher.py
|
|
|
340
332
|
app/infrastructure/process/episode_sync/lock_file.py
|
|
341
333
|
app/infrastructure/process/episode_sync/poller.py
|
|
342
334
|
app/infrastructure/process/episode_sync/status_store.py
|
|
343
|
-
app/infrastructure/reporting/__init__.py
|
|
344
|
-
app/infrastructure/reporting/metrics/__init__.py
|
|
345
|
-
app/infrastructure/reporting/metrics/artifacts.py
|
|
346
|
-
app/infrastructure/reporting/metrics/browser.py
|
|
347
|
-
app/infrastructure/reporting/metrics/pager.py
|
|
348
|
-
app/infrastructure/reporting/metrics/render_html.py
|
|
349
335
|
app/infrastructure/system/__init__.py
|
|
350
336
|
app/infrastructure/system/clock.py
|
|
351
337
|
app/infrastructure/system/id_generator.py
|
|
@@ -389,7 +375,6 @@ app/startup/host_hooks.py
|
|
|
389
375
|
app/startup/internal_agent_config.py
|
|
390
376
|
app/startup/internal_agents.py
|
|
391
377
|
app/startup/knowledge_builder.py
|
|
392
|
-
app/startup/metrics.py
|
|
393
378
|
app/startup/migrations.py
|
|
394
379
|
app/startup/model_usage_backfill.py
|
|
395
380
|
app/startup/operation_dependencies.py
|