shellbrain 0.1.55__tar.gz → 0.1.57__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 (466) hide show
  1. {shellbrain-0.1.55 → shellbrain-0.1.57}/PKG-INFO +1 -1
  2. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/backups.py +0 -10
  3. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/concepts.py +0 -23
  4. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/episodes.py +1 -18
  5. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/evidence.py +0 -16
  6. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/guidance.py +0 -3
  7. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/identity.py +3 -16
  8. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/ids.py +0 -2
  9. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/memories.py +1 -23
  10. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/session_state.py +0 -8
  11. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/snapshots.py +2 -18
  12. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/errors.py +0 -3
  13. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/memories/add_plan.py +11 -11
  14. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/memories/update_plan.py +9 -9
  15. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/retrieval/bm25.py +2 -5
  16. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/retrieval/context_pack.py +0 -5
  17. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/retrieval/lexical_query.py +3 -21
  18. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/retrieval/ontology_semantics.py +23 -26
  19. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/retrieval/scoring.py +1 -2
  20. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/concept_repositories.py +0 -5
  21. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/episode_repositories.py +1 -19
  22. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/embeddings/retrieval.py +0 -8
  23. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/backfill_model_usage/__init__.py +0 -2
  24. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/backfill_model_usage/backfill_model_usage.py +3 -4
  25. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/backfill_model_usage/request.py +0 -7
  26. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/add/execute.py +4 -17
  27. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/add/result.py +0 -3
  28. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/show/result.py +0 -3
  29. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/update/execute.py +10 -9
  30. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/update/result.py +0 -3
  31. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/views.py +11 -11
  32. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/episodes/sync_discovered_host_session.py +1 -1
  33. shellbrain-0.1.57/app/core/use_cases/episodes/sync_episode/request.py +40 -0
  34. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/episodes/sync_episode/sync_episode.py +20 -40
  35. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/build_knowledge/execute.py +2 -11
  36. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/build_knowledge/result.py +0 -4
  37. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/teach_knowledge/execute.py +2 -11
  38. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/teach_knowledge/result.py +0 -4
  39. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/add/request.py +0 -14
  40. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/effect_plan.py +0 -8
  41. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/update/result.py +0 -16
  42. shellbrain-0.1.57/app/core/use_cases/retrieval/build_context/__init__.py +5 -0
  43. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/build_context/execute.py +33 -90
  44. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/concept_seed_retrieval.py +1 -5
  45. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/context_pack_pipeline.py +8 -22
  46. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/deterministic_graph_recall.py +60 -114
  47. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/expansion.py +8 -22
  48. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/read/result.py +0 -3
  49. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/read_concepts.py +9 -25
  50. shellbrain-0.1.57/app/core/use_cases/retrieval/recall/__init__.py +9 -0
  51. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/seed_retrieval.py +1 -7
  52. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/scenarios/record/result.py +0 -4
  53. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/snapshots/capture_snapshot/result.py +0 -4
  54. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/snapshots/code_delta_context/execute.py +6 -10
  55. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/dependencies.py +2 -19
  56. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/human/admin.py +1 -1
  57. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/human/admin_dependencies.py +1 -1
  58. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/episodes/events.py +1 -1
  59. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/episodes/selection.py +1 -34
  60. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/memories/add.py +1 -7
  61. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/memories/update.py +1 -7
  62. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/retrieval/execution.py +2 -2
  63. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/result_envelopes.py +5 -36
  64. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/session_state.py +0 -12
  65. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/working_agent/snapshot.py +1 -1
  66. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/concepts.py +7 -25
  67. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/hydration.py +2 -32
  68. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/scenarios.py +2 -4
  69. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/runner.py +22 -9
  70. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/backups/logical_backup.py +41 -41
  71. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/connection.py +7 -0
  72. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/provisioning/managed_local.py +15 -28
  73. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/storage_setup.py +1 -10
  74. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/engine.py +1 -1
  75. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/associations.py +0 -1
  76. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/concepts.py +0 -28
  77. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/episodes.py +0 -42
  78. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/registry.py +1 -16
  79. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/telemetry.py +0 -5
  80. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/queries/model_usage_backfill.py +0 -15
  81. shellbrain-0.1.57/app/infrastructure/db/runtime/repos/memory_visibility.py +27 -0
  82. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/concepts_repo.py +1 -32
  83. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/episodes_repo.py +33 -105
  84. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/evidence_repo.py +17 -52
  85. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/read_policy_repo.py +4 -22
  86. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/telemetry_repo.py +19 -49
  87. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/semantic/keyword_retrieval_repo.py +7 -27
  88. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/semantic/semantic_retrieval_repo.py +5 -24
  89. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/identity/resolver.py +2 -20
  90. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/inner_agents/prompt.py +0 -1
  91. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/cursor.py +2 -7
  92. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/session_selection.py +2 -2
  93. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/shadow_git_store.py +0 -2
  94. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/process/episode_sync/lock_file.py +8 -27
  95. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/process/episode_sync/poller.py +3 -11
  96. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/admin_dependencies.py +1 -1
  97. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/backup.py +4 -17
  98. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/cli.py +7 -8
  99. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/create_policy.py +0 -23
  100. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/embeddings.py +16 -24
  101. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/episode_poller.py +2 -2
  102. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/internal_agents.py +0 -6
  103. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/knowledge_builder.py +2 -2
  104. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/model_usage_backfill.py +3 -4
  105. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/operation_dependencies.py +2 -10
  106. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/read_policy.py +0 -16
  107. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/repo_context.py +1 -7
  108. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/runtime_admin.py +12 -34
  109. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/snapshot_baseline.py +2 -2
  110. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/thresholds.py +0 -6
  111. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/update_policy.py +0 -17
  112. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/_usage_view_sql.py +0 -9
  113. shellbrain-0.1.57/migrations/versions/20260901_0039_drop_unused_schema.py +72 -0
  114. {shellbrain-0.1.55 → shellbrain-0.1.57}/pyproject.toml +1 -1
  115. {shellbrain-0.1.55 → shellbrain-0.1.57}/shellbrain.egg-info/PKG-INFO +1 -1
  116. {shellbrain-0.1.55 → shellbrain-0.1.57}/shellbrain.egg-info/SOURCES.txt +2 -15
  117. shellbrain-0.1.55/app/core/policies/episodes/event_content.py +0 -18
  118. shellbrain-0.1.55/app/core/use_cases/admin/create_backup.py +0 -18
  119. shellbrain-0.1.55/app/core/use_cases/admin/verify_backup.py +0 -21
  120. shellbrain-0.1.55/app/core/use_cases/concepts/containment_checks.py +0 -26
  121. shellbrain-0.1.55/app/core/use_cases/episodes/sync_episode/request.py +0 -74
  122. shellbrain-0.1.55/app/core/use_cases/retrieval/build_context/__init__.py +0 -13
  123. shellbrain-0.1.55/app/core/use_cases/retrieval/recall/__init__.py +0 -18
  124. shellbrain-0.1.55/app/core/use_cases/retrieval/recall/execute.py +0 -38
  125. shellbrain-0.1.55/app/entrypoints/cli/error_responses.py +0 -10
  126. shellbrain-0.1.55/app/entrypoints/cli/handlers/human/upgrade.py +0 -11
  127. shellbrain-0.1.55/app/entrypoints/cli/operation_command.py +0 -45
  128. shellbrain-0.1.55/app/entrypoints/cli/presenters/json.py +0 -10
  129. shellbrain-0.1.55/app/infrastructure/db/admin/backups/manifest_store.py +0 -39
  130. shellbrain-0.1.55/app/infrastructure/db/admin/backups/restore.py +0 -33
  131. shellbrain-0.1.55/app/infrastructure/db/admin/provisioning/init_effects.py +0 -20
  132. shellbrain-0.1.55/app/infrastructure/db/runtime/models/views.py +0 -1110
  133. shellbrain-0.1.55/app/startup/retrieval.py +0 -3
  134. shellbrain-0.1.55/app/startup/use_cases.py +0 -22
  135. {shellbrain-0.1.55 → shellbrain-0.1.57}/README.md +0 -0
  136. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/__init__.py +0 -0
  137. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/__main__.py +0 -0
  138. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/__init__.py +0 -0
  139. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/__init__.py +0 -0
  140. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/admin_errors.py +0 -0
  141. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/associations.py +0 -0
  142. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/inner_agents.py +0 -0
  143. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/knowledge_builder.py +0 -0
  144. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/machine_config.py +0 -0
  145. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/runtime_context.py +0 -0
  146. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/scenarios.py +0 -0
  147. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/settings.py +0 -0
  148. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/structural_memory_relations.py +0 -0
  149. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/entities/utility.py +0 -0
  150. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/__init__.py +0 -0
  151. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/concepts/__init__.py +0 -0
  152. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/concepts/relation_rules.py +0 -0
  153. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/concepts/search_text.py +0 -0
  154. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/episodes/__init__.py +0 -0
  155. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/episodes/knowledge_building.py +0 -0
  156. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/memories/__init__.py +0 -0
  157. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/memories/link_rules.py +0 -0
  158. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/retrieval/__init__.py +0 -0
  159. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/retrieval/expansion.py +0 -0
  160. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/policies/retrieval/fusion_rrf.py +0 -0
  161. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/__init__.py +0 -0
  162. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/__init__.py +0 -0
  163. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/guidance.py +0 -0
  164. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/knowledge_builder.py +0 -0
  165. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/memory_repositories.py +0 -0
  166. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/problem_runs.py +0 -0
  167. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/retrieval_repositories.py +0 -0
  168. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/snapshots.py +0 -0
  169. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/db/unit_of_work.py +0 -0
  170. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/embeddings/__init__.py +0 -0
  171. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/embeddings/provider.py +0 -0
  172. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/host_apps/__init__.py +0 -0
  173. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/host_apps/inner_agents.py +0 -0
  174. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/local_state/__init__.py +0 -0
  175. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/local_state/session_state_store.py +0 -0
  176. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/local_state/shadow_git.py +0 -0
  177. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/system/__init__.py +0 -0
  178. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/system/clock.py +0 -0
  179. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/ports/system/idgen.py +0 -0
  180. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/__init__.py +0 -0
  181. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/__init__.py +0 -0
  182. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/analytics_diagnostics.py +0 -0
  183. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/backfill_model_usage/result.py +0 -0
  184. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/diagnose_runtime.py +0 -0
  185. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/generate_analytics_report.py +0 -0
  186. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/initialize_runtime.py +0 -0
  187. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/admin/restore_backup.py +0 -0
  188. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/build_guidance.py +0 -0
  189. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/__init__.py +0 -0
  190. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/add/__init__.py +0 -0
  191. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/add/request.py +0 -0
  192. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/embeddings.py +0 -0
  193. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/reference_checks.py +0 -0
  194. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/show/__init__.py +0 -0
  195. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/show/execute.py +0 -0
  196. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/show/request.py +0 -0
  197. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/update/__init__.py +0 -0
  198. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/concepts/update/request.py +0 -0
  199. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/episodes/__init__.py +0 -0
  200. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/episodes/events/__init__.py +0 -0
  201. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/episodes/events/request.py +0 -0
  202. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/episodes/sync_episode/__init__.py +0 -0
  203. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/episodes/sync_episode/result.py +0 -0
  204. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/__init__.py +0 -0
  205. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/build_knowledge/__init__.py +0 -0
  206. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/build_knowledge/request.py +0 -0
  207. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/teach_knowledge/__init__.py +0 -0
  208. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/knowledge_builder/teach_knowledge/request.py +0 -0
  209. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/__init__.py +0 -0
  210. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/add/__init__.py +0 -0
  211. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/add/execute.py +0 -0
  212. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/add/result.py +0 -0
  213. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/reference_checks.py +0 -0
  214. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/update/__init__.py +0 -0
  215. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/update/execute.py +0 -0
  216. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/memories/update/request.py +0 -0
  217. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/metrics/__init__.py +0 -0
  218. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/metrics/analyze_agent_behavior.py +0 -0
  219. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/plan_execution.py +0 -0
  220. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/__init__.py +0 -0
  221. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/read/__init__.py +0 -0
  222. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/read/execute.py +0 -0
  223. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/read/request.py +0 -0
  224. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/recall/request.py +0 -0
  225. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/retrieval/recall/result.py +0 -0
  226. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/scenarios/__init__.py +0 -0
  227. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/scenarios/record/__init__.py +0 -0
  228. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/scenarios/record/execute.py +0 -0
  229. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/scenarios/record/request.py +0 -0
  230. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/snapshots/__init__.py +0 -0
  231. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/snapshots/capture_snapshot/__init__.py +0 -0
  232. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/snapshots/capture_snapshot/execute.py +0 -0
  233. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/snapshots/capture_snapshot/request.py +0 -0
  234. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/snapshots/code_delta_context/__init__.py +0 -0
  235. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/core/use_cases/snapshots/code_delta_context/request.py +0 -0
  236. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/__init__.py +0 -0
  237. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/__init__.py +0 -0
  238. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/__init__.py +0 -0
  239. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/cli_operation.py +0 -0
  240. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/human/__init__.py +0 -0
  241. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/human/init.py +0 -0
  242. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/__init__.py +0 -0
  243. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/concepts/__init__.py +0 -0
  244. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/concepts/add.py +0 -0
  245. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/concepts/show.py +0 -0
  246. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/concepts/update.py +0 -0
  247. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/episodes/__init__.py +0 -0
  248. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/episodes/serialization.py +0 -0
  249. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/memories/__init__.py +0 -0
  250. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/memories/utility_vote_evidence.py +0 -0
  251. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/retrieval/__init__.py +0 -0
  252. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/retrieval/read.py +0 -0
  253. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/scenarios/__init__.py +0 -0
  254. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/internal_agent/scenarios/record.py +0 -0
  255. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/working_agent/__init__.py +0 -0
  256. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/working_agent/recall.py +0 -0
  257. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/handlers/working_agent/teach.py +0 -0
  258. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/main.py +0 -0
  259. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/parser/__init__.py +0 -0
  260. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/parser/builder.py +0 -0
  261. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/presenters/__init__.py +0 -0
  262. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/presenters/init.py +0 -0
  263. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/__init__.py +0 -0
  264. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/episodes.py +0 -0
  265. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/memories.py +0 -0
  266. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/payload_validation.py +0 -0
  267. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/prepared.py +0 -0
  268. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/retrieval.py +0 -0
  269. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/request_parsing/teach.py +0 -0
  270. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/cli/runtime.py +0 -0
  271. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/host_hooks/__init__.py +0 -0
  272. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/host_hooks/claude_session_start.py +0 -0
  273. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/host_hooks/cursor_statusline.py +0 -0
  274. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/jobs/__init__.py +0 -0
  275. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/entrypoints/jobs/episode_sync.py +0 -0
  276. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/__init__.py +0 -0
  277. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/__init__.py +0 -0
  278. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/__init__.py +0 -0
  279. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/app_role_safety.py +0 -0
  280. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/backups/__init__.py +0 -0
  281. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/backups/destructive_guard.py +0 -0
  282. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/instance_guard.py +0 -0
  283. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/migrations.py +0 -0
  284. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/privileges.py +0 -0
  285. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/provisioning/__init__.py +0 -0
  286. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/provisioning/docker_prerequisites.py +0 -0
  287. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/admin/provisioning/external_postgres.py +0 -0
  288. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/__init__.py +0 -0
  289. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/__init__.py +0 -0
  290. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/evidence.py +0 -0
  291. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/experiences.py +0 -0
  292. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/instance_metadata.py +0 -0
  293. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/knowledge_builder.py +0 -0
  294. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/memories.py +0 -0
  295. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/metadata.py +0 -0
  296. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/problem_runs.py +0 -0
  297. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/snapshots.py +0 -0
  298. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/models/utility.py +0 -0
  299. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/queries/__init__.py +0 -0
  300. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/queries/agent_behavior.py +0 -0
  301. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/queries/analytics.py +0 -0
  302. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/__init__.py +0 -0
  303. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/__init__.py +0 -0
  304. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/associations_repo.py +0 -0
  305. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/experiences_repo.py +0 -0
  306. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/knowledge_builder_repo.py +0 -0
  307. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/memories_repo.py +0 -0
  308. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/problem_runs_repo.py +0 -0
  309. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/snapshots_repo.py +0 -0
  310. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/relational/utility_repo.py +0 -0
  311. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/semantic/__init__.py +0 -0
  312. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/repos/semantic/concept_retrieval_repo.py +0 -0
  313. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/session.py +0 -0
  314. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/db/runtime/uow.py +0 -0
  315. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/embeddings/__init__.py +0 -0
  316. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/embeddings/local_provider.py +0 -0
  317. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/embeddings/prewarm.py +0 -0
  318. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/embeddings/query_vector_search.py +0 -0
  319. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/__init__.py +0 -0
  320. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/__init__.py +0 -0
  321. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/claude.py +0 -0
  322. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/codex.py +0 -0
  323. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/cursor.py +0 -0
  324. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/cursor_statusline_config.py +0 -0
  325. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/inspection.py +0 -0
  326. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/managed_markdown.py +0 -0
  327. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/managed_tree.py +0 -0
  328. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/packaged_assets.py +0 -0
  329. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/paths.py +0 -0
  330. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/service.py +0 -0
  331. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/assets/types.py +0 -0
  332. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/identity/__init__.py +0 -0
  333. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/identity/claude_hook_install.py +0 -0
  334. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/identity/claude_runtime.py +0 -0
  335. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/identity/codex_runtime.py +0 -0
  336. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/identity/compatibility.py +0 -0
  337. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/identity/cursor_statusline.py +0 -0
  338. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/inner_agents/__init__.py +0 -0
  339. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/inner_agents/claude_cli.py +0 -0
  340. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/inner_agents/codex_cli.py +0 -0
  341. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/inner_agents/output_parser.py +0 -0
  342. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/__init__.py +0 -0
  343. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/claude_code.py +0 -0
  344. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/codex.py +0 -0
  345. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/model_usage.py +0 -0
  346. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/normalization.py +0 -0
  347. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/source_discovery.py +0 -0
  348. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/host_apps/transcripts/tool_filter.py +0 -0
  349. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/__init__.py +0 -0
  350. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/init_lock.py +0 -0
  351. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/machine_config_store.py +0 -0
  352. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/operation_registration.py +0 -0
  353. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/paths.py +0 -0
  354. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/recall_mode_store.py +0 -0
  355. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/repo_registration_store.py +0 -0
  356. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/local_state/session_state_file_store.py +0 -0
  357. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/process/__init__.py +0 -0
  358. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/process/episode_sync/__init__.py +0 -0
  359. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/process/episode_sync/autostart.py +0 -0
  360. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/process/episode_sync/launcher.py +0 -0
  361. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/process/episode_sync/status_store.py +0 -0
  362. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/system/__init__.py +0 -0
  363. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/system/clock.py +0 -0
  364. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/system/id_generator.py +0 -0
  365. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/system/package_upgrade.py +0 -0
  366. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/__init__.py +0 -0
  367. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/inner_agent_records.py +0 -0
  368. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/operation_invocations.py +0 -0
  369. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/operation_polling.py +0 -0
  370. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/read_records.py +0 -0
  371. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/recall_records.py +0 -0
  372. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/recorder.py +0 -0
  373. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/records.py +0 -0
  374. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/sink.py +0 -0
  375. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/storage_protocols.py +0 -0
  376. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/sync_records.py +0 -0
  377. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/infrastructure/telemetry/write_records.py +0 -0
  378. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/settings/__init__.py +0 -0
  379. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/settings/defaults/create_policy.yaml +0 -0
  380. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/settings/defaults/read_policy.yaml +0 -0
  381. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/settings/defaults/runtime.yaml +0 -0
  382. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/settings/defaults/thresholds.yaml +0 -0
  383. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/settings/defaults/update_policy.yaml +0 -0
  384. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/settings/internal-agents/defaults.yaml +0 -0
  385. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/__init__.py +0 -0
  386. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/admin.py +0 -0
  387. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/admin_db.py +0 -0
  388. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/admin_diagnose.py +0 -0
  389. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/analytics.py +0 -0
  390. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/cli_runtime.py +0 -0
  391. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/config.py +0 -0
  392. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/db.py +0 -0
  393. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/dsn_resolution.py +0 -0
  394. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/episode_sync_launcher.py +0 -0
  395. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/host_hooks.py +0 -0
  396. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/internal_agent_config.py +0 -0
  397. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/migrations.py +0 -0
  398. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/repos.py +0 -0
  399. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/runtime_context.py +0 -0
  400. {shellbrain-0.1.55 → shellbrain-0.1.57}/app/startup/settings.py +0 -0
  401. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/__init__.py +0 -0
  402. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/_legacy_usage_views.py +0 -0
  403. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/env.py +0 -0
  404. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260226_0001_initial_schema.py +0 -0
  405. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
  406. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
  407. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
  408. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
  409. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
  410. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
  411. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
  412. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260410_0009_frontier_memory_family.py +0 -0
  413. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260414_0010_model_usage_telemetry.py +0 -0
  414. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260414_0011_usage_problem_tokens_multi_solution_metrics.py +0 -0
  415. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260415_0012_read_pack_cost_and_read_roi.py +0 -0
  416. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260421_0013_concept_context_graph.py +0 -0
  417. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260422_0014_concept_read_telemetry.py +0 -0
  418. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260422_0015_problem_runs.py +0 -0
  419. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260508_0016_recall_telemetry.py +0 -0
  420. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260511_0017_inner_agent_invocations.py +0 -0
  421. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260513_0018_knowledge_build_runs.py +0 -0
  422. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260515_0019_scenario_records.py +0 -0
  423. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260516_0020_knowledge_build_observability.py +0 -0
  424. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260519_0021_knowledge_build_watermark_stable.py +0 -0
  425. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260519_0022_update_evidence_links.py +0 -0
  426. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260519_0023_explicit_teach_trigger.py +0 -0
  427. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260519_0024_read_retrieval_latency_indexes.py +0 -0
  428. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260519_0025_repair_recall_source_input_section_constraint.py +0 -0
  429. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260519_0026_repair_knowledge_build_trigger_constraint.py +0 -0
  430. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260519_0027_concept_embeddings.py +0 -0
  431. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260520_0028_knowledge_build_lifecycle.py +0 -0
  432. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260522_0029_remove_frontier_and_memory_anchors.py +0 -0
  433. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260522_0030_concept_lifecycle_events.py +0 -0
  434. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260522_0031_unified_evidence_storage.py +0 -0
  435. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260522_0032_memory_lifecycle_events.py +0 -0
  436. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260522_0033_concept_memory_role_cleanup.py +0 -0
  437. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260522_0034_structural_memory_relations.py +0 -0
  438. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260522_0035_retire_legacy_compatibility_tables.py +0 -0
  439. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260526_0036_shadow_snapshots.py +0 -0
  440. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260606_0037_wiki_summaries.py +0 -0
  441. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/20260815_0038_drop_wiki_summaries.py +0 -0
  442. {shellbrain-0.1.55 → shellbrain-0.1.57}/migrations/versions/__init__.py +0 -0
  443. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/__init__.py +0 -0
  444. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/claude/CLAUDE.md +0 -0
  445. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/claude/skills/shellbrain/SKILL.md +0 -0
  446. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
  447. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/AGENTS.md +0 -0
  448. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/clean-architecture/SKILL.md +0 -0
  449. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/clean-code/SKILL.md +0 -0
  450. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain/SKILL.md +0 -0
  451. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain/agents/openai.yaml +0 -0
  452. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain/assets/shellbrain-large.svg +0 -0
  453. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain/assets/shellbrain-small.svg +0 -0
  454. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain/assets/shellbrain_logo.png +0 -0
  455. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain/references/session-workflow.md +0 -0
  456. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
  457. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +0 -0
  458. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +0 -0
  459. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
  460. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/cursor/skills/shellbrain/SKILL.md +0 -0
  461. {shellbrain-0.1.55 → shellbrain-0.1.57}/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
  462. {shellbrain-0.1.55 → shellbrain-0.1.57}/setup.cfg +0 -0
  463. {shellbrain-0.1.55 → shellbrain-0.1.57}/shellbrain.egg-info/dependency_links.txt +0 -0
  464. {shellbrain-0.1.55 → shellbrain-0.1.57}/shellbrain.egg-info/entry_points.txt +0 -0
  465. {shellbrain-0.1.55 → shellbrain-0.1.57}/shellbrain.egg-info/requires.txt +0 -0
  466. {shellbrain-0.1.55 → shellbrain-0.1.57}/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.55
3
+ Version: 0.1.57
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
@@ -31,15 +31,5 @@ class BackupManifest:
31
31
  compression: str
32
32
 
33
33
 
34
- @dataclass(frozen=True)
35
- class BackupVerificationResult:
36
- """Stable result for a verified backup artifact."""
37
-
38
- backup_id: BackupId
39
- artifact_sha256: str
40
- artifact_size_bytes: int
41
- verified: bool
42
-
43
-
44
34
  class BackupPolicyError(RuntimeError):
45
35
  """Raised when a backup or restore request violates core safety policy."""
@@ -159,14 +159,6 @@ class ConceptCreatedBy(str, Enum):
159
159
  IMPORT = "import"
160
160
 
161
161
 
162
- class GraphPatchStatus(str, Enum):
163
- """Allowed graph patch lifecycle states."""
164
-
165
- PENDING = "pending"
166
- APPLIED = "applied"
167
- REJECTED = "rejected"
168
-
169
-
170
162
  @dataclass(frozen=True, kw_only=True)
171
163
  class Concept:
172
164
  """One durable concept container."""
@@ -311,18 +303,3 @@ class ConceptEvidence:
311
303
  transcript_ref: str | None = None
312
304
  note: str | None = None
313
305
  created_at: datetime | None = None
314
-
315
-
316
- @dataclass(frozen=True, kw_only=True)
317
- class GraphPatch:
318
- """Minimal reserved future graph-patch proposal record."""
319
-
320
- id: str
321
- repo_id: str
322
- schema_version: str
323
- status: GraphPatchStatus
324
- proposed_by: ConceptCreatedBy
325
- operations_json: list[dict[str, Any]]
326
- evidence_summary: str | None = None
327
- created_at: datetime | None = None
328
- applied_at: datetime | None = None
@@ -1,4 +1,4 @@
1
- """This module defines episodic session entities and transfer provenance entities."""
1
+ """This module defines episodic session entities."""
2
2
 
3
3
  from dataclasses import dataclass
4
4
  from datetime import datetime
@@ -30,8 +30,6 @@ class Episode:
30
30
  repo_id: str
31
31
  host_app: str
32
32
  thread_id: str | None = None
33
- title: str | None = None
34
- objective: str | None = None
35
33
  status: EpisodeStatus = EpisodeStatus.ACTIVE
36
34
  started_at: datetime | None = None
37
35
  ended_at: datetime | None = None
@@ -77,18 +75,3 @@ class EpisodeEvent:
77
75
  source: EpisodeEventSource
78
76
  content: str
79
77
  created_at: datetime | None = None
80
-
81
-
82
- @dataclass(kw_only=True)
83
- class SessionTransfer:
84
- """This dataclass models immutable cross-session transfer provenance."""
85
-
86
- id: str
87
- repo_id: str
88
- from_episode_id: str
89
- to_episode_id: str
90
- event_id: str
91
- transfer_kind: str
92
- rationale: str | None = None
93
- transferred_by: str | None = None
94
- created_at: datetime | None = None
@@ -7,10 +7,8 @@ from datetime import datetime
7
7
  from enum import Enum
8
8
 
9
9
  from app.core.entities.ids import (
10
- AssociationEdgeId,
11
10
  EvidenceId,
12
11
  EvidenceRefText,
13
- MemoryId,
14
12
  RepoId,
15
13
  )
16
14
 
@@ -147,20 +145,6 @@ class EvidenceLinkView:
147
145
  created_at: datetime | None = None
148
146
 
149
147
 
150
- @dataclass(kw_only=True)
151
- class MemoryEvidenceLink:
152
- """This dataclass models a many-to-many link between shellbrain and evidence."""
153
-
154
- memory_id: MemoryId
155
- evidence_id: EvidenceId
156
-
157
-
158
- @dataclass(kw_only=True)
159
- class AssociationEdgeEvidenceLink:
160
- """This dataclass models a many-to-many link between association edges and evidence."""
161
-
162
- edge_id: AssociationEdgeId
163
- evidence_id: EvidenceId
164
148
 
165
149
 
166
150
  _SOURCE_REQUIRED_FIELD: dict[EvidenceSourceKind, str] = {
@@ -26,7 +26,6 @@ class GuidanceDecision:
26
26
  problem_id: str | None = None
27
27
  memory_ids: list[str] = field(default_factory=list)
28
28
  vote_scale_hint: dict[str, float] | None = None
29
- setup_hint: str | None = None
30
29
 
31
30
  def to_payload(self) -> dict[str, Any]:
32
31
  """Serialize one guidance decision into the public response shape."""
@@ -42,6 +41,4 @@ class GuidanceDecision:
42
41
  payload["memory_ids"] = list(self.memory_ids)
43
42
  if self.vote_scale_hint is not None:
44
43
  payload["vote_scale_hint"] = dict(self.vote_scale_hint)
45
- if self.setup_hint is not None:
46
- payload["setup_hint"] = self.setup_hint
47
44
  return payload
@@ -17,17 +17,6 @@ class IdentityTrustLevel(str, Enum):
17
17
  SUPPORTED_HOST_APPS = frozenset({"codex", "claude_code", "cursor"})
18
18
 
19
19
 
20
- def build_canonical_caller_id(
21
- *, host_app: str, host_session_key: str, agent_key: str | None = None
22
- ) -> str:
23
- """Build the canonical caller identifier from one host session and optional agent key."""
24
-
25
- canonical = f"{host_app}:{host_session_key}"
26
- if agent_key:
27
- canonical = f"{canonical}:agent:{agent_key}"
28
- return canonical
29
-
30
-
31
20
  @dataclass(frozen=True, kw_only=True)
32
21
  class CallerIdentity:
33
22
  """Canonical caller identity used to scope episodes, session state, and guidance."""
@@ -57,11 +46,9 @@ class CallerIdentity:
57
46
  object.__setattr__(
58
47
  self, "trust_level", IdentityTrustLevel(str(self.trust_level))
59
48
  )
60
- canonical_id = build_canonical_caller_id(
61
- host_app=host_app,
62
- host_session_key=host_session_key,
63
- agent_key=self.agent_key,
64
- )
49
+ canonical_id = f"{host_app}:{host_session_key}"
50
+ if self.agent_key:
51
+ canonical_id = f"{canonical_id}:agent:{self.agent_key}"
65
52
  if self.canonical_id is not None and self.canonical_id != canonical_id:
66
53
  raise ValueError(
67
54
  "canonical_id must match host_app, host_session_key, and agent_key"
@@ -10,9 +10,7 @@ RepoId = NewType("RepoId", str)
10
10
  EpisodeId = NewType("EpisodeId", str)
11
11
  EvidenceRefText = NewType("EvidenceRefText", str)
12
12
  EvidenceId = NewType("EvidenceId", str)
13
- InvocationId = NewType("InvocationId", str)
14
13
  AssociationEdgeId = NewType("AssociationEdgeId", str)
15
14
 
16
15
  Confidence = NewType("Confidence", float)
17
16
  Salience = NewType("Salience", float)
18
- UtilityVote = NewType("UtilityVote", float)
@@ -34,33 +34,11 @@ class MemoryKind(str, Enum):
34
34
 
35
35
  return self in {MemoryKind.SOLUTION, MemoryKind.FAILED_TACTIC}
36
36
 
37
- @property
38
- def is_mature(self) -> bool:
39
- """Return whether this kind belongs to the durable mature-memory set."""
40
-
41
- return self in MATURE_MEMORY_KINDS
42
-
43
-
44
- MATURE_MEMORY_KINDS: Final[tuple[MemoryKind, ...]] = (
45
- MemoryKind.PROBLEM,
46
- MemoryKind.SOLUTION,
47
- MemoryKind.FAILED_TACTIC,
48
- MemoryKind.FACT,
49
- MemoryKind.PREFERENCE,
50
- MemoryKind.CHANGE,
51
- )
52
37
  MATURE_MEMORY_KIND_VALUES: Final[tuple[str, ...]] = tuple(
53
- kind.value for kind in MATURE_MEMORY_KINDS
38
+ kind.value for kind in MemoryKind
54
39
  )
55
40
 
56
41
 
57
- def is_mature_memory_kind(kind: MemoryKind | str) -> bool:
58
- """Return whether one kind belongs to the mature durable-memory set."""
59
-
60
- normalized_kind = kind if isinstance(kind, MemoryKind) else MemoryKind(kind)
61
- return normalized_kind.is_mature
62
-
63
-
64
42
  class MemoryScope(str, Enum):
65
43
  """This enum defines shellbrain visibility scope."""
66
44
 
@@ -3,14 +3,6 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from dataclasses import dataclass, field
6
- from enum import Enum
7
-
8
-
9
- class SessionStateResetReason(str, Enum):
10
- """Reasons a working session may be reset while preserving caller identity metadata."""
11
-
12
- IDLE_EXPIRED = "idle_expired"
13
- CALLER_SWITCHED = "caller_switched"
14
6
 
15
7
 
16
8
  @dataclass(kw_only=True)
@@ -32,13 +32,6 @@ class ShadowGitPathChangeStatus(str, Enum):
32
32
  RENAMED = "renamed"
33
33
 
34
34
 
35
- class CodeDeltaContextStatus(str, Enum):
36
- """Public availability states for code-delta context."""
37
-
38
- AVAILABLE = "available"
39
- UNAVAILABLE = "unavailable"
40
-
41
-
42
35
  class CodeDeltaUnavailableReason(str, Enum):
43
36
  """Expected reasons an event window cannot expose code-delta context."""
44
37
 
@@ -174,7 +167,6 @@ class ShadowGitCaptureResult:
174
167
  shadow_commit_sha: str | None
175
168
  parent_shadow_commit_sha: str | None
176
169
  changed_paths: tuple[str, ...]
177
- tree_sha: str | None = None
178
170
 
179
171
 
180
172
  @dataclass(frozen=True, kw_only=True)
@@ -212,13 +204,10 @@ class AvailableCodeDeltaContext:
212
204
  final_shadow_commit_sha: str
213
205
  patch_sha: str
214
206
  path_changes: tuple[ShadowGitPathChange, ...]
215
- status: CodeDeltaContextStatus = CodeDeltaContextStatus.AVAILABLE
216
207
 
217
208
  def __post_init__(self) -> None:
218
209
  """Reject invalid available-context states."""
219
210
 
220
- if self.status is not CodeDeltaContextStatus.AVAILABLE:
221
- raise ValueError("available code delta context requires available status")
222
211
  for field_name in (
223
212
  "base_snapshot_id",
224
213
  "final_snapshot_id",
@@ -249,7 +238,7 @@ class AvailableCodeDeltaContext:
249
238
  """Return the stable JSON payload for bounded events."""
250
239
 
251
240
  return {
252
- "status": self.status.value,
241
+ "status": "available",
253
242
  "base_snapshot_id": self.base_snapshot_id,
254
243
  "final_snapshot_id": self.final_snapshot_id,
255
244
  "base_shadow_commit_sha": self.base_shadow_commit_sha,
@@ -267,22 +256,17 @@ class UnavailableCodeDeltaContext:
267
256
  """Expected absence of code-delta evidence for one event window."""
268
257
 
269
258
  reason: CodeDeltaUnavailableReason
270
- status: CodeDeltaContextStatus = CodeDeltaContextStatus.UNAVAILABLE
271
259
 
272
260
  def __post_init__(self) -> None:
273
261
  """Reject unavailable-context states without a typed reason."""
274
262
 
275
- if self.status is not CodeDeltaContextStatus.UNAVAILABLE:
276
- raise ValueError(
277
- "unavailable code delta context requires unavailable status"
278
- )
279
263
  if not isinstance(self.reason, CodeDeltaUnavailableReason):
280
264
  raise ValueError("reason must be a CodeDeltaUnavailableReason")
281
265
 
282
266
  def to_response_data(self) -> dict[str, str]:
283
267
  """Return the stable JSON payload for bounded events."""
284
268
 
285
- return {"status": self.status.value, "reason": self.reason.value}
269
+ return {"status": "unavailable", "reason": self.reason.value}
286
270
 
287
271
 
288
272
  CodeDeltaContext = AvailableCodeDeltaContext | UnavailableCodeDeltaContext
@@ -16,12 +16,9 @@ class ErrorCode(str, Enum):
16
16
  NOT_FOUND = "not_found"
17
17
  CONFLICT = "conflict"
18
18
  INTERNAL_ERROR = "internal_error"
19
- HOST_IDENTITY_UNAVAILABLE = "host_identity_unavailable"
20
19
  HOST_IDENTITY_UNSUPPORTED = "host_identity_unsupported"
21
20
  HOST_IDENTITY_DRIFTED = "host_identity_drifted"
22
21
  HOST_HOOK_MISSING = "host_hook_missing"
23
- TRANSCRIPT_SOURCE_NOT_FOUND = "transcript_source_not_found"
24
- INNER_AGENT_ERROR = "inner_agent_error"
25
22
 
26
23
 
27
24
  class ErrorDetail(BaseModel):
@@ -4,13 +4,13 @@ from typing import Any
4
4
 
5
5
  from app.core.use_cases.memories.add.result import CreatePlanIds
6
6
  from app.core.use_cases.memories.effect_plan import (
7
+ EffectType,
7
8
  AssociationUpsertAndObserveEffectParams,
8
9
  MemoryAddEffectParams,
9
10
  MemoryEmbeddingUpsertEffectParams,
10
11
  EvidenceAttachEffectParams,
11
12
  PlannedEffect,
12
13
  StructuralProblemLinkEffectParams,
13
- make_side_effect,
14
14
  )
15
15
  from app.core.entities.associations import AssociationSourceMode, AssociationState
16
16
  from app.core.entities.memories import (
@@ -34,8 +34,8 @@ def build_create_plan(
34
34
  memory_id = plan_ids.memory_id
35
35
  evidence_refs = EvidenceRefs.required(memory["evidence_refs"]).values
36
36
  plan: list[PlannedEffect] = [
37
- make_side_effect(
38
- "memory.create",
37
+ PlannedEffect(
38
+ EffectType.MEMORY_CREATE,
39
39
  MemoryAddEffectParams(
40
40
  memory_id=memory_id,
41
41
  repo_id=repo_id,
@@ -44,16 +44,16 @@ def build_create_plan(
44
44
  text=memory["text"],
45
45
  ),
46
46
  ),
47
- make_side_effect(
48
- "memory_embedding.upsert",
47
+ PlannedEffect(
48
+ EffectType.MEMORY_EMBEDDING_UPSERT,
49
49
  MemoryEmbeddingUpsertEffectParams(
50
50
  memory_id=memory_id,
51
51
  model=embedding_model,
52
52
  text=memory["text"],
53
53
  ),
54
54
  ),
55
- make_side_effect(
56
- "evidence.attach",
55
+ PlannedEffect(
56
+ EffectType.EVIDENCE_ATTACH,
57
57
  EvidenceAttachEffectParams(
58
58
  memory_id=memory_id,
59
59
  repo_id=repo_id,
@@ -66,8 +66,8 @@ def build_create_plan(
66
66
  if MemoryKind(memory["kind"]).requires_problem_link and problem_id:
67
67
  relation_id = _required_structural_relation_id(plan_ids, 0)
68
68
  plan.append(
69
- make_side_effect(
70
- "structural_problem_link.create",
69
+ PlannedEffect(
70
+ EffectType.STRUCTURAL_PROBLEM_LINK_CREATE,
71
71
  StructuralProblemLinkEffectParams(
72
72
  relation_id=relation_id,
73
73
  repo_id=repo_id,
@@ -89,8 +89,8 @@ def build_create_plan(
89
89
  confidence = ConfidenceValue(association["confidence"]).value
90
90
  salience = SalienceValue(association["salience"]).value
91
91
  plan.append(
92
- make_side_effect(
93
- "association.upsert_and_observe",
92
+ PlannedEffect(
93
+ EffectType.ASSOCIATION_UPSERT_AND_OBSERVE,
94
94
  AssociationUpsertAndObserveEffectParams(
95
95
  repo_id=repo_id,
96
96
  edge_id=plan_ids.association_edge_ids[index],
@@ -3,13 +3,13 @@
3
3
  from typing import Any
4
4
 
5
5
  from app.core.use_cases.memories.effect_plan import (
6
+ EffectType,
6
7
  AssociationUpsertAndObserveEffectParams,
7
8
  EvidenceSourceEffectParams,
8
9
  StructuralFactChangeEffectParams,
9
10
  MemoryLifecycleUpdateEffectParams,
10
11
  PlannedEffect,
11
12
  UtilityObservationAppendEffectParams,
12
- make_side_effect,
13
13
  )
14
14
  from app.core.use_cases.memories.update.result import UpdatePlanIds
15
15
  from app.core.entities.associations import AssociationSourceMode, AssociationState
@@ -33,8 +33,8 @@ def build_update_plan(
33
33
 
34
34
  if update_type == "update_lifecycle":
35
35
  return [
36
- make_side_effect(
37
- "memory.lifecycle_update",
36
+ PlannedEffect(
37
+ EffectType.MEMORY_LIFECYCLE_UPDATE,
38
38
  MemoryLifecycleUpdateEffectParams(
39
39
  event_id=_required(
40
40
  plan_ids.memory_lifecycle_event_id,
@@ -67,8 +67,8 @@ def build_update_plan(
67
67
  if update_type == "utility_vote":
68
68
  evidence_refs = EvidenceRefs.optional(update.get("evidence_refs", [])).values
69
69
  return [
70
- make_side_effect(
71
- "utility_observation.append",
70
+ PlannedEffect(
71
+ EffectType.UTILITY_OBSERVATION_APPEND,
72
72
  UtilityObservationAppendEffectParams(
73
73
  id=_required(
74
74
  plan_ids.utility_observation_id, "utility_observation_id"
@@ -86,8 +86,8 @@ def build_update_plan(
86
86
  if update_type == "fact_update_link":
87
87
  evidence_refs = EvidenceRefs.optional(update.get("evidence_refs", [])).values
88
88
  return [
89
- make_side_effect(
90
- "structural_fact_change.create",
89
+ PlannedEffect(
90
+ EffectType.STRUCTURAL_FACT_CHANGE_CREATE,
91
91
  StructuralFactChangeEffectParams(
92
92
  repo_id=repo_id,
93
93
  old_fact_id=update["old_fact_id"],
@@ -106,8 +106,8 @@ def build_update_plan(
106
106
  salience = SalienceValue(update["salience"]).value
107
107
  evidence_refs = EvidenceRefs.required(update["evidence_refs"]).values
108
108
  return [
109
- make_side_effect(
110
- "association.upsert_and_observe",
109
+ PlannedEffect(
110
+ EffectType.ASSOCIATION_UPSERT_AND_OBSERVE,
111
111
  AssociationUpsertAndObserveEffectParams(
112
112
  repo_id=repo_id,
113
113
  edge_id=_required(
@@ -36,9 +36,6 @@ class BM25ScoredDocument:
36
36
  def score_documents(
37
37
  query_terms: Sequence[str],
38
38
  documents: Sequence[BM25Document],
39
- *,
40
- k1: float = _K1,
41
- b: float = _B,
42
39
  ) -> list[BM25ScoredDocument]:
43
40
  """Return BM25 scores and weighted query coverage for partially matching documents."""
44
41
 
@@ -81,12 +78,12 @@ def score_documents(
81
78
  score = 0.0
82
79
  matched_query_weight = 0.0
83
80
  document_length = len(document.terms)
84
- normalization = k1 * (1 - b + b * document_length / average_length)
81
+ normalization = _K1 * (1 - _B + _B * document_length / average_length)
85
82
  for term in matched_terms:
86
83
  inverse_document_frequency = inverse_document_frequencies[term]
87
84
  term_frequency = frequencies[term]
88
85
  score += inverse_document_frequency * (
89
- (term_frequency * (k1 + 1)) / (term_frequency + normalization)
86
+ (term_frequency * (_K1 + 1)) / (term_frequency + normalization)
90
87
  )
91
88
  matched_query_weight += inverse_document_frequency
92
89
 
@@ -7,11 +7,6 @@ from app.core.policies.retrieval.ontology_semantics import why_included_for_expa
7
7
 
8
8
 
9
9
  _BUCKET_ORDER = ("direct", "explicit", "implicit")
10
- _SECTION_NAMES = {
11
- "direct": "direct",
12
- "explicit": "explicit_related",
13
- "implicit": "implicit_related",
14
- }
15
10
  _BUCKET_PRIORITY = {
16
11
  bucket_name: index for index, bucket_name in enumerate(_BUCKET_ORDER)
17
12
  }
@@ -43,8 +43,6 @@ _STOPWORDS = frozenset(
43
43
  class LexicalQuery:
44
44
  """Normalized lexical query terms used by the keyword retrieval lane."""
45
45
 
46
- raw_terms: tuple[str, ...]
47
- informative_terms: tuple[str, ...]
48
46
  terms: tuple[str, ...]
49
47
  uses_stopword_fallback: bool
50
48
 
@@ -68,14 +66,11 @@ def build_lexical_query(query_text: str) -> LexicalQuery:
68
66
  """Build a normalized lexical query with strict informative-term semantics."""
69
67
 
70
68
  normalized = normalize_lexical_text(query_text)
71
- raw_terms = _unique_terms(normalized.raw_terms)
72
- informative_terms = _unique_terms(normalized.informative_terms)
69
+ raw_terms = tuple(dict.fromkeys(normalized.raw_terms))
70
+ informative_terms = tuple(dict.fromkeys(normalized.informative_terms))
73
71
  uses_stopword_fallback = not informative_terms and bool(raw_terms)
74
- terms = raw_terms if uses_stopword_fallback else informative_terms
75
72
  return LexicalQuery(
76
- raw_terms=raw_terms,
77
- informative_terms=informative_terms,
78
- terms=terms,
73
+ terms=raw_terms if uses_stopword_fallback else informative_terms,
79
74
  uses_stopword_fallback=uses_stopword_fallback,
80
75
  )
81
76
 
@@ -88,16 +83,3 @@ def normalize_lexical_text(text: str) -> NormalizedLexicalText:
88
83
  return NormalizedLexicalText(
89
84
  raw_terms=raw_terms, informative_terms=informative_terms
90
85
  )
91
-
92
-
93
- def _unique_terms(terms: tuple[str, ...]) -> tuple[str, ...]:
94
- """Deduplicate terms while preserving original order."""
95
-
96
- seen: set[str] = set()
97
- ordered: list[str] = []
98
- for term in terms:
99
- if term in seen:
100
- continue
101
- seen.add(term)
102
- ordered.append(term)
103
- return tuple(ordered)
@@ -5,28 +5,23 @@ from __future__ import annotations
5
5
  from collections import Counter
6
6
  from typing import Any, Iterable, Mapping
7
7
 
8
+ from app.core.entities.memories import (
9
+ DEFAULT_RETRIEVABLE_MEMORY_STATUS_VALUES,
10
+ MemoryLifecycleStatus,
11
+ )
8
12
 
9
- ACTIVE_STATUS = "active"
10
- MAYBE_STALE_STATUS = "maybe_stale"
11
- STALE_STATUS = "stale"
12
- SUPERSEDED_STATUS = "superseded"
13
- WRONG_STATUS = "wrong"
14
- ARCHIVED_STATUS = "archived"
15
13
 
16
- POSITIVE_LIFECYCLE_STATUSES = frozenset(
17
- {ACTIVE_STATUS, MAYBE_STALE_STATUS, STALE_STATUS}
18
- )
19
- NO_POSITIVE_RETRIEVAL_STATUSES = frozenset(
20
- {SUPERSEDED_STATUS, WRONG_STATUS, ARCHIVED_STATUS}
21
- )
14
+ ACTIVE_STATUS = MemoryLifecycleStatus.ACTIVE.value
15
+ MAYBE_STALE_STATUS = MemoryLifecycleStatus.MAYBE_STALE.value
16
+ STALE_STATUS = MemoryLifecycleStatus.STALE.value
17
+ SUPERSEDED_STATUS = MemoryLifecycleStatus.SUPERSEDED.value
18
+ WRONG_STATUS = MemoryLifecycleStatus.WRONG.value
19
+ ARCHIVED_STATUS = MemoryLifecycleStatus.ARCHIVED.value
20
+
21
+ POSITIVE_LIFECYCLE_STATUSES = frozenset(DEFAULT_RETRIEVABLE_MEMORY_STATUS_VALUES)
22
22
 
23
23
  LIFECYCLE_RETRIEVAL_MULTIPLIERS: Mapping[str, float] = {
24
- ACTIVE_STATUS: 1.0,
25
- MAYBE_STALE_STATUS: 0.65,
26
- STALE_STATUS: 0.25,
27
- SUPERSEDED_STATUS: 0.0,
28
- WRONG_STATUS: 0.0,
29
- ARCHIVED_STATUS: 0.0,
24
+ status.value: status.retrieval_multiplier for status in MemoryLifecycleStatus
30
25
  }
31
26
 
32
27
  BUNDLE_FRESHNESS_MULTIPLIERS: Mapping[str, float] = {
@@ -90,14 +85,6 @@ def lifecycle_retrieval_multiplier(status: Any) -> float:
90
85
  """Return the default positive retrieval multiplier for one lifecycle status."""
91
86
 
92
87
  return LIFECYCLE_RETRIEVAL_MULTIPLIERS[normalize_lifecycle_status(status)]
93
-
94
-
95
- def has_positive_lifecycle_signal(status: Any) -> bool:
96
- """Return whether a lifecycle status can contribute normal retrieval signal."""
97
-
98
- return normalize_lifecycle_status(status) in POSITIVE_LIFECYCLE_STATUSES
99
-
100
-
101
88
  def is_active_lifecycle(status: Any) -> bool:
102
89
  """Return whether a lifecycle status is active."""
103
90
 
@@ -138,6 +125,16 @@ def concept_bundle_retrieval_multiplier(statuses: Iterable[Any]) -> float:
138
125
  return BUNDLE_FRESHNESS_MULTIPLIERS[dominant_lifecycle_status(statuses)]
139
126
 
140
127
 
128
+ def bundle_lifecycle_statuses(bundle: Mapping[str, Any]) -> tuple[str, ...]:
129
+ """Return lifecycle status values across every truth-bearing concept facet."""
130
+
131
+ return tuple(
132
+ record.lifecycle.status.value
133
+ for key in ("claims", "relations", "groundings", "memory_links")
134
+ for record in bundle[key]
135
+ )
136
+
137
+
141
138
  def aggregate_currentness_payload(
142
139
  statuses: Iterable[Any], *, record_label: str
143
140
  ) -> dict[str, str]:
@@ -4,11 +4,10 @@ from typing import Any
4
4
 
5
5
 
6
6
  def score_candidates(
7
- candidates: dict[str, list[dict[str, Any]]], payload: dict[str, Any]
7
+ candidates: dict[str, list[dict[str, Any]]],
8
8
  ) -> dict[str, list[dict[str, Any]]]:
9
9
  """This function computes base scores used for bucket ranking and spillover."""
10
10
 
11
- _ = payload
12
11
  return {
13
12
  "direct": _score_direct_candidates(candidates.get("direct", [])),
14
13
  "explicit": _score_explicit_candidates(candidates.get("explicit", [])),
@@ -12,7 +12,6 @@ from app.core.entities.concepts import (
12
12
  ConceptLifecycleTargetType,
13
13
  ConceptMemoryLink,
14
14
  ConceptRelation,
15
- GraphPatch,
16
15
  )
17
16
 
18
17
 
@@ -84,10 +83,6 @@ class IConceptsRepo(ABC):
84
83
  ) -> ConceptLifecycleEvent:
85
84
  """This method appends one auditable concept lifecycle transition."""
86
85
 
87
- @abstractmethod
88
- def create_graph_patch(self, patch: GraphPatch) -> GraphPatch:
89
- """This method stores one future graph-patch proposal record."""
90
-
91
86
  @abstractmethod
92
87
  def get_concept_bundle(
93
88
  self,