shellbrain 0.1.46__tar.gz → 0.1.48__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.46 → shellbrain-0.1.48}/PKG-INFO +4 -2
  2. {shellbrain-0.1.46 → shellbrain-0.1.48}/README.md +3 -1
  3. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/host_apps/inner_agents.py +0 -1
  4. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/build_context/execute.py +0 -1
  5. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/deterministic_graph_recall.py +4 -23
  6. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/recall/__init__.py +1 -5
  7. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/recall/request.py +0 -19
  8. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/parser/builder.py +8 -8
  9. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/presenters/init.py +2 -2
  10. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -42
  11. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/retrieval.py +1 -9
  12. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/runner.py +6 -5
  13. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/inner_agents/prompt.py +7 -10
  14. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/settings/internal-agents/defaults.yaml +1 -1
  15. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/claude/CLAUDE.md +3 -1
  16. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/claude/skills/shellbrain/SKILL.md +8 -10
  17. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/AGENTS.md +3 -1
  18. {shellbrain-0.1.46/onboarding_assets/cursor/skills → shellbrain-0.1.48/onboarding_assets/codex}/shellbrain/SKILL.md +12 -10
  19. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain/references/session-workflow.md +8 -13
  20. {shellbrain-0.1.46/onboarding_assets/codex → shellbrain-0.1.48/onboarding_assets/cursor/skills}/shellbrain/SKILL.md +8 -15
  21. {shellbrain-0.1.46 → shellbrain-0.1.48}/pyproject.toml +1 -1
  22. {shellbrain-0.1.46 → shellbrain-0.1.48}/shellbrain.egg-info/PKG-INFO +4 -2
  23. {shellbrain-0.1.46 → shellbrain-0.1.48}/shellbrain.egg-info/SOURCES.txt +0 -1
  24. shellbrain-0.1.46/onboarding_assets/codex/shellbrain/references/request-shapes.md +0 -122
  25. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/__init__.py +0 -0
  26. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/__main__.py +0 -0
  27. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/__init__.py +0 -0
  28. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/__init__.py +0 -0
  29. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/admin_errors.py +0 -0
  30. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/associations.py +0 -0
  31. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/backups.py +0 -0
  32. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/concepts.py +0 -0
  33. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/episodes.py +0 -0
  34. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/evidence.py +0 -0
  35. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/guidance.py +0 -0
  36. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/identity.py +0 -0
  37. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/ids.py +0 -0
  38. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/inner_agents.py +0 -0
  39. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/knowledge_builder.py +0 -0
  40. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/machine_config.py +0 -0
  41. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/memories.py +0 -0
  42. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/repositories.py +0 -0
  43. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/runtime_context.py +0 -0
  44. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/scenarios.py +0 -0
  45. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/session_state.py +0 -0
  46. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/settings.py +0 -0
  47. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/snapshots.py +0 -0
  48. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/structural_memory_relations.py +0 -0
  49. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/utility.py +0 -0
  50. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/entities/wiki_summaries.py +0 -0
  51. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/errors.py +0 -0
  52. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/__init__.py +0 -0
  53. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/concepts/__init__.py +0 -0
  54. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/concepts/relation_rules.py +0 -0
  55. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/concepts/search_text.py +0 -0
  56. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/episodes/__init__.py +0 -0
  57. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/episodes/event_content.py +0 -0
  58. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/episodes/knowledge_building.py +0 -0
  59. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/memories/__init__.py +0 -0
  60. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/memories/add_plan.py +0 -0
  61. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/memories/link_rules.py +0 -0
  62. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/memories/update_plan.py +0 -0
  63. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/retrieval/__init__.py +0 -0
  64. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/retrieval/bm25.py +0 -0
  65. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/retrieval/context_pack.py +0 -0
  66. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/retrieval/expansion.py +0 -0
  67. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/retrieval/fusion_rrf.py +0 -0
  68. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/retrieval/lexical_query.py +0 -0
  69. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/retrieval/ontology_semantics.py +0 -0
  70. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/retrieval/scoring.py +0 -0
  71. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/policies/wiki_summary_freshness.py +0 -0
  72. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/__init__.py +0 -0
  73. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/__init__.py +0 -0
  74. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/concept_repositories.py +0 -0
  75. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/episode_repositories.py +0 -0
  76. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/guidance.py +0 -0
  77. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/knowledge_builder.py +0 -0
  78. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/memory_repositories.py +0 -0
  79. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/problem_runs.py +0 -0
  80. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/repository_index.py +0 -0
  81. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/retrieval_repositories.py +0 -0
  82. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/snapshots.py +0 -0
  83. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/unit_of_work.py +0 -0
  84. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/db/wiki_summaries.py +0 -0
  85. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/embeddings/__init__.py +0 -0
  86. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/embeddings/provider.py +0 -0
  87. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/embeddings/retrieval.py +0 -0
  88. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/host_apps/__init__.py +0 -0
  89. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/local_state/__init__.py +0 -0
  90. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/local_state/session_state_store.py +0 -0
  91. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/local_state/shadow_git.py +0 -0
  92. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/reporting/__init__.py +0 -0
  93. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/reporting/metrics.py +0 -0
  94. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/system/__init__.py +0 -0
  95. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/system/clock.py +0 -0
  96. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/ports/system/idgen.py +0 -0
  97. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/__init__.py +0 -0
  98. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/__init__.py +0 -0
  99. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
  100. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
  101. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
  102. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
  103. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
  104. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/create_backup.py +0 -0
  105. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
  106. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
  107. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/initialize_runtime.py +0 -0
  108. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/restore_backup.py +0 -0
  109. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/admin/verify_backup.py +0 -0
  110. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/build_guidance.py +0 -0
  111. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/__init__.py +0 -0
  112. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/add/__init__.py +0 -0
  113. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/add/execute.py +0 -0
  114. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/add/request.py +0 -0
  115. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/add/result.py +0 -0
  116. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/containment_checks.py +0 -0
  117. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/embeddings.py +0 -0
  118. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/reference_checks.py +0 -0
  119. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/show/__init__.py +0 -0
  120. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/show/execute.py +0 -0
  121. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/show/request.py +0 -0
  122. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/show/result.py +0 -0
  123. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/update/__init__.py +0 -0
  124. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/update/execute.py +0 -0
  125. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/update/request.py +0 -0
  126. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/update/result.py +0 -0
  127. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/concepts/views.py +0 -0
  128. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/episodes/__init__.py +0 -0
  129. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/episodes/events/__init__.py +0 -0
  130. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/episodes/events/request.py +0 -0
  131. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
  132. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
  133. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
  134. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
  135. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
  136. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
  137. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
  138. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +0 -0
  139. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
  140. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
  141. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
  142. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
  143. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
  144. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
  145. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/__init__.py +0 -0
  146. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/add/__init__.py +0 -0
  147. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/add/execute.py +0 -0
  148. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/add/request.py +0 -0
  149. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/add/result.py +0 -0
  150. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/effect_plan.py +0 -0
  151. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/reference_checks.py +0 -0
  152. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/update/__init__.py +0 -0
  153. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/update/execute.py +0 -0
  154. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/update/request.py +0 -0
  155. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/memories/update/result.py +0 -0
  156. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/metrics/__init__.py +0 -0
  157. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
  158. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/metrics/build_snapshot.py +0 -0
  159. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/metrics/generate_dashboard.py +0 -0
  160. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/plan_execution.py +0 -0
  161. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/__init__.py +0 -0
  162. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
  163. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
  164. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/context_pack_pipeline.py +0 -0
  165. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/expansion.py +0 -0
  166. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/read/__init__.py +0 -0
  167. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/read/execute.py +0 -0
  168. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/read/request.py +0 -0
  169. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/read/result.py +0 -0
  170. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/read_concepts.py +0 -0
  171. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/recall/execute.py +0 -0
  172. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/recall/result.py +0 -0
  173. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
  174. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/scenarios/__init__.py +0 -0
  175. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/scenarios/record/__init__.py +0 -0
  176. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/scenarios/record/execute.py +0 -0
  177. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/scenarios/record/request.py +0 -0
  178. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/scenarios/record/result.py +0 -0
  179. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/snapshots/__init__.py +0 -0
  180. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
  181. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
  182. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
  183. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -0
  184. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
  185. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/snapshots/code_delta_context/execute.py +0 -0
  186. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
  187. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/wiki/__init__.py +0 -0
  188. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/wiki/execute.py +0 -0
  189. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/wiki/request.py +0 -0
  190. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/wiki/result.py +0 -0
  191. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/core/use_cases/wiki/summaries.py +0 -0
  192. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/__init__.py +0 -0
  193. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/__init__.py +0 -0
  194. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/error_responses.py +0 -0
  195. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/__init__.py +0 -0
  196. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
  197. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/dependencies.py +0 -0
  198. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
  199. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/human/admin.py +0 -0
  200. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/human/admin_dependencies.py +0 -0
  201. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/human/init.py +0 -0
  202. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/human/metrics.py +0 -0
  203. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/human/upgrade.py +0 -0
  204. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/human/wiki.py +0 -0
  205. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
  206. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
  207. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
  208. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
  209. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
  210. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
  211. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
  212. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
  213. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
  214. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
  215. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
  216. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
  217. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
  218. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
  219. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
  220. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
  221. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
  222. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
  223. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
  224. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/session_state.py +0 -0
  225. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
  226. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
  227. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/working_agent/snapshot.py +0 -0
  228. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
  229. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/main.py +0 -0
  230. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/operation_command.py +0 -0
  231. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/parser/__init__.py +0 -0
  232. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/presenters/__init__.py +0 -0
  233. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/presenters/json.py +0 -0
  234. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/presenters/metrics.py +0 -0
  235. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
  236. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
  237. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
  238. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
  239. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/memories.py +0 -0
  240. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
  241. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
  242. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/request_parsing/teach.py +0 -0
  243. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/cli/runtime.py +0 -0
  244. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/host_hooks/__init__.py +0 -0
  245. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
  246. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
  247. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/jobs/__init__.py +0 -0
  248. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/entrypoints/jobs/episode_sync.py +0 -0
  249. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/__init__.py +0 -0
  250. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/__init__.py +0 -0
  251. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/__init__.py +0 -0
  252. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/app_role_safety.py +0 -0
  253. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/backups/__init__.py +0 -0
  254. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
  255. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
  256. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
  257. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/backups/restore.py +0 -0
  258. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/connection.py +0 -0
  259. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/instance_guard.py +0 -0
  260. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/migrations.py +0 -0
  261. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/privileges.py +0 -0
  262. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
  263. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +0 -0
  264. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
  265. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
  266. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
  267. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/admin/storage_setup.py +0 -0
  268. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/__init__.py +0 -0
  269. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/engine.py +0 -0
  270. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/__init__.py +0 -0
  271. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/associations.py +0 -0
  272. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/concepts.py +0 -0
  273. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/episodes.py +0 -0
  274. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/evidence.py +0 -0
  275. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/experiences.py +0 -0
  276. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
  277. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
  278. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/memories.py +0 -0
  279. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/metadata.py +0 -0
  280. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
  281. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/registry.py +0 -0
  282. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
  283. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
  284. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/utility.py +0 -0
  285. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/views.py +0 -0
  286. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/models/wiki_summaries.py +0 -0
  287. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
  288. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
  289. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
  290. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/queries/metrics.py +0 -0
  291. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/queries/metrics_adapter.py +0 -0
  292. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -0
  293. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
  294. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
  295. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
  296. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -0
  297. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
  298. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -0
  299. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
  300. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
  301. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
  302. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
  303. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
  304. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/repository_index_repo.py +0 -0
  305. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
  306. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
  307. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
  308. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/relational/wiki_summaries_repo.py +0 -0
  309. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
  310. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
  311. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
  312. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
  313. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/session.py +0 -0
  314. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/db/runtime/uow.py +0 -0
  315. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/embeddings/__init__.py +0 -0
  316. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/embeddings/local_provider.py +0 -0
  317. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/embeddings/prewarm.py +0 -0
  318. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/embeddings/query_vector_search.py +0 -0
  319. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/__init__.py +0 -0
  320. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/__init__.py +0 -0
  321. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/claude.py +0 -0
  322. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/codex.py +0 -0
  323. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/cursor.py +0 -0
  324. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
  325. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/inspection.py +0 -0
  326. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
  327. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
  328. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
  329. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/paths.py +0 -0
  330. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/service.py +0 -0
  331. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/assets/types.py +0 -0
  332. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/identity/__init__.py +0 -0
  333. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
  334. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
  335. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
  336. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
  337. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
  338. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/identity/resolver.py +0 -0
  339. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
  340. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -0
  341. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
  342. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
  343. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
  344. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
  345. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
  346. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
  347. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
  348. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
  349. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
  350. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
  351. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
  352. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/__init__.py +0 -0
  353. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/init_lock.py +0 -0
  354. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/machine_config_store.py +0 -0
  355. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/operation_registration.py +0 -0
  356. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/paths.py +0 -0
  357. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/recall_mode_store.py +0 -0
  358. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/repo_registration_store.py +0 -0
  359. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/session_state_file_store.py +0 -0
  360. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/local_state/shadow_git_store.py +0 -0
  361. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/process/__init__.py +0 -0
  362. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/process/episode_sync/__init__.py +0 -0
  363. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/process/episode_sync/autostart.py +0 -0
  364. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/process/episode_sync/launcher.py +0 -0
  365. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
  366. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/process/episode_sync/poller.py +0 -0
  367. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/process/episode_sync/status_store.py +0 -0
  368. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/__init__.py +0 -0
  369. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/metrics/__init__.py +0 -0
  370. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/metrics/artifacts.py +0 -0
  371. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/metrics/browser.py +0 -0
  372. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/metrics/pager.py +0 -0
  373. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/metrics/render_html.py +0 -0
  374. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/wiki/__init__.py +0 -0
  375. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/wiki/browser.py +0 -0
  376. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/wiki/render_html.py +0 -0
  377. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/wiki/server.py +0 -0
  378. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/reporting/wiki/summary_worker.py +0 -0
  379. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/system/__init__.py +0 -0
  380. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/system/clock.py +0 -0
  381. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/system/id_generator.py +0 -0
  382. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/system/package_upgrade.py +0 -0
  383. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/__init__.py +0 -0
  384. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
  385. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/operation_invocations.py +0 -0
  386. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/operation_polling.py +0 -0
  387. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/read_records.py +0 -0
  388. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/recall_records.py +0 -0
  389. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/recorder.py +0 -0
  390. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/records.py +0 -0
  391. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/sink.py +0 -0
  392. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/storage_protocols.py +0 -0
  393. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/sync_records.py +0 -0
  394. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/infrastructure/telemetry/write_records.py +0 -0
  395. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/settings/__init__.py +0 -0
  396. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/settings/defaults/create_policy.yaml +0 -0
  397. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/settings/defaults/read_policy.yaml +0 -0
  398. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/settings/defaults/runtime.yaml +0 -0
  399. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/settings/defaults/thresholds.yaml +0 -0
  400. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/settings/defaults/update_policy.yaml +0 -0
  401. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/__init__.py +0 -0
  402. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/admin.py +0 -0
  403. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/admin_db.py +0 -0
  404. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/admin_dependencies.py +0 -0
  405. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/admin_diagnose.py +0 -0
  406. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/analytics.py +0 -0
  407. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/backup.py +0 -0
  408. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/cli.py +0 -0
  409. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/cli_runtime.py +0 -0
  410. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/config.py +0 -0
  411. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/create_policy.py +0 -0
  412. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/db.py +0 -0
  413. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/dsn_resolution.py +0 -0
  414. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/embeddings.py +0 -0
  415. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/episode_poller.py +0 -0
  416. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/episode_sync_launcher.py +0 -0
  417. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/host_hooks.py +0 -0
  418. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/internal_agent_config.py +0 -0
  419. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/internal_agents.py +0 -0
  420. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/knowledge_builder.py +0 -0
  421. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/metrics.py +0 -0
  422. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/migrations.py +0 -0
  423. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/model_usage_backfill.py +0 -0
  424. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/operation_dependencies.py +0 -0
  425. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/read_policy.py +0 -0
  426. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/repo_context.py +0 -0
  427. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/repos.py +0 -0
  428. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/retrieval.py +0 -0
  429. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/runtime_admin.py +0 -0
  430. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/runtime_context.py +0 -0
  431. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/settings.py +0 -0
  432. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/snapshot_baseline.py +0 -0
  433. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/thresholds.py +0 -0
  434. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/update_policy.py +0 -0
  435. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/use_cases.py +0 -0
  436. {shellbrain-0.1.46 → shellbrain-0.1.48}/app/startup/wiki.py +0 -0
  437. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/__init__.py +0 -0
  438. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/_legacy_usage_views.py +0 -0
  439. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/_usage_view_sql.py +0 -0
  440. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/env.py +0 -0
  441. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260226_0001_initial_schema.py +0 -0
  442. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
  443. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
  444. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
  445. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
  446. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
  447. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
  448. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
  449. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
  450. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
  451. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
  452. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
  453. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
  454. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
  455. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260422_0015_problem_runs.py +0 -0
  456. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
  457. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
  458. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
  459. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260515_0019_scenario_records.py +0 -0
  460. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
  461. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
  462. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
  463. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
  464. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
  465. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
  466. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
  467. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
  468. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
  469. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
  470. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
  471. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
  472. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
  473. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
  474. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
  475. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
  476. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
  477. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
  478. {shellbrain-0.1.46 → shellbrain-0.1.48}/migrations/versions/__init__.py +0 -0
  479. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/__init__.py +0 -0
  480. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
  481. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
  482. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
  483. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
  484. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
  485. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
  486. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
  487. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
  488. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
  489. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
  490. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
  491. {shellbrain-0.1.46 → shellbrain-0.1.48}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
  492. {shellbrain-0.1.46 → shellbrain-0.1.48}/setup.cfg +0 -0
  493. {shellbrain-0.1.46 → shellbrain-0.1.48}/shellbrain.egg-info/dependency_links.txt +0 -0
  494. {shellbrain-0.1.46 → shellbrain-0.1.48}/shellbrain.egg-info/entry_points.txt +0 -0
  495. {shellbrain-0.1.46 → shellbrain-0.1.48}/shellbrain.egg-info/requires.txt +0 -0
  496. {shellbrain-0.1.46 → shellbrain-0.1.48}/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.46
3
+ Version: 0.1.48
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
@@ -71,8 +71,10 @@ The episodic layer is truth. Empirical memory extracts. Concept memory abstracts
71
71
 
72
72
  **Working agents call `shellbrain recall`.** That is the normal interface they have to think about. One command, **one _carefully curated_ compact brief**, with sources cited.
73
73
 
74
+ Recall receives only the quoted query, so include the relevant task, failure, subsystem, or decision naturally in the question.
75
+
74
76
  ```bash
75
- shellbrain recall --json '{"query":"What is ShellBrain and how does it help a working coding agent?","current_problem":{"goal":"understand ShellBrain","surface":"README","obstacle":"new readers do not know the product yet","hypothesis":"a real recall brief should show what agents get back"}}'
77
+ shellbrain recall "What is ShellBrain, and how does it help a working coding agent?"
76
78
  ```
77
79
 
78
80
  Response shape:
@@ -57,8 +57,10 @@ The episodic layer is truth. Empirical memory extracts. Concept memory abstracts
57
57
 
58
58
  **Working agents call `shellbrain recall`.** That is the normal interface they have to think about. One command, **one _carefully curated_ compact brief**, with sources cited.
59
59
 
60
+ Recall receives only the quoted query, so include the relevant task, failure, subsystem, or decision naturally in the question.
61
+
60
62
  ```bash
61
- shellbrain recall --json '{"query":"What is ShellBrain and how does it help a working coding agent?","current_problem":{"goal":"understand ShellBrain","surface":"README","obstacle":"new readers do not know the product yet","hypothesis":"a real recall brief should show what agents get back"}}'
63
+ shellbrain recall "What is ShellBrain, and how does it help a working coding agent?"
62
64
  ```
63
65
 
64
66
  Response shape:
@@ -34,7 +34,6 @@ class InnerAgentRunRequest(_StrictModel):
34
34
  max_private_reads: int = Field(default=0, ge=0, le=10)
35
35
  max_brief_tokens: int | None = Field(default=None, ge=1, le=100_000)
36
36
  query: str = Field(min_length=1)
37
- current_problem: dict[str, str]
38
37
  repo_root: str | None = None
39
38
  synthesis_only: bool = False
40
39
  deterministic_pack: dict[str, Any] | None = None
@@ -160,7 +160,6 @@ def _inner_agent_request(
160
160
  max_private_reads=settings.max_private_reads,
161
161
  max_brief_tokens=settings.max_brief_tokens,
162
162
  query=request.query,
163
- current_problem=request.current_problem.model_dump(mode="python"),
164
163
  repo_root=repo_root,
165
164
  synthesis_only=synthesis_only,
166
165
  deterministic_pack=deterministic_pack,
@@ -55,7 +55,6 @@ _CONCEPT_HARD_CAP = 8
55
55
  _RELATION_NEIGHBOR_CAP = 4
56
56
  _HIGH_SIGNAL_RELATIONS = {"depends_on", "constrains", "precedes", "contains"}
57
57
  _HIGH_SIGNAL_CLAIMS = {"invariant", "failure_mode", "usage_note", "behavior"}
58
- _PLACEHOLDER_VALUES = {"none", "none yet", "n/a", "na", "unknown", "not sure"}
59
58
 
60
59
 
61
60
  @dataclass(frozen=True)
@@ -142,7 +141,6 @@ def build_deterministic_graph_pack(
142
141
  "strategy": "deterministic_graph",
143
142
  "request": {
144
143
  "query": request.query,
145
- "current_problem": request.current_problem.model_dump(mode="python"),
146
144
  },
147
145
  "query_lanes": [
148
146
  {"lane": lane.name, "query": lane.query, "terms": list(lane.terms)}
@@ -320,10 +318,9 @@ def source_items_from_graph_pack(pack: dict[str, Any]) -> list[dict[str, Any]]:
320
318
 
321
319
  def _build_query_lanes(request: MemoryRecallRequest) -> list[_QueryLane]:
322
320
  original = _lane("original", request.query)
323
- current_problem = _current_problem_lane(request)
324
321
  identifiers = _identifier_lane(request)
325
322
  traps = _prior_cases_lane(request)
326
- lanes = [lane for lane in (original, current_problem, identifiers, traps) if lane]
323
+ lanes = [lane for lane in (original, identifiers, traps) if lane]
327
324
  deduped: list[_QueryLane] = []
328
325
  seen_queries: set[str] = set()
329
326
  for lane in lanes:
@@ -343,24 +340,13 @@ def _lane(name: str, query: str) -> _QueryLane | None:
343
340
  return _QueryLane(name=name, query=text, terms=terms)
344
341
 
345
342
 
346
- def _current_problem_lane(request: MemoryRecallRequest) -> _QueryLane | None:
347
- problem = request.current_problem.model_dump(mode="python")
348
- parts = [
349
- value
350
- for key in ("surface", "obstacle", "hypothesis", "goal")
351
- if _useful_problem_part(value := str(problem.get(key) or ""))
352
- ]
353
- return _lane("current_problem", " ".join(parts))
354
-
355
-
356
343
  def _identifier_lane(request: MemoryRecallRequest) -> _QueryLane | None:
357
- problem_text = " ".join(request.current_problem.model_dump(mode="python").values())
358
- identifiers = _extract_identifiers(f"{request.query} {problem_text}")
344
+ identifiers = _extract_identifiers(request.query)
359
345
  return _lane("identifiers", " ".join(identifiers))
360
346
 
361
347
 
362
348
  def _prior_cases_lane(request: MemoryRecallRequest) -> _QueryLane | None:
363
- terms = list(dict.fromkeys(_tokenize(f"{request.query} {request.current_problem.obstacle}")))
349
+ terms = list(dict.fromkeys(_tokenize(request.query)))
364
350
  strongest = " ".join(terms[:8])
365
351
  if not strongest:
366
352
  return None
@@ -371,7 +357,7 @@ def _prior_cases_lane(request: MemoryRecallRequest) -> _QueryLane | None:
371
357
 
372
358
 
373
359
  def _broad_domain_lane(request: MemoryRecallRequest) -> _QueryLane | None:
374
- terms = _tokenize(f"{request.current_problem.surface} {request.current_problem.goal}")
360
+ terms = _tokenize(request.query)
375
361
  if not terms:
376
362
  return None
377
363
  return _lane("broad_domain", " ".join(dict.fromkeys(terms[:8])))
@@ -1392,11 +1378,6 @@ def _tokenize(text: str) -> tuple[str, ...]:
1392
1378
  return tuple(re.findall(r"[a-z0-9_./:-]+", text.lower()))
1393
1379
 
1394
1380
 
1395
- def _useful_problem_part(value: str) -> bool:
1396
- text = value.strip().lower()
1397
- return bool(text and text not in _PLACEHOLDER_VALUES)
1398
-
1399
-
1400
1381
  def _dedupe_reasons(reasons: Iterable[dict[str, Any]]) -> list[dict[str, Any]]:
1401
1382
  seen: set[str] = set()
1402
1383
  deduped = []
@@ -1,14 +1,10 @@
1
1
  """Memory recall use case."""
2
2
 
3
- from app.core.use_cases.retrieval.recall.request import (
4
- MemoryRecallRequest,
5
- RecallCurrentProblem,
6
- )
3
+ from app.core.use_cases.retrieval.recall.request import MemoryRecallRequest
7
4
  from app.core.use_cases.retrieval.recall.result import RecallMemoryResult
8
5
 
9
6
  __all__ = [
10
7
  "MemoryRecallRequest",
11
- "RecallCurrentProblem",
12
8
  "RecallMemoryResult",
13
9
  "execute_recall_memory",
14
10
  ]
@@ -2,8 +2,6 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Literal
6
-
7
5
  from pydantic import BaseModel, ConfigDict, Field, field_validator
8
6
 
9
7
  from app.core.entities.ids import RepoId
@@ -24,28 +22,11 @@ def _normalize_repo_id(value: RepoId) -> RepoId:
24
22
  return RepoId(_normalize_required_string(str(value), field_name="repo_id"))
25
23
 
26
24
 
27
- class RecallCurrentProblem(_StrictModel):
28
- """Required worker problem context for recall synthesis."""
29
-
30
- goal: str = Field(min_length=1)
31
- surface: str = Field(min_length=1)
32
- obstacle: str = Field(min_length=1)
33
- hypothesis: str = Field(min_length=1)
34
-
35
- @field_validator("goal", "surface", "obstacle", "hypothesis")
36
- @classmethod
37
- def _validate_non_blank(cls, value: str) -> str:
38
- return _normalize_required_string(value, field_name="current_problem fields")
39
-
40
-
41
25
  class MemoryRecallRequest(_StrictModel):
42
26
  """Canonical recall request payload."""
43
27
 
44
- op: Literal["recall"] = "recall"
45
28
  repo_id: RepoId
46
29
  query: str = Field(min_length=1)
47
- limit: int | None = Field(default=None, ge=1, le=100)
48
- current_problem: RecallCurrentProblem
49
30
 
50
31
  @field_validator("repo_id")
51
32
  @classmethod
@@ -45,7 +45,8 @@ _TOP_LEVEL_HELP = dedent(
45
45
  - Use `shellbrain recall` for normal task context.
46
46
  - Use `shellbrain teach` only when the user explicitly asks to store or teach Shellbrain something.
47
47
  - 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.
48
- - Send a concrete `query` plus required `current_problem`.
48
+ - Send one concrete natural-language query.
49
+ - Recall receives only this query, so include relevant task context naturally.
49
50
  - Avoid generic prompts like "what should I know about this repo?"
50
51
 
51
52
  Internal recall agents:
@@ -74,7 +75,7 @@ _TOP_LEVEL_HELP = dedent(
74
75
  shellbrain admin migrate
75
76
 
76
77
  Working agents:
77
- shellbrain recall --json '{"query":"What context matters for this migration lock timeout?","current_problem":{"goal":"fix migration locking","surface":"db admin","obstacle":"lock timeout","hypothesis":"missing timeout guard"}}'
78
+ shellbrain recall "What context matters for this migration lock timeout?"
78
79
  shellbrain teach --json '{"text":"In this repo, startup wires dependencies but should not own workflow behavior.","current_problem":{"goal":"record architecture preference","surface":"startup and clean architecture","obstacle":"agents may put behavior in startup","hypothesis":"teach should become a durable preference or concept claim"}}'
79
80
  shellbrain snapshot
80
81
 
@@ -158,14 +159,13 @@ _RECALL_HELP = dedent(
158
159
  This is the normal working-agent interface. Working agents should call
159
160
  `recall`, not internal commands like `read`, `events`, or `concept show`.
160
161
 
161
- Requires `query` and `current_problem`.
162
- `current_problem` must include non-empty `goal`, `surface`, `obstacle`, and
163
- `hypothesis`; use an explicit value like "none yet" when there is no hypothesis.
164
- Accepts optional `limit`.
162
+ Pass one self-contained natural-language query naming the failure mode,
163
+ subsystem, decision, file area, or constraint that matters. Recall receives
164
+ only this query, so include relevant task context naturally.
165
165
  It does not mutate memories, concepts, utility observations, or problem runs.
166
166
 
167
167
  Example:
168
- shellbrain recall --json '{"query":"What context matters for this migration lock timeout?","current_problem":{"goal":"fix migration locking","surface":"db admin","obstacle":"Docker unavailable","hypothesis":"none yet"}}'
168
+ shellbrain recall "What context matters for this migration lock timeout?"
169
169
  """
170
170
  )
171
171
 
@@ -565,7 +565,7 @@ def build_parser() -> argparse.ArgumentParser:
565
565
  formatter_class=_HelpFormatter,
566
566
  )
567
567
  _add_repo_context_arguments(recall_parser, suppress_default=True)
568
- _add_payload_arguments(recall_parser)
568
+ recall_parser.add_argument("query", help="Natural-language recall query.")
569
569
 
570
570
  teach_parser = subparsers.add_parser(
571
571
  "teach",
@@ -34,7 +34,7 @@ def render_success_lines(
34
34
  "Repo registration: deferred until first Shellbrain use inside a repo."
35
35
  )
36
36
  lines.append(
37
- 'Next: from inside a repo, run shellbrain recall --json \'{"query":"What prior Shellbrain context matters for this task?","current_problem":{"goal":"start work","surface":"repo session","obstacle":"none yet","hypothesis":"none yet"}}\''
37
+ 'Next: from inside a repo, run shellbrain recall "What prior Shellbrain context matters for this task?"'
38
38
  )
39
39
  else:
40
40
  lines.insert(1, f"Repo: {registration.repo_id}")
@@ -44,7 +44,7 @@ def render_success_lines(
44
44
  "Repo identity is weak-local and will change if this directory moves. Use --repo-id for a durable override.",
45
45
  )
46
46
  lines.append(
47
- 'Next: shellbrain recall --json \'{"query":"What prior Shellbrain context matters for this task?","current_problem":{"goal":"start work","surface":"repo session","obstacle":"none yet","hypothesis":"none yet"}}\''
47
+ 'Next: shellbrain recall "What prior Shellbrain context matters for this task?"'
48
48
  )
49
49
  lines.extend(notes)
50
50
  return lines
@@ -84,37 +84,6 @@ class AgentReadRequest(StrictBaseModel):
84
84
  return value
85
85
 
86
86
 
87
- class AgentRecallCurrentProblem(StrictBaseModel):
88
- """Agent-facing current-problem context for recall synthesis."""
89
-
90
- goal: str = Field(min_length=1)
91
- surface: str = Field(min_length=1)
92
- obstacle: str = Field(min_length=1)
93
- hypothesis: str = Field(min_length=1)
94
-
95
- @field_validator("goal", "surface", "obstacle", "hypothesis")
96
- @classmethod
97
- def _validate_non_blank(cls, value: str) -> str:
98
- """Require every problem context field to be explicit."""
99
-
100
- return _normalize_required_string(
101
- value, field_name="current_problem fields"
102
- )
103
-
104
-
105
- class AgentRecallRequest(StrictBaseModel):
106
- """Agent-facing recall payload with worker problem context."""
107
-
108
- query: str = Field(min_length=1)
109
- limit: int | None = Field(default=None, ge=1, le=100)
110
- current_problem: AgentRecallCurrentProblem
111
-
112
- @field_validator("query")
113
- @classmethod
114
- def _validate_query(cls, value: str) -> str:
115
- return _normalize_required_string(value, field_name="query")
116
-
117
-
118
87
  class AgentTeachRequest(StrictBaseModel):
119
88
  """Worker-facing payload for explicit user teaching."""
120
89
 
@@ -282,17 +251,6 @@ def validate_read_schema(
282
251
  return None, _format_validation_errors(exc)
283
252
 
284
253
 
285
- def validate_recall_schema(
286
- payload: dict[str, Any],
287
- ) -> tuple[AgentRecallRequest | None, list[ErrorDetail]]:
288
- """Validate and parse agent recall payloads into the minimal recall contract."""
289
-
290
- try:
291
- return AgentRecallRequest.model_validate(payload), []
292
- except ValidationError as exc:
293
- return None, _format_validation_errors(exc)
294
-
295
-
296
254
  def validate_events_schema(
297
255
  payload: dict[str, Any],
298
256
  ) -> tuple[AgentEventsRequest | None, list[ErrorDetail]]:
@@ -9,7 +9,6 @@ from app.entrypoints.cli.request_parsing.payload_validation import (
9
9
  validate_internal_read_contract,
10
10
  validate_internal_recall_contract,
11
11
  validate_read_schema,
12
- validate_recall_schema,
13
12
  )
14
13
  from app.entrypoints.cli.request_parsing.prepared import (
15
14
  PreparedOperationRequest,
@@ -67,14 +66,7 @@ def prepare_recall_request(
67
66
  ) -> PreparedOperationRequest[MemoryRecallRequest]:
68
67
  """Validate and hydrate one raw recall payload."""
69
68
 
70
- agent_request, errors = validate_recall_schema(payload)
71
- if errors:
72
- return PreparedOperationRequest(
73
- request=None, errors=errors, error_stage="schema_validation"
74
- )
75
- assert agent_request is not None
76
- hydrated = agent_request.model_dump(mode="python", exclude_none=True)
77
- hydrated.setdefault("op", "recall")
69
+ hydrated = dict(payload)
78
70
  hydrated.setdefault("repo_id", inferred_repo_id)
79
71
  request, contract_errors = validate_internal_recall_contract(hydrated)
80
72
  return PreparedOperationRequest(
@@ -122,13 +122,14 @@ def main(
122
122
  repo_root_arg=getattr(args, "repo_root", None),
123
123
  repo_id_arg=getattr(args, "repo_id", None),
124
124
  )
125
- payload = (
126
- {}
127
- if command == "snapshot"
128
- else _load_payload(
125
+ if command == "snapshot":
126
+ payload = {}
127
+ elif command == "recall":
128
+ payload = {"query": args.query}
129
+ else:
130
+ payload = _load_payload(
129
131
  getattr(args, "json_text", None), getattr(args, "json_file", None)
130
132
  )
131
- )
132
133
  except ValueError as exc:
133
134
  parser.error(str(exc))
134
135
  return 2
@@ -83,18 +83,17 @@ admin/init/upgrade/metrics, filesystem writes, settings writes, and direct DB
83
83
  writes.
84
84
 
85
85
  # PROTOCOL
86
- 1. Read the payload: `query`, `current_problem`, `repo_root`, and budgets.
86
+ 1. Read the payload: `query`, `repo_root`, and budgets. Treat `query` as the
87
+ complete worker context.
87
88
  Use the repo-root-prefixed commands from the payload whenever `repo_root` is
88
89
  provided. Do not omit `--repo-root` in nested Codex.
89
90
  2. Run events first:
90
91
  ```bash
91
92
  shellbrain --no-sync --repo-root "<repo_root>" events --json '{"limit":10}'
92
93
  ```
93
- 3. Build a compact search text from the query and useful parts of
94
- current_problem.goal, surface, obstacle, and hypothesis. Omit placeholders
95
- such as "none yet". Prefer concrete error terms, domain nouns,
96
- files/symbols, and the actual obstacle over generic goal text. Use recent
97
- events to sharpen the query when they reveal better terms.
94
+ 3. Build a compact search text from the query. Prefer concrete error terms,
95
+ domain nouns, files/symbols, and the actual obstacle over generic wording.
96
+ Use recent events to sharpen the query when they reveal better terms.
98
97
  4. Run at least one targeted read:
99
98
  ```bash
100
99
  shellbrain --no-sync --repo-root "<repo_root>" read --json '{"query":"<combined search text>","kinds":["problem","solution","failed_tactic","fact","preference","change"]}'
@@ -114,7 +113,7 @@ writes.
114
113
  ```
115
114
  If multiple concepts match, inspect at most the few most relevant within
116
115
  budget. Prefer concepts whose claims, groundings, or memory links connect
117
- directly to current_problem.surface or current_problem.obstacle. Mention
116
+ directly to the query. Mention
118
117
  competing or ambiguous concepts only when the ambiguity affects the worker.
119
118
  6. Run extra reads only when they are likely to improve the brief: events reveal
120
119
  a sharper query, concept details suggest a related term, the first read was
@@ -180,7 +179,7 @@ You are Shellbrain build_context_synthesizer.
180
179
  # JOB
181
180
  Synthesize a compact operational recall brief from the deterministic recall
182
181
  graph pack. Do not request more data. Do not run commands. Do not inspect files.
183
- Do not invent facts. Use only the pack.
182
+ Do not invent facts. Use only the pack. The query is the complete worker request.
184
183
 
185
184
  Your job is not to summarize everything. Your job is to tell the working coding
186
185
  agent what prior knowledge changes what it should do next.
@@ -867,7 +866,6 @@ def render_build_context_prompt(request: InnerAgentRunRequest) -> str:
867
866
  shellbrain = _shellbrain_command(request.repo_root, no_sync=True)
868
867
  payload = {
869
868
  "query": request.query,
870
- "current_problem": request.current_problem,
871
869
  "repo_root": request.repo_root,
872
870
  "budgets": {
873
871
  "max_private_reads": request.max_private_reads,
@@ -938,7 +936,6 @@ def render_build_context_synthesis_prompt(request: InnerAgentRunRequest) -> str:
938
936
 
939
937
  payload = {
940
938
  "query": request.query,
941
- "current_problem": request.current_problem,
942
939
  "budgets": {
943
940
  "max_brief_tokens": request.max_brief_tokens,
944
941
  },
@@ -3,7 +3,7 @@ build_context:
3
3
  strategy: deterministic_synthesis
4
4
  provider: auto
5
5
  model: gpt-5.4-mini
6
- reasoning: medium
6
+ reasoning: low
7
7
  timeout_seconds: 90
8
8
  max_private_reads: 3
9
9
  max_brief_tokens: 1800
@@ -22,9 +22,11 @@ If prior context may help:
22
22
  Then run:
23
23
 
24
24
  ```bash
25
- shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
25
+ shellbrain recall "<targeted natural-language question>"
26
26
  ```
27
27
 
28
+ Recall receives only this query, so include relevant task context naturally in the question.
29
+
28
30
  If recall would not help:
29
31
 
30
32
  `SB: skip | same signature | <one-line reason>`
@@ -12,7 +12,7 @@ Shellbrain is a persistent memory system for agent work.
12
12
  As the working agent, your interface is:
13
13
 
14
14
  ```bash
15
- shellbrain recall
15
+ shellbrain recall "<targeted natural-language question>"
16
16
  ```
17
17
 
18
18
  Recall returns a compact brief synthesized from prior memories, concepts, scenarios, and recent episode context. It is meant to reduce wasted exploration and help you decide where to look next.
@@ -43,7 +43,7 @@ Use this order:
43
43
 
44
44
  1. If Shellbrain is missing or broken, run `shellbrain admin doctor`.
45
45
  2. If doctor says repair is needed, run `shellbrain init`.
46
- 3. Otherwise, use `shellbrain recall` with a targeted query and `current_problem`.
46
+ 3. Otherwise, use `shellbrain recall` with one targeted natural-language query.
47
47
 
48
48
  If `shellbrain` is not found, do a one-time PATH check:
49
49
 
@@ -105,14 +105,12 @@ If recall would not add information:
105
105
 
106
106
  Then continue.
107
107
 
108
- ## Recall Payload
108
+ ## Recall Query
109
109
 
110
- `current_problem` is required. All four fields must be non-empty strings.
111
-
112
- If you do not have a hypothesis yet, use `"none yet"`.
110
+ Pass one self-contained question as a quoted positional argument. Recall receives only this query, so include relevant task context naturally.
113
111
 
114
112
  ```bash
115
- shellbrain recall --json '{"query":"Have we seen this failure mode or subsystem before?","current_problem":{"goal":"fix failing architecture guardrail test","surface":"tests/config/test_architecture_boundaries.py and app layer imports","obstacle":"entrypoint handler appears to import startup wiring","hypothesis":"dependency shape should move out of startup"}}'
113
+ shellbrain recall "Have we seen this architecture guardrail failure or subsystem boundary before?"
116
114
  ```
117
115
 
118
116
  ## Teach Payload
@@ -140,15 +138,15 @@ Good recall queries are concrete. Name the failure mode, subsystem, decision, fi
140
138
  Good examples:
141
139
 
142
140
  ```bash
143
- shellbrain recall --json '{"query":"Have we seen this migration lock timeout before?","current_problem":{"goal":"fix migration test failure","surface":"database migrations and schema setup","obstacle":"migration blocks waiting on lock","hypothesis":"a previous test leaves a transaction open"}}'
141
+ shellbrain recall "I'm debugging a migration lock timeout. What prior context matters?"
144
142
  ```
145
143
 
146
144
  ```bash
147
- shellbrain recall --json '{"query":"What architectural constraints matter before moving this CLI handler?","current_problem":{"goal":"move CLI handler without breaking clean architecture","surface":"entrypoints, startup, and handler dependency wiring","obstacle":"handler currently imports startup types","hypothesis":"startup should construct dependencies but handler should receive protocols"}}'
145
+ shellbrain recall "What architectural constraints matter before moving this CLI handler?"
148
146
  ```
149
147
 
150
148
  ```bash
151
- shellbrain recall --json '{"query":"What user preferences matter for this refactor?","current_problem":{"goal":"clean up Shellbrain onboarding assets","surface":"AGENTS.md and shellbrain skill","obstacle":"old guidance teaches internal commands to workers","hypothesis":"worker guidance should only teach recall"}}'
149
+ shellbrain recall "What user preferences matter while simplifying Shellbrain onboarding assets?"
152
150
  ```
153
151
 
154
152
  Avoid vague queries:
@@ -22,9 +22,11 @@ If prior context may help:
22
22
  Then run:
23
23
 
24
24
  ```bash
25
- shellbrain recall --json '{"query":"<targeted question>","current_problem":{"goal":"<goal>","surface":"<surface>","obstacle":"<obstacle>","hypothesis":"<hypothesis or none yet>"}}'
25
+ shellbrain recall "<targeted natural-language question>"
26
26
  ```
27
27
 
28
+ Recall receives only this query, so include relevant task context naturally in the question.
29
+
28
30
  If recall would not help:
29
31
 
30
32
  `SB: skip | same signature | <one-line reason>`
@@ -12,7 +12,7 @@ Shellbrain is a persistent memory system for agent work.
12
12
  As the working agent, your interface is:
13
13
 
14
14
  ```bash
15
- shellbrain recall
15
+ shellbrain recall "<targeted natural-language question>"
16
16
  ```
17
17
 
18
18
  Recall returns a compact brief synthesized from prior memories, concepts, scenarios, and recent episode context. It is meant to reduce wasted exploration and help you decide where to look next.
@@ -43,7 +43,7 @@ Use this order:
43
43
 
44
44
  1. If Shellbrain is missing or broken, run `shellbrain admin doctor`.
45
45
  2. If doctor says repair is needed, run `shellbrain init`.
46
- 3. Otherwise, use `shellbrain recall` with a targeted query and `current_problem`.
46
+ 3. Otherwise, use `shellbrain recall` with one targeted natural-language query.
47
47
 
48
48
  If `shellbrain` is not found, do a one-time PATH check:
49
49
 
@@ -105,14 +105,12 @@ If recall would not add information:
105
105
 
106
106
  Then continue.
107
107
 
108
- ## Recall Payload
108
+ ## Recall Query
109
109
 
110
- `current_problem` is required. All four fields must be non-empty strings.
111
-
112
- If you do not have a hypothesis yet, use `"none yet"`.
110
+ Pass one self-contained question as a quoted positional argument. Recall receives only this query, so include relevant task context naturally.
113
111
 
114
112
  ```bash
115
- shellbrain recall --json '{"query":"Have we seen this failure mode or subsystem before?","current_problem":{"goal":"fix failing architecture guardrail test","surface":"tests/config/test_architecture_boundaries.py and app layer imports","obstacle":"entrypoint handler appears to import startup wiring","hypothesis":"dependency shape should move out of startup"}}'
113
+ shellbrain recall "Have we seen this architecture guardrail failure or subsystem boundary before?"
116
114
  ```
117
115
 
118
116
  ## Teach Payload
@@ -140,15 +138,15 @@ Good recall queries are concrete. Name the failure mode, subsystem, decision, fi
140
138
  Good examples:
141
139
 
142
140
  ```bash
143
- shellbrain recall --json '{"query":"Have we seen this migration lock timeout before?","current_problem":{"goal":"fix migration test failure","surface":"database migrations and schema setup","obstacle":"migration blocks waiting on lock","hypothesis":"a previous test leaves a transaction open"}}'
141
+ shellbrain recall "I'm debugging a migration lock timeout. What prior context matters?"
144
142
  ```
145
143
 
146
144
  ```bash
147
- shellbrain recall --json '{"query":"What architectural constraints matter before moving this CLI handler?","current_problem":{"goal":"move CLI handler without breaking clean architecture","surface":"entrypoints, startup, and handler dependency wiring","obstacle":"handler currently imports startup types","hypothesis":"startup should construct dependencies but handler should receive protocols"}}'
145
+ shellbrain recall "What architectural constraints matter before moving this CLI handler?"
148
146
  ```
149
147
 
150
148
  ```bash
151
- shellbrain recall --json '{"query":"What user preferences matter for this refactor?","current_problem":{"goal":"clean up Shellbrain onboarding assets","surface":"AGENTS.md and shellbrain skill","obstacle":"old guidance teaches internal commands to workers","hypothesis":"worker guidance should only teach recall"}}'
149
+ shellbrain recall "What user preferences matter while simplifying Shellbrain onboarding assets?"
152
150
  ```
153
151
 
154
152
  Avoid vague queries:
@@ -191,3 +189,7 @@ shellbrain scenario record
191
189
  Those are internal-agent commands.
192
190
 
193
191
  Do not manually write memories at closeout. Shellbrain's knowledge-builder agent consolidates episodes after the session lifecycle.
192
+
193
+ ## Resources
194
+
195
+ - Read [references/session-workflow.md](references/session-workflow.md) for the detailed recall cadence and attention habit.
@@ -7,7 +7,7 @@ Shellbrain is persistent memory for agent work. The working agent does not brows
7
7
  The working-agent interface is:
8
8
 
9
9
  ```bash
10
- shellbrain recall
10
+ shellbrain recall "<targeted natural-language question>"
11
11
  ```
12
12
 
13
13
  Recall asks Shellbrain's internal recall agent to inspect relevant memories, concepts, scenarios, and recent episode context, then return a compact brief for the current problem.
@@ -84,7 +84,7 @@ If prior context might help:
84
84
 
85
85
  `SB: recall | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
86
86
 
87
- Then call recall with a targeted query and `current_problem`.
87
+ Then call recall with one targeted natural-language query.
88
88
 
89
89
  If recall would not add information:
90
90
 
@@ -92,19 +92,14 @@ If recall would not add information:
92
92
 
93
93
  Then continue. Do not call recall reflexively.
94
94
 
95
- ## Recall Payload
95
+ ## Recall Query
96
96
 
97
- `current_problem` is required. It has four required non-empty fields:
98
-
99
- - `goal`: what you are trying to accomplish
100
- - `surface`: the code, subsystem, behavior, or decision area
101
- - `obstacle`: what is blocking or uncertain
102
- - `hypothesis`: your current theory, or `"none yet"`
97
+ Pass one self-contained question as a quoted positional argument. Recall receives only this query, so include relevant task context naturally.
103
98
 
104
99
  Example:
105
100
 
106
101
  ```bash
107
- shellbrain recall --json '{"query":"What architectural constraints matter before moving this CLI handler?","current_problem":{"goal":"move CLI handler without breaking clean architecture","surface":"entrypoints, startup, and handler dependency wiring","obstacle":"handler currently imports startup types","hypothesis":"startup should construct dependencies but handler should receive protocols"}}'
102
+ shellbrain recall "What architectural constraints matter before moving this CLI handler?"
108
103
  ```
109
104
 
110
105
  ## Query Guidance
@@ -114,19 +109,19 @@ Good recall queries are concrete. Name the failure mode, subsystem, decision, fi
114
109
  Prior attempt query:
115
110
 
116
111
  ```bash
117
- shellbrain recall --json '{"query":"Have we seen this migration lock timeout before?","current_problem":{"goal":"fix migration test failure","surface":"database migrations and schema setup","obstacle":"migration blocks waiting on lock","hypothesis":"a previous test leaves a transaction open"}}'
112
+ shellbrain recall "I'm debugging a migration lock timeout. What prior context matters?"
118
113
  ```
119
114
 
120
115
  Constraint query:
121
116
 
122
117
  ```bash
123
- shellbrain recall --json '{"query":"What repo constraints or user preferences matter for this auth refactor?","current_problem":{"goal":"refactor auth callback handling","surface":"auth routes and callback tests","obstacle":"unclear existing conventions for redirect behavior","hypothesis":"there is a repo-specific callback invariant"}}'
118
+ shellbrain recall "What repo constraints or user preferences matter for this auth callback refactor?"
124
119
  ```
125
120
 
126
121
  Area-specific query:
127
122
 
128
123
  ```bash
129
- shellbrain recall --json '{"query":"What facts or recent changes matter around the payments retry worker?","current_problem":{"goal":"debug retry worker failure","surface":"payments retry worker","obstacle":"retry state diverges after timeout","hypothesis":"recent retry policy change affected idempotency"}}'
124
+ shellbrain recall "What facts or recent changes matter around the payments retry worker timeout?"
130
125
  ```
131
126
 
132
127
  Avoid generic prompts like: