@aaronsb/google-workspace-mcp 2.6.1 → 2.7.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 +2 -2
- package/build/__tests__/factory/calendar-patch.test.js +79 -0
- package/build/__tests__/factory/calendar-patch.test.js.map +1 -1
- package/build/__tests__/factory/drive-patch.test.js +224 -0
- package/build/__tests__/factory/drive-patch.test.js.map +1 -1
- package/build/__tests__/factory/sheets-patch.test.js +71 -6
- package/build/__tests__/factory/sheets-patch.test.js.map +1 -1
- package/build/__tests__/server/formatting/html-sanitize.test.d.ts +7 -0
- package/build/__tests__/server/formatting/html-sanitize.test.js +174 -0
- package/build/__tests__/server/formatting/html-sanitize.test.js.map +1 -0
- package/build/__tests__/server/formatting/markdown.test.js +55 -0
- package/build/__tests__/server/formatting/markdown.test.js.map +1 -1
- package/build/__tests__/server/handlers/calendar.test.js +2 -1
- package/build/__tests__/server/handlers/calendar.test.js.map +1 -1
- package/build/executor/gws.js +41 -20
- package/build/executor/gws.js.map +1 -1
- package/build/factory/generator.d.ts +11 -3
- package/build/factory/generator.js +41 -16
- package/build/factory/generator.js.map +1 -1
- package/build/factory/manifest/README.md +12 -0
- package/build/factory/manifest/calendar.yaml +204 -0
- package/build/factory/manifest/docs.yaml +77 -0
- package/build/factory/manifest/drive.yaml +314 -0
- package/build/factory/manifest/gmail.yaml +272 -0
- package/build/factory/manifest/meet.yaml +159 -0
- package/build/factory/manifest/sheets.yaml +225 -0
- package/build/factory/manifest/tasks.yaml +137 -0
- package/build/factory/registry.d.ts +3 -3
- package/build/factory/registry.js +5 -5
- package/build/factory/registry.js.map +1 -1
- package/build/factory/types.d.ts +6 -0
- package/build/server/formatting/html-sanitize.d.ts +40 -0
- package/build/server/formatting/html-sanitize.js +146 -0
- package/build/server/formatting/html-sanitize.js.map +1 -0
- package/build/server/formatting/markdown.d.ts +13 -3
- package/build/server/formatting/markdown.js +33 -6
- package/build/server/formatting/markdown.js.map +1 -1
- package/build/server/handlers/calendar.js +1 -1
- package/build/server/handlers/calendar.js.map +1 -1
- package/build/server/scratchpad/__tests__/docs-sync-integration.test.d.ts +11 -0
- package/build/server/scratchpad/__tests__/docs-sync-integration.test.js +187 -0
- package/build/server/scratchpad/__tests__/docs-sync-integration.test.js.map +1 -0
- package/build/server/scratchpad/__tests__/docs-sync.test.d.ts +16 -0
- package/build/server/scratchpad/__tests__/docs-sync.test.js +213 -0
- package/build/server/scratchpad/__tests__/docs-sync.test.js.map +1 -0
- package/build/server/scratchpad/adapters/import-doc.js +6 -3
- package/build/server/scratchpad/adapters/import-doc.js.map +1 -1
- package/build/server/scratchpad/adapters/send-calendar.js +1 -1
- package/build/server/scratchpad/adapters/send-calendar.js.map +1 -1
- package/build/server/scratchpad/docs-sync.d.ts +65 -0
- package/build/server/scratchpad/docs-sync.js +191 -0
- package/build/server/scratchpad/docs-sync.js.map +1 -0
- package/build/server/scratchpad/handler.js +95 -14
- package/build/server/scratchpad/handler.js.map +1 -1
- package/build/server/scratchpad/manager.d.ts +7 -0
- package/build/server/scratchpad/manager.js.map +1 -1
- package/build/services/calendar/patch.js +72 -1
- package/build/services/calendar/patch.js.map +1 -1
- package/build/services/drive/patch.js +170 -0
- package/build/services/drive/patch.js.map +1 -1
- package/build/services/gmail/patch.js +7 -2
- package/build/services/gmail/patch.js.map +1 -1
- package/build/services/sheets/patch.js +57 -6
- package/build/services/sheets/patch.js.map +1 -1
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/package.json +4 -2
- package/build/factory/manifest.yaml +0 -1383
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared HTML sanitization for any agent-facing path that emits or ingests
|
|
3
|
+
* HTML (Gmail message bodies, Docs HTML export, Drive HTML files, the
|
|
4
|
+
* scratchpad html format from ADR-302). See ADR-305.
|
|
5
|
+
*
|
|
6
|
+
* Every layer here exists for a specific real-world attack:
|
|
7
|
+
* 1. CSS-hidden subtrees ─ the most common prompt-injection pattern in
|
|
8
|
+
* marketing email; instructions are dropped into a `display:none` block
|
|
9
|
+
* so a human reader doesn't see them but an LLM consuming the markup does.
|
|
10
|
+
* 2. Tag/attribute allowlist ─ blocks `<script>`, event handlers, dangerous
|
|
11
|
+
* URI schemes (`javascript:`, `data:`, `vbscript:`).
|
|
12
|
+
* 3. Unicode injection chars ─ Tag Block (U+E0000–U+E007F), bidi overrides,
|
|
13
|
+
* zero-width spaces. Have been used to smuggle invisible instructions
|
|
14
|
+
* through human review.
|
|
15
|
+
* 4. Spotlighting delimiters ─ wrap the sanitized output in a tagged block
|
|
16
|
+
* with the source and an "untrusted" marker. Microsoft's LLMail-Inject
|
|
17
|
+
* research found this alone drops injection success >50% → <2%; combined
|
|
18
|
+
* with sanitization it's stronger than either layer alone.
|
|
19
|
+
*
|
|
20
|
+
* Default-off in callers: the existing stripped-text path is unchanged.
|
|
21
|
+
* Opt-in via `bodyFormat: 'html'` (or the equivalent on other ops).
|
|
22
|
+
*/
|
|
23
|
+
import sanitizeHtml from 'sanitize-html';
|
|
24
|
+
const ALLOWED_TAGS = [
|
|
25
|
+
// block / structural
|
|
26
|
+
'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
|
|
27
|
+
'p', 'div', 'span', 'section', 'article', 'header', 'footer', 'main', 'nav', 'aside',
|
|
28
|
+
'blockquote', 'pre', 'code',
|
|
29
|
+
'ul', 'ol', 'li',
|
|
30
|
+
'table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td', 'caption', 'colgroup', 'col',
|
|
31
|
+
'hr', 'br',
|
|
32
|
+
// inline
|
|
33
|
+
'b', 'i', 'em', 'strong', 'u', 's', 'sub', 'sup', 'small', 'mark',
|
|
34
|
+
'a', 'img',
|
|
35
|
+
'figure', 'figcaption',
|
|
36
|
+
];
|
|
37
|
+
const ALLOWED_ATTRS = {
|
|
38
|
+
a: ['href', 'title'],
|
|
39
|
+
img: ['src', 'alt', 'title'],
|
|
40
|
+
// intentionally omitted everywhere else — no class, no id, no style, no event handlers
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Drop elements that are CSS-hidden — these are the prompt-injection vehicle.
|
|
44
|
+
*
|
|
45
|
+
* Each pattern terminates on `;`, `!` (for `!important`), or end-of-string,
|
|
46
|
+
* since `display:none !important` is the canonical marketing-email form and
|
|
47
|
+
* the original regex's `;`-only terminator missed it.
|
|
48
|
+
*/
|
|
49
|
+
function isCssHidden(_tag, attribs) {
|
|
50
|
+
if (attribs['aria-hidden'] === 'true')
|
|
51
|
+
return true;
|
|
52
|
+
// HTML5 boolean `hidden` attribute — semantically `display:none`, same threat.
|
|
53
|
+
if (attribs.hidden !== undefined)
|
|
54
|
+
return true;
|
|
55
|
+
const style = (attribs.style ?? '').toLowerCase().replace(/\s+/g, '');
|
|
56
|
+
if (!style)
|
|
57
|
+
return false;
|
|
58
|
+
// `display:none` / `visibility:hidden`, including !important.
|
|
59
|
+
if (/(?:^|;)display:none(?:[;!]|$)/.test(style))
|
|
60
|
+
return true;
|
|
61
|
+
if (/(?:^|;)visibility:hidden(?:[;!]|$)/.test(style))
|
|
62
|
+
return true;
|
|
63
|
+
// opacity:0 (with optional decimal zeros). 0.01-style "almost zero" is left
|
|
64
|
+
// alone — visually different and a legitimate styling value in normal email.
|
|
65
|
+
if (/(?:^|;)opacity:0(?:\.0+)?(?:[;!]|$)/.test(style))
|
|
66
|
+
return true;
|
|
67
|
+
// font-size:0 with any (or no) unit — px, em, rem, pt, %, vh, vw, ex, ch.
|
|
68
|
+
if (/(?:^|;)font-size:0(?:\.0+)?[a-z%]*(?:[;!]|$)/.test(style))
|
|
69
|
+
return true;
|
|
70
|
+
// Off-screen positioning. Negative ≥3 digits on any positioning axis OR a
|
|
71
|
+
// negative text-indent in the same range; positive 3+ digits also catches
|
|
72
|
+
// `text-indent:9999px` (off to the right of the viewport).
|
|
73
|
+
if (/(?:^|;)(?:text-indent|left|right|top|bottom):-\d{3,}/.test(style))
|
|
74
|
+
return true;
|
|
75
|
+
if (/(?:^|;)text-indent:\d{3,}/.test(style))
|
|
76
|
+
return true;
|
|
77
|
+
// Collapsed boxes — width/height 0 (any unit). Combined with overflow:hidden
|
|
78
|
+
// or even alone these render no visible content.
|
|
79
|
+
if (/(?:^|;)(?:width|height|max-width|max-height):0(?:[a-z%]*)(?:[;!]|$)/.test(style))
|
|
80
|
+
return true;
|
|
81
|
+
// Clip and clip-path zero-rect hide patterns.
|
|
82
|
+
if (/(?:^|;)clip:rect\(0(?:px)?,0(?:px)?,0(?:px)?,0(?:px)?\)/.test(style))
|
|
83
|
+
return true;
|
|
84
|
+
if (/(?:^|;)clip-path:inset\(50%\)/.test(style))
|
|
85
|
+
return true;
|
|
86
|
+
// Transforms that hide content: scale(0), large negative translate.
|
|
87
|
+
if (/(?:^|;)transform:scale\(0(?:\.0+)?(?:,\s*0(?:\.0+)?)?\)/.test(style))
|
|
88
|
+
return true;
|
|
89
|
+
if (/(?:^|;)transform:translate(?:x|y)?\(-\d{3,}/.test(style))
|
|
90
|
+
return true;
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
/** Runtime validation — the Spotlighting wrapper is forgeable if `source` is computed. */
|
|
94
|
+
const ALLOWED_SOURCES = new Set([
|
|
95
|
+
'gmail', 'docs', 'drive', 'scratchpad-import',
|
|
96
|
+
]);
|
|
97
|
+
// Unicode characters that don't render but can carry meaning to an LLM.
|
|
98
|
+
// Tag Block (U+E0000–U+E007F): used in published prompt-smuggling attacks.
|
|
99
|
+
// Bidi overrides (U+202A–U+202E, U+2066–U+2069): can reorder visible text.
|
|
100
|
+
// Zero-width (U+200B–U+200D, U+2060, U+FEFF): hidden tokens.
|
|
101
|
+
// eslint-disable-next-line no-misleading-character-class
|
|
102
|
+
const INJECTION_CHARS = /[\u{E0000}-\u{E007F}\u{202A}-\u{202E}\u{2066}-\u{2069}\u{200B}-\u{200D}\u{2060}\u{FEFF}]/gu;
|
|
103
|
+
function stripInjectionChars(s) {
|
|
104
|
+
return s.replace(INJECTION_CHARS, '');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Sanitize HTML before handing it to an agent-facing path.
|
|
108
|
+
*
|
|
109
|
+
* Returns a sanitized HTML string wrapped in a Spotlighting block. Safe to
|
|
110
|
+
* embed directly in tool response text — the wrapper signals "untrusted
|
|
111
|
+
* content" to the consuming model.
|
|
112
|
+
*
|
|
113
|
+
* Empty input returns an empty Spotlighting block (still wrapped, for
|
|
114
|
+
* consistency — callers can compare against `''` to detect no-content).
|
|
115
|
+
*/
|
|
116
|
+
export function sanitizeHtmlForAgent(html, options) {
|
|
117
|
+
const { source } = options;
|
|
118
|
+
// Spotlighting wrapper integrity depends on `source` being one of the known
|
|
119
|
+
// values — types vanish at runtime, so guard here in case a future caller
|
|
120
|
+
// ever passes a config- or input-derived string.
|
|
121
|
+
if (!ALLOWED_SOURCES.has(source)) {
|
|
122
|
+
throw new Error(`sanitizeHtmlForAgent: invalid source ${JSON.stringify(source)}`);
|
|
123
|
+
}
|
|
124
|
+
const input = html ?? '';
|
|
125
|
+
const sanitized = sanitizeHtml(input, {
|
|
126
|
+
allowedTags: ALLOWED_TAGS,
|
|
127
|
+
allowedAttributes: ALLOWED_ATTRS,
|
|
128
|
+
allowedSchemes: ['http', 'https', 'mailto'],
|
|
129
|
+
allowedSchemesByTag: { img: ['http', 'https', 'cid'] },
|
|
130
|
+
// Drop the whole subtree (contents + tags) when the filter returns true —
|
|
131
|
+
// not just the wrapping tag. CSS-hidden injection text never reaches output.
|
|
132
|
+
exclusiveFilter: (frame) => isCssHidden(frame.tag, frame.attribs ?? {}),
|
|
133
|
+
// Disallow the contents of script/style/etc. — sanitize-html drops these
|
|
134
|
+
// tags by default since they're not in allowedTags; we set this to be
|
|
135
|
+
// explicit and to also drop the text content.
|
|
136
|
+
nonTextTags: ['style', 'script', 'textarea', 'option', 'noscript', 'head'],
|
|
137
|
+
// Don't preserve self-closing forms we don't want; default config is fine
|
|
138
|
+
// for the tags we allow.
|
|
139
|
+
});
|
|
140
|
+
const cleaned = stripInjectionChars(sanitized).trim();
|
|
141
|
+
// Spotlighting: the wrapper tells the LLM "this is content, not instruction".
|
|
142
|
+
// Microsoft LLMail-Inject (NeurIPS 2024) found this single technique drops
|
|
143
|
+
// injection success from >50% to <2% even before sanitization.
|
|
144
|
+
return `<${source}_content trust="untrusted">${cleaned}</${source}_content>`;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=html-sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-sanitize.js","sourceRoot":"","sources":["../../../src/server/formatting/html-sanitize.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,19 @@ export interface HandlerResponse {
|
|
|
21
21
|
/** Optional content blocks (images, audio) returned alongside text. */
|
|
22
22
|
content?: ContentBlock[];
|
|
23
23
|
}
|
|
24
|
+
export type EmailBodyFormat = 'plain' | 'html';
|
|
24
25
|
/**
|
|
25
26
|
* Walk Gmail MIME payload parts to extract the message body.
|
|
26
|
-
*
|
|
27
|
+
*
|
|
28
|
+
* `format: 'plain'` (default) — prefers `text/plain`, falls back to a lossy
|
|
29
|
+
* `stripHtml()` on `text/html`. Existing behavior.
|
|
30
|
+
* `format: 'html'` — prefers `text/html` and returns it sanitized + wrapped
|
|
31
|
+
* in a Spotlighting block (ADR-305). Falls back to the `text/plain` part
|
|
32
|
+
* if no HTML exists.
|
|
33
|
+
*
|
|
34
|
+
* Decodes base64url body data either way.
|
|
27
35
|
*/
|
|
28
|
-
export declare function extractBodyFromPayload(payload: Record<string, unknown> | undefined): string;
|
|
36
|
+
export declare function extractBodyFromPayload(payload: Record<string, unknown> | undefined, format?: EmailBodyFormat): string;
|
|
29
37
|
export declare function formatEmailList(data: unknown): HandlerResponse;
|
|
30
38
|
/** Extract attachments from message payload parts (recursive). */
|
|
31
39
|
export declare function extractAttachments(parts: unknown[]): Array<{
|
|
@@ -34,7 +42,9 @@ export declare function extractAttachments(parts: unknown[]): Array<{
|
|
|
34
42
|
size: number;
|
|
35
43
|
attachmentId: string;
|
|
36
44
|
}>;
|
|
37
|
-
export declare function formatEmailDetail(data: unknown
|
|
45
|
+
export declare function formatEmailDetail(data: unknown, options?: {
|
|
46
|
+
bodyFormat?: EmailBodyFormat;
|
|
47
|
+
}): HandlerResponse;
|
|
38
48
|
export declare function formatEventList(data: unknown): HandlerResponse;
|
|
39
49
|
export declare function formatEventDetail(data: unknown): HandlerResponse;
|
|
40
50
|
export declare function formatFileList(data: unknown): HandlerResponse;
|
|
@@ -9,22 +9,48 @@
|
|
|
9
9
|
* structured values queue $N.field resolution needs
|
|
10
10
|
*/
|
|
11
11
|
// --- Email body extraction ---
|
|
12
|
+
import { sanitizeHtmlForAgent } from './html-sanitize.js';
|
|
12
13
|
/**
|
|
13
14
|
* Walk Gmail MIME payload parts to extract the message body.
|
|
14
|
-
*
|
|
15
|
+
*
|
|
16
|
+
* `format: 'plain'` (default) — prefers `text/plain`, falls back to a lossy
|
|
17
|
+
* `stripHtml()` on `text/html`. Existing behavior.
|
|
18
|
+
* `format: 'html'` — prefers `text/html` and returns it sanitized + wrapped
|
|
19
|
+
* in a Spotlighting block (ADR-305). Falls back to the `text/plain` part
|
|
20
|
+
* if no HTML exists.
|
|
21
|
+
*
|
|
22
|
+
* Decodes base64url body data either way.
|
|
15
23
|
*/
|
|
16
|
-
export function extractBodyFromPayload(payload) {
|
|
24
|
+
export function extractBodyFromPayload(payload, format = 'plain') {
|
|
17
25
|
if (!payload)
|
|
18
26
|
return '';
|
|
19
27
|
// Simple (non-multipart) message — body is directly on payload
|
|
20
28
|
const body = payload.body;
|
|
21
29
|
if (body?.data && !payload.parts) {
|
|
22
|
-
|
|
30
|
+
const decoded = decodeBase64Url(String(body.data));
|
|
31
|
+
const mimeType = String(payload.mimeType ?? '');
|
|
32
|
+
if (format === 'html' && mimeType === 'text/html') {
|
|
33
|
+
return sanitizeHtmlForAgent(decoded, { source: 'gmail' });
|
|
34
|
+
}
|
|
35
|
+
if (format === 'plain' && mimeType === 'text/html') {
|
|
36
|
+
return stripHtml(decoded);
|
|
37
|
+
}
|
|
38
|
+
return decoded;
|
|
23
39
|
}
|
|
24
|
-
// Multipart — walk parts tree
|
|
40
|
+
// Multipart — walk parts tree
|
|
25
41
|
const parts = payload.parts;
|
|
26
42
|
if (!parts || parts.length === 0)
|
|
27
43
|
return '';
|
|
44
|
+
if (format === 'html') {
|
|
45
|
+
const html = findPart(parts, 'text/html');
|
|
46
|
+
if (html)
|
|
47
|
+
return sanitizeHtmlForAgent(html, { source: 'gmail' });
|
|
48
|
+
const plain = findPart(parts, 'text/plain');
|
|
49
|
+
if (plain)
|
|
50
|
+
return plain;
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
// 'plain' — prefer text/plain, fall back to stripped HTML
|
|
28
54
|
const plain = findPart(parts, 'text/plain');
|
|
29
55
|
if (plain)
|
|
30
56
|
return plain;
|
|
@@ -150,7 +176,7 @@ export function extractAttachments(parts) {
|
|
|
150
176
|
}
|
|
151
177
|
return attachments;
|
|
152
178
|
}
|
|
153
|
-
export function formatEmailDetail(data) {
|
|
179
|
+
export function formatEmailDetail(data, options = {}) {
|
|
154
180
|
const msg = data;
|
|
155
181
|
const payload = msg.payload;
|
|
156
182
|
const headers = (payload?.headers ?? []);
|
|
@@ -162,7 +188,8 @@ export function formatEmailDetail(data) {
|
|
|
162
188
|
const date = getHeader('date');
|
|
163
189
|
const labels = (msg.labelIds ?? []);
|
|
164
190
|
const snippet = String(msg.snippet ?? '');
|
|
165
|
-
const
|
|
191
|
+
const bodyFormat = options.bodyFormat ?? 'plain';
|
|
192
|
+
const fullBody = extractBodyFromPayload(payload, bodyFormat);
|
|
166
193
|
const parts = [
|
|
167
194
|
`## ${subject || '(no subject)'}`,
|
|
168
195
|
'',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/server/formatting/markdown.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/server/formatting/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH,gCAAgC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI1D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA4C,EAC5C,SAA0B,OAAO;IAEjC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,+DAA+D;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,IAA2C,CAAC;IACjE,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO,oBAAoB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,MAAM,KAAK,OAAO,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,8BAA8B;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAmD,CAAC;IAC1E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC1C,IAAI,IAAI;YAAE,OAAO,oBAAoB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5C,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,0DAA0D;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC1C,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAqC,EAAE,QAAgB;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAA2C,CAAC;YAC9D,IAAI,IAAI,EAAE,IAAI;gBAAE,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,gCAAgC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAuC,EAAE,QAAQ,CAAC,CAAC;YAC/E,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,8CAA8C;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;SAC1B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,iEAAiE;AACjE,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,qFAAqF;AACrF,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,OAAe,EACf,QAAgB,EAChB,SAAiB;IAEjB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,MAAM,IAAI,eAAe,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IACtE,CAAC;IAED,kEAAkE;IAClE,OAAO;QACL,IAAI,EAAE,GAAG,OAAO,MAAM;YACpB,wBAAwB,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;YACxG,kEAAkE,SAAS,6BAA6B;QAC1G,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,MAAM;KACvB,CAAC;AACJ,CAAC;AAED,2BAA2B;AAE3B,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,QAAQ,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,CAA8B,CAAC;IAElF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,oBAAoB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,WAAW;YACtB,CAAC,CAAC,oBAAoB,KAAK,GAAG;YAC9B,CAAC,CAAC,sJAAsJ,CAAC;QAC3J,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,GAAG,EAAE,MAAM,IAAI,MAAM,OAAO,MAAM,IAAI,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,gBAAgB,QAAQ,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI;QACJ,IAAI,EAAE;YACJ,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SAChD;KACF,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IACjD,MAAM,WAAW,GAAsF,EAAE,CAAC;IAC1G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,IAA+B,CAAC;QAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAA8B,CAAC;QAClD,MAAM,IAAI,GAAG,CAAC,CAAC,IAA2C,CAAC;QAC3D,MAAM,YAAY,GAAG,IAAI,EAAE,YAAkC,CAAC;QAE9D,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ;gBACR,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAClC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;gBAC7B,YAAY;aACb,CAAC,CAAC;QACL,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,KAAkB,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAa,EACb,UAA4C,EAAE;IAE9C,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,OAA8C,CAAC;IACnE,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAA2C,CAAC;IAEnF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IAE9E,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAa,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAoB,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC;IAClE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAa;QACtB,MAAM,OAAO,IAAI,cAAc,EAAE;QACjC,EAAE;QACF,aAAa,IAAI,EAAE;QACnB,WAAW,EAAE,EAAE;QACf,aAAa,IAAI,EAAE;KACpB,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,kCAAkC;IAClC,MAAM,WAAW,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,WAAW,CAAC,MAAM,MAAM,CAAC,CAAC;QAC3D,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YACtF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE;YACJ,EAAE;YACF,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;YACpC,SAAS,EAAE,EAAE;YACb,IAAI;YACJ,EAAE;YACF,OAAO;YACP,aAAa,EAAE,WAAW,CAAC,SAAS;YACpC,cAAc,EAAE,WAAW,CAAC,cAAc;YAC1C,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;SACJ;KACF,CAAC;AACJ,CAAC;AAED,8BAA8B;AAE9B,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAA8B,CAAC;IAE9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,YAAY,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,GAAG,MAAM,IAAI,SAAS,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,MAAM,EAAE,IAAI,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,cAAc,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAElE,OAAO;QACL,IAAI;QACJ,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;YACnC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SAC3C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,MAAM,KAAK,GAAG,IAA+B,CAAC;IAC9C,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAmC,CAAC;IAC5E,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,SAAS,GAAI,KAAK,CAAC,SAAqC,EAAE,KAA2B,CAAC;IAE5F,MAAM,QAAQ,GAAI,KAAK,CAAC,cAA0C,EAAE,WAAW;QAC7E,CAAC,CAAG,KAAK,CAAC,cAA0C,CAAC,WAA8C;aAC9F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,OAAO,CAAC,EAAE,GAAyB;QACvE,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,KAAK,GAAa;QACtB,MAAM,OAAO,EAAE;QACf,EAAE;QACF,aAAa,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;KAC3C,CAAC;IAEF,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;IACnD,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;IACzD,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IAElD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK;gBACzC,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK;oBACzC,CAAC,CAAC,KAAK,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE;YACJ,EAAE;YACF,OAAO,EAAE,EAAE;YACX,OAAO;YACP,KAAK;YACL,GAAG;YACH,SAAS;YACT,QAAQ;SACT;KACF,CAAC;AACJ,CAAC;AAED,2BAA2B;AAE3B,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAA8B,CAAC;IAE9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,GAAG,EAAE,MAAM,IAAI,MAAM,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,aAAa,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAEjE,OAAO;QACL,IAAI;QACJ,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,MAAM,IAAI,GAAG,IAA+B,CAAC;IAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAmC,CAAC;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAa;QACtB,MAAM,IAAI,EAAE;QACZ,EAAE;QACF,aAAa,QAAQ,EAAE;QACvB,iBAAiB,QAAQ,EAAE;KAC5B,CAAC;IAEF,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEnD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACzC,CAAC;AACJ,CAAC;AAED,kBAAkB;AAElB,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW;IACtC,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAa;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,IAA8B,CAAC;IACzC,OAAO,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,GAAW;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC;QAEnD,MAAM,KAAK,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnG,MAAM,KAAK,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAElG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC;QAEzD,MAAM,KAAK,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEnG,sCAAsC;QACtC,IAAI,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1C,OAAO,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACtC,CAAC;QACD,iBAAiB;QACjB,MAAM,KAAK,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAClG,OAAO,GAAG,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,mDAAmD;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClF,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,CAAC"}
|
|
@@ -53,7 +53,7 @@ export async function handleCalendar(params) {
|
|
|
53
53
|
if (params.location)
|
|
54
54
|
args.push('--location', String(params.location));
|
|
55
55
|
if (params.attendees)
|
|
56
|
-
args.push('--
|
|
56
|
+
args.push('--attendee', String(params.attendees));
|
|
57
57
|
const result = await execute(args, { account: email });
|
|
58
58
|
const data = result.data;
|
|
59
59
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/server/handlers/calendar.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/server/handlers/calendar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration-ish tests for the docs-bound mutation path through the
|
|
3
|
+
* scratchpad handler. Mocks `execute` from the gws executor; everything
|
|
4
|
+
* else is real (ScratchpadManager, the docs-sync translator).
|
|
5
|
+
*
|
|
6
|
+
* Covers the two test cases that the pure-translator tests can't:
|
|
7
|
+
* - API rejects → local buffer preserved, error response returned.
|
|
8
|
+
* - API succeeds → reloadDocsBuffer fires, sp.lines replaced from the
|
|
9
|
+
* fresh response, binding revisionId updated.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration-ish tests for the docs-bound mutation path through the
|
|
3
|
+
* scratchpad handler. Mocks `execute` from the gws executor; everything
|
|
4
|
+
* else is real (ScratchpadManager, the docs-sync translator).
|
|
5
|
+
*
|
|
6
|
+
* Covers the two test cases that the pure-translator tests can't:
|
|
7
|
+
* - API rejects → local buffer preserved, error response returned.
|
|
8
|
+
* - API succeeds → reloadDocsBuffer fires, sp.lines replaced from the
|
|
9
|
+
* fresh response, binding revisionId updated.
|
|
10
|
+
*/
|
|
11
|
+
jest.mock('../../../executor/gws.js');
|
|
12
|
+
jest.mock('../../handler.js', () => ({ getEpoch: () => 0 }));
|
|
13
|
+
import { execute } from '../../../executor/gws.js';
|
|
14
|
+
import { handleScratchpad } from '../handler.js';
|
|
15
|
+
import { getScratchpadManager } from '../handler.js';
|
|
16
|
+
const mockExecute = execute;
|
|
17
|
+
/** Seed a docs-bound JSON scratchpad with a one-paragraph doc and return its id. */
|
|
18
|
+
function seedDocsBoundScratchpad(opts) {
|
|
19
|
+
const manager = getScratchpadManager();
|
|
20
|
+
const id = manager.create({ format: 'json' });
|
|
21
|
+
const doc = {
|
|
22
|
+
documentId: 'doc-1',
|
|
23
|
+
revisionId: opts?.revisionId ?? 'rev-1',
|
|
24
|
+
body: {
|
|
25
|
+
content: [
|
|
26
|
+
{
|
|
27
|
+
startIndex: 1,
|
|
28
|
+
endIndex: 13,
|
|
29
|
+
paragraph: {
|
|
30
|
+
elements: [
|
|
31
|
+
{ startIndex: 1, endIndex: 13, textRun: { content: 'Hello world\n' } },
|
|
32
|
+
],
|
|
33
|
+
paragraphStyle: { namedStyleType: 'NORMAL_TEXT' },
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
const sp = manager.get(id);
|
|
40
|
+
sp.lines = JSON.stringify(doc, null, 2).split('\n');
|
|
41
|
+
manager.setBinding(id, {
|
|
42
|
+
service: 'docs', resourceId: 'doc-1', account: 'me@test.com',
|
|
43
|
+
revisionId: opts?.revisionId ?? 'rev-1',
|
|
44
|
+
});
|
|
45
|
+
return id;
|
|
46
|
+
}
|
|
47
|
+
describe('docs-bound json_set', () => {
|
|
48
|
+
beforeEach(() => {
|
|
49
|
+
mockExecute.mockReset();
|
|
50
|
+
});
|
|
51
|
+
it('rejects an unsupported path WITHOUT mutating the local buffer (pre-validation)', async () => {
|
|
52
|
+
const id = seedDocsBoundScratchpad();
|
|
53
|
+
const manager = getScratchpadManager();
|
|
54
|
+
const linesBefore = [...manager.get(id).lines];
|
|
55
|
+
const result = await handleScratchpad({
|
|
56
|
+
operation: 'json_set',
|
|
57
|
+
scratchpadId: id,
|
|
58
|
+
// textStyle.bold is structural in the supported-path sense — not in the allowlist.
|
|
59
|
+
path: '$.body.content[0].paragraph.elements[0].textStyle.bold',
|
|
60
|
+
value: true,
|
|
61
|
+
});
|
|
62
|
+
expect(result.text).toMatch(/rejected/);
|
|
63
|
+
expect(result.text).toMatch(/not supported/);
|
|
64
|
+
// Pre-validation contract: the buffer is untouched on rejection.
|
|
65
|
+
expect(manager.get(id).lines).toEqual(linesBefore);
|
|
66
|
+
expect(mockExecute).not.toHaveBeenCalled();
|
|
67
|
+
});
|
|
68
|
+
it('on API success, pushes batchUpdate and reloads the buffer from documents.get', async () => {
|
|
69
|
+
const id = seedDocsBoundScratchpad({ revisionId: 'rev-1' });
|
|
70
|
+
const manager = getScratchpadManager();
|
|
71
|
+
// First call: batchUpdate succeeds.
|
|
72
|
+
// Second call: documents.get returns the fresh doc (with bumped revisionId).
|
|
73
|
+
mockExecute
|
|
74
|
+
.mockResolvedValueOnce({ success: true, data: {}, stderr: '' })
|
|
75
|
+
.mockResolvedValueOnce({
|
|
76
|
+
success: true,
|
|
77
|
+
data: {
|
|
78
|
+
documentId: 'doc-1',
|
|
79
|
+
revisionId: 'rev-2',
|
|
80
|
+
body: {
|
|
81
|
+
content: [{
|
|
82
|
+
startIndex: 1,
|
|
83
|
+
endIndex: 9,
|
|
84
|
+
paragraph: {
|
|
85
|
+
elements: [{ startIndex: 1, endIndex: 9, textRun: { content: 'Goodbye\n' } }],
|
|
86
|
+
paragraphStyle: { namedStyleType: 'NORMAL_TEXT' },
|
|
87
|
+
},
|
|
88
|
+
}],
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
stderr: '',
|
|
92
|
+
});
|
|
93
|
+
const result = await handleScratchpad({
|
|
94
|
+
operation: 'json_set',
|
|
95
|
+
scratchpadId: id,
|
|
96
|
+
path: '$.body.content[0].paragraph.elements[0].textRun.content',
|
|
97
|
+
value: 'Goodbye',
|
|
98
|
+
});
|
|
99
|
+
expect(result.refs.synced).toBe(true);
|
|
100
|
+
expect(mockExecute).toHaveBeenCalledTimes(2);
|
|
101
|
+
// First call: batchUpdate with the translated request + writeControl.
|
|
102
|
+
const batchArgs = mockExecute.mock.calls[0][0];
|
|
103
|
+
expect(batchArgs.slice(0, 3)).toEqual(['docs', 'documents', 'batchUpdate']);
|
|
104
|
+
const body = JSON.parse(batchArgs[batchArgs.indexOf('--json') + 1]);
|
|
105
|
+
expect(body.requests[0]).toEqual({ deleteContentRange: { range: { startIndex: 1, endIndex: 12 } } });
|
|
106
|
+
expect(body.requests[1]).toEqual({ insertText: { text: 'Goodbye', location: { index: 1 } } });
|
|
107
|
+
expect(body.writeControl).toEqual({ requiredRevisionId: 'rev-1' });
|
|
108
|
+
// Second call: documents.get for the reload.
|
|
109
|
+
expect(mockExecute.mock.calls[1][0].slice(0, 3)).toEqual(['docs', 'documents', 'get']);
|
|
110
|
+
// Buffer reloaded from fresh response.
|
|
111
|
+
const reloaded = JSON.parse(manager.get(id).lines.join('\n'));
|
|
112
|
+
expect(reloaded.revisionId).toBe('rev-2');
|
|
113
|
+
expect(reloaded.body.content[0].paragraph.elements[0].textRun.content).toBe('Goodbye\n');
|
|
114
|
+
// Binding revisionId advanced for the NEXT sync.
|
|
115
|
+
expect(manager.getBinding(id)?.revisionId).toBe('rev-2');
|
|
116
|
+
});
|
|
117
|
+
it('on API rejection, preserves the local buffer change and returns an error', async () => {
|
|
118
|
+
const id = seedDocsBoundScratchpad({ revisionId: 'rev-1' });
|
|
119
|
+
const manager = getScratchpadManager();
|
|
120
|
+
// Simulate the API rejecting (e.g., stale requiredRevisionId).
|
|
121
|
+
mockExecute.mockRejectedValueOnce(new Error('precondition failed: revisionId mismatch'));
|
|
122
|
+
const result = await handleScratchpad({
|
|
123
|
+
operation: 'json_set',
|
|
124
|
+
scratchpadId: id,
|
|
125
|
+
path: '$.body.content[0].paragraph.elements[0].textRun.content',
|
|
126
|
+
value: 'Goodbye',
|
|
127
|
+
});
|
|
128
|
+
expect(result.refs.error).toBe(true);
|
|
129
|
+
expect(result.text).toMatch(/Sync failed/);
|
|
130
|
+
expect(result.text).toMatch(/Retry or use scratchpad reset to discard/);
|
|
131
|
+
// The batchUpdate was attempted; the reload (second call) was NOT.
|
|
132
|
+
expect(mockExecute).toHaveBeenCalledTimes(1);
|
|
133
|
+
// Local buffer holds the would-have-synced change — agent retries or discards.
|
|
134
|
+
const buffer = JSON.parse(manager.get(id).lines.join('\n'));
|
|
135
|
+
expect(buffer.body.content[0].paragraph.elements[0].textRun.content).toBe('Goodbye');
|
|
136
|
+
// Binding revisionId did NOT advance — still the original.
|
|
137
|
+
expect(manager.getBinding(id)?.revisionId).toBe('rev-1');
|
|
138
|
+
});
|
|
139
|
+
it('json_delete on a docs-bound scratchpad is rejected (structural)', async () => {
|
|
140
|
+
const id = seedDocsBoundScratchpad();
|
|
141
|
+
const manager = getScratchpadManager();
|
|
142
|
+
const linesBefore = [...manager.get(id).lines];
|
|
143
|
+
const result = await handleScratchpad({
|
|
144
|
+
operation: 'json_delete',
|
|
145
|
+
scratchpadId: id,
|
|
146
|
+
path: '$.body.content[0]',
|
|
147
|
+
});
|
|
148
|
+
expect(result.text).toMatch(/rejected/);
|
|
149
|
+
expect(result.text).toMatch(/structural/);
|
|
150
|
+
expect(manager.get(id).lines).toEqual(linesBefore);
|
|
151
|
+
expect(mockExecute).not.toHaveBeenCalled();
|
|
152
|
+
});
|
|
153
|
+
it('omits writeControl when the binding has no revisionId (legacy import)', async () => {
|
|
154
|
+
const id = seedDocsBoundScratchpad({ revisionId: undefined });
|
|
155
|
+
// Need to clear it explicitly — the seed helper defaults to 'rev-1'.
|
|
156
|
+
const manager = getScratchpadManager();
|
|
157
|
+
manager.setBinding(id, { service: 'docs', resourceId: 'doc-1', account: 'me@test.com' });
|
|
158
|
+
mockExecute
|
|
159
|
+
.mockResolvedValueOnce({ success: true, data: {}, stderr: '' })
|
|
160
|
+
.mockResolvedValueOnce({
|
|
161
|
+
success: true,
|
|
162
|
+
data: {
|
|
163
|
+
documentId: 'doc-1',
|
|
164
|
+
revisionId: 'rev-9',
|
|
165
|
+
body: { content: [{
|
|
166
|
+
startIndex: 1, endIndex: 13,
|
|
167
|
+
paragraph: {
|
|
168
|
+
elements: [{ startIndex: 1, endIndex: 13, textRun: { content: 'Hello world\n' } }],
|
|
169
|
+
paragraphStyle: {},
|
|
170
|
+
},
|
|
171
|
+
}] },
|
|
172
|
+
},
|
|
173
|
+
stderr: '',
|
|
174
|
+
});
|
|
175
|
+
await handleScratchpad({
|
|
176
|
+
operation: 'json_set',
|
|
177
|
+
scratchpadId: id,
|
|
178
|
+
path: '$.body.content[0].paragraph.elements[0].textRun.content',
|
|
179
|
+
value: 'X',
|
|
180
|
+
});
|
|
181
|
+
const body = JSON.parse(mockExecute.mock.calls[0][0][mockExecute.mock.calls[0][0].indexOf('--json') + 1]);
|
|
182
|
+
expect(body.writeControl).toBeUndefined();
|
|
183
|
+
// But the reload picks up a fresh revisionId for the next sync.
|
|
184
|
+
expect(manager.getBinding(id)?.revisionId).toBe('rev-9');
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=docs-sync-integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-sync-integration.test.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/__tests__/docs-sync-integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for docs-sync — translating a scratchpad JSON-mode mutation into
|
|
3
|
+
* a Docs batchUpdate request. Pure translator; no API calls (mocked or
|
|
4
|
+
* otherwise) in this file. See issue #79.
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
/**
|
|
8
|
+
* Suggested next pass — handler-level integration tests that mock `execute`
|
|
9
|
+
* to cover the API-error-preserves-buffer and success-reloads-buffer cases.
|
|
10
|
+
* Co-located with this file would be reasonable; a separate file under the
|
|
11
|
+
* same dir keeps the unit-vs-integration split clear.
|
|
12
|
+
*
|
|
13
|
+
* - API rejects (stale revisionId, structural error) → buffer preserved.
|
|
14
|
+
* - API succeeds → reloadDocsBuffer fires, sp.lines replaced, binding
|
|
15
|
+
* revisionId updated from the fresh response.
|
|
16
|
+
*/
|