@aaronsb/google-workspace-mcp 4.0.0 → 4.2.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.
- package/README.md +159 -127
- package/build/factory/manifest/docs.yaml +19 -3
- package/build/google/client.js +67 -16
- package/build/google/client.js.map +1 -1
- package/build/index.js +13 -9
- package/build/index.js.map +1 -1
- package/build/lifecycle.d.ts +35 -0
- package/build/lifecycle.js +159 -0
- package/build/lifecycle.js.map +1 -0
- package/build/server/formatting/markdown.d.ts +11 -0
- package/build/server/formatting/markdown.js +24 -1
- package/build/server/formatting/markdown.js.map +1 -1
- package/build/server/handlers/validate.d.ts +6 -0
- package/build/server/handlers/validate.js +11 -0
- package/build/server/handlers/validate.js.map +1 -1
- package/build/server/scratchpad/adapters/import-doc.js +28 -3
- package/build/server/scratchpad/adapters/import-doc.js.map +1 -1
- package/build/server/scratchpad/docs-sync.d.ts +15 -3
- package/build/server/scratchpad/docs-sync.js +114 -45
- package/build/server/scratchpad/docs-sync.js.map +1 -1
- package/build/server/scratchpad/handler.js +5 -0
- package/build/server/scratchpad/handler.js.map +1 -1
- package/build/server/session/tracker.js +27 -6
- package/build/server/session/tracker.js.map +1 -1
- package/build/services/docs/patch.js +321 -16
- package/build/services/docs/patch.js.map +1 -1
- package/build/services/gmail/patch.js +40 -7
- package/build/services/gmail/patch.js.map +1 -1
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/package.json +4 -3
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* `get` is here for a different reason: see extractText below.
|
|
8
8
|
*/
|
|
9
9
|
import { call } from '../../google/client.js';
|
|
10
|
-
import { requireString } from '../../server/handlers/validate.js';
|
|
10
|
+
import { optionalString, requireString } from '../../server/handlers/validate.js';
|
|
11
|
+
import { estimateTokens } from '../../server/formatting/markdown.js';
|
|
11
12
|
/**
|
|
12
13
|
* Pull the readable text out of a Docs document.
|
|
13
14
|
*
|
|
@@ -43,34 +44,315 @@ function extractText(node) {
|
|
|
43
44
|
}
|
|
44
45
|
return out;
|
|
45
46
|
}
|
|
47
|
+
/** Collapse runs of blank lines; a Doc is full of them and they carry no meaning here. */
|
|
48
|
+
function tidy(text) {
|
|
49
|
+
return text.replace(/\n{3,}/g, '\n\n').trim();
|
|
50
|
+
}
|
|
51
|
+
/** Lines in a tab's text — counted one way, so every number here means the same thing. */
|
|
52
|
+
function countLines(text) {
|
|
53
|
+
return text ? text.split('\n').length : 0;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Flatten a document's tabs, depth-first, into the order a reader sees them.
|
|
57
|
+
*
|
|
58
|
+
* Tabs are a TREE, not a list: each carries its own body at `documentTab.body` and may
|
|
59
|
+
* nest further tabs under `childTabs`. A walk that reads only the top level silently
|
|
60
|
+
* drops every nested tab, which is the same failure this function exists to fix, one
|
|
61
|
+
* level down.
|
|
62
|
+
*
|
|
63
|
+
* Google populates none of this unless documents.get is asked for it — see `get`.
|
|
64
|
+
*
|
|
65
|
+
* Array order is Google's order, which is reading order; `tabProperties.index` carries
|
|
66
|
+
* the same thing and is not consulted.
|
|
67
|
+
*/
|
|
68
|
+
function flattenTabs(tabs, depth = 0) {
|
|
69
|
+
if (!Array.isArray(tabs))
|
|
70
|
+
return [];
|
|
71
|
+
const out = [];
|
|
72
|
+
for (const tab of tabs) {
|
|
73
|
+
if (!tab || typeof tab !== 'object')
|
|
74
|
+
continue;
|
|
75
|
+
const t = tab;
|
|
76
|
+
const props = t.tabProperties;
|
|
77
|
+
const documentTab = t.documentTab;
|
|
78
|
+
out.push({
|
|
79
|
+
id: typeof props?.tabId === 'string' && props.tabId ? props.tabId : null,
|
|
80
|
+
title: typeof props?.title === 'string' && props.title ? props.title : '(untitled tab)',
|
|
81
|
+
// No documentTab at all is a failed read, not an empty tab. Keep them distinct.
|
|
82
|
+
text: documentTab ? tidy(extractText(documentTab.body)) : null,
|
|
83
|
+
depth,
|
|
84
|
+
});
|
|
85
|
+
// Nested tabs belong directly after their parent, not in a separate pass.
|
|
86
|
+
out.push(...flattenTabs(t.childTabs, depth + 1));
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Render one tab as a titled section, headed by the id that addresses it.
|
|
92
|
+
*
|
|
93
|
+
* The id goes in the TEXT, not just in `refs`. Only `result.text` is returned to the
|
|
94
|
+
* model — `refs` is internal, read by queue_operations for chaining — so a tab id that
|
|
95
|
+
* lives only in refs cannot be used by the agent reading this. Telling a reader to "pass
|
|
96
|
+
* the tabId" while keeping every tabId out of the response is #158's original complaint
|
|
97
|
+
* with a new hiding place.
|
|
98
|
+
*
|
|
99
|
+
* The heading level tracks nesting depth so a subtab reads as subordinate to its parent.
|
|
100
|
+
* Depth is clamped at `######` because markdown has no seventh level: tabs nested more
|
|
101
|
+
* than three deep flatten to the same visual level. That is deliberate and currently
|
|
102
|
+
* unreachable — the Docs UI allows a single level of subtabs — so the clamp is a
|
|
103
|
+
* guard against a shape Google's API permits and its editor does not produce.
|
|
104
|
+
*/
|
|
105
|
+
function renderTab({ id, title, text, depth }) {
|
|
106
|
+
const heading = '#'.repeat(Math.min(3 + depth, 6));
|
|
107
|
+
const handle = id ? ` — \`${id}\`` : ' — _(no tab id; not individually addressable)_';
|
|
108
|
+
const body = text === null
|
|
109
|
+
? '_(no content returned for this tab — it was not read, which is not the same as empty)_'
|
|
110
|
+
: text || '_(this tab is empty)_';
|
|
111
|
+
return `${heading} ${title}${handle}\n\n${body}\n`;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Size at which a whole-document read turns into an index of its tabs.
|
|
115
|
+
*
|
|
116
|
+
* Matches `MAX_BODY_TOKENS` in server/formatting/markdown.ts, and carries the same rule:
|
|
117
|
+
* a cap that does not say it capped recreates #152 with a different cause.
|
|
118
|
+
*
|
|
119
|
+
* The number is set by the MCP CLIENT's tool-result ceiling, not by taste. Measured live
|
|
120
|
+
* against a real 2-tab meeting archive: 79,944 characters — 19,986 tokens by the estimate
|
|
121
|
+
* below — sailed under a 25,000 threshold, and the client rejected the response anyway,
|
|
122
|
+
* handing the agent a file path instead of the tab index this cap exists to produce. A cap
|
|
123
|
+
* above the client's ceiling never fires where it matters.
|
|
124
|
+
*
|
|
125
|
+
* That measurement also says `estimateTokens` runs OPTIMISTIC on dense prose: 4 chars per
|
|
126
|
+
* token, where the real tokenizer wanted closer to 3.2. So the threshold sits well under
|
|
127
|
+
* the ceiling rather than at it, and that document now becomes an index as intended.
|
|
128
|
+
*/
|
|
129
|
+
const MAX_DOC_TOKENS = 12_000;
|
|
130
|
+
/**
|
|
131
|
+
* Render the tab index a caller gets instead of an over-sized document.
|
|
132
|
+
*
|
|
133
|
+
* This is a cap with an escape hatch rather than a truncation: every tab is listed with
|
|
134
|
+
* the id that fetches it, so no text becomes unreachable — it becomes reachable one tab
|
|
135
|
+
* at a time. Truncating the concatenation instead would drop the tail of the document
|
|
136
|
+
* with no way to ask for it, which is what #152 was.
|
|
137
|
+
*
|
|
138
|
+
* A tab Google gave no id can only be read as part of the whole document, so say that in
|
|
139
|
+
* its row rather than printing an id that does not exist.
|
|
140
|
+
*/
|
|
141
|
+
function renderTabIndex(tabs, tokens) {
|
|
142
|
+
const rows = tabs.map((t) => {
|
|
143
|
+
const indent = ' '.repeat(t.depth);
|
|
144
|
+
const size = t.text === null
|
|
145
|
+
? 'not read'
|
|
146
|
+
: `${t.text.length} chars, ${countLines(t.text)} line(s)`;
|
|
147
|
+
const handle = t.id ? `\`${t.id}\`` : '_(no tab id — not individually addressable)_';
|
|
148
|
+
return `${indent}- ${handle} — ${t.title} (${size})`;
|
|
149
|
+
});
|
|
150
|
+
return `> **This document is ~${tokens.toLocaleString()} tokens across ${tabs.length} tab(s).** ` +
|
|
151
|
+
`Showing the tab index instead of the text. Re-read with \`tabId\` set to one of the ids below.\n\n` +
|
|
152
|
+
rows.join('\n') + '\n';
|
|
153
|
+
}
|
|
46
154
|
export const docsPatch = {
|
|
47
155
|
customHandlers: {
|
|
48
156
|
/**
|
|
49
|
-
* Read a document: its metadata AND — the point of the operation — its text.
|
|
157
|
+
* Read a document: its metadata AND — the point of the operation — ALL of its text.
|
|
158
|
+
*
|
|
159
|
+
* `includeTabsContent` is not an enhancement, it is the difference between reading
|
|
160
|
+
* the document and reading part of it. Google's `body` field is legacy: without the
|
|
161
|
+
* flag it holds THE FIRST TAB ONLY, and the response carries no hint that other tabs
|
|
162
|
+
* exist. A doc holding one meeting transcript per tab returned 142 of its 780 lines
|
|
163
|
+
* and presented them as the whole file (issue #152).
|
|
164
|
+
*
|
|
165
|
+
* That is this codebase's recurring defect shape — a read that under-reports with no
|
|
166
|
+
* error, indistinguishable from a document that really is short. The same instinct
|
|
167
|
+
* as the rate-limit retry in google/client.ts: never let "I could not see all of it"
|
|
168
|
+
* render as "this is all there is".
|
|
169
|
+
*
|
|
170
|
+
* With the flag, content moves to `tabs[].documentTab.body` and `body` is GONE — not
|
|
171
|
+
* empty, absent from the response, along with `headers`, `lists`, `inlineObjects` and
|
|
172
|
+
* `namedStyles`. Measured live against three real documents: without the flag,
|
|
173
|
+
* `body` held 10,388 characters and `tabs` was absent; with it, `body` was absent and
|
|
174
|
+
* the three tabs held 10,388 + 3,832 + 698. So reading `tabs` first is load-bearing,
|
|
175
|
+
* not a preference — read `body` first and a tabbed document comes back EMPTY. The
|
|
176
|
+
* `body` fallback covers only the flagless shape, which nothing here now requests.
|
|
177
|
+
*
|
|
178
|
+
* Google's reference says `body` is "left as empty" rather than dropped; measurement
|
|
179
|
+
* says dropped. The code assumes neither: it treats an empty `tabs[0]` and an absent
|
|
180
|
+
* `body` the same way round, so both shapes read correctly.
|
|
181
|
+
*
|
|
182
|
+
* Single-tab documents report one tab titled "Tab 1" — a default, not something a
|
|
183
|
+
* user typed, so one tab renders with no tab scaffolding at all.
|
|
184
|
+
*
|
|
185
|
+
* `tabId` narrows the read to one tab (#158). It is the same handle the write
|
|
186
|
+
* operations take, so "read this tab, then write to it" is one coordinate system
|
|
187
|
+
* rather than two that happen to agree on single-tab documents.
|
|
50
188
|
*/
|
|
51
189
|
get: async (params, account) => {
|
|
52
190
|
const documentId = requireString(params, 'documentId');
|
|
53
|
-
const
|
|
191
|
+
const wantTabId = optionalString(params, 'tabId');
|
|
192
|
+
const doc = await call('docs', 'documents.get', { documentId, includeTabsContent: true }, { account });
|
|
54
193
|
const title = typeof doc.title === 'string' ? doc.title : '(untitled)';
|
|
55
|
-
const
|
|
56
|
-
|
|
194
|
+
const allTabs = flattenTabs(doc.tabs);
|
|
195
|
+
// A tabId that matches nothing must fail loudly. Falling back to the whole document
|
|
196
|
+
// would hand back text the caller did not ask for and let them believe it was the
|
|
197
|
+
// one tab they named — a wrong-scope read that reports success, which is the shape
|
|
198
|
+
// of defect this file exists to stop.
|
|
199
|
+
if (wantTabId && !allTabs.some((t) => t.id === wantTabId)) {
|
|
200
|
+
const known = allTabs.map((t) => t.id).filter(Boolean);
|
|
201
|
+
throw new Error(`No tab with id "${wantTabId}" in document ${documentId}. ` +
|
|
202
|
+
(known.length
|
|
203
|
+
? `Available tab ids: ${known.join(', ')}.`
|
|
204
|
+
: 'This document reported no addressable tab ids; read it without `tabId`.'));
|
|
205
|
+
}
|
|
206
|
+
const tabs = wantTabId ? allTabs.filter((t) => t.id === wantTabId) : allTabs;
|
|
207
|
+
// Scaffolding marks a read that spans tabs. A single-tab read is scoped by
|
|
208
|
+
// construction, so it renders bare even when the document has forty tabs.
|
|
209
|
+
const multiTab = tabs.length > 1;
|
|
210
|
+
// One tab is the ordinary case and reads best with no tab scaffolding at all, so it
|
|
211
|
+
// renders exactly as a single-body document does. `||` not `??`: a single tab that
|
|
212
|
+
// reported NO content must still fall back to `body`, and '' is not nullish — with
|
|
213
|
+
// `??` a populated `body` was discarded and the document reported as empty.
|
|
214
|
+
//
|
|
215
|
+
// A tabId-scoped read takes NO body fallback. `body` is the legacy first tab, so
|
|
216
|
+
// serving it for an empty tab three tabs along would answer a question about one tab
|
|
217
|
+
// with the text of another — and the caller, having named a tab, has no reason to
|
|
218
|
+
// suspect it.
|
|
219
|
+
const singleText = tabs.length === 1 && !wantTabId
|
|
220
|
+
? (tabs[0].text || tidy(extractText(doc.body)))
|
|
221
|
+
: tabs.length === 1
|
|
222
|
+
? (tabs[0].text ?? '')
|
|
223
|
+
: tidy(extractText(doc.body));
|
|
224
|
+
// A scoped read of a tab Google did not return must say THAT, not "empty". Falling
|
|
225
|
+
// through to the empty-document string below would print "the document is empty"
|
|
226
|
+
// for a tab we simply could not read — the substitution this file exists to stop,
|
|
227
|
+
// reached by the one path that bypasses renderTab.
|
|
228
|
+
const unreadScope = tabs.length === 1 && tabs[0].text === null;
|
|
229
|
+
const fullBody = multiTab
|
|
230
|
+
? tabs.map(renderTab).join('\n').trimEnd()
|
|
231
|
+
: unreadScope
|
|
232
|
+
? '_(no content returned for this tab — it was not read, which is not the same as empty)_'
|
|
233
|
+
: singleText;
|
|
234
|
+
// Over the cap, a multi-tab read becomes an index of tabs to read individually.
|
|
235
|
+
// A single tab has nothing narrower to offer, so it comes back whole however large
|
|
236
|
+
// it is: capping there would remove text with no way to ask for it again.
|
|
237
|
+
//
|
|
238
|
+
// A tab Google gave no id is reachable ONLY through the whole-document read, so
|
|
239
|
+
// capping a document that contains one would put its text beyond every call —
|
|
240
|
+
// truncation wearing an index's clothes. Leave those documents whole.
|
|
241
|
+
const tokens = estimateTokens(fullBody);
|
|
242
|
+
const capped = multiTab
|
|
243
|
+
&& tokens > MAX_DOC_TOKENS
|
|
244
|
+
&& tabs.every((t) => t.id !== null);
|
|
245
|
+
const body = capped ? renderTabIndex(tabs, tokens) : fullBody;
|
|
246
|
+
// Both numbers describe DOCUMENT TEXT, never the scaffolding rendered around it.
|
|
247
|
+
// They used to disagree: characters summed the tabs while lines counted the
|
|
248
|
+
// rendered output, headings and placeholders included, so a document of four
|
|
249
|
+
// one-line tabs reported "71 characters, 15 line(s)" and a wholly unread one
|
|
250
|
+
// managed "0 characters, 11 line(s)".
|
|
251
|
+
const characters = multiTab
|
|
252
|
+
? tabs.reduce((sum, t) => sum + (t.text?.length ?? 0), 0)
|
|
253
|
+
: singleText.length;
|
|
254
|
+
const lines = multiTab
|
|
255
|
+
? tabs.reduce((sum, t) => sum + countLines(t.text), 0)
|
|
256
|
+
: countLines(singleText);
|
|
257
|
+
const nested = tabs.filter((t) => t.depth > 0).length;
|
|
258
|
+
const unread = tabs.filter((t) => t.text === null).length;
|
|
259
|
+
// Anything that makes this response narrower than the document says so HERE, in the
|
|
260
|
+
// response, rather than leaving the reader to infer it from a number.
|
|
261
|
+
const caveats = [];
|
|
262
|
+
if (tabs.length === 0) {
|
|
263
|
+
// Asked for tab content and got none. Measured live, every document returns at
|
|
264
|
+
// least one tab when the flag is set, so this is an anomaly and `body` may well be
|
|
265
|
+
// the first tab of several.
|
|
266
|
+
caveats.push('Google returned no tab data, so this may be the first tab only.');
|
|
267
|
+
}
|
|
268
|
+
if (unread > 0) {
|
|
269
|
+
caveats.push(`${unread} tab(s) returned no content and could not be read.`);
|
|
270
|
+
}
|
|
271
|
+
if (multiTab && !capped) {
|
|
272
|
+
// The read spans tabs and character indices do not. An index computed from this
|
|
273
|
+
// concatenation means nothing to `insertText` unless the same tab is named on
|
|
274
|
+
// both sides, so say which handle makes them agree (#157).
|
|
275
|
+
//
|
|
276
|
+
// A capped response carries no text to measure an index in, and its own notice
|
|
277
|
+
// already says what to do next — two instructions there would compete.
|
|
278
|
+
caveats.push('Indices in this response are per-tab. Pass the `tabId` beside each heading below to `get`, `insertText`, `write` or `replaceText` — without one they act on the FIRST tab.');
|
|
279
|
+
}
|
|
280
|
+
if (!capped && !multiTab && tokens > MAX_DOC_TOKENS) {
|
|
281
|
+
// Whole, and large. Nothing here was withheld — the number is so the caller can
|
|
282
|
+
// decide what to do with the rest of its context, not a warning of missing text.
|
|
283
|
+
caveats.push(`This tab is ~${tokens.toLocaleString()} tokens and is shown in full — there is no narrower read available.`);
|
|
284
|
+
}
|
|
285
|
+
if (!capped && multiTab && tokens > MAX_DOC_TOKENS) {
|
|
286
|
+
// Big enough to cap, held back because at least one tab has no id and a tab index
|
|
287
|
+
// would strand it. Say why, or the reader sees only an inconsistent threshold.
|
|
288
|
+
caveats.push(`This document is ~${tokens.toLocaleString()} tokens and is shown in full: some tabs have no id, so a tab index would leave their text unreachable.`);
|
|
289
|
+
}
|
|
290
|
+
const scoped = wantTabId ? tabs[0] : undefined;
|
|
291
|
+
// A child tab is its own addressable tab, so scoping to a parent deliberately omits
|
|
292
|
+
// it. The `1 of N` line exists to say what was left out; without this the reader has
|
|
293
|
+
// no way to learn that the tab they asked for has text hanging beneath it.
|
|
294
|
+
if (scoped) {
|
|
295
|
+
const children = allTabs.filter((t) => t.depth === scoped.depth + 1
|
|
296
|
+
&& allTabs.indexOf(t) > allTabs.indexOf(scoped)
|
|
297
|
+
&& allTabs.slice(allTabs.indexOf(scoped) + 1, allTabs.indexOf(t)).every((b) => b.depth > scoped.depth));
|
|
298
|
+
if (children.length > 0) {
|
|
299
|
+
caveats.push(`This tab has ${children.length} child tab(s), read separately: ${children.map((c) => (c.id ? `\`${c.id}\`` : c.title)).join(', ')}.`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
57
302
|
return {
|
|
58
303
|
text: `## ${title}\n\n` +
|
|
59
304
|
`**Document ID:** ${documentId}\n` +
|
|
60
305
|
`**Revision:** ${String(doc.revisionId ?? '—')}\n` +
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
306
|
+
// A scoped read says which tab it read AND how many it did not, so the number
|
|
307
|
+
// beside "Length" is never mistaken for the whole document.
|
|
308
|
+
(scoped
|
|
309
|
+
? `**Tab:** ${scoped.title} (\`${scoped.id}\`) — 1 of ${allTabs.length}\n`
|
|
310
|
+
: '') +
|
|
311
|
+
// The count includes nested tabs, which the Docs tab strip does not show — so
|
|
312
|
+
// say which is which rather than hand back a number that contradicts the UI.
|
|
313
|
+
(multiTab
|
|
314
|
+
? `**Tabs:** ${tabs.length}${nested ? ` (${tabs.length - nested} top-level, ${nested} nested)` : ''}\n`
|
|
315
|
+
: '') +
|
|
316
|
+
`**Length:** ${characters} characters, ${lines} line(s)\n` +
|
|
317
|
+
caveats.map((c) => `\n> ${c}\n`).join('') +
|
|
318
|
+
'\n' +
|
|
319
|
+
(body ? `---\n\n${body}\n` : '_(the document is empty)_\n'),
|
|
320
|
+
refs: {
|
|
321
|
+
documentId,
|
|
322
|
+
title,
|
|
323
|
+
characters,
|
|
324
|
+
lines,
|
|
325
|
+
tabs: tabs.length,
|
|
326
|
+
// The index rides along even for a single tab, whose heading is suppressed: its
|
|
327
|
+
// title is usually Google's default "Tab 1", but when a user has renamed a
|
|
328
|
+
// one-tab document's tab that name is content, and its id is the only way to
|
|
329
|
+
// address a write. Both belong in the response whether or not it renders them.
|
|
330
|
+
tabIndex: tabs.map((t) => ({
|
|
331
|
+
tabId: t.id,
|
|
332
|
+
title: t.title,
|
|
333
|
+
depth: t.depth,
|
|
334
|
+
characters: t.text?.length ?? null,
|
|
335
|
+
})),
|
|
336
|
+
...(scoped ? { tabId: scoped.id, tabsInDocument: allTabs.length } : {}),
|
|
337
|
+
...(capped ? { capped: true, tokens } : {}),
|
|
338
|
+
...(unread > 0 ? { unreadTabs: unread } : {}),
|
|
339
|
+
},
|
|
64
340
|
};
|
|
65
341
|
},
|
|
66
342
|
/**
|
|
67
343
|
* Append text to the end of the body: one documents.batchUpdate carrying a
|
|
68
344
|
* single insertText at `endOfSegmentLocation`. Append-only — no index
|
|
69
345
|
* targeting, no formatting.
|
|
346
|
+
*
|
|
347
|
+
* `tabId` picks the tab; omitted, Google appends to the FIRST tab. That default is
|
|
348
|
+
* its documented behaviour for every Location and EndOfSegmentLocation, and it is
|
|
349
|
+
* why an unqualified append to a tabbed document lands somewhere the caller did not
|
|
350
|
+
* choose (#157). Read the document first — `get` returns each tab's id.
|
|
70
351
|
*/
|
|
71
352
|
write: async (params, account) => {
|
|
72
353
|
const documentId = requireString(params, 'documentId');
|
|
73
354
|
const text = requireString(params, 'text');
|
|
355
|
+
const tabId = optionalString(params, 'tabId');
|
|
74
356
|
await call('docs', 'documents.batchUpdate', {
|
|
75
357
|
documentId,
|
|
76
358
|
requests: [{
|
|
@@ -78,18 +360,20 @@ export const docsPatch = {
|
|
|
78
360
|
text,
|
|
79
361
|
// An empty segmentId means the document BODY (as opposed to a header
|
|
80
362
|
// or footer), and endOfSegmentLocation means "append".
|
|
81
|
-
endOfSegmentLocation: { segmentId: '' },
|
|
363
|
+
endOfSegmentLocation: { segmentId: '', ...(tabId ? { tabId } : {}) },
|
|
82
364
|
},
|
|
83
365
|
}],
|
|
84
366
|
}, { account });
|
|
85
367
|
return {
|
|
86
|
-
text: `Appended ${text.length} character(s) to the document.\n\n**Document ID:** ${documentId}
|
|
87
|
-
|
|
368
|
+
text: `Appended ${text.length} character(s) to ${tabId ? `tab \`${tabId}\` of ` : ''}the document.\n\n**Document ID:** ${documentId}` +
|
|
369
|
+
(tabId ? '' : '\n\n> No `tabId` given — this appended to the FIRST tab. On a multi-tab document, pass the `tabId` from `get`.'),
|
|
370
|
+
refs: { documentId, appended: text.length, ...(tabId ? { tabId } : {}) },
|
|
88
371
|
};
|
|
89
372
|
},
|
|
90
373
|
insertText: async (params, account) => {
|
|
91
374
|
const documentId = requireString(params, 'documentId');
|
|
92
375
|
const text = requireString(params, 'text');
|
|
376
|
+
const tabId = optionalString(params, 'tabId');
|
|
93
377
|
const index = Number(params.index);
|
|
94
378
|
if (!Number.isInteger(index) || index < 1) {
|
|
95
379
|
throw new Error('index must be a positive integer (1 = start of document body)');
|
|
@@ -99,19 +383,31 @@ export const docsPatch = {
|
|
|
99
383
|
requests: [{
|
|
100
384
|
insertText: {
|
|
101
385
|
text,
|
|
102
|
-
|
|
386
|
+
// Character indices are per-tab. Without a tabId this index is read against
|
|
387
|
+
// the first tab, whatever tab the caller measured it in.
|
|
388
|
+
location: { index, ...(tabId ? { tabId } : {}) },
|
|
103
389
|
},
|
|
104
390
|
}],
|
|
105
391
|
}, { account });
|
|
106
392
|
return {
|
|
107
|
-
text: `Text inserted at index ${index}.\n\n**Document:** ${documentId}\n**Inserted:** ${text.length} characters
|
|
108
|
-
|
|
393
|
+
text: `Text inserted at index ${index}${tabId ? ` of tab \`${tabId}\`` : ''}.\n\n**Document:** ${documentId}\n**Inserted:** ${text.length} characters` +
|
|
394
|
+
(tabId ? '' : '\n\n> No `tabId` given — index ' + index + ' was resolved against the FIRST tab. On a multi-tab document, pass the `tabId` the index came from.'),
|
|
395
|
+
refs: { documentId, index, length: text.length, ...(tabId ? { tabId } : {}) },
|
|
109
396
|
};
|
|
110
397
|
},
|
|
398
|
+
/**
|
|
399
|
+
* Find and replace across the document, or within one tab.
|
|
400
|
+
*
|
|
401
|
+
* This is the one write that was never confined to the first tab: Google applies
|
|
402
|
+
* ReplaceAllTextRequest to every tab when `tabsCriteria` is omitted. `tabId` narrows
|
|
403
|
+
* it, so the default stays "the whole document" and nothing changes for callers who
|
|
404
|
+
* do not pass one.
|
|
405
|
+
*/
|
|
111
406
|
replaceText: async (params, account) => {
|
|
112
407
|
const documentId = requireString(params, 'documentId');
|
|
113
408
|
const findText = requireString(params, 'findText');
|
|
114
409
|
const replaceWith = requireString(params, 'replaceWith');
|
|
410
|
+
const tabId = optionalString(params, 'tabId');
|
|
115
411
|
const matchCase = params.matchCase !== false;
|
|
116
412
|
const data = await call('docs', 'documents.batchUpdate', {
|
|
117
413
|
documentId,
|
|
@@ -122,6 +418,7 @@ export const docsPatch = {
|
|
|
122
418
|
matchCase,
|
|
123
419
|
},
|
|
124
420
|
replaceText: replaceWith,
|
|
421
|
+
...(tabId ? { tabsCriteria: { tabIds: [tabId] } } : {}),
|
|
125
422
|
},
|
|
126
423
|
}],
|
|
127
424
|
}, { account });
|
|
@@ -129,9 +426,17 @@ export const docsPatch = {
|
|
|
129
426
|
const replies = data.replies || [];
|
|
130
427
|
const replaceReply = replies[0]?.replaceAllText;
|
|
131
428
|
const occurrences = replaceReply?.occurrencesChanged || 0;
|
|
429
|
+
// "Text replaced … Occurrences: 0" reads as success for a replacement that changed
|
|
430
|
+
// nothing. A `tabId` gives that outcome a second cause — right string, wrong tab —
|
|
431
|
+
// and the two are indistinguishable unless the response leads with the miss.
|
|
432
|
+
const scope = tabId ? `tab \`${tabId}\`` : 'all tabs';
|
|
433
|
+
const headline = occurrences === 0
|
|
434
|
+
? `Nothing matched "${findText}" in ${scope} — the document is unchanged.` +
|
|
435
|
+
(tabId ? '\n\n> Scoped to one tab. If the text lives in another, re-run with that `tabId` or omit it to span the document.' : '')
|
|
436
|
+
: 'Text replaced.';
|
|
132
437
|
return {
|
|
133
|
-
text:
|
|
134
|
-
refs: { documentId, occurrences },
|
|
438
|
+
text: `${headline}\n\n**Document:** ${documentId}\n**Scope:** ${scope}\n**Found:** "${findText}"\n**Replaced with:** "${replaceWith}"\n**Occurrences:** ${occurrences}`,
|
|
439
|
+
refs: { documentId, occurrences, ...(tabId ? { tabId } : {}) },
|
|
135
440
|
};
|
|
136
441
|
},
|
|
137
442
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/docs/patch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/docs/patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* - Custom handlers: send/reply use specific response formatting
|
|
8
8
|
*/
|
|
9
9
|
import { call } from '../../google/client.js';
|
|
10
|
-
import {
|
|
10
|
+
import { GoogleApiError } from '../../google/errors.js';
|
|
11
|
+
import { formatEmailList, formatEmailDetail, extractBodyFromPayload, decodeSnippet } from '../../server/formatting/markdown.js';
|
|
11
12
|
import { requireString } from '../../server/handlers/validate.js';
|
|
12
13
|
import { handleGetAttachment, handleViewAttachment } from './attachments.js';
|
|
13
14
|
import { sendMail, replyMail, forwardMail } from './mail.js';
|
|
@@ -16,7 +17,11 @@ import { sendMail, replyMail, forwardMail } from './mail.js';
|
|
|
16
17
|
* Reused from the original email handler.
|
|
17
18
|
*/
|
|
18
19
|
async function hydrateMessages(messageIds, account) {
|
|
19
|
-
|
|
20
|
+
// Google throttles per USER, not per process, so this burst competes with every
|
|
21
|
+
// other client signed in to the same account. Firing all 50 at once is the surest
|
|
22
|
+
// way to be told no. A modest window is barely slower — the calls still overlap —
|
|
23
|
+
// and it is far less likely to be throttled in the first place.
|
|
24
|
+
return mapLimited(messageIds, HYDRATE_CONCURRENCY, async (msg) => {
|
|
20
25
|
try {
|
|
21
26
|
const data = await call('gmail', 'users.messages.get', {
|
|
22
27
|
userId: 'me',
|
|
@@ -35,10 +40,38 @@ async function hydrateMessages(messageIds, account) {
|
|
|
35
40
|
snippet: data.snippet,
|
|
36
41
|
};
|
|
37
42
|
}
|
|
38
|
-
catch {
|
|
39
|
-
|
|
43
|
+
catch (err) {
|
|
44
|
+
// A message we could not READ must never look like a message with NOTHING IN IT.
|
|
45
|
+
//
|
|
46
|
+
// This used to `catch { return { id: msg.id } }` — every failure became a row
|
|
47
|
+
// with no sender, no subject and no date, indistinguishable from a genuinely
|
|
48
|
+
// empty message. Under rate limiting the tail of an inbox silently rendered as
|
|
49
|
+
// blank lines, and the tool reported success while showing the user nothing.
|
|
50
|
+
//
|
|
51
|
+
// The client retries a 429 now, so reaching here means it did not recover. Say
|
|
52
|
+
// so, in the row, where the person reading the list will actually see it.
|
|
53
|
+
return {
|
|
54
|
+
id: msg.id,
|
|
55
|
+
error: err instanceof GoogleApiError
|
|
56
|
+
? `could not load (${err.status}${err.reason ? ' ' + err.reason : ''})`
|
|
57
|
+
: `could not load (${err instanceof Error ? err.message : String(err)})`,
|
|
58
|
+
};
|
|
40
59
|
}
|
|
41
|
-
})
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/** Concurrent, but bounded. */
|
|
63
|
+
const HYDRATE_CONCURRENCY = 8;
|
|
64
|
+
async function mapLimited(items, limit, fn) {
|
|
65
|
+
const results = new Array(items.length);
|
|
66
|
+
let next = 0;
|
|
67
|
+
const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
|
|
68
|
+
while (next < items.length) {
|
|
69
|
+
const i = next++;
|
|
70
|
+
results[i] = await fn(items[i]); // fn never rejects — it catches internally
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
await Promise.all(workers);
|
|
74
|
+
return results;
|
|
42
75
|
}
|
|
43
76
|
/** Format labels list — name, type, unread count. */
|
|
44
77
|
function formatLabelList(data) {
|
|
@@ -82,7 +115,7 @@ function formatThreadList(data) {
|
|
|
82
115
|
}
|
|
83
116
|
const lines = threads.map(t => {
|
|
84
117
|
const id = String(t.id ?? '');
|
|
85
|
-
const snippet = String(t.snippet ?? '').slice(0, 80);
|
|
118
|
+
const snippet = decodeSnippet(String(t.snippet ?? '')).slice(0, 80);
|
|
86
119
|
return `${id} | ${snippet}`;
|
|
87
120
|
});
|
|
88
121
|
return {
|
|
@@ -111,7 +144,7 @@ function formatThreadDetail(data) {
|
|
|
111
144
|
const date = getHeader('date');
|
|
112
145
|
const subject = getHeader('subject');
|
|
113
146
|
const bodyText = extractBodyFromPayload(payload);
|
|
114
|
-
const snippet = String(msg.snippet ?? '');
|
|
147
|
+
const snippet = decodeSnippet(String(msg.snippet ?? ''));
|
|
115
148
|
// getThread uses format:metadata so body data is usually absent;
|
|
116
149
|
// fall back to snippet when extraction yields nothing
|
|
117
150
|
const displayBody = bodyText || snippet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/gmail/patch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/gmail/patch.ts"],"names":[],"mappings":"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"}
|
package/build/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.
|
|
1
|
+
export declare const VERSION = "4.2.0";
|
package/build/version.js
CHANGED