feat(tools): add Google Calendar tools and register Gmail/GCal in daemon

Add calendar.today, calendar.list, calendar.search tools mirroring the
Gmail tool pattern. Includes gcal-auth CLI command, config schema, tool
policy entries (messaging/coding profiles + group:gcal), and 17 tests.
Also wires up gmail and gcal tool registration in the daemon and TUI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
William Valentin
2026-02-10 11:40:53 -08:00
parent 4cc29f534a
commit 94264e848c
11 changed files with 1386 additions and 2 deletions
+12
View File
@@ -20,6 +20,11 @@ const PROFILE_TOOLS: Record<ToolProfile, Set<string>> = {
'memory.write',
'memory.search',
'web.search',
'gmail.list',
'gmail.search',
'calendar.today',
'calendar.list',
'calendar.search',
]),
coding: new Set([
'file.read',
@@ -30,6 +35,11 @@ const PROFILE_TOOLS: Record<ToolProfile, Set<string>> = {
'memory.write',
'memory.search',
'web.search',
'gmail.list',
'gmail.search',
'calendar.today',
'calendar.list',
'calendar.search',
'file.write',
'file.edit',
'file.patch',
@@ -57,6 +67,8 @@ export const TOOL_GROUPS: Record<string, string[]> = {
'group:runtime': ['shell.exec', 'process.start', 'process.output', 'process.status', 'process.kill', 'process.list'],
'group:web': ['web.fetch', 'web.search', 'browser.navigate', 'browser.screenshot', 'browser.click', 'browser.type', 'browser.content', 'browser.eval'],
'group:memory': ['memory.read', 'memory.write', 'memory.search'],
'group:gmail': ['gmail.list', 'gmail.search'],
'group:gcal': ['calendar.today', 'calendar.list', 'calendar.search'],
};
/** Expand group references in a list of tool names/patterns. */