@aaronsb/google-workspace-mcp 4.6.1 → 4.8.0

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 (36) hide show
  1. package/build/accounts/oauth.js +6 -1
  2. package/build/accounts/oauth.js.map +1 -1
  3. package/build/coverage/compare.js +11 -1
  4. package/build/coverage/compare.js.map +1 -1
  5. package/build/factory/manifest/gmail.yaml +257 -6
  6. package/build/factory/safety.js +35 -11
  7. package/build/factory/safety.js.map +1 -1
  8. package/build/server/call-context.d.ts +12 -0
  9. package/build/server/call-context.js +20 -0
  10. package/build/server/call-context.js.map +1 -0
  11. package/build/server/handler.d.ts +4 -0
  12. package/build/server/handler.js +9 -1
  13. package/build/server/handler.js.map +1 -1
  14. package/build/server/preview-gate.d.ts +38 -0
  15. package/build/server/preview-gate.js +107 -0
  16. package/build/server/preview-gate.js.map +1 -0
  17. package/build/server/preview-sets.d.ts +25 -0
  18. package/build/server/preview-sets.js +58 -0
  19. package/build/server/preview-sets.js.map +1 -0
  20. package/build/services/gmail/filters.d.ts +81 -0
  21. package/build/services/gmail/filters.js +457 -0
  22. package/build/services/gmail/filters.js.map +1 -0
  23. package/build/services/gmail/hydrate.d.ts +29 -0
  24. package/build/services/gmail/hydrate.js +116 -0
  25. package/build/services/gmail/hydrate.js.map +1 -0
  26. package/build/services/gmail/labels.d.ts +31 -0
  27. package/build/services/gmail/labels.js +108 -0
  28. package/build/services/gmail/labels.js.map +1 -0
  29. package/build/services/gmail/modify-matching.d.ts +16 -0
  30. package/build/services/gmail/modify-matching.js +149 -0
  31. package/build/services/gmail/modify-matching.js.map +1 -0
  32. package/build/services/gmail/patch.js +76 -116
  33. package/build/services/gmail/patch.js.map +1 -1
  34. package/build/version.d.ts +1 -1
  35. package/build/version.js +1 -1
  36. package/package.json +1 -1
@@ -8,7 +8,12 @@ const GOOGLE_USERINFO_URL = 'https://www.googleapis.com/oauth2/v3/userinfo';
8
8
  const CALLBACK_TIMEOUT = 5 * 60_000; // 5 minutes
9
9
  /** Service name → OAuth scope URL(s). */
10
10
  export const SERVICE_SCOPE_MAP = {
11
- gmail: ['https://www.googleapis.com/auth/gmail.modify'],
11
+ // settings.basic is the only scope Google accepts for creating or deleting a filter
12
+ // (ADR-309). Reading filters needs only gmail.modify or gmail.readonly.
13
+ gmail: [
14
+ 'https://www.googleapis.com/auth/gmail.modify',
15
+ 'https://www.googleapis.com/auth/gmail.settings.basic',
16
+ ],
12
17
  drive: ['https://www.googleapis.com/auth/drive'],
13
18
  calendar: ['https://www.googleapis.com/auth/calendar'],
14
19
  sheets: ['https://www.googleapis.com/auth/spreadsheets'],
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/accounts/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/accounts/oauth.ts"],"names":[],"mappings":"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"}
@@ -24,13 +24,23 @@ function buildCoveredPaths(manifest) {
24
24
  // (ADR-308). Counting only `resource` reported the five batch methods the server
25
25
  // genuinely calls as gaps — and left this file disagreeing with docs/api-surface.md,
26
26
  // which is generated from the same manifest.
27
+ //
28
+ // Several operations can share one method (search, triage and previewModifyMatching
29
+ // all call users.messages.list). A parameter any of them maps is covered, so the
30
+ // sets are merged; keeping only the last operation's reported its gaps as the method's.
27
31
  for (const path of [opDef.resource, opDef.batch?.resource]) {
28
32
  if (!path)
29
33
  continue;
34
+ const existing = covered.get(path);
35
+ if (existing) {
36
+ for (const name of paramNames)
37
+ existing.params.add(name);
38
+ continue;
39
+ }
30
40
  covered.set(path, {
31
41
  service: serviceDef.google_service,
32
42
  opName,
33
- params: paramNames,
43
+ params: new Set(paramNames),
34
44
  });
35
45
  }
36
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/coverage/compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/coverage/compare.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ operations:
8
8
 
9
9
  search:
10
10
  type: list
11
- description: "find emails by query"
11
+ description: "find emails by query. Says when more results exist than the page shows; continue with pageToken, or pass idsOnly to collect up to 500 ids per page for bulk_operations."
12
12
  resource: users.messages.list
13
13
  params:
14
14
  query:
@@ -17,9 +17,16 @@ operations:
17
17
  maps_to: q
18
18
  maxResults:
19
19
  type: number
20
- description: "Max results (default: 10, max: 50)"
20
+ description: "Max results per page (default 10, max 50). On `search` with idsOnly, default and max 500."
21
21
  default: 10
22
22
  max: 50
23
+ pageToken:
24
+ type: string
25
+ description: "Continue a list from where the previous page stopped: pass the pageToken its response gave. Absent from a response means that response was the last page."
26
+ idsOnly:
27
+ type: boolean
28
+ description: "On `search`: return only message ids, up to 500 per page, without fetching each message's headers. For counting a large result or collecting ids to pass to bulk_operations batch mode (e.g. modify)."
29
+ client_only: true
23
30
  defaults:
24
31
  userId: me
25
32
  hydration:
@@ -169,6 +176,10 @@ operations:
169
176
  type: list
170
177
  description: "unread inbox summary (sender, subject, date)"
171
178
  resource: users.messages.list
179
+ params:
180
+ pageToken:
181
+ type: string
182
+ description: "Continue a list from where the previous page stopped: pass the pageToken its response gave. Absent from a response means that response was the last page."
172
183
  defaults:
173
184
  userId: me
174
185
  q: "is:unread in:inbox"
@@ -230,9 +241,12 @@ operations:
230
241
  maps_to: q
231
242
  maxResults:
232
243
  type: number
233
- description: "Max results (default: 10, max: 50)"
244
+ description: "Max results per page (default 10, max 50). On `search` with idsOnly, default and max 500."
234
245
  default: 10
235
246
  max: 50
247
+ pageToken:
248
+ type: string
249
+ description: "Continue a list from where the previous page stopped: pass the pageToken its response gave. Absent from a response means that response was the last page."
236
250
  defaults:
237
251
  userId: me
238
252
 
@@ -297,10 +311,56 @@ operations:
297
311
  maps_to: id
298
312
  addLabelIds:
299
313
  type: string
300
- description: "Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123)"
314
+ description: "Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123). On modify, to this message; on the filter operations, to each matching message as it arrives; on the *ModifyMatching operations, to every message the preview counted."
301
315
  removeLabelIds:
302
316
  type: string
303
- description: "Comma-separated label IDs to remove (e.g. UNREAD, INBOX to archive)"
317
+ description: "Comma-separated label IDs to remove (e.g. UNREAD to mark read, INBOX to archive). On modify, from this message; on the filter operations, from each matching message as it arrives; on the *ModifyMatching operations, from every message the preview counted."
318
+ defaults:
319
+ userId: me
320
+
321
+ # --- Label changes over a whole query (ADR-310) ---
322
+
323
+ # The server resolves the query at preview and holds the ids, so they never pass through
324
+ # the conversation; the apply changes exactly that set. Handlers in gmail/modify-matching.ts.
325
+
326
+ previewModifyMatching:
327
+ type: list
328
+ description: "evaluate a label change over everything a query matches, without making it: the exact count (up to 10,000), a sample, and what the change does to each message. Holds the matched set and returns the previewToken modifyMatching needs. No ids are returned beyond the sample."
329
+ resource: users.messages.list
330
+ params:
331
+ query:
332
+ type: string
333
+ description: 'Gmail search query (e.g. "from:alice subject:meeting has:attachment")'
334
+ required: true
335
+ maps_to: q
336
+ addLabelIds:
337
+ type: string
338
+ description: "Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123). On modify, to this message; on the filter operations, to each matching message as it arrives; on the *ModifyMatching operations, to every message the preview counted."
339
+ removeLabelIds:
340
+ type: string
341
+ description: "Comma-separated label IDs to remove (e.g. UNREAD to mark read, INBOX to archive). On modify, from this message; on the filter operations, from each matching message as it arrives; on the *ModifyMatching operations, from every message the preview counted."
342
+ defaults:
343
+ userId: me
344
+
345
+ modifyMatching:
346
+ type: action
347
+ description: "apply a previewed label change (archive, mark read, label, trash) to exactly the messages previewModifyMatching counted, and report how many changed. Requires its previewToken from an earlier call, within 30 minutes; each preview applies once."
348
+ resource: users.messages.batchModify
349
+ params:
350
+ query:
351
+ type: string
352
+ description: 'Gmail search query (e.g. "from:alice subject:meeting has:attachment")'
353
+ required: true
354
+ maps_to: q
355
+ addLabelIds:
356
+ type: string
357
+ description: "Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123). On modify, to this message; on the filter operations, to each matching message as it arrives; on the *ModifyMatching operations, to every message the preview counted."
358
+ removeLabelIds:
359
+ type: string
360
+ description: "Comma-separated label IDs to remove (e.g. UNREAD to mark read, INBOX to archive). On modify, from this message; on the filter operations, from each matching message as it arrives; on the *ModifyMatching operations, from every message the preview counted."
361
+ previewToken:
362
+ type: string
363
+ description: "The token the preview returned for this exact change: previewFilter for createFilter and updateFilter, previewModifyMatching for modifyMatching. Required: the write runs only after its preview has been seen."
304
364
  defaults:
305
365
  userId: me
306
366
 
@@ -333,6 +393,194 @@ operations:
333
393
  defaults:
334
394
  userId: me
335
395
 
396
+ # --- Filters (ADR-309) ---
397
+
398
+ # A filter acts on mail that has not arrived yet, so a create or a replace is gated: it
399
+ # runs only with the token previewFilter mints over that exact change. The handlers are
400
+ # in gmail/filters.ts. `resource` names the Google method whose scopes the access policy
401
+ # checks (ADR-202); previewFilter is all reads, and updateFilter's create and delete need
402
+ # the same scope.
403
+
404
+ filters:
405
+ type: list
406
+ description: "list the account's filters: id, criteria and what each does. Gmail allows 1,000."
407
+ resource: users.settings.filters.list
408
+ defaults:
409
+ userId: me
410
+
411
+ getFilter:
412
+ type: detail
413
+ description: "one filter's criteria and actions in words, plus the parameters that recreate or edit it"
414
+ resource: users.settings.filters.get
415
+ params:
416
+ filterId:
417
+ type: string
418
+ description: "Filter id, as listed by `filters`. On previewFilter, the filter a change would replace; leave it out to preview a new filter."
419
+ maps_to: id
420
+ defaults:
421
+ userId: me
422
+
423
+ previewFilter:
424
+ type: list
425
+ description: "evaluate a filter without creating it: how many messages it matches today and a sample, what each action does, and any duplicate or overlapping filter. Returns the previewToken createFilter needs; with filterId, previews replacing that filter and returns the token updateFilter needs. Criteria are the match* params; actions are addLabelIds, removeLabelIds and forwardTo. A good criterion is the query of a search that already found the mail."
426
+ resource: users.settings.filters.list
427
+ params:
428
+ filterId:
429
+ type: string
430
+ description: "Filter id, as listed by `filters`. On previewFilter, the filter a change would replace; leave it out to preview a new filter."
431
+ maps_to: id
432
+ matchFrom:
433
+ type: string
434
+ description: "Filter criterion: sender, e.g. billing@vendor.com or @vendor.com"
435
+ matchTo:
436
+ type: string
437
+ description: "Filter criterion: recipient, e.g. a list or alias address"
438
+ matchSubject:
439
+ type: string
440
+ description: "Filter criterion: words in the subject"
441
+ matchQuery:
442
+ type: string
443
+ description: "Filter criterion: any Gmail search query the message must match, same syntax as search"
444
+ matchNegatedQuery:
445
+ type: string
446
+ description: "Filter criterion: a Gmail search query the message must NOT match"
447
+ matchHasAttachment:
448
+ type: boolean
449
+ description: "Filter criterion: only messages with an attachment"
450
+ matchExcludeChats:
451
+ type: boolean
452
+ description: "Filter criterion: leave chat messages out"
453
+ matchSize:
454
+ type: number
455
+ description: "Filter criterion: size in bytes; requires matchSizeComparison"
456
+ matchSizeComparison:
457
+ type: string
458
+ description: "Filter criterion: whether matches are larger or smaller than matchSize"
459
+ enum: [larger, smaller]
460
+ addLabelIds:
461
+ type: string
462
+ description: "Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123). On modify, to this message; on the filter operations, to each matching message as it arrives; on the *ModifyMatching operations, to every message the preview counted."
463
+ removeLabelIds:
464
+ type: string
465
+ description: "Comma-separated label IDs to remove (e.g. UNREAD to mark read, INBOX to archive). On modify, from this message; on the filter operations, from each matching message as it arrives; on the *ModifyMatching operations, from every message the preview counted."
466
+ forwardTo:
467
+ type: string
468
+ description: "Filter action: forward each match to this address. It must already be a verified forwarding address in Gmail settings."
469
+ defaults:
470
+ userId: me
471
+
472
+ createFilter:
473
+ type: action
474
+ description: "create a filter. Requires the previewToken from previewFilter called with the same parameters, in an earlier call, within 30 minutes. Acts on mail arriving from then on."
475
+ resource: users.settings.filters.create
476
+ params:
477
+ matchFrom:
478
+ type: string
479
+ description: "Filter criterion: sender, e.g. billing@vendor.com or @vendor.com"
480
+ matchTo:
481
+ type: string
482
+ description: "Filter criterion: recipient, e.g. a list or alias address"
483
+ matchSubject:
484
+ type: string
485
+ description: "Filter criterion: words in the subject"
486
+ matchQuery:
487
+ type: string
488
+ description: "Filter criterion: any Gmail search query the message must match, same syntax as search"
489
+ matchNegatedQuery:
490
+ type: string
491
+ description: "Filter criterion: a Gmail search query the message must NOT match"
492
+ matchHasAttachment:
493
+ type: boolean
494
+ description: "Filter criterion: only messages with an attachment"
495
+ matchExcludeChats:
496
+ type: boolean
497
+ description: "Filter criterion: leave chat messages out"
498
+ matchSize:
499
+ type: number
500
+ description: "Filter criterion: size in bytes; requires matchSizeComparison"
501
+ matchSizeComparison:
502
+ type: string
503
+ description: "Filter criterion: whether matches are larger or smaller than matchSize"
504
+ enum: [larger, smaller]
505
+ addLabelIds:
506
+ type: string
507
+ description: "Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123). On modify, to this message; on the filter operations, to each matching message as it arrives; on the *ModifyMatching operations, to every message the preview counted."
508
+ removeLabelIds:
509
+ type: string
510
+ description: "Comma-separated label IDs to remove (e.g. UNREAD to mark read, INBOX to archive). On modify, from this message; on the filter operations, from each matching message as it arrives; on the *ModifyMatching operations, from every message the preview counted."
511
+ forwardTo:
512
+ type: string
513
+ description: "Filter action: forward each match to this address. It must already be a verified forwarding address in Gmail settings."
514
+ previewToken:
515
+ type: string
516
+ description: "The token the preview returned for this exact change: previewFilter for createFilter and updateFilter, previewModifyMatching for modifyMatching. Required: the write runs only after its preview has been seen."
517
+ defaults:
518
+ userId: me
519
+
520
+ updateFilter:
521
+ type: action
522
+ description: "change a filter's criteria or actions. Gmail has no in-place update, so this creates the replacement and then deletes the original; the filter gets a new id. Requires the previewToken from previewFilter called with filterId and the same parameters."
523
+ resource: users.settings.filters.create
524
+ params:
525
+ filterId:
526
+ type: string
527
+ description: "Filter id, as listed by `filters`. On previewFilter, the filter a change would replace; leave it out to preview a new filter."
528
+ maps_to: id
529
+ matchFrom:
530
+ type: string
531
+ description: "Filter criterion: sender, e.g. billing@vendor.com or @vendor.com"
532
+ matchTo:
533
+ type: string
534
+ description: "Filter criterion: recipient, e.g. a list or alias address"
535
+ matchSubject:
536
+ type: string
537
+ description: "Filter criterion: words in the subject"
538
+ matchQuery:
539
+ type: string
540
+ description: "Filter criterion: any Gmail search query the message must match, same syntax as search"
541
+ matchNegatedQuery:
542
+ type: string
543
+ description: "Filter criterion: a Gmail search query the message must NOT match"
544
+ matchHasAttachment:
545
+ type: boolean
546
+ description: "Filter criterion: only messages with an attachment"
547
+ matchExcludeChats:
548
+ type: boolean
549
+ description: "Filter criterion: leave chat messages out"
550
+ matchSize:
551
+ type: number
552
+ description: "Filter criterion: size in bytes; requires matchSizeComparison"
553
+ matchSizeComparison:
554
+ type: string
555
+ description: "Filter criterion: whether matches are larger or smaller than matchSize"
556
+ enum: [larger, smaller]
557
+ addLabelIds:
558
+ type: string
559
+ description: "Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123). On modify, to this message; on the filter operations, to each matching message as it arrives; on the *ModifyMatching operations, to every message the preview counted."
560
+ removeLabelIds:
561
+ type: string
562
+ description: "Comma-separated label IDs to remove (e.g. UNREAD to mark read, INBOX to archive). On modify, from this message; on the filter operations, from each matching message as it arrives; on the *ModifyMatching operations, from every message the preview counted."
563
+ forwardTo:
564
+ type: string
565
+ description: "Filter action: forward each match to this address. It must already be a verified forwarding address in Gmail settings."
566
+ previewToken:
567
+ type: string
568
+ description: "The token the preview returned for this exact change: previewFilter for createFilter and updateFilter, previewModifyMatching for modifyMatching. Required: the write runs only after its preview has been seen."
569
+ defaults:
570
+ userId: me
571
+
572
+ deleteFilter:
573
+ type: action
574
+ description: "delete a filter. Returns what it was and the parameters to recreate it."
575
+ resource: users.settings.filters.delete
576
+ params:
577
+ filterId:
578
+ type: string
579
+ description: "Filter id, as listed by `filters`. On previewFilter, the filter a change would replace; leave it out to preview a new filter."
580
+ maps_to: id
581
+ defaults:
582
+ userId: me
583
+
336
584
  # --- Threads ---
337
585
 
338
586
  threads:
@@ -346,9 +594,12 @@ operations:
346
594
  maps_to: q
347
595
  maxResults:
348
596
  type: number
349
- description: "Max results (default: 10, max: 50)"
597
+ description: "Max results per page (default 10, max 50). On `search` with idsOnly, default and max 500."
350
598
  default: 10
351
599
  max: 50
600
+ pageToken:
601
+ type: string
602
+ description: "Continue a list from where the previous page stopped: pass the pageToken its response gave. Absent from a response means that response was the last page."
352
603
  defaults:
353
604
  userId: me
354
605
 
@@ -51,6 +51,16 @@ export const draftOnlyEmail = {
51
51
  `The agent can read, search, and triage emails but cannot send on behalf of the user.`,
52
52
  };
53
53
  }
54
+ // A filter that forwards sends every future match, with nobody in the loop for any of
55
+ // them. That is outbound mail, however it is set up.
56
+ const filterWrites = ['createFilter', 'updateFilter'];
57
+ if (filterWrites.includes(ctx.operation) && String(ctx.params.forwardTo ?? '').trim()) {
58
+ return {
59
+ action: 'block',
60
+ reason: `A filter that forwards mail is blocked by draft-only email policy: it would send every ` +
61
+ `future match to ${String(ctx.params.forwardTo)}. Filters that label, archive or mark mail are allowed.`,
62
+ };
63
+ }
54
64
  return { action: 'allow' };
55
65
  },
56
66
  };
@@ -101,7 +111,7 @@ function isReadOperation(operation) {
101
111
  if (op.startsWith('get') || op.startsWith('list') || op.startsWith('search'))
102
112
  return true;
103
113
  // Exact read-only names
104
- const readOps = ['read', 'triage', 'labels', 'threads', 'agenda', 'calendars', 'freebusy', 'tree'];
114
+ const readOps = ['read', 'triage', 'labels', 'threads', 'agenda', 'calendars', 'freebusy', 'tree', 'filters', 'previewfilter', 'previewmodifymatching'];
105
115
  return readOps.includes(op);
106
116
  }
107
117
  /**
@@ -173,21 +183,35 @@ export const accountAccess = {
173
183
  return { action: 'allow' };
174
184
  if (required.some((scope) => granted.has(scope)))
175
185
  return { action: 'allow' };
176
- // Nothing the operation accepts was granted. Two different causes, two different fixes.
186
+ // Nothing the operation accepts was granted. Three different causes: the account
187
+ // never authorized the service, authorized it read-only, or authorized it read/write
188
+ // before the service's scope set grew to include what this operation needs.
177
189
  const holdsSomething = anyScopesFor(op.service).some((scope) => granted.has(scope));
190
+ const holdsWrite = writeScopesFor(op.service).some((scope) => granted.has(scope));
178
191
  const reconsent = `manage_accounts {operation:'scopes', email:'${ctx.account}', ` +
179
192
  `services:'${op.service}', access:'readwrite'}`;
180
- return {
181
- action: 'block',
182
- reason: holdsSomething
183
- ? `'${ctx.operation}' needs write access to ${op.service}. ` +
184
- `Account ${ctx.account} was authorized read-only for ${op.service}. ` +
185
- `Re-authorize with ${reconsent}, or use an account that already has it.`
186
- : `'${ctx.operation}' needs access to ${op.service}, which account ${ctx.account} ` +
187
- `has never authorized. Grant it with ${reconsent}, or use an account that already has it.`,
188
- };
193
+ let reason;
194
+ if (holdsWrite) {
195
+ reason = `'${ctx.operation}' needs ${required.map(scopeName).join(' or ')}, which account ${ctx.account} ` +
196
+ `has not granted: either the account authorized ${op.service} before this server asked for it, or it was ` +
197
+ `declined on the consent screen. Re-authorize with ${reconsent} and allow it.`;
198
+ }
199
+ else if (holdsSomething) {
200
+ reason = `'${ctx.operation}' needs write access to ${op.service}. ` +
201
+ `Account ${ctx.account} was authorized read-only for ${op.service}. ` +
202
+ `Re-authorize with ${reconsent}, or use an account that already has it.`;
203
+ }
204
+ else {
205
+ reason = `'${ctx.operation}' needs access to ${op.service}, which account ${ctx.account} ` +
206
+ `has never authorized. Grant it with ${reconsent}, or use an account that already has it.`;
207
+ }
208
+ return { action: 'block', reason };
189
209
  },
190
210
  };
211
+ /** `https://www.googleapis.com/auth/gmail.settings.basic` -> `gmail.settings.basic`. */
212
+ function scopeName(scope) {
213
+ return scope.replace('https://www.googleapis.com/auth/', '');
214
+ }
191
215
  /**
192
216
  * The scopes Google will accept for this operation.
193
217
  *
@@ -1 +1 @@
1
- {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/factory/safety.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/factory/safety.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Which top-level tool call the current code is running inside.
3
+ *
4
+ * A `bulk_operations` queue runs its operations by calling their handlers directly, inside
5
+ * the one tool call that carried the queue, so everything a queue does shares that call's
6
+ * id. The preview gate (ADR-309) reads it to refuse a token minted earlier in the same
7
+ * call: a preview chained straight into a write returns nothing to the caller between them.
8
+ */
9
+ /** Run `fn` as a new top-level tool call. */
10
+ export declare function runAsToolCall<T>(fn: () => Promise<T>): Promise<T>;
11
+ /** The id of the tool call in progress; 0 outside one (tests, startup). */
12
+ export declare function currentCallId(): number;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Which top-level tool call the current code is running inside.
3
+ *
4
+ * A `bulk_operations` queue runs its operations by calling their handlers directly, inside
5
+ * the one tool call that carried the queue, so everything a queue does shares that call's
6
+ * id. The preview gate (ADR-309) reads it to refuse a token minted earlier in the same
7
+ * call: a preview chained straight into a write returns nothing to the caller between them.
8
+ */
9
+ import { AsyncLocalStorage } from 'node:async_hooks';
10
+ const storage = new AsyncLocalStorage();
11
+ let lastCallId = 0;
12
+ /** Run `fn` as a new top-level tool call. */
13
+ export function runAsToolCall(fn) {
14
+ return storage.run({ callId: ++lastCallId }, fn);
15
+ }
16
+ /** The id of the tool call in progress; 0 outside one (tests, startup). */
17
+ export function currentCallId() {
18
+ return storage.getStore()?.callId ?? 0;
19
+ }
20
+ //# sourceMappingURL=call-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-context.js","sourceRoot":"","sources":["../../src/server/call-context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAsB,CAAC;AAC5D,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,6CAA6C;AAC7C,MAAM,UAAU,aAAa,CAAI,EAAoB;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,CAAC;AACzC,CAAC"}
@@ -9,4 +9,8 @@ export declare function advanceEpoch(): number;
9
9
  * working for one minor release — ADR-308. Both are advertised and both dispatch here.
10
10
  */
11
11
  export declare const BULK_TOOL_NAMES: string[];
12
+ /**
13
+ * Dispatch one tool call from the client. Everything it runs, a queue's operations
14
+ * included, shares one call id (see call-context.ts).
15
+ */
12
16
  export declare function handleToolCall(toolName: string, params: Record<string, unknown>): Promise<HandlerResponse>;
@@ -5,6 +5,7 @@ import { handleQueue } from './queue.js';
5
5
  import { handleBatch } from './batch.js';
6
6
  import { generatedTools } from '../factory/registry.js';
7
7
  import { getSessionTracker, sessionContext } from './session/index.js';
8
+ import { runAsToolCall } from './call-context.js';
8
9
  // ── Epoch counter ─────────────────────────────────────────
9
10
  // Server-wide monotonic counter incremented on every tool call.
10
11
  // Used by ScratchpadManager for activity-based garbage collection.
@@ -51,7 +52,14 @@ function queueableHandlers(depth) {
51
52
  ...Object.fromEntries(BULK_TOOL_NAMES.map((name) => [name, nested])),
52
53
  };
53
54
  }
54
- export async function handleToolCall(toolName, params) {
55
+ /**
56
+ * Dispatch one tool call from the client. Everything it runs, a queue's operations
57
+ * included, shares one call id (see call-context.ts).
58
+ */
59
+ export function handleToolCall(toolName, params) {
60
+ return runAsToolCall(() => dispatchToolCall(toolName, params));
61
+ }
62
+ async function dispatchToolCall(toolName, params) {
55
63
  const currentEpoch = advanceEpoch();
56
64
  const tracker = getSessionTracker();
57
65
  // Bulk wraps the domain handlers (each queued op also advances the epoch)
@@ -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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"}