feat(bob): add memory sharing with improvements#199
feat(bob): add memory sharing with improvements#199visahak merged 42 commits intoAgentToolkit:mainfrom
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR introduces a comprehensive entity-sharing system for Bob's evolve-lite integration, adding four new skills (publish, subscribe, unsubscribe, sync) to enable guidelines extraction, publishing to public repositories, subscription to others' guidelines, and synchronization of subscribed content, alongside corresponding documentation, shared library infrastructure updates, and integration tests. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Script as Publish Script
participant FS as File System
participant Git as Git Repo
participant Config as Config/Audit
User->>Script: Run publish.py<br/>--entity {name}<br/>--user {user}
Script->>Config: Load evolve.config.yaml
Script->>FS: Read private entity<br/>.evolve/entities/guideline/
Script->>FS: Update frontmatter<br/>(visibility, published_at, owner)
Script->>FS: Write to public location<br/>.evolve/public/guideline/
Script->>FS: Delete source file
Script->>Config: Append audit log<br/>(action=publish)
Script->>Git: Stage & commit<br/>.evolve/public/
Git->>Git: Push to remote origin
Git-->>User: Published guidelines accessible
sequenceDiagram
participant User
participant Script as Subscribe Script
participant Remote as Remote Repo
participant FS as File System
participant Config as Config/Audit
User->>Script: Run subscribe.py<br/>--name {name}<br/>--remote {url}
Script->>Config: Load/create evolve.config.yaml
Script->>Config: Validate subscription<br/>not duplicate
Script->>Remote: Git clone --depth 1<br/>--branch {branch}
Remote->>FS: Clone to<br/>.evolve/subscribed/{name}
Script->>FS: Mirror entities to<br/>.evolve/entities/subscribed/{name}/
Script->>Config: Add subscription record<br/>name, remote, branch
Script->>Config: Append audit log<br/>(action=subscribe)
Script-->>User: Subscription created
sequenceDiagram
participant User
participant Script as Retrieve Script
participant FS as File System
User->>Script: Run retrieve_entities.py
Script->>FS: Find entities dir
Script->>FS: Load **/*.md from<br/>.evolve/entities/
Script->>FS: Load **/*.md from<br/>.evolve/public/ (if exists)
Script->>FS: Detect _source<br/>from subscribed/ path
Script->>Script: Parse markdown→entity
Script->>Script: Format for output<br/>with [from: {source}]
Script->>User: Print markdown report
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes The changes introduce a substantial new subsystem with multiple interacting scripts, shared library updates with behavioral modifications, extensive documentation, and broad test coverage across heterogeneous file types and purposes. Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
f15cc11 to
3a4a990
Compare
ee5f6ed to
040c5c4
Compare
c097d50 to
fa6e400
Compare
75de2b1 to
3f93574
Compare
f95d5a4 to
798ee8c
Compare
|
Only repository collaborators, contributors, or members can run CodeRabbit commands. |
798ee8c to
ca2eff2
Compare
|
Finally the bob version is ready for review. will continue testing it. |
|
@illeatmyhat can you test this PR, I like to merge it so we can have #218 on top of it. |
Ensure config operations and file deletions use consistent paths when EVOLVE_DIR is overridden
- Validate entity is simple basename before path resolution in publish.py - Catch UnicodeDecodeError in retrieve_entities.py to prevent abort - Derive project_root from EVOLVE_DIR in unsubscribe and sync for consistency
- Remove --sources filtering feature from retrieve_entities.py - Feature was documented but never actually used - Simplifies code to match Claude's simpler approach - Removes buggy filtering logic - Fix uninstall_bob to remove all 6 installed skills - Added removal of publish, subscribe, unsubscribe, sync skills - Previously only removed learn and recall - Fix test_save_entities.py to test Bob's implementation - Changed path from Claude plugin to Bob plugin - Updated skill directory name from 'learn' to 'evolve-lite:learn' - Add prompt injection prevention to learn skill - Prevents meta-instructions from being extracted as guidelines - Adds Quality Gate checklist item - Remove test_sources_filter_works test - Test was for removed --sources feature
- Update sync.py to use git fetch + hard reset instead of git pull
- Ensures local clone always matches remote exactly
- Restores deleted files, discards local modifications
- Subscribed repos are read-only mirrors
- Clone directly into .evolve/entities/subscribed/{name}/
- Eliminates separate mirror step (copy_entities)
- Simplifies architecture to match Claude's approach
- Updated subscribe.py, sync.py, and unsubscribe.py
- Add security validations
- unsubscribe.py: reject empty or '.' names that resolve to base directory
- publish.py: use atomic move (temp file + replace) instead of write + unlink
- publish.py: wrap audit_append in try/except to prevent audit failures from breaking operations
All tests passing: 25 subscribe/sync tests, 10 publish tests.
…ities/subscribed/ - Updated subscribe, sync, and unsubscribe scripts to use .evolve/entities/subscribed/ consistently - Fixed save_entities.py import mechanism to not raise error when evolve-lib not found - Updated tests to match new directory structure and symlink behavior - Fixed config.py YAML handling for quoted empty strings - Fixed retrieve_entities.py source attribution parsing - All 35 Bob sharing tests now passing
- Fixed multiple imports on one line in config.py - Removed unused os import in config.py - Changed ambiguous variable name 'l' to 'line' in test_audit.py
aa03e1f to
a96fde3
Compare
- config.py: un-double single quotes escaped by _scalar - subscribe.py: only rollback clone on save_config failure, make audit failures non-fatal
…subscribe skills - Created evolve-lite:publish.md command for publishing private guidelines - Created evolve-lite:subscribe.md command for subscribing to others' guidelines - Created evolve-lite:sync.md command for syncing subscribed repos - Created evolve-lite:unsubscribe.md command for unsubscribing - Added test to verify all skills have corresponding command files - All commands follow the established pattern from learn and recall
Summary
Implements memory sharing for Bob platform with publish/subscribe/sync capabilities, rebased on top of Claude Code changes (
feature/evolve-lite-sharing-claude-code).Changes
New Skills (4)
evolve-lite:publish- Publish private guidelines to public Git repovisibility=public,owner,published_at, andsourcefieldsevolve-lite:subscribe- Subscribe to another user's public guidelines repo.evolve/subscribed/{name}/evolve.config.yamlwith subscription detailsevolve-lite:unsubscribe- Remove subscriptionsevolve-lite:sync- Pull latest from all subscribed repos.evolve/entities/subscribed/{name}/Enhanced Skills (2)
evolve-lite:learn- Added--userflag, automatically stampsvisibility=privateandownerevolve-lite:recall- Multi-source retrieval with priority: private > own public > subscribedretrieve_entities.pyscript with--sourcesflagInfrastructure
install.shto copy all 6 Bob skills and shared librarycustom_modes.yamlwith memory sharing documentationevolve-lib) copied from Claude plugin during installationTesting
test_bob_lite_installation_succeedsfeature/evolve-lite-sharing-claude-code(commit 743e3af)Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
Tests