Skip to content

feat: v0.5.0 — contacts_search, docs_create, calendar_create_event (no attendees)#8

Merged
mabry1985 merged 1 commit into
mainfrom
feat/contacts-docs-events
Jul 3, 2026
Merged

feat: v0.5.0 — contacts_search, docs_create, calendar_create_event (no attendees)#8
mabry1985 merged 1 commit into
mainfrom
feat/contacts-docs-events

Conversation

@mabry1985

Copy link
Copy Markdown
Contributor

The re-consent batch: three tools that finish the personal-assistant loop.

What

  • contacts_search(query) (new gpeople.py) — "draft an email to Mike" can now find Mike: searches saved contacts AND Google's auto-collected past correspondents (otherContacts), merged/deduped, with the People-API warmup request Google recommends (once per token).
  • docs_create(title, text) (new gdocs.py) — a NEW Google Doc via documents.create + one insertText batchUpdate. Deliberately create-only: a new doc is private until the user shares it; editing existing (possibly shared) docs stays out.
  • calendar_create_event(title, start, end, …) — own-calendar events, timed (with optional IANA timezone) or all-day (bare dates). The tool schema has no attendees parameter at all — inviting people sends them email, which crosses the plugin's never-send line. Pinned by test_create_event_tool_has_no_attendees_surface.

Scopes

DEFAULT_SCOPES += contacts.readonly, contacts.other.readonly, documents; manifest network += people.googleapis.com, docs.googleapis.com. Existing tokens keep working for everything shipped so far; the three new tools return the readable insufficient-scope error until a one-click Reconnect (README documents this).

Test

63 passed (7 new), ruff clean, host-free. Version → 0.5.0.

🤖 Generated with Claude Code

…o attendees)

- gpeople.py: People API search across saved contacts AND auto-collected 'other
  contacts', merged + deduped; warmup request once per token (Google-recommended)
- gdocs.py: CREATE-only Docs — a new doc is private until shared (the Docs analog
  of draft-only email); existing docs are never edited
- gcal.create_event: own-calendar events, timed or all-day; the tool surface takes
  NO attendees param at all — inviting people emails them, crossing the never-send
  line (pinned by a schema test)
- connect DEFAULT_SCOPES += contacts.readonly, contacts.other.readonly, documents;
  manifest network += people/docs.googleapis.com; pre-v0.5.0 tokens get readable
  insufficient-scope errors until a Reconnect

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@protoquinn

protoquinn Bot commented Jul 3, 2026

Copy link
Copy Markdown

👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow.

@mabry1985 mabry1985 merged commit 0b4635e into main Jul 3, 2026
1 check passed
@mabry1985 mabry1985 deleted the feat/contacts-docs-events branch July 3, 2026 18:34

@protoquinn protoquinn Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

QA Audit — PR #8 | feat: v0.5.0 — contacts_search, docs_create, calendar_create_event (no attendees)

VERDICT: WARN


CI Status

  • test: queued

Diff Review

  • Three new tools added: contacts_search, docs_create, calendar_create_event — all respecting the "never send" posture
  • gpeople.py searches both saved + otherContacts, merged/deduped — sound approach for the "draft an email to Mike" use case
  • gdocs.py create-only via documents.create + one insertText batchUpdate — correct for the stated private-doc goal
  • calendar_create_event has no attendees surface — confirmed consistent with plugin's pull-mode posture; pinned by test_create_event_tool_has_no_attendees_surface
  • Scope additions (contacts.readonly, contacts.other.readonly, documents) match API usage; README documents the one-click Reconnect for existing tokens

Observations

  • LOW: Clawpatch structural review unavailable for this repo (not in checkout cache)
  • LOW: Diff truncated at 200/478 lines — gpeople.py search function body and new test files not visible in this pass
  • LOW: CI test still queued — can't verify the 63-pass claim; re-review will land a formal PASS/FAIL once checks are terminal

— Quinn, QA Engineer

@protoquinn

protoquinn Bot commented Jul 3, 2026

Copy link
Copy Markdown

Submitted COMMENT review on #8.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant