Skip to content

fix(google-chat): allow http inbound without pubsub - #36035

Closed
aeyeopsdev wants to merge 1 commit into
NousResearch:mainfrom
AeyeOps:fix/google-chat-http-inbound-mode
Closed

fix(google-chat): allow http inbound without pubsub#36035
aeyeopsdev wants to merge 1 commit into
NousResearch:mainfrom
AeyeOps:fix/google-chat-http-inbound-mode

Conversation

@aeyeopsdev

@aeyeopsdev aeyeopsdev commented May 31, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Allows the bundled Google Chat platform plugin to be configured for authenticated HTTP inbound callbacks without requiring a Cloud Pub/Sub pull subscription.

This reduces Google Chat setup friction by letting the plugin use either supported inbound transport instead of forcing every deployment through Pub/Sub.

Pub/Sub remains supported for no-public-URL deployments. This only makes the inbound transport optional when an HTTP callback URL is configured.

Related Issue

N/A — small setup/connectivity improvement for the pluginized Google Chat adapter.

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✅ Tests (adding or improving test coverage)

Changes Made

  • plugins/platforms/google_chat/adapter.py: accept http_events_url as a valid inbound mode.
  • plugins/platforms/google_chat/adapter.py: keep Pub/Sub validation/supervisor startup only when a subscription is configured.
  • plugins/platforms/google_chat/plugin.yaml: make Pub/Sub project/subscription optional and surface GOOGLE_CHAT_HTTP_EVENTS_URL.
  • tests/gateway/test_google_chat.py: cover env enablement, config validation, project inference, and connect behavior for HTTP inbound mode.

How to Test

  1. scripts/run_tests.sh tests/gateway/test_google_chat.py
  2. python /root/.codex/skills/hermes-upstream-pr/scripts/pr_preflight.py --base upstream/main

Checklist

Code

  • I've read the Contributing Guide.
  • My commit message follows Conventional Commits.
  • I searched for existing PRs to make sure this isn't a duplicate.
  • My PR contains only changes related to this fix.
  • I've added tests for my changes.
  • I've tested on Linux.

Documentation & Housekeeping

  • Documentation update N/A; plugin manifest env metadata updated.
  • cli-config.yaml.example update N/A.
  • CONTRIBUTING.md / AGENTS.md update N/A.
  • Cross-platform impact considered: config/connect logic and tests only.
  • Tool descriptions/schemas update N/A.

Related PRs

Screenshots / Logs

Validation passed locally:

scripts/run_tests.sh tests/gateway/test_google_chat.py
164 tests passed, 0 failed

@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/plugins Plugin system and bundled plugins comp/gateway Gateway runner, session dispatch, delivery labels May 31, 2026
@aeyeopsdev
aeyeopsdev marked this pull request as ready for review May 31, 2026 21:07
@aeyeopsdev
aeyeopsdev force-pushed the fix/google-chat-http-inbound-mode branch from 2514313 to a6af316 Compare June 30, 2026 12:20
@aeyeopsdev
aeyeopsdev force-pushed the fix/google-chat-http-inbound-mode branch from a6af316 to c8c7c0b Compare July 5, 2026 23:27
@teknium1

Copy link
Copy Markdown
Contributor

Thanks for separating the Pub/Sub configuration work from the follow-up callback work. The Pub/Sub-only limitation is present on current main, but this slice is not operational by itself.

Problems

  • plugins/platforms/google_chat/adapter.py:964-967 is the only current inbound registration, and _on_pubsub_message at :1136 is the dispatch entry point. The proposed HTTP branch skips that subscriber/supervisor without adding an HTTP route, callback authentication, or dispatch handler, so an HTTP-only adapter would report connected but receive no messages. The linked feat(gateway): route platform HTTP event callbacks #36061 description explicitly identifies those missing pieces.
  • plugins/platforms/google_chat/adapter.py:3055-3087 still requires a project and Pub/Sub subscription in guided setup, while website/docs/user-guide/messaging/google_chat.md:9-14 and :149-164 remain Pub/Sub-only. This contradicts the stated setup-friction goal.

Suggested changes

  • Land HTTP mode as an end-to-end path with authenticated callback routing and dispatch coverage, rather than only relaxing validation.
  • Update guided setup and user documentation for the two inbound modes.

Automated hermes-sweeper review.

@teknium1 teknium1 added sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages 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 13, 2026
@teknium1

Copy link
Copy Markdown
Contributor

Merged via #65545 (rebase-merged onto current main, head commit 5604d18) — your commit was cherry-picked with your authorship preserved in git log. Thanks for the contribution!

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

Labels

comp/gateway Gateway runner, session dispatch, delivery 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 type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants