@substrat-run/vertical-host 0.146.0 → 0.148.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/dist/field-coverage.d.ts +4 -1
- package/dist/field-coverage.d.ts.map +1 -1
- package/dist/field-coverage.js +5 -2
- package/dist/field-coverage.js.map +1 -1
- package/dist/index.d.ts +57 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -2
- package/dist/index.js.map +1 -1
- package/dist/invocation-log.d.ts +36 -3
- package/dist/invocation-log.d.ts.map +1 -1
- package/dist/invocation-log.js +86 -4
- package/dist/invocation-log.js.map +1 -1
- package/dist/mcp.d.ts +6 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +88 -14
- package/dist/mcp.js.map +1 -1
- package/dist/upload-link.d.ts +73 -0
- package/dist/upload-link.d.ts.map +1 -0
- package/dist/upload-link.js +249 -0
- package/dist/upload-link.js.map +1 -0
- package/package.json +7 -7
package/dist/mcp.js
CHANGED
|
@@ -102,6 +102,49 @@ function pageFields(sortKey, order) {
|
|
|
102
102
|
: { [LIST_SORT_PARAM]: { type: 'string', description: `Sort column. Defaults to ${sortKey}.` } }),
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* The `fields` argument, spelled into a read's own schema.
|
|
107
|
+
*
|
|
108
|
+
* A result is the whole entry, and an entry can be wide: every column of every row of a
|
|
109
|
+
* page is tokens the model pays for whether or not it reads them. The names are an enum
|
|
110
|
+
* of what the declared output carries, so the model chooses from the real columns instead
|
|
111
|
+
* of guessing one and getting an error — and an unknown name is refused, not ignored,
|
|
112
|
+
* because a typo silently returning `{}` rows reads as "the data is empty".
|
|
113
|
+
*/
|
|
114
|
+
function fieldsParam(names) {
|
|
115
|
+
return {
|
|
116
|
+
type: 'array',
|
|
117
|
+
items: { type: 'string', enum: [...names] },
|
|
118
|
+
minItems: 1,
|
|
119
|
+
uniqueItems: true,
|
|
120
|
+
description: 'Return only these columns of each entry, to keep the answer small. Omit for every column. ' +
|
|
121
|
+
'Applies to the entries of a page; the cursor and paging fields are always returned.',
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Keep only `fields` of the result's entries, in the order asked.
|
|
126
|
+
*
|
|
127
|
+
* Runs on the EXTERNAL result (after `externalResult` has taken out what must not leave),
|
|
128
|
+
* so it can only remove: nothing it does can put a column back.
|
|
129
|
+
*/
|
|
130
|
+
function project(value, walk, fields) {
|
|
131
|
+
const pick = (entry) => {
|
|
132
|
+
if (entry === null || typeof entry !== 'object' || Array.isArray(entry))
|
|
133
|
+
return entry;
|
|
134
|
+
// `fromEntries` defines own properties, where `out[f] = …` on a column named `__proto__`
|
|
135
|
+
// would set the prototype and drop the column from the JSON.
|
|
136
|
+
return Object.fromEntries(fields.filter((f) => Object.hasOwn(entry, f)).map((f) => [f, entry[f]]));
|
|
137
|
+
};
|
|
138
|
+
if (!walk?.list)
|
|
139
|
+
return pick(value);
|
|
140
|
+
if (Array.isArray(value))
|
|
141
|
+
return value.map(pick);
|
|
142
|
+
if (walk.paged && value !== null && typeof value === 'object' && Array.isArray(value.entries)) {
|
|
143
|
+
const page = value;
|
|
144
|
+
return { ...page, entries: page.entries.map(pick) };
|
|
145
|
+
}
|
|
146
|
+
return value;
|
|
147
|
+
}
|
|
105
148
|
/**
|
|
106
149
|
* Derive the tool list from a module's declared operations.
|
|
107
150
|
*
|
|
@@ -135,6 +178,14 @@ export function mcpToolsOf(operations) {
|
|
|
135
178
|
};
|
|
136
179
|
const method = op.http.method;
|
|
137
180
|
const outputWalk = outputWalkOf(op.output, op.paged !== undefined);
|
|
181
|
+
// A read may be narrowed to the columns the model needs. Reads only: a mutation's
|
|
182
|
+
// answer is the confirmation of what it did, and trimming that is a surprise.
|
|
183
|
+
// A declared `fields` input wins — it is the vertical's own word and means something else.
|
|
184
|
+
const selectable = method === 'GET' && !('fields' in (shape.properties ?? {}))
|
|
185
|
+
? outputWalkOf(op.output, op.paged !== undefined, Infinity)?.fields
|
|
186
|
+
: undefined;
|
|
187
|
+
if (selectable)
|
|
188
|
+
inputSchema['properties'] = { ...inputSchema['properties'], fields: fieldsParam(selectable) };
|
|
138
189
|
tools.push({
|
|
139
190
|
name,
|
|
140
191
|
operation,
|
|
@@ -152,6 +203,7 @@ export function mcpToolsOf(operations) {
|
|
|
152
203
|
paged: Boolean(op.paged),
|
|
153
204
|
takesInput: Boolean(op.input),
|
|
154
205
|
...(outputWalk ? { outputWalk } : {}),
|
|
206
|
+
...(selectable ? { selectable } : {}),
|
|
155
207
|
});
|
|
156
208
|
}
|
|
157
209
|
return tools;
|
|
@@ -188,20 +240,19 @@ const rpcError = (id, code, message, data) => ({
|
|
|
188
240
|
/**
|
|
189
241
|
* A tool result the MODEL can read.
|
|
190
242
|
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
243
|
+
* One copy, as compact JSON. This used to send the value twice (a text block AND
|
|
244
|
+
* `structuredContent`) and pretty-print the text, so a page cost the model its size two
|
|
245
|
+
* or three times over for nothing it could read. The text block is the one every client
|
|
246
|
+
* reads, and the spec's compatibility note asks for it; `structuredContent` is optional,
|
|
247
|
+
* and without a declared `outputSchema` (which would oblige us to match it, while a paged
|
|
248
|
+
* read's declared `output` is the ENTRY and the result is a `Page`) it adds no guarantee.
|
|
249
|
+
* Indentation is for a human reading a terminal, which a tool result is not.
|
|
196
250
|
*/
|
|
197
|
-
function toolResult(result) {
|
|
251
|
+
function toolResult(result, select) {
|
|
198
252
|
// #2073: the egress every transport shares (`wire.ts`).
|
|
199
|
-
const
|
|
200
|
-
const
|
|
201
|
-
return {
|
|
202
|
-
content: [{ type: 'text', text: JSON.stringify(value ?? null, null, 2) }],
|
|
203
|
-
structuredContent: structured ? value : { result: value ?? null },
|
|
204
|
-
};
|
|
253
|
+
const external = externalResult(result);
|
|
254
|
+
const value = select ? project(external, select.walk, select.fields) : external;
|
|
255
|
+
return { content: [{ type: 'text', text: JSON.stringify(value ?? null) }] };
|
|
205
256
|
}
|
|
206
257
|
/**
|
|
207
258
|
* Why a presented bearer token was not minted for THIS endpoint, or `null` when there is
|
|
@@ -326,9 +377,32 @@ app, operations, resolveStub, options = {}) {
|
|
|
326
377
|
if (!tool)
|
|
327
378
|
return rpcError(id, -32602, `Unknown tool: ${name ?? '(none)'}`);
|
|
328
379
|
const rawArgs = params?.['arguments'];
|
|
329
|
-
const args = rawArgs !== null && typeof rawArgs === 'object' && !Array.isArray(rawArgs)
|
|
380
|
+
const { fields: askedFields, ...args } = rawArgs !== null && typeof rawArgs === 'object' && !Array.isArray(rawArgs)
|
|
330
381
|
? rawArgs
|
|
331
382
|
: {};
|
|
383
|
+
// `fields` is the MCP surface's own argument, taken out before the operation sees an
|
|
384
|
+
// input: its schema is the vertical's, and a strict one would refuse a key it never
|
|
385
|
+
// declared. A tool that does not offer it leaves the argument alone, as before.
|
|
386
|
+
let select;
|
|
387
|
+
if (tool.selectable) {
|
|
388
|
+
if (askedFields !== undefined) {
|
|
389
|
+
const known = new Set(tool.selectable);
|
|
390
|
+
const bad = Array.isArray(askedFields)
|
|
391
|
+
? askedFields.filter((f) => typeof f !== 'string' || !known.has(f))
|
|
392
|
+
: [askedFields];
|
|
393
|
+
if (!Array.isArray(askedFields) || askedFields.length === 0 || bad.length > 0) {
|
|
394
|
+
// In-band, before anything runs: the agent reads the valid names and asks again.
|
|
395
|
+
return rpcResult(id, toolError(`Invalid "fields": expected a non-empty list of column names from [${tool.selectable.join(', ')}]` +
|
|
396
|
+
// Only strings are echoed: `String(x)` on a client-built object can throw, and this
|
|
397
|
+
// runs outside the call's `try`, so it would turn a refusal into an HTTP failure.
|
|
398
|
+
(bad.length > 0 && Array.isArray(askedFields) ? `; unknown: ${bad.filter((f) => typeof f === 'string').join(', ')}` : '')));
|
|
399
|
+
}
|
|
400
|
+
select = { walk: tool.outputWalk, fields: askedFields };
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
else if (askedFields !== undefined) {
|
|
404
|
+
args['fields'] = askedFields;
|
|
405
|
+
}
|
|
332
406
|
// #1746: a batch may call several tools; the line names the last one, which is the
|
|
333
407
|
// common case of one call per request stated precisely rather than a list. Everything
|
|
334
408
|
// the record says about a call is reset with the operation, so the line never pairs
|
|
@@ -361,7 +435,7 @@ app, operations, resolveStub, options = {}) {
|
|
|
361
435
|
if (observed)
|
|
362
436
|
record.outputFields = observed;
|
|
363
437
|
}
|
|
364
|
-
return rpcResult(id, toolResult(result));
|
|
438
|
+
return rpcResult(id, toolResult(result, select));
|
|
365
439
|
}
|
|
366
440
|
catch (err) {
|
|
367
441
|
// #1331: a failed call reports no fields, including one whose serialisation threw
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,CAAC,EACD,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,EAAyB,MAAM,qBAAqB,CAAC;AACvI,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAazF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAEzF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAmC1D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,MAAiB;IACrC,qEAAqE;IACrE,2EAA2E;IAC3E,IAAI,CAAE,MAAyC,EAAE,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACjG,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAG1E,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,SAAS,WAAW,CAAC,KAA6C;IAChE,MAAM,KAAK,GAAI,KAAoE,EAAE,KAAK,CAAC;IAC3F,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAI,MAAsF,EAAE,IAAI,EAAE,GAAG,CAAC;QAC/G,IAAI,GAAG,EAAE,IAAI,KAAK,SAAS;YAAE,SAAS;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,OAA2B,EAAE,KAAiC;IAChF,OAAO;QACL,mFAAmF;QACnF,kFAAkF;QAClF,6EAA6E;QAC7E,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,iCAAiC,aAAa,aAAa,iBAAiB,8CAA8C;SACxI;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;QAC7F,oFAAoF;QACpF,qFAAqF;QACrF,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YACrB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,2BAA2B,KAAK,IAAI,EAAE,CAAC;SACtI;QACD,GAAG,CAAC,OAAO,KAAK,SAAS;YACvB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,OAAO,GAAG,EAAE,EAAE,CAAC;KACpG,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,UAA4C;IACrE,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAwB,CAAC;QACxD,6EAA6E;QAC7E,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK;YAAE,SAAS;QAE5C,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,gBAAgB,SAAS,UAAU,KAAK,mCAAmC,IAAI,MAAM;gBACnF,2EAA2E,CAC9E,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE5B,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACxF,MAAM,KAAK,GAAG,QAAyE,CAAC;QACxF,MAAM,WAAW,GAA4B;YAC3C,GAAG,QAAQ;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC3B,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,SAAS;YACT,gFAAgF;YAChF,+EAA+E;YAC/E,iCAAiC;YACjC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,OAAO,IAAI,SAAS;YACtE,WAAW;YACX,WAAW,EAAE;gBACX,YAAY,EAAE,MAAM,KAAK,KAAK;gBAC9B,eAAe,EAAE,MAAM,KAAK,QAAQ;gBACpC,cAAc,EAAE,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ;aAC5E;YACD,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAgB;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,GAAG,mBAAmB,CAAC;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACb,IAAI,GAAG,MAAM,CAAC;YACd,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAsED,MAAM,SAAS,GAAG,CAAC,EAAM,EAAE,MAAe,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF,MAAM,QAAQ,GAAG,CAAC,EAAM,EAAE,IAAY,EAAE,OAAe,EAAE,IAAc,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,EAAE,KAAK;IACd,EAAE;IACF,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;CAClE,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,MAAe;IACjC,wDAAwD;IACxD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE;KAC/F,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,eAAe,CAAC,aAAiC,EAAE,QAAgB;IAC1E,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CACrG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CACjB,CAAC;QACF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,oEAAoE;IACnF,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,GAAG,GAAI,MAA4B,CAAC,GAAG,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,qFAAqF;IACrF,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC,QAAQ,EAAE,CAAC;AAC3F,CAAC;AAED,qFAAqF;AACrF,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,QAAQ,CAAC,GAAY;IAC5B,MAAM,MAAM,GAAI,GAAmC,EAAE,MAAM,CAAC;IAC5D,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;AACtB,8DAA8D;AAC9D,GAAwB,EACxB,UAA4C,EAC5C,WAA+C,EAC/C,OAAO,GAAqD,EAAE;IAE9D,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,wCAAwC,IAAI,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC;QACrD,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,IAAI,GAAG;KAC5C,CAAC;IAEF,kEAAkE;IAClE,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,IAA6B,EAAuC,EAAE;QACtG,iFAAiF;QACjF,oFAAoF;QACpF,IAAI,OAAO,GAA4B,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,0EAA0E;YAC1E,qEAAqE;YACrE,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;gBAC/B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;gBACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC;gBACzB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;aACxB,CAAC,CAAC;YACH,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7D,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;aAC3D,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5B,mFAAmF;YACnF,+EAA+E;YAC/E,iFAAiF;YACjF,mFAAmF;YACnF,wEAAwE;YACxE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAChB,EAAM,EACN,MAA2C,EAC3C,IAAe,EACf,UAAyB,EACzB,EAAE;QACF,MAAM,IAAI,GAAG,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,MAAM,CAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,iBAAiB,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QAE5E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACrF,CAAC,CAAE,OAAmC;YACtC,CAAC,CAAC,EAAE,CAAC;QAEP,mFAAmF;QACnF,sFAAsF;QACtF,oFAAoF;QACpF,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,OAAO,MAAM,CAAC,WAAW,CAAC;YAC1B,OAAO,MAAM,CAAC,OAAO,CAAC;YACtB,oFAAoF;YACpF,+EAA+E;YAC/E,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;gBACrF,oEAAoE;gBACpE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;gBACvD,GAAG,CAAC,MAAM;oBACR,CAAC,CAAC;wBACE,SAAS,EAAE,CAAC,MAAgD,EAAE,EAAE;4BAC9D,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;wBAC1B,CAAC;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,mFAAmF;YACnF,sFAAsF;YACtF,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC1D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,QAAQ;oBAAE,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC;YAC/C,CAAC;YACD,OAAO,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,kFAAkF;YAClF,6EAA6E;YAC7E,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC,YAAY,CAAC;YACvC,iFAAiF;YACjF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,MAAM,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5D,2EAA2E;YAC3E,6EAA6E;YAC7E,6EAA6E;YAC7E,2EAA2E;YAC3E,2EAA2E;YAC3E,mFAAmF;YACnF,mFAAmF;YACnF,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;gBAAE,MAAM,GAAG,CAAC;YACrC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,IAAe,EAAE,UAAyB,EAA0B,EAAE;QACpG,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;QAC1B,MAAM,cAAc,GAAG,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC;QAC5C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,YAAY,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,CAAC;gBAC9C,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,IAAK,qBAA2C,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACvF,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC/B,OAAO,SAAS,CAAC,EAAE,EAAE;oBACnB,eAAe,EAAE,OAAO;oBACxB,mEAAmE;oBACnE,0EAA0E;oBAC1E,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;oBAC/C,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YACD,KAAK,2BAA2B,CAAC;YACjC,KAAK,yBAAyB;gBAC5B,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,KAAK,YAAY,EAAE,CAAC;gBAClB,OAAO,SAAS,CAAC,EAAE,EAAE;oBACnB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;qBAC3B,CAAC,CAAC;iBACJ,CAAC,CAAC;YACL,CAAC;YACD,KAAK,YAAY;gBACf,OAAO,MAAM,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD;gBACE,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,qBAAqB,GAAG,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAErC;;;;;;OAMG;IACH,MAAM,WAAW,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,EAAE,EAAE,QAAQ,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE3G;;;;;;;OAOG;IACH,MAAM,YAAY,GAAG,CAAC,CAAU,EAAE,GAAG,MAAgB,EAAU,EAAE;QAC/D,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QACzG,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChE,CAAC,CAAC;IAEF,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAU,EAAE,EAAE;YACpC,MAAM,OAAO,GACX,OAAO,EAAE,CAAC,oBAAoB,KAAK,UAAU;gBAC3C,CAAC,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAClC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC;YAC9B,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;gBACxB,gFAAgF;gBAChF,+EAA+E;gBAC/E,uEAAuE;gBACvE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,wBAAwB,EAAE,CAAC,QAAQ,CAAC;gBACpC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7E,CAAC,CAAC;QACL,CAAC,CAAC;QACF,kFAAkF;QAClF,8EAA8E;QAC9E,+EAA+E;QAC/E,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,uCAAuC,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QACD,kFAAkF;QAClF,gEAAgE;QAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAc,CAAC,CAAC,CAAC,CAAC,IAAW,CAAC,CAAC;QACvE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC;QAEzF;;;;;;;;;;;;;;;WAeG;QACH,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;QACvG,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,IAAI,MAAM,KAAK,SAAS,IAAI,CAAE,qBAA2C,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7G,OAAO,CAAC,CAAC,IAAI,CACX,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,mBAAmB,KAAK,MAAM,EAAE,EAAE;gBACtE,SAAS,EAAE,CAAC,GAAG,qBAAqB,CAAC;aACtC,CAAC,EACF,GAAG,CACJ,CAAC;QACJ,CAAC;QAED;;;;;;WAMG;QACH,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/C,UAAU,CAAC,OAAO,CAAC,GAAG,CACpB,kBAAkB,EAClB,YAAY,CAAC,CAAC,EAAE,uBAAuB,EAAE,sBAAsB,OAAO,GAAG,CAAC,CAC3E,CAAC;YACF,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH;;;;;;;;;eASG;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,sFAAsF;YACtF,0BAA0B;YAC1B,MAAM,GAAG,GAAI,CAAsC,CAAC,GAAG,CAAC;YACxD,MAAM,UAAU,GAAkB;gBAChC,wEAAwE;gBACxE,MAAM,EAAG,GAAG,EAAE,CAAC,qBAAqB,CAAkC,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM;gBAC9G,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;gBAC5B,4EAA4E;gBAC5E,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;aAC7C,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;gBAAE,UAAU,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5G,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;oBACxD,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;gBAClD,IAAI,KAAK;oBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mFAAmF;YACnF,2DAA2D;YAC3D,EAAE;YACF,iFAAiF;YACjF,wEAAwE;YACxE,iFAAiF;YACjF,oFAAoF;YACpF,8EAA8E;YAC9E,oFAAoF;YACpF,iFAAiF;YACjF,+EAA+E;YAC/E,kFAAkF;YAClF,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;gBAAE,MAAM,GAAG,CAAC;YACrC,kFAAkF;YAClF,oFAAoF;YACpF,iFAAiF;YACjF,+EAA+E;YAC/E,4EAA4E;YAC5E,wBAAwB;YACxB,EAAE;YACF,6EAA6E;YAC7E,kFAAkF;YAClF,2EAA2E;YAC3E,gFAAgF;YAChF,wCAAwC;YACxC,MAAM,QAAQ,GAAI,GAAgC,EAAE,GAAG,CAAC;YACxD,MAAM,MAAM,GACV,QAAQ,YAAY,QAAQ;gBAC1B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9E,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;gBAAE,OAAO,MAAM,CAAC;YAC1D,6EAA6E;YAC7E,wEAAwE;YACxE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9C,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,0EAA0E;QAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,OAAO,CAAC,CAAC,CAAY,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,iFAAiF;IACjF,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,mCAAmC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAE/F,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,CAAC,EACD,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,EAAyB,MAAM,qBAAqB,CAAC;AACvI,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAazF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAEzF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAyC1D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,MAAiB;IACrC,qEAAqE;IACrE,2EAA2E;IAC3E,IAAI,CAAE,MAAyC,EAAE,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACjG,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAG1E,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,SAAS,WAAW,CAAC,KAA6C;IAChE,MAAM,KAAK,GAAI,KAAoE,EAAE,KAAK,CAAC;IAC3F,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAI,MAAsF,EAAE,IAAI,EAAE,GAAG,CAAC;QAC/G,IAAI,GAAG,EAAE,IAAI,KAAK,SAAS;YAAE,SAAS;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,OAA2B,EAAE,KAAiC;IAChF,OAAO;QACL,mFAAmF;QACnF,kFAAkF;QAClF,6EAA6E;QAC7E,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,iCAAiC,aAAa,aAAa,iBAAiB,8CAA8C;SACxI;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;QAC7F,oFAAoF;QACpF,qFAAqF;QACrF,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YACrB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,2BAA2B,KAAK,IAAI,EAAE,CAAC;SACtI;QACD,GAAG,CAAC,OAAO,KAAK,SAAS;YACvB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,OAAO,GAAG,EAAE,EAAE,CAAC;KACpG,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,KAAwB;IAC3C,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE;QAC3C,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,IAAI;QACjB,WAAW,EACT,4FAA4F;YAC5F,qFAAqF;KACxF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,KAAc,EAAE,IAA4B,EAAE,MAAyB;IACtF,MAAM,IAAI,GAAG,CAAC,KAAc,EAAW,EAAE;QACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtF,yFAAyF;QACzF,6DAA6D;QAC7D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAG,KAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrG,CAAC;IACJ,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,KAA+B,CAAC,OAAO,CAAC,EAAE,CAAC;QACzH,MAAM,IAAI,GAAG,KAA+B,CAAC;QAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,UAA4C;IACrE,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAwB,CAAC;QACxD,6EAA6E;QAC7E,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK;YAAE,SAAS;QAE5C,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,gBAAgB,SAAS,UAAU,KAAK,mCAAmC,IAAI,MAAM;gBACnF,2EAA2E,CAC9E,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE5B,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACxF,MAAM,KAAK,GAAG,QAAyE,CAAC;QACxF,MAAM,WAAW,GAA4B;YAC3C,GAAG,QAAQ;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC3B,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACnE,kFAAkF;QAClF,8EAA8E;QAC9E,2FAA2F;QAC3F,MAAM,UAAU,GACd,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM;YACnE,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,UAAU;YAAE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,GAAI,WAAW,CAAC,YAAY,CAAY,EAAE,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1H,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,SAAS;YACT,gFAAgF;YAChF,+EAA+E;YAC/E,iCAAiC;YACjC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,OAAO,IAAI,SAAS;YACtE,WAAW;YACX,WAAW,EAAE;gBACX,YAAY,EAAE,MAAM,KAAK,KAAK;gBAC9B,eAAe,EAAE,MAAM,KAAK,QAAQ;gBACpC,cAAc,EAAE,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ;aAC5E;YACD,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAgB;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,GAAG,mBAAmB,CAAC;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACb,IAAI,GAAG,MAAM,CAAC;YACd,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAsED,MAAM,SAAS,GAAG,CAAC,EAAM,EAAE,MAAe,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF,MAAM,QAAQ,GAAG,CAAC,EAAM,EAAE,IAAY,EAAE,OAAe,EAAE,IAAc,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,EAAE,KAAK;IACd,EAAE;IACF,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;CAClE,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,SAAS,UAAU,CAAC,MAAe,EAAE,MAAoE;IACvG,wDAAwD;IACxD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,eAAe,CAAC,aAAiC,EAAE,QAAgB;IAC1E,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CACrG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CACjB,CAAC;QACF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,oEAAoE;IACnF,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,GAAG,GAAI,MAA4B,CAAC,GAAG,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,qFAAqF;IACrF,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC,QAAQ,EAAE,CAAC;AAC3F,CAAC;AAED,qFAAqF;AACrF,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,QAAQ,CAAC,GAAY;IAC5B,MAAM,MAAM,GAAI,GAAmC,EAAE,MAAM,CAAC;IAC5D,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;AACtB,8DAA8D;AAC9D,GAAwB,EACxB,UAA4C,EAC5C,WAA+C,EAC/C,OAAO,GAAqD,EAAE;IAE9D,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,wCAAwC,IAAI,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC;QACrD,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,IAAI,GAAG;KAC5C,CAAC;IAEF,kEAAkE;IAClE,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,IAA6B,EAAuC,EAAE;QACtG,iFAAiF;QACjF,oFAAoF;QACpF,IAAI,OAAO,GAA4B,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,0EAA0E;YAC1E,qEAAqE;YACrE,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;gBAC/B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;gBACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC;gBACzB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;aACxB,CAAC,CAAC;YACH,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7D,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;aAC3D,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5B,mFAAmF;YACnF,+EAA+E;YAC/E,iFAAiF;YACjF,mFAAmF;YACnF,wEAAwE;YACxE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAChB,EAAM,EACN,MAA2C,EAC3C,IAAe,EACf,UAAyB,EACzB,EAAE;QACF,MAAM,IAAI,GAAG,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,MAAM,CAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,iBAAiB,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QAE5E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GACpC,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACxE,CAAC,CAAE,OAAmC;YACtC,CAAC,CAAE,EAA8B,CAAC;QAEtC,qFAAqF;QACrF,oFAAoF;QACpF,gFAAgF;QAChF,IAAI,MAA+E,CAAC;QACpF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;oBACpC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACnE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9E,iFAAiF;oBACjF,OAAO,SAAS,CACd,EAAE,EACF,SAAS,CACP,qEAAqE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBAChG,oFAAoF;wBACpF,kFAAkF;wBAClF,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5H,CACF,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,WAAuB,EAAE,CAAC;YACtE,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YACpC,IAAgC,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QAC5D,CAAC;QAED,mFAAmF;QACnF,sFAAsF;QACtF,oFAAoF;QACpF,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,OAAO,MAAM,CAAC,WAAW,CAAC;YAC1B,OAAO,MAAM,CAAC,OAAO,CAAC;YACtB,oFAAoF;YACpF,+EAA+E;YAC/E,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;gBACrF,oEAAoE;gBACpE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;gBACvD,GAAG,CAAC,MAAM;oBACR,CAAC,CAAC;wBACE,SAAS,EAAE,CAAC,MAAgD,EAAE,EAAE;4BAC9D,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;wBAC1B,CAAC;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,mFAAmF;YACnF,sFAAsF;YACtF,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC1D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,QAAQ;oBAAE,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC;YAC/C,CAAC;YACD,OAAO,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,kFAAkF;YAClF,6EAA6E;YAC7E,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC,YAAY,CAAC;YACvC,iFAAiF;YACjF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,MAAM,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5D,2EAA2E;YAC3E,6EAA6E;YAC7E,6EAA6E;YAC7E,2EAA2E;YAC3E,2EAA2E;YAC3E,mFAAmF;YACnF,mFAAmF;YACnF,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;gBAAE,MAAM,GAAG,CAAC;YACrC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,IAAe,EAAE,UAAyB,EAA0B,EAAE;QACpG,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;QAC1B,MAAM,cAAc,GAAG,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC;QAC5C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,YAAY,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,CAAC;gBAC9C,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,IAAK,qBAA2C,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACvF,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC/B,OAAO,SAAS,CAAC,EAAE,EAAE;oBACnB,eAAe,EAAE,OAAO;oBACxB,mEAAmE;oBACnE,0EAA0E;oBAC1E,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;oBAC/C,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YACD,KAAK,2BAA2B,CAAC;YACjC,KAAK,yBAAyB;gBAC5B,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,KAAK,YAAY,EAAE,CAAC;gBAClB,OAAO,SAAS,CAAC,EAAE,EAAE;oBACnB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;qBAC3B,CAAC,CAAC;iBACJ,CAAC,CAAC;YACL,CAAC;YACD,KAAK,YAAY;gBACf,OAAO,MAAM,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD;gBACE,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,qBAAqB,GAAG,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAErC;;;;;;OAMG;IACH,MAAM,WAAW,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,EAAE,EAAE,QAAQ,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE3G;;;;;;;OAOG;IACH,MAAM,YAAY,GAAG,CAAC,CAAU,EAAE,GAAG,MAAgB,EAAU,EAAE;QAC/D,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QACzG,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChE,CAAC,CAAC;IAEF,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAU,EAAE,EAAE;YACpC,MAAM,OAAO,GACX,OAAO,EAAE,CAAC,oBAAoB,KAAK,UAAU;gBAC3C,CAAC,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAClC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC;YAC9B,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;gBACxB,gFAAgF;gBAChF,+EAA+E;gBAC/E,uEAAuE;gBACvE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,wBAAwB,EAAE,CAAC,QAAQ,CAAC;gBACpC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7E,CAAC,CAAC;QACL,CAAC,CAAC;QACF,kFAAkF;QAClF,8EAA8E;QAC9E,+EAA+E;QAC/E,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,uCAAuC,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QACD,kFAAkF;QAClF,gEAAgE;QAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAc,CAAC,CAAC,CAAC,CAAC,IAAW,CAAC,CAAC;QACvE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC;QAEzF;;;;;;;;;;;;;;;WAeG;QACH,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;QACvG,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,IAAI,MAAM,KAAK,SAAS,IAAI,CAAE,qBAA2C,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7G,OAAO,CAAC,CAAC,IAAI,CACX,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,mBAAmB,KAAK,MAAM,EAAE,EAAE;gBACtE,SAAS,EAAE,CAAC,GAAG,qBAAqB,CAAC;aACtC,CAAC,EACF,GAAG,CACJ,CAAC;QACJ,CAAC;QAED;;;;;;WAMG;QACH,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/C,UAAU,CAAC,OAAO,CAAC,GAAG,CACpB,kBAAkB,EAClB,YAAY,CAAC,CAAC,EAAE,uBAAuB,EAAE,sBAAsB,OAAO,GAAG,CAAC,CAC3E,CAAC;YACF,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH;;;;;;;;;eASG;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,sFAAsF;YACtF,0BAA0B;YAC1B,MAAM,GAAG,GAAI,CAAsC,CAAC,GAAG,CAAC;YACxD,MAAM,UAAU,GAAkB;gBAChC,wEAAwE;gBACxE,MAAM,EAAG,GAAG,EAAE,CAAC,qBAAqB,CAAkC,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM;gBAC9G,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;gBAC5B,4EAA4E;gBAC5E,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;aAC7C,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;gBAAE,UAAU,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5G,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;oBACxD,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;gBAClD,IAAI,KAAK;oBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mFAAmF;YACnF,2DAA2D;YAC3D,EAAE;YACF,iFAAiF;YACjF,wEAAwE;YACxE,iFAAiF;YACjF,oFAAoF;YACpF,8EAA8E;YAC9E,oFAAoF;YACpF,iFAAiF;YACjF,+EAA+E;YAC/E,kFAAkF;YAClF,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;gBAAE,MAAM,GAAG,CAAC;YACrC,kFAAkF;YAClF,oFAAoF;YACpF,iFAAiF;YACjF,+EAA+E;YAC/E,4EAA4E;YAC5E,wBAAwB;YACxB,EAAE;YACF,6EAA6E;YAC7E,kFAAkF;YAClF,2EAA2E;YAC3E,gFAAgF;YAChF,wCAAwC;YACxC,MAAM,QAAQ,GAAI,GAAgC,EAAE,GAAG,CAAC;YACxD,MAAM,MAAM,GACV,QAAQ,YAAY,QAAQ;gBAC1B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9E,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;gBAAE,OAAO,MAAM,CAAC;YAC1D,6EAA6E;YAC7E,wEAAwE;YACxE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9C,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,0EAA0E;QAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,OAAO,CAAC,CAAC,CAAY,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,iFAAiF;IACjF,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,mCAAmC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAE/F,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redeeming an upload link — the HTTP half of `ctx.attachments.mintUploadUrl`.
|
|
3
|
+
*
|
|
4
|
+
* An operation mints a link and returns its path; a caller with no cookie and no bearer — an MCP
|
|
5
|
+
* client's shell, a `curl` — sends the bytes here:
|
|
6
|
+
*
|
|
7
|
+
* ```sh
|
|
8
|
+
* curl --upload-file contract.pdf \
|
|
9
|
+
* "https://crm.example/api/attachment-uploads/contract/01J…/sbup_…?filename=contract.pdf"
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* **The secret is the whole authority, and it is in the path.** There is no session, no
|
|
13
|
+
* cookie and no `Authorization` header to carry it, and a header-only secret could not be
|
|
14
|
+
* used with `curl --upload-file URL` alone. The price is that the path reaches whatever logs
|
|
15
|
+
* paths. What contains that: the secret is single-use and dead within the hour, the platform
|
|
16
|
+
* stores only its hash, and `invocationLog` writes the secret segment as `[redacted]`. What it
|
|
17
|
+
* cannot reach is a log the runtime keeps of full request URLs (Workers Logs, a proxy in front
|
|
18
|
+
* of the vertical): a link there is dead once used, and unused for an hour at most.
|
|
19
|
+
*
|
|
20
|
+
* **It is the platform's upload, not a second one.** The route reads the body under the link's
|
|
21
|
+
* size ceiling, resolves a media type, refuses what the link's policy refuses, and hands the
|
|
22
|
+
* bytes to `ScopeHost.redeemUploadLink`, which writes them through the same attachment write
|
|
23
|
+
* any upload takes: bytes to the blob store first, then the row and `attachment.added` in one
|
|
24
|
+
* scope transaction, authored by the principal who minted the link and checked against the
|
|
25
|
+
* target's `writePermission` as them, now. The link is spent in that transaction, so every
|
|
26
|
+
* failure leaves it unspent.
|
|
27
|
+
*
|
|
28
|
+
* Answers: **201** `{ id, filename, contentType, size, sha256 }`; **404** for a secret that
|
|
29
|
+
* names nothing and for a path naming another target than the link's (nothing is spent);
|
|
30
|
+
* **410** for a link already used, expired or revoked; **413** over the link's size;
|
|
31
|
+
* **415** for a type the link refuses; **403** when the minter no longer holds the key.
|
|
32
|
+
*
|
|
33
|
+
* **Response hygiene, set before anything can fail.** `Cache-Control: no-store`,
|
|
34
|
+
* `Referrer-Policy: no-referrer`, `X-Content-Type-Options: nosniff`. There is no `ETag`,
|
|
35
|
+
* `Last-Modified` or `Location` — nothing in the answer is a handle on the bytes beyond the
|
|
36
|
+
* `sha256` the uploader already knows — and the secret is never echoed.
|
|
37
|
+
*
|
|
38
|
+
* **CORS: this route sends none, and removes what an outer layer set.** A blanket
|
|
39
|
+
* `app.use('*', cors())` would otherwise let any page that learns a link read its answer.
|
|
40
|
+
* A browser page on another origin that really must upload must have CORS added for THIS
|
|
41
|
+
* path on purpose; a script, an MCP client and `curl` need none.
|
|
42
|
+
*/
|
|
43
|
+
import type { Context, Env, Hono } from 'hono';
|
|
44
|
+
import { type ScopeHost } from '@substrat-run/kernel';
|
|
45
|
+
import type { CapabilityNode } from './capability-exchange.js';
|
|
46
|
+
type Awaitable<T> = T | Promise<T>;
|
|
47
|
+
/** Where `mountUploadLinkRedeem` listens unless told otherwise. */
|
|
48
|
+
export declare const UPLOAD_LINK_REDEEM_PATH = "/api/attachment-uploads/:entityType/:entityId/:secret";
|
|
49
|
+
export interface UploadLinkRedeemOptions<E extends Env = Env> {
|
|
50
|
+
/** The host serving the scope. Taken structurally — any host with the two link verbs. */
|
|
51
|
+
host: (c: Context<E>) => Awaitable<Pick<ScopeHost, 'inspectUploadLink' | 'redeemUploadLink'>>;
|
|
52
|
+
/** Which scope this request is for — the router-asserted (tenant, scope) the vertical already resolves. */
|
|
53
|
+
node: (c: Context<E>) => Awaitable<CapabilityNode>;
|
|
54
|
+
/** Defaults to `UPLOAD_LINK_REDEEM_PATH`; must carry `:entityType`, `:entityId` and `:secret`. */
|
|
55
|
+
path?: string;
|
|
56
|
+
}
|
|
57
|
+
/** The few types whose first bytes say what they are. Anything else is `null`: not sniffable, not suspect. */
|
|
58
|
+
export declare function sniffMediaType(bytes: Uint8Array): string | null;
|
|
59
|
+
/**
|
|
60
|
+
* The type the platform will record. Order: the request's own `Content-Type` unless it is
|
|
61
|
+
* generic (`curl --upload-file` sends none), else the file name's extension, else what the
|
|
62
|
+
* bytes say, else `application/octet-stream`. A claim about a type the bytes can prove — PDF,
|
|
63
|
+
* PNG, JPEG, GIF — that the bytes contradict is refused (`null`), as is a sniffable file under
|
|
64
|
+
* another claim: a `.pdf` that is a PNG is not what the link's allowlist was written for.
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveUploadMediaType(header: string | undefined, filename: string, bytes: Uint8Array): string | null;
|
|
67
|
+
/**
|
|
68
|
+
* Mount `PUT <path>` and `POST <path>`: redeem one upload link. See the module header for the
|
|
69
|
+
* answers and the hygiene.
|
|
70
|
+
*/
|
|
71
|
+
export declare function mountUploadLinkRedeem<E extends Env>(app: Hono<E>, options: UploadLinkRedeemOptions<E>): void;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=upload-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-link.d.ts","sourceRoot":"","sources":["../src/upload-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS/C,OAAO,EAML,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnC,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,0DAA6D,CAAC;AAElG,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;IAC1D,yFAAyF;IACzF,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,GAAG,kBAAkB,CAAC,CAAC,CAAC;IAC9F,2GAA2G;IAC3G,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,cAAc,CAAC,CAAC;IACnD,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4BD,8GAA8G;AAC9G,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAM/D;AAQD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,GAChB,MAAM,GAAG,IAAI,CAQf;AAyHD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,IAAI,CAwE5G"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { PROBLEM_CONTENT_TYPE, UPLOAD_LINK_PATH_PREFIX, substratError, uploadLinkFilename, } from '@substrat-run/contracts';
|
|
2
|
+
import { UPLOAD_LINK_GONE, UPLOAD_LINK_TOO_LARGE, UPLOAD_LINK_TYPE_REFUSED, UPLOAD_LINK_WRONG_TARGET, uploadContentTypeAllowed, } from '@substrat-run/kernel';
|
|
3
|
+
import { problemOf, messageOf } from './errors.js';
|
|
4
|
+
/** Where `mountUploadLinkRedeem` listens unless told otherwise. */
|
|
5
|
+
export const UPLOAD_LINK_REDEEM_PATH = `${UPLOAD_LINK_PATH_PREFIX}/:entityType/:entityId/:secret`;
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// The media type. A client's `Content-Type` is a claim; the bytes get a say where they can.
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
const GENERIC_TYPES = new Set(['application/octet-stream', 'application/x-www-form-urlencoded', 'binary/octet-stream']);
|
|
10
|
+
const EXTENSION_TYPES = {
|
|
11
|
+
pdf: 'application/pdf',
|
|
12
|
+
png: 'image/png',
|
|
13
|
+
jpg: 'image/jpeg',
|
|
14
|
+
jpeg: 'image/jpeg',
|
|
15
|
+
gif: 'image/gif',
|
|
16
|
+
txt: 'text/plain',
|
|
17
|
+
csv: 'text/csv',
|
|
18
|
+
json: 'application/json',
|
|
19
|
+
xml: 'application/xml',
|
|
20
|
+
html: 'text/html',
|
|
21
|
+
zip: 'application/zip',
|
|
22
|
+
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
23
|
+
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
24
|
+
pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
25
|
+
};
|
|
26
|
+
const startsWith = (bytes, magic) => bytes.length >= magic.length && magic.every((b, i) => bytes[i] === b);
|
|
27
|
+
/** The few types whose first bytes say what they are. Anything else is `null`: not sniffable, not suspect. */
|
|
28
|
+
export function sniffMediaType(bytes) {
|
|
29
|
+
if (startsWith(bytes, [0x25, 0x50, 0x44, 0x46, 0x2d]))
|
|
30
|
+
return 'application/pdf'; // %PDF-
|
|
31
|
+
if (startsWith(bytes, [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]))
|
|
32
|
+
return 'image/png';
|
|
33
|
+
if (startsWith(bytes, [0xff, 0xd8, 0xff]))
|
|
34
|
+
return 'image/jpeg';
|
|
35
|
+
if (startsWith(bytes, [0x47, 0x49, 0x46, 0x38]))
|
|
36
|
+
return 'image/gif'; // GIF8
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const SNIFFABLE = new Set(['application/pdf', 'image/png', 'image/jpeg', 'image/gif']);
|
|
40
|
+
const normalizeType = (raw) => {
|
|
41
|
+
const t = raw.split(';')[0].trim().toLowerCase();
|
|
42
|
+
return t === 'image/jpg' ? 'image/jpeg' : t;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The type the platform will record. Order: the request's own `Content-Type` unless it is
|
|
46
|
+
* generic (`curl --upload-file` sends none), else the file name's extension, else what the
|
|
47
|
+
* bytes say, else `application/octet-stream`. A claim about a type the bytes can prove — PDF,
|
|
48
|
+
* PNG, JPEG, GIF — that the bytes contradict is refused (`null`), as is a sniffable file under
|
|
49
|
+
* another claim: a `.pdf` that is a PNG is not what the link's allowlist was written for.
|
|
50
|
+
*/
|
|
51
|
+
export function resolveUploadMediaType(header, filename, bytes) {
|
|
52
|
+
const fromHeader = header ? normalizeType(header) : '';
|
|
53
|
+
const ext = filename.includes('.') ? filename.slice(filename.lastIndexOf('.') + 1).toLowerCase() : '';
|
|
54
|
+
const claimed = fromHeader && !GENERIC_TYPES.has(fromHeader) ? fromHeader : (EXTENSION_TYPES[ext] ?? null);
|
|
55
|
+
const sniffed = sniffMediaType(bytes);
|
|
56
|
+
if (claimed === null)
|
|
57
|
+
return sniffed ?? 'application/octet-stream';
|
|
58
|
+
if (SNIFFABLE.has(claimed))
|
|
59
|
+
return sniffed === claimed ? claimed : null;
|
|
60
|
+
return sniffed !== null ? null : claimed;
|
|
61
|
+
}
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// The file name.
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
function dispositionFilename(header) {
|
|
66
|
+
if (!header)
|
|
67
|
+
return undefined;
|
|
68
|
+
const star = /filename\*\s*=\s*UTF-8''([^;]+)/i.exec(header);
|
|
69
|
+
if (star) {
|
|
70
|
+
try {
|
|
71
|
+
return decodeURIComponent(star[1].trim());
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const plain = /filename\s*=\s*(?:"([^"]*)"|([^;]+))/i.exec(header);
|
|
78
|
+
return (plain?.[1] ?? plain?.[2])?.trim();
|
|
79
|
+
}
|
|
80
|
+
/** A leaf name, never a path: what the uploader called it, cleaned, or `undefined` if nothing usable. */
|
|
81
|
+
function cleanFilename(raw) {
|
|
82
|
+
if (raw === undefined)
|
|
83
|
+
return undefined;
|
|
84
|
+
const leaf = raw.split(/[\\/]/).pop() ?? '';
|
|
85
|
+
// eslint-disable-next-line no-control-regex
|
|
86
|
+
const cleaned = leaf.replace(/[\u0000-\u001f\u007f]/g, '').trim().slice(0, 255);
|
|
87
|
+
return uploadLinkFilename.safeParse(cleaned).success ? cleaned : undefined;
|
|
88
|
+
}
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
// The body, read under a ceiling.
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
class TooLarge extends Error {
|
|
93
|
+
}
|
|
94
|
+
/** Read the request body, refusing past `max` bytes as they arrive — not after buffering them all. */
|
|
95
|
+
async function readBody(request, max) {
|
|
96
|
+
const declared = request.headers.get('content-length');
|
|
97
|
+
if (declared !== null && Number(declared) > max)
|
|
98
|
+
throw new TooLarge();
|
|
99
|
+
if (!request.body)
|
|
100
|
+
return new Uint8Array(0);
|
|
101
|
+
const reader = request.body.getReader();
|
|
102
|
+
const chunks = [];
|
|
103
|
+
let total = 0;
|
|
104
|
+
for (;;) {
|
|
105
|
+
const { done, value } = await reader.read();
|
|
106
|
+
if (done)
|
|
107
|
+
break;
|
|
108
|
+
total += value.byteLength;
|
|
109
|
+
if (total > max) {
|
|
110
|
+
await reader.cancel().catch(() => { });
|
|
111
|
+
throw new TooLarge();
|
|
112
|
+
}
|
|
113
|
+
chunks.push(value);
|
|
114
|
+
}
|
|
115
|
+
const out = new Uint8Array(total);
|
|
116
|
+
let at = 0;
|
|
117
|
+
for (const chunk of chunks) {
|
|
118
|
+
out.set(chunk, at);
|
|
119
|
+
at += chunk.byteLength;
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
// The answers.
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
const reasonOf = (err) => {
|
|
127
|
+
const ext = err?.extensions;
|
|
128
|
+
return typeof ext?.reason === 'string' ? ext.reason : undefined;
|
|
129
|
+
};
|
|
130
|
+
const STATUS_BY_REASON = {
|
|
131
|
+
[UPLOAD_LINK_GONE]: 410,
|
|
132
|
+
[UPLOAD_LINK_TOO_LARGE]: 413,
|
|
133
|
+
[UPLOAD_LINK_TYPE_REFUSED]: 415,
|
|
134
|
+
[UPLOAD_LINK_WRONG_TARGET]: 404,
|
|
135
|
+
};
|
|
136
|
+
const CORS_HEADERS = [
|
|
137
|
+
'access-control-allow-origin',
|
|
138
|
+
'access-control-allow-credentials',
|
|
139
|
+
'access-control-expose-headers',
|
|
140
|
+
'vary',
|
|
141
|
+
];
|
|
142
|
+
function refuse(c, err) {
|
|
143
|
+
const reason = reasonOf(err);
|
|
144
|
+
const status = reason !== undefined ? STATUS_BY_REASON[reason] : undefined;
|
|
145
|
+
if (status === undefined) {
|
|
146
|
+
// Not ours to reclassify: the platform's ordinary vocabulary (403 for a lost key, 404 for an unknown secret).
|
|
147
|
+
const { status: decided, body } = problemOf({ status: errorStatus(err), message: messageOf(err) }, err, c.req.path.replace(/\/[^/]+$/, '/…'));
|
|
148
|
+
return c.body(JSON.stringify(body), decided, { 'content-type': PROBLEM_CONTENT_TYPE });
|
|
149
|
+
}
|
|
150
|
+
const body = {
|
|
151
|
+
type: 'about:blank',
|
|
152
|
+
title: reason,
|
|
153
|
+
status,
|
|
154
|
+
detail: messageOf(err),
|
|
155
|
+
reason,
|
|
156
|
+
};
|
|
157
|
+
return c.body(JSON.stringify(body), status, { 'content-type': PROBLEM_CONTENT_TYPE });
|
|
158
|
+
}
|
|
159
|
+
const STATUS_BY_CODE = {
|
|
160
|
+
unauthenticated: 401,
|
|
161
|
+
permission_denied: 403,
|
|
162
|
+
forbidden: 403,
|
|
163
|
+
not_found: 404,
|
|
164
|
+
conflict: 409,
|
|
165
|
+
validation_failed: 400,
|
|
166
|
+
unavailable: 503,
|
|
167
|
+
};
|
|
168
|
+
function errorStatus(err) {
|
|
169
|
+
const code = err?.code;
|
|
170
|
+
return (code && STATUS_BY_CODE[code]) || 500;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Mount `PUT <path>` and `POST <path>`: redeem one upload link. See the module header for the
|
|
174
|
+
* answers and the hygiene.
|
|
175
|
+
*/
|
|
176
|
+
export function mountUploadLinkRedeem(app, options) {
|
|
177
|
+
const path = options.path ?? UPLOAD_LINK_REDEEM_PATH;
|
|
178
|
+
const handler = async (c) => {
|
|
179
|
+
// Before anything can fail: nothing here may be cached or handed onwards, and an outer
|
|
180
|
+
// blanket CORS layer must not make the answer readable by a page that learned the link.
|
|
181
|
+
c.header('Cache-Control', 'no-store');
|
|
182
|
+
c.header('Referrer-Policy', 'no-referrer');
|
|
183
|
+
c.header('X-Content-Type-Options', 'nosniff');
|
|
184
|
+
for (const name of CORS_HEADERS)
|
|
185
|
+
c.header(name, undefined);
|
|
186
|
+
try {
|
|
187
|
+
const entityType = c.req.param('entityType');
|
|
188
|
+
const entityId = c.req.param('entityId');
|
|
189
|
+
const secret = c.req.param('secret');
|
|
190
|
+
if (!entityType || !entityId || !secret)
|
|
191
|
+
throw substratError('not_found', 'This upload link is not valid.');
|
|
192
|
+
const [host, node] = await Promise.all([options.host(c), options.node(c)]);
|
|
193
|
+
if (!host.inspectUploadLink || !host.redeemUploadLink) {
|
|
194
|
+
throw substratError('unavailable', 'this scope host serves no upload links');
|
|
195
|
+
}
|
|
196
|
+
// The link first, so a refusal costs no body: unknown (404), used / expired / revoked (410),
|
|
197
|
+
// and what the body will be judged against.
|
|
198
|
+
const view = await host.inspectUploadLink(node.tenantId, node.scopeId, secret);
|
|
199
|
+
if (view.entity.entityType !== entityType || view.entity.entityId !== entityId) {
|
|
200
|
+
throw substratError('not_found', 'This upload link is not valid for that target.', {
|
|
201
|
+
reason: UPLOAD_LINK_WRONG_TARGET,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
const filename = view.filename ??
|
|
205
|
+
cleanFilename(c.req.query('filename')) ??
|
|
206
|
+
cleanFilename(dispositionFilename(c.req.header('content-disposition'))) ??
|
|
207
|
+
'upload';
|
|
208
|
+
let body;
|
|
209
|
+
try {
|
|
210
|
+
body = await readBody(c.req.raw, view.maxBytes);
|
|
211
|
+
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
if (err instanceof TooLarge) {
|
|
214
|
+
throw substratError('validation_failed', `The file is larger than the ${view.maxBytes} bytes this link admits.`, {
|
|
215
|
+
reason: UPLOAD_LINK_TOO_LARGE,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
throw err;
|
|
219
|
+
}
|
|
220
|
+
if (body.byteLength === 0)
|
|
221
|
+
throw substratError('validation_failed', 'An empty file cannot be uploaded.');
|
|
222
|
+
const contentType = resolveUploadMediaType(c.req.header('content-type'), filename, body);
|
|
223
|
+
if (contentType === null || !uploadContentTypeAllowed(view.contentTypes, contentType)) {
|
|
224
|
+
throw substratError('validation_failed', 'A file of that type is not admitted by this link.', {
|
|
225
|
+
reason: UPLOAD_LINK_TYPE_REFUSED,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
const record = await host.redeemUploadLink(node.tenantId, node.scopeId, secret, {
|
|
229
|
+
entity: view.entity,
|
|
230
|
+
filename,
|
|
231
|
+
contentType,
|
|
232
|
+
body,
|
|
233
|
+
});
|
|
234
|
+
return c.body(JSON.stringify({
|
|
235
|
+
id: record.id,
|
|
236
|
+
filename: record.filename,
|
|
237
|
+
contentType: record.contentType,
|
|
238
|
+
size: record.size,
|
|
239
|
+
sha256: record.sha256,
|
|
240
|
+
}), 201, { 'content-type': 'application/json' });
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
return refuse(c, err);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
app.put(path, handler);
|
|
247
|
+
app.post(path, handler);
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=upload-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-link.js","sourceRoot":"","sources":["../src/upload-link.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/vertical-host",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.148.0",
|
|
4
4
|
"description": "The platform's /internal/* surface + error envelope, authored once — mount it in a vertical worker instead of re-copying the control-plane contract",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -29,18 +29,18 @@
|
|
|
29
29
|
"ai": "7.0.136",
|
|
30
30
|
"hono": "^4.13.13",
|
|
31
31
|
"workers-ai-provider": "^4.0.0",
|
|
32
|
-
"@substrat-run/
|
|
33
|
-
"@substrat-run/
|
|
34
|
-
"@substrat-run/model-providers": "^0.5.
|
|
32
|
+
"@substrat-run/contracts": "^0.148.0",
|
|
33
|
+
"@substrat-run/kernel": "^0.148.0",
|
|
34
|
+
"@substrat-run/model-providers": "^0.5.38"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/better-sqlite3": "^9.6.0",
|
|
38
38
|
"better-sqlite3": "^13.0.3",
|
|
39
39
|
"typescript": "^7.0.0",
|
|
40
40
|
"vitest": "^5.0.3",
|
|
41
|
-
"@substrat-run/
|
|
42
|
-
"@substrat-run/
|
|
43
|
-
"@substrat-run/vertical-auth": "^0.24.
|
|
41
|
+
"@substrat-run/adapter-sqlite": "^0.148.0",
|
|
42
|
+
"@substrat-run/contract-tests": "^0.148.0",
|
|
43
|
+
"@substrat-run/vertical-auth": "^0.24.3"
|
|
44
44
|
},
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|