@bubstack/moe-glass 0.1.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 +29 -0
- package/agents/browser-user.md +105 -0
- package/dist/LICENSE +25 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22517 -0
- package/dist/index.js.map +1 -0
- package/dist/payload.d.ts +214 -0
- package/dist/payload.d.ts.map +1 -0
- package/dist/payload.js +325 -0
- package/dist/payload.js.map +1 -0
- package/package.json +59 -0
- package/skills/browsing/COMMANDLINE-USAGE.md +595 -0
- package/skills/browsing/EXAMPLES.md +717 -0
- package/skills/browsing/README.md +55 -0
- package/skills/browsing/SKILL.md +478 -0
- package/skills/browsing/chrome-ws +1021 -0
- package/skills/browsing/chrome-ws-lib.js +461 -0
- package/skills/browsing/host-override.js +98 -0
- package/skills/browsing/lib/browser-bridge.js +175 -0
- package/skills/browsing/lib/browser-session.js +137 -0
- package/skills/browsing/lib/capture.js +499 -0
- package/skills/browsing/lib/cdp-router.js +72 -0
- package/skills/browsing/lib/cdp-utils.js +18 -0
- package/skills/browsing/lib/chrome-launcher-helpers.js +374 -0
- package/skills/browsing/lib/chrome-process.js +464 -0
- package/skills/browsing/lib/console-logging.js +70 -0
- package/skills/browsing/lib/cookies.js +17 -0
- package/skills/browsing/lib/dialogs-render.js +154 -0
- package/skills/browsing/lib/dialogs-router.js +117 -0
- package/skills/browsing/lib/dialogs.js +254 -0
- package/skills/browsing/lib/element-selector.js +91 -0
- package/skills/browsing/lib/evaluation.js +85 -0
- package/skills/browsing/lib/extraction.js +55 -0
- package/skills/browsing/lib/file-upload.js +56 -0
- package/skills/browsing/lib/html-diff.js +122 -0
- package/skills/browsing/lib/key-definitions.js +149 -0
- package/skills/browsing/lib/keyboard-input.js +288 -0
- package/skills/browsing/lib/mouse.js +423 -0
- package/skills/browsing/lib/navigation.js +272 -0
- package/skills/browsing/lib/page-scripts/dom-summary.js +31 -0
- package/skills/browsing/lib/page-scripts/markdown.js +85 -0
- package/skills/browsing/lib/page-scripts/permission-shim.js +80 -0
- package/skills/browsing/lib/page-session.js +106 -0
- package/skills/browsing/lib/profile-lock.js +179 -0
- package/skills/browsing/lib/screenshot.js +171 -0
- package/skills/browsing/lib/select-option.js +99 -0
- package/skills/browsing/lib/session-state.js +66 -0
- package/skills/browsing/lib/tabs.js +144 -0
- package/skills/browsing/lib/viewport.js +103 -0
- package/skills/browsing/lib/websocket-client.js +162 -0
- package/skills/browsing/package.json +11 -0
- package/skills/browsing/test-chrome-args.js +81 -0
- package/skills/browsing/test-cookies.js +21 -0
- package/skills/browsing/test-e2e.sh +51 -0
- package/skills/browsing/test-extract.sh +17 -0
- package/skills/browsing/test-interact.sh +11 -0
- package/skills/browsing/test-navigate.sh +9 -0
- package/skills/browsing/test-raw.sh +8 -0
- package/skills/browsing/test-tabs.sh +15 -0
- package/skills/browsing/test-viewport.js +27 -0
- package/skills/browsing/test-wait.sh +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payload normalization for the use_browser tool's `payload` parameter.
|
|
3
|
+
*
|
|
4
|
+
* `payload` is declared as `z.union([z.string(), z.record(z.any())])` —
|
|
5
|
+
* every action accepts either a real object or a string. The string form
|
|
6
|
+
* exists because MCP clients frequently JSON.stringify their arguments
|
|
7
|
+
* regardless of the target action's shape (see e.g. the mouse_move example
|
|
8
|
+
* in skills/browsing/SKILL.md, which passes
|
|
9
|
+
* `payload: "{\"x\":100,\"y\":200}"`).
|
|
10
|
+
*
|
|
11
|
+
* Historically, a string payload was never JSON.parse'd — it was wrapped
|
|
12
|
+
* literally as `{ [defaultKey]: <the raw string> }`. That's correct for
|
|
13
|
+
* actions whose payload IS free text or code (eval's JS source, type's
|
|
14
|
+
* literal text, await_text's search string — see PAYLOAD_SPECS below), but
|
|
15
|
+
* wrong for actions whose payload is a multi-field object with no
|
|
16
|
+
* legitimate bare-string meaning (set_viewport's {width,height},
|
|
17
|
+
* mouse_move's {x,y}): a caller who JSON.stringify'd `{width:390,
|
|
18
|
+
* height:844}` got back a payload of `{ viewport: '{"width":390,...}' }`,
|
|
19
|
+
* `vp.width` was `undefined`, and the action threw "requires payload with
|
|
20
|
+
* width and height" — even though both were supplied, just encoded as a
|
|
21
|
+
* string instead of passed as an object.
|
|
22
|
+
*
|
|
23
|
+
* This module is the single place that decides, per action, whether a
|
|
24
|
+
* string payload should be treated as encoded JSON to deserialize
|
|
25
|
+
* ('structured') or taken literally as the value itself ('scalar' — code
|
|
26
|
+
* or free text). It has no side effects and doesn't touch chrome-ws, so it
|
|
27
|
+
* can be imported directly by tests without booting a browser or an MCP
|
|
28
|
+
* server.
|
|
29
|
+
*/
|
|
30
|
+
export type PayloadKind = 'structured' | 'scalar';
|
|
31
|
+
export interface PayloadSpec {
|
|
32
|
+
kind: PayloadKind;
|
|
33
|
+
/** The object key a bare (non-JSON, or not-an-object) string payload is wrapped under. */
|
|
34
|
+
defaultKey: string;
|
|
35
|
+
/**
|
|
36
|
+
* True when defaultKey is semantically an INTEGER, so a bare numeric
|
|
37
|
+
* string payload should be wrapped as a number rather than as the raw
|
|
38
|
+
* string. Declared here (not special-cased in the action's handler) so
|
|
39
|
+
* the per-action shape table stays the single source of truth for how a
|
|
40
|
+
* string payload is interpreted.
|
|
41
|
+
*
|
|
42
|
+
* Only get_console_messages sets this: its `since` is an epoch-ms
|
|
43
|
+
* timestamp, and a caller passing the bare string '1785900000000' plainly
|
|
44
|
+
* means that instant. Deliberately NOT set for switch_tab, whose bare
|
|
45
|
+
* string is ALSO legitimately a URL/title substring — it resolves numeric
|
|
46
|
+
* vs. substring itself, and coercing here would change which branch a
|
|
47
|
+
* numeric-looking string takes.
|
|
48
|
+
*/
|
|
49
|
+
numericDefaultKey?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Per-action payload shape declaration — the source of truth Postel's-law
|
|
53
|
+
* string handling is driven from.
|
|
54
|
+
*
|
|
55
|
+
* kind: 'scalar' — the string IS the value. NEVER JSON.parse'd, no matter
|
|
56
|
+
* how JSON-ish it looks. This is for code or free text where a payload of
|
|
57
|
+
* `[1,2]` or `{"a":1}` is a perfectly normal *literal* value and silently
|
|
58
|
+
* reinterpreting it would change what a currently-working call does:
|
|
59
|
+
* eval (JS source), type (literal text to type), await_text (literal text
|
|
60
|
+
* to wait for), select (a dropdown option's literal value/text).
|
|
61
|
+
*
|
|
62
|
+
* kind: 'structured' — the payload is semantically an object with named
|
|
63
|
+
* fields. A string payload is JSON.parse'd; if it parses to a plain
|
|
64
|
+
* object, that object *is* the payload (Postel's law: a stringified
|
|
65
|
+
* encoding of the object form works the same as passing the object
|
|
66
|
+
* directly). If it parses to an array, the array is wrapped under
|
|
67
|
+
* defaultKey (file_upload's `files` may legitimately be a JSON array of
|
|
68
|
+
* paths). If parsing fails, or produces something else, parsePayload()
|
|
69
|
+
* falls back to the historical literal-wrap under defaultKey — most
|
|
70
|
+
* 'structured' actions also have a legitimate single-value bare-string
|
|
71
|
+
* form (navigate's URL, a CSS selector, an attribute/key/profile name, a
|
|
72
|
+
* file path, a format keyword) so a non-JSON string must still work
|
|
73
|
+
* exactly as it always has, not error out.
|
|
74
|
+
*
|
|
75
|
+
* Two actions — set_viewport and mouse_move — are 'structured' with NO
|
|
76
|
+
* legitimate bare-string fallback at all (there's no sensible single
|
|
77
|
+
* string that means "width and height" or "x and y"). Those two use
|
|
78
|
+
* resolveStrictStructuredPayload() below instead of parsePayload(), so a
|
|
79
|
+
* string that isn't parseable JSON produces an honest error instead of
|
|
80
|
+
* being silently wrapped and then failing a field check with a misleading
|
|
81
|
+
* "missing" message.
|
|
82
|
+
*
|
|
83
|
+
* scroll and drag_drop are NOT listed here: their bare-string form maps to
|
|
84
|
+
* a *different* field than their object form's defaultKey would (scroll's
|
|
85
|
+
* bare string is a direction keyword, not a deltaX/deltaY value; drag_drop's
|
|
86
|
+
* bare string is the *target* selector, not the *source*), and drag_drop
|
|
87
|
+
* additionally has a bare-coordinates form. A single generic
|
|
88
|
+
* `{ [defaultKey]: string }` wrap can't express that, so they keep bespoke
|
|
89
|
+
* dispatch in index.ts — but that dispatch uses the same tryParseJsonObject()
|
|
90
|
+
* primitive defined below instead of ad hoc inline JSON.parse calls.
|
|
91
|
+
*/
|
|
92
|
+
export declare const PAYLOAD_SPECS: Record<string, PayloadSpec>;
|
|
93
|
+
/** Truncate a string for embedding in an error message. */
|
|
94
|
+
export declare function truncateForError(s: string, max?: number): string;
|
|
95
|
+
/**
|
|
96
|
+
* Attempt to JSON.parse a string payload into a plain object (never an
|
|
97
|
+
* array — callers that want array results, like file_upload's file list,
|
|
98
|
+
* handle that themselves). Returns undefined if the input isn't a string,
|
|
99
|
+
* doesn't look JSON-shaped, or fails to parse / doesn't parse to a plain
|
|
100
|
+
* object. Deliberately conservative: only strings starting with '{' are
|
|
101
|
+
* attempted, so CSS attribute selectors like `[data-foo]` (which start
|
|
102
|
+
* with '[' and are NOT valid JSON) are never at risk of misinterpretation.
|
|
103
|
+
*/
|
|
104
|
+
export declare function tryParseJsonObject(payload: unknown): Record<string, any> | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* True-integer parse for values that are semantically integers (epoch-ms
|
|
107
|
+
* timestamps). Accepts a number that is already an integer, or a string of
|
|
108
|
+
* plain digits with an optional leading '-'. Deliberately rejects floats
|
|
109
|
+
* ('1.5'), exponent notation ('1e3'), hex, whitespace-only, empty strings
|
|
110
|
+
* and anything outside the safe-integer range: an epoch-ms value is an
|
|
111
|
+
* integer, and a caller who sent something else more likely has a bug than
|
|
112
|
+
* an intent, so the caller reports it rather than guessing.
|
|
113
|
+
*/
|
|
114
|
+
export declare function tryParseIntegerValue(value: unknown): number | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* Resolve get_console_messages' `since` filter to epoch ms.
|
|
117
|
+
*
|
|
118
|
+
* Three outcomes, mirroring resolveStrictStructuredPayload's honest split:
|
|
119
|
+
* - absent (no payload / no `since`) -> {} : return every message, the
|
|
120
|
+
* long-standing default.
|
|
121
|
+
* - usable -> { ms } : a number, or a bare/embedded integer string, so
|
|
122
|
+
* payload '1785900000000' behaves exactly like {since:1785900000000}.
|
|
123
|
+
* - unusable -> { errorDetail } : `since` WAS supplied but can't be a
|
|
124
|
+
* timestamp ('yesterday', '1.5', true, {}). Previously these were
|
|
125
|
+
* silently dropped and every message was returned as if no filter had
|
|
126
|
+
* been asked for — the same quiet-wrong-answer class as the misleading
|
|
127
|
+
* "missing fields" error this module was written to fix.
|
|
128
|
+
*
|
|
129
|
+
* Non-integer FINITE numbers are accepted (and floored by Date) rather than
|
|
130
|
+
* rejected, preserving the historical `typeof since === 'number'` behavior
|
|
131
|
+
* for callers already passing one.
|
|
132
|
+
*/
|
|
133
|
+
export declare function resolveConsoleSince(value: unknown): {
|
|
134
|
+
ms?: number;
|
|
135
|
+
errorDetail?: string;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Attempt to JSON.parse a string into {x,y} coordinates. Returns undefined
|
|
139
|
+
* if it isn't a string, isn't valid JSON, or doesn't have numeric x/y.
|
|
140
|
+
*/
|
|
141
|
+
export declare function tryParseCoords(payload: unknown): {
|
|
142
|
+
x: number;
|
|
143
|
+
y: number;
|
|
144
|
+
} | undefined;
|
|
145
|
+
/**
|
|
146
|
+
* Explain why a scroll payload string wasn't a usable {deltaX,deltaY}
|
|
147
|
+
* shape, once it's already failed the direction-keyword check and the
|
|
148
|
+
* tryParseJsonObject() decode. Two distinct causes, same as
|
|
149
|
+
* resolveStrictStructuredPayload's split:
|
|
150
|
+
* (a) the string wasn't valid JSON at all
|
|
151
|
+
* (b) it was valid JSON but not an object (e.g. '[1,2]', '5') —
|
|
152
|
+
* previously reported with an EMPTY detail, silently dropping the
|
|
153
|
+
* "payload parsed but wasn't the right shape" information that
|
|
154
|
+
* every other structured action's error already gives.
|
|
155
|
+
*/
|
|
156
|
+
export declare function describeUnusableScrollPayload(payload: string): string;
|
|
157
|
+
/**
|
|
158
|
+
* Coerce a payload to an object per the action's PayloadSpec.
|
|
159
|
+
*
|
|
160
|
+
* - undefined/null payload -> {}
|
|
161
|
+
* - object payload -> returned as-is (unchanged; this path never had a bug)
|
|
162
|
+
* - string payload, kind 'scalar' -> always `{ [defaultKey]: payload }`,
|
|
163
|
+
* literally, never parsed — this is the code/free-text exemption.
|
|
164
|
+
* - string payload, kind 'structured' -> decoded via the shared
|
|
165
|
+
* tryParseJsonShape() primitive. A plain object result is returned
|
|
166
|
+
* directly. An array result is wrapped under defaultKey (file_upload's
|
|
167
|
+
* files list). For a spec with numericDefaultKey, a bare integer string
|
|
168
|
+
* is wrapped as a NUMBER under defaultKey (get_console_messages'
|
|
169
|
+
* epoch-ms `since`). Anything else (parse failure, or a parsed primitive
|
|
170
|
+
* like a bare boolean/null) falls back to the literal wrap under
|
|
171
|
+
* defaultKey, so an existing bare-string call (a URL, a selector, a key
|
|
172
|
+
* name, a file path, ...) keeps working exactly as before.
|
|
173
|
+
*
|
|
174
|
+
* The object and array decodes go through the same primitive that backs
|
|
175
|
+
* tryParseJsonObject(), so there is one implementation of "maybe-JSON
|
|
176
|
+
* string -> shape" rather than the two idioms this module used to carry.
|
|
177
|
+
* The primitive is called with trimBeforeParse=false here, preserving this
|
|
178
|
+
* path's historical raw-JSON.parse semantics: a JSON string prefixed with
|
|
179
|
+
* something JSON.parse rejects but String.trim() removes (a BOM, a
|
|
180
|
+
* non-breaking space) has always fallen back to the literal wrap for these
|
|
181
|
+
* actions, and it still does. That single flag is the ONE difference left
|
|
182
|
+
* between the two callers, and it is deliberate — collapsing it would
|
|
183
|
+
* change behavior for whichever side lost its policy.
|
|
184
|
+
*/
|
|
185
|
+
export declare function parsePayload(payload: string | Record<string, any> | undefined | null, action: keyof typeof PAYLOAD_SPECS): Record<string, any>;
|
|
186
|
+
/**
|
|
187
|
+
* Result of resolving a "strict structured" payload — one with NO
|
|
188
|
+
* legitimate bare-string meaning at all (set_viewport, mouse_move). Either
|
|
189
|
+
* `object` is set (a real object to read fields from) or `errorDetail` is
|
|
190
|
+
* set (a human-readable reason suitable for embedding in the action's
|
|
191
|
+
* error message), never both.
|
|
192
|
+
*/
|
|
193
|
+
export type StrictStructuredResult = {
|
|
194
|
+
object: Record<string, any>;
|
|
195
|
+
errorDetail?: undefined;
|
|
196
|
+
} | {
|
|
197
|
+
object?: undefined;
|
|
198
|
+
errorDetail: string;
|
|
199
|
+
};
|
|
200
|
+
/**
|
|
201
|
+
* Resolve a payload for an action whose shape is ALWAYS an object with no
|
|
202
|
+
* valid bare-string fallback. Distinguishes the three distinct caller
|
|
203
|
+
* mistakes the old generic "requires payload with X and Y" message
|
|
204
|
+
* collapsed into one:
|
|
205
|
+
* (a) no payload was supplied at all
|
|
206
|
+
* (b) payload was a string that isn't valid JSON
|
|
207
|
+
* (c) payload was valid JSON but not a plain object (e.g. a bare number)
|
|
208
|
+
* Missing/invalid individual fields (width without height, x without y)
|
|
209
|
+
* are NOT this function's job — the caller checks those on the returned
|
|
210
|
+
* object and can report exactly which field was missing, now that it's
|
|
211
|
+
* looking at a genuinely-parsed object instead of a stray string.
|
|
212
|
+
*/
|
|
213
|
+
export declare function resolveStrictStructuredPayload(payload: string | Record<string, any> | undefined | null): StrictStructuredResult;
|
|
214
|
+
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAgBrD,CAAC;AAEF,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,MAAM,CAE5D;AAgDD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAEpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CASvE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAYzF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAMrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,EACxD,MAAM,EAAE,MAAM,OAAO,aAAa,GACjC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAyBrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,SAAS,CAAA;CAAE,GACxD;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GACvD,sBAAsB,CAqBxB"}
|
package/dist/payload.js
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payload normalization for the use_browser tool's `payload` parameter.
|
|
3
|
+
*
|
|
4
|
+
* `payload` is declared as `z.union([z.string(), z.record(z.any())])` —
|
|
5
|
+
* every action accepts either a real object or a string. The string form
|
|
6
|
+
* exists because MCP clients frequently JSON.stringify their arguments
|
|
7
|
+
* regardless of the target action's shape (see e.g. the mouse_move example
|
|
8
|
+
* in skills/browsing/SKILL.md, which passes
|
|
9
|
+
* `payload: "{\"x\":100,\"y\":200}"`).
|
|
10
|
+
*
|
|
11
|
+
* Historically, a string payload was never JSON.parse'd — it was wrapped
|
|
12
|
+
* literally as `{ [defaultKey]: <the raw string> }`. That's correct for
|
|
13
|
+
* actions whose payload IS free text or code (eval's JS source, type's
|
|
14
|
+
* literal text, await_text's search string — see PAYLOAD_SPECS below), but
|
|
15
|
+
* wrong for actions whose payload is a multi-field object with no
|
|
16
|
+
* legitimate bare-string meaning (set_viewport's {width,height},
|
|
17
|
+
* mouse_move's {x,y}): a caller who JSON.stringify'd `{width:390,
|
|
18
|
+
* height:844}` got back a payload of `{ viewport: '{"width":390,...}' }`,
|
|
19
|
+
* `vp.width` was `undefined`, and the action threw "requires payload with
|
|
20
|
+
* width and height" — even though both were supplied, just encoded as a
|
|
21
|
+
* string instead of passed as an object.
|
|
22
|
+
*
|
|
23
|
+
* This module is the single place that decides, per action, whether a
|
|
24
|
+
* string payload should be treated as encoded JSON to deserialize
|
|
25
|
+
* ('structured') or taken literally as the value itself ('scalar' — code
|
|
26
|
+
* or free text). It has no side effects and doesn't touch chrome-ws, so it
|
|
27
|
+
* can be imported directly by tests without booting a browser or an MCP
|
|
28
|
+
* server.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Per-action payload shape declaration — the source of truth Postel's-law
|
|
32
|
+
* string handling is driven from.
|
|
33
|
+
*
|
|
34
|
+
* kind: 'scalar' — the string IS the value. NEVER JSON.parse'd, no matter
|
|
35
|
+
* how JSON-ish it looks. This is for code or free text where a payload of
|
|
36
|
+
* `[1,2]` or `{"a":1}` is a perfectly normal *literal* value and silently
|
|
37
|
+
* reinterpreting it would change what a currently-working call does:
|
|
38
|
+
* eval (JS source), type (literal text to type), await_text (literal text
|
|
39
|
+
* to wait for), select (a dropdown option's literal value/text).
|
|
40
|
+
*
|
|
41
|
+
* kind: 'structured' — the payload is semantically an object with named
|
|
42
|
+
* fields. A string payload is JSON.parse'd; if it parses to a plain
|
|
43
|
+
* object, that object *is* the payload (Postel's law: a stringified
|
|
44
|
+
* encoding of the object form works the same as passing the object
|
|
45
|
+
* directly). If it parses to an array, the array is wrapped under
|
|
46
|
+
* defaultKey (file_upload's `files` may legitimately be a JSON array of
|
|
47
|
+
* paths). If parsing fails, or produces something else, parsePayload()
|
|
48
|
+
* falls back to the historical literal-wrap under defaultKey — most
|
|
49
|
+
* 'structured' actions also have a legitimate single-value bare-string
|
|
50
|
+
* form (navigate's URL, a CSS selector, an attribute/key/profile name, a
|
|
51
|
+
* file path, a format keyword) so a non-JSON string must still work
|
|
52
|
+
* exactly as it always has, not error out.
|
|
53
|
+
*
|
|
54
|
+
* Two actions — set_viewport and mouse_move — are 'structured' with NO
|
|
55
|
+
* legitimate bare-string fallback at all (there's no sensible single
|
|
56
|
+
* string that means "width and height" or "x and y"). Those two use
|
|
57
|
+
* resolveStrictStructuredPayload() below instead of parsePayload(), so a
|
|
58
|
+
* string that isn't parseable JSON produces an honest error instead of
|
|
59
|
+
* being silently wrapped and then failing a field check with a misleading
|
|
60
|
+
* "missing" message.
|
|
61
|
+
*
|
|
62
|
+
* scroll and drag_drop are NOT listed here: their bare-string form maps to
|
|
63
|
+
* a *different* field than their object form's defaultKey would (scroll's
|
|
64
|
+
* bare string is a direction keyword, not a deltaX/deltaY value; drag_drop's
|
|
65
|
+
* bare string is the *target* selector, not the *source*), and drag_drop
|
|
66
|
+
* additionally has a bare-coordinates form. A single generic
|
|
67
|
+
* `{ [defaultKey]: string }` wrap can't express that, so they keep bespoke
|
|
68
|
+
* dispatch in index.ts — but that dispatch uses the same tryParseJsonObject()
|
|
69
|
+
* primitive defined below instead of ad hoc inline JSON.parse calls.
|
|
70
|
+
*/
|
|
71
|
+
export const PAYLOAD_SPECS = {
|
|
72
|
+
navigate: { kind: 'structured', defaultKey: 'url' },
|
|
73
|
+
type: { kind: 'scalar', defaultKey: 'text' },
|
|
74
|
+
extract: { kind: 'structured', defaultKey: 'format' },
|
|
75
|
+
screenshot: { kind: 'structured', defaultKey: 'path' },
|
|
76
|
+
select: { kind: 'scalar', defaultKey: 'value' },
|
|
77
|
+
eval: { kind: 'scalar', defaultKey: 'expression' },
|
|
78
|
+
attr: { kind: 'structured', defaultKey: 'attr' },
|
|
79
|
+
await_element: { kind: 'structured', defaultKey: 'selector' },
|
|
80
|
+
await_text: { kind: 'scalar', defaultKey: 'text' },
|
|
81
|
+
new_tab: { kind: 'structured', defaultKey: 'url' },
|
|
82
|
+
set_profile: { kind: 'structured', defaultKey: 'name' },
|
|
83
|
+
file_upload: { kind: 'structured', defaultKey: 'files' },
|
|
84
|
+
keyboard_press: { kind: 'structured', defaultKey: 'key' },
|
|
85
|
+
get_console_messages: { kind: 'structured', defaultKey: 'since', numericDefaultKey: true },
|
|
86
|
+
switch_tab: { kind: 'structured', defaultKey: 'tab' },
|
|
87
|
+
};
|
|
88
|
+
/** Truncate a string for embedding in an error message. */
|
|
89
|
+
export function truncateForError(s, max = 80) {
|
|
90
|
+
return s.length > max ? `${s.slice(0, max)}…` : s;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The one JSON-decode primitive every string-payload path is built on.
|
|
94
|
+
*
|
|
95
|
+
* Both callers want the same thing — "parse this string IF it's JSON of the
|
|
96
|
+
* shape I expect, otherwise tell me nothing and let me keep the literal
|
|
97
|
+
* string" — so the mechanics (prefix gate, try/catch, shape check) live
|
|
98
|
+
* here once instead of being spelled out twice.
|
|
99
|
+
*
|
|
100
|
+
* `opener` is the character a JSON value of the wanted shape must start
|
|
101
|
+
* with ('{' for an object, '[' for an array). Gating on it keeps CSS
|
|
102
|
+
* attribute selectors like `[data-foo]` (start with '[', NOT valid JSON)
|
|
103
|
+
* and other bare strings from even being offered to JSON.parse.
|
|
104
|
+
*
|
|
105
|
+
* `trimBeforeParse` exists because the two historical idioms differed here
|
|
106
|
+
* and collapsing them would change behavior (see the comment on
|
|
107
|
+
* parsePayload's structured path):
|
|
108
|
+
* - true -> the trimmed string is parsed (tryParseJsonObject's long-
|
|
109
|
+
* standing behavior, used by scroll/drag_drop).
|
|
110
|
+
* - false -> the raw string is parsed, so leading characters JSON.parse
|
|
111
|
+
* itself rejects (a BOM, a non-breaking space — JSON.parse
|
|
112
|
+
* only accepts space/\t/\n/\r as whitespace) keep failing to
|
|
113
|
+
* parse and fall back to the literal wrap, exactly as
|
|
114
|
+
* parsePayload has always done.
|
|
115
|
+
* The prefix gate always looks at the trimmed string; only what gets handed
|
|
116
|
+
* to JSON.parse differs.
|
|
117
|
+
*/
|
|
118
|
+
function tryParseJsonShape(payload, opener, trimBeforeParse) {
|
|
119
|
+
if (typeof payload !== 'string')
|
|
120
|
+
return undefined;
|
|
121
|
+
const trimmed = payload.trim();
|
|
122
|
+
if (!trimmed.startsWith(opener))
|
|
123
|
+
return undefined;
|
|
124
|
+
let parsed;
|
|
125
|
+
try {
|
|
126
|
+
parsed = JSON.parse(trimBeforeParse ? trimmed : payload);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
// Not valid JSON — caller keeps the original literal string.
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
if (!parsed || typeof parsed !== 'object')
|
|
133
|
+
return undefined;
|
|
134
|
+
const wantArray = opener === '[';
|
|
135
|
+
return Array.isArray(parsed) === wantArray ? parsed : undefined;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Attempt to JSON.parse a string payload into a plain object (never an
|
|
139
|
+
* array — callers that want array results, like file_upload's file list,
|
|
140
|
+
* handle that themselves). Returns undefined if the input isn't a string,
|
|
141
|
+
* doesn't look JSON-shaped, or fails to parse / doesn't parse to a plain
|
|
142
|
+
* object. Deliberately conservative: only strings starting with '{' are
|
|
143
|
+
* attempted, so CSS attribute selectors like `[data-foo]` (which start
|
|
144
|
+
* with '[' and are NOT valid JSON) are never at risk of misinterpretation.
|
|
145
|
+
*/
|
|
146
|
+
export function tryParseJsonObject(payload) {
|
|
147
|
+
return tryParseJsonShape(payload, '{', true);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* True-integer parse for values that are semantically integers (epoch-ms
|
|
151
|
+
* timestamps). Accepts a number that is already an integer, or a string of
|
|
152
|
+
* plain digits with an optional leading '-'. Deliberately rejects floats
|
|
153
|
+
* ('1.5'), exponent notation ('1e3'), hex, whitespace-only, empty strings
|
|
154
|
+
* and anything outside the safe-integer range: an epoch-ms value is an
|
|
155
|
+
* integer, and a caller who sent something else more likely has a bug than
|
|
156
|
+
* an intent, so the caller reports it rather than guessing.
|
|
157
|
+
*/
|
|
158
|
+
export function tryParseIntegerValue(value) {
|
|
159
|
+
if (typeof value === 'number') {
|
|
160
|
+
return Number.isSafeInteger(value) ? value : undefined;
|
|
161
|
+
}
|
|
162
|
+
if (typeof value !== 'string')
|
|
163
|
+
return undefined;
|
|
164
|
+
const trimmed = value.trim();
|
|
165
|
+
if (!/^-?\d+$/.test(trimmed))
|
|
166
|
+
return undefined;
|
|
167
|
+
const parsed = Number(trimmed);
|
|
168
|
+
return Number.isSafeInteger(parsed) ? parsed : undefined;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Resolve get_console_messages' `since` filter to epoch ms.
|
|
172
|
+
*
|
|
173
|
+
* Three outcomes, mirroring resolveStrictStructuredPayload's honest split:
|
|
174
|
+
* - absent (no payload / no `since`) -> {} : return every message, the
|
|
175
|
+
* long-standing default.
|
|
176
|
+
* - usable -> { ms } : a number, or a bare/embedded integer string, so
|
|
177
|
+
* payload '1785900000000' behaves exactly like {since:1785900000000}.
|
|
178
|
+
* - unusable -> { errorDetail } : `since` WAS supplied but can't be a
|
|
179
|
+
* timestamp ('yesterday', '1.5', true, {}). Previously these were
|
|
180
|
+
* silently dropped and every message was returned as if no filter had
|
|
181
|
+
* been asked for — the same quiet-wrong-answer class as the misleading
|
|
182
|
+
* "missing fields" error this module was written to fix.
|
|
183
|
+
*
|
|
184
|
+
* Non-integer FINITE numbers are accepted (and floored by Date) rather than
|
|
185
|
+
* rejected, preserving the historical `typeof since === 'number'` behavior
|
|
186
|
+
* for callers already passing one.
|
|
187
|
+
*/
|
|
188
|
+
export function resolveConsoleSince(value) {
|
|
189
|
+
if (value === undefined || value === null)
|
|
190
|
+
return {};
|
|
191
|
+
if (typeof value === 'number') {
|
|
192
|
+
if (Number.isFinite(value))
|
|
193
|
+
return { ms: value };
|
|
194
|
+
return { errorDetail: `since must be an epoch-ms timestamp, got the non-finite number ${String(value)}` };
|
|
195
|
+
}
|
|
196
|
+
const asInteger = tryParseIntegerValue(value);
|
|
197
|
+
if (asInteger !== undefined)
|
|
198
|
+
return { ms: asInteger };
|
|
199
|
+
const shown = typeof value === 'string' ? truncateForError(value) : typeof value;
|
|
200
|
+
return {
|
|
201
|
+
errorDetail: `since must be an epoch-ms timestamp (a number, or a string of digits), got ${shown}`,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Attempt to JSON.parse a string into {x,y} coordinates. Returns undefined
|
|
206
|
+
* if it isn't a string, isn't valid JSON, or doesn't have numeric x/y.
|
|
207
|
+
*/
|
|
208
|
+
export function tryParseCoords(payload) {
|
|
209
|
+
const obj = tryParseJsonObject(payload);
|
|
210
|
+
if (obj && typeof obj.x === 'number' && typeof obj.y === 'number') {
|
|
211
|
+
return { x: obj.x, y: obj.y };
|
|
212
|
+
}
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Explain why a scroll payload string wasn't a usable {deltaX,deltaY}
|
|
217
|
+
* shape, once it's already failed the direction-keyword check and the
|
|
218
|
+
* tryParseJsonObject() decode. Two distinct causes, same as
|
|
219
|
+
* resolveStrictStructuredPayload's split:
|
|
220
|
+
* (a) the string wasn't valid JSON at all
|
|
221
|
+
* (b) it was valid JSON but not an object (e.g. '[1,2]', '5') —
|
|
222
|
+
* previously reported with an EMPTY detail, silently dropping the
|
|
223
|
+
* "payload parsed but wasn't the right shape" information that
|
|
224
|
+
* every other structured action's error already gives.
|
|
225
|
+
*/
|
|
226
|
+
export function describeUnusableScrollPayload(payload) {
|
|
227
|
+
try {
|
|
228
|
+
JSON.parse(payload);
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
return `payload was a string that could not be parsed as JSON: ${truncateForError(payload)}`;
|
|
232
|
+
}
|
|
233
|
+
return `payload was valid JSON but not an object with deltaX/deltaY (or a recognized direction string): ${truncateForError(payload)}`;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Coerce a payload to an object per the action's PayloadSpec.
|
|
237
|
+
*
|
|
238
|
+
* - undefined/null payload -> {}
|
|
239
|
+
* - object payload -> returned as-is (unchanged; this path never had a bug)
|
|
240
|
+
* - string payload, kind 'scalar' -> always `{ [defaultKey]: payload }`,
|
|
241
|
+
* literally, never parsed — this is the code/free-text exemption.
|
|
242
|
+
* - string payload, kind 'structured' -> decoded via the shared
|
|
243
|
+
* tryParseJsonShape() primitive. A plain object result is returned
|
|
244
|
+
* directly. An array result is wrapped under defaultKey (file_upload's
|
|
245
|
+
* files list). For a spec with numericDefaultKey, a bare integer string
|
|
246
|
+
* is wrapped as a NUMBER under defaultKey (get_console_messages'
|
|
247
|
+
* epoch-ms `since`). Anything else (parse failure, or a parsed primitive
|
|
248
|
+
* like a bare boolean/null) falls back to the literal wrap under
|
|
249
|
+
* defaultKey, so an existing bare-string call (a URL, a selector, a key
|
|
250
|
+
* name, a file path, ...) keeps working exactly as before.
|
|
251
|
+
*
|
|
252
|
+
* The object and array decodes go through the same primitive that backs
|
|
253
|
+
* tryParseJsonObject(), so there is one implementation of "maybe-JSON
|
|
254
|
+
* string -> shape" rather than the two idioms this module used to carry.
|
|
255
|
+
* The primitive is called with trimBeforeParse=false here, preserving this
|
|
256
|
+
* path's historical raw-JSON.parse semantics: a JSON string prefixed with
|
|
257
|
+
* something JSON.parse rejects but String.trim() removes (a BOM, a
|
|
258
|
+
* non-breaking space) has always fallen back to the literal wrap for these
|
|
259
|
+
* actions, and it still does. That single flag is the ONE difference left
|
|
260
|
+
* between the two callers, and it is deliberate — collapsing it would
|
|
261
|
+
* change behavior for whichever side lost its policy.
|
|
262
|
+
*/
|
|
263
|
+
export function parsePayload(payload, action) {
|
|
264
|
+
const spec = PAYLOAD_SPECS[action];
|
|
265
|
+
if (!spec) {
|
|
266
|
+
throw new Error(`parsePayload: no PayloadSpec registered for action "${action}"`);
|
|
267
|
+
}
|
|
268
|
+
if (payload === undefined || payload === null)
|
|
269
|
+
return {};
|
|
270
|
+
if (typeof payload !== 'string')
|
|
271
|
+
return payload;
|
|
272
|
+
if (spec.kind === 'scalar') {
|
|
273
|
+
return { [spec.defaultKey]: payload };
|
|
274
|
+
}
|
|
275
|
+
// kind === 'structured'
|
|
276
|
+
const asObject = tryParseJsonShape(payload, '{', false);
|
|
277
|
+
if (asObject)
|
|
278
|
+
return asObject;
|
|
279
|
+
const asArray = tryParseJsonShape(payload, '[', false);
|
|
280
|
+
if (asArray)
|
|
281
|
+
return { [spec.defaultKey]: asArray };
|
|
282
|
+
if (spec.numericDefaultKey) {
|
|
283
|
+
const asInteger = tryParseIntegerValue(payload);
|
|
284
|
+
if (asInteger !== undefined)
|
|
285
|
+
return { [spec.defaultKey]: asInteger };
|
|
286
|
+
}
|
|
287
|
+
return { [spec.defaultKey]: payload };
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Resolve a payload for an action whose shape is ALWAYS an object with no
|
|
291
|
+
* valid bare-string fallback. Distinguishes the three distinct caller
|
|
292
|
+
* mistakes the old generic "requires payload with X and Y" message
|
|
293
|
+
* collapsed into one:
|
|
294
|
+
* (a) no payload was supplied at all
|
|
295
|
+
* (b) payload was a string that isn't valid JSON
|
|
296
|
+
* (c) payload was valid JSON but not a plain object (e.g. a bare number)
|
|
297
|
+
* Missing/invalid individual fields (width without height, x without y)
|
|
298
|
+
* are NOT this function's job — the caller checks those on the returned
|
|
299
|
+
* object and can report exactly which field was missing, now that it's
|
|
300
|
+
* looking at a genuinely-parsed object instead of a stray string.
|
|
301
|
+
*/
|
|
302
|
+
export function resolveStrictStructuredPayload(payload) {
|
|
303
|
+
if (payload === undefined || payload === null) {
|
|
304
|
+
return { errorDetail: 'no payload was supplied' };
|
|
305
|
+
}
|
|
306
|
+
if (typeof payload === 'object') {
|
|
307
|
+
return { object: payload };
|
|
308
|
+
}
|
|
309
|
+
let parsed;
|
|
310
|
+
try {
|
|
311
|
+
parsed = JSON.parse(payload);
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
return {
|
|
315
|
+
errorDetail: `payload was a string that could not be parsed as JSON: ${truncateForError(payload)}`,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
319
|
+
return { object: parsed };
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
errorDetail: `payload was valid JSON but not an object: ${truncateForError(payload)}`,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAyBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,CAAC,MAAM,aAAa,GAAgC;IACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE;IACnD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE;IAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE;IACrD,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE;IACtD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE;IAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE;IAChD,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE;IAC7D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE;IAClD,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE;IAClD,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE;IACvD,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE;IACxD,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE;IACzD,oBAAoB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAC1F,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE;CACtD,CAAC;AAEF,2DAA2D;AAC3D,MAAM,UAAU,gBAAgB,CAAC,CAAS,EAAE,GAAG,GAAG,EAAE;IAClD,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,iBAAiB,CACxB,OAAgB,EAChB,MAAiB,EACjB,eAAwB;IAExB,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,KAAK,GAAG,CAAC;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAoC,CAAC;AAClF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACjD,OAAO,EAAE,WAAW,EAAE,kEAAkE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC5G,CAAC;IACD,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC;IACjF,OAAO;QACL,WAAW,EAAE,8EAA8E,KAAK,EAAE;KACnG,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAClE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAAe;IAC3D,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,0DAA0D,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,mGAAmG,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AACxI,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAwD,EACxD,MAAkC;IAElC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,uDAAuD,MAAM,GAAG,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACzD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAA8B,CAAC;IAEvE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,wBAAwB;IACxB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAoC,CAAC;IAC3F,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAsB,CAAC;IAC5E,IAAI,OAAO;QAAE,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IAEnD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAaD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAwD;IAExD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,WAAW,EAAE,0DAA0D,gBAAgB,CAAC,OAAO,CAAC,EAAE;SACnG,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,MAAM,EAAE,MAA6B,EAAE,CAAC;IACnD,CAAC;IACD,OAAO;QACL,WAAW,EAAE,6CAA6C,gBAAgB,CAAC,OAAO,CAAC,EAAE;KACtF,CAAC;AACJ,CAAC"}
|