@pstdio/workbench 0.37.0 → 0.39.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.
package/dist/react.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Di as CommandParamDescriptor, Gr as WorkbenchFocusRegionId, H as ThemePreferenceOption$1, In as TreeAction, Ir as RegisteredDataTableRendererContribution, Jn as MenuPath, Jr as RegisteredWidgetContribution, M as WorkbenchModuleContribution, O as WorkbenchCore, Ti as Command, Ur as WorkbenchPanelRenderInput, Wt as KeybindingSequence, Xn as RegisteredMenuItem, Zr as WorkbenchPanelInstance, Zt as WorkbenchTerminalController, _t as PreferenceRegistry, fi as WorkbenchRegion$1, gt as PreferencePropertySchema, ji as WorkbenchCommandExecutionContext, k as WorkbenchCoreContributionContext, ki as CommandParamSchema, oa as WorkbenchStore, q as WorkbenchStatusRegistry, qr as RegisteredPlaceholderContribution, sa as Disposable, si as WorkbenchWidgetPlacement, xt as PreferenceValue, yt as PreferenceScope, zi as ResourceRef } from "./index-xcZvsNOe.js";
2
- import { a as ReactResourceContextAction, i as ReactKanbanRendererContribution, n as ReactAttributesSource, r as ReactBoardColumnConfig, t as ReactAttributeDescriptor } from "./kanban-presentation-BuHAKDDJ.js";
1
+ import { A as WorkbenchCoreContributionContext, Ai as CommandParamDescriptor, Gt as KeybindingSequence, Hi as ResourceRef, J as WorkbenchStatusRegistry, Jr as WorkbenchFocusRegionId, Kr as WorkbenchPanelRenderInput, Lr as MenuPath, Mi as CommandParamSchema, N as WorkbenchModuleContribution, Oi as Command, Pi as WorkbenchCommandExecutionContext, Qt as WorkbenchTerminalController, St as PreferenceValue, Tr as TreeAction, U as ThemePreferenceOption$1, Xr as RegisteredPlaceholderContribution, Zr as RegisteredWidgetContribution, _t as PreferencePropertySchema, bt as PreferenceScope, ei as WorkbenchPanelInstance, hi as WorkbenchRegion$1, k as WorkbenchCore, la as WorkbenchStore, ua as Disposable, ui as WorkbenchWidgetPlacement, vt as PreferenceRegistry, wr as RegisteredDataTableRendererContribution, zr as RegisteredMenuItem } from "./index-Bzx1gf5-.js";
2
+ import { a as ReactResourceContextAction, i as ReactKanbanRendererContribution, n as ReactAttributesSource, r as ReactBoardColumnConfig, t as ReactAttributeDescriptor } from "./kanban-presentation-yKUdZyuY.js";
3
3
  import { ReactNode } from "react";
4
4
  import { FileIconThemePreferenceOption, ResourceContextAction, ThemePreference, ThemePreferenceOption } from "@pstdio/ui";
5
5
  import { FileUploadValue, ParamEditorProps, ParamValue } from "@pstdio/ui/param-editor";
@@ -170,6 +170,7 @@ export declare const WorkbenchWidgetHost: (props: WorkbenchWidgetHostProps) => i
170
170
  //#region src/react/renderers/data-table/data-table-view.d.ts
171
171
  interface WorkbenchDataTableViewProps {
172
172
  workbench: WorkbenchCore;
173
+ renderParamField?: CommandParamFieldRenderer;
173
174
  contribution: RegisteredDataTableRendererContribution;
174
175
  placement: WorkbenchPanelInstance;
175
176
  }
package/dist/react.js CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as e, A as t, B as n, C as r, D as i, E as a, F as o, G as s, H as c, I as l, J as u, K as d, L as f, M as p, N as m, O as h, P as g, Q as _, R as v, S as y, T as b, U as x, V as S, W as C, X as w, Y as T, Z as E, _ as D, b as O, d as k, et as A, f as j, g as M, h as N, i as P, j as F, k as I, l as L, m as R, n as z, nt as B, p as V, q as H, r as U, rt as W, t as G, tt as K, u as q, v as J, w as Y, x as X, y as Z, z as Q } from "./react-BaClOzCB.js";
1
+ import { $ as e, A as t, B as n, C as r, D as i, E as a, F as o, G as s, H as c, I as l, J as u, K as d, L as f, M as p, N as m, O as h, P as g, Q as _, R as v, S as y, T as b, U as x, V as S, W as C, X as w, Y as T, Z as E, _ as D, b as O, d as k, et as A, f as j, g as M, h as N, i as P, j as F, k as I, l as L, m as R, n as z, nt as B, p as V, q as H, r as U, rt as W, t as G, tt as K, u as q, v as J, w as Y, x as X, y as Z, z as Q } from "./react-CgOb52iV.js";
2
2
  export { H as CommandParamField, r as WORKBENCH_SETTINGS_NAV_WIDGET_ID, i as WORKBENCH_SETTINGS_OPEN_COMMAND_ID, Y as WORKBENCH_SETTINGS_PANEL_WIDGET_ID, b as WORKBENCH_SETTINGS_WIDGET_ID, V as WORKBENCH_TERMINAL_OPEN_COMMAND_ID, R as WORKBENCH_TERMINAL_PANEL_SIZE, N as WORKBENCH_TERMINAL_WIDGET_ID, P as Workbench, X as WorkbenchAttachedSidePanel, K as WorkbenchBreadcrumbView, d as WorkbenchCommandPalette, p as WorkbenchDataTableView, y as WorkbenchFloatingSidePanel, s as WorkbenchFocusRegion, x as WorkbenchHeaderActions, W as WorkbenchIcon, n as WorkbenchKeybindingDispatcher, G as WorkbenchModuleHost, l as WorkbenchNotificationHost, L as WorkbenchOverlayLayer, I as WorkbenchPreferencesForm, g as WorkbenchRegion, m as WorkbenchRegionTabs, J as WorkbenchTerminalPanel, k as WorkbenchThemeProvider, q as WorkbenchThemeScope, h as WorkbenchTreeView, o as WorkbenchWidgetHost, O as WorkflowStatusSettings, w as buildCommandParamInitialValues, u as commandParamName, E as createCommandFilesParamValue, Z as createControllerTerminalBridge, Q as createTreeContextMenuItems, S as createWorkbenchHotkeyRegistrations, f as createWorkbenchResourceActions, a as createWorkbenchSettingsModule, M as createWorkbenchTerminalModule, z as disposeWorkbenchModuleHostRegistrations, _ as isCommandFilesParamValue, e as listCommandParamEntries, C as listWorkbenchMenuItems, A as normalizeCommandParamValues, c as normalizeWorkbenchKeybinding, D as openWorkbenchTerminal, t as paramValueToPreference, F as preferenceSchemaToParams, T as readCommandParamValue, U as syncWorkbenchModuleHostRegistrations, v as useWorkbenchResourceActionResolver, B as useWorkbenchStore, j as useWorkbenchThemePreferences };
package/dist/storage.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { I as WorkbenchPersistenceAdapter, Kr as LayoutPersistenceAdapter, Wn as TreeRendererPersistenceAdapter, fn as WorkbenchSidePanelPersistenceAdapter, pn as WorkbenchPanelMenuStatePersistenceAdapter, vn as WorkbenchPageLocationPersistence } from "./index-xcZvsNOe.js";
1
+ import { L as WorkbenchPersistenceAdapter, Nr as TreeRendererPersistenceAdapter, Yr as LayoutPersistenceAdapter, mn as WorkbenchPanelMenuStatePersistenceAdapter, pn as WorkbenchSidePanelPersistenceAdapter, yn as WorkbenchPageLocationPersistence } from "./index-Bzx1gf5-.js";
2
2
  //#region src/storage/local-storage-persistence-helpers.d.ts
3
3
  interface WorkbenchStorageLike {
4
4
  readonly length?: number;
@@ -27,7 +27,7 @@ var e = "pstdio-extension-mount", t = (e) => e.replaceAll("&", "&").replaceA
27
27
  ${t}
28
28
  </body>
29
29
  </html>
30
- `, i = (e) => r(`<script src="${t(e)}"><\/script>`), a = (e) => r(`<script>${n(e)}<\/script>`), o = () => "// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\nfunction re(){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 r=t.versions??{},s=t.release?.name;if(r.bun||s===\"bun\"||e.Bun!==void 0)return\"bun\";if(r.node&&s===\"node\")return\"node\"}return e.Bun===void 0?\"browser\":\"bun\"}function H(){return re()}function z(){return H()===\"worker\"}function B(){let e=H();return e===\"node\"||e===\"bun\"}function ne(){return window.self!==window.top}function se(e){let t={};return function r(s,i=\"\"){Object.keys(s).forEach((n)=>{let o=i?`${i}.${n}`:n;s[n]===Object(s[n])&&r(s[n],o),typeof s[n]==\"function\"&&(t[o]=s[n],delete s[n])})}(e),t}function oe(e){return!e||e===\"null\"?\"*\":e}function ie(e,t,r){if(!e||typeof e!=\"object\")return e;let s=Array.isArray(t)?t:t.split(\".\").map((n)=>n.match(/^\\d+$/)?Number(n):n),i=e;for(let n=0;n<s.length;n++){let o=s[n];n===s.length-1?i[o]=r:((!i[o]||typeof i[o]!=\"object\")&&(i[o]=typeof s[n+1]==\"number\"?[]:{}),i=i[o])}return e}function ae(e=10){let t=\"\";for(let r=0;r<e;r++)t+=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".charAt(Math.floor(Math.random()*62));return t}var V=H(),x=null;if(V===\"node\"||V===\"bun\")try{let e=globalThis.require;x=e?.(\"node:worker_threads\")?.parentPort??null}catch{}function ce(){if(B())return x;if(z())return self;if(ne())return window.parent;throw Error(\"No valid target found for postMessage\")}function C(e,t,r,s){if(!e)throw Error(\"Rimless Error: No target specified for postMessage\");if(B()&&e===x){e.postMessage(t,{transfer:s});return}if(z()){e.postMessage(t,{transfer:s});return}if(e.postMessage){e.postMessage(t,{targetOrigin:oe(r),transfer:s});return}throw Error(\"Rimless Error: Invalid target for postMessage\")}function G(e){return x!==null&&e===x}function L(e,t,r){G(e)?e.on(t,r):(\"addEventListener\"in e)&&e.addEventListener(t,r)}function O(e,t,r){G(e)?e.off(t,r):(\"removeEventListener\"in e)&&e.removeEventListener(t,r)}function N(e){return e.data||e}var b=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}({}),S=Symbol();function de(e={},t,r,s,i){let n=[];for(let[o,d]of Object.entries(e)){async function a(u){let{action:E,callID:m,connectionID:f,callName:v,args:w=[]}=N(u);if(E!==y.RPC_REQUEST||!m||!v||v!==o||f!==t)return;let g={action:y.RPC_RESOLVE,callID:m,callName:v,connectionID:f,error:null,result:null},R;try{g.result=await d(...w,i),g.result?.[S]&&(R=g.result[S]??[],delete g.result[S])}catch(A){g.action=y.RPC_REJECT,g.error=JSON.parse(JSON.stringify(A,Object.getOwnPropertyNames(A)))}C(s,g,u?.origin,R)}L(r,b.MESSAGE,a),n.push(()=>O(r,b.MESSAGE,a))}return()=>n.forEach((o)=>o())}function le(e,t,r,s=[],i,n){return(...o)=>new Promise((d,a)=>{let u=ae();function E(v){let{callID:w,connectionID:g,callName:R,result:A,error:te,action:W}=N(v);if(!(!w||!R)&&R===e&&w===u&&g===t){if(W===y.RPC_RESOLVE)return d(A);if(W===y.RPC_REJECT)return a(te)}}let m={action:y.RPC_REQUEST,args:o,callID:u,callName:e,connectionID:t},f=o.reduce((v,w)=>w[S]?.length?v.concat(w[S]):v,o[S]??[]);L(i,b.MESSAGE,E),s.push(()=>O(i,b.MESSAGE,E)),C(n,m,r?.origin,f)})}function fe(e={},t=[],r,s,i,n){let o={...e},d=[];for(let a of t)ie(o,a,le(a,r,s,d,i,n));return{remote:o,unregisterRemote:()=>d.forEach((a)=>a())}}function pe(e={},t){return new Promise(async(r)=>{let s=se(e),i=ce(),n=self||window;async function o(d){let a=N(d);if(a?.action!==y.HANDSHAKE_REPLY)return;let{remote:u,unregisterRemote:E}=fe(a.schema,a.methodNames,a.connectionID,d,n,i),m=de(s,a.connectionID,n,i,u);return await t?.onConnectionSetup?.(u),C(i,{action:y.HANDSHAKE_REPLY,connectionID:a.connectionID},d?.origin),r({remote:u,close:()=>{O(n,b.MESSAGE,o),E(),m()},id:a.connectionID})}L(n,b.MESSAGE,o),C(i,{action:y.HANDSHAKE_REQUEST,methodNames:Object.keys(s),schema:e})})}var J={connect:pe};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\"}},M=(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,r=typeof e.stack===\"string\"?e.stack:void 0;if(t)return r?{message:t,stack:r}:{message:t};return{message:q(e)}}if(e===null||e===void 0)return{message:\"Unknown error\"};return{message:q(e)}};var j=\"(?:0|[1-9]\\\\d*)\",Y=`(?:${j}|\\\\d*[A-Za-z-][0-9A-Za-z-]*)`,Pe=new RegExp(`^${j}\\\\.${j}\\\\.${j}(?:-${Y}(?:\\\\.${Y})*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$`),U=[\"sidenav\",\"main\",\"secondary\",\"side\"];var p=(e,t)=>({extensionId:\"pstdio\",kind:e,id:t}),h={project:p(\"mode\",\"project\"),sessions:p(\"mode\",\"sessions\"),settings:p(\"mode\",\"settings\")},Ae={project:{ref:h.project,regions:U},sessions:{ref:h.sessions,regions:U},settings:{ref:h.settings,regions:U}},_=(e,t,r)=>({id:e,ref:p(\"resource-kind\",e),label:t,menuSlots:r}),K=[{id:\"headerPrimary\",placement:\"header-primary\",access:\"public\"},{id:\"headerOverflow\",placement:\"header-overflow\",access:\"public\"}],D={project:_(\"project\",\"Extension\",K),session:_(\"session\",\"Session\",K),workspace:_(\"workspace\",\"Workspace\",K)},k={project:D.project.ref,session:D.session.ref,workspace:D.workspace.ref},P={start:p(\"page\",\"start\"),sessions:p(\"page\",\"sessions\"),session:p(\"page\",\"session\"),workspaces:p(\"page\",\"workspaces\"),workspace:p(\"page\",\"workspace\")},Ce={start:{ref:P.start,mode:h.project,path:\"\",primary:{cardinality:\"one\",resourceKinds:[]}},sessions:{ref:P.sessions,mode:h.sessions,path:\"sessions\",primary:{cardinality:\"one\",resourceKinds:[]}},session:{ref:P.session,mode:h.sessions,path:\"session\",primary:{cardinality:\"one\",resourceKinds:[\"session\",\"session-draft\"]}},workspaces:{ref:P.workspaces,mode:h.project,path:\"workspaces\",primary:{cardinality:\"one\",resourceKinds:[]}},workspace:{ref:P.workspace,mode:h.project,path:\"workspace\",primary:{cardinality:\"many\",resourceKinds:[\"workspace\"]}}},me={projectSession:p(\"placement\",\"project-session\")},Me={projectSession:{ref:me.projectSession,mode:h.project,cardinality:\"many\",resourceKinds:[\"session\",\"session-draft\"]}},je={projectSettings:p(\"settings-panel\",\"project.settings\"),statusBarLeading:p(\"status-bar-item\",\"status-bar.leading\"),statusBarTrailing:p(\"status-bar-item\",\"status-bar.trailing\")};var Q=(e)=>({...e,kind:\"command\"}),Te=Object.assign(Q,{forExtension:(e)=>(t)=>Q({extensionId:`${e.publisher}.${e.name}`,id:t})}),ge=(e)=>({...e,kind:\"event\"}),T=(e,t)=>({id:e,kind:t.kind,label:t.label,description:t.description,metadata:t.metadata}),l=(e)=>ge({extensionId:\"pstdio\",id:e}),I=(e,t)=>T(`${e.id}.${t}`,{kind:\"menu\"}),$e={sidenav:T(\"project.sidenav\",{kind:\"panel\"}),headerPrimary:I(k.project,\"headerPrimary\"),headerOverflow:I(k.project,\"headerOverflow\"),settingsPanels:T(\"project.settingsPanels\",{kind:\"settings\"})},He={headerPrimary:I(k.session,\"headerPrimary\"),headerOverflow:I(k.session,\"headerOverflow\")},Le={headerPrimary:I(k.workspace,\"headerPrimary\"),headerOverflow:I(k.workspace,\"headerOverflow\"),sidenav:T(\"workspace.sidenav\",{kind:\"panel\"})},Oe={opened:l(\"project.opened\")},Ne={sessionsChanged:l(\"view.sessions.changed\"),workspacesChanged:l(\"view.workspaces.changed\"),repositoriesChanged:l(\"view.repositories.changed\")},Ue={started:l(\"session.started\"),resumed:l(\"session.resumed\"),awaitingInput:l(\"session.awaitingInput\"),succeeded:l(\"session.succeeded\"),failed:l(\"session.failed\"),completed:l(\"session.completed\")},_e={created:l(\"workspace.created\"),provision:l(\"workspace.provision\"),ready:l(\"workspace.ready\"),archived:l(\"workspace.archived\"),deleted:l(\"workspace.deleted\")},Ke={removed:l(\"worktree.removed\")},De={committed:l(\"git.committed\"),rebased:l(\"git.rebased\"),merged:l(\"git.merged\"),conflicted:l(\"git.conflicted\")};var ye=[\"clipboard.write\",\"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\"],he=[\"artifacts.read\"],Ee=[\"host.dispatchKeyboardEvent\"],We=[...ye.filter((e)=>e!==\"clipboard.write\"),...he,...Ee];var c=(e)=>(t)=>({...t,ref:{kind:e,id:t.id}}),Ve=c(\"view\"),ze=c(\"view-menu\"),Be=c(\"placement\"),Ge=c(\"resource-kind\");var Je=c(\"navigation-item\"),qe=c(\"navigation-tree\"),Ye=c(\"mode\");var Qe=c(\"status-bar-item\"),Fe=c(\"status\"),Ze=c(\"settings-panel\"),Xe=c(\"activity-item\"),et=c(\"settings-section\"),tt=c(\"command-palette-resource\"),rt=c(\"keybinding\"),nt=c(\"schedule\"),st=c(\"artifact-mount\"),ot=c(\"template-type\"),it=c(\"template\"),at=c(\"skill\"),ct=c(\"theme\"),dt=c(\"file-icon-theme\"),lt=c(\"workspace-type\"),ft=c(\"harness\"),pt=c(\"connection\");var F=(e,t,r)=>({call:async(s,...i)=>{try{return await e({method:s,params:i[0]})}catch(n){if(n instanceof Error)throw n;throw Error(M(n).message)}},onEvent:t,extensionId:r}),Z=(e)=>{let t=e,r=new Set;return{get:()=>t,subscribe:(s)=>(r.add(s),()=>r.delete(s)),set:(s)=>{t=s;for(let i of r)i(t)}}};var X=\"pstdio-extension-mount\",ve=()=>{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,r)=>e.set(t,r)}},we=()=>{for(let e of[\"localStorage\",\"sessionStorage\"])try{window[e]}catch{Object.defineProperty(window,e,{configurable:!0,value:ve()})}},ee=(e,t)=>{let r=document.documentElement,s=e===\"dark\"?\"light\":\"dark\";r.classList.remove(s),r.classList.add(e),r.setAttribute(\"data-theme\",e),r.style.colorScheme=e;for(let[i,n]of Object.entries(t))if(i.startsWith(\"--\"))r.style.setProperty(i,n)},Se=(e)=>{for(let t of e){let r=document.createElement(\"link\");r.rel=\"stylesheet\",r.href=t,document.head.appendChild(r)}},be=()=>{let e=document.getElementById(X);if(!e)e=document.createElement(\"div\"),e.id=X,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,Ie=async()=>{we();let e=Z(void 0),t=new Map,r=(o,d)=>{let a=t.get(o)??new Set;return a.add(d),t.set(o,a),()=>{a.delete(d)}},s,i=!1,n=await J.connect({init:async(o)=>{try{ee(o.theme,o.themeVariables),Se(o.styles),e.set(o.props);let d=be(),a=await import(o.moduleUrl),u=a.default??(a.mount?a:void 0);if(!u?.mount)throw Error(\"Extension module does not export a default view (defineExtensionView).\");let E=F((f)=>n.remote.call(f),r,o.extensionId),m=await u.mount(d,E,e);if(s=typeof m===\"function\"?m:void 0,!i)i=!0,document.addEventListener(\"keydown\",(f)=>{if(!f.ctrlKey&&!f.metaKey&&!f.altKey)return;if(ke(f.target)&&!f.shiftKey)return;n.remote.call({method:\"host.dispatchKeyboardEvent\",params:{key:f.key,code:f.code,ctrlKey:f.ctrlKey,metaKey:f.metaKey,altKey:f.altKey,shiftKey:f.shiftKey,repeat:f.repeat}}).catch(()=>{})},!0)}catch(d){let a=M(d);throw n.remote.runtimeError(a),d instanceof Error?d:Error(a.message)}},themeUpdate:(o)=>{ee(o.theme,o.variables)},propsUpdate:(o)=>{e.set(o.props)},hostEvent:(o)=>{for(let d of t.get(o.scope)??[])d(o.payload)}});n.remote.ready({}),window.addEventListener(\"beforeunload\",()=>{s?.()})};Ie();\n";
30
+ `, i = (e) => r(`<script src="${t(e)}"><\/script>`), a = (e) => r(`<script>${n(e)}<\/script>`), o = () => "// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\nfunction te(){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 r=t.versions??{},s=t.release?.name;if(r.bun||s===\"bun\"||e.Bun!==void 0)return\"bun\";if(r.node&&s===\"node\")return\"node\"}return e.Bun===void 0?\"browser\":\"bun\"}function T(){return te()}function B(){return T()===\"worker\"}function z(){let e=T();return e===\"node\"||e===\"bun\"}function re(){return window.self!==window.top}function ne(e){let t={};return function r(s,i=\"\"){Object.keys(s).forEach((n)=>{let o=i?`${i}.${n}`:n;s[n]===Object(s[n])&&r(s[n],o),typeof s[n]==\"function\"&&(t[o]=s[n],delete s[n])})}(e),t}function se(e){return!e||e===\"null\"?\"*\":e}function oe(e,t,r){if(!e||typeof e!=\"object\")return e;let s=Array.isArray(t)?t:t.split(\".\").map((n)=>n.match(/^\\d+$/)?Number(n):n),i=e;for(let n=0;n<s.length;n++){let o=s[n];n===s.length-1?i[o]=r:((!i[o]||typeof i[o]!=\"object\")&&(i[o]=typeof s[n+1]==\"number\"?[]:{}),i=i[o])}return e}function ie(e=10){let t=\"\";for(let r=0;r<e;r++)t+=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".charAt(Math.floor(Math.random()*62));return t}var V=T(),x=null;if(V===\"node\"||V===\"bun\")try{let e=globalThis.require;x=e?.(\"node:worker_threads\")?.parentPort??null}catch{}function ae(){if(z())return x;if(B())return self;if(re())return window.parent;throw Error(\"No valid target found for postMessage\")}function C(e,t,r,s){if(!e)throw Error(\"Rimless Error: No target specified for postMessage\");if(z()&&e===x){e.postMessage(t,{transfer:s});return}if(B()){e.postMessage(t,{transfer:s});return}if(e.postMessage){e.postMessage(t,{targetOrigin:se(r),transfer:s});return}throw Error(\"Rimless Error: Invalid target for postMessage\")}function G(e){return x!==null&&e===x}function H(e,t,r){G(e)?e.on(t,r):(\"addEventListener\"in e)&&e.addEventListener(t,r)}function O(e,t,r){G(e)?e.off(t,r):(\"removeEventListener\"in e)&&e.removeEventListener(t,r)}function L(e){return e.data||e}var b=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}({}),S=Symbol();function ce(e={},t,r,s,i){let n=[];for(let[o,d]of Object.entries(e)){async function a(u){let{action:E,callID:m,connectionID:f,callName:v,args:w=[]}=L(u);if(E!==y.RPC_REQUEST||!m||!v||v!==o||f!==t)return;let g={action:y.RPC_RESOLVE,callID:m,callName:v,connectionID:f,error:null,result:null},R;try{g.result=await d(...w,i),g.result?.[S]&&(R=g.result[S]??[],delete g.result[S])}catch(A){g.action=y.RPC_REJECT,g.error=JSON.parse(JSON.stringify(A,Object.getOwnPropertyNames(A)))}C(s,g,u?.origin,R)}H(r,b.MESSAGE,a),n.push(()=>O(r,b.MESSAGE,a))}return()=>n.forEach((o)=>o())}function de(e,t,r,s=[],i,n){return(...o)=>new Promise((d,a)=>{let u=ie();function E(v){let{callID:w,connectionID:g,callName:R,result:A,error:ee,action:W}=L(v);if(!(!w||!R)&&R===e&&w===u&&g===t){if(W===y.RPC_RESOLVE)return d(A);if(W===y.RPC_REJECT)return a(ee)}}let m={action:y.RPC_REQUEST,args:o,callID:u,callName:e,connectionID:t},f=o.reduce((v,w)=>w[S]?.length?v.concat(w[S]):v,o[S]??[]);H(i,b.MESSAGE,E),s.push(()=>O(i,b.MESSAGE,E)),C(n,m,r?.origin,f)})}function le(e={},t=[],r,s,i,n){let o={...e},d=[];for(let a of t)oe(o,a,de(a,r,s,d,i,n));return{remote:o,unregisterRemote:()=>d.forEach((a)=>a())}}function fe(e={},t){return new Promise(async(r)=>{let s=ne(e),i=ae(),n=self||window;async function o(d){let a=L(d);if(a?.action!==y.HANDSHAKE_REPLY)return;let{remote:u,unregisterRemote:E}=le(a.schema,a.methodNames,a.connectionID,d,n,i),m=ce(s,a.connectionID,n,i,u);return await t?.onConnectionSetup?.(u),C(i,{action:y.HANDSHAKE_REPLY,connectionID:a.connectionID},d?.origin),r({remote:u,close:()=>{O(n,b.MESSAGE,o),E(),m()},id:a.connectionID})}H(n,b.MESSAGE,o),C(i,{action:y.HANDSHAKE_REQUEST,methodNames:Object.keys(s),schema:e})})}var J={connect:fe};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\"}},M=(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,r=typeof e.stack===\"string\"?e.stack:void 0;if(t)return r?{message:t,stack:r}:{message:t};return{message:q(e)}}if(e===null||e===void 0)return{message:\"Unknown error\"};return{message:q(e)}};var N=\"(?:0|[1-9]\\\\d*)\",xe=new RegExp(`^\\\\^(${N}\\\\.${N}\\\\.${N})$`),U=[\"sidenav\",\"main\",\"secondary\",\"side\"];var p=(e,t)=>({extensionId:\"pstdio\",kind:e,id:t}),h={project:p(\"mode\",\"project\"),sessions:p(\"mode\",\"sessions\"),settings:p(\"mode\",\"settings\")},Pe={project:{ref:h.project,regions:U},sessions:{ref:h.sessions,regions:U},settings:{ref:h.settings,regions:U}},_=(e,t,r)=>({id:e,ref:p(\"resource-kind\",e),label:t,menuSlots:r}),K=[{id:\"headerPrimary\",placement:\"header-primary\",access:\"public\"},{id:\"headerOverflow\",placement:\"header-overflow\",access:\"public\"}],D={project:_(\"project\",\"Extension\",K),session:_(\"session\",\"Session\",K),workspace:_(\"workspace\",\"Workspace\",K)},k={project:D.project.ref,session:D.session.ref,workspace:D.workspace.ref},P={start:p(\"page\",\"start\"),sessions:p(\"page\",\"sessions\"),session:p(\"page\",\"session\"),workspaces:p(\"page\",\"workspaces\"),workspace:p(\"page\",\"workspace\")},Ae={start:{ref:P.start,mode:h.project,path:\"\",primary:{cardinality:\"one\",resourceKinds:[]}},sessions:{ref:P.sessions,mode:h.sessions,path:\"sessions\",primary:{cardinality:\"one\",resourceKinds:[]}},session:{ref:P.session,mode:h.sessions,path:\"session\",primary:{cardinality:\"one\",resourceKinds:[\"session\",\"session-draft\"]}},workspaces:{ref:P.workspaces,mode:h.project,path:\"workspaces\",primary:{cardinality:\"one\",resourceKinds:[]}},workspace:{ref:P.workspace,mode:h.project,path:\"workspace\",primary:{cardinality:\"many\",resourceKinds:[\"workspace\"]}}},ue={projectSession:p(\"placement\",\"project-session\")},Ce={projectSession:{ref:ue.projectSession,mode:h.project,cardinality:\"many\",resourceKinds:[\"session\",\"session-draft\"]}},Me={projectSettings:p(\"settings-panel\",\"project.settings\"),statusBarLeading:p(\"status-bar-item\",\"status-bar.leading\"),statusBarTrailing:p(\"status-bar-item\",\"status-bar.trailing\")};var Y=(e)=>({...e,kind:\"command\"}),je=Object.assign(Y,{forExtension:(e)=>(t)=>Y({extensionId:`${e.publisher}.${e.name}`,id:t})}),me=(e)=>({...e,kind:\"event\"}),j=(e,t)=>({id:e,kind:t.kind,label:t.label,description:t.description,metadata:t.metadata}),l=(e)=>me({extensionId:\"pstdio\",id:e}),I=(e,t)=>j(`${e.id}.${t}`,{kind:\"menu\"}),Te={sidenav:j(\"project.sidenav\",{kind:\"panel\"}),headerPrimary:I(k.project,\"headerPrimary\"),headerOverflow:I(k.project,\"headerOverflow\"),settingsPanels:j(\"project.settingsPanels\",{kind:\"settings\"})},He={headerPrimary:I(k.session,\"headerPrimary\"),headerOverflow:I(k.session,\"headerOverflow\")},Oe={headerPrimary:I(k.workspace,\"headerPrimary\"),headerOverflow:I(k.workspace,\"headerOverflow\"),sidenav:j(\"workspace.sidenav\",{kind:\"panel\"})},$e={opened:l(\"project.opened\")},Le={sessionsChanged:l(\"view.sessions.changed\"),workspacesChanged:l(\"view.workspaces.changed\"),repositoriesChanged:l(\"view.repositories.changed\")},Ne={started:l(\"session.started\"),resumed:l(\"session.resumed\"),awaitingInput:l(\"session.awaitingInput\"),succeeded:l(\"session.succeeded\"),failed:l(\"session.failed\"),completed:l(\"session.completed\")},Ue={created:l(\"workspace.created\"),provision:l(\"workspace.provision\"),ready:l(\"workspace.ready\"),archived:l(\"workspace.archived\"),deleted:l(\"workspace.deleted\")},_e={removed:l(\"worktree.removed\")},Ke={committed:l(\"git.committed\"),rebased:l(\"git.rebased\"),merged:l(\"git.merged\"),conflicted:l(\"git.conflicted\")};var ge=[\"clipboard.write\",\"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\"],ye=[\"artifacts.read\"],he=[\"host.dispatchKeyboardEvent\"],De=[...ge.filter((e)=>e!==\"clipboard.write\"),...ye,...he];var c=(e)=>(t)=>({...t,ref:{kind:e,id:t.id}}),We=c(\"view\"),Ve=c(\"view-menu\"),Be=c(\"placement\"),ze=c(\"resource-kind\");var Ge=c(\"navigation-item\"),Je=c(\"navigation-tree\"),qe=c(\"mode\");var Ye=c(\"status-bar-item\"),Qe=c(\"status\"),Fe=c(\"settings-panel\"),Xe=c(\"activity-item\"),Ze=c(\"settings-section\"),et=c(\"command-palette-resource\"),tt=c(\"keybinding\"),rt=c(\"schedule\"),nt=c(\"artifact-mount\"),st=c(\"template-type\"),ot=c(\"template\"),it=c(\"skill\"),at=c(\"theme\"),ct=c(\"file-icon-theme\"),dt=c(\"workspace-type\"),lt=c(\"harness\"),ft=c(\"connection\");var Q=(e,t,r)=>({call:async(s,...i)=>{try{return await e({method:s,params:i[0]})}catch(n){if(n instanceof Error)throw n;throw Error(M(n).message)}},onEvent:t,extensionId:r}),F=(e)=>{let t=e,r=new Set;return{get:()=>t,subscribe:(s)=>(r.add(s),()=>r.delete(s)),set:(s)=>{t=s;for(let i of r)i(t)}}};var X=\"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,r)=>e.set(t,r)}},ve=()=>{for(let e of[\"localStorage\",\"sessionStorage\"])try{window[e]}catch{Object.defineProperty(window,e,{configurable:!0,value:Ee()})}},Z=(e,t)=>{let r=document.documentElement,s=e===\"dark\"?\"light\":\"dark\";r.classList.remove(s),r.classList.add(e),r.setAttribute(\"data-theme\",e),r.style.colorScheme=e;for(let[i,n]of Object.entries(t))if(i.startsWith(\"--\"))r.style.setProperty(i,n)},we=(e)=>{for(let t of e){let r=document.createElement(\"link\");r.rel=\"stylesheet\",r.href=t,document.head.appendChild(r)}},Se=()=>{let e=document.getElementById(X);if(!e)e=document.createElement(\"div\"),e.id=X,e.style.height=\"100%\",e.style.width=\"100%\",document.body.appendChild(e);return e},be=(e)=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLElement&&e.isContentEditable,ke=async()=>{ve();let e=F(void 0),t=new Map,r=(o,d)=>{let a=t.get(o)??new Set;return a.add(d),t.set(o,a),()=>{a.delete(d)}},s,i=!1,n=await J.connect({init:async(o)=>{try{Z(o.theme,o.themeVariables),we(o.styles),e.set(o.props);let d=Se(),a=await import(o.moduleUrl),u=a.default??(a.mount?a:void 0);if(!u?.mount)throw Error(\"Extension module does not export a default view (defineExtensionView).\");let E=Q((f)=>n.remote.call(f),r,o.extensionId),m=await u.mount(d,E,e);if(s=typeof m===\"function\"?m:void 0,!i)i=!0,document.addEventListener(\"keydown\",(f)=>{if(!f.ctrlKey&&!f.metaKey&&!f.altKey)return;if(be(f.target)&&!f.shiftKey)return;n.remote.call({method:\"host.dispatchKeyboardEvent\",params:{key:f.key,code:f.code,ctrlKey:f.ctrlKey,metaKey:f.metaKey,altKey:f.altKey,shiftKey:f.shiftKey,repeat:f.repeat}}).catch(()=>{})},!0)}catch(d){let a=M(d);throw n.remote.runtimeError(a),d instanceof Error?d:Error(a.message)}},themeUpdate:(o)=>{Z(o.theme,o.variables)},propsUpdate:(o)=>{e.set(o.props)},hostEvent:(o)=>{for(let d of t.get(o.scope)??[])d(o.payload)}});n.remote.ready({}),window.addEventListener(\"beforeunload\",()=>{s?.()})};ke();\n";
31
31
  //#endregion
32
32
  export { o as getExtensionRuntimeScript, i as renderExtensionRuntimeHtml, a as renderInlineExtensionRuntimeHtml };
33
33