Commit Graph

1603 Commits

Author SHA1 Message Date
mickey-mikey
0e7c2a2318 refactor: move test_tasks_manage_is_valid_level to TestParsePermissionsArg
Addresses CodeRabbit Review 4 nitpick: the test validates
parse_permissions_arg() so it belongs with that test class.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:47:29 +11:00
mickey-mikey
acc3e665d0 fix: assert cumulative readonly scope in tasks full-level test
Addresses CodeRabbit Review 3 nitpick: verify TASKS_READONLY_SCOPE is
present at full level, confirming cumulative scope expansion.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:40:50 +11:00
mickey-mikey
69dd5069dc fix: add test docstrings and reset fixture per CodeRabbit review
- Add docstrings to test methods for coverage threshold
- Add autouse fixture to reset permission state between tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:29:28 +11:00
mickey-mikey
0fce7c78b6 fix: also deny clear_completed under tasks:manage
Addresses CodeRabbit review — clear_completed is destructive and should
be blocked alongside delete at the manage permission level.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:21:51 +11:00
mickey-mikey
377791080c feat: add tasks:manage permission level to deny delete without blocking other writes
The consolidated manage_task tool bundles create/update/delete/move into a
single tool, making it impossible to deny just the delete action via tool
tiers or scope-based filtering.

This adds:
- A `manage` permission level for tasks (between readonly and full)
- A SERVICE_DENIED_ACTIONS registry mapping (service, level) to denied actions
- An is_action_denied() helper that tools call before executing actions
- Guards in manage_task and manage_task_list that reject denied actions

Usage: --permissions tasks:manage
Allows create, update, move. Denies delete.
tasks:full remains unchanged (all actions allowed).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:04:31 +11:00
Taylor Wilsdon
89e1974984 chore: release v1.14.2 2026-03-03 18:19:07 -05:00
Taylor Wilsdon
130ed48cc7 Merge pull request #423 from gpminsuk/feat/server-instructions-user-email
feat: Add USER_GOOGLE_EMAIL to server instructions for single-user mode
2026-03-03 17:54:12 -05:00
Taylor Wilsdon
0f941650bb Merge pull request #539 from slowpoison/feature_doc_tab
Add support for GDoc Tabs
2026-03-03 17:47:45 -05:00
Taylor Wilsdon
3d7fc02e84 refac for the better 2026-03-03 17:46:50 -05:00
Taylor Wilsdon
a5a896977f refac 2026-03-03 17:36:21 -05:00
Taylor Wilsdon
548394efbb Merge branch 'main' of github.com:taylorwilsdon/google_workspace_mcp into feature_doc_tab 2026-03-03 17:34:26 -05:00
Vishal Verma
10cdcdd7e5 Add support for GDoc Tabs 2026-03-03 09:12:31 -08:00
Taylor Wilsdon
8a856cfecd Merge pull request #538 from taylorwilsdon/issues/536
enh: better fallback logic for html in emails
2026-03-03 11:28:08 -05:00
github-actions[bot]
95120d6f26 style: auto-fix ruff lint and format 2026-03-03 15:12:33 +00:00
Taylor Wilsdon
92840ac8e8 better fallback logic for html in emails 2026-03-02 09:29:53 -05:00
Taylor Wilsdon
04b9ae027c chore: release v1.14.1 2026-03-01 18:29:25 -05:00
Taylor Wilsdon
d514c6219d Merge pull request #523 from jack-distl/claude/fix-cors-middleware-error-sPbo6
Fix TypeError: CORSMiddleware.__call__() missing 2 required positiona…
2026-03-01 18:29:10 -05:00
Taylor Wilsdon
e999982848 cache test 2026-03-01 18:21:23 -05:00
Taylor Wilsdon
5b5da3386c refac 2026-03-01 18:21:12 -05:00
Taylor Wilsdon
c9facbff3d refac 2026-03-01 17:59:45 -05:00
Taylor Wilsdon
217d727a9d Merge branch 'main' of https://github.com/taylorwilsdon/google_workspace_mcp into claude/fix-cors-middleware-error-sPbo6 2026-03-01 17:47:02 -05:00
Taylor Wilsdon
5af66ee0d2 refac 2026-03-01 17:47:00 -05:00
Taylor Wilsdon
ab5c95a5d0 Merge pull request #532 from isair/fix/pkce-code-verifier
Fix PKCE code verifier not generated for initial OAuth flow
2026-03-01 17:39:59 -05:00
Taylor Wilsdon
662383b8b2 Merge branch 'main' of https://github.com/taylorwilsdon/google_workspace_mcp into fix/pkce-code-verifier 2026-03-01 17:34:12 -05:00
Taylor Wilsdon
8463e4fd29 auth test 2026-03-01 17:34:11 -05:00
Taylor Wilsdon
ef9c6a9c69 make better 2026-03-01 17:34:02 -05:00
Taylor Wilsdon
4d17c83057 chore: release v1.14.0 2026-03-01 17:26:40 -05:00
Taylor Wilsdon
d20685cf78 Merge pull request #533 from taylorwilsdon/issues/526
enh: defusedxml
2026-03-01 17:26:06 -05:00
Taylor Wilsdon
d8567f2beb defusedxml 2026-03-01 17:22:34 -05:00
Taylor Wilsdon
4e48fd2bb5 Merge pull request #531 from taylorwilsdon/tool_consolidation
enh: Tool Consolidation
2026-03-01 17:09:02 -05:00
github-actions[bot]
985a5a780f style: auto-fix ruff lint and format 2026-03-01 22:07:23 +00:00
Taylor Wilsdon
ce296ded29 Merge branch 'tool_consolidation' of https://github.com/taylorwilsdon/google_workspace_mcp into tool_consolidation 2026-03-01 17:07:07 -05:00
Taylor Wilsdon
2c26338296 pr feedback 2026-03-01 17:06:55 -05:00
Taylor Wilsdon
c077b4b4b4 Update gappsscript/apps_script_tools.py
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-03-01 17:04:35 -05:00
Taylor Wilsdon
49073995c9 refac 2026-03-01 16:00:39 -05:00
Baris Sencan
3361ed29e6 Fix PKCE code verifier not being generated for initial OAuth flow
When `create_oauth_flow()` is called without an explicit `code_verifier`
(i.e. during the initial auth flow in `start_auth_flow()`), the function
never sets `autogenerate_code_verifier=True` on the Flow constructor.

oauthlib 3.2+ automatically adds `code_challenge` to the authorization
URL at the session level, so Google expects a matching `code_verifier`
during the token exchange. However, since `Flow.code_verifier` remains
`None`, that `None` gets stored in the session store and later passed
back during the callback — causing Google to reject the token exchange
with `(invalid_grant) Missing code verifier`.

The fix adds `autogenerate_code_verifier=True` in the else branch so
the Flow object generates and exposes a proper PKCE code verifier that
gets stored and reused during the callback token exchange.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 18:38:29 +00:00
github-actions[bot]
1f34a8b8cc style: auto-fix ruff lint and format 2026-03-01 18:26:42 +00:00
Taylor Wilsdon
d2651add30 merge 2026-03-01 13:26:14 -05:00
Taylor Wilsdon
e9c9c28844 cleanup 2026-03-01 13:23:40 -05:00
github-actions[bot]
eaab19b1ca style: auto-fix ruff lint and format 2026-03-01 17:54:47 +00:00
Taylor Wilsdon
5e4db385d3 refac 2026-03-01 12:50:40 -05:00
Taylor Wilsdon
241433937b Merge branch 'main' of https://github.com/taylorwilsdon/google_workspace_mcp into tool_consolidation 2026-03-01 12:36:10 -05:00
Taylor Wilsdon
6753531e9d refactor tools to consolidate all modify actions 2026-03-01 12:36:09 -05:00
Taylor Wilsdon
e89935abcd Merge pull request #530 from taylorwilsdon/issues/525
fix: issues/525 and issues/485
2026-03-01 12:27:05 -05:00
Taylor Wilsdon
3fc864928e fix issues/525 and issues/485 2026-03-01 12:06:23 -05:00
Taylor Wilsdon
51d027ec8a Merge pull request #524 from 04cb/fix/docs-hyphenation
Fix docs: hyphenation for compound adjectives
2026-03-01 11:02:31 -05:00
Taylor Wilsdon
7cd46d72c7 Merge pull request #528 from taylorwilsdon/feature/checkbox-understanding
enh: Docs Checkbox Handling
2026-03-01 09:40:22 -05:00
github-actions[bot]
2778bc75a6 style: auto-fix ruff lint and format 2026-03-01 14:31:38 +00:00
Taylor Wilsdon
47160a5fc3 bump version 2026-03-01 09:30:28 -05:00
Taylor Wilsdon
df9640b321 Add Google Docs checklist/checkbox recognition in markdown output
Detect checklist items in Google Docs API responses and render them as
- [ ] (unchecked) and - [x] (checked) in markdown, so LLMs understand
checkbox state instead of writing literal [x] or DONE text.

Closes #516

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:30:05 -05:00