refactor(platform-integrations): namespace shared lib under lib/evolve-lite/#258
refactor(platform-integrations): namespace shared lib under lib/evolve-lite/#258illeatmyhat wants to merge 2 commits into
Conversation
…e-lite/ The shared lib (entity_io, config, audit) now renders to lib/evolve-lite/ on every host instead of a bare lib/ — and .bob/lib/evolve-lite/ for bob, replacing .bob/evolve-lib/. Skill scripts resolve it by walking ancestors for lib/evolve-lite/, so multiple plugins can share a host's lib/ directory without their modules colliding. The canonical source stays flat (plugin-source/lib/); build_plugins.py applies a shared target rewrite to namespace it at render time. install.sh and the platform-integration tests are updated to the new layout. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThis PR standardizes the shared library directory structure across all platform integrations (Bob, Claude, Claw, Codex) by consolidating plugin library discovery from multiple candidate paths ( ChangesShared Library Path Standardization
🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Possibly related PRs
Suggested reviewers
🚥 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)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. 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 |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
plugin-source/_bob/README.md (1)
23-23: ⚡ Quick winUse consistent path notation with line 22.
Line 22 documents the skills directory as
~/.bob/skills/(absolute path with tilde), but this line uses.bob/lib/evolve-lite/(relative path). For consistency, since Bob installs to the user's home directory, both should use the same notation.📝 Suggested fix
-- Shared library in `.bob/lib/evolve-lite/` +- Shared library in `~/.bob/lib/evolve-lite/`🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugin-source/_bob/README.md` at line 23, Update the path notation for the shared library entry so it matches the absolute-tilde style used on line 22: replace the string ".bob/lib/evolve-lite/" with "~/.bob/lib/evolve-lite/" in the README (ensure you update the exact text ".bob/lib/evolve-lite/" to the tilde-prefixed "~/.bob/lib/evolve-lite/" so both entries use the same notation as "~/.bob/skills/").
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@platform-integrations/install.sh`:
- Line 1072: The printed status message is inconsistent: the existence check
uses (plugin_dir / 'lib' / 'evolve-lite' / 'entity_io.py') but the printed label
shows "lib/entity_io.py"; update the printed label to match the actual path
being checked (e.g., "lib/evolve-lite/entity_io.py") in the print statement so
the output accurately reflects the checked file; locate the print(...) call that
contains "lib/entity_io.py" and change only the displayed path string to match
the checked path.
---
Nitpick comments:
In `@plugin-source/_bob/README.md`:
- Line 23: Update the path notation for the shared library entry so it matches
the absolute-tilde style used on line 22: replace the string
".bob/lib/evolve-lite/" with "~/.bob/lib/evolve-lite/" in the README (ensure you
update the exact text ".bob/lib/evolve-lite/" to the tilde-prefixed
"~/.bob/lib/evolve-lite/" so both entries use the same notation as
"~/.bob/skills/").
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 178777f9-09ba-47ce-8c34-496242a4ab14
📒 Files selected for processing (66)
platform-integrations/INSTALL_SPEC.mdplatform-integrations/bob/evolve-lite/README.mdplatform-integrations/bob/evolve-lite/lib/evolve-lite/__init__.pyplatform-integrations/bob/evolve-lite/lib/evolve-lite/audit.pyplatform-integrations/bob/evolve-lite/lib/evolve-lite/config.pyplatform-integrations/bob/evolve-lite/lib/evolve-lite/entity_io.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-learn/scripts/save_entities.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-provenance/scripts/log_influence.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-publish/scripts/publish.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-recall/scripts/retrieve_entities.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-subscribe/scripts/subscribe.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-sync/scripts/sync.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-unsubscribe/scripts/unsubscribe.pyplatform-integrations/claude/plugins/evolve-lite/lib/evolve-lite/__init__.pyplatform-integrations/claude/plugins/evolve-lite/lib/evolve-lite/audit.pyplatform-integrations/claude/plugins/evolve-lite/lib/evolve-lite/config.pyplatform-integrations/claude/plugins/evolve-lite/lib/evolve-lite/entity_io.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/learn/scripts/save_entities.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/provenance/scripts/log_influence.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/publish/scripts/publish.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/subscribe/scripts/subscribe.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/sync/scripts/sync.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/unsubscribe/scripts/unsubscribe.pyplatform-integrations/claw-code/plugins/evolve-lite/lib/evolve-lite/__init__.pyplatform-integrations/claw-code/plugins/evolve-lite/lib/evolve-lite/audit.pyplatform-integrations/claw-code/plugins/evolve-lite/lib/evolve-lite/config.pyplatform-integrations/claw-code/plugins/evolve-lite/lib/evolve-lite/entity_io.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/learn/scripts/save_entities.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/provenance/scripts/log_influence.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/publish/scripts/publish.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/subscribe/scripts/subscribe.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/sync/scripts/sync.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/unsubscribe/scripts/unsubscribe.pyplatform-integrations/codex/plugins/evolve-lite/lib/evolve-lite/__init__.pyplatform-integrations/codex/plugins/evolve-lite/lib/evolve-lite/audit.pyplatform-integrations/codex/plugins/evolve-lite/lib/evolve-lite/config.pyplatform-integrations/codex/plugins/evolve-lite/lib/evolve-lite/entity_io.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/learn/scripts/save_entities.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/provenance/scripts/log_influence.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/publish/scripts/publish.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/subscribe/scripts/subscribe.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/sync/scripts/sync.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/unsubscribe/scripts/unsubscribe.pyplatform-integrations/install.shplugin-source/_bob/README.mdplugin-source/build_plugins.pyplugin-source/skills/evolve-lite/learn/scripts/save_entities.pyplugin-source/skills/evolve-lite/provenance/scripts/log_influence.pyplugin-source/skills/evolve-lite/publish/scripts/publish.pyplugin-source/skills/evolve-lite/recall/scripts/retrieve_entities.py.j2plugin-source/skills/evolve-lite/subscribe/scripts/subscribe.pyplugin-source/skills/evolve-lite/sync/scripts/sync.pyplugin-source/skills/evolve-lite/unsubscribe/scripts/unsubscribe.pytests/platform_integrations/AGENTS.mdtests/platform_integrations/test_audit.pytests/platform_integrations/test_bob_sharing.pytests/platform_integrations/test_codex.pytests/platform_integrations/test_config.pytests/platform_integrations/test_entity_io.pytests/platform_integrations/test_entity_io_core.pytests/platform_integrations/test_idempotency.pytests/platform_integrations/test_plugin_structure.pytests/platform_integrations/test_subscribe.py
| print(" Codex:") | ||
| print(f" plugins/evolve-lite : {'✓' if plugin_dir.is_dir() else '✗'}") | ||
| print(f" lib/entity_io.py : {'✓' if (plugin_dir / 'lib' / 'entity_io.py').is_file() else '✗'}") | ||
| print(f" lib/entity_io.py : {'✓' if (plugin_dir / 'lib' / 'evolve-lite' / 'entity_io.py').is_file() else '✗'}") |
There was a problem hiding this comment.
Fix stale Codex status label to match the actual path check.
Line 1072 checks lib/evolve-lite/entity_io.py but prints lib/entity_io.py, which can mislead troubleshooting output.
Proposed fix
- print(f" lib/entity_io.py : {'✓' if (plugin_dir / 'lib' / 'evolve-lite' / 'entity_io.py').is_file() else '✗'}")
+ print(f" lib/evolve-lite/entity_io.py : {'✓' if (plugin_dir / 'lib' / 'evolve-lite' / 'entity_io.py').is_file() else '✗'}")📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| print(f" lib/entity_io.py : {'✓' if (plugin_dir / 'lib' / 'evolve-lite' / 'entity_io.py').is_file() else '✗'}") | |
| print(f" lib/evolve-lite/entity_io.py : {'✓' if (plugin_dir / 'lib' / 'evolve-lite' / 'entity_io.py').is_file() else '✗'}") |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@platform-integrations/install.sh` at line 1072, The printed status message is
inconsistent: the existence check uses (plugin_dir / 'lib' / 'evolve-lite' /
'entity_io.py') but the printed label shows "lib/entity_io.py"; update the
printed label to match the actual path being checked (e.g.,
"lib/evolve-lite/entity_io.py") in the print statement so the output accurately
reflects the checked file; locate the print(...) call that contains
"lib/entity_io.py" and change only the displayed path string to match the
checked path.
… path notation Address CodeRabbit review on #258: - install.sh: codex status line label now matches the path it checks (lib/evolve-lite/entity_io), consistent with the bob status line. - _bob/README.md: shared-library path uses ~/.bob/ tilde notation to match the skills-directory entry above it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codex ReviewTarget: branch diff against main The relocated Bob library path is not included in Bob's uninstall/purge cleanup, leaving installed artifacts behind after uninstall. The main runtime lookup changes otherwise appear internally consistent. Review comment
|
What
The shared lib (
entity_io,config,audit) now renders tolib/evolve-lite/on every host instead of a barelib/— and.bob/lib/evolve-lite/for bob, replacing.bob/evolve-lib/.Skill scripts resolve the lib by walking ancestors for
lib/evolve-lite/, so multiple plugins can share a host'slib/directory without their modules colliding. This establishes a namespacing standard (lib/<plugin>/) for plugins to coexist.How
plugin-source/lib/).build_plugins.pygains aSHARED_TARGET_REWRITESrule (^lib/→lib/evolve-lite/) applied to every platform at render time, so a new platform inherits it automatically..j2): resolution snippet simplified to a single ancestor-walk forlib/evolve-lite/, dropping the oldlib/evolve-libdual candidates.install.sh: bob copies the lib to.bob/lib/evolve-lite/; bob + codex status lines updated.tests/platform_integrations/.INSTALL_SPEC.md,plugin-source/_bob/README.md,tests/platform_integrations/AGENTS.md.Verification
build_plugins.py check— clean (no drift)🤖 Generated with Claude Code
Summary by CodeRabbit
Documentation
Refactor
lib/evolve-lite/across all platform integrations (Bob, Codex, Claude, Claw-Code).Tests