Skip to content

Implement Plugin Service with Granular Permissions#14

Draft
Psyborgs-git wants to merge 1 commit intomainfrom
plugin-service-impl-7756742733607408111
Draft

Implement Plugin Service with Granular Permissions#14
Psyborgs-git wants to merge 1 commit intomainfrom
plugin-service-impl-7756742733607408111

Conversation

@Psyborgs-git
Copy link
Owner

Implemented a comprehensive plugin system as requested.

Key Features:

  • Manifest-driven: Plugins are defined by plugin.json specifying runtime (node/python), entry point, and permissions.
  • Granular Permissions:
    • Vault access is restricted by key patterns (e.g. vault:read:secret/db).
    • Hook subscriptions are restricted by topic patterns (e.g. hook:read:container.created).
  • Isolated Storage: Each plugin gets a dedicated SQLite DB file.
  • Secure Installation:
    • Validates manifest ID to prevent path traversal.
    • Handles nested zip structures gracefully.
  • Interactive Routing: Plugins can expose API methods and subscribe to system events via the HookService.

Verified with unit tests covering store operations, manager logic, and permission enforcement.


PR created automatically by Jules for task 7756742733607408111 started by @Psyborgs-git

- Create `@orch/plugin` package with `PluginManager`, `PluginStore`, and `HookService`.
- Implement runtime isolation for Node.js (`fork`) and Python (`spawn`) plugins.
- Implement `install` logic with URL download, zip extraction, and manifest validation.
- Implement granular permission checks for Vault (`vault:read:<key>`) and Hooks (`hook:read:<topic>`).
- Provision isolated SQLite databases for each plugin.
- Fix Python IPC buffering for reliable message parsing.
- Integrate plugin subsystem into `OrchestratorApp`.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Copy link
Owner Author

@Psyborgs-git Psyborgs-git left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

run tests to verify the app startup atleast, current one implementation fails with: node:internal/modules/run_main:122 triggerUncaughtException( ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@orch/plugin' imported from /Users/jainamshah/Desktop/vloop.app/packages/orchestrator/src/app.ts at packageResolve (node:internal/modules/esm/resolve:857:9) at moduleResolve (node:internal/modules/esm/resolve:926:18) at defaultResolve (node:internal/modules/esm/resolve:1056:11) at nextResolve (node:internal/modules/esm/hooks:748:28) at resolveBase (file:///Users/jainamshah/Desktop/vloop.app/node_modules/tsx/dist/esm/index.mjs?1772138105406:2:3744) at resolveDirectory (file:///Users/jainamshah/Desktop/vloop.app/node_modules/tsx/dist/esm/index.mjs?1772138105406:2:4243) at resolveTsPaths (file:///Users/jainamshah/Desktop/vloop.app/node_modules/tsx/dist/esm/index.mjs?1772138105406:2:4984) at resolve (file:///Users/jainamshah/Desktop/vloop.app/node_modules/tsx/dist/esm/index.mjs?1772138105406:2:5361) at nextResolve (node:internal/modules/esm/hooks:748:28) at Hooks.resolve (node:internal/modules/esm/hooks:240:30) { code: 'ERR_MODULE_NOT_FOUND' }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant