conductor-oss 0.49.7 → 0.49.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.
Files changed (88) hide show
  1. package/package.json +5 -5
  2. package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
  3. package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +5 -5
  4. package/web/.next/standalone/packages/web/.next/build-manifest.json +3 -3
  5. package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
  6. package/web/.next/standalone/packages/web/.next/react-loadable-manifest.json +4 -4
  7. package/web/.next/standalone/packages/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +1 -1
  9. package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
  10. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js +1 -1
  17. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/token/route.js +1 -91
  20. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/token/route.js.nft.json +1 -1
  21. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/ttyd/route.js +1 -91
  22. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/ttyd/route.js.nft.json +1 -1
  23. package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page.js +1 -1
  24. package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page.js.nft.json +1 -1
  25. package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page_client-reference-manifest.js +1 -1
  26. package/web/.next/standalone/packages/web/.next/server/app/page.js +1 -1
  27. package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
  28. package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
  29. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js +1 -1
  30. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  31. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  32. package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page.js +1 -1
  33. package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page.js.nft.json +1 -1
  34. package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page_client-reference-manifest.js +1 -1
  35. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js +1 -1
  36. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
  37. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
  38. package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page.js +1 -1
  39. package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page.js.nft.json +1 -1
  40. package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page_client-reference-manifest.js +1 -1
  41. package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page.js +1 -1
  42. package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page.js.nft.json +1 -1
  43. package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page_client-reference-manifest.js +1 -1
  44. package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js +1 -1
  45. package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
  46. package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
  47. package/web/.next/standalone/packages/web/.next/server/app-paths-manifest.json +5 -5
  48. package/web/.next/standalone/packages/web/.next/server/chunks/173.js +1 -0
  49. package/web/.next/standalone/packages/web/.next/server/chunks/2089.js +3 -3
  50. package/web/.next/standalone/packages/web/.next/server/chunks/406.js +1 -1
  51. package/web/.next/standalone/packages/web/.next/server/chunks/8039.js +115 -0
  52. package/web/.next/standalone/packages/web/.next/server/chunks/9455.js +1 -1
  53. package/web/.next/standalone/packages/web/.next/server/chunks/9831.js +1 -0
  54. package/web/.next/standalone/packages/web/.next/server/middleware-build-manifest.js +1 -1
  55. package/web/.next/standalone/packages/web/.next/server/middleware-react-loadable-manifest.js +1 -1
  56. package/web/.next/standalone/packages/web/.next/server/pages/500.html +1 -1
  57. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
  58. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +1 -1
  59. package/web/.next/standalone/packages/web/.next/static/chunks/1753.618a457a18d8462b.js +1 -0
  60. package/web/.next/standalone/packages/web/.next/static/chunks/4443.b5a220e897f4e7e0.js +1 -0
  61. package/web/.next/standalone/packages/web/.next/static/chunks/{8510-240538694f05a507.js → 8510-9b342f26d6d160a4.js} +1 -1
  62. package/web/.next/standalone/packages/web/.next/static/chunks/9542-fca135db513cd1ae.js +1 -0
  63. package/web/.next/standalone/packages/web/.next/static/chunks/app/layout-c1f50535f1f114d3.js +1 -0
  64. package/web/.next/standalone/packages/web/.next/static/chunks/{webpack-8785239ba7f79d78.js → webpack-a6d14995c8816818.js} +1 -1
  65. package/web/.next/standalone/packages/web/.next/static/css/521362a4d6a5f8e7.css +1 -0
  66. package/web/.next/static/chunks/1753.618a457a18d8462b.js +1 -0
  67. package/web/.next/static/chunks/4443.b5a220e897f4e7e0.js +1 -0
  68. package/web/.next/static/chunks/{8510-240538694f05a507.js → 8510-9b342f26d6d160a4.js} +1 -1
  69. package/web/.next/static/chunks/9542-fca135db513cd1ae.js +1 -0
  70. package/web/.next/static/chunks/app/layout-c1f50535f1f114d3.js +1 -0
  71. package/web/.next/static/chunks/{webpack-8785239ba7f79d78.js → webpack-a6d14995c8816818.js} +1 -1
  72. package/web/.next/static/css/521362a4d6a5f8e7.css +1 -0
  73. package/web/.next/standalone/packages/web/.next/server/chunks/6577.js +0 -1
  74. package/web/.next/standalone/packages/web/.next/server/chunks/6606.js +0 -1
  75. package/web/.next/standalone/packages/web/.next/static/chunks/1672.a3e3b1fc6f8f67b9.js +0 -1
  76. package/web/.next/standalone/packages/web/.next/static/chunks/4443.207f129a6bf96f38.js +0 -1
  77. package/web/.next/standalone/packages/web/.next/static/chunks/9542-6c47c9d4a5b3510e.js +0 -1
  78. package/web/.next/standalone/packages/web/.next/static/chunks/app/layout-f9b2a86d836ffd4e.js +0 -1
  79. package/web/.next/standalone/packages/web/.next/static/css/10f45cb100c0cf66.css +0 -1
  80. package/web/.next/static/chunks/1672.a3e3b1fc6f8f67b9.js +0 -1
  81. package/web/.next/static/chunks/4443.207f129a6bf96f38.js +0 -1
  82. package/web/.next/static/chunks/9542-6c47c9d4a5b3510e.js +0 -1
  83. package/web/.next/static/chunks/app/layout-f9b2a86d836ffd4e.js +0 -1
  84. package/web/.next/static/css/10f45cb100c0cf66.css +0 -1
  85. /package/web/.next/standalone/packages/web/.next/static/{pbP54IuC8nY52fx1W6p8w → gdURF6tHQaEeCJhccCwMX}/_buildManifest.js +0 -0
  86. /package/web/.next/standalone/packages/web/.next/static/{pbP54IuC8nY52fx1W6p8w → gdURF6tHQaEeCJhccCwMX}/_ssgManifest.js +0 -0
  87. /package/web/.next/static/{pbP54IuC8nY52fx1W6p8w → gdURF6tHQaEeCJhccCwMX}/_buildManifest.js +0 -0
  88. /package/web/.next/static/{pbP54IuC8nY52fx1W6p8w → gdURF6tHQaEeCJhccCwMX}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=406,exports.ids=[406],exports.modules={60790:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(37303).A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},70406:(a,b,c)=>{c.r(b),c.d(b,{SessionTerminal:()=>t});var d=c(92692),e=c(71943);let f=(0,c(37303).A)("square-stop",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]);var g=c(64583),h=c(75185),i=c(60790),j=c(2625),k=c(76680),l=c(71277),m=c(1071),n=c(46818);let o=new Set(["queued","spawning","running","working","needs_input","stuck"]),p=new Set(["done","needs_input","stuck","errored","terminated","killed"]);c(62465);let q=new Set(["archived","killed","terminated","restored"]);async function r(a,b,c){let d=await fetch((0,n.S)(`/api/sessions/${encodeURIComponent(a)}/keys`,c),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keys:b})});if(!d.ok){let a=await d.json().catch(()=>null);throw Error(a?.error??`Failed to queue terminal input (${d.status})`)}}function s(a){let{sessionId:b,bridgeId:c,sessionState:s,runtimeMode:t,pendingInsert:u,immersiveMobileMode:v=!1,onPendingInsertConsumed:w}=a,x=(0,l.useRef)(null);(0,l.useRef)(0);let y=(0,l.useRef)(0),z=(0,l.useRef)(null);(0,l.useRef)(!1),(0,l.useRef)(null),(0,l.useRef)(0);let A=(0,l.useMemo)(()=>s.trim().toLowerCase(),[s]),B="ttyd"===(t?.trim().toLowerCase()??null),C=B?!q.has(A):o.has(A),D=!B&&!v&&p.has(A),[E,F]=(0,l.useState)(null),[G,H]=(0,l.useState)(null),[I,J]=(0,l.useState)(C),[K,L]=(0,l.useState)(null),[M,N]=(0,l.useState)(!1),[O,P]=(0,l.useState)(0),[Q,R]=(0,l.useState)(""),[S,T]=(0,l.useState)(!1),[U,V]=(0,l.useState)(null),[W,X]=(0,l.useState)(null),[Y,Z]=(0,l.useState)(!1);(0,l.useRef)(null);let $=(0,l.useRef)(!1),_=(0,l.useCallback)(()=>{let a=function(a){if(!a)return null;try{let b=new URL(a).searchParams.get("token")?.trim();return b&&b.length>0?b:null}catch{return null}}(G);a&&function(a,b){if(!a||!b||null===a.contentWindow)return;let c="*";try{c=new URL(a.src).origin}catch{}a.contentWindow.postMessage({type:"conductor-ttyd-auth-token",token:b},c)}(z.current?.querySelector("iframe"),a)},[G]);(0,l.useCallback)(()=>{},[C,_]);let aa=(0,l.useCallback)(async()=>{let a=Q.trim();if(0!==a.length&&!S){T(!0),V(null);try{let d=await fetch((0,n.S)(`/api/sessions/${encodeURIComponent(b)}/actions`,c),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"send",message:a})});if(!d.ok){let a=await d.json().catch(()=>null);throw Error(a?.error??`Failed to send message (${d.status})`)}R(""),x.current?.focus()}catch(a){V(a instanceof Error?a.message:"Failed to send message")}finally{T(!1)}}},[c,Q,S,b]);(0,l.useCallback)(async()=>{try{let a=await navigator.clipboard.readText();a&&await r(b,a,c)}catch{}},[c,b]);let ab=(0,l.useCallback)(async()=>{await r(b,"\x03",c)},[c,b]),ac=(0,l.useCallback)(()=>{z.current},[]),ad=(0,l.useCallback)(()=>{L(null),y.current=0,$.current=!0,P(a=>a+1)},[]),ae=C?"Connecting live terminal":D?"Session is waiting for input":"Live terminal is not active",af=K??(C?"Reconnecting to the existing ttyd terminal.":B?"This ttyd terminal is no longer attached. It only closes after an explicit kill or archive.":D?"Send a follow-up below to relaunch the agent in a fresh ttyd terminal.":`Session status is \`${A}\`. Interactive ttyd terminals only run while the agent is active.`),ag=G??E??void 0;return(0,d.jsxs)("div",{className:v?"group/terminal relative flex min-h-0 min-w-0 w-full flex-1 flex-col overflow-hidden bg-[#060404]":"group/terminal relative flex min-h-0 min-w-0 w-full flex-1 flex-col overflow-hidden rounded-none border-0 bg-[#060404] lg:rounded-[14px] lg:border lg:border-white/10 lg:shadow-[inset_0_1px_0_rgba(255,255,255,0.04)]",children:[(0,d.jsxs)("div",{className:"absolute right-2 top-2 z-10 flex items-center gap-2 sm:right-3 sm:top-3",children:[ag?(0,d.jsx)("a",{href:ag,target:"_blank",rel:"noreferrer",className:"inline-flex h-9 w-9 items-center justify-center rounded-full border border-white/10 bg-[#141010]/92 text-[#c9c0b7] backdrop-blur-sm transition hover:bg-[#201818] sm:h-7 sm:w-7","aria-label":"Open ttyd terminal in a new tab",children:(0,d.jsx)(e.A,{className:"h-3.5 w-3.5"})}):null,null,(0,d.jsx)(m.$,{type:"button",size:"icon",variant:"ghost",className:"h-9 w-9 rounded-full border border-white/10 bg-[#141010]/92 text-[#c9c0b7] backdrop-blur-sm hover:bg-[#201818] sm:h-7 sm:w-7",onClick:ab,"aria-label":"Soft stop (Ctrl+C)",children:(0,d.jsx)(f,{className:"h-3.5 w-3.5"})}),(0,d.jsx)(m.$,{type:"button",size:"icon",variant:"ghost",className:"h-9 w-9 rounded-full border border-white/10 bg-[#141010]/92 text-[#c9c0b7] backdrop-blur-sm hover:bg-[#201818] sm:h-7 sm:w-7",onClick:ad,"aria-label":"Reload ttyd terminal",children:I?(0,d.jsx)(g.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,d.jsx)(h.A,{className:"h-3.5 w-3.5"})})]}),(0,d.jsx)("div",{className:v?"min-h-0 min-w-0 h-0 flex-1 overflow-hidden px-0 pb-[env(safe-area-inset-bottom)] pt-0 w-full":"min-h-0 min-w-0 h-0 flex-1 overflow-hidden px-0.5 pb-0 pt-0.5 lg:px-1.5 lg:pb-1 lg:pt-3 w-full",children:C&&E?(0,d.jsxs)("div",{ref:z,className:"relative flex h-full min-h-0 w-full flex-1 flex-col overflow-hidden rounded-[10px] bg-[#060404] pb-[env(safe-area-inset-bottom)] transition-[height] duration-150 ease-out",children:[M?null:(0,d.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-[#060404]",children:(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-[#141010]/92 px-3 py-2 text-[12px] text-[#c9c0b7] backdrop-blur-sm",children:[(0,d.jsx)(g.A,{className:"h-3.5 w-3.5 animate-spin"}),(0,d.jsx)("span",{children:"Loading ttyd terminal…"})]})}),(0,d.jsx)("iframe",{title:`ttyd terminal for ${b}`,src:E,className:"block h-full min-h-0 w-full flex-1 border-0 bg-[#060404]",allow:"clipboard-read; clipboard-write",loading:"eager",onLoad:()=>{N(!0),L(null),ac(),_()}},b)]}):(0,d.jsx)("div",{className:"flex h-full items-center justify-center p-4",children:(0,d.jsx)("div",{className:"max-w-lg rounded-[16px] border border-white/10 bg-[#141010]/92 p-5 text-[#efe8e1] shadow-[0_24px_48px_rgba(0,0,0,0.34)]",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("div",{className:"mt-0.5 rounded-full border border-white/10 bg-[#201818] p-2 text-[#c9c0b7]",children:K?(0,d.jsx)(i.A,{className:"h-4 w-4"}):(0,d.jsx)(g.A,{className:`h-4 w-4 ${I?"animate-spin":""}`})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("div",{className:"text-[14px] font-medium",children:ae}),(0,d.jsx)("div",{className:"mt-1 text-[12px] leading-5 text-[#a79c94]",children:af}),ag?(0,d.jsx)("div",{className:"mt-3",children:(0,d.jsx)("a",{href:ag,target:"_blank",rel:"noreferrer",className:"text-[12px] text-[#d7c6b7] underline underline-offset-4",children:"Open the ttyd terminal directly"})}):null]})]})})})}),!D&&W?(0,d.jsx)("div",{className:"absolute inset-x-0 bottom-0 z-10 border-t border-white/12 bg-[#161212] px-3 py-2 text-[11px] text-[#ffb39e] backdrop-blur-sm [padding-bottom:env(safe-area-inset-bottom)]",children:(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(i.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:W}),(0,d.jsx)("button",{type:"button",className:"ml-auto shrink-0 text-[#8e847d] hover:text-[#c9c0b7]",onClick:()=>X(null),children:(0,d.jsx)(j.A,{className:"h-3 w-3"})})]})}):null,D?(0,d.jsxs)("div",{className:"absolute inset-x-0 bottom-0 z-10 border-t border-white/12 bg-[#161212] backdrop-blur-sm [padding-bottom:env(safe-area-inset-bottom)]",children:[W?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pt-1.5 text-[11px] text-[#ffb39e]",children:[(0,d.jsx)(i.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:W}),(0,d.jsx)("button",{type:"button",className:"ml-auto shrink-0 text-[#8e847d] hover:text-[#c9c0b7]",onClick:()=>X(null),children:(0,d.jsx)(j.A,{className:"h-3 w-3"})})]}):null,U?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pt-1.5 text-[11px] text-[#ff8f7a]",children:[(0,d.jsx)(i.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:U}),(0,d.jsx)("button",{type:"button",className:"ml-auto shrink-0 text-[#8e847d] hover:text-[#c9c0b7]",onClick:()=>V(null),children:(0,d.jsx)(j.A,{className:"h-3 w-3"})})]}):null,(0,d.jsxs)("form",{onSubmit:a=>{a.preventDefault(),aa()},className:"flex items-center gap-2 px-2 py-2 lg:px-3",children:[(0,d.jsx)("input",{ref:x,type:"text",value:Q,onChange:a=>R(a.target.value),placeholder:"Send a follow-up message…",enterKeyHint:"done",disabled:S,className:"h-8 min-w-0 flex-1 rounded-md border border-white/10 bg-[#0c0808] px-2.5 text-[12px] text-[#efe8e1] outline-none placeholder:text-[#7d746e] focus:border-white/20 disabled:opacity-50",onKeyDown:a=>{"Escape"===a.key&&(a.preventDefault(),a.currentTarget.blur())}}),(0,d.jsx)(m.$,{type:"submit",size:"icon",variant:"ghost",disabled:S||0===Q.trim().length,className:"h-8 w-8 shrink-0 rounded-md border border-white/10 bg-[#0c0808] text-[#c9c0b7] hover:bg-[#201818] disabled:opacity-30","aria-label":"Send message",children:S?(0,d.jsx)(g.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,d.jsx)(k.A,{className:"h-3.5 w-3.5"})})]})]}):null]})}let t=(0,l.memo)(function(a){return(0,d.jsx)(s,{...a})},function(a,b){var c,d;return a.sessionId===b.sessionId&&a.projectId===b.projectId&&a.bridgeId===b.bridgeId&&a.sessionState===b.sessionState&&a.runtimeMode===b.runtimeMode&&a.immersiveMobileMode===b.immersiveMobileMode&&((c=a.pendingInsert)===(d=b.pendingInsert)||!!c&&!!d&&c.nonce===d.nonce&&c.inlineText===d.inlineText)})},76680:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(37303).A)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])}};
1
+ "use strict";exports.id=406,exports.ids=[406],exports.modules={60790:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(37303).A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},70406:(a,b,c)=>{c.r(b),c.d(b,{SessionTerminal:()=>t});var d=c(92692),e=c(71943);let f=(0,c(37303).A)("square-stop",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]);var g=c(64583),h=c(75185),i=c(60790),j=c(2625),k=c(76680),l=c(71277),m=c(1071),n=c(46818);let o=new Set(["queued","spawning","running","working","needs_input","stuck"]),p=new Set(["done","needs_input","stuck","errored","terminated","killed"]);c(62465);let q=new Set(["archived","killed","terminated","restored"]);async function r(a,b,c){let d=await fetch((0,n.S)(`/api/sessions/${encodeURIComponent(a)}/keys`,c),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keys:b})});if(!d.ok){let a=await d.json().catch(()=>null);throw Error(a?.error??`Failed to queue terminal input (${d.status})`)}}function s(a){let{sessionId:b,bridgeId:c,sessionState:s,runtimeMode:t,pendingInsert:u,immersiveMobileMode:v=!1,onPendingInsertConsumed:w}=a,x=(0,l.useRef)(null);(0,l.useRef)(0);let y=(0,l.useRef)(0),z=(0,l.useRef)(null);(0,l.useRef)(!1),(0,l.useRef)(null),(0,l.useRef)(0);let A=(0,l.useMemo)(()=>s.trim().toLowerCase(),[s]),B="ttyd"===(t?.trim().toLowerCase()??null),C=B?!q.has(A):o.has(A),D=!B&&!v&&p.has(A),[E,F]=(0,l.useState)(null),[G,H]=(0,l.useState)(null),[I,J]=(0,l.useState)(C),[K,L]=(0,l.useState)(null),[M,N]=(0,l.useState)(!1),[O,P]=(0,l.useState)(0),[Q,R]=(0,l.useState)(""),[S,T]=(0,l.useState)(!1),[U,V]=(0,l.useState)(null),[W,X]=(0,l.useState)(null),[Y,Z]=(0,l.useState)(!1);(0,l.useRef)(null);let $=(0,l.useRef)(!1);(0,l.useRef)(0);let _=(0,l.useCallback)(()=>{let a=function(a){if(!a)return null;try{let b=new URL(a).searchParams.get("token")?.trim();return b&&b.length>0?b:null}catch{return null}}(G);a&&function(a,b){if(!a||!b||null===a.contentWindow)return;let c="*";try{c=new URL(a.src).origin}catch{}a.contentWindow.postMessage({type:"conductor-ttyd-auth-token",token:b},c)}(z.current?.querySelector("iframe"),a)},[G]);(0,l.useCallback)(()=>{},[C,_]);let aa=(0,l.useCallback)(async()=>{let a=Q.trim();if(0!==a.length&&!S){T(!0),V(null);try{let d=await fetch((0,n.S)(`/api/sessions/${encodeURIComponent(b)}/actions`,c),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"send",message:a})});if(!d.ok){let a=await d.json().catch(()=>null);throw Error(a?.error??`Failed to send message (${d.status})`)}R(""),x.current?.focus()}catch(a){V(a instanceof Error?a.message:"Failed to send message")}finally{T(!1)}}},[c,Q,S,b]);(0,l.useCallback)(async()=>{try{let a=await navigator.clipboard.readText();a&&await r(b,a,c)}catch{}},[c,b]);let ab=(0,l.useCallback)(async()=>{await r(b,"\x03",c)},[c,b]),ac=(0,l.useCallback)(()=>{z.current},[]),ad=(0,l.useCallback)(()=>{L(null),y.current=0,$.current=!0,P(a=>a+1)},[]),ae=C?"Connecting live terminal":D?"Session is waiting for input":"Live terminal is not active",af=K??(C?"Reconnecting to the existing ttyd terminal.":B?"This ttyd terminal is no longer attached. It only closes after an explicit kill or archive.":D?"Send a follow-up below to relaunch the agent in a fresh ttyd terminal.":`Session status is \`${A}\`. Interactive ttyd terminals only run while the agent is active.`),ag=G??E??void 0;return(0,d.jsxs)("div",{className:v?"group/terminal relative flex min-h-0 min-w-0 w-full flex-1 flex-col overflow-hidden bg-[#060404]":"group/terminal relative flex min-h-0 min-w-0 w-full flex-1 flex-col overflow-hidden rounded-none border-0 bg-[#060404] lg:rounded-[14px] lg:border lg:border-white/10 lg:shadow-[inset_0_1px_0_rgba(255,255,255,0.04)]",children:[(0,d.jsxs)("div",{className:"absolute right-2 top-2 z-10 flex items-center gap-2 sm:right-3 sm:top-3",children:[ag?(0,d.jsx)("a",{href:ag,target:"_blank",rel:"noreferrer",className:"inline-flex h-9 w-9 items-center justify-center rounded-full border border-white/10 bg-[#141010]/92 text-[#c9c0b7] backdrop-blur-sm transition hover:bg-[#201818] sm:h-7 sm:w-7","aria-label":"Open ttyd terminal in a new tab",children:(0,d.jsx)(e.A,{className:"h-3.5 w-3.5"})}):null,null,(0,d.jsx)(m.$,{type:"button",size:"icon",variant:"ghost",className:"h-9 w-9 rounded-full border border-white/10 bg-[#141010]/92 text-[#c9c0b7] backdrop-blur-sm hover:bg-[#201818] sm:h-7 sm:w-7",onClick:ab,"aria-label":"Soft stop (Ctrl+C)",children:(0,d.jsx)(f,{className:"h-3.5 w-3.5"})}),(0,d.jsx)(m.$,{type:"button",size:"icon",variant:"ghost",className:"h-9 w-9 rounded-full border border-white/10 bg-[#141010]/92 text-[#c9c0b7] backdrop-blur-sm hover:bg-[#201818] sm:h-7 sm:w-7",onClick:ad,"aria-label":"Reload ttyd terminal",children:I?(0,d.jsx)(g.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,d.jsx)(h.A,{className:"h-3.5 w-3.5"})})]}),(0,d.jsx)("div",{className:v?"min-h-0 min-w-0 h-0 flex-1 overflow-hidden px-0 pb-[env(safe-area-inset-bottom)] pt-0 w-full":"min-h-0 min-w-0 h-0 flex-1 overflow-hidden px-0.5 pb-0 pt-0.5 lg:px-1.5 lg:pb-1 lg:pt-3 w-full",children:C&&E?(0,d.jsxs)("div",{ref:z,className:"relative flex h-full min-h-0 w-full flex-1 flex-col overflow-hidden rounded-[10px] bg-[#060404] pb-[env(safe-area-inset-bottom)]",children:[M?null:(0,d.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-[#060404]",children:(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-[#141010]/92 px-3 py-2 text-[12px] text-[#c9c0b7] backdrop-blur-sm",children:[(0,d.jsx)(g.A,{className:"h-3.5 w-3.5 animate-spin"}),(0,d.jsx)("span",{children:"Loading ttyd terminal…"})]})}),(0,d.jsx)("iframe",{title:`ttyd terminal for ${b}`,src:E,className:"block h-full min-h-0 w-full flex-1 border-0 bg-[#060404]",allow:"clipboard-read; clipboard-write",loading:"eager",onLoad:()=>{N(!0),L(null),ac(),_()}},b)]}):(0,d.jsx)("div",{className:"flex h-full items-center justify-center p-4",children:(0,d.jsx)("div",{className:"max-w-lg rounded-[16px] border border-white/10 bg-[#141010]/92 p-5 text-[#efe8e1] shadow-[0_24px_48px_rgba(0,0,0,0.34)]",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("div",{className:"mt-0.5 rounded-full border border-white/10 bg-[#201818] p-2 text-[#c9c0b7]",children:K?(0,d.jsx)(i.A,{className:"h-4 w-4"}):(0,d.jsx)(g.A,{className:`h-4 w-4 ${I?"animate-spin":""}`})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("div",{className:"text-[14px] font-medium",children:ae}),(0,d.jsx)("div",{className:"mt-1 text-[12px] leading-5 text-[#a79c94]",children:af}),ag?(0,d.jsx)("div",{className:"mt-3",children:(0,d.jsx)("a",{href:ag,target:"_blank",rel:"noreferrer",className:"text-[12px] text-[#d7c6b7] underline underline-offset-4",children:"Open the ttyd terminal directly"})}):null]})]})})})}),!D&&W?(0,d.jsx)("div",{className:"absolute inset-x-0 bottom-0 z-10 border-t border-white/12 bg-[#161212] px-3 py-2 text-[11px] text-[#ffb39e] backdrop-blur-sm [padding-bottom:env(safe-area-inset-bottom)]",children:(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(i.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:W}),(0,d.jsx)("button",{type:"button",className:"ml-auto shrink-0 text-[#8e847d] hover:text-[#c9c0b7]",onClick:()=>X(null),children:(0,d.jsx)(j.A,{className:"h-3 w-3"})})]})}):null,D?(0,d.jsxs)("div",{className:"absolute inset-x-0 bottom-0 z-10 border-t border-white/12 bg-[#161212] backdrop-blur-sm [padding-bottom:env(safe-area-inset-bottom)]",children:[W?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pt-1.5 text-[11px] text-[#ffb39e]",children:[(0,d.jsx)(i.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:W}),(0,d.jsx)("button",{type:"button",className:"ml-auto shrink-0 text-[#8e847d] hover:text-[#c9c0b7]",onClick:()=>X(null),children:(0,d.jsx)(j.A,{className:"h-3 w-3"})})]}):null,U?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pt-1.5 text-[11px] text-[#ff8f7a]",children:[(0,d.jsx)(i.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:U}),(0,d.jsx)("button",{type:"button",className:"ml-auto shrink-0 text-[#8e847d] hover:text-[#c9c0b7]",onClick:()=>V(null),children:(0,d.jsx)(j.A,{className:"h-3 w-3"})})]}):null,(0,d.jsxs)("form",{onSubmit:a=>{a.preventDefault(),aa()},className:"flex items-center gap-2 px-2 py-2 lg:px-3",children:[(0,d.jsx)("input",{ref:x,type:"text",value:Q,onChange:a=>R(a.target.value),placeholder:"Send a follow-up message…",enterKeyHint:"done",disabled:S,className:"h-8 min-w-0 flex-1 rounded-md border border-white/10 bg-[#0c0808] px-2.5 text-[12px] text-[#efe8e1] outline-none placeholder:text-[#7d746e] focus:border-white/20 disabled:opacity-50",onKeyDown:a=>{"Escape"===a.key&&(a.preventDefault(),a.currentTarget.blur())}}),(0,d.jsx)(m.$,{type:"submit",size:"icon",variant:"ghost",disabled:S||0===Q.trim().length,className:"h-8 w-8 shrink-0 rounded-md border border-white/10 bg-[#0c0808] text-[#c9c0b7] hover:bg-[#201818] disabled:opacity-30","aria-label":"Send message",children:S?(0,d.jsx)(g.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,d.jsx)(k.A,{className:"h-3.5 w-3.5"})})]})]}):null]})}let t=(0,l.memo)(function(a){return(0,d.jsx)(s,{...a})},function(a,b){var c,d;return a.sessionId===b.sessionId&&a.projectId===b.projectId&&a.bridgeId===b.bridgeId&&a.sessionState===b.sessionState&&a.runtimeMode===b.runtimeMode&&a.immersiveMobileMode===b.immersiveMobileMode&&((c=a.pendingInsert)===(d=b.pendingInsert)||!!c&&!!d&&c.nonce===d.nonce&&c.inlineText===d.inlineText)})},76680:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(37303).A)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])}};
@@ -0,0 +1,115 @@
1
+ "use strict";exports.id=8039,exports.ids=[8039],exports.modules={25985:(a,b,c)=>{c.d(b,{FM:()=>g,JZ:()=>f,N7:()=>h});var d=c(32679),e=c(70209);async function f(a){let b=await (0,d.ny)(a),c=new Headers({"x-conductor-proxy-authorized":"true","x-conductor-access-authenticated":b.authenticated||"local"===b.provider?"true":"false"});b.role&&c.set("x-conductor-access-role",b.role),b.email&&c.set("x-conductor-access-email",b.email),b.provider&&c.set("x-conductor-access-provider",b.provider);let e=process.env.CONDUCTOR_PROXY_AUTH_SECRET?.trim()||null;return e&&c.set("x-conductor-proxy-secret",e),c}async function g(a,b,c={}){let h=await (0,d.sB)(a,c.role??"viewer");if(h)return h;if(c.requireActionGuard){let b=(0,d.G1)(a);if(b)return b}return(0,e.zP)(a,b,{headers:await f(a)})}async function h(a,b,c={}){let g=await (0,d.sB)(a,c.role??"viewer");if(g)return g;if(c.requireActionGuard){let b=(0,d.G1)(a);if(b)return b}return(0,e.X_)(a,b,{headers:await f(a)})}},36026:(a,b,c)=>{function d(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}}function e(a){let b=a?.trim();if(!b)return null;let c=Number.parseInt(b,10);return!Number.isInteger(c)||c<1||c>65535?null:c}function f(){let a=d(process.env.CONDUCTOR_BACKEND_URL);if(a)return a;let b=d(process.env.NEXT_PUBLIC_CONDUCTOR_BACKEND_URL);if(b)return b;let c=e(process.env.CONDUCTOR_BACKEND_PORT);if(null!==c)return`http://127.0.0.1:${c}`;let f=e(process.env.NEXT_PUBLIC_CONDUCTOR_BACKEND_PORT);return null!==f?`http://127.0.0.1:${f}`:null}function g(){let a=f();if(!a)throw Error("Rust backend URL is not configured");return a}c.d(b,{B:()=>g,_:()=>f})},70209:(a,b,c)=>{c.d(b,{X_:()=>m,Z$:()=>h,zP:()=>l});var d=c(77873),e=c(36026);let f=new Set(["connection","host","content-length","expect","upgrade","proxy-authorization","proxy-authenticate","te","trailers","transfer-encoding","accept-encoding","x-conductor-proxy-authorized","x-conductor-access-authenticated","x-conductor-access-role","x-conductor-access-email","x-conductor-access-provider","x-conductor-proxy-secret"]),g=new Set(["connection","content-length","content-encoding","keep-alive","transfer-encoding"]);function h(){return null!==(0,e._)()}function i(a){let b=new Headers;return a.headers.forEach((a,c)=>{g.has(c.toLowerCase())||b.set(c,a)}),b}async function j(a,b,c={}){let d=(0,e.B)(),g=new URL(a.url),h=new URL(b,d);h.search=g.search;let k=new Headers;a.headers.forEach((a,b)=>{f.has(b.toLowerCase())||k.set(b,a)}),c.headers&&new Headers(c.headers).forEach((a,b)=>{k.set(b,a)}),k.set("x-forwarded-proto",g.protocol.replace(":","")),k.set("x-forwarded-host",g.host);let l={method:a.method,headers:k,redirect:"manual",cache:"no-store"};if("GET"!==a.method&&"HEAD"!==a.method){let b=await a.arrayBuffer();b.byteLength>0&&(l.body=b)}let m=await fetch(h,l),n=i(m);return new Response(m.body,{status:m.status,statusText:m.statusText,headers:n})}async function k(a,b,c={}){let d,g=(0,e.B)(),h=new URL(a.url),j=new URL(b,g);j.search=h.search;let l=new Headers;a.headers.forEach((a,b)=>{f.has(b.toLowerCase())||l.set(b,a)}),c.headers&&new Headers(c.headers).forEach((a,b)=>{l.set(b,a)}),l.set("Accept","text/event-stream"),l.set("Cache-Control","no-cache"),l.set("x-forwarded-proto",h.protocol.replace(":","")),l.set("x-forwarded-host",h.host);let m=await fetch(j,{method:"GET",headers:l,redirect:"manual",cache:"no-store",signal:a.signal});return m.ok&&m.body?new Response(m.body,{status:m.status,statusText:m.statusText,headers:((d=i(m)).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)}):new Response(m.body,{status:m.status,statusText:m.statusText,headers:i(m)})}async function l(a,b,c={}){if(!h())return d.NextResponse.json({error:"Rust backend URL is not configured"},{status:503});try{return await j(a,b,c)}catch(a){return d.NextResponse.json({error:a instanceof Error?a.message:"Failed to reach Rust backend"},{status:502})}}async function m(a,b,c={}){if(!h())return d.NextResponse.json({error:"Rust backend URL is not configured"},{status:503});try{return await k(a,b,c)}catch(a){return d.NextResponse.json({error:a instanceof Error?a.message:"Failed to reach Rust backend"},{status:502})}}},83387:(a,b,c)=>{c.d(b,{CH:()=>n,Cx:()=>l,LC:()=>k,_I:()=>p,a8:()=>q,q:()=>j,xK:()=>o});var d=c(77873),e=c(32679),f=c(85689),g=c(94842),h=c(46224),i=c(91752);let j="relayTtydWs";function k(a,b){let c=(0,i.DW)(a);if(c)return c;let d=(0,g.oV)(b),e=a.trim();return d&&0!==e.length?{bridgeId:d,sessionId:e}:null}function l(a,b,c){let d=new URL(`/api/sessions/${encodeURIComponent(a)}/terminal/ttyd`,"http://dashboard.local");return d.searchParams.set("bridgeId",b),d.searchParams.set(j,c),`${d.pathname}${d.search}`}function m(a,b,c){if(a.includes(b))return a;let d=a.indexOf("<head");if(d>=0){let b=a.indexOf(">",d);if(b>=0)return`${a.slice(0,b+1)}${c}${a.slice(b+1)}`}let e=a.indexOf("<script");return e>=0?`${a.slice(0,e)}${c}${a.slice(e)}`:function(a,b,c){if(a.includes(b))return a;let d=a.lastIndexOf("</body>");if(d>=0)return`${a.slice(0,d)}${c}${a.slice(d)}`;let e=a.lastIndexOf("</html>");return e>=0?`${a.slice(0,e)}${c}${a.slice(e)}`:`${a}${c}`}(a,b,c)}async function n(a,b,c){let d=await (0,e.ny)(a),g=(0,f.bD)(d);if(!g)throw Error("Unable to resolve the dashboard user for the bridge relay.");let i=new URL(`/api/devices/${encodeURIComponent(b)}/terminals`,(0,h.P)()),j=await fetch(i,{method:"POST",headers:new Headers({...Object.fromEntries((await (0,f.Rq)(a)).entries()),"Content-Type":"application/json"}),body:JSON.stringify({session_id:c}),cache:"no-store",redirect:"manual"}),k=await j.json().catch(()=>null);if(!j.ok||!k?.terminal_id)throw Error(k?.error??`Failed to create relay terminal session (${j.status})`);let l=await (0,f.D8)(g,"terminal-browser","12h");return(0,f.hF)(`/terminal/${encodeURIComponent(k.terminal_id)}/browser`,l)}async function o(a,b,c){let f=await (0,e.sB)(a,c);if(f)return{ok:!1,response:f};let h=k(b,a);if(!h)return{ok:!1,response:d.NextResponse.json({error:"Paired device required"},{status:412})};let i=await (0,g.nl)(a,h.bridgeId,`/api/sessions/${encodeURIComponent(h.sessionId)}/terminal/token`,{pathOverride:`/api/sessions/${encodeURIComponent(h.sessionId)}/terminal/token`});if(!i.ok)return{ok:!1,response:i};let j=await i.json().catch(()=>null);if("string"!=typeof j?.ttydHttpUrl&&"string"!=typeof j?.ttydWsUrl)return{ok:!1,response:d.NextResponse.json({error:j?.error??`Session ${h.sessionId} does not expose a ttyd terminal`},{status:409})};try{let c=await n(a,h.bridgeId,h.sessionId);return{ok:!0,bridgeId:h.bridgeId,sessionId:h.sessionId,routeSessionId:b,upstreamPayload:j,relayTtydWsUrl:c}}catch(a){return{ok:!1,response:d.NextResponse.json({error:a instanceof Error?a.message:"Failed to connect relay ttyd session"},{status:502})}}}function p(a){let b="conductor-ttyd-resize-shim";if(a.includes(b))return a;let c=`<!-- ${b} -->
2
+ <script>
3
+ (function() {
4
+ if (window.__conductorTtydResizeShimPatched) return;
5
+ window.__conductorTtydResizeShimPatched = true;
6
+
7
+ var RESIZE_MESSAGE_TYPE = "conductor-terminal-resize";
8
+ var pendingRaf = null;
9
+ var burstTimers = [];
10
+
11
+ function clearBurstTimers() {
12
+ for (var i = 0; i < burstTimers.length; i++) {
13
+ window.clearTimeout(burstTimers[i]);
14
+ }
15
+ burstTimers = [];
16
+ }
17
+
18
+ function dispatchResize() {
19
+ window.dispatchEvent(new Event("resize"));
20
+ }
21
+
22
+ function scheduleResizeBurst() {
23
+ clearBurstTimers();
24
+ if (typeof window.requestAnimationFrame === "function") {
25
+ window.requestAnimationFrame(dispatchResize);
26
+ } else {
27
+ dispatchResize();
28
+ }
29
+ burstTimers.push(window.setTimeout(dispatchResize, 120));
30
+ burstTimers.push(window.setTimeout(dispatchResize, 360));
31
+ }
32
+
33
+ function findXtermTerminal() {
34
+ if (typeof ttyd !== "undefined" && ttyd.terminal) return ttyd.terminal;
35
+ var container = document.querySelector(".terminal");
36
+ if (container && container._xterm) return container._xterm;
37
+ var termEl = document.querySelector(".xterm");
38
+ if (termEl && termEl.__xterm) return termEl.__xterm;
39
+ return null;
40
+ }
41
+
42
+ function handleResizeMessage(event) {
43
+ if (!event || !event.data) return;
44
+ if (event.data.type !== RESIZE_MESSAGE_TYPE) return;
45
+
46
+ // Guard: skip if viewport has collapsed to near-zero (tab switch, minimize).
47
+ var vw = Math.max(0, window.innerWidth || 0);
48
+ var vh = Math.max(0, window.innerHeight || 0);
49
+ if (vw < 10 || vh < 10) return;
50
+
51
+ // Primary: dispatch synthetic resize events so ttyd's FitAddon re-fits.
52
+ // This mirrors the Rust backend shim's scheduleResizeBurst pattern.
53
+ scheduleResizeBurst();
54
+
55
+ // Secondary: direct xterm fit+refresh if we can find the instance.
56
+ if (pendingRaf !== null) return;
57
+ pendingRaf = requestAnimationFrame(function() {
58
+ pendingRaf = null;
59
+ var terminal = findXtermTerminal();
60
+ if (!terminal) return;
61
+ if (terminal._fitAddon) {
62
+ try { terminal._fitAddon.fit(); } catch(e) {}
63
+ }
64
+ try {
65
+ var rows = terminal.rows;
66
+ if (rows > 0) terminal.refresh(0, rows - 1);
67
+ } catch(e) {}
68
+ });
69
+ }
70
+
71
+ window.addEventListener("message", handleResizeMessage, false);
72
+
73
+ window.addEventListener("beforeunload", function() {
74
+ clearBurstTimers();
75
+ }, { once: true });
76
+ })();
77
+ </script>`;return m(a,b,c)}function q(a,b){let c="conductor-bridge-ttyd-relay-shim";if(a.includes(c))return a;let d=JSON.stringify(b),e=`<!-- ${c} -->
78
+ <script>
79
+ (function() {
80
+ if (window.__conductorBridgeTtydRelayPatched) return;
81
+ window.__conductorBridgeTtydRelayPatched = true;
82
+
83
+ const RELAY_TTYD_WS_URL = ${d};
84
+ if (!RELAY_TTYD_WS_URL) return;
85
+
86
+ const LOOPBACK_HOSTS = new Set(['localhost', '127.0.0.1', '::1']);
87
+ const previousWebSocket = window.WebSocket;
88
+ if (typeof previousWebSocket !== 'function') return;
89
+
90
+ const patchedWebSocket = function(url, protocols) {
91
+ let normalizedUrl = String(url);
92
+ try {
93
+ const candidate = new URL(normalizedUrl, window.location.href);
94
+ if (
95
+ LOOPBACK_HOSTS.has(candidate.hostname) ||
96
+ candidate.pathname === '/' ||
97
+ candidate.pathname === '/ws' ||
98
+ candidate.pathname.endsWith('/ws')
99
+ ) {
100
+ normalizedUrl = RELAY_TTYD_WS_URL;
101
+ }
102
+ } catch {
103
+ }
104
+
105
+ if (arguments.length > 1) {
106
+ return new previousWebSocket(normalizedUrl, protocols);
107
+ }
108
+ return new previousWebSocket(normalizedUrl);
109
+ };
110
+
111
+ Object.setPrototypeOf(patchedWebSocket, previousWebSocket);
112
+ patchedWebSocket.prototype = previousWebSocket.prototype;
113
+ window.WebSocket = patchedWebSocket;
114
+ })();
115
+ </script>`;return m(a,c,e)}}};
@@ -1 +1 @@
1
- "use strict";exports.id=9455,exports.ids=[9455],exports.modules={9455:(a,b,c)=>{c.r(b),c.d(b,{KeylessCreatorOrReader:()=>h});var d=c(67994),e=c(71277),f=c.n(e),g=c(27598);let h=a=>{var b;let{children:c}=a,h=(null==(b=(0,d.useSelectedLayoutSegments)()[0])?void 0:b.startsWith("/_not-found"))||!1,[i,j]=f().useActionState(g.a,null);return((0,e.useEffect)(()=>{h||f().startTransition(()=>{j()})},[h]),f().isValidElement(c))?f().cloneElement(c,{key:null==i?void 0:i.publishableKey,publishableKey:null==i?void 0:i.publishableKey,__internal_keyless_claimKeylessApplicationUrl:null==i?void 0:i.claimUrl,__internal_keyless_copyInstanceKeysUrl:null==i?void 0:i.apiKeysUrl,__internal_bypassMissingPublishableKey:!0}):c}},27598:(a,b,c)=>{c.d(b,{a:()=>e});var d=c(85660);let e=(0,d.createServerReference)("001dca03d5715bd3de8b115bb8e84d12acab56350f",d.callServer,void 0,d.findSourceMapURL,"createOrReadKeylessAction")}};
1
+ "use strict";exports.id=9455,exports.ids=[9455],exports.modules={9455:(a,b,c)=>{c.r(b),c.d(b,{KeylessCreatorOrReader:()=>h});var d=c(67994),e=c(71277),f=c.n(e),g=c(83176);let h=a=>{var b;let{children:c}=a,h=(null==(b=(0,d.useSelectedLayoutSegments)()[0])?void 0:b.startsWith("/_not-found"))||!1,[i,j]=f().useActionState(g.a,null);return((0,e.useEffect)(()=>{h||f().startTransition(()=>{j()})},[h]),f().isValidElement(c))?f().cloneElement(c,{key:null==i?void 0:i.publishableKey,publishableKey:null==i?void 0:i.publishableKey,__internal_keyless_claimKeylessApplicationUrl:null==i?void 0:i.claimUrl,__internal_keyless_copyInstanceKeysUrl:null==i?void 0:i.apiKeysUrl,__internal_bypassMissingPublishableKey:!0}):c}},83176:(a,b,c)=>{c.d(b,{a:()=>e});var d=c(85660);let e=(0,d.createServerReference)("002bc32c9f512dc80eb496ce3e72881467ba8a0ca5",d.callServer,void 0,d.findSourceMapURL,"createOrReadKeylessAction")}};
@@ -0,0 +1 @@
1
+ exports.id=9831,exports.ids=[9831],exports.modules={14276:()=>{},22675:(a,b,c)=>{Promise.resolve().then(c.bind(c,3074)),Promise.resolve().then(c.bind(c,82099)),Promise.resolve().then(c.bind(c,6932)),Promise.resolve().then(c.bind(c,66185)),Promise.resolve().then(c.bind(c,87839)),Promise.resolve().then(c.bind(c,53759)),Promise.resolve().then(c.bind(c,90075)),Promise.resolve().then(c.bind(c,66504)),Promise.resolve().then(c.bind(c,46208))},31902:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"002bc32c9f512dc80eb496ce3e72881467ba8a0ca5":()=>e.ai,"00a2d61d98e5ca32547b7f34ef22e63e1759b35106":()=>e.AZ,"00b6be05277122479969b02bd84bd03c2822114ce7":()=>d.i,"00cd742a6bcfd3373fd0ce34d9e592e56b7065be77":()=>e.at,"40461619f36221add8d52136cbb8e4c84ef5fc34eb":()=>e.ot,"40f990ff817799d62013f09dd4cf51de8abe557ed5":()=>d.$});var d=c(35515),e=c(78113)},36026:(a,b,c)=>{"use strict";function d(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}}function e(a){let b=a?.trim();if(!b)return null;let c=Number.parseInt(b,10);return!Number.isInteger(c)||c<1||c>65535?null:c}function f(){let a=d(process.env.CONDUCTOR_BACKEND_URL);if(a)return a;let b=d(process.env.NEXT_PUBLIC_CONDUCTOR_BACKEND_URL);if(b)return b;let c=e(process.env.CONDUCTOR_BACKEND_PORT);if(null!==c)return`http://127.0.0.1:${c}`;let f=e(process.env.NEXT_PUBLIC_CONDUCTOR_BACKEND_PORT);return null!==f?`http://127.0.0.1:${f}`:null}function g(){let a=f();if(!a)throw Error("Rust backend URL is not configured");return a}c.d(b,{B:()=>g,_:()=>f})},36508:(a,b,c)=>{"use strict";c.d(b,{A:()=>e});var d=c(85660);let e=(0,d.createServerReference)("00a2d61d98e5ca32547b7f34ef22e63e1759b35106",d.callServer,void 0,d.findSourceMapURL,"detectKeylessEnvDriftAction")},37806:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>g});var d=c(92692),e=c(71277);let f=(0,e.createContext)({theme:"dark",toggleTheme:()=>{}});function g({children:a}){let[b,c]=(0,e.useState)("dark"),h=(0,e.useCallback)(()=>{c(a=>{let b,c="dark"===a?"light":"dark";return localStorage.setItem("conductor-theme",c),(b=document.documentElement).classList.remove("dark","light"),b.classList.add(c),c})},[]);return(0,d.jsx)(f.Provider,{value:{theme:b,toggleTheme:h},children:a})}},43894:(a,b,c)=>{"use strict";c.d(b,{TooltipProvider:()=>h});var d=c(92692),e=c(49588),f=c(71277),g=c(93544);let h=e.Kq;e.bL,e.l9,(0,f.forwardRef)(({className:a,sideOffset:b=8,...c},f)=>(0,d.jsx)(e.ZL,{children:(0,d.jsx)(e.UC,{ref:f,sideOffset:b,className:(0,g.cn)("z-50 rounded-[var(--radius-xs)] border border-[var(--border-strong)] bg-[var(--bg-panel)] px-2 py-1.5","text-[11px] text-[var(--text-normal)] shadow-[var(--shadow-soft)]","animate-in fade-in-0 zoom-in-95",a),...c})})).displayName="TooltipContent"},46208:(a,b,c)=>{"use strict";c.d(b,{TooltipProvider:()=>e});var d=c(30274);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call TooltipProvider() from the server but TooltipProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/conductor-oss/conductor-oss/packages/web/src/components/ui/Tooltip.tsx","TooltipProvider");(0,d.registerClientReference)(function(){throw Error("Attempted to call Tooltip() from the server but Tooltip is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/conductor-oss/conductor-oss/packages/web/src/components/ui/Tooltip.tsx","Tooltip"),(0,d.registerClientReference)(function(){throw Error("Attempted to call TooltipTrigger() from the server but TooltipTrigger is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/conductor-oss/conductor-oss/packages/web/src/components/ui/Tooltip.tsx","TooltipTrigger"),(0,d.registerClientReference)(function(){throw Error("Attempted to call TooltipContent() from the server but TooltipContent is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/conductor-oss/conductor-oss/packages/web/src/components/ui/Tooltip.tsx","TooltipContent"),(0,d.registerClientReference)(function(){throw Error("Attempted to call SimpleTooltip() from the server but SimpleTooltip is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/conductor-oss/conductor-oss/packages/web/src/components/ui/Tooltip.tsx","SimpleTooltip")},57908:(a,b,c)=>{"use strict";c.d(b,{y:()=>e});var d=c(85660);let e=(0,d.createServerReference)("006579191325db58f0544e7e70dd720ae4de32cec3",d.callServer,void 0,d.findSourceMapURL,"invalidateCacheAction")},59627:(a,b,c)=>{Promise.resolve().then(c.bind(c,33996)),Promise.resolve().then(c.bind(c,16413)),Promise.resolve().then(c.bind(c,58002)),Promise.resolve().then(c.bind(c,19867)),Promise.resolve().then(c.bind(c,89833)),Promise.resolve().then(c.bind(c,99896)),Promise.resolve().then(c.bind(c,12589)),Promise.resolve().then(c.bind(c,37806)),Promise.resolve().then(c.bind(c,43894))},66504:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>e});var d=c(30274);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/conductor-oss/conductor-oss/packages/web/src/components/ThemeProvider.tsx","ThemeProvider");(0,d.registerClientReference)(function(){throw Error("Attempted to call useTheme() from the server but useTheme is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/conductor-oss/conductor-oss/packages/web/src/components/ThemeProvider.tsx","useTheme")},72567:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,25696,23))},78143:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,32594,23))},89257:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,25696,23)),Promise.resolve().then(c.t.bind(c,69411,23)),Promise.resolve().then(c.t.bind(c,8447,23)),Promise.resolve().then(c.t.bind(c,50674,23)),Promise.resolve().then(c.t.bind(c,78886,23)),Promise.resolve().then(c.t.bind(c,24194,23)),Promise.resolve().then(c.t.bind(c,93431,23)),Promise.resolve().then(c.bind(c,23858))},90387:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"006579191325db58f0544e7e70dd720ae4de32cec3":()=>d.y});var d=c(30254)},91946:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(42131);let e=async a=>[{type:"image/svg+xml",sizes:"any",url:(0,d.fillMetadataSegment)(".",await a.params,"icon.svg",!0)+"?270c676221766b43"}]},93544:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(9537),e=c(43165);function f(...a){return(0,e.QP)((0,d.$)(a))}},95235:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>y,metadata:()=>v,viewport:()=>w});var d=c(2474),e=c(26543),f=c.n(e),g=c(27897),h=c.n(g),i=c(56004),j=c.n(i),k=c(62078),l=c.n(k),m=c(76323),n=c(90075),o=c(9330),p=c(66504),q=c(46208),r=c(36026),s=c(72460);c(14276);let t=`${j().variable} ${f().variable} ${h().variable} ${l().variable}`,u="1"===process.env.VERCEL||"true"===process.env.VERCEL,v={title:"Conductor",description:"Multi-agent orchestrator dashboard"},w={width:"device-width",initialScale:1};function x({children:a}){let b=(0,r._)()??"";return(0,d.jsxs)("html",{lang:"en",className:`${t} dark`,suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("meta",{name:"conductor-backend-url",content:b}),(0,d.jsx)("script",{dangerouslySetInnerHTML:{__html:'try{var t=localStorage.getItem("conductor-theme");var e=document.documentElement;e.classList.remove("light","dark");e.classList.add(t==="light"||t==="dark"?t:"dark")}catch{}'}})]}),(0,d.jsx)("body",{className:"bg-[var(--bg-canvas)] text-[var(--text-strong)] antialiased",children:(0,d.jsx)(q.TooltipProvider,{children:(0,d.jsxs)(p.ThemeProvider,{children:[a,u?(0,d.jsx)(n.Analytics,{}):null]})})})]})}async function y({children:a}){let b=await (0,o.headers)(),c=(0,s.Pn)(b),e=(0,s.kE)(b),f=(0,s.EO)(c,e);return f.enabled&&f.publishableKey?(0,d.jsx)(m.lJ,{publishableKey:f.publishableKey,proxyUrl:f.proxyUrl??void 0,clerkJSUrl:f.clerkJSUrl??void 0,signInUrl:f.signInUrl??void 0,signUpUrl:f.signUpUrl??void 0,allowedRedirectOrigins:f.allowedRedirectOrigins.length>0?f.allowedRedirectOrigins:void 0,appearance:{cssLayerName:"clerk"},children:(0,d.jsx)(x,{children:a})}):(0,d.jsx)(x,{children:a})}},98985:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,32594,23)),Promise.resolve().then(c.t.bind(c,6413,23)),Promise.resolve().then(c.t.bind(c,61437,23)),Promise.resolve().then(c.t.bind(c,99476,23)),Promise.resolve().then(c.t.bind(c,41452,23)),Promise.resolve().then(c.t.bind(c,86792,23)),Promise.resolve().then(c.t.bind(c,48465,23)),Promise.resolve().then(c.t.bind(c,13592,23))}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/pbP54IuC8nY52fx1W6p8w/_buildManifest.js","static/pbP54IuC8nY52fx1W6p8w/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-8785239ba7f79d78.js","static/chunks/87c73c54-014124adcece3495.js","static/chunks/1968-281077ad765d1294.js","static/chunks/main-app-d6167a36ed763f15.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/gdURF6tHQaEeCJhccCwMX/_buildManifest.js","static/gdURF6tHQaEeCJhccCwMX/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-a6d14995c8816818.js","static/chunks/87c73c54-014124adcece3495.js","static/chunks/1968-281077ad765d1294.js","static/chunks/main-app-d6167a36ed763f15.js"],rootMainFilesTree:{},pages:{"/_app":[]}};