@pstdio/workbench 0.9.0 → 0.10.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 e(){let J=globalThis;if(J.window!==void 0&&J.document!==void 0)return"browser";if(J.WorkerGlobalScope!==void 0&&J.self!==void 0&&J.self instanceof J.WorkerGlobalScope||J.window===void 0&&J.self!==void 0&&typeof J.importScripts=="function")return"worker";let Q=J.process;if(Q&&typeof Q=="object"){let Y=Q.versions??{},$=Q.release?.name;if(Y.bun||$==="bun"||J.Bun!==void 0)return"bun";if(Y.node&&$==="node")return"node"}return J.Bun===void 0?"browser":"bun"}function S(){return e()}function p(){return S()==="worker"}function u(){let J=S();return J==="node"||J==="bun"}function JJ(){return window.self!==window.top}function QJ(J){let Q={};return function Y($,X=""){Object.keys($).forEach((Z)=>{let G=X?`${X}.${Z}`:Z;$[Z]===Object($[Z])&&Y($[Z],G),typeof $[Z]=="function"&&(Q[G]=$[Z],delete $[Z])})}(J),Q}function YJ(J){return!J||J==="null"?"*":J}function ZJ(J,Q,Y){if(!J||typeof J!="object")return J;let $=Array.isArray(Q)?Q:Q.split(".").map((Z)=>Z.match(/^\\d+$/)?Number(Z):Z),X=J;for(let Z=0;Z<$.length;Z++){let G=$[Z];Z===$.length-1?X[G]=Y:((!X[G]||typeof X[G]!="object")&&(X[G]=typeof $[Z+1]=="number"?[]:{}),X=X[G])}return J}function $J(J=10){let Q="";for(let Y=0;Y<J;Y++)Q+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random()*62));return Q}var c=S(),K=null;if(c==="node"||c==="bun")try{let J=globalThis.require;K=J?.("node:worker_threads")?.parentPort??null}catch{}function GJ(){if(u())return K;if(p())return self;if(JJ())return window.parent;throw Error("No valid target found for postMessage")}function E(J,Q,Y,$){if(!J)throw Error("Rimless Error: No target specified for postMessage");if(u()&&J===K){J.postMessage(Q,{transfer:$});return}if(p()){J.postMessage(Q,{transfer:$});return}if(J.postMessage){J.postMessage(Q,{targetOrigin:YJ(Y),transfer:$});return}throw Error("Rimless Error: Invalid target for postMessage")}function d(J){return K!==null&&J===K}function b(J,Q,Y){d(J)?J.on(Q,Y):("addEventListener"in J)&&J.addEventListener(Q,Y)}function y(J,Q,Y){d(J)?J.off(Q,Y):("removeEventListener"in J)&&J.removeEventListener(Q,Y)}function k(J){return J.data||J}var H=function(J){return J.MESSAGE="message",J}({}),W=function(J){return J.HANDSHAKE_REQUEST="RIMLESS/HANDSHAKE_REQUEST",J.HANDSHAKE_REPLY="RIMLESS/HANDSHAKE_REPLY",J.RPC_REQUEST="RIMLESS/RPC_REQUEST",J.RPC_RESOLVE="RIMLESS/RPC_RESOLVE",J.RPC_REJECT="RIMLESS/RPC_REJECT",J}({}),A=Symbol();function XJ(J={},Q,Y,$,X){let Z=[];for(let[G,U]of Object.entries(J)){async function z(N){let{action:_,callID:j,connectionID:q,callName:V,args:D=[]}=k(N);if(_!==W.RPC_REQUEST||!j||!V||V!==G||q!==Q)return;let M={action:W.RPC_RESOLVE,callID:j,callName:V,connectionID:q,error:null,result:null},C;try{M.result=await U(...D,X),M.result?.[A]&&(C=M.result[A]??[],delete M.result[A])}catch(I){M.action=W.RPC_REJECT,M.error=JSON.parse(JSON.stringify(I,Object.getOwnPropertyNames(I)))}E($,M,N?.origin,C)}b(Y,H.MESSAGE,z),Z.push(()=>y(Y,H.MESSAGE,z))}return()=>Z.forEach((G)=>G())}function zJ(J,Q,Y,$=[],X,Z){return(...G)=>new Promise((U,z)=>{let N=$J();function _(V){let{callID:D,connectionID:M,callName:C,result:I,error:n,action:m}=k(V);if(!(!D||!C)&&C===J&&D===N&&M===Q){if(m===W.RPC_RESOLVE)return U(I);if(m===W.RPC_REJECT)return z(n)}}let j={action:W.RPC_REQUEST,args:G,callID:N,callName:J,connectionID:Q},q=G.reduce((V,D)=>D[A]?.length?V.concat(D[A]):V,G[A]??[]);b(X,H.MESSAGE,_),$.push(()=>y(X,H.MESSAGE,_)),E(Z,j,Y?.origin,q)})}function FJ(J={},Q=[],Y,$,X,Z){let G={...J},U=[];for(let z of Q)ZJ(G,z,zJ(z,Y,$,U,X,Z));return{remote:G,unregisterRemote:()=>U.forEach((z)=>z())}}function UJ(J={},Q){return new Promise(async(Y)=>{let $=QJ(J),X=GJ(),Z=self||window;async function G(U){let z=k(U);if(z?.action!==W.HANDSHAKE_REPLY)return;let{remote:N,unregisterRemote:_}=FJ(z.schema,z.methodNames,z.connectionID,U,Z,X),j=XJ($,z.connectionID,Z,X,N);return await Q?.onConnectionSetup?.(N),E(X,{action:W.HANDSHAKE_REPLY,connectionID:z.connectionID},U?.origin),Y({remote:N,close:()=>{y(Z,H.MESSAGE,G),_(),j()},id:z.connectionID})}b(Z,H.MESSAGE,G),E(X,{action:W.HANDSHAKE_REQUEST,methodNames:Object.keys($),schema:J})})}var l={connect:UJ};var qJ=(J)=>typeof J==="object"&&J!==null,r=(J)=>{try{let Q=JSON.stringify(J);if(typeof Q==="string"&&Q.length>0)return Q}catch{}try{return String(J)}catch{return"Unknown error"}},w=(J)=>{if(J instanceof Error)return{message:J.message,stack:J.stack};if(typeof J==="string")return{message:J};if(qJ(J)){let Q=typeof J.message==="string"?J.message:null,Y=typeof J.stack==="string"?J.stack:void 0;if(Q)return Y?{message:Q,stack:Y}:{message:Q};return{message:r(J)}}if(J===null||J===void 0)return{message:"Unknown error"};return{message:r(J)}};var f=["sidenav","main","secondary","side"];var B=(J,Q)=>({extensionId:"pstdio",kind:J,id:Q}),L={project:B("mode","project"),sessions:B("mode","sessions"),settings:B("mode","settings")},TJ={project:{ref:L.project,regions:f},sessions:{ref:L.sessions,regions:f},settings:{ref:L.settings,regions:f}},g=(J,Q,Y)=>({id:J,ref:B("resource-kind",J),label:Q,menuSlots:Y}),h=[{id:"headerPrimary",placement:"header-primary",access:"public"},{id:"headerOverflow",placement:"header-overflow",access:"public"}],v={project:g("project","Extension",h),session:g("session","Session",h),workspace:g("workspace","Workspace",h)},P={project:v.project.ref,session:v.session.ref,workspace:v.workspace.ref},R={start:B("page","start"),sessions:B("page","sessions"),session:B("page","session"),workspaces:B("page","workspaces"),workspace:B("page","workspace")},CJ={start:{ref:R.start,mode:L.project,path:"",primary:{cardinality:"one",resourceKinds:[]}},sessions:{ref:R.sessions,mode:L.sessions,path:"sessions",primary:{cardinality:"one",resourceKinds:[]}},session:{ref:R.session,mode:L.sessions,path:"session",primary:{cardinality:"one",resourceKinds:["session","session-draft"]}},workspaces:{ref:R.workspaces,mode:L.project,path:"workspaces",primary:{cardinality:"one",resourceKinds:[]}},workspace:{ref:R.workspace,mode:L.project,path:"workspace",primary:{cardinality:"many",resourceKinds:["workspace"]}}},OJ={projectSession:B("placement","project-session")},KJ={projectSession:{ref:OJ.projectSession,mode:L.project,cardinality:"many",resourceKinds:["session","session-draft"]}},RJ={projectSettings:B("settings-panel","project.settings"),statusBarLeading:B("status-bar-item","status-bar.leading"),statusBarTrailing:B("status-bar-item","status-bar.trailing")};var i=(J)=>({...J,kind:"command"}),IJ=Object.assign(i,{forExtension:(J)=>(Q)=>i({extensionId:`${J.publisher}.${J.name}`,id:Q})}),BJ=(J)=>({...J,kind:"event"}),x=(J,Q)=>({id:J,kind:Q.kind,label:Q.label,description:Q.description,metadata:Q.metadata}),O=(J)=>BJ({extensionId:"pstdio",id:J}),T=(J,Q)=>x(`${J.id}.${Q}`,{kind:"menu"}),EJ={sidenav:x("project.sidenav",{kind:"panel"}),headerPrimary:T(P.project,"headerPrimary"),headerOverflow:T(P.project,"headerOverflow"),settingsPanels:x("project.settingsPanels",{kind:"settings"})},wJ={headerPrimary:T(P.session,"headerPrimary"),headerOverflow:T(P.session,"headerOverflow")},xJ={headerPrimary:T(P.workspace,"headerPrimary"),headerOverflow:T(P.workspace,"headerOverflow"),sidenav:x("workspace.sidenav",{kind:"panel"})},SJ={opened:O("project.opened")},bJ={started:O("session.started"),resumed:O("session.resumed"),awaitingInput:O("session.awaitingInput"),succeeded:O("session.succeeded"),failed:O("session.failed"),completed:O("session.completed")},yJ={created:O("workspace.created"),provision:O("workspace.provision"),ready:O("workspace.ready"),archived:O("workspace.archived"),deleted:O("workspace.deleted")},kJ={removed:O("worktree.removed")},fJ={committed:O("git.committed"),rebased:O("git.rebased"),merged:O("git.merged"),conflicted:O("git.conflicted")};var NJ=["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"],jJ=["artifacts.read"],MJ=["host.dispatchKeyboardEvent"],gJ=[...NJ,...jJ,...MJ];var F=(J)=>(Q)=>({...Q,ref:{kind:J,id:Q.id}}),hJ=F("view"),vJ=F("view-menu"),mJ=F("placement"),cJ=F("resource-kind");var pJ=F("navigation-item"),uJ=F("navigation-tree"),dJ=F("mode");var lJ=F("status-bar-item"),rJ=F("status"),iJ=F("settings-panel"),aJ=F("activity-item"),sJ=F("settings-section"),oJ=F("command-palette-resource"),tJ=F("keybinding"),nJ=F("schedule"),eJ=F("artifact-mount"),JQ=F("template-type"),QQ=F("template"),YQ=F("skill"),ZQ=F("theme"),$Q=F("file-icon-theme"),GQ=F("workspace-type"),XQ=F("harness"),zQ=F("connection");var a=(J,Q,Y)=>({call:async($,...X)=>{try{return await J({method:$,params:X[0]})}catch(Z){if(Z instanceof Error)throw Z;throw Error(w(Z).message)}},onEvent:Q,extensionId:Y}),s=(J)=>{let Q=J,Y=new Set;return{get:()=>Q,subscribe:($)=>{return Y.add($),()=>Y.delete($)},set:($)=>{Q=$;for(let X of Y)X(Q)}}};var o="pstdio-extension-mount",WJ=()=>{let J=new Map;return{get length(){return J.size},clear:()=>J.clear(),getItem:(Q)=>J.get(Q)??null,key:(Q)=>Array.from(J.keys())[Q]??null,removeItem:(Q)=>J.delete(Q),setItem:(Q,Y)=>J.set(Q,Y)}},LJ=()=>{for(let J of["localStorage","sessionStorage"])try{window[J]}catch{Object.defineProperty(window,J,{configurable:!0,value:WJ()})}},t=(J,Q)=>{let Y=document.documentElement,$=J==="dark"?"light":"dark";Y.classList.remove($),Y.classList.add(J),Y.setAttribute("data-theme",J),Y.style.colorScheme=J;for(let[X,Z]of Object.entries(Q))if(X.startsWith("--"))Y.style.setProperty(X,Z)},_J=(J)=>{for(let Q of J){let Y=document.createElement("link");Y.rel="stylesheet",Y.href=Q,document.head.appendChild(Y)}},VJ=()=>{let J=document.getElementById(o);if(!J)J=document.createElement("div"),J.id=o,J.style.height="100%",J.style.width="100%",document.body.appendChild(J);return J},DJ=(J)=>J instanceof HTMLInputElement||J instanceof HTMLTextAreaElement||J instanceof HTMLSelectElement||J instanceof HTMLElement&&J.isContentEditable,AJ=async()=>{LJ();let J=s(void 0),Q=new Map,Y=(G,U)=>{let z=Q.get(G)??new Set;return z.add(U),Q.set(G,z),()=>{z.delete(U)}},$,X=!1,Z=await l.connect({init:async(G)=>{try{t(G.theme,G.themeVariables),_J(G.styles),J.set(G.props);let U=VJ(),z=await import(G.moduleUrl),N=z.default??(z.mount?z:void 0);if(!N?.mount)throw Error("Extension module does not export a default view (defineExtensionView).");let _=a((q)=>Z.remote.call(q),Y,G.extensionId),j=await N.mount(U,_,J);if($=typeof j==="function"?j:void 0,!X)X=!0,document.addEventListener("keydown",(q)=>{if(!q.ctrlKey&&!q.metaKey&&!q.altKey)return;if(DJ(q.target)&&!q.shiftKey)return;Z.remote.call({method:"host.dispatchKeyboardEvent",params:{key:q.key,code:q.code,ctrlKey:q.ctrlKey,metaKey:q.metaKey,altKey:q.altKey,shiftKey:q.shiftKey,repeat:q.repeat}}).catch(()=>{})},!0)}catch(U){let z=w(U);throw Z.remote.runtimeError(z),U instanceof Error?U:Error(z.message)}},themeUpdate:(G)=>{t(G.theme,G.variables)},propsUpdate:(G)=>{J.set(G.props)},hostEvent:(G)=>{for(let U of Q.get(G.scope)??[])U(G.payload)}});Z.remote.ready({}),window.addEventListener("beforeunload",()=>{$?.()})};AJ();\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 e(){let J=globalThis;if(J.window!==void 0&&J.document!==void 0)return"browser";if(J.WorkerGlobalScope!==void 0&&J.self!==void 0&&J.self instanceof J.WorkerGlobalScope||J.window===void 0&&J.self!==void 0&&typeof J.importScripts=="function")return"worker";let Q=J.process;if(Q&&typeof Q=="object"){let Y=Q.versions??{},$=Q.release?.name;if(Y.bun||$==="bun"||J.Bun!==void 0)return"bun";if(Y.node&&$==="node")return"node"}return J.Bun===void 0?"browser":"bun"}function S(){return e()}function p(){return S()==="worker"}function u(){let J=S();return J==="node"||J==="bun"}function JJ(){return window.self!==window.top}function QJ(J){let Q={};return function Y($,X=""){Object.keys($).forEach((Z)=>{let G=X?`${X}.${Z}`:Z;$[Z]===Object($[Z])&&Y($[Z],G),typeof $[Z]=="function"&&(Q[G]=$[Z],delete $[Z])})}(J),Q}function YJ(J){return!J||J==="null"?"*":J}function ZJ(J,Q,Y){if(!J||typeof J!="object")return J;let $=Array.isArray(Q)?Q:Q.split(".").map((Z)=>Z.match(/^\\d+$/)?Number(Z):Z),X=J;for(let Z=0;Z<$.length;Z++){let G=$[Z];Z===$.length-1?X[G]=Y:((!X[G]||typeof X[G]!="object")&&(X[G]=typeof $[Z+1]=="number"?[]:{}),X=X[G])}return J}function $J(J=10){let Q="";for(let Y=0;Y<J;Y++)Q+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random()*62));return Q}var c=S(),K=null;if(c==="node"||c==="bun")try{let J=globalThis.require;K=J?.("node:worker_threads")?.parentPort??null}catch{}function GJ(){if(u())return K;if(p())return self;if(JJ())return window.parent;throw Error("No valid target found for postMessage")}function E(J,Q,Y,$){if(!J)throw Error("Rimless Error: No target specified for postMessage");if(u()&&J===K){J.postMessage(Q,{transfer:$});return}if(p()){J.postMessage(Q,{transfer:$});return}if(J.postMessage){J.postMessage(Q,{targetOrigin:YJ(Y),transfer:$});return}throw Error("Rimless Error: Invalid target for postMessage")}function d(J){return K!==null&&J===K}function b(J,Q,Y){d(J)?J.on(Q,Y):("addEventListener"in J)&&J.addEventListener(Q,Y)}function y(J,Q,Y){d(J)?J.off(Q,Y):("removeEventListener"in J)&&J.removeEventListener(Q,Y)}function k(J){return J.data||J}var H=function(J){return J.MESSAGE="message",J}({}),W=function(J){return J.HANDSHAKE_REQUEST="RIMLESS/HANDSHAKE_REQUEST",J.HANDSHAKE_REPLY="RIMLESS/HANDSHAKE_REPLY",J.RPC_REQUEST="RIMLESS/RPC_REQUEST",J.RPC_RESOLVE="RIMLESS/RPC_RESOLVE",J.RPC_REJECT="RIMLESS/RPC_REJECT",J}({}),D=Symbol();function XJ(J={},Q,Y,$,X){let Z=[];for(let[G,U]of Object.entries(J)){async function z(j){let{action:_,callID:N,connectionID:q,callName:V,args:A=[]}=k(j);if(_!==W.RPC_REQUEST||!N||!V||V!==G||q!==Q)return;let M={action:W.RPC_RESOLVE,callID:N,callName:V,connectionID:q,error:null,result:null},C;try{M.result=await U(...A,X),M.result?.[D]&&(C=M.result[D]??[],delete M.result[D])}catch(I){M.action=W.RPC_REJECT,M.error=JSON.parse(JSON.stringify(I,Object.getOwnPropertyNames(I)))}E($,M,j?.origin,C)}b(Y,H.MESSAGE,z),Z.push(()=>y(Y,H.MESSAGE,z))}return()=>Z.forEach((G)=>G())}function zJ(J,Q,Y,$=[],X,Z){return(...G)=>new Promise((U,z)=>{let j=$J();function _(V){let{callID:A,connectionID:M,callName:C,result:I,error:n,action:m}=k(V);if(!(!A||!C)&&C===J&&A===j&&M===Q){if(m===W.RPC_RESOLVE)return U(I);if(m===W.RPC_REJECT)return z(n)}}let N={action:W.RPC_REQUEST,args:G,callID:j,callName:J,connectionID:Q},q=G.reduce((V,A)=>A[D]?.length?V.concat(A[D]):V,G[D]??[]);b(X,H.MESSAGE,_),$.push(()=>y(X,H.MESSAGE,_)),E(Z,N,Y?.origin,q)})}function FJ(J={},Q=[],Y,$,X,Z){let G={...J},U=[];for(let z of Q)ZJ(G,z,zJ(z,Y,$,U,X,Z));return{remote:G,unregisterRemote:()=>U.forEach((z)=>z())}}function UJ(J={},Q){return new Promise(async(Y)=>{let $=QJ(J),X=GJ(),Z=self||window;async function G(U){let z=k(U);if(z?.action!==W.HANDSHAKE_REPLY)return;let{remote:j,unregisterRemote:_}=FJ(z.schema,z.methodNames,z.connectionID,U,Z,X),N=XJ($,z.connectionID,Z,X,j);return await Q?.onConnectionSetup?.(j),E(X,{action:W.HANDSHAKE_REPLY,connectionID:z.connectionID},U?.origin),Y({remote:j,close:()=>{y(Z,H.MESSAGE,G),_(),N()},id:z.connectionID})}b(Z,H.MESSAGE,G),E(X,{action:W.HANDSHAKE_REQUEST,methodNames:Object.keys($),schema:J})})}var l={connect:UJ};var qJ=(J)=>typeof J==="object"&&J!==null,r=(J)=>{try{let Q=JSON.stringify(J);if(typeof Q==="string"&&Q.length>0)return Q}catch{}try{return String(J)}catch{return"Unknown error"}},w=(J)=>{if(J instanceof Error)return{message:J.message,stack:J.stack};if(typeof J==="string")return{message:J};if(qJ(J)){let Q=typeof J.message==="string"?J.message:null,Y=typeof J.stack==="string"?J.stack:void 0;if(Q)return Y?{message:Q,stack:Y}:{message:Q};return{message:r(J)}}if(J===null||J===void 0)return{message:"Unknown error"};return{message:r(J)}};var f=["sidenav","main","secondary","side"];var B=(J,Q)=>({extensionId:"pstdio",kind:J,id:Q}),L={project:B("mode","project"),sessions:B("mode","sessions"),settings:B("mode","settings")},TJ={project:{ref:L.project,regions:f},sessions:{ref:L.sessions,regions:f},settings:{ref:L.settings,regions:f}},g=(J,Q,Y)=>({id:J,ref:B("resource-kind",J),label:Q,menuSlots:Y}),h=[{id:"headerPrimary",placement:"header-primary",access:"public"},{id:"headerOverflow",placement:"header-overflow",access:"public"}],v={project:g("project","Extension",h),session:g("session","Session",h),workspace:g("workspace","Workspace",h)},P={project:v.project.ref,session:v.session.ref,workspace:v.workspace.ref},R={start:B("page","start"),sessions:B("page","sessions"),session:B("page","session"),workspaces:B("page","workspaces"),workspace:B("page","workspace")},CJ={start:{ref:R.start,mode:L.project,path:"",primary:{cardinality:"one",resourceKinds:[]}},sessions:{ref:R.sessions,mode:L.sessions,path:"sessions",primary:{cardinality:"one",resourceKinds:[]}},session:{ref:R.session,mode:L.sessions,path:"session",primary:{cardinality:"one",resourceKinds:["session","session-draft"]}},workspaces:{ref:R.workspaces,mode:L.project,path:"workspaces",primary:{cardinality:"one",resourceKinds:[]}},workspace:{ref:R.workspace,mode:L.project,path:"workspace",primary:{cardinality:"many",resourceKinds:["workspace"]}}},OJ={projectSession:B("placement","project-session")},KJ={projectSession:{ref:OJ.projectSession,mode:L.project,cardinality:"many",resourceKinds:["session","session-draft"]}},RJ={projectSettings:B("settings-panel","project.settings"),statusBarLeading:B("status-bar-item","status-bar.leading"),statusBarTrailing:B("status-bar-item","status-bar.trailing")};var i=(J)=>({...J,kind:"command"}),IJ=Object.assign(i,{forExtension:(J)=>(Q)=>i({extensionId:`${J.publisher}.${J.name}`,id:Q})}),BJ=(J)=>({...J,kind:"event"}),x=(J,Q)=>({id:J,kind:Q.kind,label:Q.label,description:Q.description,metadata:Q.metadata}),O=(J)=>BJ({extensionId:"pstdio",id:J}),T=(J,Q)=>x(`${J.id}.${Q}`,{kind:"menu"}),EJ={sidenav:x("project.sidenav",{kind:"panel"}),headerPrimary:T(P.project,"headerPrimary"),headerOverflow:T(P.project,"headerOverflow"),settingsPanels:x("project.settingsPanels",{kind:"settings"})},wJ={headerPrimary:T(P.session,"headerPrimary"),headerOverflow:T(P.session,"headerOverflow")},xJ={headerPrimary:T(P.workspace,"headerPrimary"),headerOverflow:T(P.workspace,"headerOverflow"),sidenav:x("workspace.sidenav",{kind:"panel"})},SJ={opened:O("project.opened")},bJ={started:O("session.started"),resumed:O("session.resumed"),awaitingInput:O("session.awaitingInput"),succeeded:O("session.succeeded"),failed:O("session.failed"),completed:O("session.completed")},yJ={created:O("workspace.created"),provision:O("workspace.provision"),ready:O("workspace.ready"),archived:O("workspace.archived"),deleted:O("workspace.deleted")},kJ={removed:O("worktree.removed")},fJ={committed:O("git.committed"),rebased:O("git.rebased"),merged:O("git.merged"),conflicted:O("git.conflicted")};var jJ=["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"],NJ=["artifacts.read"],MJ=["host.dispatchKeyboardEvent"],gJ=[...jJ,...NJ,...MJ];var F=(J)=>(Q)=>({...Q,ref:{kind:J,id:Q.id}}),hJ=F("view"),vJ=F("view-menu"),mJ=F("placement"),cJ=F("resource-kind");var pJ=F("navigation-item"),uJ=F("navigation-tree"),dJ=F("mode");var lJ=F("status-bar-item"),rJ=F("status"),iJ=F("settings-panel"),aJ=F("activity-item"),sJ=F("settings-section"),oJ=F("command-palette-resource"),tJ=F("keybinding"),nJ=F("schedule"),eJ=F("artifact-mount"),JQ=F("template-type"),QQ=F("template"),YQ=F("skill"),ZQ=F("theme"),$Q=F("file-icon-theme"),GQ=F("workspace-type"),XQ=F("harness"),zQ=F("connection");var a=(J,Q,Y)=>({call:async($,...X)=>{try{return await J({method:$,params:X[0]})}catch(Z){if(Z instanceof Error)throw Z;throw Error(w(Z).message)}},onEvent:Q,extensionId:Y}),s=(J)=>{let Q=J,Y=new Set;return{get:()=>Q,subscribe:($)=>{return Y.add($),()=>Y.delete($)},set:($)=>{Q=$;for(let X of Y)X(Q)}}};var o="pstdio-extension-mount",WJ=()=>{let J=new Map;return{get length(){return J.size},clear:()=>J.clear(),getItem:(Q)=>J.get(Q)??null,key:(Q)=>Array.from(J.keys())[Q]??null,removeItem:(Q)=>J.delete(Q),setItem:(Q,Y)=>J.set(Q,Y)}},LJ=()=>{for(let J of["localStorage","sessionStorage"])try{window[J]}catch{Object.defineProperty(window,J,{configurable:!0,value:WJ()})}},t=(J,Q)=>{let Y=document.documentElement,$=J==="dark"?"light":"dark";Y.classList.remove($),Y.classList.add(J),Y.setAttribute("data-theme",J),Y.style.colorScheme=J;for(let[X,Z]of Object.entries(Q))if(X.startsWith("--"))Y.style.setProperty(X,Z)},_J=(J)=>{for(let Q of J){let Y=document.createElement("link");Y.rel="stylesheet",Y.href=Q,document.head.appendChild(Y)}},VJ=()=>{let J=document.getElementById(o);if(!J)J=document.createElement("div"),J.id=o,J.style.height="100%",J.style.width="100%",document.body.appendChild(J);return J},AJ=(J)=>J instanceof HTMLInputElement||J instanceof HTMLTextAreaElement||J instanceof HTMLSelectElement||J instanceof HTMLElement&&J.isContentEditable,DJ=async()=>{LJ();let J=s(void 0),Q=new Map,Y=(G,U)=>{let z=Q.get(G)??new Set;return z.add(U),Q.set(G,z),()=>{z.delete(U)}},$,X=!1,Z=await l.connect({init:async(G)=>{try{t(G.theme,G.themeVariables),_J(G.styles),J.set(G.props);let U=VJ(),z=await import(G.moduleUrl),j=z.default??(z.mount?z:void 0);if(!j?.mount)throw Error("Extension module does not export a default view (defineExtensionView).");let _=a((q)=>Z.remote.call(q),Y,G.extensionId),N=await j.mount(U,_,J);if($=typeof N==="function"?N:void 0,!X)X=!0,document.addEventListener("keydown",(q)=>{if(!q.ctrlKey&&!q.metaKey&&!q.altKey)return;if(AJ(q.target)&&!q.shiftKey)return;Z.remote.call({method:"host.dispatchKeyboardEvent",params:{key:q.key,code:q.code,ctrlKey:q.ctrlKey,metaKey:q.metaKey,altKey:q.altKey,shiftKey:q.shiftKey,repeat:q.repeat}}).catch(()=>{})},!0)}catch(U){let z=w(U);throw Z.remote.runtimeError(z),U instanceof Error?U:Error(z.message)}},themeUpdate:(G)=>{t(G.theme,G.variables)},propsUpdate:(G)=>{J.set(G.props)},hostEvent:(G)=>{for(let U of Q.get(G.scope)??[])U(G.payload)}});Z.remote.ready({}),window.addEventListener("beforeunload",()=>{$?.()})};DJ();\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 e(){let J=globalThis;if(J.window!==void 0&&J.document!==void 0)return\\\"browser\\\";if(J.WorkerGlobalScope!==void 0&&J.self!==void 0&&J.self instanceof J.WorkerGlobalScope||J.window===void 0&&J.self!==void 0&&typeof J.importScripts==\\\"function\\\")return\\\"worker\\\";let Q=J.process;if(Q&&typeof Q==\\\"object\\\"){let Y=Q.versions??{},$=Q.release?.name;if(Y.bun||$===\\\"bun\\\"||J.Bun!==void 0)return\\\"bun\\\";if(Y.node&&$===\\\"node\\\")return\\\"node\\\"}return J.Bun===void 0?\\\"browser\\\":\\\"bun\\\"}function S(){return e()}function p(){return S()===\\\"worker\\\"}function u(){let J=S();return J===\\\"node\\\"||J===\\\"bun\\\"}function JJ(){return window.self!==window.top}function QJ(J){let Q={};return function Y($,X=\\\"\\\"){Object.keys($).forEach((Z)=>{let G=X?`${X}.${Z}`:Z;$[Z]===Object($[Z])&&Y($[Z],G),typeof $[Z]==\\\"function\\\"&&(Q[G]=$[Z],delete $[Z])})}(J),Q}function YJ(J){return!J||J===\\\"null\\\"?\\\"*\\\":J}function ZJ(J,Q,Y){if(!J||typeof J!=\\\"object\\\")return J;let $=Array.isArray(Q)?Q:Q.split(\\\".\\\").map((Z)=>Z.match(/^\\\\d+$/)?Number(Z):Z),X=J;for(let Z=0;Z<$.length;Z++){let G=$[Z];Z===$.length-1?X[G]=Y:((!X[G]||typeof X[G]!=\\\"object\\\")&&(X[G]=typeof $[Z+1]==\\\"number\\\"?[]:{}),X=X[G])}return J}function $J(J=10){let Q=\\\"\\\";for(let Y=0;Y<J;Y++)Q+=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\\".charAt(Math.floor(Math.random()*62));return Q}var c=S(),K=null;if(c===\\\"node\\\"||c===\\\"bun\\\")try{let J=globalThis.require;K=J?.(\\\"node:worker_threads\\\")?.parentPort??null}catch{}function GJ(){if(u())return K;if(p())return self;if(JJ())return window.parent;throw Error(\\\"No valid target found for postMessage\\\")}function E(J,Q,Y,$){if(!J)throw Error(\\\"Rimless Error: No target specified for postMessage\\\");if(u()&&J===K){J.postMessage(Q,{transfer:$});return}if(p()){J.postMessage(Q,{transfer:$});return}if(J.postMessage){J.postMessage(Q,{targetOrigin:YJ(Y),transfer:$});return}throw Error(\\\"Rimless Error: Invalid target for postMessage\\\")}function d(J){return K!==null&&J===K}function b(J,Q,Y){d(J)?J.on(Q,Y):(\\\"addEventListener\\\"in J)&&J.addEventListener(Q,Y)}function y(J,Q,Y){d(J)?J.off(Q,Y):(\\\"removeEventListener\\\"in J)&&J.removeEventListener(Q,Y)}function k(J){return J.data||J}var H=function(J){return J.MESSAGE=\\\"message\\\",J}({}),W=function(J){return J.HANDSHAKE_REQUEST=\\\"RIMLESS/HANDSHAKE_REQUEST\\\",J.HANDSHAKE_REPLY=\\\"RIMLESS/HANDSHAKE_REPLY\\\",J.RPC_REQUEST=\\\"RIMLESS/RPC_REQUEST\\\",J.RPC_RESOLVE=\\\"RIMLESS/RPC_RESOLVE\\\",J.RPC_REJECT=\\\"RIMLESS/RPC_REJECT\\\",J}({}),A=Symbol();function XJ(J={},Q,Y,$,X){let Z=[];for(let[G,U]of Object.entries(J)){async function z(N){let{action:_,callID:j,connectionID:q,callName:V,args:D=[]}=k(N);if(_!==W.RPC_REQUEST||!j||!V||V!==G||q!==Q)return;let M={action:W.RPC_RESOLVE,callID:j,callName:V,connectionID:q,error:null,result:null},C;try{M.result=await U(...D,X),M.result?.[A]&&(C=M.result[A]??[],delete M.result[A])}catch(I){M.action=W.RPC_REJECT,M.error=JSON.parse(JSON.stringify(I,Object.getOwnPropertyNames(I)))}E($,M,N?.origin,C)}b(Y,H.MESSAGE,z),Z.push(()=>y(Y,H.MESSAGE,z))}return()=>Z.forEach((G)=>G())}function zJ(J,Q,Y,$=[],X,Z){return(...G)=>new Promise((U,z)=>{let N=$J();function _(V){let{callID:D,connectionID:M,callName:C,result:I,error:n,action:m}=k(V);if(!(!D||!C)&&C===J&&D===N&&M===Q){if(m===W.RPC_RESOLVE)return U(I);if(m===W.RPC_REJECT)return z(n)}}let j={action:W.RPC_REQUEST,args:G,callID:N,callName:J,connectionID:Q},q=G.reduce((V,D)=>D[A]?.length?V.concat(D[A]):V,G[A]??[]);b(X,H.MESSAGE,_),$.push(()=>y(X,H.MESSAGE,_)),E(Z,j,Y?.origin,q)})}function FJ(J={},Q=[],Y,$,X,Z){let G={...J},U=[];for(let z of Q)ZJ(G,z,zJ(z,Y,$,U,X,Z));return{remote:G,unregisterRemote:()=>U.forEach((z)=>z())}}function UJ(J={},Q){return new Promise(async(Y)=>{let $=QJ(J),X=GJ(),Z=self||window;async function G(U){let z=k(U);if(z?.action!==W.HANDSHAKE_REPLY)return;let{remote:N,unregisterRemote:_}=FJ(z.schema,z.methodNames,z.connectionID,U,Z,X),j=XJ($,z.connectionID,Z,X,N);return await Q?.onConnectionSetup?.(N),E(X,{action:W.HANDSHAKE_REPLY,connectionID:z.connectionID},U?.origin),Y({remote:N,close:()=>{y(Z,H.MESSAGE,G),_(),j()},id:z.connectionID})}b(Z,H.MESSAGE,G),E(X,{action:W.HANDSHAKE_REQUEST,methodNames:Object.keys($),schema:J})})}var l={connect:UJ};var qJ=(J)=>typeof J===\\\"object\\\"&&J!==null,r=(J)=>{try{let Q=JSON.stringify(J);if(typeof Q===\\\"string\\\"&&Q.length>0)return Q}catch{}try{return String(J)}catch{return\\\"Unknown error\\\"}},w=(J)=>{if(J instanceof Error)return{message:J.message,stack:J.stack};if(typeof J===\\\"string\\\")return{message:J};if(qJ(J)){let Q=typeof J.message===\\\"string\\\"?J.message:null,Y=typeof J.stack===\\\"string\\\"?J.stack:void 0;if(Q)return Y?{message:Q,stack:Y}:{message:Q};return{message:r(J)}}if(J===null||J===void 0)return{message:\\\"Unknown error\\\"};return{message:r(J)}};var f=[\\\"sidenav\\\",\\\"main\\\",\\\"secondary\\\",\\\"side\\\"];var B=(J,Q)=>({extensionId:\\\"pstdio\\\",kind:J,id:Q}),L={project:B(\\\"mode\\\",\\\"project\\\"),sessions:B(\\\"mode\\\",\\\"sessions\\\"),settings:B(\\\"mode\\\",\\\"settings\\\")},TJ={project:{ref:L.project,regions:f},sessions:{ref:L.sessions,regions:f},settings:{ref:L.settings,regions:f}},g=(J,Q,Y)=>({id:J,ref:B(\\\"resource-kind\\\",J),label:Q,menuSlots:Y}),h=[{id:\\\"headerPrimary\\\",placement:\\\"header-primary\\\",access:\\\"public\\\"},{id:\\\"headerOverflow\\\",placement:\\\"header-overflow\\\",access:\\\"public\\\"}],v={project:g(\\\"project\\\",\\\"Extension\\\",h),session:g(\\\"session\\\",\\\"Session\\\",h),workspace:g(\\\"workspace\\\",\\\"Workspace\\\",h)},P={project:v.project.ref,session:v.session.ref,workspace:v.workspace.ref},R={start:B(\\\"page\\\",\\\"start\\\"),sessions:B(\\\"page\\\",\\\"sessions\\\"),session:B(\\\"page\\\",\\\"session\\\"),workspaces:B(\\\"page\\\",\\\"workspaces\\\"),workspace:B(\\\"page\\\",\\\"workspace\\\")},CJ={start:{ref:R.start,mode:L.project,path:\\\"\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},sessions:{ref:R.sessions,mode:L.sessions,path:\\\"sessions\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},session:{ref:R.session,mode:L.sessions,path:\\\"session\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[\\\"session\\\",\\\"session-draft\\\"]}},workspaces:{ref:R.workspaces,mode:L.project,path:\\\"workspaces\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},workspace:{ref:R.workspace,mode:L.project,path:\\\"workspace\\\",primary:{cardinality:\\\"many\\\",resourceKinds:[\\\"workspace\\\"]}}},OJ={projectSession:B(\\\"placement\\\",\\\"project-session\\\")},KJ={projectSession:{ref:OJ.projectSession,mode:L.project,cardinality:\\\"many\\\",resourceKinds:[\\\"session\\\",\\\"session-draft\\\"]}},RJ={projectSettings:B(\\\"settings-panel\\\",\\\"project.settings\\\"),statusBarLeading:B(\\\"status-bar-item\\\",\\\"status-bar.leading\\\"),statusBarTrailing:B(\\\"status-bar-item\\\",\\\"status-bar.trailing\\\")};var i=(J)=>({...J,kind:\\\"command\\\"}),IJ=Object.assign(i,{forExtension:(J)=>(Q)=>i({extensionId:`${J.publisher}.${J.name}`,id:Q})}),BJ=(J)=>({...J,kind:\\\"event\\\"}),x=(J,Q)=>({id:J,kind:Q.kind,label:Q.label,description:Q.description,metadata:Q.metadata}),O=(J)=>BJ({extensionId:\\\"pstdio\\\",id:J}),T=(J,Q)=>x(`${J.id}.${Q}`,{kind:\\\"menu\\\"}),EJ={sidenav:x(\\\"project.sidenav\\\",{kind:\\\"panel\\\"}),headerPrimary:T(P.project,\\\"headerPrimary\\\"),headerOverflow:T(P.project,\\\"headerOverflow\\\"),settingsPanels:x(\\\"project.settingsPanels\\\",{kind:\\\"settings\\\"})},wJ={headerPrimary:T(P.session,\\\"headerPrimary\\\"),headerOverflow:T(P.session,\\\"headerOverflow\\\")},xJ={headerPrimary:T(P.workspace,\\\"headerPrimary\\\"),headerOverflow:T(P.workspace,\\\"headerOverflow\\\"),sidenav:x(\\\"workspace.sidenav\\\",{kind:\\\"panel\\\"})},SJ={opened:O(\\\"project.opened\\\")},bJ={started:O(\\\"session.started\\\"),resumed:O(\\\"session.resumed\\\"),awaitingInput:O(\\\"session.awaitingInput\\\"),succeeded:O(\\\"session.succeeded\\\"),failed:O(\\\"session.failed\\\"),completed:O(\\\"session.completed\\\")},yJ={created:O(\\\"workspace.created\\\"),provision:O(\\\"workspace.provision\\\"),ready:O(\\\"workspace.ready\\\"),archived:O(\\\"workspace.archived\\\"),deleted:O(\\\"workspace.deleted\\\")},kJ={removed:O(\\\"worktree.removed\\\")},fJ={committed:O(\\\"git.committed\\\"),rebased:O(\\\"git.rebased\\\"),merged:O(\\\"git.merged\\\"),conflicted:O(\\\"git.conflicted\\\")};var NJ=[\\\"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\\\"],jJ=[\\\"artifacts.read\\\"],MJ=[\\\"host.dispatchKeyboardEvent\\\"],gJ=[...NJ,...jJ,...MJ];var F=(J)=>(Q)=>({...Q,ref:{kind:J,id:Q.id}}),hJ=F(\\\"view\\\"),vJ=F(\\\"view-menu\\\"),mJ=F(\\\"placement\\\"),cJ=F(\\\"resource-kind\\\");var pJ=F(\\\"navigation-item\\\"),uJ=F(\\\"navigation-tree\\\"),dJ=F(\\\"mode\\\");var lJ=F(\\\"status-bar-item\\\"),rJ=F(\\\"status\\\"),iJ=F(\\\"settings-panel\\\"),aJ=F(\\\"activity-item\\\"),sJ=F(\\\"settings-section\\\"),oJ=F(\\\"command-palette-resource\\\"),tJ=F(\\\"keybinding\\\"),nJ=F(\\\"schedule\\\"),eJ=F(\\\"artifact-mount\\\"),JQ=F(\\\"template-type\\\"),QQ=F(\\\"template\\\"),YQ=F(\\\"skill\\\"),ZQ=F(\\\"theme\\\"),$Q=F(\\\"file-icon-theme\\\"),GQ=F(\\\"workspace-type\\\"),XQ=F(\\\"harness\\\"),zQ=F(\\\"connection\\\");var a=(J,Q,Y)=>({call:async($,...X)=>{try{return await J({method:$,params:X[0]})}catch(Z){if(Z instanceof Error)throw Z;throw Error(w(Z).message)}},onEvent:Q,extensionId:Y}),s=(J)=>{let Q=J,Y=new Set;return{get:()=>Q,subscribe:($)=>{return Y.add($),()=>Y.delete($)},set:($)=>{Q=$;for(let X of Y)X(Q)}}};var o=\\\"pstdio-extension-mount\\\",WJ=()=>{let J=new Map;return{get length(){return J.size},clear:()=>J.clear(),getItem:(Q)=>J.get(Q)??null,key:(Q)=>Array.from(J.keys())[Q]??null,removeItem:(Q)=>J.delete(Q),setItem:(Q,Y)=>J.set(Q,Y)}},LJ=()=>{for(let J of[\\\"localStorage\\\",\\\"sessionStorage\\\"])try{window[J]}catch{Object.defineProperty(window,J,{configurable:!0,value:WJ()})}},t=(J,Q)=>{let Y=document.documentElement,$=J===\\\"dark\\\"?\\\"light\\\":\\\"dark\\\";Y.classList.remove($),Y.classList.add(J),Y.setAttribute(\\\"data-theme\\\",J),Y.style.colorScheme=J;for(let[X,Z]of Object.entries(Q))if(X.startsWith(\\\"--\\\"))Y.style.setProperty(X,Z)},_J=(J)=>{for(let Q of J){let Y=document.createElement(\\\"link\\\");Y.rel=\\\"stylesheet\\\",Y.href=Q,document.head.appendChild(Y)}},VJ=()=>{let J=document.getElementById(o);if(!J)J=document.createElement(\\\"div\\\"),J.id=o,J.style.height=\\\"100%\\\",J.style.width=\\\"100%\\\",document.body.appendChild(J);return J},DJ=(J)=>J instanceof HTMLInputElement||J instanceof HTMLTextAreaElement||J instanceof HTMLSelectElement||J instanceof HTMLElement&&J.isContentEditable,AJ=async()=>{LJ();let J=s(void 0),Q=new Map,Y=(G,U)=>{let z=Q.get(G)??new Set;return z.add(U),Q.set(G,z),()=>{z.delete(U)}},$,X=!1,Z=await l.connect({init:async(G)=>{try{t(G.theme,G.themeVariables),_J(G.styles),J.set(G.props);let U=VJ(),z=await import(G.moduleUrl),N=z.default??(z.mount?z:void 0);if(!N?.mount)throw Error(\\\"Extension module does not export a default view (defineExtensionView).\\\");let _=a((q)=>Z.remote.call(q),Y,G.extensionId),j=await N.mount(U,_,J);if($=typeof j===\\\"function\\\"?j:void 0,!X)X=!0,document.addEventListener(\\\"keydown\\\",(q)=>{if(!q.ctrlKey&&!q.metaKey&&!q.altKey)return;if(DJ(q.target)&&!q.shiftKey)return;Z.remote.call({method:\\\"host.dispatchKeyboardEvent\\\",params:{key:q.key,code:q.code,ctrlKey:q.ctrlKey,metaKey:q.metaKey,altKey:q.altKey,shiftKey:q.shiftKey,repeat:q.repeat}}).catch(()=>{})},!0)}catch(U){let z=w(U);throw Z.remote.runtimeError(z),U instanceof Error?U:Error(z.message)}},themeUpdate:(G)=>{t(G.theme,G.variables)},propsUpdate:(G)=>{J.set(G.props)},hostEvent:(G)=>{for(let U of Q.get(G.scope)??[])U(G.payload)}});Z.remote.ready({}),window.addEventListener(\\\"beforeunload\\\",()=>{$?.()})};AJ();\\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,89VCATC,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 e(){let J=globalThis;if(J.window!==void 0&&J.document!==void 0)return\\\"browser\\\";if(J.WorkerGlobalScope!==void 0&&J.self!==void 0&&J.self instanceof J.WorkerGlobalScope||J.window===void 0&&J.self!==void 0&&typeof J.importScripts==\\\"function\\\")return\\\"worker\\\";let Q=J.process;if(Q&&typeof Q==\\\"object\\\"){let Y=Q.versions??{},$=Q.release?.name;if(Y.bun||$===\\\"bun\\\"||J.Bun!==void 0)return\\\"bun\\\";if(Y.node&&$===\\\"node\\\")return\\\"node\\\"}return J.Bun===void 0?\\\"browser\\\":\\\"bun\\\"}function S(){return e()}function p(){return S()===\\\"worker\\\"}function u(){let J=S();return J===\\\"node\\\"||J===\\\"bun\\\"}function JJ(){return window.self!==window.top}function QJ(J){let Q={};return function Y($,X=\\\"\\\"){Object.keys($).forEach((Z)=>{let G=X?`${X}.${Z}`:Z;$[Z]===Object($[Z])&&Y($[Z],G),typeof $[Z]==\\\"function\\\"&&(Q[G]=$[Z],delete $[Z])})}(J),Q}function YJ(J){return!J||J===\\\"null\\\"?\\\"*\\\":J}function ZJ(J,Q,Y){if(!J||typeof J!=\\\"object\\\")return J;let $=Array.isArray(Q)?Q:Q.split(\\\".\\\").map((Z)=>Z.match(/^\\\\d+$/)?Number(Z):Z),X=J;for(let Z=0;Z<$.length;Z++){let G=$[Z];Z===$.length-1?X[G]=Y:((!X[G]||typeof X[G]!=\\\"object\\\")&&(X[G]=typeof $[Z+1]==\\\"number\\\"?[]:{}),X=X[G])}return J}function $J(J=10){let Q=\\\"\\\";for(let Y=0;Y<J;Y++)Q+=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\\".charAt(Math.floor(Math.random()*62));return Q}var c=S(),K=null;if(c===\\\"node\\\"||c===\\\"bun\\\")try{let J=globalThis.require;K=J?.(\\\"node:worker_threads\\\")?.parentPort??null}catch{}function GJ(){if(u())return K;if(p())return self;if(JJ())return window.parent;throw Error(\\\"No valid target found for postMessage\\\")}function E(J,Q,Y,$){if(!J)throw Error(\\\"Rimless Error: No target specified for postMessage\\\");if(u()&&J===K){J.postMessage(Q,{transfer:$});return}if(p()){J.postMessage(Q,{transfer:$});return}if(J.postMessage){J.postMessage(Q,{targetOrigin:YJ(Y),transfer:$});return}throw Error(\\\"Rimless Error: Invalid target for postMessage\\\")}function d(J){return K!==null&&J===K}function b(J,Q,Y){d(J)?J.on(Q,Y):(\\\"addEventListener\\\"in J)&&J.addEventListener(Q,Y)}function y(J,Q,Y){d(J)?J.off(Q,Y):(\\\"removeEventListener\\\"in J)&&J.removeEventListener(Q,Y)}function k(J){return J.data||J}var H=function(J){return J.MESSAGE=\\\"message\\\",J}({}),W=function(J){return J.HANDSHAKE_REQUEST=\\\"RIMLESS/HANDSHAKE_REQUEST\\\",J.HANDSHAKE_REPLY=\\\"RIMLESS/HANDSHAKE_REPLY\\\",J.RPC_REQUEST=\\\"RIMLESS/RPC_REQUEST\\\",J.RPC_RESOLVE=\\\"RIMLESS/RPC_RESOLVE\\\",J.RPC_REJECT=\\\"RIMLESS/RPC_REJECT\\\",J}({}),D=Symbol();function XJ(J={},Q,Y,$,X){let Z=[];for(let[G,U]of Object.entries(J)){async function z(j){let{action:_,callID:N,connectionID:q,callName:V,args:A=[]}=k(j);if(_!==W.RPC_REQUEST||!N||!V||V!==G||q!==Q)return;let M={action:W.RPC_RESOLVE,callID:N,callName:V,connectionID:q,error:null,result:null},C;try{M.result=await U(...A,X),M.result?.[D]&&(C=M.result[D]??[],delete M.result[D])}catch(I){M.action=W.RPC_REJECT,M.error=JSON.parse(JSON.stringify(I,Object.getOwnPropertyNames(I)))}E($,M,j?.origin,C)}b(Y,H.MESSAGE,z),Z.push(()=>y(Y,H.MESSAGE,z))}return()=>Z.forEach((G)=>G())}function zJ(J,Q,Y,$=[],X,Z){return(...G)=>new Promise((U,z)=>{let j=$J();function _(V){let{callID:A,connectionID:M,callName:C,result:I,error:n,action:m}=k(V);if(!(!A||!C)&&C===J&&A===j&&M===Q){if(m===W.RPC_RESOLVE)return U(I);if(m===W.RPC_REJECT)return z(n)}}let N={action:W.RPC_REQUEST,args:G,callID:j,callName:J,connectionID:Q},q=G.reduce((V,A)=>A[D]?.length?V.concat(A[D]):V,G[D]??[]);b(X,H.MESSAGE,_),$.push(()=>y(X,H.MESSAGE,_)),E(Z,N,Y?.origin,q)})}function FJ(J={},Q=[],Y,$,X,Z){let G={...J},U=[];for(let z of Q)ZJ(G,z,zJ(z,Y,$,U,X,Z));return{remote:G,unregisterRemote:()=>U.forEach((z)=>z())}}function UJ(J={},Q){return new Promise(async(Y)=>{let $=QJ(J),X=GJ(),Z=self||window;async function G(U){let z=k(U);if(z?.action!==W.HANDSHAKE_REPLY)return;let{remote:j,unregisterRemote:_}=FJ(z.schema,z.methodNames,z.connectionID,U,Z,X),N=XJ($,z.connectionID,Z,X,j);return await Q?.onConnectionSetup?.(j),E(X,{action:W.HANDSHAKE_REPLY,connectionID:z.connectionID},U?.origin),Y({remote:j,close:()=>{y(Z,H.MESSAGE,G),_(),N()},id:z.connectionID})}b(Z,H.MESSAGE,G),E(X,{action:W.HANDSHAKE_REQUEST,methodNames:Object.keys($),schema:J})})}var l={connect:UJ};var qJ=(J)=>typeof J===\\\"object\\\"&&J!==null,r=(J)=>{try{let Q=JSON.stringify(J);if(typeof Q===\\\"string\\\"&&Q.length>0)return Q}catch{}try{return String(J)}catch{return\\\"Unknown error\\\"}},w=(J)=>{if(J instanceof Error)return{message:J.message,stack:J.stack};if(typeof J===\\\"string\\\")return{message:J};if(qJ(J)){let Q=typeof J.message===\\\"string\\\"?J.message:null,Y=typeof J.stack===\\\"string\\\"?J.stack:void 0;if(Q)return Y?{message:Q,stack:Y}:{message:Q};return{message:r(J)}}if(J===null||J===void 0)return{message:\\\"Unknown error\\\"};return{message:r(J)}};var f=[\\\"sidenav\\\",\\\"main\\\",\\\"secondary\\\",\\\"side\\\"];var B=(J,Q)=>({extensionId:\\\"pstdio\\\",kind:J,id:Q}),L={project:B(\\\"mode\\\",\\\"project\\\"),sessions:B(\\\"mode\\\",\\\"sessions\\\"),settings:B(\\\"mode\\\",\\\"settings\\\")},TJ={project:{ref:L.project,regions:f},sessions:{ref:L.sessions,regions:f},settings:{ref:L.settings,regions:f}},g=(J,Q,Y)=>({id:J,ref:B(\\\"resource-kind\\\",J),label:Q,menuSlots:Y}),h=[{id:\\\"headerPrimary\\\",placement:\\\"header-primary\\\",access:\\\"public\\\"},{id:\\\"headerOverflow\\\",placement:\\\"header-overflow\\\",access:\\\"public\\\"}],v={project:g(\\\"project\\\",\\\"Extension\\\",h),session:g(\\\"session\\\",\\\"Session\\\",h),workspace:g(\\\"workspace\\\",\\\"Workspace\\\",h)},P={project:v.project.ref,session:v.session.ref,workspace:v.workspace.ref},R={start:B(\\\"page\\\",\\\"start\\\"),sessions:B(\\\"page\\\",\\\"sessions\\\"),session:B(\\\"page\\\",\\\"session\\\"),workspaces:B(\\\"page\\\",\\\"workspaces\\\"),workspace:B(\\\"page\\\",\\\"workspace\\\")},CJ={start:{ref:R.start,mode:L.project,path:\\\"\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},sessions:{ref:R.sessions,mode:L.sessions,path:\\\"sessions\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},session:{ref:R.session,mode:L.sessions,path:\\\"session\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[\\\"session\\\",\\\"session-draft\\\"]}},workspaces:{ref:R.workspaces,mode:L.project,path:\\\"workspaces\\\",primary:{cardinality:\\\"one\\\",resourceKinds:[]}},workspace:{ref:R.workspace,mode:L.project,path:\\\"workspace\\\",primary:{cardinality:\\\"many\\\",resourceKinds:[\\\"workspace\\\"]}}},OJ={projectSession:B(\\\"placement\\\",\\\"project-session\\\")},KJ={projectSession:{ref:OJ.projectSession,mode:L.project,cardinality:\\\"many\\\",resourceKinds:[\\\"session\\\",\\\"session-draft\\\"]}},RJ={projectSettings:B(\\\"settings-panel\\\",\\\"project.settings\\\"),statusBarLeading:B(\\\"status-bar-item\\\",\\\"status-bar.leading\\\"),statusBarTrailing:B(\\\"status-bar-item\\\",\\\"status-bar.trailing\\\")};var i=(J)=>({...J,kind:\\\"command\\\"}),IJ=Object.assign(i,{forExtension:(J)=>(Q)=>i({extensionId:`${J.publisher}.${J.name}`,id:Q})}),BJ=(J)=>({...J,kind:\\\"event\\\"}),x=(J,Q)=>({id:J,kind:Q.kind,label:Q.label,description:Q.description,metadata:Q.metadata}),O=(J)=>BJ({extensionId:\\\"pstdio\\\",id:J}),T=(J,Q)=>x(`${J.id}.${Q}`,{kind:\\\"menu\\\"}),EJ={sidenav:x(\\\"project.sidenav\\\",{kind:\\\"panel\\\"}),headerPrimary:T(P.project,\\\"headerPrimary\\\"),headerOverflow:T(P.project,\\\"headerOverflow\\\"),settingsPanels:x(\\\"project.settingsPanels\\\",{kind:\\\"settings\\\"})},wJ={headerPrimary:T(P.session,\\\"headerPrimary\\\"),headerOverflow:T(P.session,\\\"headerOverflow\\\")},xJ={headerPrimary:T(P.workspace,\\\"headerPrimary\\\"),headerOverflow:T(P.workspace,\\\"headerOverflow\\\"),sidenav:x(\\\"workspace.sidenav\\\",{kind:\\\"panel\\\"})},SJ={opened:O(\\\"project.opened\\\")},bJ={started:O(\\\"session.started\\\"),resumed:O(\\\"session.resumed\\\"),awaitingInput:O(\\\"session.awaitingInput\\\"),succeeded:O(\\\"session.succeeded\\\"),failed:O(\\\"session.failed\\\"),completed:O(\\\"session.completed\\\")},yJ={created:O(\\\"workspace.created\\\"),provision:O(\\\"workspace.provision\\\"),ready:O(\\\"workspace.ready\\\"),archived:O(\\\"workspace.archived\\\"),deleted:O(\\\"workspace.deleted\\\")},kJ={removed:O(\\\"worktree.removed\\\")},fJ={committed:O(\\\"git.committed\\\"),rebased:O(\\\"git.rebased\\\"),merged:O(\\\"git.merged\\\"),conflicted:O(\\\"git.conflicted\\\")};var jJ=[\\\"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\\\"],NJ=[\\\"artifacts.read\\\"],MJ=[\\\"host.dispatchKeyboardEvent\\\"],gJ=[...jJ,...NJ,...MJ];var F=(J)=>(Q)=>({...Q,ref:{kind:J,id:Q.id}}),hJ=F(\\\"view\\\"),vJ=F(\\\"view-menu\\\"),mJ=F(\\\"placement\\\"),cJ=F(\\\"resource-kind\\\");var pJ=F(\\\"navigation-item\\\"),uJ=F(\\\"navigation-tree\\\"),dJ=F(\\\"mode\\\");var lJ=F(\\\"status-bar-item\\\"),rJ=F(\\\"status\\\"),iJ=F(\\\"settings-panel\\\"),aJ=F(\\\"activity-item\\\"),sJ=F(\\\"settings-section\\\"),oJ=F(\\\"command-palette-resource\\\"),tJ=F(\\\"keybinding\\\"),nJ=F(\\\"schedule\\\"),eJ=F(\\\"artifact-mount\\\"),JQ=F(\\\"template-type\\\"),QQ=F(\\\"template\\\"),YQ=F(\\\"skill\\\"),ZQ=F(\\\"theme\\\"),$Q=F(\\\"file-icon-theme\\\"),GQ=F(\\\"workspace-type\\\"),XQ=F(\\\"harness\\\"),zQ=F(\\\"connection\\\");var a=(J,Q,Y)=>({call:async($,...X)=>{try{return await J({method:$,params:X[0]})}catch(Z){if(Z instanceof Error)throw Z;throw Error(w(Z).message)}},onEvent:Q,extensionId:Y}),s=(J)=>{let Q=J,Y=new Set;return{get:()=>Q,subscribe:($)=>{return Y.add($),()=>Y.delete($)},set:($)=>{Q=$;for(let X of Y)X(Q)}}};var o=\\\"pstdio-extension-mount\\\",WJ=()=>{let J=new Map;return{get length(){return J.size},clear:()=>J.clear(),getItem:(Q)=>J.get(Q)??null,key:(Q)=>Array.from(J.keys())[Q]??null,removeItem:(Q)=>J.delete(Q),setItem:(Q,Y)=>J.set(Q,Y)}},LJ=()=>{for(let J of[\\\"localStorage\\\",\\\"sessionStorage\\\"])try{window[J]}catch{Object.defineProperty(window,J,{configurable:!0,value:WJ()})}},t=(J,Q)=>{let Y=document.documentElement,$=J===\\\"dark\\\"?\\\"light\\\":\\\"dark\\\";Y.classList.remove($),Y.classList.add(J),Y.setAttribute(\\\"data-theme\\\",J),Y.style.colorScheme=J;for(let[X,Z]of Object.entries(Q))if(X.startsWith(\\\"--\\\"))Y.style.setProperty(X,Z)},_J=(J)=>{for(let Q of J){let Y=document.createElement(\\\"link\\\");Y.rel=\\\"stylesheet\\\",Y.href=Q,document.head.appendChild(Y)}},VJ=()=>{let J=document.getElementById(o);if(!J)J=document.createElement(\\\"div\\\"),J.id=o,J.style.height=\\\"100%\\\",J.style.width=\\\"100%\\\",document.body.appendChild(J);return J},AJ=(J)=>J instanceof HTMLInputElement||J instanceof HTMLTextAreaElement||J instanceof HTMLSelectElement||J instanceof HTMLElement&&J.isContentEditable,DJ=async()=>{LJ();let J=s(void 0),Q=new Map,Y=(G,U)=>{let z=Q.get(G)??new Set;return z.add(U),Q.set(G,z),()=>{z.delete(U)}},$,X=!1,Z=await l.connect({init:async(G)=>{try{t(G.theme,G.themeVariables),_J(G.styles),J.set(G.props);let U=VJ(),z=await import(G.moduleUrl),j=z.default??(z.mount?z:void 0);if(!j?.mount)throw Error(\\\"Extension module does not export a default view (defineExtensionView).\\\");let _=a((q)=>Z.remote.call(q),Y,G.extensionId),N=await j.mount(U,_,J);if($=typeof N===\\\"function\\\"?N:void 0,!X)X=!0,document.addEventListener(\\\"keydown\\\",(q)=>{if(!q.ctrlKey&&!q.metaKey&&!q.altKey)return;if(AJ(q.target)&&!q.shiftKey)return;Z.remote.call({method:\\\"host.dispatchKeyboardEvent\\\",params:{key:q.key,code:q.code,ctrlKey:q.ctrlKey,metaKey:q.metaKey,altKey:q.altKey,shiftKey:q.shiftKey,repeat:q.repeat}}).catch(()=>{})},!0)}catch(U){let z=w(U);throw Z.remote.runtimeError(z),U instanceof Error?U:Error(z.message)}},themeUpdate:(G)=>{t(G.theme,G.variables)},propsUpdate:(G)=>{J.set(G.props)},hostEvent:(G)=>{for(let U of Q.get(G.scope)??[])U(G.payload)}});Z.remote.ready({}),window.addEventListener(\\\"beforeunload\\\",()=>{$?.()})};DJ();\\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,89VCATC,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;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pstdio/workbench",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/pufflyai/prompt-studio"
@@ -45,8 +45,8 @@
45
45
  "@dnd-kit/core": "^6.3.1",
46
46
  "@dnd-kit/sortable": "^10.0.0",
47
47
  "@dnd-kit/utilities": "^3.2.2",
48
- "@pstdio/sdk": "^0.22.0",
49
- "@pstdio/ui": "^0.22.0",
48
+ "@pstdio/sdk": "^0.22.1",
49
+ "@pstdio/ui": "^0.23.0",
50
50
  "@tanstack/react-hotkeys": "0.10.0",
51
51
  "lucide-react": "^0.556.0",
52
52
  "rimless": "0.8.2",