conductor-oss 0.58.37 → 0.58.39
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/package.json +5 -5
- package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +6 -6
- package/web/.next/standalone/packages/web/.next/build-manifest.json +3 -3
- package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/packages/web/.next/react-loadable-manifest.json +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/embed/terminal/[id]/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/embed/terminal/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/embed/terminal/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app-paths-manifest.json +6 -6
- package/web/.next/standalone/packages/web/.next/server/chunks/1121.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/2089.js +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/2553.js +1 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/3364.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/3990.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/60.js +1 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/6034.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/9455.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/middleware-build-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/next-font-manifest.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/pages/500.html +1 -1
- package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/4443.611b659fd26e567b.js +1 -0
- package/web/.next/{static/chunks/5493-b8c806de7c81318c.js → standalone/packages/web/.next/static/chunks/5493-22c064a41611d50c.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/7649.96df81c61d4eeaaa.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{8510-b845550c7351c18b.js → 8510-eb40f26ac825fca3.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/883-bd3ca76b76fb6a07.js +3 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/app/layout-40d6d4ccf615ee62.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{webpack-cf58d33be3ff30c5.js → webpack-b8e6b1ccb85a3faa.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/css/{d31189a7bb85881e.css → 186566065c214a57.css} +1 -1
- package/web/.next/static/chunks/4443.611b659fd26e567b.js +1 -0
- package/web/.next/{standalone/packages/web/.next/static/chunks/5493-b8c806de7c81318c.js → static/chunks/5493-22c064a41611d50c.js} +1 -1
- package/web/.next/static/chunks/7649.96df81c61d4eeaaa.js +1 -0
- package/web/.next/static/chunks/{8510-b845550c7351c18b.js → 8510-eb40f26ac825fca3.js} +1 -1
- package/web/.next/static/chunks/883-bd3ca76b76fb6a07.js +3 -0
- package/web/.next/static/chunks/app/layout-40d6d4ccf615ee62.js +1 -0
- package/web/.next/static/chunks/{webpack-cf58d33be3ff30c5.js → webpack-b8e6b1ccb85a3faa.js} +1 -1
- package/web/.next/static/css/{d31189a7bb85881e.css → 186566065c214a57.css} +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/2627.js +0 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/3220.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/4443.084ab5c791423380.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/6775.e83614d84164bbb5.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/883-7ade258e2e6bccb9.js +0 -3
- package/web/.next/standalone/packages/web/.next/static/chunks/app/layout-19c1a3557805d829.js +0 -1
- package/web/.next/static/chunks/4443.084ab5c791423380.js +0 -1
- package/web/.next/static/chunks/6775.e83614d84164bbb5.js +0 -1
- package/web/.next/static/chunks/883-7ade258e2e6bccb9.js +0 -3
- package/web/.next/static/chunks/app/layout-19c1a3557805d829.js +0 -1
- /package/web/.next/standalone/packages/web/.next/static/{qKk4GuF2_QNY_NALB0_0T → W7Ix_gUgmq_cKa_iZEKIf}/_buildManifest.js +0 -0
- /package/web/.next/standalone/packages/web/.next/static/{qKk4GuF2_QNY_NALB0_0T → W7Ix_gUgmq_cKa_iZEKIf}/_ssgManifest.js +0 -0
- /package/web/.next/static/{qKk4GuF2_QNY_NALB0_0T → W7Ix_gUgmq_cKa_iZEKIf}/_buildManifest.js +0 -0
- /package/web/.next/static/{qKk4GuF2_QNY_NALB0_0T → W7Ix_gUgmq_cKa_iZEKIf}/_ssgManifest.js +0 -0
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
"/icon.svg/route": "app/icon.svg/route.js",
|
|
5
5
|
"/api/agents/route": "app/api/agents/route.js",
|
|
6
6
|
"/api/access/route": "app/api/access/route.js",
|
|
7
|
-
"/api/app-update/route": "app/api/app-update/route.js",
|
|
8
7
|
"/api/attachments/route": "app/api/attachments/route.js",
|
|
9
|
-
"/api/
|
|
8
|
+
"/api/app-update/route": "app/api/app-update/route.js",
|
|
10
9
|
"/__clerk/[[...path]]/route": "app/__clerk/[[...path]]/route.js",
|
|
10
|
+
"/api/boards/comments/route": "app/api/boards/comments/route.js",
|
|
11
11
|
"/api/boards/route": "app/api/boards/route.js",
|
|
12
|
-
"/api/bridge/bridges/[bridgeId]/route": "app/api/bridge/bridges/[bridgeId]/route.js",
|
|
13
12
|
"/api/auth/profile/route": "app/api/auth/profile/route.js",
|
|
13
|
+
"/api/bridge/bridges/[bridgeId]/route": "app/api/bridge/bridges/[bridgeId]/route.js",
|
|
14
14
|
"/api/bridge/bridges/route": "app/api/bridge/bridges/route.js",
|
|
15
15
|
"/api/bridge/devices/[deviceId]/app-update/route": "app/api/bridge/devices/[deviceId]/app-update/route.js",
|
|
16
16
|
"/api/bridge/devices/[deviceId]/repair/route": "app/api/bridge/devices/[deviceId]/repair/route.js",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"/api/projects/[id]/dispatcher/integration/route": "app/api/projects/[id]/dispatcher/integration/route.js",
|
|
42
42
|
"/api/projects/[id]/dispatcher/interrupt/route": "app/api/projects/[id]/dispatcher/interrupt/route.js",
|
|
43
43
|
"/api/projects/[id]/dispatcher/preferences/route": "app/api/projects/[id]/dispatcher/preferences/route.js",
|
|
44
|
-
"/api/projects/[id]/dispatcher/send/route": "app/api/projects/[id]/dispatcher/send/route.js",
|
|
45
44
|
"/api/projects/[id]/dispatcher/route": "app/api/projects/[id]/dispatcher/route.js",
|
|
45
|
+
"/api/projects/[id]/dispatcher/send/route": "app/api/projects/[id]/dispatcher/send/route.js",
|
|
46
46
|
"/api/projects/[id]/dispatcher/tasks/[task]/handoff/route": "app/api/projects/[id]/dispatcher/tasks/[task]/handoff/route.js",
|
|
47
47
|
"/api/projects/[id]/dispatcher/tasks/[task]/route": "app/api/projects/[id]/dispatcher/tasks/[task]/route.js",
|
|
48
48
|
"/api/projects/[id]/dispatcher/tasks/route": "app/api/projects/[id]/dispatcher/tasks/route.js",
|
|
@@ -64,11 +64,11 @@
|
|
|
64
64
|
"/api/sessions/[id]/output/stream/route": "app/api/sessions/[id]/output/stream/route.js",
|
|
65
65
|
"/api/sessions/[id]/preview/dom/route": "app/api/sessions/[id]/preview/dom/route.js",
|
|
66
66
|
"/api/sessions/[id]/restore/route": "app/api/sessions/[id]/restore/route.js",
|
|
67
|
-
"/api/sessions/[id]/route": "app/api/sessions/[id]/route.js",
|
|
68
67
|
"/api/sessions/[id]/preview/screenshot/route": "app/api/sessions/[id]/preview/screenshot/route.js",
|
|
68
|
+
"/api/sessions/[id]/route": "app/api/sessions/[id]/route.js",
|
|
69
69
|
"/api/sessions/[id]/preview/route": "app/api/sessions/[id]/preview/route.js",
|
|
70
|
-
"/api/sessions/[id]/terminal/relay/route": "app/api/sessions/[id]/terminal/relay/route.js",
|
|
71
70
|
"/api/sessions/[id]/terminal/snapshot/route": "app/api/sessions/[id]/terminal/snapshot/route.js",
|
|
71
|
+
"/api/sessions/[id]/terminal/relay/route": "app/api/sessions/[id]/terminal/relay/route.js",
|
|
72
72
|
"/api/sessions/[id]/terminal/token/route": "app/api/sessions/[id]/terminal/token/route.js",
|
|
73
73
|
"/api/sessions/[id]/terminal/ttyd/token/route": "app/api/sessions/[id]/terminal/ttyd/token/route.js",
|
|
74
74
|
"/api/sessions/[id]/terminal/ttyd/route": "app/api/sessions/[id]/terminal/ttyd/route.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=1121,exports.ids=[1121],exports.modules={14458:(a,b,c)=>{c.d(b,{IJ:()=>e,S5:()=>d,Xt:()=>f});let d="Bridge relay URL is not configured",e="RELAY_JWT_SECRET is required for bridge relay access";function f(a){let b=a?.trim();return b===d||b===e}},46224:(a,b,c)=>{c.d(b,{P:()=>f,y:()=>e});var d=c(14458);function e(){let a=function(a){let b=a?.trim();if(!b)return null;try{let a=new URL(b);if("http:"!==a.protocol&&"https:"!==a.protocol)return null;return a.toString()}catch{return null}}(process.env.CONDUCTOR_BRIDGE_RELAY_URL??process.env.NEXT_PUBLIC_CONDUCTOR_BRIDGE_RELAY_URL);return a||null}function f(){let a=e();if(!a)throw Error(d.S5);return a}},65053:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(79717),e=c(78256),f=c(70447);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},85689:(a,b,c)=>{c.d(b,{Rq:()=>x,hF:()=>y,bD:()=>v,D8:()=>w});var d=c(70611),e=c(77042),f=c(46217),g=c(40115);async function h(a,b,c){let d=await (0,g.j)(a,b,"sign");return(0,f.O)(a,d),new Uint8Array(await crypto.subtle.sign((0,e.B)(a,d.algorithm),d,c))}var i=c(1431),j=c(26404),k=c(52416),l=c(97021),m=c(91449),n=c(31321);class o{#a;#b;#c;constructor(a){if(!(a instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#a=a}setProtectedHeader(a){if(this.#b)throw TypeError("setProtectedHeader can only be called once");return this.#b=a,this}setUnprotectedHeader(a){if(this.#c)throw TypeError("setUnprotectedHeader can only be called once");return this.#c=a,this}async sign(a,b){let c,e,f,g;if(!this.#b&&!this.#c)throw new j.Ye("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!(0,i.f)(this.#b,this.#c))throw new j.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let o={...this.#b,...this.#c},p=(0,m.n)(j.Ye,new Map([["b64",!0]]),b?.crit,this.#b,o),q=!0;if(p.has("b64")&&"boolean"!=typeof(q=this.#b.b64))throw new j.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:r}=o;if("string"!=typeof r||!r)throw new j.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');(0,l.y)(r,a,"sign"),q?(c=(0,d.l)(this.#a),e=(0,k.lF)(c)):(e=this.#a,c=""),this.#b?(f=(0,d.l)(JSON.stringify(this.#b)),g=(0,k.lF)(f)):(f="",g=new Uint8Array);let s=(0,k.xW)(g,(0,k.lF)("."),e),t=await (0,n.l)(a,r),u=await h(r,t,s),v={signature:(0,d.l)(u),payload:c};return this.#c&&(v.header=this.#c),this.#b&&(v.protected=f),v}}class p{#d;constructor(a){this.#d=new o(a)}setProtectedHeader(a){return this.#d.setProtectedHeader(a),this}async sign(a,b){let c=await this.#d.sign(a,b);if(void 0===c.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${c.protected}.${c.payload}.${c.signature}`}}var q=c(45200);class r{#b;#e;constructor(a={}){this.#e=new q.cE(a)}setIssuer(a){return this.#e.iss=a,this}setSubject(a){return this.#e.sub=a,this}setAudience(a){return this.#e.aud=a,this}setJti(a){return this.#e.jti=a,this}setNotBefore(a){return this.#e.nbf=a,this}setExpirationTime(a){return this.#e.exp=a,this}setIssuedAt(a){return this.#e.iat=a,this}setProtectedHeader(a){return this.#b=a,this}async sign(a,b){let c=new p(this.#e.data());if(c.setProtectedHeader(this.#b),Array.isArray(this.#b?.crit)&&this.#b.crit.includes("b64")&&!1===this.#b.b64)throw new j.Dp("JWTs MUST NOT use unencoded payload");return c.sign(a,b)}}var s=c(32679),t=c(14458),u=c(46224);function v(a){let b=a.email?.trim().toLowerCase();return b||("local"===a.provider?"local-admin":null)}async function w(a,b,c="5m"){let d=a.trim();if(!d)throw Error("Bridge relay user id is required");let e=function(){let a=process.env.RELAY_JWT_SECRET?.trim();if(!a)throw Error(t.IJ);return a}();return await new r({sub:d,user_id:d,scope:b}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuer("conductor-dashboard").setAudience("conductor-relay").setIssuedAt().setExpirationTime(c).sign(new TextEncoder().encode(e))}async function x(a,b="dashboard-api"){var c;let d,e=await (0,s.ny)(a),f=v(e);if(!f)throw Error("Unable to resolve the dashboard user for the bridge relay.");return c=new Headers({Authorization:`Bearer ${await w(f,b)}`}),(d=f.trim())&&((c.set("x-conductor-proxy-authorized","true"),"local"===e.provider)?c.set("x-bridge-user-id",d):c.set("x-conductor-access-email",d)),c}function y(a,b){let c=new URL((0,u.P)());c.protocol="https:"===c.protocol?"wss:":"ws:",c.pathname=a,c.search="",c.hash="";let d=b?.trim();return d&&c.searchParams.set("jwt",d),c.toString()}},91752:(a,b,c)=>{c.d(b,{C0:()=>e,DW:()=>f,Vk:()=>h,YS:()=>i});let d="bridge:";function e(a){let b=a?.trim();return b&&b.length>0?b:null}function f(a){let b=a?.trim();if(!b||!b.startsWith(d))return null;let c=b.slice(d.length),f=c.indexOf(":");if(f<=0||f>=c.length-1)return null;let g=e(c.slice(0,f)),h=c.slice(f+1).trim();return g&&0!==h.length?{bridgeId:g,sessionId:h}:null}function g(a){return!!a&&"object"==typeof a&&"string"==typeof a.id&&"string"==typeof a.projectId}function h(a,b){var c;return{...a,id:(c=a.id,`${d}${b}:${c}`),bridgeId:b,bridgeConnected:!0}}function i(a,b){if(Array.isArray(a))return a.map(a=>g(a)?h(a,b):a);if(!a||"object"!=typeof a)return a;if(g(a))return h(a,b);let c={...a};return Array.isArray(a.sessions)&&(c.sessions=a.sessions.map(a=>g(a)?h(a,b):a)),g(a.session)&&(c.session=h(a.session,b)),c}},94842:(a,b,c)=>{c.d(b,{JX:()=>r,LN:()=>q,
|
|
1
|
+
"use strict";exports.id=1121,exports.ids=[1121],exports.modules={14458:(a,b,c)=>{c.d(b,{IJ:()=>e,S5:()=>d,Xt:()=>f});let d="Bridge relay URL is not configured",e="RELAY_JWT_SECRET is required for bridge relay access";function f(a){let b=a?.trim();return b===d||b===e}},46224:(a,b,c)=>{c.d(b,{P:()=>f,y:()=>e});var d=c(14458);function e(){let a=function(a){let b=a?.trim();if(!b)return null;try{let a=new URL(b);if("http:"!==a.protocol&&"https:"!==a.protocol)return null;return a.toString()}catch{return null}}(process.env.CONDUCTOR_BRIDGE_RELAY_URL??process.env.NEXT_PUBLIC_CONDUCTOR_BRIDGE_RELAY_URL);return a||null}function f(){let a=e();if(!a)throw Error(d.S5);return a}},65053:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(79717),e=c(78256),f=c(70447);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},85689:(a,b,c)=>{c.d(b,{Rq:()=>x,hF:()=>y,bD:()=>v,D8:()=>w});var d=c(70611),e=c(77042),f=c(46217),g=c(40115);async function h(a,b,c){let d=await (0,g.j)(a,b,"sign");return(0,f.O)(a,d),new Uint8Array(await crypto.subtle.sign((0,e.B)(a,d.algorithm),d,c))}var i=c(1431),j=c(26404),k=c(52416),l=c(97021),m=c(91449),n=c(31321);class o{#a;#b;#c;constructor(a){if(!(a instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#a=a}setProtectedHeader(a){if(this.#b)throw TypeError("setProtectedHeader can only be called once");return this.#b=a,this}setUnprotectedHeader(a){if(this.#c)throw TypeError("setUnprotectedHeader can only be called once");return this.#c=a,this}async sign(a,b){let c,e,f,g;if(!this.#b&&!this.#c)throw new j.Ye("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!(0,i.f)(this.#b,this.#c))throw new j.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let o={...this.#b,...this.#c},p=(0,m.n)(j.Ye,new Map([["b64",!0]]),b?.crit,this.#b,o),q=!0;if(p.has("b64")&&"boolean"!=typeof(q=this.#b.b64))throw new j.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:r}=o;if("string"!=typeof r||!r)throw new j.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');(0,l.y)(r,a,"sign"),q?(c=(0,d.l)(this.#a),e=(0,k.lF)(c)):(e=this.#a,c=""),this.#b?(f=(0,d.l)(JSON.stringify(this.#b)),g=(0,k.lF)(f)):(f="",g=new Uint8Array);let s=(0,k.xW)(g,(0,k.lF)("."),e),t=await (0,n.l)(a,r),u=await h(r,t,s),v={signature:(0,d.l)(u),payload:c};return this.#c&&(v.header=this.#c),this.#b&&(v.protected=f),v}}class p{#d;constructor(a){this.#d=new o(a)}setProtectedHeader(a){return this.#d.setProtectedHeader(a),this}async sign(a,b){let c=await this.#d.sign(a,b);if(void 0===c.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${c.protected}.${c.payload}.${c.signature}`}}var q=c(45200);class r{#b;#e;constructor(a={}){this.#e=new q.cE(a)}setIssuer(a){return this.#e.iss=a,this}setSubject(a){return this.#e.sub=a,this}setAudience(a){return this.#e.aud=a,this}setJti(a){return this.#e.jti=a,this}setNotBefore(a){return this.#e.nbf=a,this}setExpirationTime(a){return this.#e.exp=a,this}setIssuedAt(a){return this.#e.iat=a,this}setProtectedHeader(a){return this.#b=a,this}async sign(a,b){let c=new p(this.#e.data());if(c.setProtectedHeader(this.#b),Array.isArray(this.#b?.crit)&&this.#b.crit.includes("b64")&&!1===this.#b.b64)throw new j.Dp("JWTs MUST NOT use unencoded payload");return c.sign(a,b)}}var s=c(32679),t=c(14458),u=c(46224);function v(a){let b=a.email?.trim().toLowerCase();return b||("local"===a.provider?"local-admin":null)}async function w(a,b,c="5m"){let d=a.trim();if(!d)throw Error("Bridge relay user id is required");let e=function(){let a=process.env.RELAY_JWT_SECRET?.trim();if(!a)throw Error(t.IJ);return a}();return await new r({sub:d,user_id:d,scope:b}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuer("conductor-dashboard").setAudience("conductor-relay").setIssuedAt().setExpirationTime(c).sign(new TextEncoder().encode(e))}async function x(a,b="dashboard-api"){var c;let d,e=await (0,s.ny)(a),f=v(e);if(!f)throw Error("Unable to resolve the dashboard user for the bridge relay.");return c=new Headers({Authorization:`Bearer ${await w(f,b)}`}),(d=f.trim())&&((c.set("x-conductor-proxy-authorized","true"),"local"===e.provider)?c.set("x-bridge-user-id",d):c.set("x-conductor-access-email",d)),c}function y(a,b){let c=new URL((0,u.P)());c.protocol="https:"===c.protocol?"wss:":"ws:",c.pathname=a,c.search="",c.hash="";let d=b?.trim();return d&&c.searchParams.set("jwt",d),c.toString()}},91752:(a,b,c)=>{c.d(b,{C0:()=>e,DW:()=>f,Vk:()=>h,YS:()=>i});let d="bridge:";function e(a){let b=a?.trim();return b&&b.length>0?b:null}function f(a){let b=a?.trim();if(!b||!b.startsWith(d))return null;let c=b.slice(d.length),f=c.indexOf(":");if(f<=0||f>=c.length-1)return null;let g=e(c.slice(0,f)),h=c.slice(f+1).trim();return g&&0!==h.length?{bridgeId:g,sessionId:h}:null}function g(a){return!!a&&"object"==typeof a&&"string"==typeof a.id&&"string"==typeof a.projectId}function h(a,b){var c;return{...a,id:(c=a.id,`${d}${b}:${c}`),bridgeId:b,bridgeConnected:!0}}function i(a,b){if(Array.isArray(a))return a.map(a=>g(a)?h(a,b):a);if(!a||"object"!=typeof a)return a;if(g(a))return h(a,b);let c={...a};return Array.isArray(a.sessions)&&(c.sessions=a.sessions.map(a=>g(a)?h(a,b):a)),g(a.session)&&(c.session=h(a.session,b)),c}},94842:(a,b,c)=>{c.d(b,{JX:()=>r,LN:()=>q,nl:()=>o,oV:()=>n,vZ:()=>s});var d=c(77873),e=c(32679),f=c(85689),g=c(14458),h=c(46224),i=c(91752);let j=new Set(["connection","content-length","content-encoding","keep-alive","transfer-encoding"]);function k(a){let b=new Headers;return a.headers.forEach((a,c)=>{j.has(c.toLowerCase())||b.set(c,a)}),b}async function l(a,b){if(void 0!==b)return b;if("GET"===a.method||"HEAD"===a.method)return;let c=a.headers.get("content-type")?.trim()??"";if(c.toLowerCase().includes("application/json")){let b=await a.text();if(0===b.trim().length)return;try{return JSON.parse(b)}catch{return b}}let d=await a.arrayBuffer();if(0!==d.byteLength)return{$bridgeRequest:{kind:"bytes",base64:Buffer.from(d).toString("base64"),contentType:c}}}function m(){return null!==(0,h.y)()}function n(a){let b=new URL(a.url).searchParams;return(0,i.C0)(b.get("bridgeId")??b.get("bridge"))}async function o(a,b,c,d={}){let e=(0,h.P)(),g=new URL(a.url),i=new URL(`/api/devices/${encodeURIComponent(b)}/proxy`,e),j=await (0,f.Rq)(a);j.set("Content-Type","application/json"),j.set("x-forwarded-proto",g.protocol.replace(":","")),j.set("x-forwarded-host",g.host);let m=d.pathOverride??`${c}${g.search}`,n={method:a.method,path:m,body:await l(a,d.bodyOverride)},p=await fetch(i,{method:"POST",headers:j,body:JSON.stringify(n),cache:"no-store",redirect:"manual"});if(!d.responseMapper||!(p.headers.get("content-type")?.toLowerCase()??"").includes("application/json"))return new Response(p.body,{status:p.status,statusText:p.statusText,headers:k(p)});let q=await p.json().catch(()=>null),r=d.responseMapper(q,b),s=k(p);return s.set("Content-Type","application/json"),new Response(JSON.stringify(r),{status:p.status,statusText:p.statusText,headers:s})}async function p(a,b,c){let d,e=await o(a,b,c);return e.ok&&e.body&&e.headers.get("content-type")?.toLowerCase().includes("text/event-stream")?new Response(e.body,{status:e.status,statusText:e.statusText,headers:((d=k(e)).set("Content-Type","text/event-stream"),d.set("Cache-Control","no-cache, no-transform"),d.set("Connection","keep-alive"),d.set("X-Accel-Buffering","no"),d)}):e}async function q(a,b,c){let d=(0,h.P)(),e=new URL(`/api/devices/${encodeURIComponent(a)}/preview`,d),f=new Headers(b);f.set("Content-Type","application/json");let g=await fetch(e,{method:"POST",headers:f,body:JSON.stringify({session_id:c.sessionId,method:c.method,url:c.url,headers:c.headers??{},body_base64:c.bodyBase64??null}),cache:"no-store",redirect:"manual"}),i=await g.json().catch(()=>null);if(!g.ok)throw Error(i&&"object"==typeof i&&"error"in i&&i.error?i.error:"Failed to reach paired device preview");let j=i&&"object"==typeof i?i:null;return{status:"number"==typeof j?.status?j.status:502,headers:j?.headers&&"object"==typeof j.headers?j.headers:{},bodyBase64:"string"==typeof j?.body_base64||j?.body_base64===null?j.body_base64:void 0}}async function r(a,b,c,f={}){let h=await (0,e.sB)(a,f.role??"viewer");if(h)return h;if(f.requireActionGuard){let b=(0,e.G1)(a);if(b)return b}if(!m())return d.NextResponse.json({error:"Bridge relay URL is not configured"},{status:503});try{return await o(a,b,c,f)}catch(b){let a=b instanceof Error?b.message:"Failed to reach paired device";return d.NextResponse.json({error:a},{status:(0,g.Xt)(a)?503:502})}}async function s(a,b,c,f={}){let h=await (0,e.sB)(a,f.role??"viewer");if(h)return h;if(f.requireActionGuard){let b=(0,e.G1)(a);if(b)return b}if(!m())return d.NextResponse.json({error:"Bridge relay URL is not configured"},{status:503});try{return await p(a,b,c)}catch(b){let a=b instanceof Error?b.message:"Failed to reach paired device";return d.NextResponse.json({error:a},{status:(0,g.Xt)(a)?503:502})}}},98648:(a,b,c)=>{a.exports=c(44870)}};
|