shellbrain 0.1.44__tar.gz → 0.1.45__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. {shellbrain-0.1.44 → shellbrain-0.1.45}/PKG-INFO +1 -1
  2. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/admin.py +27 -0
  3. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/admin_dependencies.py +2 -0
  4. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/parser/builder.py +25 -0
  5. shellbrain-0.1.45/app/infrastructure/local_state/recall_mode_store.py +60 -0
  6. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/admin_dependencies.py +2 -0
  7. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/cli.py +3 -0
  8. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/internal_agents.py +19 -2
  9. {shellbrain-0.1.44 → shellbrain-0.1.45}/pyproject.toml +1 -1
  10. {shellbrain-0.1.44 → shellbrain-0.1.45}/shellbrain.egg-info/PKG-INFO +1 -1
  11. {shellbrain-0.1.44 → shellbrain-0.1.45}/shellbrain.egg-info/SOURCES.txt +1 -0
  12. {shellbrain-0.1.44 → shellbrain-0.1.45}/README.md +0 -0
  13. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/__init__.py +0 -0
  14. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/__main__.py +0 -0
  15. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/__init__.py +0 -0
  16. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/__init__.py +0 -0
  17. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/admin_errors.py +0 -0
  18. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/associations.py +0 -0
  19. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/backups.py +0 -0
  20. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/concepts.py +0 -0
  21. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/episodes.py +0 -0
  22. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/evidence.py +0 -0
  23. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/guidance.py +0 -0
  24. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/identity.py +0 -0
  25. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/ids.py +0 -0
  26. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/inner_agents.py +0 -0
  27. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/knowledge_builder.py +0 -0
  28. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/machine_config.py +0 -0
  29. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/memories.py +0 -0
  30. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/repositories.py +0 -0
  31. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/runtime_context.py +0 -0
  32. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/scenarios.py +0 -0
  33. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/session_state.py +0 -0
  34. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/settings.py +0 -0
  35. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/snapshots.py +0 -0
  36. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/structural_memory_relations.py +0 -0
  37. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/utility.py +0 -0
  38. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/entities/wiki_summaries.py +0 -0
  39. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/errors.py +0 -0
  40. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/__init__.py +0 -0
  41. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/concepts/__init__.py +0 -0
  42. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/concepts/relation_rules.py +0 -0
  43. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/concepts/search_text.py +0 -0
  44. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/episodes/__init__.py +0 -0
  45. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/episodes/event_content.py +0 -0
  46. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/episodes/knowledge_building.py +0 -0
  47. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/memories/__init__.py +0 -0
  48. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/memories/add_plan.py +0 -0
  49. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/memories/link_rules.py +0 -0
  50. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/memories/update_plan.py +0 -0
  51. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/retrieval/__init__.py +0 -0
  52. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/retrieval/bm25.py +0 -0
  53. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/retrieval/context_pack.py +0 -0
  54. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/retrieval/expansion.py +0 -0
  55. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/retrieval/fusion_rrf.py +0 -0
  56. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/retrieval/lexical_query.py +0 -0
  57. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/retrieval/ontology_semantics.py +0 -0
  58. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/retrieval/scoring.py +0 -0
  59. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/policies/wiki_summary_freshness.py +0 -0
  60. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/__init__.py +0 -0
  61. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/__init__.py +0 -0
  62. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/concept_repositories.py +0 -0
  63. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/episode_repositories.py +0 -0
  64. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/guidance.py +0 -0
  65. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/knowledge_builder.py +0 -0
  66. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/memory_repositories.py +0 -0
  67. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/problem_runs.py +0 -0
  68. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/repository_index.py +0 -0
  69. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/retrieval_repositories.py +0 -0
  70. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/snapshots.py +0 -0
  71. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/unit_of_work.py +0 -0
  72. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/db/wiki_summaries.py +0 -0
  73. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/embeddings/__init__.py +0 -0
  74. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/embeddings/provider.py +0 -0
  75. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/embeddings/retrieval.py +0 -0
  76. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/host_apps/__init__.py +0 -0
  77. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/host_apps/inner_agents.py +0 -0
  78. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/local_state/__init__.py +0 -0
  79. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/local_state/session_state_store.py +0 -0
  80. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/local_state/shadow_git.py +0 -0
  81. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/reporting/__init__.py +0 -0
  82. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/reporting/metrics.py +0 -0
  83. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/system/__init__.py +0 -0
  84. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/system/clock.py +0 -0
  85. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/ports/system/idgen.py +0 -0
  86. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/__init__.py +0 -0
  87. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/__init__.py +0 -0
  88. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
  89. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
  90. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
  91. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
  92. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
  93. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/create_backup.py +0 -0
  94. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
  95. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
  96. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/initialize_runtime.py +0 -0
  97. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/restore_backup.py +0 -0
  98. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/admin/verify_backup.py +0 -0
  99. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/build_guidance.py +0 -0
  100. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/__init__.py +0 -0
  101. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/__init__.py +0 -0
  102. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/execute.py +0 -0
  103. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/request.py +0 -0
  104. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/result.py +0 -0
  105. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/containment_checks.py +0 -0
  106. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/embeddings.py +0 -0
  107. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/reference_checks.py +0 -0
  108. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/__init__.py +0 -0
  109. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/execute.py +0 -0
  110. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/request.py +0 -0
  111. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/result.py +0 -0
  112. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/__init__.py +0 -0
  113. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/execute.py +0 -0
  114. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/request.py +0 -0
  115. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/result.py +0 -0
  116. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/concepts/views.py +0 -0
  117. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/episodes/__init__.py +0 -0
  118. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/episodes/events/__init__.py +0 -0
  119. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/episodes/events/request.py +0 -0
  120. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
  121. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
  122. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
  123. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
  124. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
  125. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
  126. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
  127. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +0 -0
  128. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
  129. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
  130. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
  131. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
  132. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
  133. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
  134. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/__init__.py +0 -0
  135. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/add/__init__.py +0 -0
  136. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/add/execute.py +0 -0
  137. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/add/request.py +0 -0
  138. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/add/result.py +0 -0
  139. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/effect_plan.py +0 -0
  140. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/reference_checks.py +0 -0
  141. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/update/__init__.py +0 -0
  142. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/update/execute.py +0 -0
  143. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/update/request.py +0 -0
  144. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/memories/update/result.py +0 -0
  145. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/metrics/__init__.py +0 -0
  146. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
  147. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/metrics/build_snapshot.py +0 -0
  148. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/metrics/generate_dashboard.py +0 -0
  149. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/plan_execution.py +0 -0
  150. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/__init__.py +0 -0
  151. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
  152. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/build_context/execute.py +0 -0
  153. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
  154. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/context_pack_pipeline.py +0 -0
  155. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/deterministic_graph_recall.py +0 -0
  156. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/expansion.py +0 -0
  157. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/__init__.py +0 -0
  158. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/execute.py +0 -0
  159. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/request.py +0 -0
  160. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/result.py +0 -0
  161. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read_concepts.py +0 -0
  162. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/__init__.py +0 -0
  163. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/execute.py +0 -0
  164. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/request.py +0 -0
  165. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/result.py +0 -0
  166. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
  167. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/scenarios/__init__.py +0 -0
  168. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/__init__.py +0 -0
  169. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/execute.py +0 -0
  170. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/request.py +0 -0
  171. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/result.py +0 -0
  172. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/snapshots/__init__.py +0 -0
  173. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
  174. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
  175. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
  176. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -0
  177. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
  178. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/execute.py +0 -0
  179. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
  180. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/wiki/__init__.py +0 -0
  181. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/wiki/execute.py +0 -0
  182. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/wiki/request.py +0 -0
  183. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/wiki/result.py +0 -0
  184. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/core/use_cases/wiki/summaries.py +0 -0
  185. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/__init__.py +0 -0
  186. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/__init__.py +0 -0
  187. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/error_responses.py +0 -0
  188. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/__init__.py +0 -0
  189. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
  190. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/dependencies.py +0 -0
  191. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
  192. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/init.py +0 -0
  193. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/metrics.py +0 -0
  194. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/upgrade.py +0 -0
  195. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/wiki.py +0 -0
  196. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
  197. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
  198. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
  199. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
  200. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
  201. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
  202. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
  203. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
  204. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
  205. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
  206. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
  207. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
  208. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
  209. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
  210. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
  211. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
  212. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
  213. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
  214. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
  215. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/session_state.py +0 -0
  216. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
  217. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
  218. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/snapshot.py +0 -0
  219. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
  220. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/main.py +0 -0
  221. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/operation_command.py +0 -0
  222. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/parser/__init__.py +0 -0
  223. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/__init__.py +0 -0
  224. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/init.py +0 -0
  225. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/json.py +0 -0
  226. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/metrics.py +0 -0
  227. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
  228. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
  229. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
  230. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
  231. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/memories.py +0 -0
  232. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
  233. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
  234. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
  235. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
  236. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/teach.py +0 -0
  237. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/runner.py +0 -0
  238. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/cli/runtime.py +0 -0
  239. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/host_hooks/__init__.py +0 -0
  240. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
  241. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
  242. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/jobs/__init__.py +0 -0
  243. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/entrypoints/jobs/episode_sync.py +0 -0
  244. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/__init__.py +0 -0
  245. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/__init__.py +0 -0
  246. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/__init__.py +0 -0
  247. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/app_role_safety.py +0 -0
  248. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/__init__.py +0 -0
  249. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
  250. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
  251. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
  252. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/restore.py +0 -0
  253. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/connection.py +0 -0
  254. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/instance_guard.py +0 -0
  255. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/migrations.py +0 -0
  256. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/privileges.py +0 -0
  257. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
  258. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +0 -0
  259. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
  260. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
  261. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
  262. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/admin/storage_setup.py +0 -0
  263. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/__init__.py +0 -0
  264. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/engine.py +0 -0
  265. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/__init__.py +0 -0
  266. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/associations.py +0 -0
  267. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/concepts.py +0 -0
  268. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/episodes.py +0 -0
  269. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/evidence.py +0 -0
  270. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/experiences.py +0 -0
  271. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
  272. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
  273. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/memories.py +0 -0
  274. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/metadata.py +0 -0
  275. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
  276. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/registry.py +0 -0
  277. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
  278. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
  279. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/utility.py +0 -0
  280. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/views.py +0 -0
  281. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/wiki_summaries.py +0 -0
  282. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
  283. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
  284. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
  285. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/metrics.py +0 -0
  286. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/metrics_adapter.py +0 -0
  287. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -0
  288. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
  289. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
  290. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
  291. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -0
  292. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
  293. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -0
  294. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
  295. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
  296. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
  297. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
  298. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
  299. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/repository_index_repo.py +0 -0
  300. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
  301. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
  302. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
  303. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/wiki_summaries_repo.py +0 -0
  304. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
  305. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
  306. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
  307. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
  308. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/session.py +0 -0
  309. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/db/runtime/uow.py +0 -0
  310. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/embeddings/__init__.py +0 -0
  311. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/embeddings/local_provider.py +0 -0
  312. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/embeddings/prewarm.py +0 -0
  313. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/embeddings/query_vector_search.py +0 -0
  314. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/__init__.py +0 -0
  315. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/__init__.py +0 -0
  316. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/claude.py +0 -0
  317. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/codex.py +0 -0
  318. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/cursor.py +0 -0
  319. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
  320. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/inspection.py +0 -0
  321. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
  322. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
  323. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
  324. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/paths.py +0 -0
  325. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/service.py +0 -0
  326. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/types.py +0 -0
  327. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/__init__.py +0 -0
  328. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
  329. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
  330. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
  331. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
  332. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
  333. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/resolver.py +0 -0
  334. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
  335. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -0
  336. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
  337. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
  338. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/prompt.py +0 -0
  339. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
  340. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
  341. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
  342. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
  343. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
  344. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
  345. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
  346. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
  347. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
  348. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/local_state/__init__.py +0 -0
  349. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/local_state/init_lock.py +0 -0
  350. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/local_state/machine_config_store.py +0 -0
  351. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/local_state/operation_registration.py +0 -0
  352. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/local_state/paths.py +0 -0
  353. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/local_state/repo_registration_store.py +0 -0
  354. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/local_state/session_state_file_store.py +0 -0
  355. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/local_state/shadow_git_store.py +0 -0
  356. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/process/__init__.py +0 -0
  357. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/__init__.py +0 -0
  358. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/autostart.py +0 -0
  359. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/launcher.py +0 -0
  360. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
  361. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/poller.py +0 -0
  362. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/status_store.py +0 -0
  363. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/__init__.py +0 -0
  364. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/__init__.py +0 -0
  365. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/artifacts.py +0 -0
  366. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/browser.py +0 -0
  367. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/pager.py +0 -0
  368. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/render_html.py +0 -0
  369. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/__init__.py +0 -0
  370. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/browser.py +0 -0
  371. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/render_html.py +0 -0
  372. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/server.py +0 -0
  373. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/summary_worker.py +0 -0
  374. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/system/__init__.py +0 -0
  375. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/system/clock.py +0 -0
  376. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/system/id_generator.py +0 -0
  377. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/system/package_upgrade.py +0 -0
  378. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/__init__.py +0 -0
  379. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
  380. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/operation_invocations.py +0 -0
  381. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/operation_polling.py +0 -0
  382. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/read_records.py +0 -0
  383. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/recall_records.py +0 -0
  384. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/recorder.py +0 -0
  385. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/records.py +0 -0
  386. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/sink.py +0 -0
  387. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/storage_protocols.py +0 -0
  388. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/sync_records.py +0 -0
  389. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/infrastructure/telemetry/write_records.py +0 -0
  390. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/settings/__init__.py +0 -0
  391. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/settings/defaults/create_policy.yaml +0 -0
  392. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/settings/defaults/read_policy.yaml +0 -0
  393. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/settings/defaults/runtime.yaml +0 -0
  394. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/settings/defaults/thresholds.yaml +0 -0
  395. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/settings/defaults/update_policy.yaml +0 -0
  396. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/settings/internal-agents/defaults.yaml +0 -0
  397. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/__init__.py +0 -0
  398. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/admin.py +0 -0
  399. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/admin_db.py +0 -0
  400. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/admin_diagnose.py +0 -0
  401. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/analytics.py +0 -0
  402. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/backup.py +0 -0
  403. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/cli_runtime.py +0 -0
  404. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/config.py +0 -0
  405. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/create_policy.py +0 -0
  406. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/db.py +0 -0
  407. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/dsn_resolution.py +0 -0
  408. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/embeddings.py +0 -0
  409. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/episode_poller.py +0 -0
  410. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/episode_sync_launcher.py +0 -0
  411. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/host_hooks.py +0 -0
  412. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/internal_agent_config.py +0 -0
  413. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/knowledge_builder.py +0 -0
  414. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/metrics.py +0 -0
  415. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/migrations.py +0 -0
  416. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/model_usage_backfill.py +0 -0
  417. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/operation_dependencies.py +0 -0
  418. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/read_policy.py +0 -0
  419. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/repo_context.py +0 -0
  420. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/repos.py +0 -0
  421. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/retrieval.py +0 -0
  422. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/runtime_admin.py +0 -0
  423. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/runtime_context.py +0 -0
  424. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/settings.py +0 -0
  425. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/snapshot_baseline.py +0 -0
  426. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/thresholds.py +0 -0
  427. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/update_policy.py +0 -0
  428. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/use_cases.py +0 -0
  429. {shellbrain-0.1.44 → shellbrain-0.1.45}/app/startup/wiki.py +0 -0
  430. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/__init__.py +0 -0
  431. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/_legacy_usage_views.py +0 -0
  432. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/_usage_view_sql.py +0 -0
  433. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/env.py +0 -0
  434. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260226_0001_initial_schema.py +0 -0
  435. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
  436. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
  437. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
  438. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
  439. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
  440. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
  441. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
  442. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
  443. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
  444. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
  445. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
  446. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
  447. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
  448. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260422_0015_problem_runs.py +0 -0
  449. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
  450. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
  451. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
  452. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260515_0019_scenario_records.py +0 -0
  453. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
  454. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
  455. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
  456. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
  457. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
  458. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
  459. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
  460. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
  461. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
  462. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
  463. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
  464. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
  465. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
  466. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
  467. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
  468. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
  469. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
  470. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
  471. {shellbrain-0.1.44 → shellbrain-0.1.45}/migrations/versions/__init__.py +0 -0
  472. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/__init__.py +0 -0
  473. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/claude/CLAUDE.md +0 -0
  474. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
  475. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
  476. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/AGENTS.md +0 -0
  477. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
  478. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
  479. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
  480. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
  481. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
  482. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
  483. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
  484. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/references/request-shapes.md +0 -0
  485. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
  486. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
  487. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
  488. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
  489. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
  490. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
  491. {shellbrain-0.1.44 → shellbrain-0.1.45}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
  492. {shellbrain-0.1.44 → shellbrain-0.1.45}/setup.cfg +0 -0
  493. {shellbrain-0.1.44 → shellbrain-0.1.45}/shellbrain.egg-info/dependency_links.txt +0 -0
  494. {shellbrain-0.1.44 → shellbrain-0.1.45}/shellbrain.egg-info/entry_points.txt +0 -0
  495. {shellbrain-0.1.44 → shellbrain-0.1.45}/shellbrain.egg-info/requires.txt +0 -0
  496. {shellbrain-0.1.44 → shellbrain-0.1.45}/shellbrain.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shellbrain
3
- Version: 0.1.44
3
+ Version: 0.1.45
4
4
  Summary: Repo-scoped Shellbrain CLI with explicit evidence-backed writes.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -106,6 +106,18 @@ def run_admin_command(
106
106
  print(json.dumps(summary.to_payload(), indent=2, sort_keys=True))
107
107
  return 0
108
108
 
109
+ if args.admin_command == "recall":
110
+ try:
111
+ if args.recall_command in {"fast", "full"}:
112
+ mode, path, exists = dependencies.save_recall_mode(args.recall_command)
113
+ else:
114
+ mode, path, exists = dependencies.load_recall_mode()
115
+ except ValueError as exc:
116
+ print(str(exc), file=sys.stderr)
117
+ return 1
118
+ print(_format_recall_mode(mode=mode, path=path, exists=exists))
119
+ return 0
120
+
109
121
  repo_root = resolve_admin_repo_root(getattr(args, "repo_root", None))
110
122
  if args.admin_command == "install-claude-hook":
111
123
  settings_path = dependencies.install_repo_claude_hook(repo_root=repo_root)
@@ -141,3 +153,18 @@ def run_admin_command(
141
153
  print(json.dumps({"deleted": deleted}, indent=2, sort_keys=True))
142
154
  return 0
143
155
  raise ValueError(f"Unsupported admin command: {args.admin_command}")
156
+
157
+
158
+ def _format_recall_mode(*, mode: str, path: Path, exists: bool) -> str:
159
+ if not exists:
160
+ return "Recall mode: full (default; no override file)"
161
+ if mode == "fast":
162
+ return f"Recall mode: fast (deterministic only) from {_display_path(path)}"
163
+ return f"Recall mode: full (LLM synthesis) from {_display_path(path)}"
164
+
165
+
166
+ def _display_path(path: Path) -> str:
167
+ try:
168
+ return f"~/{path.expanduser().resolve().relative_to(Path.home())}"
169
+ except ValueError:
170
+ return str(path)
@@ -32,3 +32,5 @@ class AdminCommandDependencies(Protocol):
32
32
  load_session_state: Callable[..., Any]
33
33
  delete_session_state: Callable[..., Any]
34
34
  gc_session_state: Callable[..., Any]
35
+ load_recall_mode: Callable[..., Any]
36
+ save_recall_mode: Callable[..., Any]
@@ -291,6 +291,18 @@ _ADMIN_HELP = dedent(
291
291
  Example:
292
292
  shellbrain init
293
293
  shellbrain admin migrate
294
+ shellbrain admin recall fast
295
+ """
296
+ )
297
+
298
+ _RECALL_MODE_HELP = dedent(
299
+ """\
300
+ Toggle whether recall uses the inner LLM synthesis agent.
301
+
302
+ Examples:
303
+ shellbrain admin recall fast
304
+ shellbrain admin recall full
305
+ shellbrain admin recall status
294
306
  """
295
307
  )
296
308
 
@@ -754,6 +766,19 @@ def build_parser() -> argparse.ArgumentParser:
754
766
  epilog=_BACKFILL_TOKEN_USAGE_HELP,
755
767
  formatter_class=_HelpFormatter,
756
768
  )
769
+ recall_parser = admin_subparsers.add_parser(
770
+ "recall",
771
+ help="Toggle recall between fast deterministic mode and full LLM synthesis.",
772
+ description="Toggle whether recall uses the inner LLM synthesis agent.",
773
+ epilog=_RECALL_MODE_HELP,
774
+ formatter_class=_HelpFormatter,
775
+ )
776
+ recall_subparsers = recall_parser.add_subparsers(
777
+ dest="recall_command", required=True, metavar="recall-command"
778
+ )
779
+ recall_subparsers.add_parser("fast", help="Use deterministic-only recall.")
780
+ recall_subparsers.add_parser("full", help="Use LLM synthesis recall.")
781
+ recall_subparsers.add_parser("status", help="Print the current recall mode.")
757
782
  install_hook_parser = admin_subparsers.add_parser(
758
783
  "install-claude-hook",
759
784
  help="Install the repo-local Claude hook used for trusted caller identity.",
@@ -0,0 +1,60 @@
1
+ """Machine-local recall mode override storage."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ from pathlib import Path
7
+ import tomllib
8
+
9
+ from app.infrastructure.local_state.paths import get_shellbrain_home
10
+
11
+
12
+ RECALL_MODE_FAST = "fast"
13
+ RECALL_MODE_FULL = "full"
14
+ DEFAULT_RECALL_MODE = RECALL_MODE_FULL
15
+ VALID_RECALL_MODES = {RECALL_MODE_FAST, RECALL_MODE_FULL}
16
+
17
+
18
+ def get_recall_mode_path() -> Path:
19
+ """Return the machine-local recall mode override path."""
20
+
21
+ return get_shellbrain_home() / "recall.toml"
22
+
23
+
24
+ def load_recall_mode(path: Path | None = None) -> tuple[str, Path, bool]:
25
+ """Return recall mode, config path, and whether an override file exists."""
26
+
27
+ target = path or get_recall_mode_path()
28
+ try:
29
+ text = target.read_text(encoding="utf-8")
30
+ except FileNotFoundError:
31
+ return DEFAULT_RECALL_MODE, target, False
32
+ try:
33
+ payload = tomllib.loads(text)
34
+ except tomllib.TOMLDecodeError as exc:
35
+ raise ValueError(f"Invalid recall mode config at {target}: {exc}") from exc
36
+ if set(payload) != {"mode"}:
37
+ raise ValueError(
38
+ f"Invalid recall mode config at {target}: expected only the 'mode' key."
39
+ )
40
+ mode = payload.get("mode")
41
+ if not isinstance(mode, str) or mode not in VALID_RECALL_MODES:
42
+ raise ValueError(
43
+ f"Invalid recall mode config at {target}: mode must be 'fast' or 'full'."
44
+ )
45
+ return mode, target, True
46
+
47
+
48
+ def save_recall_mode(mode: str, path: Path | None = None) -> tuple[str, Path, bool]:
49
+ """Persist one machine-local recall mode override."""
50
+
51
+ if mode not in VALID_RECALL_MODES:
52
+ raise ValueError("Recall mode must be 'fast' or 'full'.")
53
+ target = path or get_recall_mode_path()
54
+ target.parent.mkdir(parents=True, exist_ok=True)
55
+ target.write_text(f'mode = "{mode}"\n', encoding="utf-8")
56
+ try:
57
+ os.chmod(target, 0o600)
58
+ except OSError:
59
+ pass
60
+ return mode, target, True
@@ -34,3 +34,5 @@ class AdminCommandDependencies:
34
34
  load_session_state: Callable[..., Any]
35
35
  delete_session_state: Callable[..., Any]
36
36
  gc_session_state: Callable[..., Any]
37
+ load_recall_mode: Callable[..., Any]
38
+ save_recall_mode: Callable[..., Any]
@@ -81,6 +81,7 @@ def build_admin_command_dependencies():
81
81
  from app.startup import migrations
82
82
  from app.startup import model_usage_backfill
83
83
  from app.startup.admin_dependencies import AdminCommandDependencies
84
+ from app.infrastructure.local_state import recall_mode_store
84
85
 
85
86
  return AdminCommandDependencies(
86
87
  upgrade_database=migrations.upgrade_database,
@@ -107,6 +108,8 @@ def build_admin_command_dependencies():
107
108
  load_session_state=startup_admin.load_session_state,
108
109
  delete_session_state=startup_admin.delete_session_state,
109
110
  gc_session_state=startup_admin.gc_session_state,
111
+ load_recall_mode=recall_mode_store.load_recall_mode,
112
+ save_recall_mode=recall_mode_store.save_recall_mode,
110
113
  )
111
114
 
112
115
 
@@ -21,6 +21,10 @@ from app.core.ports.host_apps.inner_agents import (
21
21
  )
22
22
  from app.infrastructure.host_apps.inner_agents.claude_cli import ClaudeCliInnerAgentRunner
23
23
  from app.infrastructure.host_apps.inner_agents.codex_cli import CodexCliInnerAgentRunner
24
+ from app.infrastructure.local_state.recall_mode_store import (
25
+ RECALL_MODE_FAST,
26
+ load_recall_mode,
27
+ )
24
28
  from app.startup.config import get_config_provider
25
29
  from app.startup.internal_agent_config import InternalAgentsConfig
26
30
 
@@ -43,7 +47,7 @@ def get_build_context_settings() -> InnerAgentSettings:
43
47
  """Return typed settings for the read-only build_context agent."""
44
48
 
45
49
  config = get_internal_agents_config()
46
- return _resolve_settings(config, config.build_context)
50
+ return _resolve_build_context_settings(config)
47
51
 
48
52
 
49
53
  def get_build_knowledge_settings() -> BuildKnowledgeSettings:
@@ -71,7 +75,10 @@ def get_build_context_inner_agent_runner() -> IInnerAgentRunner | None:
71
75
  """Return the configured build_context provider adapter."""
72
76
 
73
77
  config = get_internal_agents_config()
74
- return _runner_for(config, config.build_context)
78
+ settings = _resolve_build_context_settings(config)
79
+ if settings.strategy == "deterministic_only":
80
+ return None
81
+ return _runner_for(config, settings)
75
82
 
76
83
 
77
84
  def get_build_knowledge_inner_agent_runner() -> IBuildKnowledgeAgentRunner | None:
@@ -138,6 +145,16 @@ def _resolve_settings(
138
145
  )
139
146
 
140
147
 
148
+ def _resolve_build_context_settings(config: InternalAgentsConfig) -> InnerAgentSettings:
149
+ settings = _resolve_settings(config, config.build_context)
150
+ mode, _path, exists = load_recall_mode()
151
+ if not exists:
152
+ return settings
153
+ if mode == RECALL_MODE_FAST:
154
+ return settings.model_copy(update={"strategy": "deterministic_only"})
155
+ return settings.model_copy(update={"strategy": "deterministic_synthesis"})
156
+
157
+
141
158
  def _select_provider(
142
159
  config: InternalAgentsConfig,
143
160
  requested_provider: str,
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "shellbrain"
7
- version = "0.1.44"
7
+ version = "0.1.45"
8
8
  description = "Repo-scoped Shellbrain CLI with explicit evidence-backed writes."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shellbrain
3
- Version: 0.1.44
3
+ Version: 0.1.45
4
4
  Summary: Repo-scoped Shellbrain CLI with explicit evidence-backed writes.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -343,6 +343,7 @@ app/infrastructure/local_state/init_lock.py
343
343
  app/infrastructure/local_state/machine_config_store.py
344
344
  app/infrastructure/local_state/operation_registration.py
345
345
  app/infrastructure/local_state/paths.py
346
+ app/infrastructure/local_state/recall_mode_store.py
346
347
  app/infrastructure/local_state/repo_registration_store.py
347
348
  app/infrastructure/local_state/session_state_file_store.py
348
349
  app/infrastructure/local_state/shadow_git_store.py
File without changes
File without changes
File without changes