optio-api 0.2.7 → 0.2.9
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/_generated/optio-engine.d.ts +8 -0
- package/dist/_generated/optio-engine.d.ts.map +1 -1
- package/dist/_generated/optio-engine.js +3 -0
- package/dist/_generated/optio-engine.js.map +1 -1
- package/dist/adapters/fastify.d.ts.map +1 -1
- package/dist/adapters/fastify.js +118 -42
- package/dist/adapters/fastify.js.map +1 -1
- package/dist/upload-forward.d.ts +31 -0
- package/dist/upload-forward.d.ts.map +1 -0
- package/dist/upload-forward.js +45 -0
- package/dist/upload-forward.js.map +1 -0
- package/dist/widget-proxy-core.d.ts +13 -0
- package/dist/widget-proxy-core.d.ts.map +1 -1
- package/dist/widget-proxy-core.js +26 -2
- package/dist/widget-proxy-core.js.map +1 -1
- package/dist/widget-upstream-registry.d.ts +1 -0
- package/dist/widget-upstream-registry.d.ts.map +1 -1
- package/dist/widget-upstream-registry.js.map +1 -1
- package/package.json +3 -2
|
@@ -13,6 +13,8 @@ export type GroupCancelAndWaitParams = z.infer<typeof optioEngineContract.method
|
|
|
13
13
|
export type GroupCancelAndWaitResult = z.infer<typeof optioEngineContract.methods.groupCancelAndWait.result>;
|
|
14
14
|
export type LaunchParams = z.infer<typeof optioEngineContract.methods.launch.params>;
|
|
15
15
|
export type LaunchResult = z.infer<typeof optioEngineContract.methods.launch.result>;
|
|
16
|
+
export type MaterializeUploadParams = z.infer<typeof optioEngineContract.methods.materializeUpload.params>;
|
|
17
|
+
export type MaterializeUploadResult = z.infer<typeof optioEngineContract.methods.materializeUpload.result>;
|
|
16
18
|
export type ResyncParams = z.infer<typeof optioEngineContract.methods.resync.params>;
|
|
17
19
|
export type UnblockLaunchesParams = z.infer<typeof optioEngineContract.methods.unblockLaunches.params>;
|
|
18
20
|
export type UnblockLaunchesResult = z.infer<typeof optioEngineContract.methods.unblockLaunches.result>;
|
|
@@ -37,6 +39,9 @@ export declare class OptioEngineClient {
|
|
|
37
39
|
launch(params: LaunchParams, opts?: {
|
|
38
40
|
timeoutMs?: number;
|
|
39
41
|
}): Promise<LaunchResult>;
|
|
42
|
+
materializeUpload(params: MaterializeUploadParams, opts?: {
|
|
43
|
+
timeoutMs?: number;
|
|
44
|
+
}): Promise<MaterializeUploadResult>;
|
|
40
45
|
resync(params: ResyncParams): Promise<void>;
|
|
41
46
|
unblockLaunches(params: UnblockLaunchesParams, opts?: {
|
|
42
47
|
timeoutMs?: number;
|
|
@@ -61,6 +66,9 @@ export interface OptioEngineService {
|
|
|
61
66
|
launch(params: LaunchParams, opts?: {
|
|
62
67
|
timeoutMs?: number;
|
|
63
68
|
}): Promise<LaunchResult>;
|
|
69
|
+
materializeUpload(params: MaterializeUploadParams, opts?: {
|
|
70
|
+
timeoutMs?: number;
|
|
71
|
+
}): Promise<MaterializeUploadResult>;
|
|
64
72
|
resync(params: ResyncParams): Promise<void>;
|
|
65
73
|
unblockLaunches(params: UnblockLaunchesParams, opts?: {
|
|
66
74
|
timeoutMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optio-engine.d.ts","sourceRoot":"","sources":["../../src/_generated/optio-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"optio-engine.d.ts","sourceRoot":"","sources":["../../src/_generated/optio-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,9 @@ export class OptioEngineClient {
|
|
|
21
21
|
launch(params, opts) {
|
|
22
22
|
return this.client.call('optio-engine', 'launch', params, opts);
|
|
23
23
|
}
|
|
24
|
+
materializeUpload(params, opts) {
|
|
25
|
+
return this.client.call('optio-engine', 'materializeUpload', params, opts);
|
|
26
|
+
}
|
|
24
27
|
resync(params) {
|
|
25
28
|
return this.client.notify('optio-engine', 'resync', params);
|
|
26
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optio-engine.js","sourceRoot":"","sources":["../../src/_generated/optio-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"optio-engine.js","sourceRoot":"","sources":["../../src/_generated/optio-engine.ts"],"names":[],"mappings":"AAwBA,MAAM,OAAO,iBAAiB;IACR;IAApB,YAAoB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;IAAG,CAAC;IAC9C,aAAa,CAAC,MAA2B,EAAE,IAA6B;QACtE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,CAAC,MAAoB,EAAE,IAA6B;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,MAAqB,EAAE,IAA6B;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,WAAW,CAAC,MAAyB,EAAE,IAA6B;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,kBAAkB,CAAC,MAAgC,EAAE,IAA6B;QAChF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,MAAoB,EAAE,IAA6B;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,iBAAiB,CAAC,MAA+B,EAAE,IAA6B;QAC9E,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,CAAC,MAAoB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IACD,eAAe,CAAC,MAA6B,EAAE,IAA6B;QAC1E,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../../src/adapters/fastify.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAQrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../../src/adapters/fastify.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAQrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB/C,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AA+WtE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe,GACvB,CAAC,mBAAmB,GAAG;IAAE,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC,GAC7C,CAAC,mBAAmB,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,CACtC;IAAE,EAAE,EAAE,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,EAAE,CAAC,EAAE,KAAK,CAAA;CAAE,CAC3C,CAAC,CAAC;AAEP,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC,OAAO,SAAS,EAAE,cAAc,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAKD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAsXjG"}
|
package/dist/adapters/fastify.js
CHANGED
|
@@ -12,11 +12,18 @@ import httpProxy from '@fastify/http-proxy';
|
|
|
12
12
|
import { createHash } from 'node:crypto';
|
|
13
13
|
import { checkAuth } from '../auth.js';
|
|
14
14
|
import { createWidgetUpstreamRegistry } from '../widget-upstream-registry.js';
|
|
15
|
-
import { resolveWidgetUpstream, applyInnerAuthHeaders, applyInnerAuthQuery, isWriteMethod, } from '../widget-proxy-core.js';
|
|
15
|
+
import { resolveWidgetUpstream, applyInnerAuthHeaders, applyInnerAuthQuery, stripEmbedderOrigin, isWriteMethod, } from '../widget-proxy-core.js';
|
|
16
16
|
import { detectLegacyMetadataParams, formatLegacyMetadataMessage, } from '../metadata-filter-query.js';
|
|
17
17
|
import { parseSseOptions, checkLegacyMetadataParams, LegacyMetadataParamError, } from '../sse-options.js';
|
|
18
18
|
import { createOptioContext } from '../context.js';
|
|
19
19
|
import { forwardAgentInput } from '../agent-input.js';
|
|
20
|
+
import { forwardUpload } from '../upload-forward.js';
|
|
21
|
+
import { resolveOptioEngine } from '../resolve.js';
|
|
22
|
+
import { GridFSBucket } from 'mongodb';
|
|
23
|
+
import fastifyMultipart from '@fastify/multipart';
|
|
24
|
+
// Cap a single staged upload at 100 MiB. The bytes stream straight into GridFS
|
|
25
|
+
// (never buffered whole, never over Redis); this only bounds pathological posts.
|
|
26
|
+
const MAX_UPLOAD_BYTES = 100 * 1024 * 1024;
|
|
20
27
|
const WIDGET_CACHE_TTL_MS = 5000;
|
|
21
28
|
// Widget URL scheme: /api/widget/<database>/<prefix>/<processId>/<subpath...>
|
|
22
29
|
// The database and prefix segments are required so the proxy can resolve the
|
|
@@ -46,45 +53,67 @@ function rewriteResponseHeaders(headers) {
|
|
|
46
53
|
else
|
|
47
54
|
delete out['content-security-policy'];
|
|
48
55
|
}
|
|
56
|
+
// Strip hop-by-hop / connection-specific headers (RFC 7230 §6.1). A proxy must
|
|
57
|
+
// not forward these, and they are FORBIDDEN under HTTP/2: forwarding e.g. a
|
|
58
|
+
// `Connection: keep-alive` + `Keep-Alive` from a strict upstream (kimi-code)
|
|
59
|
+
// to an HTTP/2 frontend (a Vite HTTPS dev server) makes the browser reject the
|
|
60
|
+
// whole response with ERR_HTTP2_PROTOCOL_ERROR. The proxy re-frames the
|
|
61
|
+
// response itself (content-length for the rewritten HTML body; Node re-chunks
|
|
62
|
+
// streamed bodies), so dropping these is correct on HTTP/1.1 too.
|
|
63
|
+
for (const h of ['connection', 'keep-alive', 'transfer-encoding', 'upgrade', 'proxy-connection', 'te', 'trailer']) {
|
|
64
|
+
delete out[h];
|
|
65
|
+
}
|
|
49
66
|
return out;
|
|
50
67
|
}
|
|
51
68
|
function widgetProxyPrefix(database, prefix, processId) {
|
|
52
69
|
return `/api/widget/${encodeURIComponent(database)}/${encodeURIComponent(prefix)}/${processId}/`;
|
|
53
70
|
}
|
|
54
|
-
function injectBaseHref(html, proxyPrefix) {
|
|
55
|
-
//
|
|
71
|
+
function injectBaseHref(html, proxyPrefix, stripPrefix) {
|
|
72
|
+
// Always inject:
|
|
73
|
+
//
|
|
74
|
+
// <base href="<proxyPrefix>"> — forces relative URLs in the page to resolve
|
|
75
|
+
// against the proxy root regardless of how deep the current document URL is.
|
|
76
|
+
// Required for SPAs (like opencode) whose HTML uses relative asset paths
|
|
77
|
+
// ("./assets/x.js") but are loaded via a routing-deep URL like
|
|
78
|
+
// /api/widget/<db>/<prefix>/<pid>/<workdir>/session/. Harmless for ttyd.
|
|
79
|
+
//
|
|
80
|
+
// Inject ONLY when `stripPrefix` (widgetData.stripProxyPrefix):
|
|
56
81
|
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
// deep URL like /api/widget/<db>/<prefix>/<pid>/<workdir>/session/.
|
|
62
|
-
// Without it, assets resolve to `.../workdir/session/assets/x.js` and
|
|
63
|
-
// hit the upstream's SPA fallback with wrong MIME types.
|
|
82
|
+
// An inline <script> that runs before the page bundle and strips the proxy
|
|
83
|
+
// prefix from `location.pathname` via history.replaceState, so a client-side
|
|
84
|
+
// SPA router (opencode, kimicode) sees its intended URL space (`/:dir/session/`)
|
|
85
|
+
// rather than the proxy-nested one.
|
|
64
86
|
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
// unaffected, so asset loading continues to work.
|
|
87
|
+
// This MUST NOT run for ttyd-based widgets (claudecode/grok/antigravity):
|
|
88
|
+
// ttyd derives its /token and /ws endpoints from `location.pathname` at
|
|
89
|
+
// runtime, so stripping the prefix to '/' makes ttyd request them at the
|
|
90
|
+
// origin root and escape the proxy (regression from commit 2accedb: the
|
|
91
|
+
// strip used to crash benignly on the '//' path, leaving pathname intact;
|
|
92
|
+
// once it stopped crashing it began breaking ttyd). Default off = ttyd-safe.
|
|
72
93
|
//
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
// outgoing CSP's script-src directive.
|
|
94
|
+
// The inline script violates `script-src 'self'` CSPs, so we return its
|
|
95
|
+
// SHA-256 for the caller to allowlist. base-href-only needs no CSP change.
|
|
76
96
|
const baseTag = `<base href="${proxyPrefix}">`;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
97
|
+
let injection = baseTag;
|
|
98
|
+
let stripScriptSha256 = null;
|
|
99
|
+
if (stripPrefix) {
|
|
100
|
+
// Escape regex-meta characters in the prefix for the runtime match.
|
|
101
|
+
const prefixLiteralForRegex = proxyPrefix
|
|
102
|
+
.replace(/\/$/, '') // the script uses the stripped form without trailing slash
|
|
103
|
+
.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
104
|
+
// Collapse any leading slashes in the stripped remainder before re-forming the
|
|
105
|
+
// path. The remainder can begin with a stray '/' (e.g. an iframe src that joined
|
|
106
|
+
// a trailing-slash base with a leading-slash route -> '<prefix>//sessions/...').
|
|
107
|
+
// Left as-is that would yield a protocol-relative '//sessions/...' URL, and
|
|
108
|
+
// history.replaceState would throw a cross-origin SecurityError.
|
|
109
|
+
const scriptBody = `(function(){var r=new RegExp('^' + ${JSON.stringify(prefixLiteralForRegex)});` +
|
|
110
|
+
`var p=location.pathname;var m=p.match(r);` +
|
|
111
|
+
`if(m){var rest='/'+p.slice(m[0].length).replace(/^\\/+/,'');` +
|
|
112
|
+
`history.replaceState(null,'',rest+location.search+location.hash);}` +
|
|
113
|
+
`})();`;
|
|
114
|
+
stripScriptSha256 = createHash('sha256').update(scriptBody, 'utf-8').digest('base64');
|
|
115
|
+
injection = `${baseTag}<script>${scriptBody}</script>`;
|
|
116
|
+
}
|
|
88
117
|
const m = html.match(/<head(\s[^>]*)?>/i);
|
|
89
118
|
const transformed = m
|
|
90
119
|
? html.replace(m[0], `${m[0]}${injection}`)
|
|
@@ -196,15 +225,17 @@ function registerWidgetProxy(app, opts) {
|
|
|
196
225
|
// bandwidth savings are worth for a dev-tool reverse proxy.
|
|
197
226
|
delete req.raw.headers['accept-encoding'];
|
|
198
227
|
},
|
|
199
|
-
// Rewrite headers for outgoing WebSocket handshake (inner-auth injection
|
|
200
|
-
//
|
|
201
|
-
//
|
|
228
|
+
// Rewrite headers for outgoing WebSocket handshake (inner-auth injection +
|
|
229
|
+
// drop the browser Origin so strict upstreams don't reject the cross-origin
|
|
230
|
+
// handshake — see stripEmbedderOrigin). The Fastify request object is passed
|
|
231
|
+
// as the second argument, which has request.raw.__optioWidget set by
|
|
232
|
+
// preHandler (runs before the upgrade handshake).
|
|
202
233
|
wsClientOptions: {
|
|
203
234
|
rewriteRequestHeaders: (headers, req) => {
|
|
204
235
|
const widget = req.raw.__optioWidget;
|
|
205
236
|
if (!widget)
|
|
206
|
-
return headers;
|
|
207
|
-
return applyInnerAuthHeaders(widget.upstream.innerAuth, headers);
|
|
237
|
+
return stripEmbedderOrigin(headers);
|
|
238
|
+
return stripEmbedderOrigin(applyInnerAuthHeaders(widget.upstream.innerAuth, headers));
|
|
208
239
|
},
|
|
209
240
|
},
|
|
210
241
|
replyOptions: {
|
|
@@ -232,10 +263,13 @@ function registerWidgetProxy(app, opts) {
|
|
|
232
263
|
return widget?.upstream.url ?? 'http://127.0.0.1/';
|
|
233
264
|
},
|
|
234
265
|
rewriteRequestHeaders: (req, headers) => {
|
|
266
|
+
// Drop the browser Origin (stripEmbedderOrigin) so a strict upstream
|
|
267
|
+
// that compares Origin against the reply-from-rewritten Host doesn't
|
|
268
|
+
// reject same-origin POSTs as cross-origin.
|
|
235
269
|
const widget = req.raw.__optioWidget;
|
|
236
270
|
if (!widget)
|
|
237
|
-
return headers;
|
|
238
|
-
return applyInnerAuthHeaders(widget.upstream.innerAuth, headers);
|
|
271
|
+
return stripEmbedderOrigin(headers);
|
|
272
|
+
return stripEmbedderOrigin(applyInnerAuthHeaders(widget.upstream.innerAuth, headers));
|
|
239
273
|
},
|
|
240
274
|
rewriteHeaders: rewriteResponseHeaders,
|
|
241
275
|
// onResponse takes over the response forwarding so we can rewrite
|
|
@@ -271,13 +305,17 @@ function registerWidgetProxy(app, opts) {
|
|
|
271
305
|
}
|
|
272
306
|
const widget = request.raw.__optioWidget;
|
|
273
307
|
const proxyPrefix = widget?.proxyPrefix ?? '/';
|
|
308
|
+
// Opt-in prefix-strip: only client-routed SPAs (opencode/kimicode) set
|
|
309
|
+
// widgetData.stripProxyPrefix. ttyd widgets leave it off so their
|
|
310
|
+
// location.pathname is preserved (see injectBaseHref).
|
|
311
|
+
const stripPrefix = widget?.upstream?.stripProxyPrefix === true;
|
|
274
312
|
const chunks = [];
|
|
275
313
|
stream.on('data', (c) => {
|
|
276
314
|
chunks.push(c);
|
|
277
315
|
});
|
|
278
316
|
stream.on('end', () => {
|
|
279
317
|
const html = Buffer.concat(chunks).toString('utf-8');
|
|
280
|
-
const { html: transformed, stripScriptSha256 } = injectBaseHref(html, proxyPrefix);
|
|
318
|
+
const { html: transformed, stripScriptSha256 } = injectBaseHref(html, proxyPrefix, stripPrefix);
|
|
281
319
|
const body = Buffer.from(transformed, 'utf-8');
|
|
282
320
|
// Rebuild headers: copy upstream, then override transform-affected ones.
|
|
283
321
|
const outHeaders = rewriteResponseHeaders(incomingHeaders);
|
|
@@ -286,10 +324,11 @@ function registerWidgetProxy(app, opts) {
|
|
|
286
324
|
// (We also strip Accept-Encoding on the way out in preHandler so in
|
|
287
325
|
// practice upstream should send identity, but belt-and-braces.)
|
|
288
326
|
delete outHeaders['content-encoding'];
|
|
289
|
-
// If a CSP is present
|
|
290
|
-
// so it isn't blocked by `script-src 'self'`.
|
|
327
|
+
// If a CSP is present AND we injected an inline script, allowlist it by
|
|
328
|
+
// hash so it isn't blocked by `script-src 'self'`. base-href-only
|
|
329
|
+
// (stripScriptSha256 === null) needs no CSP change.
|
|
291
330
|
const csp = outHeaders['content-security-policy'];
|
|
292
|
-
if (typeof csp === 'string' && csp.length > 0) {
|
|
331
|
+
if (stripScriptSha256 !== null && typeof csp === 'string' && csp.length > 0) {
|
|
293
332
|
outHeaders['content-security-policy'] = appendScriptHashToCsp(csp, stripScriptSha256);
|
|
294
333
|
}
|
|
295
334
|
rawRes.writeHead(statusCode, outHeaders);
|
|
@@ -341,6 +380,10 @@ export function registerOptioApi(app, opts) {
|
|
|
341
380
|
reply.code(authResult.status).send(authResult.body);
|
|
342
381
|
}
|
|
343
382
|
});
|
|
383
|
+
// multipart/form-data support for the generic widget-upload route below.
|
|
384
|
+
// Registered here (not app-wide behaviour beyond parsing) so `request.file()`
|
|
385
|
+
// is available; every other route continues to use JSON body parsing.
|
|
386
|
+
app.register(fastifyMultipart, { limits: { fileSize: MAX_UPLOAD_BYTES, files: 1 } });
|
|
344
387
|
// Widget reverse-proxy lives under /api/widget/<database>/<prefix>/<processId>/…
|
|
345
388
|
// and is registered as an internal part of the Optio API surface so consumers
|
|
346
389
|
// only need one init call.
|
|
@@ -439,6 +482,39 @@ export function registerOptioApi(app, opts) {
|
|
|
439
482
|
const result = await forwardAgentInput(db, prefix, processId, payload);
|
|
440
483
|
reply.code(result.status).send(result.body);
|
|
441
484
|
});
|
|
485
|
+
// Generic file upload: the widget POSTs a multipart file here; we stream the
|
|
486
|
+
// bytes into GridFS (never over Redis) and hand the blob id to the engine's
|
|
487
|
+
// materializeUpload RPC, which lands it in the running task's workdir.
|
|
488
|
+
app.post('/api/widget-upload/:database/:prefix/:processId', async (request, reply) => {
|
|
489
|
+
const { database, prefix, processId } = request.params;
|
|
490
|
+
let part;
|
|
491
|
+
try {
|
|
492
|
+
part = await request.file();
|
|
493
|
+
}
|
|
494
|
+
catch {
|
|
495
|
+
reply.code(400).send({ message: 'expected multipart/form-data with a file part' });
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
if (!part) {
|
|
499
|
+
reply.code(400).send({ message: 'no file part in request' });
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
let db;
|
|
503
|
+
try {
|
|
504
|
+
({ db } = resolveDb(dbOpts, { database, prefix }));
|
|
505
|
+
}
|
|
506
|
+
catch {
|
|
507
|
+
reply.code(404).send({ message: 'session not running' });
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
const bucket = new GridFSBucket(db);
|
|
511
|
+
const engine = resolveOptioEngine(ctx, { database, prefix });
|
|
512
|
+
// An oversize part errors its stream (throwFileSizeLimit defaults true),
|
|
513
|
+
// which rejects forwardUpload's pipeline → 502 + staged-blob cleanup, so
|
|
514
|
+
// a truncated file is never materialized into the workdir.
|
|
515
|
+
const result = await forwardUpload({ bucket, engine }, processId, part.filename, part.file);
|
|
516
|
+
reply.code(result.status).send(result.body);
|
|
517
|
+
});
|
|
442
518
|
app.get('/api/processes/:id/tree/stream', async (request, reply) => {
|
|
443
519
|
const { id } = request.params;
|
|
444
520
|
let sseOpts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../../src/adapters/fastify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../../src/adapters/fastify.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKpD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAkB,MAAM,eAAe,CAAC;AAC1D,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAqB,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,+EAA+E;AAC/E,iFAAiF;AACjF,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,8EAA8E;AAC9E,6EAA6E;AAC7E,sEAAsE;AACtE,4EAA4E;AAC5E,0BAA0B;AAC1B,MAAM,kBAAkB,GAAG,8DAA8D,CAAC;AAC1F,MAAM,mBAAmB,GAAG,6CAA6C,CAAC;AAS1E,SAAS,sBAAsB,CAAC,OAA4B;IAC1D,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,sEAAsE;IACtE,0EAA0E;IAC1E,2BAA2B;IAC3B,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG;aACjB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;aAC7E,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,QAAQ;YAAE,GAAG,CAAC,yBAAyB,CAAC,GAAG,QAAQ,CAAC;;YACnD,OAAO,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,+EAA+E;IAC/E,4EAA4E;IAC5E,6EAA6E;IAC7E,+EAA+E;IAC/E,wEAAwE;IACxE,8EAA8E;IAC9E,kEAAkE;IAClE,KAAK,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAClH,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,MAAc,EAAE,SAAiB;IAC5E,OAAO,eAAe,kBAAkB,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,SAAS,GAAG,CAAC;AACnG,CAAC;AASD,SAAS,cAAc,CACrB,IAAY,EACZ,WAAmB,EACnB,WAAoB;IAEpB,iBAAiB;IACjB,EAAE;IACF,8EAA8E;IAC9E,+EAA+E;IAC/E,2EAA2E;IAC3E,iEAAiE;IACjE,2EAA2E;IAC3E,EAAE;IACF,gEAAgE;IAChE,EAAE;IACF,6EAA6E;IAC7E,+EAA+E;IAC/E,mFAAmF;IACnF,sCAAsC;IACtC,EAAE;IACF,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,+EAA+E;IAC/E,EAAE;IACF,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,OAAO,GAAG,eAAe,WAAW,IAAI,CAAC;IAC/C,IAAI,SAAS,GAAG,OAAO,CAAC;IACxB,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,WAAW,EAAE,CAAC;QAChB,oEAAoE;QACpE,MAAM,qBAAqB,GAAG,WAAW;aACtC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,2DAA2D;aAC9E,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC1C,+EAA+E;QAC/E,iFAAiF;QACjF,iFAAiF;QACjF,4EAA4E;QAC5E,iEAAiE;QACjE,MAAM,UAAU,GACd,sCAAsC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI;YAC/E,2CAA2C;YAC3C,8DAA8D;YAC9D,oEAAoE;YACpE,OAAO,CAAC;QACV,iBAAiB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtF,SAAS,GAAG,GAAG,OAAO,WAAW,UAAU,WAAW,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;QAC3C,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC;IAC1B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAClD,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,SAAS,qBAAqB,CAAC,GAAW,EAAE,gBAAwB;IAClE,MAAM,SAAS,GAAG,WAAW,gBAAgB,GAAG,CAAC;IACjD,MAAM,KAAK,GAAG,GAAG;SACd,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAC9D,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAoB,EAAE,IAAgC;IACjF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAC,CAAC;IAE5F,SAAS,cAAc,CAAC,GAAW;QACjC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,IAAI,CAAC;YACH,OAAO;gBACL,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;aAChB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE;QACtB,iDAAiD;QACjD,oGAAoG;QACpG,kGAAkG;QAClG,6FAA6F;QAC7F,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,EAAE;QACjB,SAAS,EAAE,IAAI;QACf,+EAA+E;QAC/E,4EAA4E;QAC5E,gEAAgE;QAChE,IAAI,EAAE,EAAE;QACR,qEAAqE;QACrE,0EAA0E;QAC1E,iEAAiE;QACjE,qBAAqB,EAAE,CAAC,IAAI,CAAC,OAAO;QAEpC,UAAU,EAAE,KAAK,EAAE,GAAQ,EAAE,KAAU,EAAE,EAAE;YACzC,MAAM,OAAO,GAAW,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;YAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;YAEhD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACtF,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,IAAI,EAAM,CAAC;YACX,IAAI,CAAC;gBACH,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC1E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,sCAAsC,CAAC,CAAC;gBAC/D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,mFAAmF;YAClF,GAAG,CAAC,GAAW,CAAC,aAAa,GAAG;gBAC/B,SAAS;gBACT,QAAQ;gBACR,WAAW,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC;aAC5D,CAAC;YAEF,wFAAwF;YACxF,+CAA+C;YAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;YACjE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,mBAAmB,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAEhE,qEAAqE;YACrE,2EAA2E;YAC3E,uEAAuE;YACvE,4DAA4D;YAC5D,OAAQ,GAAG,CAAC,GAAG,CAAC,OAA+B,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,2EAA2E;QAC3E,4EAA4E;QAC5E,6EAA6E;QAC7E,qEAAqE;QACrE,kDAAkD;QAClD,eAAe,EAAE;YACf,qBAAqB,EAAE,CAAC,OAA4B,EAAE,GAAQ,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAI,GAAG,CAAC,GAAW,CAAC,aAAa,CAAC;gBAC9C,IAAI,CAAC,MAAM;oBAAE,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YACxF,CAAC;SACF;QAED,YAAY,EAAE;YACZ,4DAA4D;YAC5D,yDAAyD;YACzD,wEAAwE;YACxE,uEAAuE;YACvE,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,+DAA+D;YAC/D,qEAAqE;YACrE,EAAE;YACF,mEAAmE;YACnE,qEAAqE;YACrE,mEAAmE;YACnE,yEAAyE;YACzE,yEAAyE;YACzE,2EAA2E;YAC3E,mEAAmE;YACnE,wBAAwB;YACxB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,CAAC,GAAQ,EAAE,EAAE;gBACxB,MAAM,MAAM,GAAI,GAAG,CAAC,GAAW,CAAC,aAAa,CAAC;gBAC9C,OAAO,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,mBAAmB,CAAC;YACrD,CAAC;YACD,qBAAqB,EAAE,CAAC,GAAQ,EAAE,OAA4B,EAAE,EAAE;gBAChE,qEAAqE;gBACrE,qEAAqE;gBACrE,4CAA4C;gBAC5C,MAAM,MAAM,GAAI,GAAG,CAAC,GAAW,CAAC,aAAa,CAAC;gBAC9C,IAAI,CAAC,MAAM;oBAAE,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,cAAc,EAAE,sBAAsB;YACtC,kEAAkE;YAClE,8DAA8D;YAC9D,+CAA+C;YAC/C,EAAE;YACF,iEAAiE;YACjE,qEAAqE;YACrE,qEAAqE;YACrE,iEAAiE;YACjE,gEAAgE;YAChE,uCAAuC;YACvC,UAAU,EAAE,CAAC,OAAY,EAAE,KAAU,EAAE,GAAQ,EAAE,EAAE;gBACjD,mEAAmE;gBACnE,wEAAwE;gBACxE,MAAM,MAAM,GAA0B,GAAG,CAAC,MAAM,CAAC;gBACjD,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,MAAM,GAAkC,KAAK,CAAC,GAAG,CAAC;gBACxD,MAAM,UAAU,GAAW,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;gBACjD,MAAM,eAAe,GAAG,GAAG,CAAC,OAA8B,CAAC;gBAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAEhF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACvC,MAAM,UAAU,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;oBAC3D,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAiB,CAAC,CAAC;oBAChD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;wBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wCAAwC,CAAC,CAAC;wBACrE,IAAI,CAAC,MAAM,CAAC,WAAW;4BAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAC/C,MAAM,CAAC,GAAG,EAAE,CAAC;oBACf,CAAC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,MAAM,MAAM,GAAI,OAAO,CAAC,GAAW,CAAC,aAAa,CAAC;gBAClD,MAAM,WAAW,GAAW,MAAM,EAAE,WAAW,IAAI,GAAG,CAAC;gBACvD,uEAAuE;gBACvE,kEAAkE;gBAClE,uDAAuD;gBACvD,MAAM,WAAW,GAAY,MAAM,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;gBACzE,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;oBAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACpB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACrD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;oBAChG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;oBAC/C,yEAAyE;oBACzE,MAAM,UAAU,GAAwB,sBAAsB,CAAC,eAAe,CAAC,CAAC;oBAChF,UAAU,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACvD,kEAAkE;oBAClE,oEAAoE;oBACpE,gEAAgE;oBAChE,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC;oBACtC,wEAAwE;oBACxE,kEAAkE;oBAClE,oDAAoD;oBACpD,MAAM,GAAG,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC;oBAClD,IAAI,iBAAiB,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5E,UAAU,CAAC,yBAAyB,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;oBACxF,CAAC;oBACD,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAiB,CAAC,CAAC;oBAChD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;oBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wCAAwC,CAAC,CAAC;oBACrE,IAAI,CAAC,MAAM,CAAC,WAAW;wBAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAC/C,MAAM,CAAC,GAAG,EAAE,CAAC;gBACf,CAAC,CAAC,CAAC;YACL,CAAC;YACD,+EAA+E;YAC/E,6DAA6D;YAC7D,uFAAuF;YACvF,OAAO,EAAE,CAAC,KAAU,EAAE,KAAU,EAAE,EAAE;gBAClC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACxE,MAAM,IAAI,GAAG,KAAK,EAAE,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC;gBAC1E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACtF,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC;AA4BD,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;AACzB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAEvF,MAAM,UAAU,gBAAgB,CAAC,GAAoB,EAAE,IAAqB;IAC1E,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC;IAC/B,IAAI,GAAiB,CAAC;IACtB,IAAI,KAAY,CAAC;IACjB,IAAI,MAAiB,CAAC;IACtB,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACf,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACpB,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACnB,MAAM,GAAG,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAG,EAAE,CAAC;QAC1G,GAAG,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,sEAAsE;IACtE,yEAAyE;IACzE,wEAAwE;IACxE,2DAA2D;IAC3D,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC5C,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACtF,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,yEAAyE;IACzE,8EAA8E;IAC9E,sEAAsE;IACtE,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAErF,iFAAiF;IACjF,8EAA8E;IAC9E,2BAA2B;IAC3B,mBAAmB,CAAC,GAAG,EAAE;QACvB,MAAM;QACN,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IAEvB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE;QAC7C,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC;YACrF,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC;YACrF,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC;YACrF,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC;YACrF,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CACzC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,CACtE,CAAC;YACF,OAAO,MAAa,CAAC;QACvB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO,MAAa,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO,MAAa,CAAC;QACvB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAA8I,EAAE,EAAE;YAC5K,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3F,OAAO,EAAE,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;KACF,CAAC,CAAC;IAEH,sFAAsF;IACtF,qEAAqE;IACrE,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,OAAY,EAAE,KAAU,EAAE,EAAE;QAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE,CAAC;YAC/E,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/B,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,QAAa,EAAE,KAAU,EAAE,EAAE;QAClE,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CACN,kDAAkD,EAClD,KAAK,EAAE,OAAY,EAAE,KAAU,EAAE,EAAE;QACjC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAE/C,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAyC,CAAC;QAC/D,IAAI,OAA2C,CAAC;QAChD,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,IAAI,EAAE,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,mEAAmE;YACnE,uDAAuD;YACvD,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC;QACP,IAAI,CAAC;YACH,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;IAEF,6EAA6E;IAC7E,4EAA4E;IAC5E,uEAAuE;IACvE,GAAG,CAAC,IAAI,CACN,iDAAiD,EACjD,KAAK,EAAE,OAAY,EAAE,KAAU,EAAE,EAAE;QACjC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAE/C,CAAC;QACF,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC,CAAC;YACnF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC;QACP,IAAI,CAAC;YACH,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,yEAAyE;QACzE,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CACxD,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,GAAG,CAAC,gCAAgC,EAAE,KAAK,EAAE,OAAY,EAAE,KAAU,EAAE,EAAE;QAC3E,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,eAAe,CAAE,OAAO,CAAC,KAAiC,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACvB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,EAAE;YAClC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC;YAC9B,EAAE;YACF,MAAM;YACN,SAAS;YACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC9B,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,kCAAkC,EAAE,KAAK,EAAE,OAAY,EAAE,KAAU,EAAE,EAAE;QAC7E,MAAM,QAAQ,GAAI,OAAO,CAAC,KAAiC,IAAI,EAAE,CAAC;QAClE,MAAM,YAAY,GAAI,QAAQ,CAAC,OAA8B,IAAI,EAAE,CAAC;QACpE,MAAM,YAAY,GAAI,QAAQ,CAAC,OAA8B,IAAI,EAAE,CAAC;QACpE,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC;QAEjD,KAAK,UAAU,UAAU,CAAC,EAAU;YAClC,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAClD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAC1C,CAAC,CAAC;QAEH,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAyC,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAC3B,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACvB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,EAAE;YAClC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QAE3C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,qBAAqB,CAAC;YACnC,EAAE;YACF,MAAM;YACN,SAAS;YACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAC9B,SAAS;YACT,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAY,EAAE,KAAU,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAI,OAAO,CAAC,KAAiC,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC;YACH,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,wBAAwB,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;QACD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAElD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACvB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,EAAE;YAClC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC;YAC9B,EAAE;YACF,MAAM;YACN,SAAS;YACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAY,EAAE,KAAU,EAAE,EAAE;QACvE,MAAM,QAAQ,GAAI,OAAO,CAAC,KAAiC,IAAI,EAAE,CAAC;QAClE,MAAM,SAAS,GAAG,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAElD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACvB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,EAAE;YAClC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,0EAA0E;QAC1E,sEAAsE;QACtE,yCAAyC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,yBAAyB,CAAC;YACvC,EAAE;YACF,MAAM;YACN,SAAS;YACT,SAAS;YACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Readable } from 'node:stream';
|
|
2
|
+
import type { GridFSBucket } from 'mongodb';
|
|
3
|
+
import type { MaterializeUploadParams, MaterializeUploadResult } from './_generated/optio-engine.js';
|
|
4
|
+
export interface UploadForwardResult {
|
|
5
|
+
status: number;
|
|
6
|
+
body: unknown;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The two collaborators the upload forwarder needs, injected so tests can drive
|
|
10
|
+
* it without a real Mongo/redis stack:
|
|
11
|
+
* - `bucket`: a GridFS bucket over the same Mongo db the API already holds; the
|
|
12
|
+
* uploaded bytes are staged here (they never cross Redis).
|
|
13
|
+
* - `engine`: the clamator `optio-engine` client, whose `materializeUpload` RPC
|
|
14
|
+
* reaches the task's process by `processId` and writes the blob into its
|
|
15
|
+
* workdir via the in-process upload writer.
|
|
16
|
+
*/
|
|
17
|
+
export interface UploadForwardDeps {
|
|
18
|
+
bucket: Pick<GridFSBucket, 'openUploadStream' | 'delete'>;
|
|
19
|
+
engine: {
|
|
20
|
+
materializeUpload(params: MaterializeUploadParams): Promise<MaterializeUploadResult>;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Stream one multipart file into GridFS, then hand its blob id to the engine's
|
|
25
|
+
* `materializeUpload` RPC (which resolves the running task by `processId` and
|
|
26
|
+
* writes the file into `<workdir>/uploads/<name>`). The GridFS blob is transient
|
|
27
|
+
* staging: it is best-effort deleted afterwards whether the RPC succeeded, failed
|
|
28
|
+
* or threw. Bytes never enter the RPC params — only the blob id does.
|
|
29
|
+
*/
|
|
30
|
+
export declare function forwardUpload(deps: UploadForwardDeps, processId: string, filename: string, stream: Readable): Promise<UploadForwardResult>;
|
|
31
|
+
//# sourceMappingURL=upload-forward.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-forward.d.ts","sourceRoot":"","sources":["../src/upload-forward.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,GAAG,QAAQ,CAAC,CAAC;IAC1D,MAAM,EAAE;QACN,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;KACtF,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,mBAAmB,CAAC,CA6B9B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { pipeline } from 'node:stream/promises';
|
|
2
|
+
/**
|
|
3
|
+
* Stream one multipart file into GridFS, then hand its blob id to the engine's
|
|
4
|
+
* `materializeUpload` RPC (which resolves the running task by `processId` and
|
|
5
|
+
* writes the file into `<workdir>/uploads/<name>`). The GridFS blob is transient
|
|
6
|
+
* staging: it is best-effort deleted afterwards whether the RPC succeeded, failed
|
|
7
|
+
* or threw. Bytes never enter the RPC params — only the blob id does.
|
|
8
|
+
*/
|
|
9
|
+
export async function forwardUpload(deps, processId, filename, stream) {
|
|
10
|
+
const upload = deps.bucket.openUploadStream(filename);
|
|
11
|
+
const blobId = upload.id;
|
|
12
|
+
try {
|
|
13
|
+
await pipeline(stream, upload);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
await safeDelete(deps, blobId);
|
|
17
|
+
return { status: 502, body: { ok: false, message: 'failed to stage upload' } };
|
|
18
|
+
}
|
|
19
|
+
let result;
|
|
20
|
+
try {
|
|
21
|
+
result = await deps.engine.materializeUpload({
|
|
22
|
+
processId,
|
|
23
|
+
blobId: blobId.toHexString(),
|
|
24
|
+
filename,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
await safeDelete(deps, blobId);
|
|
29
|
+
return { status: 502, body: { ok: false, message: 'session not reachable' } };
|
|
30
|
+
}
|
|
31
|
+
await safeDelete(deps, blobId);
|
|
32
|
+
if (result.ok) {
|
|
33
|
+
return { status: 200, body: { ok: true, files: [{ filename, path: result.path }] } };
|
|
34
|
+
}
|
|
35
|
+
return { status: 502, body: { ok: false, message: result.reason } };
|
|
36
|
+
}
|
|
37
|
+
async function safeDelete(deps, blobId) {
|
|
38
|
+
try {
|
|
39
|
+
await deps.bucket.delete(blobId);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Staged blobs are transient; a failed cleanup must not fail the request.
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=upload-forward.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-forward.js","sourceRoot":"","sources":["../src/upload-forward.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AA6BhD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAuB,EACvB,SAAiB,EACjB,QAAgB,EAChB,MAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,EAAc,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC3C,SAAS;YACT,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,CAAC;IAChF,CAAC;IAED,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE/B,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;IACvF,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAuB,EAAE,MAAgB;IACjE,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;AACH,CAAC"}
|
|
@@ -2,6 +2,19 @@ import { type Db } from 'mongodb';
|
|
|
2
2
|
import type { InnerAuthDoc, WidgetUpstreamRegistry, WidgetUpstreamValue } from './widget-upstream-registry.js';
|
|
3
3
|
export declare function resolveWidgetUpstream(db: Db, prefix: string, registry: WidgetUpstreamRegistry, processId: string): Promise<WidgetUpstreamValue | null>;
|
|
4
4
|
export declare function applyInnerAuthHeaders(innerAuth: InnerAuthDoc | null, headers: Record<string, string | string[] | undefined>): Record<string, string | string[] | undefined>;
|
|
5
|
+
/**
|
|
6
|
+
* Drop the browser `Origin` header before forwarding to the widget upstream.
|
|
7
|
+
*
|
|
8
|
+
* The upstream runs on loopback and is reachable only through this authenticated
|
|
9
|
+
* proxy, but @fastify/reply-from rewrites the outgoing `Host` to the loopback
|
|
10
|
+
* upstream while the browser's `Origin` still carries the parent page's origin.
|
|
11
|
+
* Strict upstreams (e.g. kimi-code) treat that `Origin` != `Host` mismatch as
|
|
12
|
+
* cross-origin and reject every Origin-bearing request — WebSocket handshakes
|
|
13
|
+
* (which always send `Origin`) and same-origin POSTs alike. Removing the header
|
|
14
|
+
* makes the upstream see a non-browser (originless) client and admit the
|
|
15
|
+
* request; the proxy stays the CSRF/auth trust boundary.
|
|
16
|
+
*/
|
|
17
|
+
export declare function stripEmbedderOrigin(headers: Record<string, string | string[] | undefined>): Record<string, string | string[] | undefined>;
|
|
5
18
|
export declare function applyInnerAuthQuery(innerAuth: InnerAuthDoc | null, url: string): string;
|
|
6
19
|
export declare function isWriteMethod(method: string): boolean;
|
|
7
20
|
//# sourceMappingURL=widget-proxy-core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-proxy-core.d.ts","sourceRoot":"","sources":["../src/widget-proxy-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE/G,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"widget-proxy-core.d.ts","sourceRoot":"","sources":["../src/widget-proxy-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE/G,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAyCrC;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,YAAY,GAAG,IAAI,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAc/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAI/C;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,YAAY,GAAG,IAAI,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,CAKR;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGrD"}
|
|
@@ -15,8 +15,14 @@ export async function resolveWidgetUpstream(db, prefix, registry, processId) {
|
|
|
15
15
|
// the negative would waste an entry; the 404 is cheap to re-derive.
|
|
16
16
|
return null;
|
|
17
17
|
}
|
|
18
|
-
const doc = await db.collection(`${prefix}_processes`).findOne({ _id: oid }, { projection: { widgetUpstream: 1 } });
|
|
19
|
-
const
|
|
18
|
+
const doc = await db.collection(`${prefix}_processes`).findOne({ _id: oid }, { projection: { widgetUpstream: 1, 'widgetData.stripProxyPrefix': 1 } });
|
|
19
|
+
const rawUpstream = (doc?.widgetUpstream ?? null);
|
|
20
|
+
// Fold the widget's opt-in prefix-strip flag (widgetData.stripProxyPrefix,
|
|
21
|
+
// set by client-routed SPA engines) into the cached upstream value so the
|
|
22
|
+
// HTML-injection path can read it without a second lookup.
|
|
23
|
+
const upstream = rawUpstream === null
|
|
24
|
+
? null
|
|
25
|
+
: { ...rawUpstream, stripProxyPrefix: doc?.widgetData?.stripProxyPrefix === true };
|
|
20
26
|
// Only cache positive lookups. A null (no widgetUpstream registered yet
|
|
21
27
|
// or just cleared at teardown) must NOT stick in the cache: when the
|
|
22
28
|
// worker subsequently calls set_widget_upstream, the dashboard's first
|
|
@@ -42,6 +48,24 @@ export function applyInnerAuthHeaders(innerAuth, headers) {
|
|
|
42
48
|
// query auth does not touch headers
|
|
43
49
|
return headers;
|
|
44
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Drop the browser `Origin` header before forwarding to the widget upstream.
|
|
53
|
+
*
|
|
54
|
+
* The upstream runs on loopback and is reachable only through this authenticated
|
|
55
|
+
* proxy, but @fastify/reply-from rewrites the outgoing `Host` to the loopback
|
|
56
|
+
* upstream while the browser's `Origin` still carries the parent page's origin.
|
|
57
|
+
* Strict upstreams (e.g. kimi-code) treat that `Origin` != `Host` mismatch as
|
|
58
|
+
* cross-origin and reject every Origin-bearing request — WebSocket handshakes
|
|
59
|
+
* (which always send `Origin`) and same-origin POSTs alike. Removing the header
|
|
60
|
+
* makes the upstream see a non-browser (originless) client and admit the
|
|
61
|
+
* request; the proxy stays the CSRF/auth trust boundary.
|
|
62
|
+
*/
|
|
63
|
+
export function stripEmbedderOrigin(headers) {
|
|
64
|
+
if (!('origin' in headers))
|
|
65
|
+
return headers;
|
|
66
|
+
const { origin: _origin, ...rest } = headers;
|
|
67
|
+
return rest;
|
|
68
|
+
}
|
|
45
69
|
export function applyInnerAuthQuery(innerAuth, url) {
|
|
46
70
|
if (!innerAuth || innerAuth.kind !== 'query')
|
|
47
71
|
return url;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-proxy-core.js","sourceRoot":"","sources":["../src/widget-proxy-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAW,MAAM,SAAS,CAAC;AAG5C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAM,EACN,MAAc,EACd,QAAgC,EAChC,SAAiB;IAEjB,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,YAAY,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;IAE7D,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;QAClE,oEAAoE;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC,OAAO,CAC5D,EAAE,GAAG,EAAE,GAAG,EAAE,EACZ,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"widget-proxy-core.js","sourceRoot":"","sources":["../src/widget-proxy-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-upstream-registry.d.ts","sourceRoot":"","sources":["../src/widget-upstream-registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"widget-upstream-registry.d.ts","sourceRoot":"","sources":["../src/widget-upstream-registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;IAI/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/D,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAOD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,sBAAsB,CA2B5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-upstream-registry.js","sourceRoot":"","sources":["../src/widget-upstream-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"widget-upstream-registry.js","sourceRoot":"","sources":["../src/widget-upstream-registry.ts"],"names":[],"mappings":"AA0BA,MAAM,UAAU,4BAA4B,CAAC,IAAuB;IAClE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE7C,SAAS,QAAQ,CAAC,SAAiB;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,GAAG,CAAC,SAAS;YACX,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;QACpC,CAAC;QACD,GAAG,CAAC,SAAS;YACX,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC;QAC3C,CAAC;QACD,GAAG,CAAC,SAAS,EAAE,KAAK;YAClB,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,UAAU,CAAC,SAAS;YAClB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "optio-api",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Server-side optio API with Fastify, Express, and Next.js adapters.",
|
|
6
6
|
"repository": {
|
|
@@ -45,12 +45,13 @@
|
|
|
45
45
|
"@clamator/over-redis": "^0.1.9",
|
|
46
46
|
"@clamator/protocol": "^0.1.9",
|
|
47
47
|
"@fastify/http-proxy": "^11.0.0",
|
|
48
|
+
"@fastify/multipart": "^9.4.0",
|
|
48
49
|
"@ts-rest/core": "^3.51.0",
|
|
49
50
|
"ioredis": "^5.4.0",
|
|
50
51
|
"mongodb": "^6.12.0",
|
|
51
52
|
"zod": "^3",
|
|
52
53
|
"filtrum-mongo": "0.1.1",
|
|
53
|
-
"optio-contracts": "0.
|
|
54
|
+
"optio-contracts": "0.4.0"
|
|
54
55
|
},
|
|
55
56
|
"optionalDependencies": {
|
|
56
57
|
"@ts-rest/fastify": "^3.51.0"
|