@aaronsb/google-workspace-mcp 4.2.1 → 4.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +6 -5
  2. package/build/accounts/auth.d.ts +18 -2
  3. package/build/accounts/auth.js +31 -7
  4. package/build/accounts/auth.js.map +1 -1
  5. package/build/accounts/credentials.d.ts +20 -0
  6. package/build/accounts/credentials.js.map +1 -1
  7. package/build/accounts/oauth.d.ts +51 -1
  8. package/build/accounts/oauth.js +69 -5
  9. package/build/accounts/oauth.js.map +1 -1
  10. package/build/accounts/registry.d.ts +2 -1
  11. package/build/accounts/registry.js +2 -2
  12. package/build/accounts/registry.js.map +1 -1
  13. package/build/factory/manifest/contacts.yaml +247 -0
  14. package/build/factory/manifest/meet.yaml +78 -0
  15. package/build/factory/patches.js +2 -0
  16. package/build/factory/patches.js.map +1 -1
  17. package/build/factory/safety.js +4 -0
  18. package/build/factory/safety.js.map +1 -1
  19. package/build/google/descriptor.d.ts +8 -0
  20. package/build/google/descriptor.js +9 -2
  21. package/build/google/descriptor.js.map +1 -1
  22. package/build/google/descriptor.json +1883 -0
  23. package/build/google/methods.d.ts +4 -1
  24. package/build/server/handler.js +16 -1
  25. package/build/server/handler.js.map +1 -1
  26. package/build/server/handlers/accounts.js +100 -6
  27. package/build/server/handlers/accounts.js.map +1 -1
  28. package/build/server/queue.d.ts +1 -1
  29. package/build/server/queue.js +16 -1
  30. package/build/server/queue.js.map +1 -1
  31. package/build/server/tools.js +31 -1
  32. package/build/server/tools.js.map +1 -1
  33. package/build/services/contacts/patch.d.ts +31 -0
  34. package/build/services/contacts/patch.js +496 -0
  35. package/build/services/contacts/patch.js.map +1 -0
  36. package/build/services/meet/patch.js +202 -0
  37. package/build/services/meet/patch.js.map +1 -1
  38. package/build/version.d.ts +1 -1
  39. package/build/version.js +1 -1
  40. package/package.json +1 -1
@@ -19,12 +19,14 @@ export type DriveMethod = 'about.get' | 'accessproposals.get' | 'accessproposals
19
19
  export type GmailMethod = 'users.drafts.create' | 'users.drafts.delete' | 'users.drafts.get' | 'users.drafts.list' | 'users.drafts.send' | 'users.drafts.update' | 'users.getProfile' | 'users.history.list' | 'users.labels.create' | 'users.labels.delete' | 'users.labels.get' | 'users.labels.list' | 'users.labels.patch' | 'users.labels.update' | 'users.messages.attachments.get' | 'users.messages.batchDelete' | 'users.messages.batchModify' | 'users.messages.delete' | 'users.messages.get' | 'users.messages.import' | 'users.messages.insert' | 'users.messages.list' | 'users.messages.modify' | 'users.messages.send' | 'users.messages.trash' | 'users.messages.untrash' | 'users.settings.cse.identities.create' | 'users.settings.cse.identities.delete' | 'users.settings.cse.identities.get' | 'users.settings.cse.identities.list' | 'users.settings.cse.identities.patch' | 'users.settings.cse.keypairs.create' | 'users.settings.cse.keypairs.disable' | 'users.settings.cse.keypairs.enable' | 'users.settings.cse.keypairs.get' | 'users.settings.cse.keypairs.list' | 'users.settings.cse.keypairs.obliterate' | 'users.settings.delegates.create' | 'users.settings.delegates.delete' | 'users.settings.delegates.get' | 'users.settings.delegates.list' | 'users.settings.filters.create' | 'users.settings.filters.delete' | 'users.settings.filters.get' | 'users.settings.filters.list' | 'users.settings.forwardingAddresses.create' | 'users.settings.forwardingAddresses.delete' | 'users.settings.forwardingAddresses.get' | 'users.settings.forwardingAddresses.list' | 'users.settings.getAutoForwarding' | 'users.settings.getImap' | 'users.settings.getLanguage' | 'users.settings.getPop' | 'users.settings.getVacation' | 'users.settings.sendAs.create' | 'users.settings.sendAs.delete' | 'users.settings.sendAs.get' | 'users.settings.sendAs.list' | 'users.settings.sendAs.patch' | 'users.settings.sendAs.smimeInfo.delete' | 'users.settings.sendAs.smimeInfo.get' | 'users.settings.sendAs.smimeInfo.insert' | 'users.settings.sendAs.smimeInfo.list' | 'users.settings.sendAs.smimeInfo.setDefault' | 'users.settings.sendAs.update' | 'users.settings.sendAs.verify' | 'users.settings.updateAutoForwarding' | 'users.settings.updateImap' | 'users.settings.updateLanguage' | 'users.settings.updatePop' | 'users.settings.updateVacation' | 'users.stop' | 'users.threads.delete' | 'users.threads.get' | 'users.threads.list' | 'users.threads.modify' | 'users.threads.trash' | 'users.threads.untrash' | 'users.watch';
20
20
  /** 18 methods declared by Google for meet v2. */
21
21
  export type MeetMethod = 'conferenceRecords.get' | 'conferenceRecords.list' | 'conferenceRecords.participants.get' | 'conferenceRecords.participants.list' | 'conferenceRecords.participants.participantSessions.get' | 'conferenceRecords.participants.participantSessions.list' | 'conferenceRecords.recordings.get' | 'conferenceRecords.recordings.list' | 'conferenceRecords.smartNotes.get' | 'conferenceRecords.smartNotes.list' | 'conferenceRecords.transcripts.entries.get' | 'conferenceRecords.transcripts.entries.list' | 'conferenceRecords.transcripts.get' | 'conferenceRecords.transcripts.list' | 'spaces.create' | 'spaces.endActiveConference' | 'spaces.get' | 'spaces.patch';
22
+ /** 24 methods declared by Google for people v1. */
23
+ export type PeopleMethod = 'contactGroups.batchGet' | 'contactGroups.create' | 'contactGroups.delete' | 'contactGroups.get' | 'contactGroups.list' | 'contactGroups.members.modify' | 'contactGroups.update' | 'otherContacts.copyOtherContactToMyContactsGroup' | 'otherContacts.list' | 'otherContacts.search' | 'people.batchCreateContacts' | 'people.batchDeleteContacts' | 'people.batchUpdateContacts' | 'people.connections.list' | 'people.createContact' | 'people.deleteContact' | 'people.deleteContactPhoto' | 'people.get' | 'people.getBatchGet' | 'people.listDirectoryPeople' | 'people.searchContacts' | 'people.searchDirectoryPeople' | 'people.updateContact' | 'people.updateContactPhoto';
22
24
  /** 17 methods declared by Google for sheets v4. */
23
25
  export type SheetsMethod = 'spreadsheets.batchUpdate' | 'spreadsheets.create' | 'spreadsheets.developerMetadata.get' | 'spreadsheets.developerMetadata.search' | 'spreadsheets.get' | 'spreadsheets.getByDataFilter' | 'spreadsheets.sheets.copyTo' | 'spreadsheets.values.append' | 'spreadsheets.values.batchClear' | 'spreadsheets.values.batchClearByDataFilter' | 'spreadsheets.values.batchGet' | 'spreadsheets.values.batchGetByDataFilter' | 'spreadsheets.values.batchUpdate' | 'spreadsheets.values.batchUpdateByDataFilter' | 'spreadsheets.values.clear' | 'spreadsheets.values.get' | 'spreadsheets.values.update';
24
26
  /** 14 methods declared by Google for tasks v1. */
25
27
  export type TasksMethod = 'tasklists.delete' | 'tasklists.get' | 'tasklists.insert' | 'tasklists.list' | 'tasklists.patch' | 'tasklists.update' | 'tasks.clear' | 'tasks.delete' | 'tasks.get' | 'tasks.insert' | 'tasks.list' | 'tasks.move' | 'tasks.patch' | 'tasks.update';
26
28
  /** Every service in the descriptor. */
27
- export type GoogleService = 'calendar' | 'docs' | 'drive' | 'gmail' | 'meet' | 'sheets' | 'tasks';
29
+ export type GoogleService = 'calendar' | 'docs' | 'drive' | 'gmail' | 'meet' | 'people' | 'sheets' | 'tasks';
28
30
  /** service -> the methods it declares. Indexing this is what makes `call()` safe. */
29
31
  export interface ServiceMethods {
30
32
  calendar: CalendarMethod;
@@ -32,6 +34,7 @@ export interface ServiceMethods {
32
34
  drive: DriveMethod;
33
35
  gmail: GmailMethod;
34
36
  meet: MeetMethod;
37
+ people: PeopleMethod;
35
38
  sheets: SheetsMethod;
36
39
  tasks: TasksMethod;
37
40
  }
@@ -26,12 +26,27 @@ const domainHandlers = {
26
26
  for (const tool of generatedTools) {
27
27
  domainHandlers[tool.schema.name] = tool.handler;
28
28
  }
29
+ /**
30
+ * What a queued operation may call: every tool, including `queue_operations`.
31
+ *
32
+ * A queue is a tool call like any other, so the set of things it can name is the set of
33
+ * tools — no carve-out, and nothing for a caller to discover by being refused. Nesting is
34
+ * bounded by depth inside handleQueue rather than by omission here, so the limit arrives
35
+ * as a sentence saying what it is instead of an "Unknown tool" for something the server
36
+ * plainly advertises.
37
+ */
38
+ function queueableHandlers(depth) {
39
+ return {
40
+ ...domainHandlers,
41
+ queue_operations: (params) => handleQueue(params, queueableHandlers(depth + 1), depth + 1),
42
+ };
43
+ }
29
44
  export async function handleToolCall(toolName, params) {
30
45
  const currentEpoch = advanceEpoch();
31
46
  const tracker = getSessionTracker();
32
47
  // Queue wraps the domain handlers (each queued op also advances the epoch)
33
48
  if (toolName === 'queue_operations') {
34
- const result = await handleQueue(params, domainHandlers);
49
+ const result = await handleQueue(params, queueableHandlers(1), 1);
35
50
  const queueEmail = extractEmailFromQueue(params);
36
51
  if (queueEmail) {
37
52
  await tracker.ensureBaseline(queueEmail, currentEpoch);
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/server/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/server/handler.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { listAccounts, removeAccount, authenticateAndAddAccount } from '../../accounts/registry.js';
2
2
  import { checkAccountStatus, reauthWithServices } from '../../accounts/auth.js';
3
+ import { scopesForServices, ALL_SERVICES } from '../../accounts/oauth.js';
3
4
  import { getAccessToken, invalidateToken } from '../../accounts/token-service.js';
4
5
  import { nextSteps } from '../formatting/next-steps.js';
5
6
  import { getActivePolicies } from '../../factory/safety.js';
@@ -24,6 +25,19 @@ function formatAccountList(accounts) {
24
25
  function formatStatus(status) {
25
26
  const valid = status.tokenValid ? '[x] Token valid' : '[ ] Token invalid';
26
27
  const refresh = status.hasRefreshToken ? '[x] Has refresh token' : '[ ] No refresh token';
28
+ // Say what this account can DO, not just which scope strings it holds — the scope list
29
+ // below is accurate and takes a Google reference to read.
30
+ //
31
+ // `access` is the level ASKED FOR. An account confirmed through confirmWriteAccess is
32
+ // stored as 'read' while holding write scopes for the services that had no read-only
33
+ // option, so the declared level alone would assert something false. The services that
34
+ // stayed writable are stored with it and named here.
35
+ const stillWritable = status.stillAllowWrites ?? [];
36
+ const level = status.access === 'read'
37
+ ? (stillWritable.length
38
+ ? `[~] Read-only, except: **${stillWritable.join(', ')}** — those have no read-only option and can still be changed`
39
+ : '[x] Read-only — this account cannot send, edit or delete')
40
+ : '[x] Full access — this account can create, edit and delete';
27
41
  const scopeList = status.scopes.length > 0
28
42
  ? status.scopes.map(s => `- ${s.replace('https://www.googleapis.com/auth/', '')}`).join('\n')
29
43
  : '(no scopes)';
@@ -33,6 +47,7 @@ function formatStatus(status) {
33
47
  '',
34
48
  valid,
35
49
  refresh,
50
+ level,
36
51
  `**Scopes (${status.scopeCount}):**`,
37
52
  scopeList,
38
53
  ].join('\n'),
@@ -41,9 +56,66 @@ function formatStatus(status) {
41
56
  tokenValid: status.tokenValid,
42
57
  scopeCount: status.scopeCount,
43
58
  scopes: status.scopes,
59
+ access: status.access,
60
+ stillAllowWrites: status.stillAllowWrites ?? [],
44
61
  },
45
62
  };
46
63
  }
64
+ /**
65
+ * Read the requested access level, rejecting anything that is not one of the two.
66
+ *
67
+ * This was a cast. The server registers tools through the low-level
68
+ * `setRequestHandler(CallToolRequestSchema, …)` path, which does NOT validate arguments
69
+ * against `inputSchema` — the enum in tools.ts is advertisement, not enforcement. So
70
+ * `access: 'read-only'` (a plausible thing to send, since the description says "read-only"
71
+ * three times) fell through `|| 'readwrite'` unchanged, requested FULL scopes, produced an
72
+ * empty stillAllowWrites, skipped the confirmation gate entirely, and wrote a credential
73
+ * claiming read. Asking for read and silently receiving write is the one thing this
74
+ * feature exists to prevent.
75
+ */
76
+ function requestedAccess(params) {
77
+ const raw = params.access ?? 'readwrite';
78
+ if (raw !== 'read' && raw !== 'readwrite') {
79
+ throw new Error(`access must be 'read' or 'readwrite', got '${String(raw)}'. ` +
80
+ `Use 'read' for an account that should only look things up.`);
81
+ }
82
+ return raw;
83
+ }
84
+ /**
85
+ * Stop before the browser opens when read-only access was asked for and some services
86
+ * cannot provide it.
87
+ *
88
+ * Reporting this afterwards is too late: by then the token exists carrying write
89
+ * permissions, and taking it back means a manual trip to Google's permissions page. So
90
+ * the first call returns this instead of authorizing anything, and the caller either
91
+ * confirms or drops those services from the list.
92
+ *
93
+ * Returns null when there is nothing to warn about.
94
+ */
95
+ function writeAccessWarning(stillAllowWrites, params, retry,
96
+ /**
97
+ * `authenticate` has no `services` parameter — it always requests every service — so
98
+ * telling its caller to drop one from `services` is advice they cannot take. That path
99
+ * gets pointed at `scopes`, which does take a list.
100
+ */
101
+ canNarrowServices) {
102
+ if (stillAllowWrites.length === 0)
103
+ return null;
104
+ if (params.confirmWriteAccess === true)
105
+ return null;
106
+ const names = stillAllowWrites.join(', ');
107
+ return {
108
+ text: `Read-only access was requested, but Google has no read-only permission for: **${names}**.\n\n` +
109
+ `Authorizing anyway would let this account change ${stillAllowWrites.length === 1 ? 'that service' : 'those services'}, ` +
110
+ `not just read from ${stillAllowWrites.length === 1 ? 'it' : 'them'}. Nothing has been authorized yet.\n\n` +
111
+ `Either:\n` +
112
+ (canNarrowServices
113
+ ? `- Leave ${names} out of \`services\` and re-run, to keep this account read-only.\n`
114
+ : `- Authorize with \`operation: 'scopes'\` instead, listing only the services you want read-only.\n`) +
115
+ `- Or re-run with \`confirmWriteAccess: true\` to accept it: ${retry}\n`,
116
+ refs: { status: 'needs-confirmation', stillAllowWrites },
117
+ };
118
+ }
47
119
  export async function handleAccounts(params) {
48
120
  const operation = params.operation;
49
121
  switch (operation) {
@@ -72,13 +144,24 @@ export async function handleAccounts(params) {
72
144
  }
73
145
  const category = params.category || 'personal';
74
146
  const description = params.description;
75
- const result = await authenticateAndAddAccount(clientId, clientSecret, category, description);
147
+ const access = requestedAccess(params);
148
+ // Check what this access level would actually grant BEFORE opening a browser.
149
+ const warning = writeAccessWarning(scopesForServices(ALL_SERVICES, access).stillAllowWrites, params, `manage_accounts {"operation":"authenticate","access":"read","confirmWriteAccess":true}`, false);
150
+ if (warning)
151
+ return warning;
152
+ const result = await authenticateAndAddAccount(clientId, clientSecret, category, description, access);
153
+ const grantNote = result.stillAllowWrites?.length
154
+ ? `\n\n> Read-only was requested. ${result.stillAllowWrites.join(', ')} had no read-only option and can still be changed by this account.`
155
+ : '';
76
156
  const statusText = result.status === 'success'
77
- ? `Account authenticated: **${result.account}**`
157
+ ? `Account authenticated: **${result.account}** (${access === 'read' ? 'read-only' : 'full access'})${grantNote}`
78
158
  : `Authentication failed: ${result.error}`;
79
159
  return {
80
160
  text: statusText + nextSteps('accounts', 'authenticate'),
81
- refs: { status: result.status, account: result.account, email: result.account },
161
+ refs: {
162
+ status: result.status, account: result.account, email: result.account,
163
+ access, stillAllowWrites: result.stillAllowWrites ?? [],
164
+ },
82
165
  };
83
166
  }
84
167
  case 'remove': {
@@ -125,13 +208,24 @@ export async function handleAccounts(params) {
125
208
  if (!clientId || !clientSecret) {
126
209
  throw new Error('GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET environment variables are required');
127
210
  }
128
- const result = await reauthWithServices(clientId, clientSecret, services);
211
+ const access = requestedAccess(params);
212
+ // Same gate as authenticate — say it before the browser opens, not after.
213
+ const warning = writeAccessWarning(scopesForServices(services, access).stillAllowWrites, params, `manage_accounts {"operation":"scopes","email":"${email}","services":"${services}","access":"read","confirmWriteAccess":true}`, true);
214
+ if (warning)
215
+ return warning;
216
+ const result = await reauthWithServices(clientId, clientSecret, services, access);
217
+ const grantNote = result.stillAllowWrites?.length
218
+ ? `\n\n> Read-only was requested. ${result.stillAllowWrites.join(', ')} had no read-only option and can still be changed by this account.`
219
+ : '';
129
220
  const statusText = result.status === 'success'
130
- ? `Scopes updated for **${result.account}** with services: ${services}`
221
+ ? `Scopes updated for **${result.account}**: ${services} (${access === 'read' ? 'read-only' : 'full access'})${grantNote}`
131
222
  : `Scope update failed: ${result.error}`;
132
223
  return {
133
224
  text: statusText + nextSteps('accounts', 'scopes', { email }),
134
- refs: { status: result.status, email: result.account, services },
225
+ refs: {
226
+ status: result.status, email: result.account, services,
227
+ access, stillAllowWrites: result.stillAllowWrites ?? [],
228
+ },
135
229
  };
136
230
  }
137
231
  case 'capabilities': {
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/server/handlers/accounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/server/handlers/accounts.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,5 @@
7
7
  */
8
8
  import type { HandlerResponse } from './handler.js';
9
9
  type ToolHandler = (params: Record<string, unknown>) => Promise<HandlerResponse>;
10
- export declare function handleQueue(params: Record<string, unknown>, handlers: Record<string, ToolHandler>): Promise<HandlerResponse>;
10
+ export declare function handleQueue(params: Record<string, unknown>, handlers: Record<string, ToolHandler>, depth?: number): Promise<HandlerResponse>;
11
11
  export {};
@@ -11,7 +11,22 @@ function stripNextSteps(text) {
11
11
  const idx = text.indexOf(NEXT_STEPS_SEPARATOR);
12
12
  return idx >= 0 ? text.slice(0, idx) : text;
13
13
  }
14
- export async function handleQueue(params, handlers) {
14
+ /**
15
+ * How deeply queues may nest.
16
+ *
17
+ * A queue is a tool call, so a queue can hold one — that is what makes the tool list
18
+ * uniform, and it is useful: a nested queue with `onError: 'continue'` fails inside
19
+ * itself without bailing its parent. What it cannot be is unbounded, because each level
20
+ * multiplies: 10 operations per queue means this ceiling is 1,000 calls, which is already
21
+ * more than any real workflow and enough to be worth naming.
22
+ */
23
+ const MAX_QUEUE_DEPTH = 3;
24
+ export async function handleQueue(params, handlers, depth = 1) {
25
+ if (depth > MAX_QUEUE_DEPTH) {
26
+ throw new Error(`queue_operations nested more than ${MAX_QUEUE_DEPTH} deep. Each level multiplies the ` +
27
+ `work — at 10 operations per queue that ceiling is already 1,000 calls. Flatten the ` +
28
+ `inner queues into their parent.`);
29
+ }
15
30
  const operations = params.operations;
16
31
  if (!Array.isArray(operations) || operations.length === 0) {
17
32
  throw new Error('operations array is required and must not be empty');
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/server/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/server/queue.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,15 @@ const handCodedSchemas = [
22
22
  category: { type: 'string', enum: ['personal', 'work', 'other'], description: 'For authenticate (default: personal)' },
23
23
  description: { type: 'string', description: 'For authenticate — optional label' },
24
24
  services: { type: 'string', description: 'For scopes — comma-separated service names (e.g. gmail,drive,calendar,sheets)' },
25
+ access: {
26
+ type: 'string',
27
+ enum: ['read', 'readwrite'],
28
+ description: "How much this account may do. 'readwrite' (default) is full access. 'read' asks Google for read-only permissions instead, so the account can look things up but cannot send, edit or delete. Some services have no read-only option — you will be told which before the browser opens, and nothing is authorized until you confirm.",
29
+ },
30
+ confirmWriteAccess: {
31
+ type: 'boolean',
32
+ description: "Set true to go ahead when 'read' was asked for but some services can only be granted full access. Only needed after a first call has told you which ones.",
33
+ },
25
34
  },
26
35
  required: ['operation'],
27
36
  additionalProperties: false,
@@ -108,7 +117,11 @@ const handCodedSchemas = [
108
117
  properties: {
109
118
  tool: {
110
119
  type: 'string',
111
- enum: ['manage_email', 'manage_calendar', 'manage_drive', 'manage_sheets', 'manage_docs', 'manage_tasks', 'manage_meet', 'manage_accounts', 'manage_scratchpad', 'manage_workspace'],
120
+ // Filled in below from the tools this server actually advertises. Written
121
+ // out by hand, this list silently omitted every tool added after it: a new
122
+ // tool worked on its own and was unreachable from a queue, with nothing to
123
+ // say why. manage_contacts was the one that surfaced it.
124
+ enum: [],
112
125
  description: 'Tool to call',
113
126
  },
114
127
  args: {
@@ -143,6 +156,23 @@ export const toolSchemas = [
143
156
  ...handCodedSchemas,
144
157
  ...factorySchemas,
145
158
  ];
159
+ /**
160
+ * Point queue_operations at every tool this server advertises — itself included.
161
+ *
162
+ * Done here rather than in the literal above because the factory schemas are not built
163
+ * until `generatedTools` has run, and queue_operations is declared alongside the
164
+ * hand-coded tools that come first.
165
+ *
166
+ * There is no carve-out. A queue is a tool call, so the tools a queue may name are the
167
+ * tools; nesting is bounded by depth in handleQueue, which answers with a sentence saying
168
+ * what the limit is, rather than by omission here, which would answer a plainly
169
+ * advertised tool with "Unknown tool".
170
+ */
171
+ const queueTool = handCodedSchemas.find(t => t.name === 'queue_operations');
172
+ if (queueTool) {
173
+ const operations = queueTool.inputSchema.properties.operations;
174
+ operations.items.properties.tool.enum = toolSchemas.map(t => t.name);
175
+ }
146
176
  export function getToolSchema(name) {
147
177
  return toolSchemas.find(t => t.name === name);
148
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/server/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/server/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Contacts patch — domain-specific hooks for the People API.
3
+ *
4
+ * The People API returns a Person as PARALLEL ARRAYS. A name is not a string, it is
5
+ * `names: [{ displayName, metadata: { primary } }, ...]`; an email is not a string, it
6
+ * is `emailAddresses: [...]`. Every field works this way, one array per field, each
7
+ * entry carrying its own metadata, and the entry that counts is flagged rather than
8
+ * ordered. Handed to the generic formatter this renders as a person with no name and
9
+ * no address — the same failure mode as a Docs read that returned metadata and no text.
10
+ *
11
+ * The second reshaping job is the envelope. Six read operations, four different keys
12
+ * for "the people you asked for":
13
+ *
14
+ * people.connections.list -> { connections: [Person] }
15
+ * otherContacts.list -> { otherContacts: [Person] }
16
+ * people.*DirectoryPeople -> { people: [Person] }
17
+ * *.search -> { results: [{ person: Person }] }
18
+ *
19
+ * The agent picks an operation; it should not then have to know which of four shapes
20
+ * came back.
21
+ */
22
+ import type { ServicePatch } from '../../factory/types.js';
23
+ /**
24
+ * Google's sort values are LAST_MODIFIED_DESCENDING and friends. The manifest advertises
25
+ * `firstName` / `lastName` / `lastModified` and this maps them, so the agent does not
26
+ * carry an API constant it can only get subtly wrong.
27
+ */
28
+ export declare const SORT_ORDERS: Record<string, string>;
29
+ /** Test seam: the warmup is per-process state, and a test must be able to reset it. */
30
+ export declare function resetWarmupCache(): void;
31
+ export declare const contactsPatch: ServicePatch;