app
Adom Google
Public Made by Adomby adom
Drive your whole Google Workspace from the terminal, run by your AI. Read Gmail, write Google Docs, build Google Sheets and Google Slides, search Google Drive, manage Google Calendar and Google Tasks, and post to Google Chat, plus any Google API and a zero-setup personal Gmail.
← Commit history
bin/adom-google+8−8@@ -295,7 +295,7 @@ Hint: default so the tool "just works". Hint: (Advanced/rare only: `adom-google auth --safe` grants narrower scopes — just the Hint: Drive/Sheets/Docs/Slides files this app creates, no delete-all. Do NOT prompt for it; Hint: use --safe only if the user explicitly asks to minimize scopes.)-Hint: The user has ~10 minutes to click Allow (the gateway keeps the sign-in session alive), so+Hint: The user has ~30 minutes to click Allow (the gateway keeps the sign-in session alive), so Hint: there's no rush. If they ever see a "Session Expired" page, just re-run `adom-google auth`.""" @@ -763,7 +763,7 @@ def cmd_api(a): # ---------------------------------------------------------------- auth: gateway flow-def _minimal_ws_roundtrip(ws_url, send_msgs, want_types, timeout=600):+def _minimal_ws_roundtrip(ws_url, send_msgs, want_types, timeout=1800): """Tiny RFC6455 client (stdlib only): connect, send JSON text frames, return the first received JSON message whose 'type' == want_type. Used for the OAuth Gateway handshake so adom-google stays a single dependency-light file (no `ws`/`websockets` package).@@ -957,7 +957,7 @@ def cmd_auth(a): _print_open_url(auth_link) # The gateway keeps the sign-in session alive for the full 10 min via a WS heartbeat # (gateway fix for issue #1), so the client waits the same 10 min.- print("2) Waiting for your approval — you have ~10 minutes, no rush.")+ print("2) Waiting for your approval — you have ~30 minutes, no rush.") try: # Broker mode: the gateway exchanges the code and returns tokens (the client # secret stays on the gateway). Falls back to relayed code if it can't broker.@@ -966,11 +966,11 @@ def cmd_auth(a): send_msgs=[{"type": "register", "state": state, "provider": "google", "app": pr["app"], "exchange": want_exchange}], want_types=("tokens", "callback"),- timeout=600,+ timeout=1800, ) except Exception as e: sys.exit(f"\nGateway flow failed: {e}\n"- f"If you saw a 'Session Expired' page or waited more than ~10 minutes, just\n"+ f"If you saw a 'Session Expired' page or waited more than ~30 minutes, just\n" f"re-run `adom-google auth`. If the gateway itself is down ({pr['gateway_url']}),\n" f"fallback: `adom-google auth --manual`.") if msg.get("state") != state:@@ -978,7 +978,7 @@ def cmd_auth(a): if msg.get("error") or (msg.get("type") == "callback" and not msg.get("code")): sys.exit(f"\nGoogle returned '{msg.get('error') or 'no code'}' instead of an auth code.\n" f"If that's 'access_denied' you declined consent. Otherwise the sign-in session\n"- f"likely expired — re-run `adom-google auth` (you have ~10 minutes to click Allow).")+ f"likely expired — re-run `adom-google auth` (you have ~30 minutes to click Allow).") if msg.get("type") == "tokens": _store_broker_tokens(cfg, msg["tokens"], scopes, mode) print(f"\n✅ Authorized via gateway broker ({mode} mode). Token stored (0600); "@@ -1104,7 +1104,7 @@ def cmd_onboard(a): print(" adom-google onboard finish --org <your-org-slug> \\") print(" --client-id <client-id> --client-secret <client-secret>") print("\n6) Authorize (full Workspace access by default):")- print(" adom-google auth # one Allow click with your Workspace account (you have ~10 min)")+ print(" adom-google auth # one Allow click with your Workspace account (you have ~30 min)") print("\n(Chat also needs a one-time Chat-app config: " + cfg["console"]["chat_config"] + ")") print("\n" + ONBOARD_HINT) @@ -1234,7 +1234,7 @@ HELP = """adom-google — Google Workspace from your Adom container (Gmail, Cont AUTH (one time; one consent → long-lived refresh token, stored 0600): adom-google auth Authorize (FULL Workspace access — the default; no mode quiz).- Prints a consent URL; user clicks Allow ONCE (they have ~10 min,+ Prints a consent URL; user clicks Allow ONCE (they have ~30 min, no rush). adom-google auth --safe Advanced: narrower create-only scopes (no "delete all"). Only if the user explicitly wants to minimize scopes.
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-google",- "version": "0.8.0",+ "version": "0.8.1", "type": "app", "license": "MIT", "description": "Drive your whole Google Workspace from the terminal — Gmail, Contacts, Drive, Sheets, Docs, Slides, Calendar, Tasks, Google Chat, plus a generic `api` passthrough to hit ANY Google API. Connect a personal @gmail (or another org's Google account) with ZERO setup via Adom's hosted Connector (`adom-google connect-personal`), or bring your own token-broker gateway (`provider set`) — Adom staff use the private adom-google-adom provider. One-click OAuth, no client secret on your machine.",
page.json+1−1@@ -4,7 +4,7 @@ "slug": "adom-google", "title": "Adom Google", "brief": "Drive your whole Google Workspace from the terminal — Gmail, Drive, Sheets, Docs, Slides, Calendar, Tasks, Chat + any Google API.",- "version": "0.8.0",+ "version": "0.8.1", "visibility": "public", "install": { "binary_name": "adom-google"