clay-server 5.3.0-beta.6 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/lib/project-admin-overview.js +22 -11
  2. package/lib/project-background-tasks.js +76 -0
  3. package/lib/project-connection.js +1 -1
  4. package/lib/project-sessions.js +12 -5
  5. package/lib/project-split-views.js +12 -3
  6. package/lib/project-view-store.js +7 -5
  7. package/lib/project-worker-conversation.js +5 -0
  8. package/lib/public/app.js +7 -0
  9. package/lib/public/css/contextual-clay.css +2 -1
  10. package/lib/public/css/mate-conversation.css +1 -1
  11. package/lib/public/css/pending-message-queue.css +24 -19
  12. package/lib/public/css/project-admin-overview.css +42 -13
  13. package/lib/public/css/shared-browser.css +31 -8
  14. package/lib/public/css/split-view-layout.css +92 -7
  15. package/lib/public/css/tool-pane.css +4 -7
  16. package/lib/public/index.html +5 -5
  17. package/lib/public/modules/agent-message-bubbles.js +96 -0
  18. package/lib/public/modules/app-header.js +6 -0
  19. package/lib/public/modules/app-messages.js +26 -9
  20. package/lib/public/modules/background-task-previews.js +8 -0
  21. package/lib/public/modules/background-task-viewer.js +97 -0
  22. package/lib/public/modules/background-tasks-ui.js +34 -125
  23. package/lib/public/modules/chat-bubble-renderer.js +11 -5
  24. package/lib/public/modules/contextual-clay-geometry.js +7 -3
  25. package/lib/public/modules/pane-activation.js +5 -3
  26. package/lib/public/modules/pane-header-tooltips.js +32 -0
  27. package/lib/public/modules/pending-message-queue-drag.js +69 -0
  28. package/lib/public/modules/pending-message-queue.js +3 -33
  29. package/lib/public/modules/permission-control.js +6 -5
  30. package/lib/public/modules/project-admin-overview.js +125 -10
  31. package/lib/public/modules/project-grouping.js +9 -0
  32. package/lib/public/modules/server-settings-controls.js +33 -4
  33. package/lib/public/modules/session-folder-toolbar.js +1 -1
  34. package/lib/public/modules/session-tool-item.js +86 -0
  35. package/lib/public/modules/settings-select.js +2 -1
  36. package/lib/public/modules/shared-browser-tabs.js +37 -21
  37. package/lib/public/modules/sidebar-projects.js +1 -10
  38. package/lib/public/modules/split-session-empty-pane.js +47 -0
  39. package/lib/public/modules/split-view-create-menu.js +74 -65
  40. package/lib/public/modules/split-view-layout-scope.js +4 -0
  41. package/lib/public/modules/split-view-picker-actions.js +71 -0
  42. package/lib/public/modules/split-view-picker-render.js +81 -0
  43. package/lib/public/modules/split-view-presentation-renderer.js +8 -8
  44. package/lib/public/modules/split-view-worker-activity.js +2 -2
  45. package/lib/public/modules/split-view-worker-transcript.js +70 -33
  46. package/lib/public/modules/split-view-workers.js +6 -4
  47. package/lib/public/modules/terminal-viewport.js +14 -0
  48. package/lib/public/modules/terminal.js +3 -4
  49. package/lib/public/modules/theme-palette.js +177 -0
  50. package/lib/public/modules/theme.js +1 -174
  51. package/lib/public/modules/tool-pane-chrome.js +7 -1
  52. package/lib/public/modules/tools.js +5 -89
  53. package/lib/public/modules/tooltip.js +32 -6
  54. package/lib/public/modules/wireframe-workbench.js +2 -2
  55. package/lib/public/modules/worker-message-previews.js +39 -0
  56. package/lib/public/pane-assets/app-5W6KJXK5.js +1 -0
  57. package/lib/public/pane-assets/chunk-2IJUTAB6.js +2 -0
  58. package/lib/public/pane-assets/{chunk-BMHTBRMO.js → chunk-7OVNC5HT.js} +1 -1
  59. package/lib/public/pane-assets/chunk-BQN7B62H.js +3 -0
  60. package/lib/public/pane-assets/{chunk-2AIWCI6Y.js → chunk-EMLN2Y7L.js} +1 -1
  61. package/lib/public/pane-assets/{chunk-VKYBAVWT.js → chunk-ENPAHXLB.js} +1 -1
  62. package/lib/public/pane-assets/chunk-EPBGGZRT.js +1 -0
  63. package/lib/public/pane-assets/chunk-EYTE56IA.js +1 -0
  64. package/lib/public/pane-assets/{chunk-6NYCNWVF.js → chunk-FQTNR4ZS.js} +1 -1
  65. package/lib/public/pane-assets/chunk-L6LSA5WI.js +1 -0
  66. package/lib/public/pane-assets/chunk-M57UIGZV.js +1 -0
  67. package/lib/public/pane-assets/chunk-MGTFTEJP.js +1 -0
  68. package/lib/public/pane-assets/chunk-MMG6MYCN.js +1 -0
  69. package/lib/public/pane-assets/chunk-MZLMEXMW.js +1 -0
  70. package/lib/public/pane-assets/chunk-OG3E5SVA.js +166 -0
  71. package/lib/public/pane-assets/chunk-RGAFZ3T2.js +1 -0
  72. package/lib/public/pane-assets/chunk-RNDRURMF.js +1 -0
  73. package/lib/public/pane-assets/{chunk-PV4PCH2V.js → chunk-SJOT74VW.js} +1 -1
  74. package/lib/public/pane-assets/{chunk-LDIZLKB2.js → chunk-SJTGHIN5.js} +1 -1
  75. package/lib/public/pane-assets/chunk-SLMAFKI2.js +1 -0
  76. package/lib/public/pane-assets/chunk-U3I5KY3B.js +1 -0
  77. package/lib/public/pane-assets/{chunk-VNAV23CM.js → chunk-UPXU2IPC.js} +1 -1
  78. package/lib/public/pane-assets/{chunk-TMGSDFJI.js → chunk-VEBYD7TL.js} +1 -1
  79. package/lib/public/pane-assets/chunk-XBHYNXXT.js +1 -0
  80. package/lib/public/pane-assets/manifest.json +411 -399
  81. package/lib/public/pane-assets/style-BSKKK54Q.css +1 -0
  82. package/lib/sdk-message-processor.js +5 -2
  83. package/lib/server-storage.js +27 -3
  84. package/lib/server.js +4 -2
  85. package/lib/sessions.js +1 -1
  86. package/lib/storage-usage.js +29 -7
  87. package/lib/terminal-manager.js +2 -2
  88. package/lib/worker-message-previews.js +50 -0
  89. package/lib/ws-schema.js +1 -1
  90. package/lib/yoke/adapters/claude-worker.js +8 -0
  91. package/lib/yoke/adapters/claude.js +17 -2
  92. package/lib/yoke/claude-task-reader.js +94 -0
  93. package/lib/yoke/interface.js +1 -0
  94. package/package.json +1 -1
  95. package/lib/public/pane-assets/app-7UZ727NA.js +0 -1
  96. package/lib/public/pane-assets/chunk-6MIHIQ2W.js +0 -1
  97. package/lib/public/pane-assets/chunk-6UJ2ALOB.js +0 -1
  98. package/lib/public/pane-assets/chunk-6XK2OATZ.js +0 -1
  99. package/lib/public/pane-assets/chunk-BKIDR2ME.js +0 -1
  100. package/lib/public/pane-assets/chunk-GEFCFZEN.js +0 -1
  101. package/lib/public/pane-assets/chunk-GN2NQEVC.js +0 -2
  102. package/lib/public/pane-assets/chunk-IMLMBPT4.js +0 -166
  103. package/lib/public/pane-assets/chunk-K5S6AILM.js +0 -1
  104. package/lib/public/pane-assets/chunk-OWNNLZ36.js +0 -1
  105. package/lib/public/pane-assets/chunk-P2C3LOWL.js +0 -3
  106. package/lib/public/pane-assets/chunk-R4LMPTKU.js +0 -1
  107. package/lib/public/pane-assets/chunk-VWTHIQCE.js +0 -1
  108. package/lib/public/pane-assets/chunk-WM3K5AFH.js +0 -1
  109. package/lib/public/pane-assets/chunk-XOB3O327.js +0 -1
  110. package/lib/public/pane-assets/chunk-XOOUCFYT.js +0 -1
  111. package/lib/public/pane-assets/style-ZM7OOU3M.css +0 -1
@@ -1 +0,0 @@
1
- import{p as a,q as b,r as c,s as d,t as e,u as f}from"./chunk-IMLMBPT4.js";import"./chunk-6NYCNWVF.js";import"./chunk-JIV7O5GN.js";import"./chunk-R4LMPTKU.js";import"./chunk-P2C3LOWL.js";import"./chunk-TMGSDFJI.js";import"./chunk-R7QVVFUG.js";import"./chunk-GN2NQEVC.js";import"./chunk-VZ2OKDAO.js";export{c as closeIssues,f as handleIssuesMessage,e as initIssues,d as openIssues,b as refreshGithubIssue,a as requestIssue};
@@ -1 +0,0 @@
1
- import{oa as a,pa as b,qa as c,ra as d,sa as e,ta as f,ua as g,va as h,wa as i,xa as j}from"./chunk-IMLMBPT4.js";import"./chunk-6NYCNWVF.js";import"./chunk-JIV7O5GN.js";import"./chunk-R4LMPTKU.js";import"./chunk-P2C3LOWL.js";import"./chunk-TMGSDFJI.js";import"./chunk-R7QVVFUG.js";import"./chunk-GN2NQEVC.js";import"./chunk-VZ2OKDAO.js";export{j as applyReviewedSplitView,c as handleProjectSplitViewResult,b as handleProjectSplitViews,g as initSplitViewPresentations,d as organizePresentationView,i as presentationViewForSidebar,h as renderPresentationSplitView,a as requestProjectSplitViews,e as setActiveView,f as switchToStandalone};
@@ -1,3 +0,0 @@
1
- import{v,y as b}from"./chunk-TMGSDFJI.js";import{G as y,I as w,J as S,d as g}from"./chunk-GN2NQEVC.js";import{b as n}from"./chunk-VZ2OKDAO.js";function k(){return'<span class="sketch-mark" aria-hidden="true">\u270E</span><span class="sketch-wordmark">clay<span>sketch</span></span>'}function q(){return'<a class="sketch-credit" href="https://plantuml.com/salt" target="_blank" rel="noopener noreferrer">Built with PlantUML Salt <span aria-hidden="true">\u2197</span></a>'}function C(t,e){return t=String(t||""),e==="salt"&&!/@start\w+/i.test(t)?`@startsalt
2
- `+t+`
3
- @endsalt`:t}function p(t,e){if(t.length>8*1024*1024||!/<svg[\s>]/i.test(t))throw new Error("The renderer returned an invalid diagram.");var r=document.createElement("img");return r.alt=e||"Wireframe",r.draggable=!1,r.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(t),r}function h(){if(!n.get("wireframeRenderActive")){var t=(n.get("wireframeRenderQueue")||[]).slice(),e=t.shift();if(e){if(n.set({wireframeRenderQueue:t}),!e.target.isConnected){e.reject(new Error("Preview closed.")),h();return}var r=new AbortController;n.set({wireframeRenderActive:r});var i=setTimeout(function(){r.abort()},2e4);fetch("api/wireframe/render",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:e.source}),signal:r.signal,cache:"no-store"}).then(function(a){return a.text().then(function(o){if(!a.ok)throw new Error(o||"Unable to render this wireframe.");return o})}).then(function(a){if(n.get("wireframeRenderActive")!==r)throw new Error("Conversation changed.");if(p(a),a.length<5e5){var o=(n.get("wireframeRenderCache")||[]).filter(function(c){return c.source!==e.source});o.push({source:e.source,svg:a}),n.set({wireframeRenderCache:o.slice(-12)})}e.resolve(a)}).catch(function(a){e.reject(a)}).finally(function(){clearTimeout(i),n.get("wireframeRenderActive")===r&&n.set({wireframeRenderActive:null}),h()})}}}function R(t,e){if(!t.trim()||new TextEncoder().encode(t).length>1e5)return Promise.reject(new Error("Wireframes must contain between 1 byte and 100 KB of source."));var r=n.get("wireframeRenderCache")||[],i=r.find(function(a){return a.source===t});return i?Promise.resolve(i.svg):new Promise(function(a,o){var c=(n.get("wireframeRenderQueue")||[]).slice();c.push({source:t,target:e,resolve:a,reject:o}),n.set({wireframeRenderQueue:c}),h()})}n.subscribe(function(t,e){t.currentSlug===e.currentSlug&&t.activeSessionId===e.activeSessionId&&t.myUserId===e.myUserId||(e.wireframeRenderActive&&e.wireframeRenderActive.abort(),(e.wireframeRenderQueue||[]).forEach(function(r){r.reject(new Error("Conversation changed."))}),n.set({wireframeRenderActive:null,wireframeRenderQueue:[],wireframeRenderCache:[]}))});function u(){return n.get("wireframeViewports")||new Map}function d(t){var e=t.image;if(!(!e.naturalWidth||!t.viewport.isConnected||u().get(t.viewport)!==t)){var r=getComputedStyle(t.viewport),i=t.viewport.clientWidth-parseFloat(r.paddingLeft)-parseFloat(r.paddingRight);if(!(i<=0)){var a=Math.min(1,i/e.naturalWidth);if(t.viewport.classList.contains("wireframe-workbench-canvas")){var o=t.viewport.clientHeight-parseFloat(r.paddingTop)-parseFloat(r.paddingBottom);o>0&&(a=Math.min(a,o/e.naturalHeight))}var c=t.mode==="manual"?t.zoom:a;e.style.width=e.naturalWidth*c+"px",e.style.maxWidth="none",e.style.height="auto",e.style.margin=e.naturalWidth*c>i?"0":"0 auto",t.scale=c,t.toolbar&&(t.toolbar.querySelector("[data-zoom-value]").textContent=Math.round(c*100)+"%",t.toolbar.querySelector("[data-zoom-fit]").setAttribute("aria-pressed",String(t.mode==="fit")),t.toolbar.querySelector("[data-zoom-out]").disabled=c<=.25,t.toolbar.querySelector("[data-zoom-in]").disabled=c>=4)}}}function W(){var t=new Map(u());if(t.forEach(function(r,i){i.isConnected&&r.image.isConnected||(r.resize.disconnect(),t.delete(i))}),t.size!==u().size&&n.set({wireframeViewports:t}),!t.size){var e=n.get("wireframeViewportCleanup");e&&e.disconnect(),n.set({wireframeViewportCleanup:null})}}function x(t,e,r){var i=u().get(t);i&&i.resize.disconnect();var a={viewport:t,image:e,toolbar:r,mode:i?i.mode:"auto",zoom:i?i.zoom:1,scale:1};a.resize=new ResizeObserver(function(){d(a)});var o=new Map(u());if(o.set(t,a),n.set({wireframeViewports:o}),r){let l=function(m,E){a.mode=m,a.zoom=E,t.scrollLeft=0,t.scrollTop=0,d(a)};r.classList.add("wireframe-zoom"),r.setAttribute("role","group"),r.setAttribute("aria-label","Sketch zoom"),r.innerHTML='<button type="button" data-zoom-out aria-label="Zoom out" title="Zoom out">\u2212</button><button type="button" data-zoom-value aria-label="Reset zoom to 100%" title="Original size">100%</button><button type="button" data-zoom-in aria-label="Zoom in" title="Zoom in">+</button><button type="button" data-zoom-fit aria-pressed="true" title="Fit sketch to available width">Fit</button>',r.querySelector("[data-zoom-out]").onclick=function(){l("manual",Math.max(.25,a.scale/1.25))},r.querySelector("[data-zoom-in]").onclick=function(){l("manual",Math.min(4,Math.max(.25,a.scale*1.25)))},r.querySelector("[data-zoom-value]").onclick=function(){l("manual",1)},r.querySelector("[data-zoom-fit]").onclick=function(){l("fit",1)}}if(e.addEventListener("load",function(){d(a)},{once:!0}),a.resize.observe(t),!n.get("wireframeViewportCleanup")){var c=new MutationObserver(W);c.observe(document.body,{childList:!0,subtree:!0}),n.set({wireframeViewportCleanup:c})}d(a)}function s(){return document.getElementById("wireframe-panel")}function f(){S("wireframe"),s()&&s().remove(),n.set({wireframeDraft:null})}function A(){var t=n.get("wireframeDraft");if(t){var e=document.createElement("a");e.href=URL.createObjectURL(new Blob([t.source],{type:"text/plain;charset=utf-8"})),e.download=(t.id||"wireframe")+".puml",e.click(),setTimeout(function(){URL.revokeObjectURL(e.href)},1e3)}}function L(t){t.preventDefault();var e=s(),r=n.get("wireframeDraft"),i=e.querySelector("form"),a=i.querySelector('[type="submit"]'),o=e.querySelector(".wireframe-save-status"),c=i.elements.path.value.trim();a.disabled=!0,o.textContent="Saving\u2026",fetch("api/wireframe/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:c,source:r.source})}).then(function(l){return l.ok?l.json():l.text().then(function(m){throw new Error(m)})}).then(function(l){n.get("wireframeDraft")===r&&(o.textContent="Saved to "+l.path,i.hidden=!0)}).catch(function(l){n.get("wireframeDraft")===r&&(o.textContent=l.message||"Unable to save the wireframe.")}).finally(function(){a.disabled=!1})}function z(){var t=document.getElementById("main-panels");if(!t)return null;var e=document.createElement("section");return e.id="wireframe-panel",e.setAttribute("aria-label","clay-sketch viewer"),e.innerHTML='<header class="wireframe-topbar"><div class="sketch-brand">'+k()+'</div><strong class="sketch-title">Sketch viewer</strong><div class="wireframe-window-actions"><button type="button" data-wide title="Widen panel" aria-label="Widen panel" aria-pressed="false"><i data-lucide="chevrons-left-right"></i></button><button type="button" data-full title="Toggle fullscreen" aria-label="Toggle fullscreen" aria-pressed="false"><i data-lucide="maximize-2"></i></button><button type="button" data-close title="Close clay-sketch" aria-label="Close clay-sketch"><i data-lucide="x"></i></button></div></header><div class="wireframe-toolbar"><div class="wireframe-zoom"></div><button type="button" data-save>Save to project</button><button type="button" data-download title="Download sketch source" aria-label="Download sketch source"><i data-lucide="download"></i></button></div><form hidden class="wireframe-save-form"><label>Project file path<input name="path" aria-label="Project file path" required pattern=".*\\.puml" placeholder="wireframe.puml"></label><button type="submit">Save</button><button type="button" data-cancel>Cancel</button></form><p class="wireframe-save-status" role="status"></p><div class="wireframe-workbench-canvas"></div><footer class="sketch-footer">'+q()+"<span>Revise through conversation</span></footer>",t.appendChild(e),e.querySelector("[data-close]").onclick=f,e.querySelector("[data-download]").onclick=A,e.querySelector("[data-save]").onclick=function(){var r=e.querySelector("form");r.hidden=!1;var i=n.get("wireframeDraft");r.elements.path.value=(i.id||"wireframe")+".puml",r.elements.path.focus()},e.querySelector("[data-cancel]").onclick=function(){e.querySelector("form").hidden=!0,e.querySelector("[data-save]").focus()},e.querySelector("form").onsubmit=L,e.addEventListener("keydown",function(r){r.key==="Escape"&&(r.stopPropagation(),e.querySelector("form").hidden?f():e.querySelector("[data-cancel]").click())}),["wide","full"].forEach(function(r){e.querySelector("[data-"+r+"]").onclick=function(){var i=e.classList.toggle(r==="wide"?"wireframe-wide":"panel-fullscreen");this.setAttribute("aria-pressed",String(i))}}),g(),e}function T(t){if(!(!t||typeof t.source!="string"||new TextEncoder().encode(t.source).length>1e5)){if(n.get("paneMode")&&window.parent!==window){v(t,"clay-pane-present-wireframe");return}w("wireframe");var e=s()||z();if(e){var r={source:C(t.source,t.language),title:String(t.title||"clay-sketch").slice(0,100),id:/^[a-zA-Z0-9_-]{1,80}$/.test(t.id||"")?t.id:"wireframe"};n.set({wireframeDraft:r}),e.querySelector("[data-save]").disabled=!1,e.querySelector("[data-download]").disabled=!1,e.querySelector("header strong").textContent=r.title,e.querySelector(".wireframe-save-status").textContent="",e.querySelector("form").hidden=!0;var i=j(r,e);b(Object.assign({},t,{source:r.source}),e.querySelector("header"),i,e.querySelector(".wireframe-workbench-canvas")),i.catch(function(){})}}}function j(t,e){var r=e.querySelector(".wireframe-workbench-canvas"),i=n.get("wireframeDraft"),a=document.createElement("p");return a.setAttribute("role","status"),a.textContent="Rendering sketch\u2026",r.replaceChildren(a),R(t.source,r).then(function(o){if(n.get("wireframeDraft")!==i||!r.isConnected)throw new DOMException("Sketch changed.","AbortError");var c=p(o,t.title);return r.replaceChildren(c),x(r,c,e.querySelector(".wireframe-zoom")),c.decode?c.decode():void 0}).catch(function(o){throw n.get("wireframeDraft")!==i||(a.textContent=o.name==="AbortError"?"Rendering was interrupted. Reopen the wireframe to retry.":o.message),o})}y("wireframe",f);n.subscribe(function(t,e){(t.currentSlug!==e.currentSlug||t.activeSessionId!==e.activeSessionId||t.myUserId!==e.myUserId)&&f()});function J(){var t=n.get("wireframeDraft");if(t){T(t);return}var e=s()||z();e&&(w("wireframe"),e.classList.remove("hidden"),e.querySelector("[data-save]").disabled=!0,e.querySelector("[data-download]").disabled=!0,e.querySelector(".wireframe-workbench-canvas").textContent="Open a sketch to view it here.")}export{k as a,q as b,C as c,p as d,R as e,x as f,f as g,T as h,J as i};
@@ -1 +0,0 @@
1
- import{j as N,l as me,m as _,n as K,y as ye}from"./chunk-TMGSDFJI.js";import{a as x}from"./chunk-R7QVVFUG.js";import{G as Se,I as J,J as de,Q as le,a as D,c as be,d as M,e as h}from"./chunk-GN2NQEVC.js";import{b as n}from"./chunk-VZ2OKDAO.js";function A(){return n.get("paneBrowserSource")||null}function G(){var e=n.get("projectSplitViewFocusedOrigin")||n.get("projectSplitViewSingletonOrigin");if(e)return e;var r=(n.get("projectSplitViews")||[]).find(function(t){return t.id===n.get("projectSplitViewActiveId")});return r&&r.activeSessionOriginId||n.get("sessionOriginId")||null}var Be=null,Q=null,ce={state_request:[],open:["url","newTab","incognito"],view:["browserId","visible"],control:["browserId","control"],close:["browserId"],end:["browserId"],input:["browserId","epoch","event"]};function X(){return Array.from(document.querySelectorAll("#split-host .split-pane:not(.split-pane-cached) .split-pane-frame"))}function ue(){return!n.get("paneMode")&&X().some(function(e){return!!e.clayPane||!!me(n.snap(),n.get("paneBindingSessions")||[],Number(e.dataset.sessionId))})}function T(){var e=A();if(!e||e.socket!==x()||e.owner!==n.get("myUserId")||e.project!==n.get("currentSlug"))return!1;var r=e.frame;return X().includes(r)&&r.contentWindow===e.window&&r.contentDocument===e.document&&!r.dataset.requestedSessionId&&_(r,{paneBinding:e.binding})}function pe(){return T()?A().binding.sessionId:null}function re(){var e=A();return T()?e.binding.requestId+":"+e.binding.generation:null}function ke(){return!!A()}function te(e,r){var t=A();if(!e||!r||!X().includes(e)||e.dataset.requestedSessionId||!_(e,{paneBinding:r}))return!1;if(T()&&t.frame===e&&N(t.binding,r))return t.focusedOrigin!==G()&&n.set({paneBrowserSource:Object.assign({},t,{focusedOrigin:G()})}),!0;var o=n.get("sharedBrowser");return T()&&o&&ne("view",{browserId:o.id,visible:!1}),n.set({paneBrowserSource:{frame:e,window:e.contentWindow,document:e.contentDocument,binding:r,socket:x(),owner:n.get("myUserId"),project:n.get("currentSlug"),focusedOrigin:G()},paneBrowserTarget:r}),Q&&Q(!0),!0}function W(){if(T()&&A().focusedOrigin===G())return!0;var e=X(),r=G(),t=e.find(function(s){return r&&s.dataset.sessionOriginId===r})||e.find(function(s){var a=s.closest(".split-pane");return a&&a.dataset.active==="true"})||e[0],o=t&&t.clayPane&&t.clayPane.identity();return!!o&&te(t,o.binding)}function ne(e,r){var t=A();return Object.prototype.hasOwnProperty.call(ce,e)?!t&&!ue()?null:!T()||!t.frame.clayPane||typeof t.frame.clayPane.browserCommand!="function"?!1:t.frame.clayPane.browserCommand(e,r||{},t.binding):!1}function or(e,r,t){var o=Object.prototype.hasOwnProperty.call(ce,e)&&ce[e],s=x();if(!o||!s||s.readyState!==1||!N(t,K())||!n.get("connected")||n.get("panePendingBinding")||n.get("activeSessionId")!==t.sessionId)return!1;var a={type:"shared_browser_"+e,sessionId:t.sessionId,paneBinding:t};return o.forEach(function(i){Object.prototype.hasOwnProperty.call(r,i)&&(a[i]=r[i])}),s.send(JSON.stringify(a)),!0}function xe(e){var r=window.frameElement;if(!n.get("paneMode")||!r||!r.clayPane||["shared_browser_state","shared_browser_frame","shared_browser_error"].indexOf(e.type)<0)return!1;var t=K();return t&&N(t,e.paneActivation)&&window.parent.postMessage({type:"clay-pane-browser-update",paneBinding:t,message:e},location.origin),!0}function Ie(e,r){n.get("paneMode")||(Be=e,Q=r,window.addEventListener("message",function(t){var o=t.data;if(!(t.origin!==location.origin||!o||o.type!=="clay-pane-browser-update"||!o.message)){var s=X().find(function(d){return d.contentWindow===t.source}),a=o.message,i=A();!s||!_(s,o)||!N(o.paneBinding,a.paneActivation)||a.sessionId!==o.paneBinding.sessionId||["shared_browser_state","shared_browser_frame","shared_browser_error"].indexOf(a.type)<0||(!T()||i.frame!==s||!N(i.binding,o.paneBinding))&&(a.type!=="shared_browser_state"||!a.present||!te(s,o.paneBinding))||Be(a,!0)}}),document.addEventListener("clay-pane-ready",function(){queueMicrotask(function(){!T()&&W()&&ne("state_request",{})})},!0),n.subscribe(function(){var t=A();t&&!T()&&(n.set({paneBrowserSource:null,paneBrowserTarget:null}),Q&&Q(!1))}))}function qe(e){return!n.get("paneMode")||window.parent===window?!1:(window.parent.postMessage({type:"clay-pane-open-browser",paneBinding:K(),url:e,projectSlug:n.get("currentSlug"),sessionId:String(n.get("activeSessionId"))},window.location.origin),!0)}function cr(e,r){if(!e||e.origin!==window.location.origin||!r||!e.data||e.data.type!=="clay-pane-open-browser")return!1;var t=e.data,o=Object.assign({},n.snap()),s=Array.from(r.querySelectorAll(".split-pane-frame")).find(function(u){return u.contentWindow===e.source}),a=s&&s.clayPane?{slug:s.dataset.projectSlug,sessionId:s.dataset.sessionId}:s&&o.splitPanes&&o.splitPanes.panes&&o.splitPanes.panes.find(function(u){return String(u.slug)===s.dataset.projectSlug&&String(u.sessionId)===s.dataset.sessionId});if(!o.connected||!a||t.projectSlug!==o.currentSlug||t.projectSlug!==s.dataset.projectSlug||String(t.sessionId)!==s.dataset.sessionId)return!0;var i=new URL("/p/"+encodeURIComponent(a.slug)+"/?pane=1&session="+encodeURIComponent(a.sessionId),window.location.href).href;if(s.clayPane?!_(s,t):s.src!==i)return!0;var d=s.clayPane&&s.clayPane.identity().binding,c=s.contentDocument;function l(){var u=n.snap();return!u.connected||u.currentSlug!==o.currentSlug||u.myUserId!==o.myUserId||u.currentProjectOwnerId!==o.currentProjectOwnerId||u.projectSplitViewSocketGeneration!==o.projectSplitViewSocketGeneration||s.contentWindow!==e.source||s.contentDocument!==c||s.dataset.projectSlug!==t.projectSlug||String(s.dataset.sessionId)!==String(t.sessionId)||!Array.from(r.querySelectorAll(".split-pane-frame")).includes(s)?!1:d?!!s.clayPane&&_(s,t)&&s.clayPane.identity().binding===d:s.src===i&&!!(u.splitPanes&&u.splitPanes.panes.some(function(b){return String(b.slug)===a.slug&&String(b.sessionId)===String(a.sessionId)}))}return import("./chunk-VKYBAVWT.js").then(function(u){!l()||d&&!te(s,d)||u.openSharedBrowserAt(t.url)}).catch(function(u){D(u.message||"Could not open the browser.","warn")}),!0}function Z(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function oe(e){if(typeof e!="string"||!e.startsWith("browser:")||e.length>8200)return null;var r=e.slice(8);if(!/^https?:\/\//i.test(r)||/[\u0000-\u0020]/.test(r))return null;try{var t=new URL(r);return t.username||t.password||!["http:","https:"].includes(t.protocol)?null:t.href}catch{return null}}function Ke(e,r,t){var o=oe(e);if(!o)return null;var s=String(t||"").replace(/<[^>]*>/g,"").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").trim();return(!s||s===e||s===o)&&(s=new URL(o).host),'<button type="button" class="clay-browser-link clayos-record-link" data-browser-url="'+Z(o)+'" data-browser-project="'+Z(n.get("currentSlug")||"")+'" title="'+Z("Open in Clay Browser \xB7 "+o)+'" aria-label="'+Z("Open in Clay Browser: "+s)+'">'+h("globe")+"<span>Browser</span><small>"+Z(s)+"</small></button>"}function hr(e){!e||typeof document>"u"||(e.querySelectorAll("a[href]").forEach(function(r){if(!r.closest("pre, code, button")){var t=Ke(r.getAttribute("href"),"",r.textContent);if(t){var o=document.createElement("template");o.innerHTML=t,r.replaceWith(o.content)}}}),fe(),M())}function fe(){n.get("browserLinksBound")||(n.set({browserLinksBound:!0}),document.addEventListener("click",function(e){var r=e.target.closest&&e.target.closest(".clay-browser-link");if(r){e.preventDefault(),e.stopPropagation();var t=oe("browser:"+r.dataset.browserUrl);if(!t){D("This browser link is invalid.","warn");return}if(r.dataset.browserProject&&r.dataset.browserProject!==n.get("currentSlug")){D("Open this link from its original project.","warn");return}qe(t)||import("./chunk-VKYBAVWT.js").then(function(o){o.openSharedBrowserAt(t)}).catch(function(o){D(o.message||"Could not open the browser.","warn")})}}))}function w(e){return be(String(e)).replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function S(){return n.get("sharedBrowserSettings")||{}}function y(e){n.set({sharedBrowserSettings:Object.assign({},S(),e)})}function I(){return document.getElementById("shared-browser-settings")}function q(e,r,t,o){return'<button type="button" data-settings-action="'+r+'" data-target="'+w(t||"")+'" data-label="'+w(o||t||"")+'">'+w(e)+"</button>"}function we(e,r){var t=x();if(!t||t.readyState!==1){y({error:"Reconnect to manage browser data.",pending:!1}),E();return}var o=crypto.randomUUID();y({pending:!0,requestId:o,error:"",notice:""}),t.send(JSON.stringify({type:"shared_browser_settings",sessionId:n.get("activeSessionId"),requestId:o,operation:e,target:r})),E(),setTimeout(function(){S().requestId===o&&S().pending&&(y({pending:!1,error:"The request timed out. Refresh to check the saved state."}),E())},15e3)}function $(e){var r=!!S().open;y({open:!1,review:null}),E();var t=document.querySelector('[data-action="settings"]');t&&r&&e!==!1&&t.focus()}function Ee(){return'<section id="shared-browser-settings" class="shared-browser-settings" aria-label="Browser settings" hidden></section>'}function Ce(e){e.querySelector('[data-action="settings"]').onclick=function(){y({open:!0,page:"sites",data:null,review:null,filter:""}),we("list"),I().querySelector('[data-settings-action="back"]').focus()},I().addEventListener("keydown",function(r){r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),$())}),I().addEventListener("input",function(r){r.target.matches("[data-settings-filter]")&&(y({filter:r.target.value}),Oe(),I().dataset.key=JSON.stringify([S(),n.get("connected")]))}),I().addEventListener("click",function(r){var t=r.target.closest("[data-settings-action]");if(!(!t||t.disabled)){var o=t.dataset.settingsAction;if(o==="back"){$();return}if(o==="sites"||o==="history"){y({page:o,filter:"",review:null,notice:"",error:""}),E();return}if(o==="refresh"){we("list");return}if(o==="cancel"){y({review:null}),E(),I().querySelector('[data-settings-action="refresh"]').focus();return}if(o==="confirm"){var s=S().review;s&&we(s.action,s.target);return}y({notice:"",error:"",review:{action:o,target:t.dataset.target,label:t.dataset.label||t.dataset.target}}),E(),I().querySelector('[data-settings-action="cancel"]').focus()}})}function Oe(){var e=I(),r=S();if(!(!e||!r.open)){var t=e.querySelector(".browser-settings-rows");if(t){var o=(r.filter||"").toLowerCase(),s=r.data||{sites:[],history:[]};r.page==="history"?t.innerHTML=s.history.filter(function(a){return a.url.toLowerCase().includes(o)}).map(function(a){return'<div class="browser-settings-row"><div><span class="browser-settings-url">'+w(a.url)+"</span><small>"+w(new Date(a.at).toLocaleString())+"</small></div>"+q("Remove","delete_history",a.id,a.url)+"</div>"}).join(""):t.innerHTML=s.sites.filter(function(a){return a.host.toLowerCase().includes(o)}).map(function(a){return"<details><summary>"+w(a.host)+"<small>"+a.cookies.length+(a.cookies.length===1?" cookie \xB7 ":" cookies \xB7 ")+a.origins.length+(a.origins.length===1?" storage origin":" storage origins")+'</small></summary><div class="browser-settings-row"><span>Cookies and site storage</span>'+q("Remove site data","delete_site",a.host)+"</div>"+a.origins.map(function(i){return'<p class="browser-settings-origin">'+w(i.origin)+"<small>"+i.localStorage+" localStorage entries \xB7 "+i.databases+" IndexedDB databases</small></p>"}).join("")+a.cookies.map(function(i){var d=i.domain+i.path+" \xB7 "+(i.expires===-1?"Session cookie":"Expires "+new Date(i.expires*1e3).toLocaleDateString())+(i.httpOnly?" \xB7 HttpOnly":"")+(i.secure?" \xB7 Secure":"")+(i.partitioned?" \xB7 Partitioned":"");return'<div class="browser-settings-row"><div><span>'+w(i.name)+"</span><small>"+w(d)+"</small></div>"+q("Remove cookie","delete_cookie",i.id,i.name+" \xB7 "+i.domain+i.path)+"</div>"}).join("")+"</details>"}).join(""),t.innerHTML||(t.innerHTML='<p class="browser-settings-muted">'+(r.pending&&!r.data?"Loading saved data\u2026":o?"No matching entries.":r.page==="history"?"No saved browsing history.":"No saved cookies or site data.")+"</p>"),t.querySelectorAll("button").forEach(function(a){a.disabled=!!r.pending||!n.get("connected")})}}}function E(){var e=I();if(e){var r=S(),t=e.closest(".shared-browser-panel"),o=n.get("sharedBrowser"),s=t.querySelector('[data-action="settings"]');if(s.hidden=!(o&&o.personalCookiesAvailable),s.disabled=!n.get("connected"),s.setAttribute("aria-expanded",String(!!r.open)),e.hidden=!r.open,t.classList.toggle("browser-settings-open",!!r.open),!!r.open){var a=JSON.stringify([r,n.get("connected")]);if(e.dataset.key!==a){e.dataset.key=a;var i=r.page||"sites";e.innerHTML='<div class="browser-settings-heading">'+q("Back to browser","back")+'<h3>Browser settings</h3></div><p class="browser-settings-muted">Personal \xB7 Shared across your Mates. Incognito tabs do not save data here.</p><nav aria-label="Browser settings sections">'+q("Cookies & site data","sites")+q("History","history")+'</nav><p class="browser-settings-muted">'+(i==="sites"?"Cookies, localStorage and IndexedDB are saved for your account. New personal tabs restore saved site storage. Removing data may sign you out. Removals also apply to open personal tabs. Sites may create new data afterwards.":"Your latest 500 page visits. Clearing this list leaves open tabs, their Back/Forward navigation and conversation activity unchanged.")+'</p><div class="browser-settings-tools"><input data-settings-filter aria-label="Filter saved browser data" placeholder="'+(i==="sites"?"Find a site":"Find a page")+'" value="'+w(r.filter||"")+'">'+q("Refresh","refresh")+q(i==="sites"?"Clear all site data":"Clear history",i==="sites"?"clear_data":"clear_history")+'</div><p class="browser-settings-feedback" role="status">'+w(r.error||(n.get("connected")?r.pending?"Updating\u2026":r.notice||"":"Disconnected. Reconnect and refresh to see current saved data."))+"</p>"+(r.review?'<div class="browser-settings-review" role="group" aria-label="Confirm removal"><strong>'+(r.review.action.includes("history")?"Remove browsing history?":"Remove saved site data?")+"</strong><p>"+(r.review.action.includes("history")?"This removes "+(r.review.action==="clear_history"?"all saved visits":"this saved visit")+" from your personal history.":r.review.action==="delete_cookie"?"This removes "+w(r.review.label)+" across your personal Mate browsers and may sign you out.":"This removes "+(r.review.action==="clear_data"?"all cookies and site storage":"cookies and storage for "+w(r.review.target))+" across your personal Mate browsers and may sign you out.")+"</p>"+q("Cancel","cancel")+q("Remove","confirm")+"</div>":"")+'<div class="browser-settings-rows"></div>',e.querySelector('[data-settings-action="'+i+'"]').setAttribute("aria-current","page"),e.querySelectorAll("button").forEach(function(d){d.disabled=d.dataset.settingsAction!=="back"&&(!!r.pending||!n.get("connected"))}),Oe()}}}}function Le(e){if(!e.requestId||e.requestId!==S().requestId)return!1;if(e.type==="shared_browser_settings"){var r=!!S().review;y({data:e.settings,pending:!1,review:null,error:"",notice:r?"Removed from your saved browser data.":""})}else if(e.type==="shared_browser_error")y({pending:!1,error:e.error});else return!1;return E(),S().open&&r&&I().querySelector('[data-settings-action="refresh"]').focus(),!0}function Te(e,r,t){var o=e.querySelector(".shared-browser-tabs"),s=n.get("sharedBrowsers")||[],a=n.get("sharedBrowser"),i=JSON.stringify([s.map(function(l){return[l.id,l.url,l.control,l.phase,l.incognito,l.personalCookiesAvailable]}),a&&a.id,n.get("connected")]);if(o.dataset.key!==i){o.dataset.key=i,o.replaceChildren(),s.forEach(function(l,u){var b=document.createElement("div");b.className="shared-browser-tab";var k=document.createElement("button");k.type="button",k.setAttribute("role","tab"),k.setAttribute("aria-selected",String(!!a&&a.id===l.id));var R="Tab "+(u+1);try{l.url&&(R=new URL(l.url).hostname)}catch{}var F=document.createElement("span");F.textContent=R+(l.personalCookiesAvailable&&l.incognito?" \xB7 Incognito":"");var m=document.createElement("small");m.textContent=l.phase==="ended"?"Ended":l.control==="agent"?"Shared":"You only",k.append(F,m),k.title=R+" \xB7 "+(l.incognito===!1?"Personal browser":"Incognito")+" \xB7 "+(l.phase==="ended"?"Ended":l.control==="agent"?"You and Clay can control this tab":"Only you can control this tab. Clay is paused."),k.onclick=function(){r(l.id)},k.onkeydown=function(g){var U=g.key==="ArrowRight"?(u+1)%s.length:g.key==="ArrowLeft"?(u+s.length-1)%s.length:g.key==="Home"?0:g.key==="End"?s.length-1:-1;U<0||(g.preventDefault(),r(s[U].id),o.querySelectorAll('[role="tab"]')[U].focus())};var P=document.createElement("button");P.type="button",P.textContent="\xD7",P.setAttribute("aria-label","Close browser tab "+(u+1)),P.disabled=!n.get("connected"),P.onclick=function(){t("close",{browserId:l.id})},b.append(k,P),o.appendChild(b)});var d=document.createElement("button");if(d.type="button",d.textContent="+",d.setAttribute("aria-label","New browser tab"),d.disabled=!n.get("connected"),d.title=a&&a.personalCookiesAvailable?"New tab \xB7 Personal browser":"New incognito tab",d.onclick=function(){t("open",{newTab:!0})},o.appendChild(d),a&&a.personalCookiesAvailable){var c=document.createElement("button");c.type="button",c.innerHTML=h("glasses"),c.setAttribute("aria-label","New incognito tab"),c.title="New incognito tab \xB7 Site data is not saved",c.disabled=!n.get("connected"),c.onclick=function(){t("open",{newTab:!0,incognito:!0})},o.appendChild(c),M()}}}function C(){var e=n.get("sharedBrowser");return e&&!e.handoff&&e.phase==="live"&&n.get("connected")}var Ae=50,Pe=2e3;function O(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function V(){var e=n.get("sharedBrowserUi")||{};clearTimeout(e.moveTimer),clearTimeout(e.wheelTimer),O({moveTimer:null,move:null,wheelTimer:null,wheelDelta:0,pointer:null,composing:!1})}function Me(e,r){function t(i){var d=e.getBoundingClientRect(),c=Math.min(d.width/e.width,d.height/e.height),l=(i.clientX-d.left-(d.width-e.width*c)/2)/c,u=(i.clientY-d.top-(d.height-e.height*c)/2)/c;return{x:Math.max(0,Math.min(e.width-1,l)),y:Math.max(0,Math.min(e.height-1,u))}}function o(){var i=n.get("sharedBrowserUi")||{};clearTimeout(i.moveTimer);var d=i.move;O({move:null,moveTimer:null}),d&&C()&&v(Object.assign({kind:"move"},d))}function s(){var i=n.get("sharedBrowserUi")||{};clearTimeout(i.wheelTimer);var d=i.wheelDelta||0;if(!C()){O({wheelDelta:0,wheelTimer:null});return}var c=Math.max(-Pe,Math.min(Pe,d)),l=d-c;O({wheelDelta:l,wheelTimer:l?setTimeout(s,Ae):null}),c&&v({kind:"wheel",deltaY:c})}e.addEventListener("pointermove",function(i){if(C()){var d=n.get("sharedBrowserUi")||{};O({move:t(i),moveTimer:d.moveTimer||setTimeout(o,40)})}}),e.addEventListener("pointerdown",function(i){!C()||i.button!==0||(i.preventDefault(),o(),s(),e.setPointerCapture(i.pointerId),O({pointer:i.pointerId}),r.focus({preventScroll:!0}),v(Object.assign({kind:"down"},t(i))))});function a(i){var d=n.get("sharedBrowserUi")||{};d.pointer===i.pointerId&&(o(),O({pointer:null}),C()&&v(Object.assign({kind:"up"},t(i))),e.hasPointerCapture(i.pointerId)&&e.releasePointerCapture(i.pointerId))}e.addEventListener("pointerup",a),e.addEventListener("pointercancel",a),e.addEventListener("lostpointercapture",a),e.addEventListener("wheel",function(i){if(C()){i.preventDefault();var d=n.get("sharedBrowserUi")||{};O({wheelDelta:(d.wheelDelta||0)+i.deltaY,wheelTimer:d.wheelTimer||setTimeout(s,Ae)})}},{passive:!1}),e.addEventListener("focus",function(){C()&&r.focus({preventScroll:!0})}),r.addEventListener("compositionstart",function(){O({composing:!0})}),r.addEventListener("compositionend",function(){O({composing:!1}),C()&&r.value&&v({kind:"text",text:r.value}),r.value=""}),r.addEventListener("input",function(){(n.get("sharedBrowserUi")||{}).composing||(C()&&r.value&&v({kind:"text",text:r.value}),r.value="")}),r.addEventListener("keydown",function(i){if(!(!C()||i.isComposing)){var d=i.key;(i.ctrlKey||i.metaKey)&&d.toLowerCase()==="a"?d="ControlOrMeta+A":d==="Tab"&&i.shiftKey&&(d="Shift+Tab"),/^(Tab|Shift\+Tab|Enter|Backspace|Delete|Escape|ArrowLeft|ArrowRight|ArrowUp|ArrowDown|Home|End|ControlOrMeta\+A)$/.test(d)&&(i.preventDefault(),v({kind:"key",key:d}))}})}function Ue(){return'<div class="shared-browser-activity"><div class="shared-browser-caption-history" role="log" aria-live="off" aria-label="Browser caption history" tabindex="0"></div><button type="button" class="shared-browser-caption-latest" hidden>Back to live \u2193</button><span class="shared-browser-caption-announcement" role="status" aria-live="polite"></span></div>'}function ge(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function Je(e,r,t){var o=e.querySelector(".shared-browser-activity"),s=e.querySelector(".shared-browser-caption-history"),a=e.querySelector(".shared-browser-caption-latest");s.dataset.bound||(s.dataset.bound="true",s.addEventListener("scroll",function(){var m=s.scrollHeight-s.clientHeight-s.scrollTop<20;ge({captionPinned:m}),o.dataset.reviewing=String(!m),a.hidden=m}),a.onclick=function(){s.scrollTop=s.scrollHeight,ge({captionPinned:!0}),a.hidden=!0,o.dataset.reviewing="false"});var i=r&&r.activityHistory||[];o.hidden=!i.length;var d=i[i.length-1],c=r&&r.id+":"+i.length+":"+(d?d.id+":"+d.phase+":"+d.text:"empty"),l=n.get("sharedBrowserUi")||{};if(l.captionHistoryKey!==c){var u=l.captionBrowserId!==(r&&r.id),b=u||l.captionPinned!==!1,k=s.scrollTop;s.replaceChildren(),i.forEach(function(m,P){var g=document.createElement("div");g.className="shared-browser-caption-row",g.dataset.age=String(Math.min(i.length-P-1,3));var U=document.createElement("span");if(U.className="shared-browser-activity-text",U.textContent=m.text,g.appendChild(U),m.phase==="failed"||m.phase==="interrupted"){var ve=document.createElement("small");ve.textContent=m.phase==="failed"?"This step could not be completed.":"This step was interrupted.",g.appendChild(ve)}s.appendChild(g)}),ge({captionHistoryKey:c,captionBrowserId:r&&r.id,captionPinned:b}),s.scrollTop=b?s.scrollHeight:k,a.hidden=b,o.dataset.reviewing=String(!b);var R=e.querySelector(".shared-browser-caption-announcement"),F=t&&d?d.text+(d.phase==="failed"?" This step could not be completed.":""):"";R.textContent!==F&&(R.textContent=F)}}function _e(e,r,t){var o=r&&r.phase==="live"&&r.control==="agent"&&!r.handoff&&t;Je(e,r,o);var s=e.querySelector("canvas"),a=o&&r.pointer,i=e.querySelector(".shared-browser-pointer");if(i.hidden=!a||a.width!==s.width||a.height!==s.height,!i.hidden){i.style.left=100*a.x/s.width+"%",i.style.top=100*a.y/s.height+"%";var d=r.id+":"+r.epoch+":"+a.sequence;(n.get("sharedBrowserUi")||{}).pointerAnimationKey!==d&&(n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),{pointerAnimationKey:d})}),a.clicked&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&i.querySelector("i").animate([{opacity:.8,transform:"scale(.3)"},{opacity:0,transform:"scale(1.8)"}],{duration:650}))}}var he=["1280,800","1440,900","1024,768","800,600","375,667","390,844"];function Ge(){return document.getElementById("shared-browser-resolution")}function He(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),{viewportMenuOpen:e})});var r=Ge();r&&(r.querySelector("[data-viewport-trigger]").setAttribute("aria-expanded",String(e)),r.querySelector('[role="menu"]').hidden=!e)}function L(){He(!1)}function je(){return'<div id="shared-browser-resolution" class="shared-browser-resolution"><button type="button" data-viewport-trigger aria-label="Browser viewport" aria-haspopup="menu" aria-expanded="false" aria-controls="shared-browser-resolutions"><span>1280 \xD7 800</span>'+h("chevron-up")+'</button><div id="shared-browser-resolutions" class="shared-browser-resolution-menu" role="menu" aria-label="Browser resolutions" hidden></div></div>'}function Re(e,r,t){var o=e.querySelector(".shared-browser-resolution"),s=o.querySelector("[data-viewport-trigger]");s.disabled=!t,(!t||!n.get("sharedBrowserOpen"))&&L();var a=r?r.width+","+r.height:"1280,800";s.querySelector("span").textContent=a.replace(","," \xD7 ");var i=o.querySelector('[role="menu"]');if(i.dataset.size!==a){i.dataset.size=a;var d=he.includes(a)?he:he.concat([a]);i.replaceChildren(),d.forEach(function(c){var l=document.createElement("button");l.type="button",l.setAttribute("role","menuitemradio"),l.setAttribute("aria-checked",String(c===a)),l.dataset.size=c,l.tabIndex=-1,l.textContent=c.replace(","," \xD7 "),l.setAttribute("aria-label",l.textContent),i.appendChild(l)})}}function De(e){var r=e.querySelector(".shared-browser-resolution"),t=r.querySelector("[data-viewport-trigger]"),o=r.querySelector('[role="menu"]');function s(a){if(!t.disabled){He(!0);var i=o.querySelectorAll("button"),d=o.querySelector('[aria-checked="true"]');(a?i[i.length-1]:d||i[0]).focus()}}t.onclick=function(){(n.get("sharedBrowserUi")||{}).viewportMenuOpen?L():s(!1)},t.onkeydown=function(a){(a.key==="ArrowDown"||a.key==="ArrowUp")&&(a.preventDefault(),s(a.key==="ArrowUp"))},o.onclick=function(a){var i=a.target.closest("[data-size]");if(!(!i||t.disabled)){var d=i.dataset.size.split(",");L(),t.focus(),v({kind:"resize",width:Number(d[0]),height:Number(d[1])})}},r.addEventListener("keydown",function(a){if(a.key==="Escape"){a.preventDefault(),a.stopPropagation(),L(),t.focus();return}if(a.key==="Tab"){L();return}if(!(a.target===t||!["ArrowDown","ArrowUp","Home","End"].includes(a.key))){a.preventDefault();var i=Array.from(o.querySelectorAll("button")),d=i.indexOf(document.activeElement);d=a.key==="Home"?0:a.key==="End"?i.length-1:(d+(a.key==="ArrowDown"?1:-1)+i.length)%i.length,i[d].focus()}}),document.addEventListener("pointerdown",function(a){r.contains(a.target)||L()}),r.addEventListener("focusout",function(a){r.contains(a.relatedTarget)||L()})}function j(){return window.matchMedia("(min-width: 1024px)").matches}function We(){var e=n.get("permissions");return j()&&!!n.get("currentSlug")&&!n.get("dmMode")&&(!e||e.terminal!==!1)}function ee(){return We()&&!!n.get("activeSessionId")}function z(){return document.getElementById("shared-browser-panel")}function B(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function p(e,r){var t=n.get("sharedBrowser"),o=ne(e,Object.assign({browserId:t&&t.id,epoch:t&&t.epoch},r||{}));if(o!==null)return o;var s=x();return!s||s.readyState!==1||!n.get("activeSessionId")?!1:(s.send(JSON.stringify(Object.assign({type:"shared_browser_"+e,sessionId:n.get("activeSessionId"),browserId:t&&t.id,epoch:t&&t.epoch},r||{}))),!0)}function v(e){B({error:""}),p("input",{event:e})}function Ve(){var e=z();if(!(!e||!n.get("sharedBrowserOpen"))){var r=e.querySelector(".shared-browser-viewport"),t=e.querySelector("canvas"),o=t.width===800&&t.height===600?"mac":t.width===1024&&t.height===768?"crt":t.width<t.height?"phone":"laptop";r.dataset.skin=o;var s=Math.min((r.clientWidth-96)/t.width,(r.clientHeight-140-e.querySelector(".shared-browser-caption").offsetHeight)/t.height,1);if(!(s<=0)){var a=e.querySelector(".shared-browser-monitor");a.style.width=Math.floor(t.width*s)+"px",a.style.height=Math.floor(t.height*s)+"px",e.querySelector(".shared-browser-monitor-label").textContent=t.width+" \xD7 "+t.height+" \xB7 "+Math.round(s*100)+"%"}}}function H(e,r,t){return'<button type="button" data-action="'+e+'" title="'+t+'" aria-label="'+t+'">'+h(r)+"</button>"}function ae(){if(!z()){var e=document.getElementById("main-panels");if(e){var r=document.createElement("section");r.id="shared-browser-panel",r.className="shared-browser-panel hidden",r.setAttribute("aria-label","Shared browser"),r.innerHTML='<header class="shared-browser-header"><span class="shared-browser-title">'+h("globe")+'Browser</span><span class="shared-browser-phase" role="status">Ready</span><div class="shared-browser-window">'+H("settings","settings-2","Browser settings")+H("wide","chevrons-left-right","Widen browser panel")+H("fullscreen","maximize-2","Toggle browser fullscreen")+H("hide","x","Hide browser panel")+'</div></header><div class="shared-browser-tabs" role="tablist" aria-label="Browser tabs"></div><form class="shared-browser-address">'+H("back","arrow-left","Back")+H("forward","arrow-right","Forward")+H("reload","rotate-cw","Reload")+'<input aria-label="Browser address" placeholder="Enter a URL" type="text" autocomplete="off" spellcheck="false"><button type="submit" aria-label="Open address">'+h("arrow-right")+"</button></form>"+Ee()+'<div class="shared-browser-viewport"><div class="shared-browser-monitor"><div class="shared-browser-pointer-layer" aria-hidden="true"><div class="shared-browser-pointer" hidden><svg viewBox="0 0 24 28"><path d="M3 2 L3 22 L8 17 L12 26 L16 24 L12 15 L20 15 Z"/></svg><i></i></div></div><canvas width="1280" height="800" tabindex="0" aria-label="Shared browser page"></canvas><div class="shared-browser-empty">'+h("globe")+'<h3>A browser you can use with Clay</h3><p>Enter an address to browse together.<br>Localhost connects to the Clay host.</p><p class="shared-browser-private">Site data lasts only for this browser session.</p></div><textarea class="shared-browser-keyboard" aria-label="Type into shared browser" autocomplete="off" autocapitalize="off" spellcheck="false"></textarea><span class="shared-browser-monitor-brand" aria-hidden="true">Clay Studio</span><span class="shared-browser-monitor-detail" aria-hidden="true"></span><span class="shared-browser-monitor-stand" aria-hidden="true"></span></div><div class="shared-browser-caption"><span class="shared-browser-monitor-label"></span>'+Ue()+'</div></div><p class="shared-browser-error hidden" role="status"></p><footer class="shared-browser-footer"><div class="shared-browser-control"><span class="shared-browser-control-status" role="status" aria-live="polite">You and Clay can control this browser</span><button type="button" data-action="control" aria-pressed="false"></button></div><div class="shared-browser-details"><span class="shared-browser-cookie-mode"></span>'+je()+'<button type="button" data-action="end">End browser</button></div></footer>',e.appendChild(r),r.querySelector('[data-action="hide"]').onclick=Y,r.querySelector('[data-action="wide"]').onclick=function(){var o=!(n.get("sharedBrowserUi")||{}).wide;B({wide:o}),f()},r.querySelector('[data-action="fullscreen"]').onclick=function(){var o=!(n.get("sharedBrowserUi")||{}).fullscreen;Fe(o),le("browser",o)},["back","forward","reload"].forEach(function(o){r.querySelector('[data-action="'+o+'"]').onclick=function(){v({kind:o})}}),r.querySelector("form").onsubmit=function(o){o.preventDefault(),v({kind:"navigate",url:r.querySelector("form input").value})},r.querySelector('[data-action="control"]').onclick=function(){var o=n.get("sharedBrowser");o&&p("control",{control:o.control==="user"?"agent":"user"})},r.querySelector('[data-action="end"]').onclick=function(){var o=n.get("sharedBrowser");p(o&&o.phase==="ended"?"open":"end",o&&o.phase==="ended"?{incognito:o.incognito}:void 0)},De(r),Ce(r);var t=new ResizeObserver(Ve);t.observe(r.querySelector(".shared-browser-viewport")),Me(r.querySelector("canvas"),r.querySelector("textarea")),M()}}}function se(){var e=n.get("sharedBrowser"),r=(n.get("sharedBrowsers")||[]).length,t=!!n.get("connected")&&!!n.get("activeSessionId"),o=n.get("connected")?n.get("activeSessionId")?e?"View browser":"Open browser":"Browser \xB7 Loading session\u2026":"Browser \xB7 Connecting\u2026";["shared-browser-btn","shared-browser-toggle-btn"].forEach(function(s){var a=document.getElementById(s);if(a){var i=s==="shared-browser-toggle-btn"&&t&&n.get("sharedBrowserOpen")?"Hide browser":o;if(s==="shared-browser-toggle-btn"){var d=a.querySelector(".shared-browser-count");d&&(d.textContent=String(r),d.classList.toggle("hidden",r===0)),r&&(i+=" \xB7 "+r+(r===1?" tab":" tabs"))}a.classList.toggle("hidden",!We()),a.title=t&&e?i+" \xB7 "+e.phase:i,a.setAttribute("aria-label",i),a.setAttribute("aria-expanded",String(!!n.get("sharedBrowserOpen"))),a.disabled=!t}})}function Qe(e,r,t){return t?r?e.handoff?"Switching control\u2026":e.control==="user"?"Only you can control this browser. Clay is paused.":e.activity&&e.activity.phase==="running"?"Clay is working. You can also use this browser":"You and Clay can control this browser":e&&e.phase==="starting"?"Starting\u2026":"Ended":"Disconnected. Status returns on reconnect."}function Xe(e,r,t,o){var s=e.querySelector(".shared-browser-control-status"),a=Qe(r,t,o);s.textContent!==a&&(s.textContent=a);var i=e.querySelector('[data-action="control"]'),d=!!r&&r.control==="user",c=String(d);i.dataset.mode!==c&&(i.dataset.mode=c,i.innerHTML=h(d?"lock":"lock-open")+"<span>"+(d?"Resume shared control":"Pause Clay control")+"</span>",M()),i.title=d?"Let Clay act in this browser again. You keep control too.":"Make this browser exclusively yours until you resume shared control. You can use it either way.",i.setAttribute("aria-pressed",String(d))}function f(){se();var e=z();if(e){Te(e,Ze,p);var r=n.get("sharedBrowser"),t=n.get("sharedBrowserUi")||{},o=n.get("connected"),s=r&&r.phase==="live",a=s&&!r.handoff&&o;e.classList.toggle("hidden",!n.get("sharedBrowserOpen")||!ee()),e.classList.toggle("shared-browser-wide",!!t.wide),e.classList.toggle("panel-fullscreen",!!t.fullscreen),e.querySelector('[data-action="wide"]').setAttribute("aria-pressed",t.wide?"true":"false"),e.querySelector('[data-action="fullscreen"]').setAttribute("aria-pressed",t.fullscreen?"true":"false"),e.querySelector(".shared-browser-phase").textContent=o?r?{starting:"Starting\u2026",live:"Live",ended:"Ended \xB7 Last frame"}[r.phase]:"Ready":"Disconnected",e.querySelector(".shared-browser-phase").dataset.live=s&&o?"true":"false",e.querySelector(".shared-browser-monitor").dataset.live=s&&o?"true":"false";var i=e.querySelector("form input");document.activeElement!==i&&(i.value=r?r.url:""),e.querySelectorAll("form input, form button").forEach(function(l){l.disabled=!a}),e.querySelector("textarea").disabled=!a,e.querySelector("canvas").style.cursor=a?"default":"not-allowed",Xe(e,r,s,o),e.querySelector('[data-action="control"]').disabled=!s||!!r.handoff||!o,e.querySelector('[data-action="control"]').hidden=!s,e.querySelector('[data-action="end"]').disabled=!r||!o,e.querySelector('[data-action="end"]').textContent=r&&r.phase==="ended"?"New browser":"End browser";var d=r&&r.incognito===!1;e.querySelector(".shared-browser-cookie-mode").textContent=d?"Personal browser":"Incognito",e.querySelector(".shared-browser-cookie-mode").title=d?"Cookies and site storage are saved for your account across your Mates.":"Cookies and site storage are isolated and discarded when this tab ends.",e.querySelector(".shared-browser-private").textContent=d?"Your cookies and site storage are remembered across your Mates and browser restarts.":"Site data lasts only for this browser session.";var c=t.error||r&&r.error||"";e.querySelector(".shared-browser-error").textContent=c,e.querySelector(".shared-browser-error").classList.toggle("hidden",!c),e.querySelector(".shared-browser-empty").classList.toggle("hidden",!!(r&&r.url&&t.hasFrame)),Re(e,r,a),E(),_e(e,r,o),Ve()}}function ie(e){var r=n.get("sharedBrowser");if(n.set({sharedBrowser:e}),!r||!e||r.id!==e.id){V(),L(),B({hasFrame:!1,error:"",decoding:!1,captionHistoryKey:null});var t=z();t&&t.querySelector("canvas").getContext("2d").clearRect(0,0,1920,1200)}else r.epoch!==e.epoch&&V()}function Ze(e){var r=(n.get("sharedBrowsers")||[]).find(function(t){return t.id===e});r&&(ie(r),p("view",{visible:j()&&!document.hidden}),f())}function Ye(){return JSON.stringify([n.get("myUserId"),n.get("currentSlug"),n.get("projectSplitViewActiveId"),n.get("sessionOriginId"),n.get("projectSplitViewSocketGeneration")])}function ze(e){n.set({pendingBrowserOpen:null}),!p("open",e)&&n.set({pendingBrowserOpen:{context:Ye(),socket:x(),fields:e||{},expires:Date.now()+15e3}})}function $e(){var e=n.get("pendingBrowserOpen");if(e){if(e.context!==Ye()||e.socket!==x()||e.expires<Date.now()||!n.get("connected")||!n.get("sharedBrowserOpen")){n.set({pendingBrowserOpen:null});return}W()&&(n.set({pendingBrowserOpen:null}),p("open",e.fields)||n.set({pendingBrowserOpen:e}))}}function Kr(e){W();var r=oe("browser:"+e);if(!r)throw new Error("Enter a valid HTTP or HTTPS browser address.");if(!j())throw new Error("Clay Browser is available on desktop screens.");if(!ee())throw new Error("Browser access is unavailable in this conversation.");if(!n.get("connected"))throw new Error("Reconnect before opening this browser link.");ae(),$(!1),J("browser"),n.set({sharedBrowserOpen:!0}),B({error:""}),ze({url:r}),f()}function Ne(){if(W(),!(!ee()||!n.get("connected"))){ae(),J("browser"),n.set({sharedBrowserOpen:!0});var e=n.get("sharedBrowser");e?p("view",{visible:!0}):ze(),f()}}function Y(){Fe(!1),le("browser",!1),n.get("savedWorkspaceApplying")||n.set({pendingBrowserOpen:null}),L(),$(),V(),n.get("sharedBrowserOpen")&&p("view",{visible:!1}),n.set({sharedBrowserOpen:!1}),de("browser"),f()}function er(e,r){if(!e.type||e.type.indexOf("shared_browser_")!==0)return!1;if(xe(e)||ke()&&!r||String(e.sessionId)!==String(pe()||n.get("activeSessionId"))||Le(e))return!0;if(e.type==="shared_browser_state"){var t=n.get("sharedBrowser"),o=e.browsers||(e.browser?[e.browser]:[]);n.set({sharedBrowsers:o});var s=!e.focus&&t&&o.find(function(l){return l.id===t.id});s=s||e.browser||o[0]||null,ie(s),n.set({savedViewBrowserListReady:!0}),e.present&&ee()&&(ae(),J("browser"),n.set({sharedBrowserOpen:!0})),n.get("sharedBrowserOpen")&&s&&p("view",{visible:j()&&!document.hidden}),f()}else if(e.type==="shared_browser_error")B({error:e.error}),f();else if(e.type==="shared_browser_frame"){var a=n.get("sharedBrowser");if(!j()||!n.get("sharedBrowserOpen")||!a||a.id!==e.browserId||(n.get("sharedBrowserUi")||{}).decoding)return!0;var i=n.get("activeSessionId"),d=re();B({decoding:!0});var c=new Image;c.onload=function(){var l=n.get("sharedBrowser");if(l&&l.id===e.browserId&&re()===d&&n.get("activeSessionId")===i&&z()){var u=z().querySelector("canvas");u.width=c.naturalWidth,u.height=c.naturalHeight,u.getContext("2d").drawImage(c,0,0),B({decoding:!1,hasFrame:!0}),f(),ye(e,u,null,u)}},c.onerror=function(){re()===d&&n.get("activeSessionId")===i&&B({decoding:!1})},c.src="data:image/jpeg;base64,"+e.data}return!0}function Jr(){Ie(er,function(t){var o=n.get("savedWorkspaceApplying");n.set({savedWorkspaceApplying:!0,savedViewBrowserListReady:!1});try{V(),ie(null),n.set({sharedBrowsers:[],sharedBrowserUi:{},sharedBrowserSettings:{}}),t||Y(),f()}finally{n.set({savedWorkspaceApplying:o})}}),document.addEventListener("clay-pane-ready",function(){queueMicrotask($e)},!0),fe();var e=document.getElementById("shared-browser-btn");e&&(e.onclick=Ne);var r=document.getElementById("shared-browser-toggle-btn");r&&(r.onclick=function(){n.get("sharedBrowserOpen")?Y():Ne()}),window.matchMedia("(min-width: 1024px)").addEventListener("change",function(){j()||Y(),se()}),document.addEventListener("visibilitychange",function(){n.get("sharedBrowserOpen")&&p("view",{visible:!document.hidden&&j()})}),M(),se(),n.get("connected")&&p("state_request")}Se("browser",Y);n.subscribe(function(e,r){if(e.currentSlug!==r.currentSlug||e.activeSessionId!==r.activeSessionId||e.myUserId!==r.myUserId){if(pe()!==null){f();return}V(),de("browser"),n.set({sharedBrowser:null,sharedBrowsers:[],savedViewBrowserListReady:!1,sharedBrowserOpen:!1,sharedBrowserUi:{},sharedBrowserSettings:{}}),e.connected&&p("state_request"),f()}else e.connected!==r.connected?(n.set({savedViewBrowserListReady:!1}),e.connected&&p("state_request"),f()):(e.permissions!==r.permissions||e.dmMode!==r.dmMode)&&(ee()||Y(),se())});function Gr(e){if(ue()&&!W())return"pending";if(!n.get("savedViewBrowserListReady"))return p("state_request"),"pending";if(!n.get("connected")||!n.get("controlRuntimeId"))return"pending";ae();var r=(n.get("sharedBrowsers")||[]).find(function(o){return o.id===e.id&&o.phase!=="ended"}),t=r&&e.runtimeId===n.get("controlRuntimeId")&&e.sessionOriginId===n.get("sessionOriginId");return J("browser"),n.set({sharedBrowserOpen:!0}),t?(ie(r),p("view",{visible:!0}),B({error:""}),f(),"restored"):(B({error:"This saved browser is unavailable in the current conversation. No replacement browser was opened."}),f(),"unavailable")}function Fe(e){B({fullscreen:!!e}),document.getElementById("shared-browser-panel")&&f()}export{or as a,v as b,Kr as c,Ne as d,Y as e,er as f,Jr as g,Gr as h,Fe as i,cr as j,Ke as k,hr as l};
@@ -1 +0,0 @@
1
- import{g as a,h as b,i as c}from"./chunk-P2C3LOWL.js";import"./chunk-TMGSDFJI.js";import"./chunk-R7QVVFUG.js";import"./chunk-GN2NQEVC.js";import"./chunk-VZ2OKDAO.js";export{a as closeWireframe,b as openWireframe,c as restoreWireframeWorkbench};
@@ -1 +0,0 @@
1
- import{$c as e,Xc as a,Yc as b,Zc as c,_c as d,ad as f,bd as g,cd as h,dd as i,ed as j,fd as k,gd as l,hd as m,id as n,jd as o}from"./chunk-IMLMBPT4.js";import"./chunk-6NYCNWVF.js";import"./chunk-JIV7O5GN.js";import"./chunk-R4LMPTKU.js";import"./chunk-P2C3LOWL.js";import"./chunk-TMGSDFJI.js";import"./chunk-R7QVVFUG.js";import"./chunk-GN2NQEVC.js";import"./chunk-VZ2OKDAO.js";export{c as closeTerminal,j as handleTermClosed,e as handleTermCreated,i as handleTermExited,d as handleTermList,g as handleTermOutput,h as handleTermResized,f as handleTerminalProjection,a as initTerminal,b as openTerminal,k as resetTerminals,n as restoreExistingTerminal,l as sendTerminalCommand,o as setTerminalExpanded,m as setTerminalTheme};
@@ -1 +0,0 @@
1
- import{ec as a,fc as b,gc as c,hc as d}from"./chunk-IMLMBPT4.js";import"./chunk-6NYCNWVF.js";import"./chunk-JIV7O5GN.js";import"./chunk-R4LMPTKU.js";import"./chunk-P2C3LOWL.js";import"./chunk-TMGSDFJI.js";import"./chunk-R7QVVFUG.js";import"./chunk-GN2NQEVC.js";import"./chunk-VZ2OKDAO.js";export{c as closeDebatesWorkbench,a as handleDebatesWorkbenchState,d as initDebatesWorkbench,b as openDebatesWorkbench};
@@ -1 +0,0 @@
1
- import{l as a,m as b,n as c,o as d}from"./chunk-IMLMBPT4.js";import"./chunk-6NYCNWVF.js";import"./chunk-JIV7O5GN.js";import"./chunk-R4LMPTKU.js";import"./chunk-P2C3LOWL.js";import"./chunk-TMGSDFJI.js";import"./chunk-R7QVVFUG.js";import"./chunk-GN2NQEVC.js";import"./chunk-VZ2OKDAO.js";export{a as closeLinear,c as handleLinearResult,d as initLinearPanel,b as openLinear};