shellbrain 0.1.16__tar.gz → 0.1.18__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 (211) hide show
  1. {shellbrain-0.1.16 → shellbrain-0.1.18}/PKG-INFO +1 -1
  2. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/context_pack_builder.py +0 -1
  3. shellbrain-0.1.18/app/onboarding_assets/claude/CLAUDE.md +43 -0
  4. shellbrain-0.1.18/app/onboarding_assets/claude/skills/shellbrain-session-start/SKILL.md +151 -0
  5. shellbrain-0.1.18/app/onboarding_assets/codex/AGENTS.md +43 -0
  6. shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-session-start/SKILL.md +158 -0
  7. shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-session-start/agents/openai.yaml +6 -0
  8. shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-session-start/assets/shellbrain_logo.png +0 -0
  9. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-session-start/references/request-shapes.md +17 -0
  10. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-session-start/references/session-workflow.md +23 -6
  11. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +2 -0
  12. shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +11 -0
  13. shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
  14. shellbrain-0.1.18/app/onboarding_assets/cursor/skills/shellbrain-session-start/SKILL.md +93 -0
  15. shellbrain-0.1.18/app/periphery/admin/agent_behavior_analysis.py +527 -0
  16. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/doctor.py +2 -0
  17. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/init.py +2 -0
  18. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/onboarding/host_assets.py +163 -6
  19. {shellbrain-0.1.16 → shellbrain-0.1.18}/pyproject.toml +2 -1
  20. {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/PKG-INFO +1 -1
  21. {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/SOURCES.txt +6 -0
  22. shellbrain-0.1.16/app/onboarding_assets/claude/skills/shellbrain-session-start/SKILL.md +0 -543
  23. shellbrain-0.1.16/app/onboarding_assets/codex/shellbrain-session-start/SKILL.md +0 -134
  24. shellbrain-0.1.16/app/onboarding_assets/codex/shellbrain-session-start/agents/openai.yaml +0 -6
  25. shellbrain-0.1.16/app/onboarding_assets/cursor/skills/shellbrain-session-start/SKILL.md +0 -51
  26. {shellbrain-0.1.16 → shellbrain-0.1.18}/README.md +0 -0
  27. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/__init__.py +0 -0
  28. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/__main__.py +0 -0
  29. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/__init__.py +0 -0
  30. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/admin_db.py +0 -0
  31. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/config.py +0 -0
  32. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/create_policy.py +0 -0
  33. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/db.py +0 -0
  34. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/embeddings.py +0 -0
  35. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/home.py +0 -0
  36. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/migrations.py +0 -0
  37. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/read_policy.py +0 -0
  38. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/repos.py +0 -0
  39. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/retrieval.py +0 -0
  40. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/thresholds.py +0 -0
  41. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/update_policy.py +0 -0
  42. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/use_cases.py +0 -0
  43. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/__init__.py +0 -0
  44. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/create_policy.yaml +0 -0
  45. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/read_policy.yaml +0 -0
  46. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/runtime.yaml +0 -0
  47. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/thresholds.yaml +0 -0
  48. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/update_policy.yaml +0 -0
  49. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/loader.py +0 -0
  50. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/__init__.py +0 -0
  51. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/contracts/__init__.py +0 -0
  52. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/contracts/errors.py +0 -0
  53. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/contracts/requests.py +0 -0
  54. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/contracts/responses.py +0 -0
  55. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/__init__.py +0 -0
  56. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/associations.py +0 -0
  57. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/episodes.py +0 -0
  58. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/evidence.py +0 -0
  59. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/facts.py +0 -0
  60. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/guidance.py +0 -0
  61. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/identity.py +0 -0
  62. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/memory.py +0 -0
  63. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/runtime_context.py +0 -0
  64. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/session_state.py +0 -0
  65. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/telemetry.py +0 -0
  66. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/utility.py +0 -0
  67. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/__init__.py +0 -0
  68. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/clock.py +0 -0
  69. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/config.py +0 -0
  70. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/embeddings.py +0 -0
  71. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/idgen.py +0 -0
  72. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/repos.py +0 -0
  73. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/retrieval.py +0 -0
  74. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/session_state_store.py +0 -0
  75. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/unit_of_work.py +0 -0
  76. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/__init__.py +0 -0
  77. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/_shared/__init__.py +0 -0
  78. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/_shared/executor.py +0 -0
  79. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/_shared/side_effects.py +0 -0
  80. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/create_policy/__init__.py +0 -0
  81. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/create_policy/pipeline.py +0 -0
  82. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/__init__.py +0 -0
  83. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/bm25.py +0 -0
  84. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/expansion.py +0 -0
  85. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/fusion_rrf.py +0 -0
  86. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/lexical_query.py +0 -0
  87. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/pipeline.py +0 -0
  88. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/scenario_lift.py +0 -0
  89. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/scoring.py +0 -0
  90. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/seed_retrieval.py +0 -0
  91. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/utility_prior.py +0 -0
  92. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/update_policy/__init__.py +0 -0
  93. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/update_policy/pipeline.py +0 -0
  94. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/__init__.py +0 -0
  95. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/build_guidance.py +0 -0
  96. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/create_memory.py +0 -0
  97. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/manage_session_state.py +0 -0
  98. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/read_memory.py +0 -0
  99. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/record_episode_sync_telemetry.py +0 -0
  100. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/record_operation_telemetry.py +0 -0
  101. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/sync_episode.py +0 -0
  102. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/update_memory.py +0 -0
  103. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/__init__.py +0 -0
  104. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/env.py +0 -0
  105. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260226_0001_initial_schema.py +0 -0
  106. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
  107. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
  108. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
  109. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
  110. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
  111. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
  112. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
  113. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/__init__.py +0 -0
  114. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/__init__.py +0 -0
  115. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
  116. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-session-start/assets/shellbrain-large.svg +0 -0
  117. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-session-start/assets/shellbrain-small.svg +0 -0
  118. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
  119. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
  120. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/__init__.py +0 -0
  121. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/__init__.py +0 -0
  122. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/analytics.py +0 -0
  123. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/analytics_diagnostics.py +0 -0
  124. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/analytics_queries.py +0 -0
  125. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/backup.py +0 -0
  126. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/destructive_guard.py +0 -0
  127. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/external_runtime.py +0 -0
  128. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/init_errors.py +0 -0
  129. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/instance_guard.py +0 -0
  130. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/machine_state.py +0 -0
  131. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/managed_runtime.py +0 -0
  132. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/privileges.py +0 -0
  133. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/repo_state.py +0 -0
  134. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/restore.py +0 -0
  135. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/storage_setup.py +0 -0
  136. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/upgrade.py +0 -0
  137. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/__init__.py +0 -0
  138. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/handlers.py +0 -0
  139. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/hydration.py +0 -0
  140. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/main.py +0 -0
  141. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/presenter_json.py +0 -0
  142. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/schema_validation.py +0 -0
  143. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/__init__.py +0 -0
  144. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/engine.py +0 -0
  145. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/__init__.py +0 -0
  146. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/associations.py +0 -0
  147. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/episodes.py +0 -0
  148. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/evidence.py +0 -0
  149. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/experiences.py +0 -0
  150. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/instance_metadata.py +0 -0
  151. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/memories.py +0 -0
  152. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/metadata.py +0 -0
  153. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/registry.py +0 -0
  154. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/telemetry.py +0 -0
  155. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/utility.py +0 -0
  156. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/views.py +0 -0
  157. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/__init__.py +0 -0
  158. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/__init__.py +0 -0
  159. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/associations_repo.py +0 -0
  160. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/episodes_repo.py +0 -0
  161. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/evidence_repo.py +0 -0
  162. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/experiences_repo.py +0 -0
  163. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/memories_repo.py +0 -0
  164. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/read_policy_repo.py +0 -0
  165. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/telemetry_repo.py +0 -0
  166. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/utility_repo.py +0 -0
  167. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/semantic/__init__.py +0 -0
  168. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/semantic/keyword_retrieval_repo.py +0 -0
  169. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/semantic/semantic_retrieval_repo.py +0 -0
  170. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/session.py +0 -0
  171. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/uow.py +0 -0
  172. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/embeddings/__init__.py +0 -0
  173. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/embeddings/local_provider.py +0 -0
  174. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/embeddings/query_vector_search.py +0 -0
  175. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/__init__.py +0 -0
  176. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/claude_code.py +0 -0
  177. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/codex.py +0 -0
  178. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/cursor.py +0 -0
  179. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/launcher.py +0 -0
  180. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/normalization.py +0 -0
  181. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/poller.py +0 -0
  182. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/poller_lock.py +0 -0
  183. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/source_discovery.py +0 -0
  184. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/tool_filter.py +0 -0
  185. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/__init__.py +0 -0
  186. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/claude_hook_install.py +0 -0
  187. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/claude_runtime.py +0 -0
  188. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/codex_runtime.py +0 -0
  189. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/compatibility.py +0 -0
  190. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/resolver.py +0 -0
  191. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/__init__.py +0 -0
  192. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/artifacts.py +0 -0
  193. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/browser.py +0 -0
  194. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/queries.py +0 -0
  195. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/render_html.py +0 -0
  196. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/service.py +0 -0
  197. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/onboarding/__init__.py +0 -0
  198. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/session_state/__init__.py +0 -0
  199. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/session_state/file_store.py +0 -0
  200. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/telemetry/__init__.py +0 -0
  201. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/telemetry/operation_summary.py +0 -0
  202. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/telemetry/session_selection.py +0 -0
  203. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/telemetry/sync_summary.py +0 -0
  204. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/validation/__init__.py +0 -0
  205. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/validation/integrity_validation.py +0 -0
  206. {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/validation/semantic_validation.py +0 -0
  207. {shellbrain-0.1.16 → shellbrain-0.1.18}/setup.cfg +0 -0
  208. {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/dependency_links.txt +0 -0
  209. {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/entry_points.txt +0 -0
  210. {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/requires.txt +0 -0
  211. {shellbrain-0.1.16 → shellbrain-0.1.18}/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.16
3
+ Version: 0.1.18
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
@@ -75,7 +75,6 @@ def assemble_context_pack(scored_candidates: dict[str, list[dict[str, Any]]], pa
75
75
  return {
76
76
  "meta": {
77
77
  "mode": mode,
78
- "query": payload.get("query"),
79
78
  "limit": limit,
80
79
  "counts": {
81
80
  "direct": len(sections["direct"]),
@@ -0,0 +1,43 @@
1
+ ## Shellbrain
2
+
3
+ You have a persistent memory system called Shellbrain. This section teaches you a habit for using it well.
4
+
5
+ ### The core habit
6
+
7
+ As you work, maintain a mental summary of your current subproblem as a tuple: `goal | surface | obstacle | hypothesis`.
8
+
9
+ Whenever that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This forces Shellbrain back into your local context so you can make a real decision about whether to use it.
10
+
11
+ Boundary states:
12
+
13
+ - The goal, surface, obstacle, or hypothesis just changed.
14
+ - The same approach failed twice.
15
+ - An error is repeating.
16
+ - You are about to `create` or `update` a Shellbrain memory with evidence.
17
+ - You are closing out a task.
18
+
19
+ ### What to say at the pause
20
+
21
+ If prior memory might help right now:
22
+
23
+ `SB: read | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
24
+
25
+ Then actually call the Shellbrain CLI to read.
26
+
27
+ If the tuple has not meaningfully changed and there is no new evidence or failure:
28
+
29
+ `SB: skip | same signature | <one-line reason>`
30
+
31
+ Then move on. Do not reread just because you can. A reread is a decision, not a reflex. Skip it when there is no new failed attempt, no new evidence, and no changed hypothesis.
32
+
33
+ ### Before writing to Shellbrain
34
+
35
+ Run `shellbrain events` before any evidence-bearing `create` or `update`. This is mandatory.
36
+
37
+ ### At closeout
38
+
39
+ When work is solved, write durable memories (`problem`, `failed_tactic`, `solution`, `fact`, `preference`, or `change`) and run `utility_vote` updates.
40
+
41
+ ### Reference
42
+
43
+ Use the installed `shellbrain-session-start` skill for the exact query and writeback workflow.
@@ -0,0 +1,151 @@
1
+ # Shellbrain Session Start
2
+
3
+ ## Overview
4
+
5
+ Use Shellbrain as a case-based reasoning system for long-running agent work.
6
+
7
+ Shellbrain has two layers:
8
+
9
+ - durable memories:
10
+ - `problem`
11
+ - `solution`
12
+ - `failed_tactic`
13
+ - `fact`
14
+ - `preference`
15
+ - `change`
16
+ - episodic evidence:
17
+ - transcript-derived `episode_events` that justify writes
18
+
19
+ Treat current repo state as ground truth. Treat Shellbrain as advisory long-term memory that helps answer: "Have I seen anything like this before, and what was useful?"
20
+
21
+ ## Quick Start
22
+
23
+ `shellbrain init` is first-time bootstrap and repair. It is not a per-session ritual.
24
+
25
+ 1. If Shellbrain has never been bootstrapped on this machine, the current repo has never been registered, or the user says Shellbrain setup is broken, run `shellbrain init`.
26
+ 2. Otherwise, do not rerun `init` just because a new agent session started. Start with focused `read` queries right away.
27
+ 3. If readiness is unclear, inspect with `shellbrain admin doctor` instead of rerunning `init` by reflex.
28
+ 4. If `doctor` reports `repair_needed`, rerun `shellbrain init` instead of trying to repair Shellbrain manually.
29
+ 5. In Claude Code, if direct `shellbrain` calls fail in the current session, retry through a login shell that sources the user's login profile:
30
+ - `zsh -lc 'source ~/.zprofile >/dev/null 2>&1; shellbrain --help'`
31
+ - `bash -lc 'source ~/.bash_profile >/dev/null 2>&1; shellbrain --help'`
32
+ 6. If the wrapped login-shell check still cannot find `shellbrain`, inspect Python's user script directory:
33
+ - `python3 -c "import sysconfig; print(sysconfig.get_path('scripts', 'posix_user'))"`
34
+ If `shellbrain` exists there, call it directly or add that directory to the login profile PATH and retry. If it does not, reinstall the Shellbrain CLI.
35
+ 7. Resolve the target repo:
36
+ - use the current working directory when already inside the repo
37
+ - pass `--repo-root /absolute/path/to/repo` when working from somewhere else
38
+ - treat repo path as operational context; Shellbrain should normally derive durable repo identity from normalized git remote
39
+ 8. Start with focused `read` queries about the concrete problem, subsystem, decision, or constraint you are working on. Do not start with vague prompts like "what should I know about this repo?"
40
+ 9. Use a startup read bundle when appropriate:
41
+ - prior attempts:
42
+ `shellbrain read --json '{"query":"Have we seen this failure mode before?","kinds":["problem","solution","failed_tactic"]}'`
43
+ - constraints and preferences:
44
+ `shellbrain read --json '{"query":"What repo constraints or user preferences matter for this task?","kinds":["fact","preference","change"]}'`
45
+ - area-specific facts:
46
+ `shellbrain read --json '{"query":"What facts or changes matter in this subsystem?","kinds":["fact","change","problem","solution"]}'`
47
+
48
+ ## Attention Programming
49
+
50
+ You have a persistent memory system called Shellbrain. This section teaches you a habit for using it well.
51
+
52
+ ### The core habit
53
+
54
+ As you work, maintain a mental summary of your current subproblem as a tuple: `goal | surface | obstacle | hypothesis`.
55
+
56
+ Whenever that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This forces Shellbrain back into your local context so you can make a real decision about whether to use it.
57
+
58
+ Boundary states:
59
+
60
+ - The goal, surface, obstacle, or hypothesis just changed.
61
+ - The same approach failed twice.
62
+ - An error is repeating.
63
+ - You are about to `create` or `update` a Shellbrain memory with evidence.
64
+ - You are closing out a task.
65
+
66
+ ### What to say at the pause
67
+
68
+ If prior memory might help right now:
69
+
70
+ `SB: read | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
71
+
72
+ Then actually call the Shellbrain CLI to read.
73
+
74
+ If the tuple has not meaningfully changed and there is no new evidence or failure:
75
+
76
+ `SB: skip | same signature | <one-line reason>`
77
+
78
+ Then move on. Do not reread just because you can. A reread is a decision, not a reflex. Skip it when there is no new failed attempt, no new evidence, and no changed hypothesis.
79
+
80
+ ## Query Construction
81
+
82
+ When the answer is `SB: read`, build the query from the live tuple. Name the actual failure mode, subsystem, decision, or constraint.
83
+
84
+ Good query shapes:
85
+
86
+ - prior attempts for the current obstacle:
87
+ `shellbrain read --json '{"query":"Have we seen this oauth callback loop in staging before?","kinds":["problem","solution","failed_tactic"]}'`
88
+ - constraints and preferences for the current surface:
89
+ `shellbrain read --json '{"query":"What repo constraints or user preferences matter for this auth refactor?","kinds":["fact","preference","change"]}'`
90
+ - facts and changes for the subsystem you just entered:
91
+ `shellbrain read --json '{"query":"What facts or recent changes matter around the payments retry worker?","kinds":["fact","change","problem","solution"]}'`
92
+
93
+ Avoid generic prompts like:
94
+
95
+ - "what should I know about this repo?"
96
+ - "what should I know before I start?"
97
+
98
+ Those are too vague for the actual retrieval model.
99
+
100
+ ## Write Discipline
101
+
102
+ Run `shellbrain events` before any evidence-bearing `create` or `update`. This is mandatory.
103
+
104
+ ```bash
105
+ shellbrain events --json '{"limit":10}'
106
+ ```
107
+
108
+ Then reuse returned `data.events[].id` values verbatim as `evidence_refs`.
109
+
110
+ Hard rules:
111
+
112
+ - never invent `evidence_refs`
113
+ - skip the write if `events` returns nothing useful or the evidence is ambiguous
114
+ - use `read` again before writing if you need to check whether the memory already exists or whether an `update` is more appropriate than a new `create`
115
+
116
+ Durable memory kinds:
117
+
118
+ - `problem`
119
+ - `solution`
120
+ - `failed_tactic`
121
+ - `fact`
122
+ - `preference`
123
+ - `change`
124
+
125
+ Invariant:
126
+
127
+ - `solution` and `failed_tactic` require `links.problem_id`
128
+ - `problem`, `fact`, `preference`, and `change` do not accept `links.problem_id`
129
+
130
+ ## Closeout
131
+
132
+ When work is solved, write durable memories and run `utility_vote` updates. Normalize the episode into durable memory:
133
+
134
+ 1. store the `problem`
135
+ 2. store each `failed_tactic`
136
+ 3. store the `solution`
137
+ 4. store any durable `fact`, `preference`, or `change`
138
+ 5. record `utility_vote` updates for memories that helped or misled
139
+
140
+ Use `scope: "repo"` by default. Use `scope: "global"` only for intentionally cross-repo knowledge such as user-wide preferences or cross-project facts.
141
+
142
+ ## Trusted Session Note
143
+
144
+ - `events` now syncs the exact trusted caller thread instead of mixing same-repo agent threads
145
+ - Claude trusted identity normally comes from the global Shellbrain SessionStart hook in `~/.claude/settings.json`; repo-local `.claude/settings.local.json` is the explicit override or repair path
146
+ - successful responses may include `data.guidance`; treat that as an internal Shellbrain nudge about pending utility votes or workflow reminders
147
+
148
+ ## Resources
149
+
150
+ - Read https://shellbrain.ai/agents if you need the deeper system docs.
151
+ - Use the same payload shapes as the Codex skill docs when issuing `read`, `events`, `create`, or `update`.
@@ -0,0 +1,43 @@
1
+ ## Shellbrain
2
+
3
+ You have a persistent memory system called Shellbrain. This section teaches you a habit for using it well.
4
+
5
+ ### The core habit
6
+
7
+ As you work, maintain a mental summary of your current subproblem as a tuple: `goal | surface | obstacle | hypothesis`.
8
+
9
+ Whenever that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This forces Shellbrain back into your local context so you can make a real decision about whether to use it.
10
+
11
+ Boundary states:
12
+
13
+ - The goal, surface, obstacle, or hypothesis just changed.
14
+ - The same approach failed twice.
15
+ - An error is repeating.
16
+ - You are about to `create` or `update` a Shellbrain memory with evidence.
17
+ - You are closing out a task.
18
+
19
+ ### What to say at the pause
20
+
21
+ If prior memory might help right now:
22
+
23
+ `SB: read | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
24
+
25
+ Then actually call the Shellbrain CLI to read.
26
+
27
+ If the tuple has not meaningfully changed and there is no new evidence or failure:
28
+
29
+ `SB: skip | same signature | <one-line reason>`
30
+
31
+ Then move on. Do not reread just because you can. A reread is a decision, not a reflex. Skip it when there is no new failed attempt, no new evidence, and no changed hypothesis.
32
+
33
+ ### Before writing to Shellbrain
34
+
35
+ Run `shellbrain events` before any evidence-bearing `create` or `update`. This is mandatory.
36
+
37
+ ### At closeout
38
+
39
+ When work is solved, write durable memories (`problem`, `failed_tactic`, `solution`, `fact`, `preference`, or `change`) and run `utility_vote` updates.
40
+
41
+ ### Reference
42
+
43
+ Use the installed `shellbrain-session-start` skill for the exact query and writeback workflow.
@@ -0,0 +1,158 @@
1
+ ---
2
+ name: shellbrain-session-start
3
+ description: Use when Codex should get up to speed in any repo with the installed shellbrain CLI, or when work shifts to a new surface, repeated failure suggests prior memory may help, a hypothesis changes, an evidence-bearing write is about to happen, or closeout should record durable learnings.
4
+ ---
5
+
6
+ # Shellbrain Session Start
7
+
8
+ ## Overview
9
+
10
+ Use Shellbrain as a case-based reasoning system for long-running agent work.
11
+
12
+ Shellbrain has two layers:
13
+
14
+ - durable memories:
15
+ - `problem`
16
+ - `solution`
17
+ - `failed_tactic`
18
+ - `fact`
19
+ - `preference`
20
+ - `change`
21
+ - episodic evidence:
22
+ - transcript-derived `episode_events` that justify writes
23
+
24
+ Treat current repo state as ground truth. Treat Shellbrain as advisory long-term memory that helps answer: "Have I seen anything like this before, and what was useful?"
25
+
26
+ ## Quick Start
27
+
28
+ `shellbrain init` is first-time bootstrap and repair. It is not a per-session ritual.
29
+
30
+ 1. If Shellbrain has never been bootstrapped on this machine, the current repo has never been registered, or the user says Shellbrain setup is broken, run `shellbrain init`.
31
+ 2. Otherwise, do not rerun `init` just because a new agent session started. Start with focused `read` queries right away.
32
+ 3. If readiness is unclear, inspect with `shellbrain admin doctor` instead of rerunning `init` by reflex.
33
+ 4. If `doctor` reports `repair_needed`, rerun `shellbrain init` instead of trying to repair Shellbrain manually.
34
+ 5. In Codex or similar tool shells, if direct `shellbrain` calls fail in the current session, retry through a login shell that sources the user's login profile:
35
+ - `zsh -lc 'source ~/.zprofile >/dev/null 2>&1; shellbrain --help'`
36
+ - `bash -lc 'source ~/.bash_profile >/dev/null 2>&1; shellbrain --help'`
37
+ 6. If the wrapped login-shell check still cannot find `shellbrain`, inspect Python's user script directory:
38
+ - `python3 -c "import sysconfig; print(sysconfig.get_path('scripts', 'posix_user'))"`
39
+ If `shellbrain` exists there, call it directly or add that directory to the login profile PATH and retry. If it does not, reinstall the Shellbrain CLI.
40
+ 7. Resolve the target repo:
41
+ - use the current working directory when already inside the repo
42
+ - pass `--repo-root /absolute/path/to/repo` when working from somewhere else
43
+ - treat repo path as operational context; Shellbrain should normally derive durable repo identity from normalized git remote
44
+ 8. Start with focused `read` queries about the concrete problem, subsystem, decision, or constraint you are working on. Do not start with vague prompts like "what should I know about this repo?"
45
+ 9. Use a startup read bundle when appropriate:
46
+ - prior attempts:
47
+ `shellbrain read --json '{"query":"Have we seen this failure mode before?","kinds":["problem","solution","failed_tactic"]}'`
48
+ - constraints and preferences:
49
+ `shellbrain read --json '{"query":"What repo constraints or user preferences matter for this task?","kinds":["fact","preference","change"]}'`
50
+ - area-specific facts:
51
+ `shellbrain read --json '{"query":"What facts or changes matter in this subsystem?","kinds":["fact","change","problem","solution"]}'`
52
+
53
+ ## Attention Programming
54
+
55
+ You have a persistent memory system called Shellbrain. This section teaches you a habit for using it well.
56
+
57
+ ### The core habit
58
+
59
+ As you work, maintain a mental summary of your current subproblem as a tuple: `goal | surface | obstacle | hypothesis`.
60
+
61
+ Whenever that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This forces Shellbrain back into your local context so you can make a real decision about whether to use it.
62
+
63
+ Boundary states:
64
+
65
+ - The goal, surface, obstacle, or hypothesis just changed.
66
+ - The same approach failed twice.
67
+ - An error is repeating.
68
+ - You are about to `create` or `update` a Shellbrain memory with evidence.
69
+ - You are closing out a task.
70
+
71
+ ### What to say at the pause
72
+
73
+ If prior memory might help right now:
74
+
75
+ `SB: read | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
76
+
77
+ Then actually call the Shellbrain CLI to read.
78
+
79
+ If the tuple has not meaningfully changed and there is no new evidence or failure:
80
+
81
+ `SB: skip | same signature | <one-line reason>`
82
+
83
+ Then move on. Do not reread just because you can. A reread is a decision, not a reflex. Skip it when there is no new failed attempt, no new evidence, and no changed hypothesis.
84
+
85
+ ## Query Construction
86
+
87
+ When the answer is `SB: read`, build the query from the live tuple. Name the actual failure mode, subsystem, decision, or constraint.
88
+
89
+ Good query shapes:
90
+
91
+ - prior attempts for the current obstacle:
92
+ `shellbrain read --json '{"query":"Have we seen this oauth callback loop in staging before?","kinds":["problem","solution","failed_tactic"]}'`
93
+ - constraints and preferences for the current surface:
94
+ `shellbrain read --json '{"query":"What repo constraints or user preferences matter for this auth refactor?","kinds":["fact","preference","change"]}'`
95
+ - facts and changes for the subsystem you just entered:
96
+ `shellbrain read --json '{"query":"What facts or recent changes matter around the payments retry worker?","kinds":["fact","change","problem","solution"]}'`
97
+
98
+ Avoid generic prompts like:
99
+
100
+ - "what should I know about this repo?"
101
+ - "what should I know before I start?"
102
+
103
+ Those are too vague for the actual retrieval model.
104
+
105
+ ## Write Discipline
106
+
107
+ Run `shellbrain events` before any evidence-bearing `create` or `update`. This is mandatory.
108
+
109
+ ```bash
110
+ shellbrain events --json '{"limit":10}'
111
+ ```
112
+
113
+ Then reuse returned `data.events[].id` values verbatim as `evidence_refs`.
114
+
115
+ Hard rules:
116
+
117
+ - never invent `evidence_refs`
118
+ - skip the write if `events` returns nothing useful or the evidence is ambiguous
119
+ - use `read` again before writing if you need to check whether the memory already exists or whether an `update` is more appropriate than a new `create`
120
+
121
+ Durable memory kinds:
122
+
123
+ - `problem`
124
+ - `solution`
125
+ - `failed_tactic`
126
+ - `fact`
127
+ - `preference`
128
+ - `change`
129
+
130
+ Invariant:
131
+
132
+ - `solution` and `failed_tactic` require `links.problem_id`
133
+ - `problem`, `fact`, `preference`, and `change` do not accept `links.problem_id`
134
+
135
+ ## Closeout
136
+
137
+ When work is solved, write durable memories and run `utility_vote` updates. Normalize the episode into durable memory:
138
+
139
+ 1. store the `problem`
140
+ 2. store each `failed_tactic`
141
+ 3. store the `solution`
142
+ 4. store any durable `fact`, `preference`, or `change`
143
+ 5. record `utility_vote` updates for memories that helped or misled
144
+
145
+ Use `scope: "repo"` by default. Use `scope: "global"` only for intentionally cross-repo knowledge such as user-wide preferences or cross-project facts.
146
+
147
+ ## Trusted Session Note
148
+
149
+ - `events` now syncs the exact trusted caller thread instead of mixing same-repo agent threads
150
+ - Codex caller identity is automatic
151
+ - Claude trusted identity normally comes from the global Shellbrain SessionStart hook in `~/.claude/settings.json`; repo-local `.claude/settings.local.json` is the explicit override or repair path
152
+ - successful responses may include `data.guidance`; treat that as an internal Shellbrain nudge about pending utility votes or workflow reminders
153
+
154
+ ## Resources
155
+
156
+ - Read [references/session-workflow.md](references/session-workflow.md) for the full session cadence, tuple examples, and evidence model.
157
+ - Read [references/request-shapes.md](references/request-shapes.md) for valid JSON payloads, response-shape notes, and command examples.
158
+ - If you need the deeper system docs, read https://shellbrain.ai/agents.
@@ -0,0 +1,6 @@
1
+ interface:
2
+ display_name: "Shellbrain Session Start"
3
+ short_description: "Reconsider shellbrain at subproblem boundaries"
4
+ icon_small: "./assets/shellbrain-small.svg"
5
+ icon_large: "./assets/shellbrain_logo.png"
6
+ default_prompt: "Use $shellbrain-session-start when work shifts to a new surface, repeated failures suggest prior memory may help, a hypothesis changes, an evidence-bearing write is about to happen, or closeout should record durable learnings."
@@ -25,6 +25,22 @@ Use `read` to retrieve durable memories related to the current problem or subpro
25
25
 
26
26
  Shellbrain `read` is retrieval, not chat. Query it with concrete failure modes, subsystem names, decisions, or constraints. Avoid vague prompts like "what should I know about this repo?"
27
27
 
28
+ Maintain a mental summary of the current subproblem as a tuple: `goal | surface | obstacle | hypothesis`.
29
+
30
+ Whenever that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This forces Shellbrain back into your local context so you can make a real decision about whether to use it.
31
+
32
+ If prior memory might help right now:
33
+
34
+ - `SB: read | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
35
+
36
+ Then actually call the Shellbrain CLI to read.
37
+
38
+ If the tuple has not meaningfully changed and there is no new evidence or failure:
39
+
40
+ - `SB: skip | same signature | <one-line reason>`
41
+
42
+ Then move on. Do not reread just because you can. A reread is a decision, not a reflex. Skip it when there is no new failed attempt, no new evidence, and no changed hypothesis.
43
+
28
44
  Prior attempts:
29
45
 
30
46
  ```bash
@@ -71,6 +87,7 @@ shellbrain events --json '{"limit":10}'
71
87
  Read returned ids from `data.events[].id`.
72
88
 
73
89
  `events` inspects normalized episodic evidence. Those ids are the canonical grounding for durable writes.
90
+ `events` is a hard rule before evidence-bearing `create` and `update`.
74
91
 
75
92
  When caller identity is trusted, `events` reads from the exact caller thread instead of guessing from the repo alone.
76
93
  `shellbrain init` normally installs Claude integration through the global Shellbrain SessionStart hook in `~/.claude/settings.json`. Use `shellbrain admin install-claude-hook --repo-root ...` only when you intentionally need the repo-local override path.
@@ -117,14 +117,29 @@ Use `why_included` and `anchor_memory_id` to understand why a related item appea
117
117
 
118
118
  ### During the task
119
119
 
120
- Re-run `read` whenever:
120
+ Maintain a mental summary of the current subproblem as a tuple: `goal | surface | obstacle | hypothesis`.
121
121
 
122
- - the search shifts to a new subproblem
123
- - you hit a blocker and want similar prior failures or tactics
124
- - you move into a new subsystem
125
- - you suspect a fact, preference, or change memory may matter halfway through the journey
122
+ Whenever that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This forces Shellbrain back into your local context so you can make a real decision about whether to use it.
126
123
 
127
- Do not treat Shellbrain as startup-only. Query liberally while solving.
124
+ Boundary states:
125
+
126
+ - The goal, surface, obstacle, or hypothesis just changed.
127
+ - The same approach failed twice.
128
+ - An error is repeating.
129
+ - You are about to `create` or `update` a Shellbrain memory with evidence.
130
+ - You are closing out a task.
131
+
132
+ If prior memory might help right now:
133
+
134
+ - `SB: read | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
135
+
136
+ Then actually call the Shellbrain CLI to read.
137
+
138
+ If the tuple has not meaningfully changed and there is no new evidence or failure:
139
+
140
+ - `SB: skip | same signature | <one-line reason>`
141
+
142
+ Then move on. Do not reread just because you can. A reread is a decision, not a reflex. Skip it when there is no new failed attempt, no new evidence, and no changed hypothesis.
128
143
 
129
144
  ### Before any write
130
145
 
@@ -136,6 +151,8 @@ shellbrain events --json '{"limit":10}'
136
151
 
137
152
  Then reuse returned `data.events[].id` values verbatim as `evidence_refs`.
138
153
 
154
+ This is a hard rule before any evidence-bearing `create` or `update`.
155
+
139
156
  ### Session end
140
157
 
141
158
  Normalize the episode into durable memory:
@@ -1,4 +1,6 @@
1
1
  interface:
2
2
  display_name: "Shellbrain Usage Review"
3
3
  short_description: "Review shellbrain usage across repos"
4
+ icon_small: "./assets/shellbrain-small.svg"
5
+ icon_large: "./assets/shellbrain_logo.png"
4
6
  default_prompt: "Use $shellbrain-usage-review to inspect shellbrain usage across all repos and summarize what is working, what is failing, why it is failing, and where agents are skipping expected capabilities."
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none">
2
+ <defs>
3
+ <linearGradient id="shellbrainSmallBg" x1="2" y1="1.5" x2="12" y2="12.5" gradientUnits="userSpaceOnUse">
4
+ <stop stop-color="#8B5CF6"/>
5
+ <stop offset="1" stop-color="#5B21B6"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect x="1.25" y="1.25" width="11.5" height="11.5" rx="3" fill="url(#shellbrainSmallBg)"/>
9
+ <path d="M5.35 4.15C4.25 4.15 3.35 5 3.35 6.05C3.35 6.72 3.72 7.33 4.31 7.69C4.3 7.81 4.24 8.08 4.06 8.36C4 8.46 4 8.58 4.06 8.68C4.11 8.77 4.21 8.83 4.32 8.83C4.73 8.83 5.13 8.68 5.46 8.4C5.64 8.43 5.81 8.45 6 8.45C7.1 8.45 8 7.6 8 6.55C8 5.5 7.1 4.65 6 4.65C5.78 4.65 5.56 4.69 5.35 4.77C5.24 4.38 4.85 4.15 5.35 4.15Z" fill="white" fill-opacity="0.95"/>
10
+ <path d="M8.35 5.55C9.45 5.55 10.35 6.4 10.35 7.45C10.35 8.12 9.98 8.73 9.39 9.09C9.4 9.21 9.46 9.48 9.64 9.76C9.7 9.86 9.7 9.98 9.64 10.08C9.59 10.17 9.49 10.23 9.38 10.23C8.97 10.23 8.57 10.08 8.24 9.8C8.06 9.83 7.89 9.85 7.7 9.85C6.6 9.85 5.7 9 5.7 7.95C5.7 6.9 6.6 6.05 7.7 6.05C7.92 6.05 8.14 6.09 8.35 6.17C8.46 5.78 8.85 5.55 8.35 5.55Z" fill="white" fill-opacity="0.75"/>
11
+ </svg>
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: shellbrain-session-start
3
+ description: Use when Cursor should get up to speed in any repo with the installed shellbrain CLI, or when work shifts to a new surface, repeated failure suggests prior memory may help, a hypothesis changes, an evidence-bearing write is about to happen, or closeout should record durable learnings.
4
+ ---
5
+
6
+ # Shellbrain Session Start
7
+
8
+ Use Shellbrain as a case-based reasoning system for long-running agent work.
9
+
10
+ Shellbrain has two layers:
11
+
12
+ - durable memories:
13
+ - `problem`
14
+ - `solution`
15
+ - `failed_tactic`
16
+ - `fact`
17
+ - `preference`
18
+ - `change`
19
+ - episodic evidence:
20
+ - transcript-derived `episode_events` that justify writes
21
+
22
+ `shellbrain init` is first-time bootstrap and repair. It is not a per-session ritual.
23
+
24
+ ## Quick Start
25
+
26
+ 1. If Shellbrain has never been bootstrapped on this machine, the current repo has never been registered, or the user says Shellbrain setup is broken, run `shellbrain init`.
27
+ 2. Otherwise, do not rerun `init` just because a new agent session started. Start with focused `read` queries right away.
28
+ 3. If readiness is unclear, inspect with `shellbrain admin doctor` instead of rerunning `init` by reflex.
29
+ 4. If `doctor` reports `repair_needed`, rerun `shellbrain init`.
30
+ 5. If direct `shellbrain` calls fail in the current Cursor shell, retry through a login shell that sources the user's login profile:
31
+ - `zsh -lc 'source ~/.zprofile >/dev/null 2>&1; shellbrain --help'`
32
+ - `bash -lc 'source ~/.bash_profile >/dev/null 2>&1; shellbrain --help'`
33
+ 6. If the wrapped login-shell check still cannot find `shellbrain`, inspect Python's user script directory:
34
+ - `python3 -c "import sysconfig; print(sysconfig.get_path('scripts', 'posix_user'))"`
35
+ 7. Resolve the target repo:
36
+ - use the current working directory when already inside the repo
37
+ - pass `--repo-root /absolute/path/to/repo` when working from somewhere else
38
+ 8. Start with focused `read` queries about the concrete problem, subsystem, decision, or constraint you are working on. Do not start with vague prompts like "what should I know about this repo?"
39
+
40
+ ## Attention Programming
41
+
42
+ You have a persistent memory system called Shellbrain. This section teaches you a habit for using it well.
43
+
44
+ ### The core habit
45
+
46
+ As you work, maintain a mental summary of your current subproblem as a tuple: `goal | surface | obstacle | hypothesis`.
47
+
48
+ Whenever that tuple changes materially, or you hit a boundary state, pause and say one `SB:` line out loud by actually generating it as output. This forces Shellbrain back into your local context so you can make a real decision about whether to use it.
49
+
50
+ Boundary states:
51
+
52
+ - The goal, surface, obstacle, or hypothesis just changed.
53
+ - The same approach failed twice.
54
+ - An error is repeating.
55
+ - You are about to `create` or `update` a Shellbrain memory with evidence.
56
+ - You are closing out a task.
57
+
58
+ ### What to say at the pause
59
+
60
+ If prior memory might help right now:
61
+
62
+ `SB: read | <goal> | <surface> | <obstacle> | <hypothesis-or-trigger>`
63
+
64
+ Then actually call the Shellbrain CLI to read.
65
+
66
+ If the tuple has not meaningfully changed and there is no new evidence or failure:
67
+
68
+ `SB: skip | same signature | <one-line reason>`
69
+
70
+ Then move on. Do not reread just because you can. A reread is a decision, not a reflex. Skip it when there is no new failed attempt, no new evidence, and no changed hypothesis.
71
+
72
+ ## Write Discipline
73
+
74
+ Run `shellbrain events` before any evidence-bearing `create` or `update`. This is mandatory.
75
+
76
+ - `shellbrain events --json '{"limit":10}'`
77
+ - reuse returned `data.events[].id` values verbatim as `evidence_refs`
78
+ - never invent `evidence_refs`
79
+ - skip the write if `events` returns nothing useful or the evidence is ambiguous
80
+
81
+ ## Closeout
82
+
83
+ When work is solved, write durable memories and run `utility_vote` updates.
84
+
85
+ At session end, normalize the episode into durable memories:
86
+
87
+ - store the `problem`
88
+ - store each `failed_tactic`
89
+ - store the `solution`
90
+ - store any durable `fact`, `preference`, or `change`
91
+ - record `utility_vote` updates for memories that helped or misled
92
+
93
+ If you need deeper guidance, read https://shellbrain.ai/agents.