Skip to content

feat(gateway): add native Fluxer platform adapter - #73528

Closed
kaitwalla wants to merge 1 commit into
NousResearch:mainfrom
kaitwalla:feat/fluxer-adapter
Closed

kaitwalla wants to merge 1 commit into
NousResearch:mainfrom
kaitwalla:feat/fluxer-adapter

Conversation

@kaitwalla

Copy link
Copy Markdown

Summary

  • add a native bundled Fluxer messaging plugin using Fluxer REST and Gateway APIs
  • support DMs and server channels, replies, typing, edits, reactions, uploads, reconnect/resume, home-channel delivery, allowlists, and pairing ingress
  • add guided setup, environment/config documentation, and self-hosted endpoint support
  • repair bundled-platform contract discovery so those contracts execute instead of silently receiving an empty parameter set

Security and isolation

  • require HTTPS/WSS for remote endpoints; plaintext HTTP/WS is limited to loopback development
  • validate configured, discovered, and resume Gateway URLs before credentials are transmitted
  • reject endpoint userinfo, query strings, fragments, malformed authorities, and invalid ports
  • download inbound attachments only after authorization returns exactly True; unknown text still reaches central pairing
  • bound outbound file reads and run filesystem reads off the event loop
  • use token-scoped platform locks without exposing credentials, including shared --replace takeover semantics
  • preserve per-profile credentials, allowlists, sessions, and home-channel configuration

Verification

  • 67 passed — focused Fluxer unit/setup/in-process REST+WebSocket integration suite
  • 793 passed — selected platform/config/session contracts, 0 skipped
  • Ruff format/check passed
  • ty passed
  • staged credential scan passed
  • independent hash-pinned security/correctness review passed with no blocking findings
  • complete Gateway run: 11,571 passed, 21 failed, 4 skipped; no Fluxer tests failed. The 21 unrelated failures were rerun by file: 20 passed, and the remaining busy-ack test passed with an isolated HERMES_HOME (the live profile had busy_ack_detail enabled).

Notes

The adapter talks to Fluxer natively; it does not redirect or impersonate the Discord adapter. Self-hosted REST bases are full versioned URLs such as https://chat.example.com/api/v1.

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/plugins Plugin system and bundled plugins labels Jul 28, 2026

@teknium1 teknium1 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for the substantial adapter implementation and the focused gateway coverage.

Problems

  • The new bundled integration at plugins/platforms/fluxer/plugin.yaml:1 conflicts with the standing policy at AGENTS.md:797-810: new third-party-product plugins must ship as standalone plugin repositories rather than new directories under plugins/.
  • This PR also contains a separately valid current-main repair. tests/gateway/test_plugin_platform_interface.py:17-18 builds tests/plugins/platforms, not the repository's plugins/platforms; its dynamic platform parameter set therefore does not cover bundled adapters.

Suggested changes

  • Publish Fluxer as a standalone platform plugin using the existing ctx.register_platform() surface, which current docs identify for user-installed third-party platform adapters (website/docs/user-guide/features/plugins.md:180,230).
  • Keep the PROJECT_ROOT correction as a focused contract-test change so the existing bundled-platform checks actually execute.

This is an automated hermes-sweeper review.

@@ -0,0 +1,56 @@
name: fluxer-platform

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This creates a new in-tree third-party product integration. AGENTS.md:797-810 requires such plugins to ship as standalone repositories installable under ~/.hermes/plugins/; please move the Fluxer adapter to that extension path rather than adding it under plugins/.

@teknium1 teknium1 added sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages sweeper:risk-security-boundary Sweeper risk: may affect sandboxing, auth, credentials, or sensitive data sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 30, 2026
@kaitwalla

Copy link
Copy Markdown
Author

Superseded by the standalone plugin repository requested in review:

The unrelated bundled-platform contract-test correction is now isolated in #74953. Closing this monorepo integration PR in favor of those two focused deliverables.

@kaitwalla kaitwalla closed this Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages sweeper:risk-security-boundary Sweeper risk: may affect sandboxing, auth, credentials, or sensitive data type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants