name: google_chat-platform
label: Google Chat
kind: platform
version: 1.0.0
description: >
  Google Chat gateway adapter for Hermes Agent.
  Connects via Cloud Pub/Sub pull subscription for inbound events and the
  Google Chat REST API for outbound messages — same ergonomics as Slack
  Socket Mode or Telegram long-polling, no public URL required. Native
  file attachments are delivered via per-user OAuth (each user runs
  /setup-files once in their own DM).
author: Ramón Fernández
# ``requires_env`` entries are surfaced in ``hermes config`` UI via the
# platform-plugin env var injector in ``hermes_cli/config.py``.  Using the
# rich-dict form lets us contribute description/url/prompt metadata so users
# see helpful guidance instead of the auto-generated fallback text.
requires_env:
  - name: GOOGLE_CHAT_PROJECT_ID
    description: "GCP project ID hosting the Pub/Sub topic for Chat events. Falls back to GOOGLE_CLOUD_PROJECT."
    prompt: "GCP project ID"
    url: "https://console.cloud.google.com/"
    password: false
  - name: GOOGLE_CHAT_SUBSCRIPTION_NAME
    description: "Full Pub/Sub subscription path: projects/<proj>/subscriptions/<sub>. Legacy alias: GOOGLE_CHAT_SUBSCRIPTION."
    prompt: "Pub/Sub subscription name"
    password: false
  - name: GOOGLE_CHAT_SERVICE_ACCOUNT_JSON
    description: "Path to Service Account JSON key (or inline JSON). Leave empty to use Application Default Credentials on Cloud Run / GCE. Falls back to GOOGLE_APPLICATION_CREDENTIALS."
    prompt: "Path to SA JSON (or empty for ADC)"
    password: true
optional_env:
  - name: GOOGLE_CHAT_ALLOWED_USERS
    description: "Comma-separated user emails allowed to interact with the bot."
    prompt: "Allowed user emails (comma-separated)"
    password: false
  - name: GOOGLE_CHAT_HOME_CHANNEL
    description: "Default space for cron / notification delivery (e.g. spaces/AAAA...)."
    prompt: "Home space ID (or empty)"
    password: false
