Skip to content

Releases

v0.1.1

Choose a tag to compare

@mojomast mojomast released this 12 Nov 13:55
f251c06

bundlebees v0.1.1

Fixes from the Hermes catalog review of 0.1.0 (NousResearch/hermes-agent#153888). Tested against real Hermes 0.23.0.

Fixed

  • The launcher token is read with agent.secret_scope.get_secret("BUNDLEBEES_LAUNCHER_TOKEN") directly. 0.1.0 expected an agent on the plugin context or handler kwargs, which Hermes never passes, so the token was never found.
  • Settings are read per key with ctx.get_config(key) (tools and CLI) and with hermes_cli.config.load_config_readonly() in the dashboard API. 0.1.0 read a ctx.config attribute that does not exist.
  • desktop/plugin.js now default-exports { id: "bundlebees", name, register(ctx) } and contributes the pane with ctx.register({ id, area: "panes", render }), as the Desktop runtime loader requires. React comes from import * as React from "react" (the SDK does not export React).
  • dashboard/manifest.json declares "api": "plugin_api.py", so Hermes mounts the routes at /api/plugins/bundlebees/. The backend is built lazily per request from the current settings; nothing has to call configure_backend.
  • hermes bundlebees doctor printed token: [redacted] configured because its own scrubber masked the word after token:. The fixed status line now reads token: configured or token: not configured.
  • CLI and dashboard state live in plugins.plugin_storage.plugin_data_dir("bundlebees"). The XDG fallback is gone; with no Hermes host the CLI asks for --state-dir.

Security

  • Cross-origin launcher redirects (any change of scheme, host, or port) are refused with unsafe_redirect before a request is sent, and Authorization is stripped from any non-origin URL as defence in depth.
  • bundlebees_attempt with op cancel or review now goes through a pre_tool_call approval (provides_hooks: [pre_tool_call]), not only the model-set confirm=true argument.
  • child_env() keeps the user's HOME, PATH, USER, LOGNAME, LANG, TZ, and TMPDIR (exact names) so a user-run git push finds its config and credential helper. Nothing else is inherited.

Tool schemas are unchanged: 4 tools, 571 o200k tokens.

Install pinned to this release: hermes plugins install mojomast/bundlebees --ref f251c069d8360607dee10301b6cdad7fae90d24b

v0.1.0

Choose a tag to compare

@mojomast mojomast released this 11 Nov 20:16

First public release of the bundlebees Hermes plugin.

Orchestrate CUA bees from Hermes: check launcher health, dispatch leased briefs, watch attempts, and leave verify and deploy to a user-run CLI.

  • Four tools (bundlebees_status, bundlebees_dispatch, bundlebees_attempt, bundlebees_host_prompt) measuring 571 tokens on o200k_base (under a 900 budget).
  • User-run CLI: hermes bundlebees verify, deploy, and doctor. The model does not apply patches, run the suite, push a branch, or SSH.
  • Desktop pane on Hermes 0.23 or newer, talking only through ctx.rest.
  • Bundled skill bundlebees:bundlebees-operator.
  • Catalog-bar controls: secrets only through get_secret, exact-name child_env, path confinement, public-address / loopback URL policy with connection pinning, and honest disclosure in plugin.yaml. Private or LAN launcher URLs require allow_private=true (default false).
  • 150 tests passed. hermes plugins validate --install-deps and hermes plugins doctor --ci are green.

Install a pinned copy (--ref takes a 40-character commit SHA, not a tag name):

hermes plugins install mojomast/bundlebees --ref 57a6f12cdcfa789c5aba5f22f3f46efd2b8b3d5c
hermes plugins enable bundlebees

This is not a Hermes catalog listing yet. A YAML-only catalog PR pinned to this SHA still needs an explicit approval.