shellbrain 0.1.49__tar.gz → 0.1.51__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.49 → shellbrain-0.1.51}/PKG-INFO +1 -1
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/concepts.py +0 -1
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/evidence.py +0 -21
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/inner_agents.py +1 -16
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/concept_repositories.py +0 -12
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/memory_repositories.py +0 -13
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/unit_of_work.py +0 -4
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/host_apps/inner_agents.py +0 -46
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/parser/builder.py +0 -40
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/runner.py +0 -10
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/runtime.py +0 -1
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/registry.py +0 -2
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -65
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -62
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -23
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/uow.py +0 -8
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -57
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/inner_agents/codex_cli.py +1 -121
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -23
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/inner_agents/prompt.py +0 -52
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/settings/internal-agents/defaults.yaml +3 -16
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/cli.py +0 -2
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/cli_runtime.py +0 -1
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/internal_agent_config.py +7 -4
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/internal_agents.py +2 -18
- shellbrain-0.1.51/migrations/versions/20260815_0038_drop_wiki_summaries.py +85 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/pyproject.toml +1 -1
- {shellbrain-0.1.49 → shellbrain-0.1.51}/shellbrain.egg-info/PKG-INFO +1 -1
- {shellbrain-0.1.49 → shellbrain-0.1.51}/shellbrain.egg-info/SOURCES.txt +1 -20
- shellbrain-0.1.49/app/core/entities/repositories.py +0 -17
- shellbrain-0.1.49/app/core/entities/wiki_summaries.py +0 -114
- shellbrain-0.1.49/app/core/policies/wiki_summary_freshness.py +0 -60
- shellbrain-0.1.49/app/core/ports/db/repository_index.py +0 -16
- shellbrain-0.1.49/app/core/ports/db/wiki_summaries.py +0 -64
- shellbrain-0.1.49/app/core/use_cases/wiki/__init__.py +0 -27
- shellbrain-0.1.49/app/core/use_cases/wiki/execute.py +0 -880
- shellbrain-0.1.49/app/core/use_cases/wiki/request.py +0 -109
- shellbrain-0.1.49/app/core/use_cases/wiki/result.py +0 -295
- shellbrain-0.1.49/app/core/use_cases/wiki/summaries.py +0 -699
- shellbrain-0.1.49/app/entrypoints/cli/handlers/human/wiki.py +0 -42
- shellbrain-0.1.49/app/infrastructure/db/runtime/models/wiki_summaries.py +0 -63
- shellbrain-0.1.49/app/infrastructure/db/runtime/repos/relational/repository_index_repo.py +0 -159
- shellbrain-0.1.49/app/infrastructure/db/runtime/repos/relational/wiki_summaries_repo.py +0 -239
- shellbrain-0.1.49/app/infrastructure/reporting/wiki/__init__.py +0 -1
- shellbrain-0.1.49/app/infrastructure/reporting/wiki/browser.py +0 -11
- shellbrain-0.1.49/app/infrastructure/reporting/wiki/render_html.py +0 -666
- shellbrain-0.1.49/app/infrastructure/reporting/wiki/server.py +0 -293
- shellbrain-0.1.49/app/infrastructure/reporting/wiki/summary_worker.py +0 -123
- shellbrain-0.1.49/app/startup/wiki.py +0 -59
- {shellbrain-0.1.49 → shellbrain-0.1.51}/README.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/__main__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/admin_errors.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/associations.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/backups.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/episodes.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/guidance.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/identity.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/ids.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/knowledge_builder.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/machine_config.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/memories.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/runtime_context.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/scenarios.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/session_state.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/settings.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/snapshots.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/structural_memory_relations.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/entities/utility.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/errors.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/concepts/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/concepts/relation_rules.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/concepts/search_text.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/episodes/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/episodes/event_content.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/episodes/knowledge_building.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/memories/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/memories/add_plan.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/memories/link_rules.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/memories/update_plan.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/retrieval/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/retrieval/bm25.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/retrieval/context_pack.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/retrieval/expansion.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/retrieval/fusion_rrf.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/retrieval/lexical_query.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/retrieval/ontology_semantics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/policies/retrieval/scoring.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/episode_repositories.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/guidance.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/knowledge_builder.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/problem_runs.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/retrieval_repositories.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/db/snapshots.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/embeddings/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/embeddings/provider.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/embeddings/retrieval.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/host_apps/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/local_state/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/local_state/session_state_store.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/local_state/shadow_git.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/reporting/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/reporting/metrics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/system/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/system/clock.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/ports/system/idgen.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/create_backup.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/initialize_runtime.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/restore_backup.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/admin/verify_backup.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/build_guidance.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/add/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/add/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/add/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/add/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/containment_checks.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/embeddings.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/reference_checks.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/show/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/show/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/show/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/show/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/update/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/update/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/update/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/update/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/concepts/views.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/episodes/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/episodes/events/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/episodes/events/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/add/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/add/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/add/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/add/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/effect_plan.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/reference_checks.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/update/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/update/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/update/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/memories/update/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/metrics/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/metrics/build_snapshot.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/metrics/generate_dashboard.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/plan_execution.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/build_context/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/context_pack_pipeline.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/deterministic_graph_recall.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/expansion.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/read/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/read/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/read/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/read/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/read_concepts.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/recall/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/recall/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/recall/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/recall/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/scenarios/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/scenarios/record/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/scenarios/record/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/scenarios/record/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/scenarios/record/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/snapshots/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/snapshots/code_delta_context/execute.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/error_responses.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/dependencies.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/human/admin.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/human/admin_dependencies.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/human/init.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/human/metrics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/human/upgrade.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/session_state.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/working_agent/snapshot.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/main.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/operation_command.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/parser/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/presenters/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/presenters/init.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/presenters/json.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/presenters/metrics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/memories.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/cli/request_parsing/teach.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/host_hooks/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/jobs/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/entrypoints/jobs/episode_sync.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/app_role_safety.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/backups/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/backups/restore.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/connection.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/instance_guard.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/migrations.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/privileges.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/admin/storage_setup.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/engine.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/associations.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/concepts.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/episodes.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/evidence.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/experiences.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/memories.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/metadata.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/utility.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/models/views.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/queries/metrics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/queries/metrics_adapter.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/db/runtime/session.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/embeddings/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/embeddings/local_provider.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/embeddings/prewarm.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/embeddings/query_vector_search.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/claude.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/codex.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/cursor.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/inspection.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/paths.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/service.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/assets/types.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/identity/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/identity/resolver.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/init_lock.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/machine_config_store.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/operation_registration.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/paths.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/recall_mode_store.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/repo_registration_store.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/session_state_file_store.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/local_state/shadow_git_store.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/process/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/process/episode_sync/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/process/episode_sync/autostart.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/process/episode_sync/launcher.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/process/episode_sync/poller.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/process/episode_sync/status_store.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/reporting/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/reporting/metrics/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/reporting/metrics/artifacts.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/reporting/metrics/browser.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/reporting/metrics/pager.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/reporting/metrics/render_html.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/system/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/system/clock.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/system/id_generator.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/system/package_upgrade.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/operation_invocations.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/operation_polling.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/read_records.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/recall_records.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/recorder.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/records.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/sink.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/storage_protocols.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/sync_records.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/telemetry/write_records.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/settings/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/settings/defaults/create_policy.yaml +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/settings/defaults/read_policy.yaml +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/settings/defaults/runtime.yaml +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/settings/defaults/thresholds.yaml +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/settings/defaults/update_policy.yaml +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/admin.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/admin_db.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/admin_dependencies.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/admin_diagnose.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/analytics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/backup.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/config.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/create_policy.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/db.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/dsn_resolution.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/embeddings.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/episode_poller.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/episode_sync_launcher.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/host_hooks.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/knowledge_builder.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/metrics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/migrations.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/model_usage_backfill.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/operation_dependencies.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/read_policy.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/repo_context.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/repos.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/retrieval.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/runtime_admin.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/runtime_context.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/settings.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/snapshot_baseline.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/thresholds.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/update_policy.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/app/startup/use_cases.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/_legacy_usage_views.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/_usage_view_sql.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/env.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260226_0001_initial_schema.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260422_0015_problem_runs.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260515_0019_scenario_records.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/migrations/versions/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/__init__.py +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/claude/CLAUDE.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/AGENTS.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/setup.cfg +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/shellbrain.egg-info/dependency_links.txt +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/shellbrain.egg-info/entry_points.txt +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/shellbrain.egg-info/requires.txt +0 -0
- {shellbrain-0.1.49 → shellbrain-0.1.51}/shellbrain.egg-info/top_level.txt +0 -0
|
@@ -147,27 +147,6 @@ class EvidenceLinkView:
|
|
|
147
147
|
created_at: datetime | None = None
|
|
148
148
|
|
|
149
149
|
|
|
150
|
-
@dataclass(frozen=True, kw_only=True)
|
|
151
|
-
class EvidenceLinkedTarget:
|
|
152
|
-
"""One target linked to a canonical evidence source."""
|
|
153
|
-
|
|
154
|
-
link_id: str
|
|
155
|
-
target: EvidenceTarget
|
|
156
|
-
role: EvidenceRole
|
|
157
|
-
created_at: datetime | None = None
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
@dataclass(frozen=True, kw_only=True)
|
|
161
|
-
class EvidenceDetail:
|
|
162
|
-
"""One canonical evidence source plus all linked targets."""
|
|
163
|
-
|
|
164
|
-
id: EvidenceId
|
|
165
|
-
repo_id: RepoId
|
|
166
|
-
source: EvidenceSource
|
|
167
|
-
linked_targets: tuple[EvidenceLinkedTarget, ...]
|
|
168
|
-
created_at: datetime | None = None
|
|
169
|
-
|
|
170
|
-
|
|
171
150
|
@dataclass(kw_only=True)
|
|
172
151
|
class MemoryEvidenceLink:
|
|
173
152
|
"""This dataclass models a many-to-many link between shellbrain and evidence."""
|
|
@@ -11,7 +11,7 @@ class _StrictModel(BaseModel):
|
|
|
11
11
|
model_config = ConfigDict(extra="forbid")
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
InnerAgentName = Literal["build_context", "build_knowledge", "teach"
|
|
14
|
+
InnerAgentName = Literal["build_context", "build_knowledge", "teach"]
|
|
15
15
|
InnerAgentProviderName = str
|
|
16
16
|
InnerAgentReasoningLevel = Literal["none", "minimal", "low", "medium", "high", "xhigh"]
|
|
17
17
|
BuildContextStrategy = Literal[
|
|
@@ -66,19 +66,4 @@ class TeachKnowledgeSettings(_StrictModel):
|
|
|
66
66
|
max_write_commands: int = Field(default=12, ge=1, le=200)
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
class WikiSummarySettings(_StrictModel):
|
|
70
|
-
"""Typed model/runtime settings for generated wiki summaries."""
|
|
71
|
-
|
|
72
|
-
provider: InnerAgentProviderName = Field(min_length=1)
|
|
73
|
-
model: str = Field(min_length=1)
|
|
74
|
-
reasoning: InnerAgentReasoningLevel
|
|
75
|
-
timeout_seconds: int = Field(ge=1, le=1200)
|
|
76
|
-
prompt_version: str = Field(default="wiki-summary.v1", min_length=1)
|
|
77
|
-
max_summary_chars: int = Field(default=900, ge=100, le=4000)
|
|
78
|
-
running_refresh_stale_seconds: int = Field(default=3600, ge=60, le=86_400)
|
|
79
|
-
startup_batch_limit: int = Field(default=20, ge=0, le=200)
|
|
80
|
-
periodic_batch_limit: int = Field(default=5, ge=0, le=100)
|
|
81
|
-
periodic_seconds: int = Field(default=300, ge=30, le=86_400)
|
|
82
|
-
|
|
83
|
-
|
|
84
69
|
InnerAgentSettings = BuildContextSettings
|
|
@@ -37,12 +37,6 @@ class IConceptsRepo(ABC):
|
|
|
37
37
|
) -> Sequence[Concept]:
|
|
38
38
|
"""This method returns concepts for the provided ids."""
|
|
39
39
|
|
|
40
|
-
@abstractmethod
|
|
41
|
-
def list_concepts(
|
|
42
|
-
self, *, repo_id: str, statuses: Sequence[str]
|
|
43
|
-
) -> Sequence[Concept]:
|
|
44
|
-
"""This method returns concepts for one repo and status set."""
|
|
45
|
-
|
|
46
40
|
@abstractmethod
|
|
47
41
|
def list_contains_edges(self, *, repo_id: str) -> Sequence[ConceptRelation]:
|
|
48
42
|
"""This method returns active contains edges for cycle validation."""
|
|
@@ -110,12 +104,6 @@ class IConceptsRepo(ABC):
|
|
|
110
104
|
) -> Sequence[dict[str, Any]]:
|
|
111
105
|
"""This method returns concept-link matches for displayed memory ids."""
|
|
112
106
|
|
|
113
|
-
@abstractmethod
|
|
114
|
-
def find_concepts_for_anchor_ids(
|
|
115
|
-
self, *, repo_id: str, anchor_ids: Sequence[str]
|
|
116
|
-
) -> Sequence[dict[str, Any]]:
|
|
117
|
-
"""This method returns concept-grounding matches for displayed anchors."""
|
|
118
|
-
|
|
119
107
|
@abstractmethod
|
|
120
108
|
def upsert_embedding(
|
|
121
109
|
self,
|
|
@@ -5,7 +5,6 @@ from typing import Sequence
|
|
|
5
5
|
|
|
6
6
|
from app.core.entities.associations import AssociationEdge, AssociationObservation
|
|
7
7
|
from app.core.entities.evidence import (
|
|
8
|
-
EvidenceDetail,
|
|
9
8
|
EvidenceLinkView,
|
|
10
9
|
EvidenceRole,
|
|
11
10
|
EvidenceSource,
|
|
@@ -31,12 +30,6 @@ class IMemoriesRepo(ABC):
|
|
|
31
30
|
def list_by_ids(self, ids: Sequence[str]) -> Sequence[Memory]:
|
|
32
31
|
"""This method fetches memories in the input identifier order."""
|
|
33
32
|
|
|
34
|
-
@abstractmethod
|
|
35
|
-
def list_recent(
|
|
36
|
-
self, *, repo_id: str, statuses: Sequence[str], limit: int
|
|
37
|
-
) -> Sequence[Memory]:
|
|
38
|
-
"""Fetch recent memories for one repository in newest-first order."""
|
|
39
|
-
|
|
40
33
|
@abstractmethod
|
|
41
34
|
def update_lifecycle(self, memory: Memory) -> bool:
|
|
42
35
|
"""Update lifecycle fields for one concrete memory."""
|
|
@@ -103,9 +96,3 @@ class IEvidenceRepo(ABC):
|
|
|
103
96
|
self, *, repo_id: str, targets: Sequence[EvidenceTarget]
|
|
104
97
|
) -> Sequence[EvidenceLinkView]:
|
|
105
98
|
"""Resolve evidence links for targets through the unified evidence API."""
|
|
106
|
-
|
|
107
|
-
@abstractmethod
|
|
108
|
-
def get_evidence_detail(
|
|
109
|
-
self, *, repo_id: str, evidence_id: str
|
|
110
|
-
) -> EvidenceDetail | None:
|
|
111
|
-
"""Resolve one canonical evidence source plus linked targets."""
|
|
@@ -15,9 +15,7 @@ from app.core.ports.db.memory_repositories import (
|
|
|
15
15
|
IUtilityRepo,
|
|
16
16
|
)
|
|
17
17
|
from app.core.ports.db.problem_runs import IProblemRunsRepo
|
|
18
|
-
from app.core.ports.db.repository_index import IRepositoryIndexRepo
|
|
19
18
|
from app.core.ports.db.snapshots import ISnapshotsRepo
|
|
20
|
-
from app.core.ports.db.wiki_summaries import IWikiSummaryRepo
|
|
21
19
|
from app.core.ports.embeddings.retrieval import IVectorSearch
|
|
22
20
|
from app.core.ports.db.retrieval_repositories import (
|
|
23
21
|
IConceptKeywordRetrievalRepo,
|
|
@@ -46,9 +44,7 @@ class IUnitOfWork(ABC):
|
|
|
46
44
|
guidance: IPendingUtilityCandidatesRepo
|
|
47
45
|
knowledge_build_runs: IKnowledgeBuildRunsRepo
|
|
48
46
|
problem_runs: IProblemRunsRepo
|
|
49
|
-
repository_index: IRepositoryIndexRepo
|
|
50
47
|
snapshots: ISnapshotsRepo
|
|
51
|
-
wiki_summaries: IWikiSummaryRepo
|
|
52
48
|
vector_search: IVectorSearch | None
|
|
53
49
|
|
|
54
50
|
@abstractmethod
|
|
@@ -105,22 +105,6 @@ class TeachKnowledgeAgentRequest(_StrictModel):
|
|
|
105
105
|
max_write_commands: int = Field(ge=1, le=200)
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
class WikiSummaryAgentRequest(_StrictModel):
|
|
109
|
-
"""One provider request to generate a cached wiki summary."""
|
|
110
|
-
|
|
111
|
-
agent_name: InnerAgentName = "wiki_summary"
|
|
112
|
-
provider: InnerAgentProviderName = Field(min_length=1)
|
|
113
|
-
model: str = Field(min_length=1)
|
|
114
|
-
reasoning: InnerAgentReasoningLevel
|
|
115
|
-
timeout_seconds: int = Field(ge=1, le=1200)
|
|
116
|
-
prompt_version: str = Field(min_length=1)
|
|
117
|
-
target_type: str = Field(min_length=1)
|
|
118
|
-
repo_id: str = Field(min_length=1)
|
|
119
|
-
target_id: str = Field(min_length=1)
|
|
120
|
-
source_payload: dict[str, Any]
|
|
121
|
-
max_summary_chars: int = Field(ge=100, le=4000)
|
|
122
|
-
|
|
123
|
-
|
|
124
108
|
class BuildKnowledgeAgentResult(_StrictModel):
|
|
125
109
|
"""Provider-neutral result from one build_knowledge run."""
|
|
126
110
|
|
|
@@ -146,27 +130,6 @@ class BuildKnowledgeAgentResult(_StrictModel):
|
|
|
146
130
|
code_trace: dict[str, Any] = Field(default_factory=dict)
|
|
147
131
|
|
|
148
132
|
|
|
149
|
-
class WikiSummaryAgentResult(_StrictModel):
|
|
150
|
-
"""Provider-neutral result from one generated wiki summary run."""
|
|
151
|
-
|
|
152
|
-
status: InnerAgentRunStatus
|
|
153
|
-
provider: InnerAgentProviderName = Field(min_length=1)
|
|
154
|
-
model: str
|
|
155
|
-
reasoning: InnerAgentReasoningLevel
|
|
156
|
-
timeout_seconds: int | None = Field(default=None, ge=1, le=1200)
|
|
157
|
-
duration_ms: int = Field(default=0, ge=0)
|
|
158
|
-
input_tokens: int | None = Field(default=None, ge=0)
|
|
159
|
-
output_tokens: int | None = Field(default=None, ge=0)
|
|
160
|
-
reasoning_output_tokens: int | None = Field(default=None, ge=0)
|
|
161
|
-
cached_input_tokens_total: int | None = Field(default=None, ge=0)
|
|
162
|
-
cache_read_input_tokens: int | None = Field(default=None, ge=0)
|
|
163
|
-
cache_creation_input_tokens: int | None = Field(default=None, ge=0)
|
|
164
|
-
capture_quality: TokenCaptureQuality | None = None
|
|
165
|
-
body: str | None = None
|
|
166
|
-
error_code: str | None = None
|
|
167
|
-
error_message: str | None = None
|
|
168
|
-
|
|
169
|
-
|
|
170
133
|
class IInnerAgentRunner(Protocol):
|
|
171
134
|
"""Behavior protocol for bounded inner-agent synthesis providers."""
|
|
172
135
|
|
|
@@ -190,12 +153,3 @@ class ITeachKnowledgeAgentRunner(Protocol):
|
|
|
190
153
|
self, request: TeachKnowledgeAgentRequest
|
|
191
154
|
) -> BuildKnowledgeAgentResult:
|
|
192
155
|
"""Run one teach request and return a provider-neutral result."""
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
class IWikiSummaryAgentRunner(Protocol):
|
|
196
|
-
"""Behavior protocol for generated wiki summary providers."""
|
|
197
|
-
|
|
198
|
-
def run_wiki_summary(
|
|
199
|
-
self, request: WikiSummaryAgentRequest
|
|
200
|
-
) -> WikiSummaryAgentResult:
|
|
201
|
-
"""Run one wiki summary request and return provider-neutral prose."""
|
|
@@ -39,7 +39,6 @@ _TOP_LEVEL_HELP = dedent(
|
|
|
39
39
|
- Upgrade with `shellbrain upgrade`.
|
|
40
40
|
- Check health with `shellbrain admin doctor`.
|
|
41
41
|
- Review usage with `shellbrain metrics`.
|
|
42
|
-
- Browse knowledge with `shellbrain wiki`.
|
|
43
42
|
|
|
44
43
|
Working agents:
|
|
45
44
|
- Use `shellbrain recall` for normal task context.
|
|
@@ -70,7 +69,6 @@ _TOP_LEVEL_HELP = dedent(
|
|
|
70
69
|
shellbrain init
|
|
71
70
|
shellbrain upgrade
|
|
72
71
|
shellbrain metrics
|
|
73
|
-
shellbrain wiki
|
|
74
72
|
shellbrain admin doctor
|
|
75
73
|
shellbrain admin migrate
|
|
76
74
|
|
|
@@ -397,18 +395,6 @@ _METRICS_HELP = dedent(
|
|
|
397
395
|
"""
|
|
398
396
|
)
|
|
399
397
|
|
|
400
|
-
_WIKI_HELP = dedent(
|
|
401
|
-
"""\
|
|
402
|
-
Open the read-only Shellbrain Wiki for the current repo.
|
|
403
|
-
|
|
404
|
-
The command starts a local foreground server, opens the browser, and stops
|
|
405
|
-
when the terminal process is interrupted.
|
|
406
|
-
|
|
407
|
-
Example:
|
|
408
|
-
shellbrain wiki
|
|
409
|
-
"""
|
|
410
|
-
)
|
|
411
|
-
|
|
412
398
|
_INSTALL_CLAUDE_HOOK_HELP = dedent(
|
|
413
399
|
"""\
|
|
414
400
|
Install or update the repo-local Claude Code SessionStart hook used as an explicit repo-local override.
|
|
@@ -521,32 +507,6 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
521
507
|
formatter_class=_HelpFormatter,
|
|
522
508
|
)
|
|
523
509
|
|
|
524
|
-
wiki_parser = subparsers.add_parser(
|
|
525
|
-
"wiki",
|
|
526
|
-
help="Open the read-only Shellbrain Wiki for this repo.",
|
|
527
|
-
description="Start the local Shellbrain Wiki and open it in the browser.",
|
|
528
|
-
epilog=_WIKI_HELP,
|
|
529
|
-
formatter_class=_HelpFormatter,
|
|
530
|
-
)
|
|
531
|
-
wiki_parser.add_argument(
|
|
532
|
-
"wiki_extra_args",
|
|
533
|
-
nargs=argparse.REMAINDER,
|
|
534
|
-
help=argparse.SUPPRESS,
|
|
535
|
-
)
|
|
536
|
-
wiki_parser.add_argument("--port", dest="wiki_port", nargs="?", help=argparse.SUPPRESS)
|
|
537
|
-
wiki_parser.add_argument(
|
|
538
|
-
"--no-open", dest="wiki_no_open", action="store_true", help=argparse.SUPPRESS
|
|
539
|
-
)
|
|
540
|
-
wiki_parser.add_argument(
|
|
541
|
-
"--repo-id", dest="wiki_repo_id", nargs="?", help=argparse.SUPPRESS
|
|
542
|
-
)
|
|
543
|
-
wiki_parser.add_argument(
|
|
544
|
-
"--repo-root", dest="wiki_repo_root", nargs="?", help=argparse.SUPPRESS
|
|
545
|
-
)
|
|
546
|
-
wiki_parser.add_argument(
|
|
547
|
-
"--no-sync", dest="wiki_no_sync", action="store_true", help=argparse.SUPPRESS
|
|
548
|
-
)
|
|
549
|
-
|
|
550
510
|
read_parser = subparsers.add_parser(
|
|
551
511
|
"read",
|
|
552
512
|
help="Read Shellbrain context without mutating state.",
|
|
@@ -98,16 +98,6 @@ def main(
|
|
|
98
98
|
run_metrics_dashboard=runtime.run_metrics_dashboard,
|
|
99
99
|
)
|
|
100
100
|
|
|
101
|
-
if args.command == "wiki":
|
|
102
|
-
from app.entrypoints.cli.handlers.human.wiki import run_wiki_command
|
|
103
|
-
|
|
104
|
-
return run_wiki_command(
|
|
105
|
-
args,
|
|
106
|
-
resolve_repo_context=runtime.resolve_repo_context,
|
|
107
|
-
warn_or_fail_on_unsafe_app_role=runtime.warn_or_fail_on_unsafe_app_role,
|
|
108
|
-
run_wiki=runtime.run_wiki,
|
|
109
|
-
)
|
|
110
|
-
|
|
111
101
|
if args.command == "admin":
|
|
112
102
|
from app.entrypoints.cli.handlers.human.admin import run_admin_command
|
|
113
103
|
|
|
@@ -13,7 +13,6 @@ from app.infrastructure.db.runtime.models import (
|
|
|
13
13
|
snapshots,
|
|
14
14
|
telemetry,
|
|
15
15
|
utility,
|
|
16
|
-
wiki_summaries,
|
|
17
16
|
)
|
|
18
17
|
from app.infrastructure.db.runtime.models.metadata import metadata
|
|
19
18
|
|
|
@@ -31,7 +30,6 @@ _ = (
|
|
|
31
30
|
snapshots,
|
|
32
31
|
telemetry,
|
|
33
32
|
utility,
|
|
34
|
-
wiki_summaries,
|
|
35
33
|
)
|
|
36
34
|
|
|
37
35
|
target_metadata = metadata
|
|
@@ -170,30 +170,6 @@ class ConceptsRepo(IConceptsRepo):
|
|
|
170
170
|
by_id = {str(row["id"]): _to_concept(row) for row in rows}
|
|
171
171
|
return [by_id[concept_id] for concept_id in unique_ids if concept_id in by_id]
|
|
172
172
|
|
|
173
|
-
def list_concepts(
|
|
174
|
-
self, *, repo_id: str, statuses: Sequence[str]
|
|
175
|
-
) -> Sequence[Concept]:
|
|
176
|
-
"""Return concepts for one repo and status set."""
|
|
177
|
-
|
|
178
|
-
status_values = tuple(dict.fromkeys(str(status) for status in statuses))
|
|
179
|
-
if not status_values:
|
|
180
|
-
return []
|
|
181
|
-
rows = (
|
|
182
|
-
self._session.execute(
|
|
183
|
-
select(concepts)
|
|
184
|
-
.where(
|
|
185
|
-
concepts.c.repo_id == repo_id,
|
|
186
|
-
concepts.c.status.in_(status_values),
|
|
187
|
-
)
|
|
188
|
-
.order_by(
|
|
189
|
-
concepts.c.kind.asc(), concepts.c.name.asc(), concepts.c.slug.asc()
|
|
190
|
-
)
|
|
191
|
-
)
|
|
192
|
-
.mappings()
|
|
193
|
-
.all()
|
|
194
|
-
)
|
|
195
|
-
return [_to_concept(row) for row in rows]
|
|
196
|
-
|
|
197
173
|
def list_contains_edges(self, *, repo_id: str) -> Sequence[ConceptRelation]:
|
|
198
174
|
"""Return active contains edges for one repo."""
|
|
199
175
|
|
|
@@ -623,7 +599,6 @@ class ConceptsRepo(IConceptsRepo):
|
|
|
623
599
|
evidence_links.c.target_type,
|
|
624
600
|
evidence_links.c.target_id,
|
|
625
601
|
evidence_links.c.created_at,
|
|
626
|
-
evidence_refs.c.id.label("evidence_id"),
|
|
627
602
|
evidence_refs.c.kind,
|
|
628
603
|
evidence_refs.c.ref,
|
|
629
604
|
evidence_refs.c.episode_event_id,
|
|
@@ -686,44 +661,6 @@ class ConceptsRepo(IConceptsRepo):
|
|
|
686
661
|
)
|
|
687
662
|
return [dict(row) for row in rows]
|
|
688
663
|
|
|
689
|
-
def find_concepts_for_anchor_ids(
|
|
690
|
-
self, *, repo_id: str, anchor_ids: Sequence[str]
|
|
691
|
-
) -> Sequence[dict[str, Any]]:
|
|
692
|
-
"""Return concept-grounding matches for displayed anchors."""
|
|
693
|
-
|
|
694
|
-
unique_anchor_ids = list(dict.fromkeys(str(anchor_id) for anchor_id in anchor_ids))
|
|
695
|
-
if not unique_anchor_ids:
|
|
696
|
-
return []
|
|
697
|
-
rows = (
|
|
698
|
-
self._session.execute(
|
|
699
|
-
select(
|
|
700
|
-
concepts.c.id.label("concept_id"),
|
|
701
|
-
concepts.c.slug,
|
|
702
|
-
concepts.c.name,
|
|
703
|
-
concepts.c.kind,
|
|
704
|
-
concept_groundings.c.id.label("grounding_id"),
|
|
705
|
-
concept_groundings.c.anchor_id,
|
|
706
|
-
concept_groundings.c.role,
|
|
707
|
-
concept_groundings.c.status,
|
|
708
|
-
concept_groundings.c.confidence,
|
|
709
|
-
)
|
|
710
|
-
.select_from(
|
|
711
|
-
concept_groundings.join(
|
|
712
|
-
concepts, concepts.c.id == concept_groundings.c.concept_id
|
|
713
|
-
)
|
|
714
|
-
)
|
|
715
|
-
.where(
|
|
716
|
-
concept_groundings.c.repo_id == repo_id,
|
|
717
|
-
concept_groundings.c.anchor_id.in_(unique_anchor_ids),
|
|
718
|
-
concepts.c.repo_id == repo_id,
|
|
719
|
-
)
|
|
720
|
-
.order_by(concepts.c.name.asc(), concept_groundings.c.role.asc())
|
|
721
|
-
)
|
|
722
|
-
.mappings()
|
|
723
|
-
.all()
|
|
724
|
-
)
|
|
725
|
-
return [dict(row) for row in rows]
|
|
726
|
-
|
|
727
664
|
def upsert_embedding(
|
|
728
665
|
self,
|
|
729
666
|
*,
|
|
@@ -906,7 +843,6 @@ def _to_evidence(row) -> ConceptEvidence:
|
|
|
906
843
|
commit_ref=row["commit_ref"],
|
|
907
844
|
transcript_ref=row["transcript_ref"],
|
|
908
845
|
note=row["note"],
|
|
909
|
-
evidence_id=row.get("evidence_id"),
|
|
910
846
|
created_at=row["created_at"],
|
|
911
847
|
)
|
|
912
848
|
|
|
@@ -922,7 +858,6 @@ def _unified_evidence_to_concept_row(row) -> dict[str, Any]:
|
|
|
922
858
|
"target_type": _CONCEPT_TARGET_TYPE_BY_UNIFIED[str(row["target_type"])],
|
|
923
859
|
"target_id": row["target_id"],
|
|
924
860
|
"evidence_kind": evidence_kind,
|
|
925
|
-
"evidence_id": row["evidence_id"],
|
|
926
861
|
"anchor_id": row["anchor_id"],
|
|
927
862
|
"memory_id": row["memory_id"],
|
|
928
863
|
"commit_ref": row["commit_ref"],
|
|
@@ -8,8 +8,6 @@ from sqlalchemy import select, text
|
|
|
8
8
|
from sqlalchemy.dialects.postgresql import insert
|
|
9
9
|
|
|
10
10
|
from app.core.entities.evidence import (
|
|
11
|
-
EvidenceDetail,
|
|
12
|
-
EvidenceLinkedTarget,
|
|
13
11
|
EvidenceLinkView,
|
|
14
12
|
EvidenceRef,
|
|
15
13
|
EvidenceRole,
|
|
@@ -90,54 +88,6 @@ class EvidenceRepo(IEvidenceRepo):
|
|
|
90
88
|
links.extend(_link_view_from_row(row) for row in rows)
|
|
91
89
|
return tuple(links)
|
|
92
90
|
|
|
93
|
-
def get_evidence_detail(
|
|
94
|
-
self, *, repo_id: str, evidence_id: str
|
|
95
|
-
) -> EvidenceDetail | None:
|
|
96
|
-
"""Resolve one canonical evidence source plus all linked targets."""
|
|
97
|
-
|
|
98
|
-
evidence_row = (
|
|
99
|
-
self._session.execute(
|
|
100
|
-
select(evidence_refs).where(
|
|
101
|
-
evidence_refs.c.repo_id == repo_id,
|
|
102
|
-
evidence_refs.c.id == evidence_id,
|
|
103
|
-
)
|
|
104
|
-
)
|
|
105
|
-
.mappings()
|
|
106
|
-
.first()
|
|
107
|
-
)
|
|
108
|
-
if evidence_row is None:
|
|
109
|
-
return None
|
|
110
|
-
|
|
111
|
-
link_rows = (
|
|
112
|
-
self._session.execute(
|
|
113
|
-
select(
|
|
114
|
-
evidence_links.c.id,
|
|
115
|
-
evidence_links.c.target_type,
|
|
116
|
-
evidence_links.c.target_id,
|
|
117
|
-
evidence_links.c.evidence_role,
|
|
118
|
-
evidence_links.c.created_at,
|
|
119
|
-
)
|
|
120
|
-
.where(
|
|
121
|
-
evidence_links.c.repo_id == repo_id,
|
|
122
|
-
evidence_links.c.evidence_id == evidence_id,
|
|
123
|
-
)
|
|
124
|
-
.order_by(
|
|
125
|
-
evidence_links.c.target_type.asc(),
|
|
126
|
-
evidence_links.c.target_id.asc(),
|
|
127
|
-
evidence_links.c.evidence_role.asc(),
|
|
128
|
-
)
|
|
129
|
-
)
|
|
130
|
-
.mappings()
|
|
131
|
-
.all()
|
|
132
|
-
)
|
|
133
|
-
return EvidenceDetail(
|
|
134
|
-
id=evidence_row["id"],
|
|
135
|
-
repo_id=evidence_row["repo_id"],
|
|
136
|
-
source=_source_from_row(evidence_row),
|
|
137
|
-
linked_targets=tuple(_linked_target_from_row(row) for row in link_rows),
|
|
138
|
-
created_at=evidence_row["created_at"],
|
|
139
|
-
)
|
|
140
|
-
|
|
141
91
|
def _attach_one(
|
|
142
92
|
self,
|
|
143
93
|
*,
|
|
@@ -375,18 +325,6 @@ def _link_view_from_row(row) -> EvidenceLinkView:
|
|
|
375
325
|
)
|
|
376
326
|
|
|
377
327
|
|
|
378
|
-
def _linked_target_from_row(row) -> EvidenceLinkedTarget:
|
|
379
|
-
return EvidenceLinkedTarget(
|
|
380
|
-
link_id=row["id"],
|
|
381
|
-
target=EvidenceTarget(
|
|
382
|
-
target_type=EvidenceTargetType(row["target_type"]),
|
|
383
|
-
target_id=row["target_id"],
|
|
384
|
-
),
|
|
385
|
-
role=EvidenceRole(row["evidence_role"]),
|
|
386
|
-
created_at=row["created_at"],
|
|
387
|
-
)
|
|
388
|
-
|
|
389
|
-
|
|
390
328
|
def _source_from_row(row) -> EvidenceSource:
|
|
391
329
|
source_kind = EvidenceSourceKind(row["kind"])
|
|
392
330
|
if source_kind is EvidenceSourceKind.EPISODE_EVENT:
|
|
@@ -79,29 +79,6 @@ class MemoriesRepo(IMemoriesRepo):
|
|
|
79
79
|
if memory_id in memories_by_id
|
|
80
80
|
]
|
|
81
81
|
|
|
82
|
-
def list_recent(
|
|
83
|
-
self, *, repo_id: str, statuses: Sequence[str], limit: int
|
|
84
|
-
) -> Sequence[Memory]:
|
|
85
|
-
"""Load recent memories for one repository in newest-first order."""
|
|
86
|
-
|
|
87
|
-
if limit <= 0:
|
|
88
|
-
return []
|
|
89
|
-
status_values = tuple(str(status) for status in statuses)
|
|
90
|
-
if not status_values:
|
|
91
|
-
return []
|
|
92
|
-
rows = (
|
|
93
|
-
self._session.execute(
|
|
94
|
-
select(memories)
|
|
95
|
-
.where(memories.c.repo_id == repo_id)
|
|
96
|
-
.where(memories.c.status.in_(status_values))
|
|
97
|
-
.order_by(memories.c.created_at.desc(), memories.c.id.asc())
|
|
98
|
-
.limit(limit)
|
|
99
|
-
)
|
|
100
|
-
.mappings()
|
|
101
|
-
.all()
|
|
102
|
-
)
|
|
103
|
-
return [self._to_memory(row) for row in rows]
|
|
104
|
-
|
|
105
82
|
def _to_memory(self, row) -> Memory:
|
|
106
83
|
"""Convert one relational row into the canonical shellbrain entity."""
|
|
107
84
|
|
|
@@ -16,16 +16,10 @@ from app.infrastructure.db.runtime.repos.relational.memories_repo import Memorie
|
|
|
16
16
|
from app.infrastructure.db.runtime.repos.relational.problem_runs_repo import (
|
|
17
17
|
ProblemRunsRepo,
|
|
18
18
|
)
|
|
19
|
-
from app.infrastructure.db.runtime.repos.relational.repository_index_repo import (
|
|
20
|
-
RepositoryIndexRepo,
|
|
21
|
-
)
|
|
22
19
|
from app.infrastructure.db.runtime.repos.relational.snapshots_repo import SnapshotsRepo
|
|
23
20
|
from app.infrastructure.db.runtime.repos.relational.read_policy_repo import ReadPolicyRepo
|
|
24
21
|
from app.infrastructure.db.runtime.repos.relational.telemetry_repo import TelemetryRepo
|
|
25
22
|
from app.infrastructure.db.runtime.repos.relational.utility_repo import UtilityRepo
|
|
26
|
-
from app.infrastructure.db.runtime.repos.relational.wiki_summaries_repo import (
|
|
27
|
-
WikiSummariesRepo,
|
|
28
|
-
)
|
|
29
23
|
from app.infrastructure.db.runtime.repos.semantic.keyword_retrieval_repo import (
|
|
30
24
|
KeywordRetrievalRepo,
|
|
31
25
|
)
|
|
@@ -79,9 +73,7 @@ class PostgresUnitOfWork(IUnitOfWork):
|
|
|
79
73
|
self.guidance = self.telemetry
|
|
80
74
|
self.knowledge_build_runs = KnowledgeBuildRunsRepo(self._session)
|
|
81
75
|
self.problem_runs = ProblemRunsRepo(self._session)
|
|
82
|
-
self.repository_index = RepositoryIndexRepo(self._session)
|
|
83
76
|
self.snapshots = SnapshotsRepo(self._session)
|
|
84
|
-
self.wiki_summaries = WikiSummariesRepo(self._session)
|
|
85
77
|
return self
|
|
86
78
|
|
|
87
79
|
def __exit__(self, exc_type, exc_val, exc_tb) -> None:
|
{shellbrain-0.1.49 → shellbrain-0.1.51}/app/infrastructure/host_apps/inner_agents/claude_cli.py
RENAMED
|
@@ -13,8 +13,6 @@ from app.core.ports.host_apps.inner_agents import (
|
|
|
13
13
|
InnerAgentRunRequest,
|
|
14
14
|
InnerAgentRunResult,
|
|
15
15
|
TeachKnowledgeAgentRequest,
|
|
16
|
-
WikiSummaryAgentRequest,
|
|
17
|
-
WikiSummaryAgentResult,
|
|
18
16
|
)
|
|
19
17
|
from app.infrastructure.host_apps.inner_agents.codex_cli import (
|
|
20
18
|
_build_knowledge_result,
|
|
@@ -24,20 +22,17 @@ from app.infrastructure.host_apps.inner_agents.codex_cli import (
|
|
|
24
22
|
_result,
|
|
25
23
|
_truncate,
|
|
26
24
|
_usage_or_estimate,
|
|
27
|
-
_wiki_summary_result,
|
|
28
25
|
)
|
|
29
26
|
from app.infrastructure.host_apps.inner_agents.output_parser import (
|
|
30
27
|
InnerAgentOutputParseError,
|
|
31
28
|
parse_build_knowledge_output,
|
|
32
29
|
parse_inner_agent_response_output,
|
|
33
|
-
parse_wiki_summary_output,
|
|
34
30
|
)
|
|
35
31
|
from app.infrastructure.host_apps.inner_agents.prompt import (
|
|
36
32
|
render_build_context_prompt,
|
|
37
33
|
render_build_context_synthesis_prompt,
|
|
38
34
|
render_build_knowledge_prompt,
|
|
39
35
|
render_teach_knowledge_prompt,
|
|
40
|
-
render_wiki_summary_prompt,
|
|
41
36
|
)
|
|
42
37
|
|
|
43
38
|
|
|
@@ -158,44 +153,6 @@ class ClaudeCliInnerAgentRunner:
|
|
|
158
153
|
code_trace=parsed["code_trace"],
|
|
159
154
|
)
|
|
160
155
|
|
|
161
|
-
def run_wiki_summary(
|
|
162
|
-
self, request: WikiSummaryAgentRequest
|
|
163
|
-
) -> WikiSummaryAgentResult:
|
|
164
|
-
"""Run one Claude Code wiki_summary request."""
|
|
165
|
-
|
|
166
|
-
prompt = render_wiki_summary_prompt(request)
|
|
167
|
-
run = self._run_claude(
|
|
168
|
-
request,
|
|
169
|
-
prompt=prompt,
|
|
170
|
-
mode="wiki_summary",
|
|
171
|
-
tool_profile="none",
|
|
172
|
-
)
|
|
173
|
-
if run["status"] != "ok":
|
|
174
|
-
return _wiki_error_result(request, run)
|
|
175
|
-
final_message = str(run["result"])
|
|
176
|
-
try:
|
|
177
|
-
body = parse_wiki_summary_output(final_message)
|
|
178
|
-
except InnerAgentOutputParseError as exc:
|
|
179
|
-
return _wiki_summary_result(
|
|
180
|
-
request,
|
|
181
|
-
status="invalid_output",
|
|
182
|
-
duration_ms=int(run["duration_ms"]),
|
|
183
|
-
**_usage_or_estimate(
|
|
184
|
-
prompt=prompt, output=final_message, usage=run.get("usage")
|
|
185
|
-
),
|
|
186
|
-
error_code="invalid_output",
|
|
187
|
-
error_message=str(exc),
|
|
188
|
-
)
|
|
189
|
-
return _wiki_summary_result(
|
|
190
|
-
request,
|
|
191
|
-
status="ok",
|
|
192
|
-
body=body,
|
|
193
|
-
duration_ms=int(run["duration_ms"]),
|
|
194
|
-
**_usage_or_estimate(
|
|
195
|
-
prompt=prompt, output=final_message, usage=run.get("usage")
|
|
196
|
-
),
|
|
197
|
-
)
|
|
198
|
-
|
|
199
156
|
def _run_claude(
|
|
200
157
|
self,
|
|
201
158
|
request,
|
|
@@ -314,20 +271,6 @@ def _knowledge_error_result(
|
|
|
314
271
|
)
|
|
315
272
|
|
|
316
273
|
|
|
317
|
-
def _wiki_error_result(
|
|
318
|
-
request: WikiSummaryAgentRequest, run: dict[str, object]
|
|
319
|
-
) -> WikiSummaryAgentResult:
|
|
320
|
-
return _wiki_summary_result(
|
|
321
|
-
request,
|
|
322
|
-
status=str(run["status"]),
|
|
323
|
-
duration_ms=int(run.get("duration_ms") or 0),
|
|
324
|
-
input_tokens=run.get("input_tokens"),
|
|
325
|
-
capture_quality=run.get("capture_quality"),
|
|
326
|
-
error_code=str(run["error_code"]),
|
|
327
|
-
error_message=str(run["error_message"]),
|
|
328
|
-
)
|
|
329
|
-
|
|
330
|
-
|
|
331
274
|
def _claude_args(
|
|
332
275
|
*,
|
|
333
276
|
command_path: str,
|