shellbrain 0.1.53__tar.gz → 0.1.55__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 (476) hide show
  1. {shellbrain-0.1.53 → shellbrain-0.1.55}/PKG-INFO +7 -4
  2. {shellbrain-0.1.53 → shellbrain-0.1.55}/README.md +6 -3
  3. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/parser/builder.py +0 -19
  4. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/runner.py +0 -9
  5. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/runtime.py +0 -1
  6. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +5 -1
  7. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/inner_agents/prompt.py +4 -4
  8. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/cli.py +0 -2
  9. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/cli_runtime.py +0 -1
  10. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/runtime_admin.py +12 -0
  11. {shellbrain-0.1.53 → shellbrain-0.1.55}/pyproject.toml +1 -1
  12. {shellbrain-0.1.53 → shellbrain-0.1.55}/shellbrain.egg-info/PKG-INFO +7 -4
  13. {shellbrain-0.1.53 → shellbrain-0.1.55}/shellbrain.egg-info/SOURCES.txt +0 -15
  14. shellbrain-0.1.53/app/core/ports/reporting/__init__.py +0 -1
  15. shellbrain-0.1.53/app/core/ports/reporting/metrics.py +0 -32
  16. shellbrain-0.1.53/app/core/use_cases/metrics/build_snapshot.py +0 -496
  17. shellbrain-0.1.53/app/core/use_cases/metrics/generate_dashboard.py +0 -82
  18. shellbrain-0.1.53/app/entrypoints/cli/handlers/human/metrics.py +0 -38
  19. shellbrain-0.1.53/app/entrypoints/cli/presenters/metrics.py +0 -26
  20. shellbrain-0.1.53/app/infrastructure/db/runtime/queries/metrics.py +0 -219
  21. shellbrain-0.1.53/app/infrastructure/db/runtime/queries/metrics_adapter.py +0 -54
  22. shellbrain-0.1.53/app/infrastructure/reporting/__init__.py +0 -1
  23. shellbrain-0.1.53/app/infrastructure/reporting/metrics/__init__.py +0 -1
  24. shellbrain-0.1.53/app/infrastructure/reporting/metrics/artifacts.py +0 -65
  25. shellbrain-0.1.53/app/infrastructure/reporting/metrics/browser.py +0 -12
  26. shellbrain-0.1.53/app/infrastructure/reporting/metrics/pager.py +0 -274
  27. shellbrain-0.1.53/app/infrastructure/reporting/metrics/render_html.py +0 -782
  28. shellbrain-0.1.53/app/startup/metrics.py +0 -64
  29. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/__init__.py +0 -0
  30. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/__main__.py +0 -0
  31. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/__init__.py +0 -0
  32. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/__init__.py +0 -0
  33. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/admin_errors.py +0 -0
  34. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/associations.py +0 -0
  35. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/backups.py +0 -0
  36. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/concepts.py +0 -0
  37. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/episodes.py +0 -0
  38. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/evidence.py +0 -0
  39. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/guidance.py +0 -0
  40. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/identity.py +0 -0
  41. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/ids.py +0 -0
  42. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/inner_agents.py +0 -0
  43. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/knowledge_builder.py +0 -0
  44. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/machine_config.py +0 -0
  45. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/memories.py +0 -0
  46. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/runtime_context.py +0 -0
  47. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/scenarios.py +0 -0
  48. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/session_state.py +0 -0
  49. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/settings.py +0 -0
  50. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/snapshots.py +0 -0
  51. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/structural_memory_relations.py +0 -0
  52. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/entities/utility.py +0 -0
  53. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/errors.py +0 -0
  54. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/__init__.py +0 -0
  55. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/concepts/__init__.py +0 -0
  56. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/concepts/relation_rules.py +0 -0
  57. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/concepts/search_text.py +0 -0
  58. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/episodes/__init__.py +0 -0
  59. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/episodes/event_content.py +0 -0
  60. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/episodes/knowledge_building.py +0 -0
  61. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/memories/__init__.py +0 -0
  62. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/memories/add_plan.py +0 -0
  63. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/memories/link_rules.py +0 -0
  64. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/memories/update_plan.py +0 -0
  65. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/retrieval/__init__.py +0 -0
  66. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/retrieval/bm25.py +0 -0
  67. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/retrieval/context_pack.py +0 -0
  68. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/retrieval/expansion.py +0 -0
  69. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/retrieval/fusion_rrf.py +0 -0
  70. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/retrieval/lexical_query.py +0 -0
  71. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/retrieval/ontology_semantics.py +0 -0
  72. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/policies/retrieval/scoring.py +0 -0
  73. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/__init__.py +0 -0
  74. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/__init__.py +0 -0
  75. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/concept_repositories.py +0 -0
  76. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/episode_repositories.py +0 -0
  77. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/guidance.py +0 -0
  78. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/knowledge_builder.py +0 -0
  79. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/memory_repositories.py +0 -0
  80. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/problem_runs.py +0 -0
  81. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/retrieval_repositories.py +0 -0
  82. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/snapshots.py +0 -0
  83. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/db/unit_of_work.py +0 -0
  84. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/embeddings/__init__.py +0 -0
  85. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/embeddings/provider.py +0 -0
  86. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/embeddings/retrieval.py +0 -0
  87. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/host_apps/__init__.py +0 -0
  88. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/host_apps/inner_agents.py +0 -0
  89. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/local_state/__init__.py +0 -0
  90. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/local_state/session_state_store.py +0 -0
  91. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/local_state/shadow_git.py +0 -0
  92. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/system/__init__.py +0 -0
  93. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/system/clock.py +0 -0
  94. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/ports/system/idgen.py +0 -0
  95. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/__init__.py +0 -0
  96. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/__init__.py +0 -0
  97. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
  98. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -0
  99. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +0 -0
  100. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -0
  101. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
  102. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/create_backup.py +0 -0
  103. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
  104. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
  105. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/initialize_runtime.py +0 -0
  106. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/restore_backup.py +0 -0
  107. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/admin/verify_backup.py +0 -0
  108. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/build_guidance.py +0 -0
  109. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/__init__.py +0 -0
  110. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/add/__init__.py +0 -0
  111. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/add/execute.py +0 -0
  112. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/add/request.py +0 -0
  113. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/add/result.py +0 -0
  114. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/containment_checks.py +0 -0
  115. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/embeddings.py +0 -0
  116. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/reference_checks.py +0 -0
  117. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/show/__init__.py +0 -0
  118. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/show/execute.py +0 -0
  119. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/show/request.py +0 -0
  120. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/show/result.py +0 -0
  121. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/update/__init__.py +0 -0
  122. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/update/execute.py +0 -0
  123. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/update/request.py +0 -0
  124. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/update/result.py +0 -0
  125. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/concepts/views.py +0 -0
  126. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/episodes/__init__.py +0 -0
  127. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/episodes/events/__init__.py +0 -0
  128. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/episodes/events/request.py +0 -0
  129. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/episodes/sync_discovered_host_session.py +0 -0
  130. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
  131. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/episodes/sync_episode/request.py +0 -0
  132. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
  133. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/episodes/sync_episode/sync_episode.py +0 -0
  134. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
  135. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
  136. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +0 -0
  137. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
  138. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -0
  139. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
  140. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +0 -0
  141. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
  142. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -0
  143. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/__init__.py +0 -0
  144. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/add/__init__.py +0 -0
  145. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/add/execute.py +0 -0
  146. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/add/request.py +0 -0
  147. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/add/result.py +0 -0
  148. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/effect_plan.py +0 -0
  149. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/reference_checks.py +0 -0
  150. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/update/__init__.py +0 -0
  151. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/update/execute.py +0 -0
  152. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/update/request.py +0 -0
  153. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/memories/update/result.py +0 -0
  154. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/metrics/__init__.py +0 -0
  155. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
  156. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/plan_execution.py +0 -0
  157. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/__init__.py +0 -0
  158. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/build_context/__init__.py +0 -0
  159. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/build_context/execute.py +0 -0
  160. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/concept_seed_retrieval.py +0 -0
  161. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/context_pack_pipeline.py +0 -0
  162. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/deterministic_graph_recall.py +0 -0
  163. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/expansion.py +0 -0
  164. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/read/__init__.py +0 -0
  165. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/read/execute.py +0 -0
  166. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/read/request.py +0 -0
  167. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/read/result.py +0 -0
  168. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/read_concepts.py +0 -0
  169. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/recall/__init__.py +0 -0
  170. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/recall/execute.py +0 -0
  171. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/recall/request.py +0 -0
  172. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/recall/result.py +0 -0
  173. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/retrieval/seed_retrieval.py +0 -0
  174. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/scenarios/__init__.py +0 -0
  175. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/scenarios/record/__init__.py +0 -0
  176. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/scenarios/record/execute.py +0 -0
  177. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/scenarios/record/request.py +0 -0
  178. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/scenarios/record/result.py +0 -0
  179. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/snapshots/__init__.py +0 -0
  180. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
  181. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
  182. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
  183. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -0
  184. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
  185. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/snapshots/code_delta_context/execute.py +0 -0
  186. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
  187. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/__init__.py +0 -0
  188. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/__init__.py +0 -0
  189. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/error_responses.py +0 -0
  190. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/__init__.py +0 -0
  191. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
  192. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/dependencies.py +0 -0
  193. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
  194. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/human/admin.py +0 -0
  195. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/human/admin_dependencies.py +0 -0
  196. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/human/init.py +0 -0
  197. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/human/upgrade.py +0 -0
  198. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
  199. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
  200. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
  201. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
  202. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
  203. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
  204. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +0 -0
  205. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +0 -0
  206. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
  207. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
  208. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +0 -0
  209. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +0 -0
  210. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
  211. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
  212. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +0 -0
  213. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
  214. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
  215. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
  216. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/result_envelopes.py +0 -0
  217. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/session_state.py +0 -0
  218. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
  219. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
  220. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/working_agent/snapshot.py +0 -0
  221. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
  222. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/main.py +0 -0
  223. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/operation_command.py +0 -0
  224. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/parser/__init__.py +0 -0
  225. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/presenters/__init__.py +0 -0
  226. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/presenters/init.py +0 -0
  227. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/presenters/json.py +0 -0
  228. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
  229. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/concepts.py +0 -0
  230. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
  231. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/hydration.py +0 -0
  232. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/memories.py +0 -0
  233. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
  234. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
  235. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
  236. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/scenarios.py +0 -0
  237. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/cli/request_parsing/teach.py +0 -0
  238. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/host_hooks/__init__.py +0 -0
  239. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
  240. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
  241. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/jobs/__init__.py +0 -0
  242. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/entrypoints/jobs/episode_sync.py +0 -0
  243. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/__init__.py +0 -0
  244. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/__init__.py +0 -0
  245. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/__init__.py +0 -0
  246. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/app_role_safety.py +0 -0
  247. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/backups/__init__.py +0 -0
  248. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
  249. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/backups/logical_backup.py +0 -0
  250. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/backups/manifest_store.py +0 -0
  251. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/backups/restore.py +0 -0
  252. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/connection.py +0 -0
  253. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/instance_guard.py +0 -0
  254. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/migrations.py +0 -0
  255. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/privileges.py +0 -0
  256. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
  257. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
  258. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/provisioning/init_effects.py +0 -0
  259. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/provisioning/managed_local.py +0 -0
  260. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/admin/storage_setup.py +0 -0
  261. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/__init__.py +0 -0
  262. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/engine.py +0 -0
  263. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/__init__.py +0 -0
  264. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/associations.py +0 -0
  265. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/concepts.py +0 -0
  266. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/episodes.py +0 -0
  267. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/evidence.py +0 -0
  268. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/experiences.py +0 -0
  269. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
  270. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
  271. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/memories.py +0 -0
  272. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/metadata.py +0 -0
  273. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
  274. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/registry.py +0 -0
  275. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
  276. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/telemetry.py +0 -0
  277. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/utility.py +0 -0
  278. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/models/views.py +0 -0
  279. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
  280. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
  281. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
  282. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -0
  283. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
  284. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
  285. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
  286. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +0 -0
  287. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +0 -0
  288. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +0 -0
  289. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
  290. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
  291. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
  292. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
  293. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +0 -0
  294. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
  295. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +0 -0
  296. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
  297. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
  298. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
  299. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +0 -0
  300. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +0 -0
  301. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/session.py +0 -0
  302. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/db/runtime/uow.py +0 -0
  303. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/embeddings/__init__.py +0 -0
  304. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/embeddings/local_provider.py +0 -0
  305. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/embeddings/prewarm.py +0 -0
  306. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/embeddings/query_vector_search.py +0 -0
  307. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/__init__.py +0 -0
  308. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/__init__.py +0 -0
  309. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/claude.py +0 -0
  310. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/codex.py +0 -0
  311. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/cursor.py +0 -0
  312. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
  313. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/inspection.py +0 -0
  314. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
  315. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
  316. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
  317. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/paths.py +0 -0
  318. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/service.py +0 -0
  319. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/assets/types.py +0 -0
  320. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/identity/__init__.py +0 -0
  321. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
  322. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
  323. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
  324. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
  325. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
  326. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/identity/resolver.py +0 -0
  327. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
  328. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -0
  329. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
  330. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
  331. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
  332. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
  333. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
  334. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/cursor.py +0 -0
  335. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
  336. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
  337. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/session_selection.py +0 -0
  338. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
  339. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
  340. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/__init__.py +0 -0
  341. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/init_lock.py +0 -0
  342. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/machine_config_store.py +0 -0
  343. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/operation_registration.py +0 -0
  344. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/paths.py +0 -0
  345. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/recall_mode_store.py +0 -0
  346. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/repo_registration_store.py +0 -0
  347. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/session_state_file_store.py +0 -0
  348. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/local_state/shadow_git_store.py +0 -0
  349. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/process/__init__.py +0 -0
  350. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/process/episode_sync/__init__.py +0 -0
  351. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/process/episode_sync/autostart.py +0 -0
  352. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/process/episode_sync/launcher.py +0 -0
  353. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/process/episode_sync/lock_file.py +0 -0
  354. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/process/episode_sync/poller.py +0 -0
  355. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/process/episode_sync/status_store.py +0 -0
  356. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/system/__init__.py +0 -0
  357. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/system/clock.py +0 -0
  358. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/system/id_generator.py +0 -0
  359. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/system/package_upgrade.py +0 -0
  360. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/__init__.py +0 -0
  361. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
  362. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/operation_invocations.py +0 -0
  363. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/operation_polling.py +0 -0
  364. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/read_records.py +0 -0
  365. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/recall_records.py +0 -0
  366. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/recorder.py +0 -0
  367. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/records.py +0 -0
  368. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/sink.py +0 -0
  369. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/storage_protocols.py +0 -0
  370. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/sync_records.py +0 -0
  371. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/infrastructure/telemetry/write_records.py +0 -0
  372. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/settings/__init__.py +0 -0
  373. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/settings/defaults/create_policy.yaml +0 -0
  374. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/settings/defaults/read_policy.yaml +0 -0
  375. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/settings/defaults/runtime.yaml +0 -0
  376. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/settings/defaults/thresholds.yaml +0 -0
  377. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/settings/defaults/update_policy.yaml +0 -0
  378. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/settings/internal-agents/defaults.yaml +0 -0
  379. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/__init__.py +0 -0
  380. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/admin.py +0 -0
  381. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/admin_db.py +0 -0
  382. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/admin_dependencies.py +0 -0
  383. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/admin_diagnose.py +0 -0
  384. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/analytics.py +0 -0
  385. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/backup.py +0 -0
  386. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/config.py +0 -0
  387. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/create_policy.py +0 -0
  388. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/db.py +0 -0
  389. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/dsn_resolution.py +0 -0
  390. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/embeddings.py +0 -0
  391. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/episode_poller.py +0 -0
  392. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/episode_sync_launcher.py +0 -0
  393. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/host_hooks.py +0 -0
  394. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/internal_agent_config.py +0 -0
  395. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/internal_agents.py +0 -0
  396. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/knowledge_builder.py +0 -0
  397. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/migrations.py +0 -0
  398. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/model_usage_backfill.py +0 -0
  399. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/operation_dependencies.py +0 -0
  400. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/read_policy.py +0 -0
  401. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/repo_context.py +0 -0
  402. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/repos.py +0 -0
  403. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/retrieval.py +0 -0
  404. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/runtime_context.py +0 -0
  405. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/settings.py +0 -0
  406. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/snapshot_baseline.py +0 -0
  407. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/thresholds.py +0 -0
  408. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/update_policy.py +0 -0
  409. {shellbrain-0.1.53 → shellbrain-0.1.55}/app/startup/use_cases.py +0 -0
  410. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/__init__.py +0 -0
  411. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/_legacy_usage_views.py +0 -0
  412. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/_usage_view_sql.py +0 -0
  413. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/env.py +0 -0
  414. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260226_0001_initial_schema.py +0 -0
  415. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
  416. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
  417. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
  418. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
  419. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
  420. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
  421. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
  422. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
  423. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
  424. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
  425. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
  426. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
  427. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
  428. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260422_0015_problem_runs.py +0 -0
  429. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
  430. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
  431. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
  432. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260515_0019_scenario_records.py +0 -0
  433. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
  434. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
  435. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
  436. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
  437. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
  438. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
  439. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
  440. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
  441. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
  442. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
  443. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
  444. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
  445. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
  446. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
  447. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
  448. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
  449. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
  450. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
  451. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/20260815_0038_drop_wiki_summaries.py +0 -0
  452. {shellbrain-0.1.53 → shellbrain-0.1.55}/migrations/versions/__init__.py +0 -0
  453. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/__init__.py +0 -0
  454. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/claude/CLAUDE.md +0 -0
  455. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
  456. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
  457. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/AGENTS.md +0 -0
  458. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
  459. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
  460. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
  461. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
  462. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
  463. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
  464. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
  465. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
  466. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
  467. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
  468. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
  469. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
  470. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
  471. {shellbrain-0.1.53 → shellbrain-0.1.55}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
  472. {shellbrain-0.1.53 → shellbrain-0.1.55}/setup.cfg +0 -0
  473. {shellbrain-0.1.53 → shellbrain-0.1.55}/shellbrain.egg-info/dependency_links.txt +0 -0
  474. {shellbrain-0.1.53 → shellbrain-0.1.55}/shellbrain.egg-info/entry_points.txt +0 -0
  475. {shellbrain-0.1.53 → shellbrain-0.1.55}/shellbrain.egg-info/requires.txt +0 -0
  476. {shellbrain-0.1.53 → shellbrain-0.1.55}/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.53
3
+ Version: 0.1.55
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
@@ -28,7 +28,7 @@ ShellBrain gives AI agents memory, so they can store and reuse what they learn o
28
28
  curl -L shellbrain.ai/install | bash
29
29
  ```
30
30
 
31
- **Works for Codex, Claude Code, and Cursor.**
31
+ **Works for Codex, Claude Code, and Cursor.** The installer runs `shellbrain init` for you. Repos register themselves on first use.
32
32
 
33
33
  Requirements.
34
34
  - macOS or Linux, Python 3.11+, Docker for the managed local Postgres+pgvector runtime.
@@ -38,6 +38,9 @@ Requirements.
38
38
  ```bash
39
39
  shellbrain upgrade
40
40
  ```
41
+
42
+ You can also run `curl -L shellbrain.ai/upgrade | bash`. Manual alternative: `pipx upgrade shellbrain && shellbrain init`.
43
+
41
44
  ---
42
45
 
43
46
  ## Recall in one command
@@ -113,10 +116,10 @@ ShellBrain keeps memory grounded in evidence and narrow in scope. Agents request
113
116
 
114
117
  ## Use ShellBrain
115
118
 
116
- Use ShellBrain with your preferred agent. Then work as usual.
119
+ Use Shellbrain with your preferred agent. Then work as usual.
117
120
 
118
121
  - **Claude Code:** Use `/shellbrain` to recall context at task boundaries.
119
- - **Codex:** Use `$shellbrain` to recall context at task boundaries.
122
+ - **Codex:** Use $shellbrain to recall context at task boundaries.
120
123
  - **Cursor:** Use `/shellbrain` to recall context at task boundaries.
121
124
 
122
125
  ---
@@ -14,7 +14,7 @@ ShellBrain gives AI agents memory, so they can store and reuse what they learn o
14
14
  curl -L shellbrain.ai/install | bash
15
15
  ```
16
16
 
17
- **Works for Codex, Claude Code, and Cursor.**
17
+ **Works for Codex, Claude Code, and Cursor.** The installer runs `shellbrain init` for you. Repos register themselves on first use.
18
18
 
19
19
  Requirements.
20
20
  - macOS or Linux, Python 3.11+, Docker for the managed local Postgres+pgvector runtime.
@@ -24,6 +24,9 @@ Requirements.
24
24
  ```bash
25
25
  shellbrain upgrade
26
26
  ```
27
+
28
+ You can also run `curl -L shellbrain.ai/upgrade | bash`. Manual alternative: `pipx upgrade shellbrain && shellbrain init`.
29
+
27
30
  ---
28
31
 
29
32
  ## Recall in one command
@@ -99,10 +102,10 @@ ShellBrain keeps memory grounded in evidence and narrow in scope. Agents request
99
102
 
100
103
  ## Use ShellBrain
101
104
 
102
- Use ShellBrain with your preferred agent. Then work as usual.
105
+ Use Shellbrain with your preferred agent. Then work as usual.
103
106
 
104
107
  - **Claude Code:** Use `/shellbrain` to recall context at task boundaries.
105
- - **Codex:** Use `$shellbrain` to recall context at task boundaries.
108
+ - **Codex:** Use $shellbrain to recall context at task boundaries.
106
109
  - **Cursor:** Use `/shellbrain` to recall context at task boundaries.
107
110
 
108
111
  ---
@@ -38,7 +38,6 @@ _TOP_LEVEL_HELP = dedent(
38
38
  - Bootstrap or repair with `shellbrain init`.
39
39
  - Upgrade with `shellbrain upgrade`.
40
40
  - Check health with `shellbrain admin doctor`.
41
- - Review usage with `shellbrain metrics`.
42
41
 
43
42
  Working agents:
44
43
  - Use `shellbrain recall` for normal task context.
@@ -68,7 +67,6 @@ _TOP_LEVEL_HELP = dedent(
68
67
  Humans:
69
68
  shellbrain init
70
69
  shellbrain upgrade
71
- shellbrain metrics
72
70
  shellbrain admin doctor
73
71
  shellbrain admin migrate
74
72
 
@@ -386,15 +384,6 @@ _BACKFILL_TOKEN_USAGE_HELP = dedent(
386
384
  """
387
385
  )
388
386
 
389
- _METRICS_HELP = dedent(
390
- """\
391
- Generate lightweight metrics snapshots, write local artifacts, and open one browser dashboard that switches repos with arrow keys.
392
-
393
- Example:
394
- shellbrain metrics
395
- """
396
- )
397
-
398
387
  _INSTALL_CLAUDE_HOOK_HELP = dedent(
399
388
  """\
400
389
  Install or update the repo-local Claude Code SessionStart hook used as an explicit repo-local override.
@@ -499,14 +488,6 @@ def build_parser() -> argparse.ArgumentParser:
499
488
  formatter_class=_HelpFormatter,
500
489
  )
501
490
 
502
- subparsers.add_parser(
503
- "metrics",
504
- help="Browse Shellbrain metrics across repos.",
505
- description="Generate local metrics snapshots and open one browser dashboard for all repos.",
506
- epilog=_METRICS_HELP,
507
- formatter_class=_HelpFormatter,
508
- )
509
-
510
491
  read_parser = subparsers.add_parser(
511
492
  "read",
512
493
  help="Read Shellbrain context without mutating state.",
@@ -89,15 +89,6 @@ def main(
89
89
 
90
90
  return run_upgrade_command(run_upgrade_command=runtime.run_upgrade_command)
91
91
 
92
- if args.command == "metrics":
93
- from app.entrypoints.cli.handlers.human.metrics import run_metrics_command
94
-
95
- return run_metrics_command(
96
- args,
97
- warn_or_fail_on_unsafe_app_role=runtime.warn_or_fail_on_unsafe_app_role,
98
- run_metrics_dashboard=runtime.run_metrics_dashboard,
99
- )
100
-
101
92
  if args.command == "admin":
102
93
  from app.entrypoints.cli.handlers.human.admin import run_admin_command
103
94
 
@@ -31,5 +31,4 @@ class CliRuntime(Protocol):
31
31
  init_success_presenter_context: Callable[[], dict[str, Any]]
32
32
  run_upgrade_command: Callable[[], int]
33
33
  warn_or_fail_on_unsafe_app_role: Callable[[], None]
34
- run_metrics_dashboard: Callable[..., object]
35
34
  admin_dependencies: Any
@@ -21,8 +21,12 @@ def ensure_docker_runtime_available() -> None:
21
21
  check=False,
22
22
  )
23
23
  if completed.returncode != 0:
24
+ detail = completed.stderr.strip() or completed.stdout.strip()
25
+ if not detail:
26
+ detail = f"docker info exited with status {completed.returncode}"
24
27
  raise InitDependencyError(
25
- "Shellbrain init requires the Docker daemon to be running and reachable."
28
+ "Shellbrain requires a reachable Docker daemon for managed-local runtime operations. "
29
+ f"docker info failed: {detail}"
26
30
  )
27
31
 
28
32
 
@@ -77,7 +77,7 @@ shellbrain --no-sync --repo-root "<repo_root>" concept show --help
77
77
 
78
78
  Do not run `shellbrain recall`.
79
79
  Do not write memories, concepts, scenarios, files, settings, or database data.
80
- Do not run `admin`, `init`, `upgrade`, or `metrics` commands.
80
+ Do not run `admin`, `init`, or `upgrade` commands.
81
81
 
82
82
  # PROTOCOL
83
83
  1. Read `query`, `repo_root`, and the budgets from the payload.
@@ -456,7 +456,7 @@ Do not edit files.
456
456
  Do not run a formatter that writes files.
457
457
  Do not commit or push.
458
458
  Do not run `shellbrain recall` or `shellbrain snapshot`.
459
- Do not run `admin`, `init`, `upgrade`, or `metrics` commands.
459
+ Do not run `admin`, `init`, or `upgrade` commands.
460
460
  Do not write directly to the database.
461
461
  Do not use `graph_patches`.
462
462
  Do not use a write command that this prompt does not list.
@@ -712,7 +712,7 @@ shellbrain --repo-root "<repo_root>" concept update --help
712
712
  ```
713
713
 
714
714
  Forbidden: `shellbrain events`, `shellbrain scenario record`, `shellbrain
715
- recall`, `shellbrain snapshot`, admin/init/upgrade/metrics, direct DB writes,
715
+ recall`, `shellbrain snapshot`, admin/init/upgrade, direct DB writes,
716
716
  editing files, formatters, commits, pushes, and any write command not listed
717
717
  above.
718
718
 
@@ -864,7 +864,7 @@ def render_build_context_prompt(request: InnerAgentRunRequest) -> str:
864
864
  "shellbrain concept add",
865
865
  "shellbrain concept update",
866
866
  "shellbrain scenario record",
867
- "any admin, init, upgrade, metrics, or durable write command",
867
+ "any admin, init, upgrade, or durable write command",
868
868
  ],
869
869
  "output_contract": {
870
870
  "brief": {
@@ -13,7 +13,6 @@ def build_cli_runtime():
13
13
 
14
14
  from app.startup import create_policy
15
15
  from app.startup import episode_sync_launcher
16
- from app.startup import metrics as startup_metrics
17
16
  from app.startup import operation_dependencies
18
17
  from app.startup import read_policy
19
18
  from app.startup import repo_context
@@ -63,7 +62,6 @@ def build_cli_runtime():
63
62
  init_success_presenter_context=runtime_admin.init_success_presenter_context,
64
63
  run_upgrade_command=run_upgrade_command,
65
64
  warn_or_fail_on_unsafe_app_role=warn_or_fail_on_unsafe_app_role,
66
- run_metrics_dashboard=startup_metrics.run_metrics_dashboard,
67
65
  admin_dependencies=build_admin_command_dependencies(),
68
66
  )
69
67
 
@@ -35,5 +35,4 @@ class CliRuntime:
35
35
  init_success_presenter_context: Callable[[], dict[str, Any]]
36
36
  run_upgrade_command: Callable[[], int]
37
37
  warn_or_fail_on_unsafe_app_role: Callable[[], None]
38
- run_metrics_dashboard: Callable[..., object]
39
38
  admin_dependencies: AdminCommandDependencies
@@ -172,11 +172,23 @@ def ensure_managed_runtime_ready() -> None:
172
172
  return
173
173
  if config.runtime_mode != RUNTIME_MODE_MANAGED_LOCAL:
174
174
  return
175
+ if _postgres_is_ready(config.database.admin_dsn):
176
+ return
175
177
  ensure_managed_runtime_available()
176
178
  managed_runtime.ensure_existing_managed_container_running(config)
177
179
  wait_for_postgres(config.database.admin_dsn, timeout_seconds=15)
178
180
 
179
181
 
182
+ def _postgres_is_ready(admin_dsn: str) -> bool:
183
+ """Return whether the configured PostgreSQL runtime accepts connections."""
184
+
185
+ try:
186
+ wait_for_postgres(admin_dsn, timeout_seconds=0)
187
+ except InitConflictError:
188
+ return False
189
+ return True
190
+
191
+
180
192
  def _build_fresh_machine_config() -> MachineConfig:
181
193
  """Construct a fresh machine config for managed-local mode."""
182
194
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "shellbrain"
7
- version = "0.1.53"
7
+ version = "0.1.55"
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.53
3
+ Version: 0.1.55
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
@@ -28,7 +28,7 @@ ShellBrain gives AI agents memory, so they can store and reuse what they learn o
28
28
  curl -L shellbrain.ai/install | bash
29
29
  ```
30
30
 
31
- **Works for Codex, Claude Code, and Cursor.**
31
+ **Works for Codex, Claude Code, and Cursor.** The installer runs `shellbrain init` for you. Repos register themselves on first use.
32
32
 
33
33
  Requirements.
34
34
  - macOS or Linux, Python 3.11+, Docker for the managed local Postgres+pgvector runtime.
@@ -38,6 +38,9 @@ Requirements.
38
38
  ```bash
39
39
  shellbrain upgrade
40
40
  ```
41
+
42
+ You can also run `curl -L shellbrain.ai/upgrade | bash`. Manual alternative: `pipx upgrade shellbrain && shellbrain init`.
43
+
41
44
  ---
42
45
 
43
46
  ## Recall in one command
@@ -113,10 +116,10 @@ ShellBrain keeps memory grounded in evidence and narrow in scope. Agents request
113
116
 
114
117
  ## Use ShellBrain
115
118
 
116
- Use ShellBrain with your preferred agent. Then work as usual.
119
+ Use Shellbrain with your preferred agent. Then work as usual.
117
120
 
118
121
  - **Claude Code:** Use `/shellbrain` to recall context at task boundaries.
119
- - **Codex:** Use `$shellbrain` to recall context at task boundaries.
122
+ - **Codex:** Use $shellbrain to recall context at task boundaries.
120
123
  - **Cursor:** Use `/shellbrain` to recall context at task boundaries.
121
124
 
122
125
  ---
@@ -63,8 +63,6 @@ app/core/ports/host_apps/inner_agents.py
63
63
  app/core/ports/local_state/__init__.py
64
64
  app/core/ports/local_state/session_state_store.py
65
65
  app/core/ports/local_state/shadow_git.py
66
- app/core/ports/reporting/__init__.py
67
- app/core/ports/reporting/metrics.py
68
66
  app/core/ports/system/__init__.py
69
67
  app/core/ports/system/clock.py
70
68
  app/core/ports/system/idgen.py
@@ -130,8 +128,6 @@ app/core/use_cases/memories/update/request.py
130
128
  app/core/use_cases/memories/update/result.py
131
129
  app/core/use_cases/metrics/__init__.py
132
130
  app/core/use_cases/metrics/analyze_agent_behavior.py
133
- app/core/use_cases/metrics/build_snapshot.py
134
- app/core/use_cases/metrics/generate_dashboard.py
135
131
  app/core/use_cases/retrieval/__init__.py
136
132
  app/core/use_cases/retrieval/concept_seed_retrieval.py
137
133
  app/core/use_cases/retrieval/context_pack_pipeline.py
@@ -178,7 +174,6 @@ app/entrypoints/cli/handlers/human/__init__.py
178
174
  app/entrypoints/cli/handlers/human/admin.py
179
175
  app/entrypoints/cli/handlers/human/admin_dependencies.py
180
176
  app/entrypoints/cli/handlers/human/init.py
181
- app/entrypoints/cli/handlers/human/metrics.py
182
177
  app/entrypoints/cli/handlers/human/upgrade.py
183
178
  app/entrypoints/cli/handlers/internal_agent/__init__.py
184
179
  app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py
@@ -207,7 +202,6 @@ app/entrypoints/cli/parser/builder.py
207
202
  app/entrypoints/cli/presenters/__init__.py
208
203
  app/entrypoints/cli/presenters/init.py
209
204
  app/entrypoints/cli/presenters/json.py
210
- app/entrypoints/cli/presenters/metrics.py
211
205
  app/entrypoints/cli/request_parsing/__init__.py
212
206
  app/entrypoints/cli/request_parsing/concepts.py
213
207
  app/entrypoints/cli/request_parsing/episodes.py
@@ -265,8 +259,6 @@ app/infrastructure/db/runtime/models/views.py
265
259
  app/infrastructure/db/runtime/queries/__init__.py
266
260
  app/infrastructure/db/runtime/queries/agent_behavior.py
267
261
  app/infrastructure/db/runtime/queries/analytics.py
268
- app/infrastructure/db/runtime/queries/metrics.py
269
- app/infrastructure/db/runtime/queries/metrics_adapter.py
270
262
  app/infrastructure/db/runtime/queries/model_usage_backfill.py
271
263
  app/infrastructure/db/runtime/repos/__init__.py
272
264
  app/infrastructure/db/runtime/repos/relational/__init__.py
@@ -340,12 +332,6 @@ app/infrastructure/process/episode_sync/launcher.py
340
332
  app/infrastructure/process/episode_sync/lock_file.py
341
333
  app/infrastructure/process/episode_sync/poller.py
342
334
  app/infrastructure/process/episode_sync/status_store.py
343
- app/infrastructure/reporting/__init__.py
344
- app/infrastructure/reporting/metrics/__init__.py
345
- app/infrastructure/reporting/metrics/artifacts.py
346
- app/infrastructure/reporting/metrics/browser.py
347
- app/infrastructure/reporting/metrics/pager.py
348
- app/infrastructure/reporting/metrics/render_html.py
349
335
  app/infrastructure/system/__init__.py
350
336
  app/infrastructure/system/clock.py
351
337
  app/infrastructure/system/id_generator.py
@@ -389,7 +375,6 @@ app/startup/host_hooks.py
389
375
  app/startup/internal_agent_config.py
390
376
  app/startup/internal_agents.py
391
377
  app/startup/knowledge_builder.py
392
- app/startup/metrics.py
393
378
  app/startup/migrations.py
394
379
  app/startup/model_usage_backfill.py
395
380
  app/startup/operation_dependencies.py
@@ -1 +0,0 @@
1
- """Reporting and artifact output ports."""
@@ -1,32 +0,0 @@
1
- """Ports for metrics dashboard generation."""
2
-
3
- from __future__ import annotations
4
-
5
- from pathlib import Path
6
- from typing import Any, Protocol
7
-
8
-
9
- class MetricsHtmlRenderer(Protocol):
10
- """Render metrics snapshots to HTML."""
11
-
12
- def render_metrics_dashboard(self, snapshot: dict[str, Any]) -> str: ...
13
-
14
- def render_metrics_browser_dashboard(
15
- self, snapshots: list[dict[str, Any]]
16
- ) -> str: ...
17
-
18
-
19
- class MetricsArtifactWriter(Protocol):
20
- """Persist rendered metrics artifacts."""
21
-
22
- def write_metrics_artifacts(
23
- self, *, repo_id: str, snapshot: dict[str, Any], html: str
24
- ) -> dict[str, Path | str]: ...
25
-
26
- def write_metrics_index_artifact(self, *, html: str) -> Path | str: ...
27
-
28
-
29
- class MetricsDashboardBrowser(Protocol):
30
- """Open a generated metrics dashboard when possible."""
31
-
32
- def open_metrics_dashboard(self, path: Path) -> bool: ...