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.
- {shellbrain-0.1.16 → shellbrain-0.1.18}/PKG-INFO +1 -1
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/context_pack_builder.py +0 -1
- shellbrain-0.1.18/app/onboarding_assets/claude/CLAUDE.md +43 -0
- shellbrain-0.1.18/app/onboarding_assets/claude/skills/shellbrain-session-start/SKILL.md +151 -0
- shellbrain-0.1.18/app/onboarding_assets/codex/AGENTS.md +43 -0
- shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-session-start/SKILL.md +158 -0
- shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-session-start/agents/openai.yaml +6 -0
- shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-session-start/assets/shellbrain_logo.png +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-session-start/references/request-shapes.md +17 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-session-start/references/session-workflow.md +23 -6
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-usage-review/agents/openai.yaml +2 -0
- shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg +11 -0
- shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png +0 -0
- shellbrain-0.1.18/app/onboarding_assets/cursor/skills/shellbrain-session-start/SKILL.md +93 -0
- shellbrain-0.1.18/app/periphery/admin/agent_behavior_analysis.py +527 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/doctor.py +2 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/init.py +2 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/onboarding/host_assets.py +163 -6
- {shellbrain-0.1.16 → shellbrain-0.1.18}/pyproject.toml +2 -1
- {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/PKG-INFO +1 -1
- {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/SOURCES.txt +6 -0
- shellbrain-0.1.16/app/onboarding_assets/claude/skills/shellbrain-session-start/SKILL.md +0 -543
- shellbrain-0.1.16/app/onboarding_assets/codex/shellbrain-session-start/SKILL.md +0 -134
- shellbrain-0.1.16/app/onboarding_assets/codex/shellbrain-session-start/agents/openai.yaml +0 -6
- shellbrain-0.1.16/app/onboarding_assets/cursor/skills/shellbrain-session-start/SKILL.md +0 -51
- {shellbrain-0.1.16 → shellbrain-0.1.18}/README.md +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/__main__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/admin_db.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/config.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/create_policy.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/db.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/embeddings.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/home.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/migrations.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/read_policy.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/repos.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/retrieval.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/thresholds.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/update_policy.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/boot/use_cases.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/create_policy.yaml +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/read_policy.yaml +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/runtime.yaml +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/thresholds.yaml +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/defaults/update_policy.yaml +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/config/loader.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/contracts/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/contracts/errors.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/contracts/requests.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/contracts/responses.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/associations.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/episodes.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/evidence.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/facts.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/guidance.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/identity.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/memory.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/runtime_context.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/session_state.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/telemetry.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/entities/utility.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/clock.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/config.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/embeddings.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/idgen.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/repos.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/retrieval.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/session_state_store.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/interfaces/unit_of_work.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/_shared/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/_shared/executor.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/_shared/side_effects.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/create_policy/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/create_policy/pipeline.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/bm25.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/expansion.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/fusion_rrf.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/lexical_query.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/pipeline.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/scenario_lift.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/scoring.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/seed_retrieval.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/read_policy/utility_prior.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/update_policy/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/policies/update_policy/pipeline.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/build_guidance.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/create_memory.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/manage_session_state.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/read_memory.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/record_episode_sync_telemetry.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/record_operation_telemetry.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/sync_episode.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/core/use_cases/update_memory.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/env.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260226_0001_initial_schema.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260312_0002_add_hard_invariants.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260312_0003_drop_create_confidence.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260313_0004_episode_sync_hardening.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260313_0005_evidence_episode_event_refs.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260318_0006_usage_telemetry_schema.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260319_0007_identity_session_guidance.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/20260320_0008_instance_metadata_and_backup_safety.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/migrations/versions/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/claude/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-session-start/assets/shellbrain-large.svg +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-session-start/assets/shellbrain-small.svg +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/codex/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/onboarding_assets/cursor/skills/shellbrain-usage-review/SKILL.md +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/analytics.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/analytics_diagnostics.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/analytics_queries.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/backup.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/destructive_guard.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/external_runtime.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/init_errors.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/instance_guard.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/machine_state.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/managed_runtime.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/privileges.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/repo_state.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/restore.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/storage_setup.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/admin/upgrade.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/handlers.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/hydration.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/main.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/presenter_json.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/cli/schema_validation.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/engine.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/associations.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/episodes.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/evidence.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/experiences.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/instance_metadata.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/memories.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/metadata.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/registry.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/telemetry.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/utility.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/models/views.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/associations_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/episodes_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/evidence_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/experiences_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/memories_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/read_policy_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/telemetry_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/relational/utility_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/semantic/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/semantic/keyword_retrieval_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/repos/semantic/semantic_retrieval_repo.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/session.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/db/uow.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/embeddings/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/embeddings/local_provider.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/embeddings/query_vector_search.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/claude_code.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/codex.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/cursor.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/launcher.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/normalization.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/poller.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/poller_lock.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/source_discovery.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/episodes/tool_filter.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/claude_hook_install.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/claude_runtime.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/codex_runtime.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/compatibility.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/identity/resolver.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/artifacts.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/browser.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/queries.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/render_html.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/metrics/service.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/onboarding/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/session_state/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/session_state/file_store.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/telemetry/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/telemetry/operation_summary.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/telemetry/session_selection.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/telemetry/sync_summary.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/validation/__init__.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/validation/integrity_validation.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/app/periphery/validation/semantic_validation.py +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/setup.cfg +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/dependency_links.txt +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/entry_points.txt +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/requires.txt +0 -0
- {shellbrain-0.1.16 → shellbrain-0.1.18}/shellbrain.egg-info/top_level.txt +0 -0
|
@@ -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."
|
shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-session-start/assets/shellbrain_logo.png
ADDED
|
Binary file
|
|
@@ -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
|
-
|
|
120
|
+
Maintain a mental summary of the current subproblem as a tuple: `goal | surface | obstacle | hypothesis`.
|
|
121
121
|
|
|
122
|
-
|
|
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
|
-
|
|
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."
|
shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain-small.svg
ADDED
|
@@ -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>
|
shellbrain-0.1.18/app/onboarding_assets/codex/shellbrain-usage-review/assets/shellbrain_logo.png
ADDED
|
Binary file
|
|
@@ -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.
|