shellbrain 0.1.43__tar.gz → 0.1.45__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. {shellbrain-0.1.43 → shellbrain-0.1.45}/PKG-INFO +1 -1
  2. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/admin.py +27 -0
  3. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/admin_dependencies.py +2 -0
  4. {shellbrain-0.1.43 → 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.43 → shellbrain-0.1.45}/app/startup/admin_dependencies.py +2 -0
  7. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/cli.py +3 -0
  8. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/internal_agents.py +19 -2
  9. shellbrain-0.1.45/onboarding_assets/claude/CLAUDE.md +40 -0
  10. shellbrain-0.1.45/onboarding_assets/codex/AGENTS.md +40 -0
  11. {shellbrain-0.1.43 → shellbrain-0.1.45}/pyproject.toml +1 -1
  12. {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/PKG-INFO +1 -1
  13. {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/SOURCES.txt +1 -0
  14. shellbrain-0.1.43/onboarding_assets/claude/CLAUDE.md +0 -52
  15. shellbrain-0.1.43/onboarding_assets/codex/AGENTS.md +0 -52
  16. {shellbrain-0.1.43 → shellbrain-0.1.45}/README.md +0 -0
  17. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/__init__.py +0 -0
  18. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/__main__.py +0 -0
  19. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/__init__.py +0 -0
  20. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/__init__.py +0 -0
  21. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/admin_errors.py +0 -0
  22. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/associations.py +0 -0
  23. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/backups.py +0 -0
  24. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/concepts.py +0 -0
  25. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/episodes.py +0 -0
  26. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/evidence.py +0 -0
  27. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/guidance.py +0 -0
  28. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/identity.py +0 -0
  29. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/ids.py +0 -0
  30. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/inner_agents.py +0 -0
  31. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/knowledge_builder.py +0 -0
  32. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/machine_config.py +0 -0
  33. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/memories.py +0 -0
  34. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/repositories.py +0 -0
  35. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/runtime_context.py +0 -0
  36. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/scenarios.py +0 -0
  37. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/session_state.py +0 -0
  38. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/settings.py +0 -0
  39. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/snapshots.py +0 -0
  40. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/structural_memory_relations.py +0 -0
  41. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/utility.py +0 -0
  42. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/entities/wiki_summaries.py +0 -0
  43. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/errors.py +0 -0
  44. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/__init__.py +0 -0
  45. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/concepts/__init__.py +0 -0
  46. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/concepts/relation_rules.py +0 -0
  47. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/concepts/search_text.py +0 -0
  48. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/episodes/__init__.py +0 -0
  49. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/episodes/event_content.py +0 -0
  50. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/episodes/knowledge_building.py +0 -0
  51. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/memories/__init__.py +0 -0
  52. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/memories/add_plan.py +0 -0
  53. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/memories/link_rules.py +0 -0
  54. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/memories/update_plan.py +0 -0
  55. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/__init__.py +0 -0
  56. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/bm25.py +0 -0
  57. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/context_pack.py +0 -0
  58. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/expansion.py +0 -0
  59. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/fusion_rrf.py +0 -0
  60. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/lexical_query.py +0 -0
  61. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/ontology_semantics.py +0 -0
  62. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/retrieval/scoring.py +0 -0
  63. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/policies/wiki_summary_freshness.py +0 -0
  64. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/__init__.py +0 -0
  65. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/__init__.py +0 -0
  66. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/concept_repositories.py +0 -0
  67. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/episode_repositories.py +0 -0
  68. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/guidance.py +0 -0
  69. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/knowledge_builder.py +0 -0
  70. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/memory_repositories.py +0 -0
  71. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/problem_runs.py +0 -0
  72. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/repository_index.py +0 -0
  73. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/retrieval_repositories.py +0 -0
  74. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/snapshots.py +0 -0
  75. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/unit_of_work.py +0 -0
  76. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/db/wiki_summaries.py +0 -0
  77. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/embeddings/__init__.py +0 -0
  78. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/embeddings/provider.py +0 -0
  79. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/embeddings/retrieval.py +0 -0
  80. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/host_apps/__init__.py +0 -0
  81. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/host_apps/inner_agents.py +0 -0
  82. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/local_state/__init__.py +0 -0
  83. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/local_state/session_state_store.py +0 -0
  84. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/local_state/shadow_git.py +0 -0
  85. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/reporting/__init__.py +0 -0
  86. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/reporting/metrics.py +0 -0
  87. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/system/__init__.py +0 -0
  88. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/system/clock.py +0 -0
  89. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/ports/system/idgen.py +0 -0
  90. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/__init__.py +0 -0
  91. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/__init__.py +0 -0
  92. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
  93. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
  94. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
  95. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
  96. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
  97. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/create_backup.py +0 -0
  98. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
  99. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
  100. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/initialize_runtime.py +0 -0
  101. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/restore_backup.py +0 -0
  102. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/admin/verify_backup.py +0 -0
  103. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/build_guidance.py +0 -0
  104. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/__init__.py +0 -0
  105. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/__init__.py +0 -0
  106. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/execute.py +0 -0
  107. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/request.py +0 -0
  108. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/add/result.py +0 -0
  109. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/containment_checks.py +0 -0
  110. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/embeddings.py +0 -0
  111. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/reference_checks.py +0 -0
  112. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/__init__.py +0 -0
  113. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/execute.py +0 -0
  114. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/request.py +0 -0
  115. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/show/result.py +0 -0
  116. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/__init__.py +0 -0
  117. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/execute.py +0 -0
  118. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/request.py +0 -0
  119. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/update/result.py +0 -0
  120. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/concepts/views.py +0 -0
  121. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/__init__.py +0 -0
  122. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/events/__init__.py +0 -0
  123. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/events/request.py +0 -0
  124. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
  125. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
  126. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
  127. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
  128. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
  129. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
  130. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
  131. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +0 -0
  132. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
  133. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
  134. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
  135. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
  136. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
  137. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
  138. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/__init__.py +0 -0
  139. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/add/__init__.py +0 -0
  140. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/add/execute.py +0 -0
  141. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/add/request.py +0 -0
  142. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/add/result.py +0 -0
  143. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/effect_plan.py +0 -0
  144. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/reference_checks.py +0 -0
  145. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/update/__init__.py +0 -0
  146. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/update/execute.py +0 -0
  147. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/update/request.py +0 -0
  148. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/memories/update/result.py +0 -0
  149. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/metrics/__init__.py +0 -0
  150. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
  151. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/metrics/build_snapshot.py +0 -0
  152. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/metrics/generate_dashboard.py +0 -0
  153. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/plan_execution.py +0 -0
  154. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/__init__.py +0 -0
  155. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
  156. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/build_context/execute.py +0 -0
  157. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
  158. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/context_pack_pipeline.py +0 -0
  159. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/deterministic_graph_recall.py +0 -0
  160. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/expansion.py +0 -0
  161. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/__init__.py +0 -0
  162. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/execute.py +0 -0
  163. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/request.py +0 -0
  164. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read/result.py +0 -0
  165. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/read_concepts.py +0 -0
  166. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/__init__.py +0 -0
  167. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/execute.py +0 -0
  168. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/request.py +0 -0
  169. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/recall/result.py +0 -0
  170. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
  171. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/__init__.py +0 -0
  172. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/__init__.py +0 -0
  173. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/execute.py +0 -0
  174. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/request.py +0 -0
  175. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/scenarios/record/result.py +0 -0
  176. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/__init__.py +0 -0
  177. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
  178. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
  179. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
  180. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -0
  181. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
  182. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/execute.py +0 -0
  183. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
  184. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/__init__.py +0 -0
  185. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/execute.py +0 -0
  186. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/request.py +0 -0
  187. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/result.py +0 -0
  188. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/core/use_cases/wiki/summaries.py +0 -0
  189. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/__init__.py +0 -0
  190. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/__init__.py +0 -0
  191. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/error_responses.py +0 -0
  192. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/__init__.py +0 -0
  193. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
  194. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/dependencies.py +0 -0
  195. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
  196. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/init.py +0 -0
  197. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/metrics.py +0 -0
  198. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/upgrade.py +0 -0
  199. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/human/wiki.py +0 -0
  200. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
  201. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
  202. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
  203. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
  204. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
  205. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
  206. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
  207. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
  208. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
  209. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
  210. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
  211. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
  212. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
  213. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
  214. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
  215. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
  216. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
  217. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
  218. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
  219. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/session_state.py +0 -0
  220. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
  221. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
  222. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/snapshot.py +0 -0
  223. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
  224. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/main.py +0 -0
  225. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/operation_command.py +0 -0
  226. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/parser/__init__.py +0 -0
  227. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/__init__.py +0 -0
  228. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/init.py +0 -0
  229. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/json.py +0 -0
  230. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/presenters/metrics.py +0 -0
  231. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
  232. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
  233. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
  234. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
  235. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/memories.py +0 -0
  236. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
  237. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
  238. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
  239. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
  240. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/request_parsing/teach.py +0 -0
  241. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/runner.py +0 -0
  242. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/cli/runtime.py +0 -0
  243. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/host_hooks/__init__.py +0 -0
  244. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
  245. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
  246. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/jobs/__init__.py +0 -0
  247. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/entrypoints/jobs/episode_sync.py +0 -0
  248. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/__init__.py +0 -0
  249. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/__init__.py +0 -0
  250. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/__init__.py +0 -0
  251. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/app_role_safety.py +0 -0
  252. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/__init__.py +0 -0
  253. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
  254. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
  255. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
  256. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/backups/restore.py +0 -0
  257. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/connection.py +0 -0
  258. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/instance_guard.py +0 -0
  259. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/migrations.py +0 -0
  260. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/privileges.py +0 -0
  261. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
  262. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +0 -0
  263. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
  264. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
  265. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
  266. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/admin/storage_setup.py +0 -0
  267. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/__init__.py +0 -0
  268. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/engine.py +0 -0
  269. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/__init__.py +0 -0
  270. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/associations.py +0 -0
  271. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/concepts.py +0 -0
  272. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/episodes.py +0 -0
  273. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/evidence.py +0 -0
  274. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/experiences.py +0 -0
  275. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
  276. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
  277. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/memories.py +0 -0
  278. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/metadata.py +0 -0
  279. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
  280. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/registry.py +0 -0
  281. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
  282. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
  283. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/utility.py +0 -0
  284. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/views.py +0 -0
  285. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/models/wiki_summaries.py +0 -0
  286. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
  287. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
  288. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
  289. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/metrics.py +0 -0
  290. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/metrics_adapter.py +0 -0
  291. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -0
  292. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
  293. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
  294. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
  295. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -0
  296. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
  297. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -0
  298. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
  299. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
  300. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
  301. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
  302. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
  303. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/repository_index_repo.py +0 -0
  304. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
  305. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
  306. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
  307. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/relational/wiki_summaries_repo.py +0 -0
  308. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
  309. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
  310. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
  311. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
  312. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/session.py +0 -0
  313. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/db/runtime/uow.py +0 -0
  314. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/embeddings/__init__.py +0 -0
  315. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/embeddings/local_provider.py +0 -0
  316. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/embeddings/prewarm.py +0 -0
  317. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/embeddings/query_vector_search.py +0 -0
  318. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/__init__.py +0 -0
  319. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/__init__.py +0 -0
  320. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/claude.py +0 -0
  321. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/codex.py +0 -0
  322. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/cursor.py +0 -0
  323. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
  324. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/inspection.py +0 -0
  325. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
  326. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
  327. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
  328. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/paths.py +0 -0
  329. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/service.py +0 -0
  330. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/assets/types.py +0 -0
  331. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/__init__.py +0 -0
  332. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
  333. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
  334. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
  335. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
  336. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
  337. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/identity/resolver.py +0 -0
  338. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
  339. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -0
  340. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
  341. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
  342. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/inner_agents/prompt.py +0 -0
  343. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
  344. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
  345. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
  346. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
  347. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
  348. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
  349. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
  350. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
  351. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
  352. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/__init__.py +0 -0
  353. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/init_lock.py +0 -0
  354. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/machine_config_store.py +0 -0
  355. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/operation_registration.py +0 -0
  356. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/paths.py +0 -0
  357. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/repo_registration_store.py +0 -0
  358. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/session_state_file_store.py +0 -0
  359. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/local_state/shadow_git_store.py +0 -0
  360. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/__init__.py +0 -0
  361. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/__init__.py +0 -0
  362. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/autostart.py +0 -0
  363. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/launcher.py +0 -0
  364. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
  365. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/poller.py +0 -0
  366. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/process/episode_sync/status_store.py +0 -0
  367. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/__init__.py +0 -0
  368. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/__init__.py +0 -0
  369. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/artifacts.py +0 -0
  370. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/browser.py +0 -0
  371. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/pager.py +0 -0
  372. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/metrics/render_html.py +0 -0
  373. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/__init__.py +0 -0
  374. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/browser.py +0 -0
  375. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/render_html.py +0 -0
  376. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/server.py +0 -0
  377. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/reporting/wiki/summary_worker.py +0 -0
  378. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/system/__init__.py +0 -0
  379. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/system/clock.py +0 -0
  380. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/system/id_generator.py +0 -0
  381. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/system/package_upgrade.py +0 -0
  382. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/__init__.py +0 -0
  383. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
  384. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/operation_invocations.py +0 -0
  385. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/operation_polling.py +0 -0
  386. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/read_records.py +0 -0
  387. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/recall_records.py +0 -0
  388. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/recorder.py +0 -0
  389. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/records.py +0 -0
  390. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/sink.py +0 -0
  391. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/storage_protocols.py +0 -0
  392. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/sync_records.py +0 -0
  393. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/infrastructure/telemetry/write_records.py +0 -0
  394. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/__init__.py +0 -0
  395. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/create_policy.yaml +0 -0
  396. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/read_policy.yaml +0 -0
  397. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/runtime.yaml +0 -0
  398. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/thresholds.yaml +0 -0
  399. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/defaults/update_policy.yaml +0 -0
  400. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/settings/internal-agents/defaults.yaml +0 -0
  401. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/__init__.py +0 -0
  402. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/admin.py +0 -0
  403. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/admin_db.py +0 -0
  404. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/admin_diagnose.py +0 -0
  405. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/analytics.py +0 -0
  406. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/backup.py +0 -0
  407. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/cli_runtime.py +0 -0
  408. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/config.py +0 -0
  409. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/create_policy.py +0 -0
  410. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/db.py +0 -0
  411. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/dsn_resolution.py +0 -0
  412. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/embeddings.py +0 -0
  413. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/episode_poller.py +0 -0
  414. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/episode_sync_launcher.py +0 -0
  415. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/host_hooks.py +0 -0
  416. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/internal_agent_config.py +0 -0
  417. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/knowledge_builder.py +0 -0
  418. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/metrics.py +0 -0
  419. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/migrations.py +0 -0
  420. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/model_usage_backfill.py +0 -0
  421. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/operation_dependencies.py +0 -0
  422. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/read_policy.py +0 -0
  423. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/repo_context.py +0 -0
  424. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/repos.py +0 -0
  425. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/retrieval.py +0 -0
  426. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/runtime_admin.py +0 -0
  427. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/runtime_context.py +0 -0
  428. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/settings.py +0 -0
  429. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/snapshot_baseline.py +0 -0
  430. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/thresholds.py +0 -0
  431. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/update_policy.py +0 -0
  432. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/use_cases.py +0 -0
  433. {shellbrain-0.1.43 → shellbrain-0.1.45}/app/startup/wiki.py +0 -0
  434. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/__init__.py +0 -0
  435. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/_legacy_usage_views.py +0 -0
  436. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/_usage_view_sql.py +0 -0
  437. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/env.py +0 -0
  438. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260226_0001_initial_schema.py +0 -0
  439. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
  440. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
  441. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
  442. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
  443. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
  444. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
  445. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
  446. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
  447. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
  448. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
  449. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
  450. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
  451. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
  452. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260422_0015_problem_runs.py +0 -0
  453. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
  454. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
  455. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
  456. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260515_0019_scenario_records.py +0 -0
  457. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
  458. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
  459. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
  460. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
  461. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
  462. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
  463. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
  464. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
  465. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
  466. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
  467. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
  468. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
  469. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
  470. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
  471. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
  472. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
  473. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
  474. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
  475. {shellbrain-0.1.43 → shellbrain-0.1.45}/migrations/versions/__init__.py +0 -0
  476. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/__init__.py +0 -0
  477. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
  478. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
  479. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
  480. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
  481. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
  482. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
  483. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
  484. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
  485. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
  486. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/references/request-shapes.md +0 -0
  487. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
  488. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
  489. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
  490. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
  491. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
  492. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
  493. {shellbrain-0.1.43 → shellbrain-0.1.45}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
  494. {shellbrain-0.1.43 → shellbrain-0.1.45}/setup.cfg +0 -0
  495. {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/dependency_links.txt +0 -0
  496. {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/entry_points.txt +0 -0
  497. {shellbrain-0.1.43 → shellbrain-0.1.45}/shellbrain.egg-info/requires.txt +0 -0
  498. {shellbrain-0.1.43 → 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.43
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,
@@ -0,0 +1,40 @@
1
+ ## Shellbrain
2
+
3
+ Use Shellbrain for targeted recall during agent work.
4
+
5
+ Keep this tuple in mind:
6
+
7
+ `goal | surface | obstacle | hypothesis`
8
+
9
+ Emit one `SB:` line when the tuple changes or you hit a boundary state:
10
+
11
+ - goal, surface, obstacle, or hypothesis changed
12
+ - same approach failed twice
13
+ - an error repeats
14
+ - you are about to make an evidence-bearing decision
15
+ - you switch files, subsystems, or strategy
16
+ - you are closing out
17
+
18
+ If prior context may help:
19
+
20
+ `SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
21
+
22
+ Then run:
23
+
24
+ ```bash
25
+ shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
26
+ ```
27
+
28
+ If recall would not help:
29
+
30
+ `SB: skip | same signature | <one-line reason>`
31
+
32
+ Then continue. Do not call recall reflexively.
33
+
34
+ Use `shellbrain recall` for normal task context. Use `shellbrain teach` only when the user explicitly asks you to store or teach Shellbrain something.
35
+
36
+ If you changed any files since your last user-facing response, run `shellbrain snapshot` exactly once after validation and immediately before your next user-facing response. Do this on every response cycle where files changed; skip only when no files changed.
37
+
38
+ Do not call `shellbrain read`, `shellbrain events`, `shellbrain memory`, `shellbrain concept`, or `shellbrain scenario`.
39
+
40
+ Use the installed `shellbrain` skill for the detailed recall workflow.
@@ -0,0 +1,40 @@
1
+ ## Shellbrain
2
+
3
+ Use Shellbrain for targeted recall during agent work.
4
+
5
+ Keep this tuple in mind:
6
+
7
+ `goal | surface | obstacle | hypothesis`
8
+
9
+ Emit one `SB:` line when the tuple changes or you hit a boundary state:
10
+
11
+ - goal, surface, obstacle, or hypothesis changed
12
+ - same approach failed twice
13
+ - an error repeats
14
+ - you are about to make an evidence-bearing decision
15
+ - you switch files, subsystems, or strategy
16
+ - you are closing out
17
+
18
+ If prior context may help:
19
+
20
+ `SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
21
+
22
+ Then run:
23
+
24
+ ```bash
25
+ shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
26
+ ```
27
+
28
+ If recall would not help:
29
+
30
+ `SB: skip | same signature | <one-line reason>`
31
+
32
+ Then continue. Do not call recall reflexively.
33
+
34
+ Use `shellbrain recall` for normal task context. Use `shellbrain teach` only when the user explicitly asks you to store or teach Shellbrain something.
35
+
36
+ If you changed any files since your last user-facing response, run `shellbrain snapshot` exactly once after validation and immediately before your next user-facing response. Do this on every response cycle where files changed; skip only when no files changed.
37
+
38
+ Do not call `shellbrain read`, `shellbrain events`, `shellbrain memory`, `shellbrain concept`, or `shellbrain scenario`.
39
+
40
+ Use the installed `shellbrain` skill for the detailed recall workflow.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "shellbrain"
7
- version = "0.1.43"
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.43
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
@@ -1,52 +0,0 @@
1
- ## Shellbrain
2
-
3
- You have a persistent memory system called Shellbrain. This section exists to make you remember to use it at the right moments.
4
-
5
- ### The Core Habit
6
-
7
- As you work, maintain a mental summary of your current subproblem as:
8
-
9
- `goal | surface | obstacle | hypothesis`
10
-
11
- When that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This keeps Shellbrain in your local attention so you can decide whether recall would help.
12
-
13
- Boundary states:
14
-
15
- - The goal, surface, obstacle, or hypothesis changed.
16
- - The same approach failed twice.
17
- - An error is repeating.
18
- - You are about to make an evidence-bearing decision.
19
- - You are switching files, subsystems, or implementation strategy.
20
- - You are closing out a task.
21
-
22
- ### What To Say
23
-
24
- If prior context might help:
25
-
26
- `SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
27
-
28
- Then call Shellbrain recall:
29
-
30
- ```bash
31
- shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
32
- ```
33
-
34
- If the tuple has not changed and there is no new evidence, failure, or uncertainty:
35
-
36
- `SB: skip | same signature | <one-line reason>`
37
-
38
- Then continue. Do not call recall reflexively.
39
-
40
- ### Worker Boundary
41
-
42
- As the working agent, use `shellbrain recall` for normal task context. Use `shellbrain teach` only when the user explicitly asks you to store or teach Shellbrain something.
43
-
44
- If you changed any files since your last user-facing response, run `shellbrain snapshot` exactly once after validation and immediately before your next user-facing response. Do this on every response cycle where files changed; skip only when no files changed.
45
-
46
- Do not call `shellbrain read`, `shellbrain events`, `shellbrain memory`, `shellbrain concept`, or `shellbrain scenario`.
47
-
48
- Shellbrain's internal agents handle raw retrieval, synthesis, memory writing, concept updates, scenario recording, and teach consolidation.
49
-
50
- ### Reference
51
-
52
- Use the installed `shellbrain` skill for the detailed recall workflow.
@@ -1,52 +0,0 @@
1
- ## Shellbrain
2
-
3
- You have a persistent memory system called Shellbrain. This section exists to make you remember to use it at the right moments.
4
-
5
- ### The Core Habit
6
-
7
- As you work, maintain a mental summary of your current subproblem as:
8
-
9
- `goal | surface | obstacle | hypothesis`
10
-
11
- When that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This keeps Shellbrain in your local attention so you can decide whether recall would help.
12
-
13
- Boundary states:
14
-
15
- - The goal, surface, obstacle, or hypothesis changed.
16
- - The same approach failed twice.
17
- - An error is repeating.
18
- - You are about to make an evidence-bearing decision.
19
- - You are switching files, subsystems, or implementation strategy.
20
- - You are closing out a task.
21
-
22
- ### What To Say
23
-
24
- If prior context might help:
25
-
26
- `SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
27
-
28
- Then call Shellbrain recall:
29
-
30
- ```bash
31
- shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
32
- ```
33
-
34
- If the tuple has not changed and there is no new evidence, failure, or uncertainty:
35
-
36
- `SB: skip | same signature | <one-line reason>`
37
-
38
- Then continue. Do not call recall reflexively.
39
-
40
- ### Worker Boundary
41
-
42
- As the working agent, use `shellbrain recall` for normal task context. Use `shellbrain teach` only when the user explicitly asks you to store or teach Shellbrain something.
43
-
44
- If you changed any files since your last user-facing response, run `shellbrain snapshot` exactly once after validation and immediately before your next user-facing response. Do this on every response cycle where files changed; skip only when no files changed.
45
-
46
- Do not call `shellbrain read`, `shellbrain events`, `shellbrain memory`, `shellbrain concept`, or `shellbrain scenario`.
47
-
48
- Shellbrain's internal agents handle raw retrieval, synthesis, memory writing, concept updates, scenario recording, and teach consolidation.
49
-
50
- ### Reference
51
-
52
- Use the installed `shellbrain` skill for the detailed recall workflow.
File without changes
File without changes
File without changes