@pstdio/workbench 0.11.4 → 0.12.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.
@@ -1,4 +1,4 @@
1
- const n = '// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\nfunction ee(){let e=globalThis;if(e.window!==void 0&&e.document!==void 0)return"browser";if(e.WorkerGlobalScope!==void 0&&e.self!==void 0&&e.self instanceof e.WorkerGlobalScope||e.window===void 0&&e.self!==void 0&&typeof e.importScripts=="function")return"worker";let t=e.process;if(t&&typeof t=="object"){let n=t.versions??{},o=t.release?.name;if(n.bun||o==="bun"||e.Bun!==void 0)return"bun";if(n.node&&o==="node")return"node"}return e.Bun===void 0?"browser":"bun"}function T(){return ee()}function V(){return T()==="worker"}function B(){let e=T();return e==="node"||e==="bun"}function te(){return window.self!==window.top}function ne(e){let t={};return function n(o,i=""){Object.keys(o).forEach((r)=>{let s=i?`${i}.${r}`:r;o[r]===Object(o[r])&&n(o[r],s),typeof o[r]=="function"&&(t[s]=o[r],delete o[r])})}(e),t}function re(e){return!e||e==="null"?"*":e}function oe(e,t,n){if(!e||typeof e!="object")return e;let o=Array.isArray(t)?t:t.split(".").map((r)=>r.match(/^\\d+$/)?Number(r):r),i=e;for(let r=0;r<o.length;r++){let s=o[r];r===o.length-1?i[s]=n:((!i[s]||typeof i[s]!="object")&&(i[s]=typeof o[r+1]=="number"?[]:{}),i=i[s])}return e}function se(e=10){let t="";for(let n=0;n<e;n++)t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random()*62));return t}var K=T(),P=null;if(K==="node"||K==="bun")try{let e=globalThis.require;P=e?.("node:worker_threads")?.parentPort??null}catch{}function ie(){if(B())return P;if(V())return self;if(te())return window.parent;throw Error("No valid target found for postMessage")}function C(e,t,n,o){if(!e)throw Error("Rimless Error: No target specified for postMessage");if(B()&&e===P){e.postMessage(t,{transfer:o});return}if(V()){e.postMessage(t,{transfer:o});return}if(e.postMessage){e.postMessage(t,{targetOrigin:re(n),transfer:o});return}throw Error("Rimless Error: Invalid target for postMessage")}function z(e){return P!==null&&e===P}function H(e,t,n){z(e)?e.on(t,n):("addEventListener"in e)&&e.addEventListener(t,n)}function L(e,t,n){z(e)?e.off(t,n):("removeEventListener"in e)&&e.removeEventListener(t,n)}function N(e){return e.data||e}var b=function(e){return e.MESSAGE="message",e}({}),v=function(e){return e.HANDSHAKE_REQUEST="RIMLESS/HANDSHAKE_REQUEST",e.HANDSHAKE_REPLY="RIMLESS/HANDSHAKE_REPLY",e.RPC_REQUEST="RIMLESS/RPC_REQUEST",e.RPC_RESOLVE="RIMLESS/RPC_RESOLVE",e.RPC_REJECT="RIMLESS/RPC_REJECT",e}({}),S=Symbol();function ae(e={},t,n,o,i){let r=[];for(let[s,d]of Object.entries(e)){async function a(f){let{action:E,callID:m,connectionID:l,callName:w,args:h=[]}=N(f);if(E!==v.RPC_REQUEST||!m||!w||w!==s||l!==t)return;let g={action:v.RPC_RESOLVE,callID:m,callName:w,connectionID:l,error:null,result:null},R;try{g.result=await d(...h,i),g.result?.[S]&&(R=g.result[S]??[],delete g.result[S])}catch(A){g.action=v.RPC_REJECT,g.error=JSON.parse(JSON.stringify(A,Object.getOwnPropertyNames(A)))}C(o,g,f?.origin,R)}H(n,b.MESSAGE,a),r.push(()=>L(n,b.MESSAGE,a))}return()=>r.forEach((s)=>s())}function ce(e,t,n,o=[],i,r){return(...s)=>new Promise((d,a)=>{let f=se();function E(w){let{callID:h,connectionID:g,callName:R,result:A,error:Z,action:W}=N(w);if(!(!h||!R)&&R===e&&h===f&&g===t){if(W===v.RPC_RESOLVE)return d(A);if(W===v.RPC_REJECT)return a(Z)}}let m={action:v.RPC_REQUEST,args:s,callID:f,callName:e,connectionID:t},l=s.reduce((w,h)=>h[S]?.length?w.concat(h[S]):w,s[S]??[]);H(i,b.MESSAGE,E),o.push(()=>L(i,b.MESSAGE,E)),C(r,m,n?.origin,l)})}function de(e={},t=[],n,o,i,r){let s={...e},d=[];for(let a of t)oe(s,a,ce(a,n,o,d,i,r));return{remote:s,unregisterRemote:()=>d.forEach((a)=>a())}}function le(e={},t){return new Promise(async(n)=>{let o=ne(e),i=ie(),r=self||window;async function s(d){let a=N(d);if(a?.action!==v.HANDSHAKE_REPLY)return;let{remote:f,unregisterRemote:E}=de(a.schema,a.methodNames,a.connectionID,d,r,i),m=ae(o,a.connectionID,r,i,f);return await t?.onConnectionSetup?.(f),C(i,{action:v.HANDSHAKE_REPLY,connectionID:a.connectionID},d?.origin),n({remote:f,close:()=>{L(r,b.MESSAGE,s),E(),m()},id:a.connectionID})}H(r,b.MESSAGE,s),C(i,{action:v.HANDSHAKE_REQUEST,methodNames:Object.keys(o),schema:e})})}var G={connect:le};var ue=(e)=>typeof e==="object"&&e!==null,q=(e)=>{try{let t=JSON.stringify(e);if(typeof t==="string"&&t.length>0)return t}catch{}try{return String(e)}catch{return"Unknown error"}},j=(e)=>{if(e instanceof Error)return{message:e.message,stack:e.stack};if(typeof e==="string")return{message:e};if(ue(e)){let t=typeof e.message==="string"?e.message:null,n=typeof e.stack==="string"?e.stack:void 0;if(t)return n?{message:t,stack:n}:{message:t};return{message:q(e)}}if(e===null||e===void 0)return{message:"Unknown error"};return{message:q(e)}};var O=["sidenav","main","secondary","side"];var p=(e,t)=>({extensionId:"pstdio",kind:e,id:t}),y={project:p("mode","project"),sessions:p("mode","sessions"),settings:p("mode","settings")},Re={project:{ref:y.project,regions:O},sessions:{ref:y.sessions,regions:O},settings:{ref:y.settings,regions:O}},_=(e,t,n)=>({id:e,ref:p("resource-kind",e),label:t,menuSlots:n}),U=[{id:"headerPrimary",placement:"header-primary",access:"public"},{id:"headerOverflow",placement:"header-overflow",access:"public"}],D={project:_("project","Extension",U),session:_("session","Session",U),workspace:_("workspace","Workspace",U)},k={project:D.project.ref,session:D.session.ref,workspace:D.workspace.ref},x={start:p("page","start"),sessions:p("page","sessions"),session:p("page","session"),workspaces:p("page","workspaces"),workspace:p("page","workspace")},Pe={start:{ref:x.start,mode:y.project,path:"",primary:{cardinality:"one",resourceKinds:[]}},sessions:{ref:x.sessions,mode:y.sessions,path:"sessions",primary:{cardinality:"one",resourceKinds:[]}},session:{ref:x.session,mode:y.sessions,path:"session",primary:{cardinality:"one",resourceKinds:["session","session-draft"]}},workspaces:{ref:x.workspaces,mode:y.project,path:"workspaces",primary:{cardinality:"one",resourceKinds:[]}},workspace:{ref:x.workspace,mode:y.project,path:"workspace",primary:{cardinality:"many",resourceKinds:["workspace"]}}},pe={projectSession:p("placement","project-session")},xe={projectSession:{ref:pe.projectSession,mode:y.project,cardinality:"many",resourceKinds:["session","session-draft"]}},Ae={projectSettings:p("settings-panel","project.settings"),statusBarLeading:p("status-bar-item","status-bar.leading"),statusBarTrailing:p("status-bar-item","status-bar.trailing")};var J=(e)=>({...e,kind:"command"}),Ce=Object.assign(J,{forExtension:(e)=>(t)=>J({extensionId:`${e.publisher}.${e.name}`,id:t})}),fe=(e)=>({...e,kind:"event"}),M=(e,t)=>({id:e,kind:t.kind,label:t.label,description:t.description,metadata:t.metadata}),u=(e)=>fe({extensionId:"pstdio",id:e}),I=(e,t)=>M(`${e.id}.${t}`,{kind:"menu"}),je={sidenav:M("project.sidenav",{kind:"panel"}),headerPrimary:I(k.project,"headerPrimary"),headerOverflow:I(k.project,"headerOverflow"),settingsPanels:M("project.settingsPanels",{kind:"settings"})},Me={headerPrimary:I(k.session,"headerPrimary"),headerOverflow:I(k.session,"headerOverflow")},Te={headerPrimary:I(k.workspace,"headerPrimary"),headerOverflow:I(k.workspace,"headerOverflow"),sidenav:M("workspace.sidenav",{kind:"panel"})},He={opened:u("project.opened")},Le={started:u("session.started"),resumed:u("session.resumed"),awaitingInput:u("session.awaitingInput"),succeeded:u("session.succeeded"),failed:u("session.failed"),completed:u("session.completed")},Ne={created:u("workspace.created"),provision:u("workspace.provision"),ready:u("workspace.ready"),archived:u("workspace.archived"),deleted:u("workspace.deleted")},Oe={removed:u("worktree.removed")},_e={committed:u("git.committed"),rebased:u("git.rebased"),merged:u("git.merged"),conflicted:u("git.conflicted")};var me=["commands.execute","navigation.open","placement.close","notification.show","notification.action","notification.resolve","notification.dismiss","preferences.get","preferences.set","extension.settings.all","extension.settings.get","extension.settings.set","extension.settings.delete","terminal.session","files.upload","files.list","files.delete"],ge=["artifacts.read"],ve=["host.dispatchKeyboardEvent"],$e=[...me,...ge,...ve];var c=(e)=>(t)=>({...t,ref:{kind:e,id:t.id}}),Ue=c("view"),De=c("view-menu"),We=c("placement"),Ke=c("resource-kind");var Ve=c("navigation-item"),Be=c("navigation-tree"),ze=c("mode");var Ge=c("status-bar-item"),qe=c("status"),Je=c("settings-panel"),Ye=c("activity-item"),Qe=c("settings-section"),Fe=c("command-palette-resource"),Xe=c("keybinding"),Ze=c("schedule"),et=c("artifact-mount"),tt=c("template-type"),nt=c("template"),rt=c("skill"),ot=c("theme"),st=c("file-icon-theme"),it=c("workspace-type"),at=c("harness"),ct=c("connection");var Y=(e,t,n)=>({call:async(o,...i)=>{try{return await e({method:o,params:i[0]})}catch(r){if(r instanceof Error)throw r;throw Error(j(r).message)}},onEvent:t,extensionId:n}),Q=(e)=>{let t=e,n=new Set;return{get:()=>t,subscribe:(o)=>(n.add(o),()=>n.delete(o)),set:(o)=>{t=o;for(let i of n)i(t)}}};var F="pstdio-extension-mount",ye=()=>{let e=new Map;return{get length(){return e.size},clear:()=>e.clear(),getItem:(t)=>e.get(t)??null,key:(t)=>Array.from(e.keys())[t]??null,removeItem:(t)=>e.delete(t),setItem:(t,n)=>e.set(t,n)}},Ee=()=>{for(let e of["localStorage","sessionStorage"])try{window[e]}catch{Object.defineProperty(window,e,{configurable:!0,value:ye()})}},X=(e,t)=>{let n=document.documentElement,o=e==="dark"?"light":"dark";n.classList.remove(o),n.classList.add(e),n.setAttribute("data-theme",e),n.style.colorScheme=e;for(let[i,r]of Object.entries(t))if(i.startsWith("--"))n.style.setProperty(i,r)},we=(e)=>{for(let t of e){let n=document.createElement("link");n.rel="stylesheet",n.href=t,document.head.appendChild(n)}},he=()=>{let e=document.getElementById(F);if(!e)e=document.createElement("div"),e.id=F,e.style.height="100%",e.style.width="100%",document.body.appendChild(e);return e},Se=(e)=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLElement&&e.isContentEditable,be=async()=>{Ee();let e=Q(void 0),t=new Map,n=(s,d)=>{let a=t.get(s)??new Set;return a.add(d),t.set(s,a),()=>{a.delete(d)}},o,i=!1,r=await G.connect({init:async(s)=>{try{X(s.theme,s.themeVariables),we(s.styles),e.set(s.props);let d=he(),a=await import(s.moduleUrl),f=a.default??(a.mount?a:void 0);if(!f?.mount)throw Error("Extension module does not export a default view (defineExtensionView).");let E=Y((l)=>r.remote.call(l),n,s.extensionId),m=await f.mount(d,E,e);if(o=typeof m==="function"?m:void 0,!i)i=!0,document.addEventListener("keydown",(l)=>{if(!l.ctrlKey&&!l.metaKey&&!l.altKey)return;if(Se(l.target)&&!l.shiftKey)return;r.remote.call({method:"host.dispatchKeyboardEvent",params:{key:l.key,code:l.code,ctrlKey:l.ctrlKey,metaKey:l.metaKey,altKey:l.altKey,shiftKey:l.shiftKey,repeat:l.repeat}}).catch(()=>{})},!0)}catch(d){let a=j(d);throw r.remote.runtimeError(a),d instanceof Error?d:Error(a.message)}},themeUpdate:(s)=>{X(s.theme,s.variables)},propsUpdate:(s)=>{e.set(s.props)},hostEvent:(s)=>{for(let d of t.get(s.scope)??[])d(s.payload)}});r.remote.ready({}),window.addEventListener("beforeunload",()=>{o?.()})};be();\n', t = "pstdio-extension-mount", s = (e) => e.replaceAll("&", "&amp;").replaceAll('"', "&quot;").replaceAll("<", "&lt;"), o = (e) => e.replaceAll("<\/script", "<\\/script").replaceAll("<!--", "<\\!--"), r = (e) => `<!doctype html>
1
+ const n = '// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\nfunction ee(){let e=globalThis;if(e.window!==void 0&&e.document!==void 0)return"browser";if(e.WorkerGlobalScope!==void 0&&e.self!==void 0&&e.self instanceof e.WorkerGlobalScope||e.window===void 0&&e.self!==void 0&&typeof e.importScripts=="function")return"worker";let t=e.process;if(t&&typeof t=="object"){let n=t.versions??{},o=t.release?.name;if(n.bun||o==="bun"||e.Bun!==void 0)return"bun";if(n.node&&o==="node")return"node"}return e.Bun===void 0?"browser":"bun"}function M(){return ee()}function V(){return M()==="worker"}function B(){let e=M();return e==="node"||e==="bun"}function te(){return window.self!==window.top}function ne(e){let t={};return function n(o,i=""){Object.keys(o).forEach((r)=>{let s=i?`${i}.${r}`:r;o[r]===Object(o[r])&&n(o[r],s),typeof o[r]=="function"&&(t[s]=o[r],delete o[r])})}(e),t}function re(e){return!e||e==="null"?"*":e}function oe(e,t,n){if(!e||typeof e!="object")return e;let o=Array.isArray(t)?t:t.split(".").map((r)=>r.match(/^\\d+$/)?Number(r):r),i=e;for(let r=0;r<o.length;r++){let s=o[r];r===o.length-1?i[s]=n:((!i[s]||typeof i[s]!="object")&&(i[s]=typeof o[r+1]=="number"?[]:{}),i=i[s])}return e}function se(e=10){let t="";for(let n=0;n<e;n++)t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random()*62));return t}var K=M(),P=null;if(K==="node"||K==="bun")try{let e=globalThis.require;P=e?.("node:worker_threads")?.parentPort??null}catch{}function ie(){if(B())return P;if(V())return self;if(te())return window.parent;throw Error("No valid target found for postMessage")}function C(e,t,n,o){if(!e)throw Error("Rimless Error: No target specified for postMessage");if(B()&&e===P){e.postMessage(t,{transfer:o});return}if(V()){e.postMessage(t,{transfer:o});return}if(e.postMessage){e.postMessage(t,{targetOrigin:re(n),transfer:o});return}throw Error("Rimless Error: Invalid target for postMessage")}function z(e){return P!==null&&e===P}function H(e,t,n){z(e)?e.on(t,n):("addEventListener"in e)&&e.addEventListener(t,n)}function L(e,t,n){z(e)?e.off(t,n):("removeEventListener"in e)&&e.removeEventListener(t,n)}function N(e){return e.data||e}var S=function(e){return e.MESSAGE="message",e}({}),y=function(e){return e.HANDSHAKE_REQUEST="RIMLESS/HANDSHAKE_REQUEST",e.HANDSHAKE_REPLY="RIMLESS/HANDSHAKE_REPLY",e.RPC_REQUEST="RIMLESS/RPC_REQUEST",e.RPC_RESOLVE="RIMLESS/RPC_RESOLVE",e.RPC_REJECT="RIMLESS/RPC_REJECT",e}({}),k=Symbol();function ae(e={},t,n,o,i){let r=[];for(let[s,d]of Object.entries(e)){async function a(u){let{action:w,callID:m,connectionID:l,callName:h,args:v=[]}=N(u);if(w!==y.RPC_REQUEST||!m||!h||h!==s||l!==t)return;let g={action:y.RPC_RESOLVE,callID:m,callName:h,connectionID:l,error:null,result:null},R;try{g.result=await d(...v,i),g.result?.[k]&&(R=g.result[k]??[],delete g.result[k])}catch(A){g.action=y.RPC_REJECT,g.error=JSON.parse(JSON.stringify(A,Object.getOwnPropertyNames(A)))}C(o,g,u?.origin,R)}H(n,S.MESSAGE,a),r.push(()=>L(n,S.MESSAGE,a))}return()=>r.forEach((s)=>s())}function ce(e,t,n,o=[],i,r){return(...s)=>new Promise((d,a)=>{let u=se();function w(h){let{callID:v,connectionID:g,callName:R,result:A,error:Z,action:W}=N(h);if(!(!v||!R)&&R===e&&v===u&&g===t){if(W===y.RPC_RESOLVE)return d(A);if(W===y.RPC_REJECT)return a(Z)}}let m={action:y.RPC_REQUEST,args:s,callID:u,callName:e,connectionID:t},l=s.reduce((h,v)=>v[k]?.length?h.concat(v[k]):h,s[k]??[]);H(i,S.MESSAGE,w),o.push(()=>L(i,S.MESSAGE,w)),C(r,m,n?.origin,l)})}function de(e={},t=[],n,o,i,r){let s={...e},d=[];for(let a of t)oe(s,a,ce(a,n,o,d,i,r));return{remote:s,unregisterRemote:()=>d.forEach((a)=>a())}}function le(e={},t){return new Promise(async(n)=>{let o=ne(e),i=ie(),r=self||window;async function s(d){let a=N(d);if(a?.action!==y.HANDSHAKE_REPLY)return;let{remote:u,unregisterRemote:w}=de(a.schema,a.methodNames,a.connectionID,d,r,i),m=ae(o,a.connectionID,r,i,u);return await t?.onConnectionSetup?.(u),C(i,{action:y.HANDSHAKE_REPLY,connectionID:a.connectionID},d?.origin),n({remote:u,close:()=>{L(r,S.MESSAGE,s),w(),m()},id:a.connectionID})}H(r,S.MESSAGE,s),C(i,{action:y.HANDSHAKE_REQUEST,methodNames:Object.keys(o),schema:e})})}var G={connect:le};var pe=(e)=>typeof e==="object"&&e!==null,q=(e)=>{try{let t=JSON.stringify(e);if(typeof t==="string"&&t.length>0)return t}catch{}try{return String(e)}catch{return"Unknown error"}},j=(e)=>{if(e instanceof Error)return{message:e.message,stack:e.stack};if(typeof e==="string")return{message:e};if(pe(e)){let t=typeof e.message==="string"?e.message:null,n=typeof e.stack==="string"?e.stack:void 0;if(t)return n?{message:t,stack:n}:{message:t};return{message:q(e)}}if(e===null||e===void 0)return{message:"Unknown error"};return{message:q(e)}};var O=["sidenav","main","secondary","side"];var f=(e,t)=>({extensionId:"pstdio",kind:e,id:t}),E={project:f("mode","project"),sessions:f("mode","sessions"),settings:f("mode","settings")},Re={project:{ref:E.project,regions:O},sessions:{ref:E.sessions,regions:O},settings:{ref:E.settings,regions:O}},_=(e,t,n)=>({id:e,ref:f("resource-kind",e),label:t,menuSlots:n}),U=[{id:"headerPrimary",placement:"header-primary",access:"public"},{id:"headerOverflow",placement:"header-overflow",access:"public"}],D={project:_("project","Extension",U),session:_("session","Session",U),workspace:_("workspace","Workspace",U)},b={project:D.project.ref,session:D.session.ref,workspace:D.workspace.ref},x={start:f("page","start"),sessions:f("page","sessions"),session:f("page","session"),workspaces:f("page","workspaces"),workspace:f("page","workspace")},Pe={start:{ref:x.start,mode:E.project,path:"",primary:{cardinality:"one",resourceKinds:[]}},sessions:{ref:x.sessions,mode:E.sessions,path:"sessions",primary:{cardinality:"one",resourceKinds:[]}},session:{ref:x.session,mode:E.sessions,path:"session",primary:{cardinality:"one",resourceKinds:["session","session-draft"]}},workspaces:{ref:x.workspaces,mode:E.project,path:"workspaces",primary:{cardinality:"one",resourceKinds:[]}},workspace:{ref:x.workspace,mode:E.project,path:"workspace",primary:{cardinality:"many",resourceKinds:["workspace"]}}},fe={projectSession:f("placement","project-session")},xe={projectSession:{ref:fe.projectSession,mode:E.project,cardinality:"many",resourceKinds:["session","session-draft"]}},Ae={projectSettings:f("settings-panel","project.settings"),statusBarLeading:f("status-bar-item","status-bar.leading"),statusBarTrailing:f("status-bar-item","status-bar.trailing")};var J=(e)=>({...e,kind:"command"}),Ce=Object.assign(J,{forExtension:(e)=>(t)=>J({extensionId:`${e.publisher}.${e.name}`,id:t})}),ue=(e)=>({...e,kind:"event"}),T=(e,t)=>({id:e,kind:t.kind,label:t.label,description:t.description,metadata:t.metadata}),p=(e)=>ue({extensionId:"pstdio",id:e}),I=(e,t)=>T(`${e.id}.${t}`,{kind:"menu"}),je={sidenav:T("project.sidenav",{kind:"panel"}),headerPrimary:I(b.project,"headerPrimary"),headerOverflow:I(b.project,"headerOverflow"),settingsPanels:T("project.settingsPanels",{kind:"settings"})},Te={headerPrimary:I(b.session,"headerPrimary"),headerOverflow:I(b.session,"headerOverflow")},Me={headerPrimary:I(b.workspace,"headerPrimary"),headerOverflow:I(b.workspace,"headerOverflow"),sidenav:T("workspace.sidenav",{kind:"panel"})},He={opened:p("project.opened")},Le={started:p("session.started"),resumed:p("session.resumed"),awaitingInput:p("session.awaitingInput"),succeeded:p("session.succeeded"),failed:p("session.failed"),completed:p("session.completed")},Ne={created:p("workspace.created"),provision:p("workspace.provision"),ready:p("workspace.ready"),archived:p("workspace.archived"),deleted:p("workspace.deleted")},Oe={removed:p("worktree.removed")},_e={committed:p("git.committed"),rebased:p("git.rebased"),merged:p("git.merged"),conflicted:p("git.conflicted")};var me=["commands.execute","navigation.open","placement.close","notification.show","notification.action","notification.resolve","notification.dismiss","preferences.get","preferences.set","extension.settings.all","extension.settings.get","extension.settings.set","extension.settings.delete","terminal.session","files.upload","files.list","files.delete"],ge=["artifacts.read"],ye=["host.dispatchKeyboardEvent"],$e=[...me,...ge,...ye];var c=(e)=>(t)=>({...t,ref:{kind:e,id:t.id}}),Ue=c("view"),De=c("view-menu"),We=c("placement"),Ke=c("resource-kind");var Ve=c("navigation-item"),Be=c("navigation-tree"),ze=c("mode");var Ge=c("status-bar-item"),qe=c("status"),Je=c("settings-panel"),Ye=c("activity-item"),Qe=c("settings-section"),Fe=c("command-palette-resource"),Xe=c("keybinding"),Ze=c("schedule"),et=c("artifact-mount"),tt=c("template-type"),nt=c("template"),rt=c("skill"),ot=c("theme"),st=c("file-icon-theme"),it=c("workspace-type"),at=c("harness"),ct=c("connection");var Y=(e,t,n)=>({call:async(o,...i)=>{try{return await e({method:o,params:i[0]})}catch(r){if(r instanceof Error)throw r;throw Error(j(r).message)}},onEvent:t,extensionId:n}),Q=(e)=>{let t=e,n=new Set;return{get:()=>t,subscribe:(o)=>(n.add(o),()=>n.delete(o)),set:(o)=>{t=o;for(let i of n)i(t)}}};var F="pstdio-extension-mount",Ee=()=>{let e=new Map;return{get length(){return e.size},clear:()=>e.clear(),getItem:(t)=>e.get(t)??null,key:(t)=>Array.from(e.keys())[t]??null,removeItem:(t)=>e.delete(t),setItem:(t,n)=>e.set(t,n)}},we=()=>{for(let e of["localStorage","sessionStorage"])try{window[e]}catch{Object.defineProperty(window,e,{configurable:!0,value:Ee()})}},X=(e,t)=>{let n=document.documentElement,o=e==="dark"?"light":"dark";n.classList.remove(o),n.classList.add(e),n.setAttribute("data-theme",e),n.style.colorScheme=e;for(let[i,r]of Object.entries(t))if(i.startsWith("--"))n.style.setProperty(i,r)},he=(e)=>{for(let t of e){let n=document.createElement("link");n.rel="stylesheet",n.href=t,document.head.appendChild(n)}},ve=()=>{let e=document.getElementById(F);if(!e)e=document.createElement("div"),e.id=F,e.style.height="100%",e.style.width="100%",document.body.appendChild(e);return e},ke=(e)=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLElement&&e.isContentEditable,Se=async()=>{we();let e=Q(void 0),t=new Map,n=(s,d)=>{let a=t.get(s)??new Set;return a.add(d),t.set(s,a),()=>{a.delete(d)}},o,i=!1,r=await G.connect({init:async(s)=>{try{X(s.theme,s.themeVariables),he(s.styles),e.set(s.props);let d=ve(),a=await import(s.moduleUrl),u=a.default??(a.mount?a:void 0);if(!u?.mount)throw Error("Extension module does not export a default view (defineExtensionView).");let w=Y((l)=>r.remote.call(l),n,s.extensionId),m=await u.mount(d,w,e);if(o=typeof m==="function"?m:void 0,!i)i=!0,document.addEventListener("keydown",(l)=>{if(!l.ctrlKey&&!l.metaKey&&!l.altKey)return;if(ke(l.target)&&!l.shiftKey)return;r.remote.call({method:"host.dispatchKeyboardEvent",params:{key:l.key,code:l.code,ctrlKey:l.ctrlKey,metaKey:l.metaKey,altKey:l.altKey,shiftKey:l.shiftKey,repeat:l.repeat}}).catch(()=>{})},!0)}catch(d){let a=j(d);throw r.remote.runtimeError(a),d instanceof Error?d:Error(a.message)}},themeUpdate:(s)=>{X(s.theme,s.variables)},propsUpdate:(s)=>{e.set(s.props)},hostEvent:(s)=>{for(let d of t.get(s.scope)??[])d(s.payload)}});r.remote.ready({}),window.addEventListener("beforeunload",()=>{o?.()})};Se();\n', t = "pstdio-extension-mount", s = (e) => e.replaceAll("&", "&amp;").replaceAll('"', "&quot;").replaceAll("<", "&lt;"), o = (e) => e.replaceAll("<\/script", "<\\/script").replaceAll("<!--", "<\\!--"), r = (e) => `<!doctype html>
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
@@ -1 +1 @@
1
- {"version":3,"file":"webview-runtime.js","sources":["../../pstdio-extensions/src/bridge/webview-runtime/runtime.bundle.js?raw","../../pstdio-extensions/src/bridge/webview-runtime/runtime-html.ts","../src/webview-runtime/index.ts"],"sourcesContent":["export default \"// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\\nfunction ee(){let e=globalThis;if(e.window!==void 0&&e.document!==void 0)return\\\"browser\\\";if(e.WorkerGlobalScope!==void 0&&e.self!==void 0&&e.self instanceof e.WorkerGlobalScope||e.window===void 0&&e.self!==void 0&&typeof e.importScripts==\\\"function\\\")return\\\"worker\\\";let t=e.process;if(t&&typeof t==\\\"object\\\"){let n=t.versions??{},o=t.release?.name;if(n.bun||o===\\\"bun\\\"||e.Bun!==void 0)return\\\"bun\\\";if(n.node&&o===\\\"node\\\")return\\\"node\\\"}return e.Bun===void 0?\\\"browser\\\":\\\"bun\\\"}function T(){return ee()}function V(){return T()===\\\"worker\\\"}function B(){let e=T();return e===\\\"node\\\"||e===\\\"bun\\\"}function te(){return window.self!==window.top}function ne(e){let t={};return function n(o,i=\\\"\\\"){Object.keys(o).forEach((r)=>{let s=i?`${i}.${r}`:r;o[r]===Object(o[r])&&n(o[r],s),typeof o[r]==\\\"function\\\"&&(t[s]=o[r],delete o[r])})}(e),t}function re(e){return!e||e===\\\"null\\\"?\\\"*\\\":e}function oe(e,t,n){if(!e||typeof e!=\\\"object\\\")return e;let o=Array.isArray(t)?t:t.split(\\\".\\\").map((r)=>r.match(/^\\\\d+$/)?Number(r):r),i=e;for(let r=0;r<o.length;r++){let s=o[r];r===o.length-1?i[s]=n:((!i[s]||typeof i[s]!=\\\"object\\\")&&(i[s]=typeof o[r+1]==\\\"number\\\"?[]:{}),i=i[s])}return e}function se(e=10){let t=\\\"\\\";for(let n=0;n<e;n++)t+=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\\".charAt(Math.floor(Math.random()*62));return t}var K=T(),P=null;if(K===\\\"node\\\"||K===\\\"bun\\\")try{let e=globalThis.require;P=e?.(\\\"node:worker_threads\\\")?.parentPort??null}catch{}function ie(){if(B())return P;if(V())return self;if(te())return window.parent;throw Error(\\\"No valid target found for postMessage\\\")}function C(e,t,n,o){if(!e)throw Error(\\\"Rimless Error: No target specified for postMessage\\\");if(B()&&e===P){e.postMessage(t,{transfer:o});return}if(V()){e.postMessage(t,{transfer:o});return}if(e.postMessage){e.postMessage(t,{targetOrigin:re(n),transfer:o});return}throw Error(\\\"Rimless Error: Invalid target for postMessage\\\")}function z(e){return P!==null&&e===P}function H(e,t,n){z(e)?e.on(t,n):(\\\"addEventListener\\\"in e)&&e.addEventListener(t,n)}function L(e,t,n){z(e)?e.off(t,n):(\\\"removeEventListener\\\"in e)&&e.removeEventListener(t,n)}function N(e){return e.data||e}var b=function(e){return e.MESSAGE=\\\"message\\\",e}({}),v=function(e){return e.HANDSHAKE_REQUEST=\\\"RIMLESS/HANDSHAKE_REQUEST\\\",e.HANDSHAKE_REPLY=\\\"RIMLESS/HANDSHAKE_REPLY\\\",e.RPC_REQUEST=\\\"RIMLESS/RPC_REQUEST\\\",e.RPC_RESOLVE=\\\"RIMLESS/RPC_RESOLVE\\\",e.RPC_REJECT=\\\"RIMLESS/RPC_REJECT\\\",e}({}),S=Symbol();function ae(e={},t,n,o,i){let r=[];for(let[s,d]of Object.entries(e)){async function a(f){let{action:E,callID:m,connectionID:l,callName:w,args:h=[]}=N(f);if(E!==v.RPC_REQUEST||!m||!w||w!==s||l!==t)return;let g={action:v.RPC_RESOLVE,callID:m,callName:w,connectionID:l,error:null,result:null},R;try{g.result=await d(...h,i),g.result?.[S]&&(R=g.result[S]??[],delete g.result[S])}catch(A){g.action=v.RPC_REJECT,g.error=JSON.parse(JSON.stringify(A,Object.getOwnPropertyNames(A)))}C(o,g,f?.origin,R)}H(n,b.MESSAGE,a),r.push(()=>L(n,b.MESSAGE,a))}return()=>r.forEach((s)=>s())}function ce(e,t,n,o=[],i,r){return(...s)=>new Promise((d,a)=>{let f=se();function E(w){let{callID:h,connectionID:g,callName:R,result:A,error:Z,action:W}=N(w);if(!(!h||!R)&&R===e&&h===f&&g===t){if(W===v.RPC_RESOLVE)return d(A);if(W===v.RPC_REJECT)return a(Z)}}let m={action:v.RPC_REQUEST,args:s,callID:f,callName:e,connectionID:t},l=s.reduce((w,h)=>h[S]?.length?w.concat(h[S]):w,s[S]??[]);H(i,b.MESSAGE,E),o.push(()=>L(i,b.MESSAGE,E)),C(r,m,n?.origin,l)})}function de(e={},t=[],n,o,i,r){let s={...e},d=[];for(let a of t)oe(s,a,ce(a,n,o,d,i,r));return{remote:s,unregisterRemote:()=>d.forEach((a)=>a())}}function le(e={},t){return new Promise(async(n)=>{let o=ne(e),i=ie(),r=self||window;async function s(d){let a=N(d);if(a?.action!==v.HANDSHAKE_REPLY)return;let{remote:f,unregisterRemote:E}=de(a.schema,a.methodNames,a.connectionID,d,r,i),m=ae(o,a.connectionID,r,i,f);return await t?.onConnectionSetup?.(f),C(i,{action:v.HANDSHAKE_REPLY,connectionID:a.connectionID},d?.origin),n({remote:f,close:()=>{L(r,b.MESSAGE,s),E(),m()},id:a.connectionID})}H(r,b.MESSAGE,s),C(i,{action:v.HANDSHAKE_REQUEST,methodNames:Object.keys(o),schema:e})})}var G={connect:le};var ue=(e)=>typeof e===\\\"object\\\"&&e!==null,q=(e)=>{try{let t=JSON.stringify(e);if(typeof t===\\\"string\\\"&&t.length>0)return t}catch{}try{return String(e)}catch{return\\\"Unknown error\\\"}},j=(e)=>{if(e instanceof Error)return{message:e.message,stack:e.stack};if(typeof e===\\\"string\\\")return{message:e};if(ue(e)){let t=typeof e.message===\\\"string\\\"?e.message:null,n=typeof e.stack===\\\"string\\\"?e.stack:void 0;if(t)return n?{message:t,stack:n}:{message:t};return{message:q(e)}}if(e===null||e===void 0)return{message:\\\"Unknown error\\\"};return{message:q(e)}};var O=[\\\"sidenav\\\",\\\"main\\\",\\\"secondary\\\",\\\"side\\\"];var p=(e,t)=>({extensionId:\\\"pstdio\\\",kind:e,id:t}),y={project:p(\\\"mode\\\",\\\"project\\\"),sessions:p(\\\"mode\\\",\\\"sessions\\\"),settings:p(\\\"mode\\\",\\\"settings\\\")},Re={project:{ref:y.project,regions:O},sessions:{ref:y.sessions,regions:O},settings:{ref:y.settings,regions:O}},_=(e,t,n)=>({id:e,ref:p(\\\"resource-kind\\\",e),label:t,menuSlots:n}),U=[{id:\\\"headerPrimary\\\",placement:\\\"header-primary\\\",access:\\\"public\\\"},{id:\\\"headerOverflow\\\",placement:\\\"header-overflow\\\",access:\\\"public\\\"}],D={project:_(\\\"project\\\",\\\"Extension\\\",U),session:_(\\\"session\\\",\\\"Session\\\",U),workspace:_(\\\"workspace\\\",\\\"Workspace\\\",U)},k={project:D.project.ref,session:D.session.ref,workspace:D.workspace.ref},x={start:p(\\\"page\\\",\\\"start\\\"),sessions:p(\\\"page\\\",\\\"sessions\\\"),session:p(\\\"page\\\",\\\"session\\\"),workspaces:p(\\\"page\\\",\\\"workspaces\\\"),workspace:p(\\\"page\\\",\\\"workspace\\\")},Pe={start:{ref:x.start,mode:y.project,path:\\\"\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},sessions:{ref:x.sessions,mode:y.sessions,path:\\\"sessions\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},session:{ref:x.session,mode:y.sessions,path:\\\"session\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[\\\"session\\\",\\\"session-draft\\\"]}},workspaces:{ref:x.workspaces,mode:y.project,path:\\\"workspaces\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},workspace:{ref:x.workspace,mode:y.project,path:\\\"workspace\\\",primary:{cardinality:\\\"many\\\",resourceKinds:[\\\"workspace\\\"]}}},pe={projectSession:p(\\\"placement\\\",\\\"project-session\\\")},xe={projectSession:{ref:pe.projectSession,mode:y.project,cardinality:\\\"many\\\",resourceKinds:[\\\"session\\\",\\\"session-draft\\\"]}},Ae={projectSettings:p(\\\"settings-panel\\\",\\\"project.settings\\\"),statusBarLeading:p(\\\"status-bar-item\\\",\\\"status-bar.leading\\\"),statusBarTrailing:p(\\\"status-bar-item\\\",\\\"status-bar.trailing\\\")};var J=(e)=>({...e,kind:\\\"command\\\"}),Ce=Object.assign(J,{forExtension:(e)=>(t)=>J({extensionId:`${e.publisher}.${e.name}`,id:t})}),fe=(e)=>({...e,kind:\\\"event\\\"}),M=(e,t)=>({id:e,kind:t.kind,label:t.label,description:t.description,metadata:t.metadata}),u=(e)=>fe({extensionId:\\\"pstdio\\\",id:e}),I=(e,t)=>M(`${e.id}.${t}`,{kind:\\\"menu\\\"}),je={sidenav:M(\\\"project.sidenav\\\",{kind:\\\"panel\\\"}),headerPrimary:I(k.project,\\\"headerPrimary\\\"),headerOverflow:I(k.project,\\\"headerOverflow\\\"),settingsPanels:M(\\\"project.settingsPanels\\\",{kind:\\\"settings\\\"})},Me={headerPrimary:I(k.session,\\\"headerPrimary\\\"),headerOverflow:I(k.session,\\\"headerOverflow\\\")},Te={headerPrimary:I(k.workspace,\\\"headerPrimary\\\"),headerOverflow:I(k.workspace,\\\"headerOverflow\\\"),sidenav:M(\\\"workspace.sidenav\\\",{kind:\\\"panel\\\"})},He={opened:u(\\\"project.opened\\\")},Le={started:u(\\\"session.started\\\"),resumed:u(\\\"session.resumed\\\"),awaitingInput:u(\\\"session.awaitingInput\\\"),succeeded:u(\\\"session.succeeded\\\"),failed:u(\\\"session.failed\\\"),completed:u(\\\"session.completed\\\")},Ne={created:u(\\\"workspace.created\\\"),provision:u(\\\"workspace.provision\\\"),ready:u(\\\"workspace.ready\\\"),archived:u(\\\"workspace.archived\\\"),deleted:u(\\\"workspace.deleted\\\")},Oe={removed:u(\\\"worktree.removed\\\")},_e={committed:u(\\\"git.committed\\\"),rebased:u(\\\"git.rebased\\\"),merged:u(\\\"git.merged\\\"),conflicted:u(\\\"git.conflicted\\\")};var me=[\\\"commands.execute\\\",\\\"navigation.open\\\",\\\"placement.close\\\",\\\"notification.show\\\",\\\"notification.action\\\",\\\"notification.resolve\\\",\\\"notification.dismiss\\\",\\\"preferences.get\\\",\\\"preferences.set\\\",\\\"extension.settings.all\\\",\\\"extension.settings.get\\\",\\\"extension.settings.set\\\",\\\"extension.settings.delete\\\",\\\"terminal.session\\\",\\\"files.upload\\\",\\\"files.list\\\",\\\"files.delete\\\"],ge=[\\\"artifacts.read\\\"],ve=[\\\"host.dispatchKeyboardEvent\\\"],$e=[...me,...ge,...ve];var c=(e)=>(t)=>({...t,ref:{kind:e,id:t.id}}),Ue=c(\\\"view\\\"),De=c(\\\"view-menu\\\"),We=c(\\\"placement\\\"),Ke=c(\\\"resource-kind\\\");var Ve=c(\\\"navigation-item\\\"),Be=c(\\\"navigation-tree\\\"),ze=c(\\\"mode\\\");var Ge=c(\\\"status-bar-item\\\"),qe=c(\\\"status\\\"),Je=c(\\\"settings-panel\\\"),Ye=c(\\\"activity-item\\\"),Qe=c(\\\"settings-section\\\"),Fe=c(\\\"command-palette-resource\\\"),Xe=c(\\\"keybinding\\\"),Ze=c(\\\"schedule\\\"),et=c(\\\"artifact-mount\\\"),tt=c(\\\"template-type\\\"),nt=c(\\\"template\\\"),rt=c(\\\"skill\\\"),ot=c(\\\"theme\\\"),st=c(\\\"file-icon-theme\\\"),it=c(\\\"workspace-type\\\"),at=c(\\\"harness\\\"),ct=c(\\\"connection\\\");var Y=(e,t,n)=>({call:async(o,...i)=>{try{return await e({method:o,params:i[0]})}catch(r){if(r instanceof Error)throw r;throw Error(j(r).message)}},onEvent:t,extensionId:n}),Q=(e)=>{let t=e,n=new Set;return{get:()=>t,subscribe:(o)=>(n.add(o),()=>n.delete(o)),set:(o)=>{t=o;for(let i of n)i(t)}}};var F=\\\"pstdio-extension-mount\\\",ye=()=>{let e=new Map;return{get length(){return e.size},clear:()=>e.clear(),getItem:(t)=>e.get(t)??null,key:(t)=>Array.from(e.keys())[t]??null,removeItem:(t)=>e.delete(t),setItem:(t,n)=>e.set(t,n)}},Ee=()=>{for(let e of[\\\"localStorage\\\",\\\"sessionStorage\\\"])try{window[e]}catch{Object.defineProperty(window,e,{configurable:!0,value:ye()})}},X=(e,t)=>{let n=document.documentElement,o=e===\\\"dark\\\"?\\\"light\\\":\\\"dark\\\";n.classList.remove(o),n.classList.add(e),n.setAttribute(\\\"data-theme\\\",e),n.style.colorScheme=e;for(let[i,r]of Object.entries(t))if(i.startsWith(\\\"--\\\"))n.style.setProperty(i,r)},we=(e)=>{for(let t of e){let n=document.createElement(\\\"link\\\");n.rel=\\\"stylesheet\\\",n.href=t,document.head.appendChild(n)}},he=()=>{let e=document.getElementById(F);if(!e)e=document.createElement(\\\"div\\\"),e.id=F,e.style.height=\\\"100%\\\",e.style.width=\\\"100%\\\",document.body.appendChild(e);return e},Se=(e)=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLElement&&e.isContentEditable,be=async()=>{Ee();let e=Q(void 0),t=new Map,n=(s,d)=>{let a=t.get(s)??new Set;return a.add(d),t.set(s,a),()=>{a.delete(d)}},o,i=!1,r=await G.connect({init:async(s)=>{try{X(s.theme,s.themeVariables),we(s.styles),e.set(s.props);let d=he(),a=await import(s.moduleUrl),f=a.default??(a.mount?a:void 0);if(!f?.mount)throw Error(\\\"Extension module does not export a default view (defineExtensionView).\\\");let E=Y((l)=>r.remote.call(l),n,s.extensionId),m=await f.mount(d,E,e);if(o=typeof m===\\\"function\\\"?m:void 0,!i)i=!0,document.addEventListener(\\\"keydown\\\",(l)=>{if(!l.ctrlKey&&!l.metaKey&&!l.altKey)return;if(Se(l.target)&&!l.shiftKey)return;r.remote.call({method:\\\"host.dispatchKeyboardEvent\\\",params:{key:l.key,code:l.code,ctrlKey:l.ctrlKey,metaKey:l.metaKey,altKey:l.altKey,shiftKey:l.shiftKey,repeat:l.repeat}}).catch(()=>{})},!0)}catch(d){let a=j(d);throw r.remote.runtimeError(a),d instanceof Error?d:Error(a.message)}},themeUpdate:(s)=>{X(s.theme,s.variables)},propsUpdate:(s)=>{e.set(s.props)},hostEvent:(s)=>{for(let d of t.get(s.scope)??[])d(s.payload)}});r.remote.ready({}),window.addEventListener(\\\"beforeunload\\\",()=>{o?.()})};be();\\n\"","const MOUNT_ID = \"pstdio-extension-mount\";\n\nconst escapeAttribute = (value: string) =>\n value.replaceAll(\"&\", \"&amp;\").replaceAll('\"', \"&quot;\").replaceAll(\"<\", \"&lt;\");\n\nconst escapeScriptContent = (value: string) => value.replaceAll(\"</script\", \"<\\\\/script\").replaceAll(\"<!--\", \"<\\\\!--\");\n\nconst renderRuntimeHostDocument = (scriptTag: string) => `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <style>\n html, body {\n height: 100%;\n margin: 0;\n background: transparent;\n }\n body {\n overflow-x: hidden !important;\n overflow-y: auto !important;\n }\n #${MOUNT_ID} {\n height: 100%;\n width: 100%;\n display: block;\n min-height: 0;\n }\n </style>\n </head>\n <body>\n <div id=\"${MOUNT_ID}\"></div>\n ${scriptTag}\n </body>\n</html>\n`;\n\nexport const getExtensionRuntimeScriptUrl = () => new URL(\"./runtime.bundle.js\", import.meta.url).href;\n\nexport const renderExtensionRuntimeHtml = (scriptUrl: string) =>\n renderRuntimeHostDocument(`<script src=\"${escapeAttribute(scriptUrl)}\"></script>`);\n\nexport const renderInlineExtensionRuntimeHtml = (runtimeScript: string) =>\n renderRuntimeHostDocument(`<script>${escapeScriptContent(runtimeScript)}</script>`);\n","import runtimeScript from \"pstdio-extensions/bridge/webview-runtime.bundle.js?raw\";\n\nexport {\n renderExtensionRuntimeHtml,\n renderInlineExtensionRuntimeHtml,\n} from \"pstdio-extensions/bridge/webview-runtime-html\";\n\n// The guest runtime bundle is inlined here so a host app can serve it without\n// depending on the private pstdio-extensions package.\nexport const getExtensionRuntimeScript = () => runtimeScript;\n"],"names":["runtimeScript","MOUNT_ID","escapeAttribute","value","replaceAll","escapeScriptContent","renderRuntimeHostDocument","scriptTag","renderExtensionRuntimeHtml","scriptUrl","renderInlineExtensionRuntimeHtml","getExtensionRuntimeScript"],"mappings":"AAAA,MAAAA,IAAe,y9VCATC,IAAW,0BAEXC,IAAkBA,CAACC,MACvBA,EAAMC,WAAW,KAAK,OAAO,EAAEA,WAAW,KAAK,QAAQ,EAAEA,WAAW,KAAK,MAAM,GAE3EC,IAAsBA,CAACF,MAAkBA,EAAMC,WAAW,aAAY,YAAY,EAAEA,WAAW,QAAQ,QAAQ,GAE/GE,IAA4BA,CAACC,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAehDN,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eASFA,CAAQ;AAAA,MACjBM,CAAS;AAAA;AAAA;AAAA,GAOFC,IAA6BA,CAACC,MACzCH,EAA0B,gBAAgBJ,EAAgBO,CAAS,CAAC,cAAa,GAEtEC,IAAmCA,CAACV,MAC/CM,EAA0B,WAAWD,EAAoBL,CAAa,CAAC,YAAW,GClCvEW,IAA4BA,MAAMX;"}
1
+ {"version":3,"file":"webview-runtime.js","sources":["../../pstdio-extensions/src/bridge/webview-runtime/runtime.bundle.js?raw","../../pstdio-extensions/src/bridge/webview-runtime/runtime-html.ts","../src/webview-runtime/index.ts"],"sourcesContent":["export default \"// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\\nfunction ee(){let e=globalThis;if(e.window!==void 0&&e.document!==void 0)return\\\"browser\\\";if(e.WorkerGlobalScope!==void 0&&e.self!==void 0&&e.self instanceof e.WorkerGlobalScope||e.window===void 0&&e.self!==void 0&&typeof e.importScripts==\\\"function\\\")return\\\"worker\\\";let t=e.process;if(t&&typeof t==\\\"object\\\"){let n=t.versions??{},o=t.release?.name;if(n.bun||o===\\\"bun\\\"||e.Bun!==void 0)return\\\"bun\\\";if(n.node&&o===\\\"node\\\")return\\\"node\\\"}return e.Bun===void 0?\\\"browser\\\":\\\"bun\\\"}function M(){return ee()}function V(){return M()===\\\"worker\\\"}function B(){let e=M();return e===\\\"node\\\"||e===\\\"bun\\\"}function te(){return window.self!==window.top}function ne(e){let t={};return function n(o,i=\\\"\\\"){Object.keys(o).forEach((r)=>{let s=i?`${i}.${r}`:r;o[r]===Object(o[r])&&n(o[r],s),typeof o[r]==\\\"function\\\"&&(t[s]=o[r],delete o[r])})}(e),t}function re(e){return!e||e===\\\"null\\\"?\\\"*\\\":e}function oe(e,t,n){if(!e||typeof e!=\\\"object\\\")return e;let o=Array.isArray(t)?t:t.split(\\\".\\\").map((r)=>r.match(/^\\\\d+$/)?Number(r):r),i=e;for(let r=0;r<o.length;r++){let s=o[r];r===o.length-1?i[s]=n:((!i[s]||typeof i[s]!=\\\"object\\\")&&(i[s]=typeof o[r+1]==\\\"number\\\"?[]:{}),i=i[s])}return e}function se(e=10){let t=\\\"\\\";for(let n=0;n<e;n++)t+=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\\".charAt(Math.floor(Math.random()*62));return t}var K=M(),P=null;if(K===\\\"node\\\"||K===\\\"bun\\\")try{let e=globalThis.require;P=e?.(\\\"node:worker_threads\\\")?.parentPort??null}catch{}function ie(){if(B())return P;if(V())return self;if(te())return window.parent;throw Error(\\\"No valid target found for postMessage\\\")}function C(e,t,n,o){if(!e)throw Error(\\\"Rimless Error: No target specified for postMessage\\\");if(B()&&e===P){e.postMessage(t,{transfer:o});return}if(V()){e.postMessage(t,{transfer:o});return}if(e.postMessage){e.postMessage(t,{targetOrigin:re(n),transfer:o});return}throw Error(\\\"Rimless Error: Invalid target for postMessage\\\")}function z(e){return P!==null&&e===P}function H(e,t,n){z(e)?e.on(t,n):(\\\"addEventListener\\\"in e)&&e.addEventListener(t,n)}function L(e,t,n){z(e)?e.off(t,n):(\\\"removeEventListener\\\"in e)&&e.removeEventListener(t,n)}function N(e){return e.data||e}var S=function(e){return e.MESSAGE=\\\"message\\\",e}({}),y=function(e){return e.HANDSHAKE_REQUEST=\\\"RIMLESS/HANDSHAKE_REQUEST\\\",e.HANDSHAKE_REPLY=\\\"RIMLESS/HANDSHAKE_REPLY\\\",e.RPC_REQUEST=\\\"RIMLESS/RPC_REQUEST\\\",e.RPC_RESOLVE=\\\"RIMLESS/RPC_RESOLVE\\\",e.RPC_REJECT=\\\"RIMLESS/RPC_REJECT\\\",e}({}),k=Symbol();function ae(e={},t,n,o,i){let r=[];for(let[s,d]of Object.entries(e)){async function a(u){let{action:w,callID:m,connectionID:l,callName:h,args:v=[]}=N(u);if(w!==y.RPC_REQUEST||!m||!h||h!==s||l!==t)return;let g={action:y.RPC_RESOLVE,callID:m,callName:h,connectionID:l,error:null,result:null},R;try{g.result=await d(...v,i),g.result?.[k]&&(R=g.result[k]??[],delete g.result[k])}catch(A){g.action=y.RPC_REJECT,g.error=JSON.parse(JSON.stringify(A,Object.getOwnPropertyNames(A)))}C(o,g,u?.origin,R)}H(n,S.MESSAGE,a),r.push(()=>L(n,S.MESSAGE,a))}return()=>r.forEach((s)=>s())}function ce(e,t,n,o=[],i,r){return(...s)=>new Promise((d,a)=>{let u=se();function w(h){let{callID:v,connectionID:g,callName:R,result:A,error:Z,action:W}=N(h);if(!(!v||!R)&&R===e&&v===u&&g===t){if(W===y.RPC_RESOLVE)return d(A);if(W===y.RPC_REJECT)return a(Z)}}let m={action:y.RPC_REQUEST,args:s,callID:u,callName:e,connectionID:t},l=s.reduce((h,v)=>v[k]?.length?h.concat(v[k]):h,s[k]??[]);H(i,S.MESSAGE,w),o.push(()=>L(i,S.MESSAGE,w)),C(r,m,n?.origin,l)})}function de(e={},t=[],n,o,i,r){let s={...e},d=[];for(let a of t)oe(s,a,ce(a,n,o,d,i,r));return{remote:s,unregisterRemote:()=>d.forEach((a)=>a())}}function le(e={},t){return new Promise(async(n)=>{let o=ne(e),i=ie(),r=self||window;async function s(d){let a=N(d);if(a?.action!==y.HANDSHAKE_REPLY)return;let{remote:u,unregisterRemote:w}=de(a.schema,a.methodNames,a.connectionID,d,r,i),m=ae(o,a.connectionID,r,i,u);return await t?.onConnectionSetup?.(u),C(i,{action:y.HANDSHAKE_REPLY,connectionID:a.connectionID},d?.origin),n({remote:u,close:()=>{L(r,S.MESSAGE,s),w(),m()},id:a.connectionID})}H(r,S.MESSAGE,s),C(i,{action:y.HANDSHAKE_REQUEST,methodNames:Object.keys(o),schema:e})})}var G={connect:le};var pe=(e)=>typeof e===\\\"object\\\"&&e!==null,q=(e)=>{try{let t=JSON.stringify(e);if(typeof t===\\\"string\\\"&&t.length>0)return t}catch{}try{return String(e)}catch{return\\\"Unknown error\\\"}},j=(e)=>{if(e instanceof Error)return{message:e.message,stack:e.stack};if(typeof e===\\\"string\\\")return{message:e};if(pe(e)){let t=typeof e.message===\\\"string\\\"?e.message:null,n=typeof e.stack===\\\"string\\\"?e.stack:void 0;if(t)return n?{message:t,stack:n}:{message:t};return{message:q(e)}}if(e===null||e===void 0)return{message:\\\"Unknown error\\\"};return{message:q(e)}};var O=[\\\"sidenav\\\",\\\"main\\\",\\\"secondary\\\",\\\"side\\\"];var f=(e,t)=>({extensionId:\\\"pstdio\\\",kind:e,id:t}),E={project:f(\\\"mode\\\",\\\"project\\\"),sessions:f(\\\"mode\\\",\\\"sessions\\\"),settings:f(\\\"mode\\\",\\\"settings\\\")},Re={project:{ref:E.project,regions:O},sessions:{ref:E.sessions,regions:O},settings:{ref:E.settings,regions:O}},_=(e,t,n)=>({id:e,ref:f(\\\"resource-kind\\\",e),label:t,menuSlots:n}),U=[{id:\\\"headerPrimary\\\",placement:\\\"header-primary\\\",access:\\\"public\\\"},{id:\\\"headerOverflow\\\",placement:\\\"header-overflow\\\",access:\\\"public\\\"}],D={project:_(\\\"project\\\",\\\"Extension\\\",U),session:_(\\\"session\\\",\\\"Session\\\",U),workspace:_(\\\"workspace\\\",\\\"Workspace\\\",U)},b={project:D.project.ref,session:D.session.ref,workspace:D.workspace.ref},x={start:f(\\\"page\\\",\\\"start\\\"),sessions:f(\\\"page\\\",\\\"sessions\\\"),session:f(\\\"page\\\",\\\"session\\\"),workspaces:f(\\\"page\\\",\\\"workspaces\\\"),workspace:f(\\\"page\\\",\\\"workspace\\\")},Pe={start:{ref:x.start,mode:E.project,path:\\\"\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},sessions:{ref:x.sessions,mode:E.sessions,path:\\\"sessions\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},session:{ref:x.session,mode:E.sessions,path:\\\"session\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[\\\"session\\\",\\\"session-draft\\\"]}},workspaces:{ref:x.workspaces,mode:E.project,path:\\\"workspaces\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},workspace:{ref:x.workspace,mode:E.project,path:\\\"workspace\\\",primary:{cardinality:\\\"many\\\",resourceKinds:[\\\"workspace\\\"]}}},fe={projectSession:f(\\\"placement\\\",\\\"project-session\\\")},xe={projectSession:{ref:fe.projectSession,mode:E.project,cardinality:\\\"many\\\",resourceKinds:[\\\"session\\\",\\\"session-draft\\\"]}},Ae={projectSettings:f(\\\"settings-panel\\\",\\\"project.settings\\\"),statusBarLeading:f(\\\"status-bar-item\\\",\\\"status-bar.leading\\\"),statusBarTrailing:f(\\\"status-bar-item\\\",\\\"status-bar.trailing\\\")};var J=(e)=>({...e,kind:\\\"command\\\"}),Ce=Object.assign(J,{forExtension:(e)=>(t)=>J({extensionId:`${e.publisher}.${e.name}`,id:t})}),ue=(e)=>({...e,kind:\\\"event\\\"}),T=(e,t)=>({id:e,kind:t.kind,label:t.label,description:t.description,metadata:t.metadata}),p=(e)=>ue({extensionId:\\\"pstdio\\\",id:e}),I=(e,t)=>T(`${e.id}.${t}`,{kind:\\\"menu\\\"}),je={sidenav:T(\\\"project.sidenav\\\",{kind:\\\"panel\\\"}),headerPrimary:I(b.project,\\\"headerPrimary\\\"),headerOverflow:I(b.project,\\\"headerOverflow\\\"),settingsPanels:T(\\\"project.settingsPanels\\\",{kind:\\\"settings\\\"})},Te={headerPrimary:I(b.session,\\\"headerPrimary\\\"),headerOverflow:I(b.session,\\\"headerOverflow\\\")},Me={headerPrimary:I(b.workspace,\\\"headerPrimary\\\"),headerOverflow:I(b.workspace,\\\"headerOverflow\\\"),sidenav:T(\\\"workspace.sidenav\\\",{kind:\\\"panel\\\"})},He={opened:p(\\\"project.opened\\\")},Le={started:p(\\\"session.started\\\"),resumed:p(\\\"session.resumed\\\"),awaitingInput:p(\\\"session.awaitingInput\\\"),succeeded:p(\\\"session.succeeded\\\"),failed:p(\\\"session.failed\\\"),completed:p(\\\"session.completed\\\")},Ne={created:p(\\\"workspace.created\\\"),provision:p(\\\"workspace.provision\\\"),ready:p(\\\"workspace.ready\\\"),archived:p(\\\"workspace.archived\\\"),deleted:p(\\\"workspace.deleted\\\")},Oe={removed:p(\\\"worktree.removed\\\")},_e={committed:p(\\\"git.committed\\\"),rebased:p(\\\"git.rebased\\\"),merged:p(\\\"git.merged\\\"),conflicted:p(\\\"git.conflicted\\\")};var me=[\\\"commands.execute\\\",\\\"navigation.open\\\",\\\"placement.close\\\",\\\"notification.show\\\",\\\"notification.action\\\",\\\"notification.resolve\\\",\\\"notification.dismiss\\\",\\\"preferences.get\\\",\\\"preferences.set\\\",\\\"extension.settings.all\\\",\\\"extension.settings.get\\\",\\\"extension.settings.set\\\",\\\"extension.settings.delete\\\",\\\"terminal.session\\\",\\\"files.upload\\\",\\\"files.list\\\",\\\"files.delete\\\"],ge=[\\\"artifacts.read\\\"],ye=[\\\"host.dispatchKeyboardEvent\\\"],$e=[...me,...ge,...ye];var c=(e)=>(t)=>({...t,ref:{kind:e,id:t.id}}),Ue=c(\\\"view\\\"),De=c(\\\"view-menu\\\"),We=c(\\\"placement\\\"),Ke=c(\\\"resource-kind\\\");var Ve=c(\\\"navigation-item\\\"),Be=c(\\\"navigation-tree\\\"),ze=c(\\\"mode\\\");var Ge=c(\\\"status-bar-item\\\"),qe=c(\\\"status\\\"),Je=c(\\\"settings-panel\\\"),Ye=c(\\\"activity-item\\\"),Qe=c(\\\"settings-section\\\"),Fe=c(\\\"command-palette-resource\\\"),Xe=c(\\\"keybinding\\\"),Ze=c(\\\"schedule\\\"),et=c(\\\"artifact-mount\\\"),tt=c(\\\"template-type\\\"),nt=c(\\\"template\\\"),rt=c(\\\"skill\\\"),ot=c(\\\"theme\\\"),st=c(\\\"file-icon-theme\\\"),it=c(\\\"workspace-type\\\"),at=c(\\\"harness\\\"),ct=c(\\\"connection\\\");var Y=(e,t,n)=>({call:async(o,...i)=>{try{return await e({method:o,params:i[0]})}catch(r){if(r instanceof Error)throw r;throw Error(j(r).message)}},onEvent:t,extensionId:n}),Q=(e)=>{let t=e,n=new Set;return{get:()=>t,subscribe:(o)=>(n.add(o),()=>n.delete(o)),set:(o)=>{t=o;for(let i of n)i(t)}}};var F=\\\"pstdio-extension-mount\\\",Ee=()=>{let e=new Map;return{get length(){return e.size},clear:()=>e.clear(),getItem:(t)=>e.get(t)??null,key:(t)=>Array.from(e.keys())[t]??null,removeItem:(t)=>e.delete(t),setItem:(t,n)=>e.set(t,n)}},we=()=>{for(let e of[\\\"localStorage\\\",\\\"sessionStorage\\\"])try{window[e]}catch{Object.defineProperty(window,e,{configurable:!0,value:Ee()})}},X=(e,t)=>{let n=document.documentElement,o=e===\\\"dark\\\"?\\\"light\\\":\\\"dark\\\";n.classList.remove(o),n.classList.add(e),n.setAttribute(\\\"data-theme\\\",e),n.style.colorScheme=e;for(let[i,r]of Object.entries(t))if(i.startsWith(\\\"--\\\"))n.style.setProperty(i,r)},he=(e)=>{for(let t of e){let n=document.createElement(\\\"link\\\");n.rel=\\\"stylesheet\\\",n.href=t,document.head.appendChild(n)}},ve=()=>{let e=document.getElementById(F);if(!e)e=document.createElement(\\\"div\\\"),e.id=F,e.style.height=\\\"100%\\\",e.style.width=\\\"100%\\\",document.body.appendChild(e);return e},ke=(e)=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLElement&&e.isContentEditable,Se=async()=>{we();let e=Q(void 0),t=new Map,n=(s,d)=>{let a=t.get(s)??new Set;return a.add(d),t.set(s,a),()=>{a.delete(d)}},o,i=!1,r=await G.connect({init:async(s)=>{try{X(s.theme,s.themeVariables),he(s.styles),e.set(s.props);let d=ve(),a=await import(s.moduleUrl),u=a.default??(a.mount?a:void 0);if(!u?.mount)throw Error(\\\"Extension module does not export a default view (defineExtensionView).\\\");let w=Y((l)=>r.remote.call(l),n,s.extensionId),m=await u.mount(d,w,e);if(o=typeof m===\\\"function\\\"?m:void 0,!i)i=!0,document.addEventListener(\\\"keydown\\\",(l)=>{if(!l.ctrlKey&&!l.metaKey&&!l.altKey)return;if(ke(l.target)&&!l.shiftKey)return;r.remote.call({method:\\\"host.dispatchKeyboardEvent\\\",params:{key:l.key,code:l.code,ctrlKey:l.ctrlKey,metaKey:l.metaKey,altKey:l.altKey,shiftKey:l.shiftKey,repeat:l.repeat}}).catch(()=>{})},!0)}catch(d){let a=j(d);throw r.remote.runtimeError(a),d instanceof Error?d:Error(a.message)}},themeUpdate:(s)=>{X(s.theme,s.variables)},propsUpdate:(s)=>{e.set(s.props)},hostEvent:(s)=>{for(let d of t.get(s.scope)??[])d(s.payload)}});r.remote.ready({}),window.addEventListener(\\\"beforeunload\\\",()=>{o?.()})};Se();\\n\"","const MOUNT_ID = \"pstdio-extension-mount\";\n\nconst escapeAttribute = (value: string) =>\n value.replaceAll(\"&\", \"&amp;\").replaceAll('\"', \"&quot;\").replaceAll(\"<\", \"&lt;\");\n\nconst escapeScriptContent = (value: string) => value.replaceAll(\"</script\", \"<\\\\/script\").replaceAll(\"<!--\", \"<\\\\!--\");\n\nconst renderRuntimeHostDocument = (scriptTag: string) => `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <style>\n html, body {\n height: 100%;\n margin: 0;\n background: transparent;\n }\n body {\n overflow-x: hidden !important;\n overflow-y: auto !important;\n }\n #${MOUNT_ID} {\n height: 100%;\n width: 100%;\n display: block;\n min-height: 0;\n }\n </style>\n </head>\n <body>\n <div id=\"${MOUNT_ID}\"></div>\n ${scriptTag}\n </body>\n</html>\n`;\n\nexport const getExtensionRuntimeScriptUrl = () => new URL(\"./runtime.bundle.js\", import.meta.url).href;\n\nexport const renderExtensionRuntimeHtml = (scriptUrl: string) =>\n renderRuntimeHostDocument(`<script src=\"${escapeAttribute(scriptUrl)}\"></script>`);\n\nexport const renderInlineExtensionRuntimeHtml = (runtimeScript: string) =>\n renderRuntimeHostDocument(`<script>${escapeScriptContent(runtimeScript)}</script>`);\n","import runtimeScript from \"pstdio-extensions/bridge/webview-runtime.bundle.js?raw\";\n\nexport {\n renderExtensionRuntimeHtml,\n renderInlineExtensionRuntimeHtml,\n} from \"pstdio-extensions/bridge/webview-runtime-html\";\n\n// The guest runtime bundle is inlined here so a host app can serve it without\n// depending on the private pstdio-extensions package.\nexport const getExtensionRuntimeScript = () => runtimeScript;\n"],"names":["runtimeScript","MOUNT_ID","escapeAttribute","value","replaceAll","escapeScriptContent","renderRuntimeHostDocument","scriptTag","renderExtensionRuntimeHtml","scriptUrl","renderInlineExtensionRuntimeHtml","getExtensionRuntimeScript"],"mappings":"AAAA,MAAAA,IAAe,y9VCATC,IAAW,0BAEXC,IAAkBA,CAACC,MACvBA,EAAMC,WAAW,KAAK,OAAO,EAAEA,WAAW,KAAK,QAAQ,EAAEA,WAAW,KAAK,MAAM,GAE3EC,IAAsBA,CAACF,MAAkBA,EAAMC,WAAW,aAAY,YAAY,EAAEA,WAAW,QAAQ,QAAQ,GAE/GE,IAA4BA,CAACC,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAehDN,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eASFA,CAAQ;AAAA,MACjBM,CAAS;AAAA;AAAA;AAAA,GAOFC,IAA6BA,CAACC,MACzCH,EAA0B,gBAAgBJ,EAAgBO,CAAS,CAAC,cAAa,GAEtEC,IAAmCA,CAACV,MAC/CM,EAA0B,WAAWD,EAAoBL,CAAa,CAAC,YAAW,GClCvEW,IAA4BA,MAAMX;"}