@pstdio/workbench 0.44.0-nightly.20261017030225 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/extensions.d.ts +163 -1040
  2. package/dist/extensions.js +1194 -808
  3. package/dist/extensions.js.map +1 -1
  4. package/dist/{file-renderer-view-r1qeAkQT.js → file-renderer-view-C5dyoQQW.js} +211 -214
  5. package/dist/file-renderer-view-C5dyoQQW.js.map +1 -0
  6. package/dist/{index-zQfxsv7O.d.ts → index-8x-QT7wg.d.ts} +1994 -533
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.js +2052 -2002
  9. package/dist/index.js.map +1 -1
  10. package/dist/{kanban-presentation-BtBGjJnW.d.ts → kanban-presentation-pexk_oCY.d.ts} +1 -1
  11. package/dist/layout-tab-presentation-Bz6EgFEa.js +15 -0
  12. package/dist/layout-tab-presentation-Bz6EgFEa.js.map +1 -0
  13. package/dist/{navigation-tree-registry-CIwRvLFJ.js → navigation-tree-registry-C5l3eO3n.js} +2 -2
  14. package/dist/{navigation-tree-registry-CIwRvLFJ.js.map → navigation-tree-registry-C5l3eO3n.js.map} +1 -1
  15. package/dist/react-C-HbdPSw.js +8881 -0
  16. package/dist/react-C-HbdPSw.js.map +1 -0
  17. package/dist/react.d.ts +75 -29
  18. package/dist/react.js +2 -2
  19. package/dist/storage.d.ts +3 -2
  20. package/dist/storage.js +142 -123
  21. package/dist/storage.js.map +1 -1
  22. package/dist/webview-runtime.js +1 -1
  23. package/dist/workbench-renderers-Bz_dLyHW.js +4775 -0
  24. package/dist/workbench-renderers-Bz_dLyHW.js.map +1 -0
  25. package/package.json +3 -3
  26. package/dist/file-renderer-view-r1qeAkQT.js.map +0 -1
  27. package/dist/react-CoeiP5wi.js +0 -10939
  28. package/dist/react-CoeiP5wi.js.map +0 -1
  29. package/dist/workbench-renderers-Bj4sazP5.js +0 -976
  30. package/dist/workbench-renderers-Bj4sazP5.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-CoeiP5wi.js","names":["workbenchPanelRegions","WorkbenchLayout","WorkbenchPageContribution","resolvePageActivePlacement","layout","page","main","kind","selected","flatMap","id","region","regions","widgets","find","entry","widgetId","activeWidgetId","filter","placementIdentity","pageId","resource","Icon","IconProps","optionIcons","LucideIcon","lucideIcons","WorkbenchIconProps","Omit","name","size","toPascalCase","value","split","filter","Boolean","map","part","charAt","toUpperCase","slice","join","resolveLucideIcon","pascalName","candidates","candidate","IconComponent","Record","undefined","WorkbenchIcon","props","$","_c","rest","t0","t1","find","option","icon","t2","t3","_c","resourceKey","FileUploadValue","CommandParamDescriptor","CommandParamSchema","WorkbenchCommandExecutionContext","CommandFilesParamValue","refs","uploads","CommandParamValue","CommandParamEntry","key","label","humanize","value","spaced","replace","trim","charAt","toUpperCase","slice","isRecord","Record","Array","isArray","isFileUploadValue","file","id","name","status","isCommandFilesParamValue","every","ref","createCommandFilesParamValue","input","Partial","commandFilesParamValue","raw","multiple","filter","item","stringifyEditableValue","undefined","String","JSON","stringify","toIdentifierPrefix","_match","char","toLowerCase","metadataString","metadata","resourceContextValue","entry","context","resource","metadataValue","type","resourceType","dedupeOptions","options","seen","Set","option","has","add","hasCommandParameters","params","listCommandParamEntries","length","commandParamEntries","Object","entries","map","param","resolvedFrom","resolveCommandResourceParams","baseArgs","base","fromEntries","hasOwn","buildCommandParamInitialValues","values","defaultValue","isEmptyValue","parseJsonValue","parse","Error","normalizeValue","numberValue","Number","isFinite","split","Boolean","normalizeCommandParamValues","normalized","required","mergeCommandParamArgs","schema","humanize","isRecord","WorkbenchCore","WorkbenchTabAction","WorkbenchCommandParamsRequest","runUserAction","hasCommandParameters","runPlacementAction","workbench","action","requestParams","request","commandPalette","target","kind","navigation","openTarget","command","commands","getCommand","commandId","params","record","label","args","executeCommand","WorkbenchCore","WorkbenchTabAction","WorkbenchTabSnapshot","WorkbenchIcon","runPlacementAction","commandIdForAction","action","target","kind","commandId","undefined","placementMenuActions","workbench","snapshot","menu","flatMap","group","groupIndex","rows","map","row","index","key","id","label","icon","isDisabled","disabled","separatorBefore","onClick","useStore","WorkbenchStore","useWorkbenchStore","store","selector","useEffect","useState","WorkbenchCore","WorkbenchTabSnapshot","WorkbenchWidgetPlacement","toPanelInstance","resolveResourcePreview","useWorkbenchStore","readPlacementTab","placement","tab","getSnapshot","usePlacementTab","workbench","$","_c","changes","resources","preview","store","_temp","t0","snapshot","state_0","setState","t1","t2","refresh","subscription","subscribe","dispose","t3","state","resource","t4","undefined","projected","changed","t5","label","_c","_temp","HStack","Text","resourceKey","Breadcrumb","ResourceContextAction","SessionCompletionStatus","SessionIndicator","ReactNode","WorkbenchBreadcrumbItem","WorkbenchCore","resolvePageActivePlacement","resolveResourcePreview","WorkbenchIcon","placementMenuActions","usePlacementTab","useWorkbenchStore","WorkbenchBreadcrumbViewProps","workbench","getSessionStatus","item","resource","metadata","status","undefined","WorkbenchBreadcrumbIcon","props","$","_c","t0","indicator","type","t1","icon","WorkbenchBreadcrumbTitle","title","t2","buildWorkbenchBreadcrumbItems","items","actionsForResource","map","actions","url","onClick","length","contextMenuActions","WorkbenchBreadcrumbView","changes","resources","preview","store","_temp","breadcrumbs","_temp2","page","pages","_temp3","state_2","state","layout","placement","snapshot","projected","label","crumbs","flatMap","some","item_0","push","id","getKind","T0","item_1","t3","state_0","state_1","activePageId","_c","_temp","_temp2","_temp3","Button","HStack","Text","CommandOptionState","CommandOptionStatusProps","state","onRetry","CommandOptionStatus","props","$","_c","status","t0","options","length","t1","error","t2","t3","t4","_c","WorkbenchCompositionRegionPanels","WorkbenchCore","WorkbenchPanelRegion","useWorkbenchStore","WorkbenchCompositionPanelsByRegion","Record","useWorkbenchCompositionPanels","workbench","layout","store","state","modes","activeModeId","commands","context","main","composition","panelsFor","secondary","side","WorkbenchRegion","chakraBackgrounds","sidenav","main","panel","const","vscodeColor","token","fallback","replaceAll","workbenchBackgrounds","widget","workbenchRegionBackgrounds","nav","activity","secondary","status","overlay","side","Record","workbenchFocusBorder","workbenchCommandPaletteBackground","getWorkbenchRegionBackground","region","PaletteMode","Search","Terminal","WorkbenchCommandPaletteView","WorkbenchIcon","SEARCH_MODE_ID","COMMAND_MODE_ID","THEME_MODE_ID","workbenchPaletteModes","id","inputPrefix","isThemePaletteView","view","getPaletteViewMode","undefined","getPaletteViewModes","getPaletteInitialActiveIndex","input","themeInitialActiveIndex","getPaletteInputIcon","mode","getPalettePlaceholder","THEME_MODE_ID","PaletteEntry","useEffect","useState","WorkbenchCore","runUserAction","WorkbenchIcon","useWorkbenchStore","SEARCH_MODE_ID","RESOURCE_QUERY_LIMIT","RESOURCE_QUERY_DEBOUNCE_MS","UseWorkbenchCommandPaletteResourceEntriesInput","workbench","query","open","onClose","useWorkbenchCommandPaletteResourceEntries","input","$","_c","refreshToken","commandPaletteResources","store","_temp","t0","Symbol","for","entries","setEntries","t1","cancelled","handle","setTimeout","queryProviders","limit","then","groups","flatMap","group","results","map","result","id","mode","label","searchText","keywords","join","trim","description","title","icon","undefined","onActivate","activate","clearTimeout","t2","state","_c","_temp","Param","ParamValue","SelectionOption","CommandParamEntry","CommandParamValue","createCommandFilesParamValue","isCommandFilesParamValue","isFileUploadValue","asText","value","asList","Array","isArray","commandParamName","entry","label","commandParamOptions","options","map","option","id","name","icon","JSON_PARAM_TYPES","Set","buildCommandParam","base","key","description","type","defaultValue","Number","uploads","accept","multiple","allowCustomValues","multiSelect","placeholder","toLowerCase","searchable","length","clearable","required","has","singleLine","readCommandParamValue","filter","String","ParamEditorRow","ReactNode","WorkbenchCommandExecutionContext","CommandParamEntry","CommandParamValue","isCommandFilesParamValue","buildCommandParam","readCommandParamValue","CommandParamFieldProps","entry","value","context","disabled","onChange","onUpdateValue","update","current","onValidationChange","error","CommandParamFieldRenderer","props","CommandParamField","$","_c","t0","next","nextValue","type","refs","multiple","uploads","length","change","t1","t2","_id","next_0","t3","_c","CommandParamOption","CommandParamOptionSource","CommandParamSchema","CommandParamValue","normalizeCommandParamValues","Values","Record","CommandOptionState","key","status","options","error","ExecuteOptionCommand","commandId","args","signal","AbortSignal","Promise","valueRef","value","kind","argumentsFor","source","values","schema","resolved","Object","fromEntries","entries","params","map","descriptor","resolvedFrom","normalized","required","readOptions","result","Array","isArray","Error","row","valueField","labelField","label","createCommandOptionResolver","execute","onChange","referencedValue","queryKey","JSON","stringify","snapshot","disposed","controllers","Map","AbortController","listeners","Set","requests","sources","flatMap","param","publish","state","listener","clearInvalidSelection","offered","option","current","next","filter","has","length","load","field","get","abort","controller","set","version","requestKey","allowCustomValues","message","String","subscribe","add","delete","getSnapshot","update","retry","find","validate","errors","selected","Boolean","some","dispose","clear","useEffect","useRef","useState","useSyncExternalStore","CommandParamSchema","createCommandOptionResolver","ExecuteOptionCommand","CommandParamValue","useCommandOptions","schema","values","Record","execute","onChange","key","value","resolved","callbacks","current","resolver","id","args","signal","Promise","reject","Error","states","subscribe","getSnapshot","update","dispose","validate","retry","Box","Button","CloseButton","Dialog","HStack","Stack","Text","AlertMessage","handleDialogAcceptShortcut","ScrollArea","Fragment","useState","Command","RegisteredMenuItem","WorkbenchCommandExecutionContext","ExecuteOptionCommand","CommandOptionStatus","buildCommandParamInitialValues","CommandParamEntry","CommandParamValue","isCommandFilesParamValue","listCommandParamEntries","mergeCommandParamArgs","normalizeCommandParamValues","resolveCommandResourceParams","CommandParamField","CommandParamFieldRenderer","useCommandOptions","CommandParamsRequest","record","command","Pick","action","label","submitLabel","args","context","CommandParamFieldProps","CommandParamsDialogProps","request","renderParamField","executeOptionCommand","prepareArgs","input","commandId","onArgsChange","Promise","onRunError","error","onClose","onRun","isFilled","entry","value","type","undefined","refs","length","uploads","Array","isArray","CommandParamsDialog","props","$","_c","t0","revision","current","setCurrent","t1","CommandParamsForm","values","setValues","Record","params","resolved","setError","submitting","setSubmitting","customFieldErrors","setCustomFieldErrors","entries","close","setValue","key","options","fieldErrors","setFieldErrors","run","invalid","validate","Object","keys","preparedArgs","id","nextArgs","submission","resourceMutation","catch","caught","Error","message","isValid","some","Boolean","every","required","details","open","event","description","px","py","map","state","states","dynamic","fieldProps","disabled","status","onChange","onUpdateValue","update","onValidationChange","custom","retry","_c","Fragment","AlertMessage","DeleteConfirmationModal","useState","WorkbenchCore","WorkbenchCommandConfirmation","reportUserActionError","useWorkbenchStore","CommandParamFieldRenderer","CommandParamsDialog","PaletteParamsDialogProps","workbench","renderParamField","PaletteParamsDialog","props","$","_c","request","commandPalette","store","_temp","confirmation","_temp2","t0","label","t1","context","commands","id","args","signal","executeCommand","t2","input","prepareCommandArgs","commandId","onArgsChange","t3","error","t4","clearParams","t5","t6","args_0","t7","CommandConfirmationDialog","setError","description","buttonLabel","resolve","undefined","onConfirm","caught","Error","message","state","paramsRequest","state_0","_c","_temp","_temp2","_Fragment","RegisteredWidgetContribution","ResourceRef","WorkbenchCompositionAddablePanel","WorkbenchCore","WorkbenchPanelRegion","runUserAction","OpenPanelWidgetInput","workbench","widget","region","resource","pinned","open","getPanelLabel","openPanelWidget","input","openCommand","title","commands","executeCommand","commandId","args","source","active","layout","getActivePanel","panelId","id","movePanel","instanceId","widgetResource","resourceKinds","length","canOpen","undefined","openWidget","closable","role","tabRetention","shell","setRegionOpen","sidePanel","getMode","setMode","PaletteEntry","WorkbenchCore","workbenchPanelRegions","getPanelLabel","openPanelWidget","WorkbenchIcon","WorkbenchCompositionPanelsByRegion","COMMAND_MODE_ID","createWorkbenchPanelWidgetPaletteEntries","input","workbench","onClose","panelsByRegion","resource","getPrimaryResource","flatMap","region","composition","panelsFor","addable","map","panel","widget","contribution","panelLabel","label","title","id","mode","searchText","group","icon","undefined","onActivate","pinned","open","resourceKey","PaletteEntry","ResourceBrowseEntry","WorkbenchCore","runUserAction","WorkbenchIcon","SEARCH_MODE_ID","WorkbenchResourcePaletteEntry","mode","createResourceEntry","input","workbench","entry","onClose","resource","label","kind","resources","getKind","type","icon","activate","undefined","id","searchText","description","group","onActivate","createWorkbenchResourcePaletteEntries","query","listResources","map","filter","PaletteEntry","ThemePreference","ThemePreferenceOption","WorkbenchIcon","THEME_MODE_ID","WorkbenchThemePaletteEntry","themePreference","mode","getThemeIconName","preference","getThemePreferenceLabel","title","id","getThemePaletteEntryIndex","entries","Math","max","findIndex","entry","THEME_GROUP_LABELS","light","dark","const","byModeThenLabel","a","b","localeCompare","createWorkbenchThemePreferencePaletteEntries","input","chosenThemePreference","themePreferences","setThemePreference","onClose","sort","map","label","searchText","group","icon","isSelected","onActivate","Box","Palette","PaletteEntry","PaletteShortcut","useThemePreference","ReactNode","useEffect","useState","Command","getNavigationTargetKey","KeybindingSequence","MenuPath","RegisteredCommand","RegisteredMenuItem","WorkbenchCommandExecutionContext","WorkbenchCore","workbenchCommandPaletteMenuPath","runUserAction","WorkbenchIcon","useWorkbenchCompositionPanels","useWorkbenchStore","workbenchCommandPaletteBackground","hasCommandParameters","useWorkbenchCommandPaletteResourceEntries","CommandParamFieldRenderer","CommandParamsRequest","PaletteParamsDialog","COMMAND_MODE_ID","getPaletteInitialActiveIndex","getPaletteInputIcon","getPalettePlaceholder","getPaletteViewMode","getPaletteViewModes","isThemePaletteView","createWorkbenchPanelWidgetPaletteEntries","createWorkbenchResourcePaletteEntries","createWorkbenchThemePreferencePaletteEntries","getThemePaletteEntryIndex","WorkbenchThemePaletteEntry","WorkbenchResourcePaletteEntry","WorkbenchCommandPaletteProps","workbench","open","menuPath","initialQuery","renderParamField","onClose","WorkbenchCommandPaletteEntry","commandId","mode","WorkbenchCommandPaletteRecord","record","action","getCommandSearchText","command","label","id","description","category","filter","Boolean","join","createShortcutByAction","Map","keybindings","listKeybindings","map","binding","keybinding","getShortcut","undefined","commandExecutionContext","resource","getPrimaryResource","executePaletteCommand","input","args","context","commands","executeCommand","createEntry","shortcutByAction","onRequestParams","request","isCommandVisible","icon","group","searchText","shortcut","get","kind","sourceCommandId","onActivate","params","getRecordGroup","item","getRecordOrder","order","byCommandPaletteGroup","left","right","groupComparison","localeCompare","listCommandRecords","listCommands","layout","listMenuItems","matches","when","getCommand","createWorkbenchCommandPaletteEntries","sort","entry","WorkbenchCommandPalette","props","$","_c","t0","t1","chosenThemePreference","themePreferences","setThemePreference","previewThemePreference","view","commandPalette","store","_temp","_temp2","_temp3","menuStore","_temp4","liveQuery","setLiveQuery","t2","query","commandPaletteResourceEntries","compositionPanels","t3","closePalette","t4","exitPickerView","entries","isThemeView","t5","t6","requestParams","commandEntries","resourceEntries","themeEntries","panelWidgetEntries","panelsByRegion","themeInitialActiveIndex","t7","initialActiveIndex","activeViewMode","activeViewModes","t8","t9","t10","t11","t12","Symbol","for","position","inset","alignItems","justifyContent","h","minH","padding","w","background","t13","t14","t15","t16","t17","mode_0","themeEntry","themePreference","ctx","length","setQuery","setActiveIndex","t18","t19","t20","state","state_0","state_1","state_2","itemsByPath","commandExecutionContext","_c","_temp","_temp2","_temp3","_temp4","_Fragment","Box","BoxProps","ReactNode","useEffect","useRef","WorkbenchCore","WorkbenchFocusRegionId","useWorkbenchStore","WorkbenchFocusRegionProps","workbench","region","children","WorkbenchFocusRegion","props","$","_c","boxProps","activeRegion","focus","store","_temp","ref","t0","t1","element","current","contains","document","activeElement","preventScroll","t2","event","currentTarget","target","setActiveRegion","t3","state","_c","_temp","ContextKeyValue","MenuPath","RegisteredCommand","RegisteredMenuItem","ResourceRef","WorkbenchCore","matchesContextExpression","scopeWorkbenchResourceContextValues","byContributionPriority","WorkbenchMenuItem","id","commandId","label","description","icon","iconSrc","overflowLabel","group","args","disabled","separatorBefore","readOnly","WorkbenchMenuItemState","itemsByPath","Record","commands","contextValues","menuPathKey","path","join","WorkbenchMenuItemContext","resource","resolveContextValues","state","context","listWorkbenchMenuItemsFromState","menuPath","sort","left","right","leftOrder","order","rightOrder","filter","action","when","map","index","record","handler","isVisible","command","isEnabled","item","listWorkbenchMenuItems","workbench","layout","menuStore","getState","store","values","WorkbenchMenuItem","WorkbenchHeaderOverflowItem","separatorBefore","WorkbenchHeaderActionGroups","inlineItems","overflowItems","isKernelAction","item","group","isOverflowAction","withLeadingSeparator","items","enabled","length","first","rest","const","resolveOverflowItems","regularItems","filter","kernelItems","resolveWorkbenchHeaderActionGroups","resolveWorkbenchHeaderOverflowLabel","find","overflowLabel","withLeadingSeparator","Button","HStack","IconButton","Menu","Portal","ListRow","Tooltip","Fragment","getAnchorResource","MenuPath","ResourceRef","WorkbenchCommandExecutionContext","WorkbenchCore","runUserAction","hasCommandParameters","listWorkbenchMenuItemsFromState","WorkbenchMenuItem","WorkbenchIcon","useWorkbenchStore","resolveWorkbenchHeaderActionGroups","resolveWorkbenchHeaderOverflowLabel","WorkbenchHeaderActionsProps","workbench","menuPath","controlSize","commandExecutionContext","resource","undefined","WorkbenchInlineHeaderAction","props","$","_c","item","onSelect","t0","onClick","group","icon","t1","t2","t3","disabled","id","label","WorkbenchHeaderActions","commands","store","_temp","contextValues","context","_temp2","itemsByPath","layout","menuStore","_temp3","_temp4","T0","t4","t5","t6","Symbol","for","bb0","items","inlineItems","overflowItems","command","commandId","args","params","commandPalette","requestParams","record","executeCommand","length","map","item_0","item_1","separatorBefore","t7","state","state_0","values","state_1","state_2","_c","_temp","_temp2","_temp3","_temp4","Fragment","UseHotkeyDefinition","useHotkeys","WorkbenchHotkeyRegistration","useTanStackWorkbenchHotkeys","registrations","$","_c","t0","map","_temp","hotkeys","t1","Symbol","for","ignoreInputs","preventDefault","stopPropagation","registration","hotkey","callback","event","execute","options","enabled","_c","_temp","useEffect","useState","getKeybindingSteps","KeybindingSequence","WorkbenchCore","runUserAction","hasCommandParameters","useTanStackWorkbenchHotkeys","WorkbenchHotkeyRegistration","id","hotkey","enabled","ignoreInputs","execute","Promise","CreateWorkbenchHotkeyRegistrationsInput","workbench","disabled","commandIds","WorkbenchKeybindingDispatcherProps","keyAliases","Record","alt","cmd","command","ctrl","control","meta","mod","option","shift","normalizeWorkbenchKeybindingStep","keybinding","split","map","part","trimmed","trim","alias","toLowerCase","length","toUpperCase","slice","join","normalizeWorkbenchKeybinding","steps","createWorkbenchHotkeyRegistrations","input","allowedCommandIds","Set","undefined","keybindings","listActiveKeybindings","flatMap","index","action","kind","has","commandId","record","commands","getCommand","isCommandVisible","args","isCommandEnabled","params","resource","getPrimaryResource","commandPalette","requestParams","label","context","navigation","openTarget","WorkbenchKeybindingDispatcher","props","$","_c","t0","registrations","setRegistrations","t1","t2","refresh","subscriptions","store","subscribe","unsubscribe","_c","Box","HStack","Image","Text","PaletteShortcut","Tooltip","TreeListAction","TreeListActionMenuItem","ContextKeyValue","KeybindingSequence","MenuPath","RegisteredCommand","TreeAction","WorkbenchCommandExecutionContext","WorkbenchCoreContributionContext","matchesContextExpression","scopeWorkbenchResourceContextValues","reportUserActionError","hasCommandParameters","CommandParamsRequest","WorkbenchIcon","TreeActionParamsRequest","request","run","args","Promise","CreateTreeActionItemsInput","actions","workbench","context","onCommandError","error","onRequestParams","CreateTreeMenuItemsInput","menuPath","CreateTreeContextMenuItemsInput","commandContextValues","Record","resource","snapshot","isRegisteredCommandVisible","record","contextValues","command","when","handler","isVisible","executeTreeAction","input","action","commandId","commands","getCommand","undefined","resolvedArgs","executeCommand","id","runTreeAction","label","resolveTreeActionCommand","isTreeActionVisible","isTreeActionEnabled","disabled","isCommandEnabled","createMenuIcon","icon","iconSrc","createMenuEndContent","external","binding","disabledReason","readOnly","withLeadingSeparator","items","T","enabled","length","first","rest","separatorBefore","isKernelMenuAction","group","createTreeMenuItemGroups","shortcuts","Map","keybindings","listCommandKeybindings","map","k","keybinding","regularItems","kernelItems","index","layout","listMenuItems","entries","get","requestParams","params","nextArgs","item","sourceCommandId","description","endContent","onAction","catch","push","createTreeMenuItems","createTreeActionMenuItems","resourceMutation","submitLabel","createTreeContextMenuItems","actionItems","visibleRegularItems","createTreeActionItems","tooltip","Icon","ResourceContextAction","TreeListActionMenuItem","ResourceRef","WorkbenchCoreContributionContext","resourceContextMenuPath","workbenchBreadcrumbLocationMenuPath","createTreeContextMenuItems","useWorkbenchStore","toResourceContextAction","item","key","id","label","commandId","icon","endContent","isDisabled","disabled","separatorBefore","onClick","onAction","createWorkbenchResourceActions","workbench","resource","menuPath","type","context","onRequestParams","request","commandPalette","requestParams","map","createWorkbenchLocationActions","undefined","useWorkbenchResourceActionResolver","$","_c","commands","store","_temp","_temp2","layout","menuStore","_temp3","t0","state","state_0","values","state_1","itemsByPath","_c","_temp","_temp2","_temp3","ToastStatusChangeDetails","toaster","useEffect","useRef","RegisteredWorkbenchNotification","WorkbenchCore","WorkbenchNotificationAction","runUserAction","WorkbenchNotificationHostProps","workbench","executeNotificationAction","input","action","title","commands","executeCommand","commandId","args","WorkbenchNotificationHost","props","$","_c","t0","Symbol","for","Set","shownNotificationIds","t1","t2","showNotification","notification","actions","toastAction","label","onClick","undefined","toastOptions","id","type","level","description","message","closable","onStatusChange","details","status","notifications","dismiss","current","has","update","add","create","notification_0","listNotifications","subscription","subscribe","event","delete","dispose","clear","_c","WorkbenchCore","useWorkbenchStore","useWorkbenchLocationResource","workbench","pages","store","_temp","useWorkbenchActiveModeId","modes","_temp2","state","location","resource","activeModeId","_temp","_temp2","WorkbenchWidgetPlacement","retainViewPlacements","previous","current","registeredViews","ReadonlySet","retained","Map","filter","placement","viewId","has","map","widgetId","existing","find","entry","unchanged","Object","keys","length","entries","every","key","value","Reflect","get","set","next","values","index","useState","WorkbenchCore","WorkbenchWidgetPlacement","useWorkbenchStore","retainViewPlacements","useRetainedViewPlacements","workbench","current","$","_c","views","store","_temp","previous","setPrevious","t0","Set","Object","keys","placements","state","_c","_temp","Box","Center","ReactNode","RegisteredPlaceholderContribution","RegisteredWidgetContribution","RegisteredWorkbenchView","WorkbenchCore","WorkbenchPanelContribution","WorkbenchRegion","WorkbenchWidgetPlacement","getWorkbenchRenderers","toPanelContribution","toPanelInstance","WorkbenchIcon","useWorkbenchStore","WorkbenchWidgetHostProps","workbench","placement","widget","region","WorkbenchWidgetFallback","props","$","_c","label","t0","Symbol","for","t1","WorkbenchRenderedWidgetFrame","children","noopRefresh","undefined","toHostedPanel","input","view","id","contributionId","title","icon","rendererId","WorkbenchWidgetHost","layout","getWidget","viewId","views","getView","rendererFromStore","store","state","renderers","renderer","getRenderer","state_0","refreshKeys","t2","panel","instance","T0","t3","t4","t5","t6","t7","t8","t9","t10","render","refresh","t11","_c","Box","WorkbenchCore","WorkbenchRegion","useWorkbenchStore","useRetainedViewPlacements","WorkbenchWidgetHost","useModeChrome","workbench","region","$","_c","t0","state","mode","activeModeId","modes","undefined","chrome","store","ModeChromeView","props","viewId","widgetId","contributionId","closable","placements","t1","t2","t3","placement","map","_c","movePanelHost","host","HTMLElement","slot","parentNode","moveBefore","isConnected","appendChild","WorkbenchCore","WorkbenchRegion","resolvePanelCollapsible","workbench","regions","every","region","layout","getRegionCollapsible","WorkbenchPanelMenuSize","has","open","collapsible","minSize","PANEL_CONTENT_MIN_SIZE_PX","PANEL_MENU_RESIZE_HANDLE_SIZE_PX","PANEL_MENU_NARROW_PANEL_MAX_PX","getWorkbenchPanelMenuAttachment","panelWidth","menus","map","menu","attached","Set","filter","narrow","fits","sizes","reduce","total","candidate","add","useEffect","useState","getActiveWorkbenchLocationPanel","getActiveWorkbenchSubPanel","isWorkbenchModePanelAvailable","isWorkbenchPanelPlacementVisible","matchesWorkbenchModeEligibility","matchesWorkbenchPanelMenuOwner","WorkbenchCore","WorkbenchPanelMenuRegion","WorkbenchPanelMenuSide","WorkbenchPanelRegion","WorkbenchRegionSize","workbenchPanelMenuRegions","useWorkbenchActiveModeId","useWorkbenchLocationResource","useWorkbenchStore","resolvePanelCollapsible","getWorkbenchPanelMenuAttachment","PANEL_MENU_SIZE","defaultPx","minPx","maxPx","panelLabels","Record","main","secondary","side","resolveRegionSize","regionSize","getWorkbenchPanelMenuLabel","panel","WorkbenchPanelMenuView","region","label","title","icon","has","collapsed","collapsible","size","ReturnType","onOpen","onCollapsedChange","useWorkbenchPanelMenu","workbench","$","_c","locationResource","modeId","t0","modes","getMode","undefined","panelAvailable","layout","store","_temp","registeredWidgets","_temp2","currentRegionState","regions","regionState","t1","activeSubPanel","ignoreOwnerResourceKey","activeLocationPanel","widgets","filter","placement","contribution","contributionId","location","locationPanel","subPanel","find","placement_0","widgetId","activeWidgetId","activePlacement","widget","t2","panelStateKey","t3","state_1","state","openByMenuId","open","panelMenuState","t4","t5","t6","t7","length","Boolean","getPlaceholder","t8","t9","getRegionSize","t10","setOpen","t11","t12","useWorkbenchPanelMenus","width","useWorkbenchPanelWidth","views","attachment","map","_temp3","view_0","index","view","canAttach","useWorkbenchPanelMenusPresent","left","right","setWidth","element","document","querySelector","measure","clientWidth","observer","ResizeObserver","observe","disconnect","state_0","minSize","resolveRegionSize","_c","_temp","_temp2","_temp3","WorkbenchRegion","WorkbenchWidgetPlacement","toTabKey","regionId","placement","contributionId","suppressesSidenavTabStrip","region","_placements","resolveTabIconName","widget","icon","resourceKindIcon","resourceIcon","resource","role","resolveDisplayedActiveWidgetId","visiblePlacements","activeWidgetId","widgetId","hasActive","some","filterVisibleTabs","getTabVisibilityStore","useTabVisibilityStore","useEffect","getActiveWorkbenchLocationPanel","getAnchorResource","headerTrailingMenuPath","isWorkbenchPanelPlacementVisible","WorkbenchCore","WorkbenchPanelRegion","WorkbenchRegion","WorkbenchWidgetPlacement","workbenchPanelRegions","workbenchRegionTabLeadingMenuPath","resolveResourcePreview","listWorkbenchMenuItemsFromState","useWorkbenchPanelMenus","useWorkbenchCompositionPanels","useWorkbenchActiveModeId","useWorkbenchLocationResource","useWorkbenchStore","suppressesSidenavTabStrip","toTabKey","isWorkbenchPanelRegion","region","some","panelRegion","shouldShowRegionTabs","placements","options","alwaysShowTabs","length","closable","WorkbenchPanelHeaderVisibility","hasTabs","hasPanelMenus","hasHeaderActions","shouldShowPanelHeader","input","isPlacementEligibleForRegion","workbench","placement","resource","getPrimaryResource","modeId","modes","getActiveModeId","resources","preview","resolve","widget","layout","getWidget","contributionId","ignoreResourceLocation","location","getLayout","useWorkbenchRegionTabsState","visibilityStorageKey","t0","$","_c","hasPanelMenuOpeners","undefined","changes","store","_temp","commands","_temp2","contextValues","context","_temp3","itemsByPath","menuStore","_temp4","layoutState","_temp5","compositionPanels","t1","getPersistenceScope","storageKey","tabStore","_temp6","t2","t3","subscription","onDidResetLayout","getState","reset","dispose","regionState","regions","subPanelPlacements","t4","widgets","tabOverrides","t5","role","Boolean","filter","t6","placement_0","visibleSubPanels","Set","map","_temp7","visibleSubPanelIds","eligibleSubPanels","leadingItems","visiblePlacements","placement_2","has","widgetId","t7","t8","addable","t9","placement_3","hasMovedPlacement","getRegionSettings","showTabs","hasActions","hasTrailingActions","toggleTab","useWorkbenchPanelRegionTabsState","left","right","_temp8","tabs","useWorkbenchPanelHeaderVisible","useWorkbenchRegionTabsVisible","state","state_0","state_1","values","state_2","state_3","state_4","placement_1","menu","collapsed","_c","_temp","_temp2","_temp3","_temp4","_temp5","_temp6","_temp7","_temp8","Box","createContext","ReactNode","useContext","useLayoutEffect","useState","createPortal","WorkbenchCore","WorkbenchPanelRegion","WorkbenchWidgetPlacement","workbenchPanelRegions","resolveResourcePreview","useWorkbenchStore","movePanelHost","isPlacementEligibleForRegion","useRetainedViewPlacements","WorkbenchWidgetHost","PanelViewSlots","register","region","node","HTMLDivElement","PanelViewContext","usePanelViewSlot","$","_c","registry","setNode","t0","t1","t2","Boolean","t3","enabled","ref","PanelViewPortal","props","workbench","placement","slot","active","host","_temp","remove","t4","widgetId","layout","getLayout","activeWidgetId","activatePanel","activate","t5","t6","t7","focus","event","currentTarget","contains","target","setActiveRegion","t8","t9","t10","WorkbenchPanelViewHosts","children","changes","resources","preview","store","_temp2","_temp3","pages","_temp4","modes","_temp5","Symbol","for","slots","setSlots","previous","undefined","flatMap","region_0","state_3","regions","eligible","state","widgets","filter","p","resource","selected","find","p_0","p_1","mountStrategy","current","retained","region_1","id","some","p_2","peers","p_3","selected_0","p_4","map","document","createElement","style","display","state_0","state_1","location","state_2","activeModeId","_c","_temp","_temp2","_temp3","_temp4","_temp5","current","Box","Flex","ScrollArea","RegisteredPlaceholderContribution","WorkbenchCore","WorkbenchPanelMenuRegion","WorkbenchRegion","WorkbenchRegionId","WorkbenchWidgetPlacement","getActiveWorkbenchLocationPanel","getActiveWorkbenchSubPanel","getWorkbenchPanelForMenuRegion","isWorkbenchPanelPlacementVisible","matchesWorkbenchModeEligibility","matchesWorkbenchPanelMenuOwner","WorkbenchPanelRegion","workbenchPanelMenuRegions","workbenchPanelRegions","useWorkbenchActiveModeId","useWorkbenchLocationResource","useWorkbenchStore","getWorkbenchRegionBackground","ModeChromeView","useModeChrome","usePanelViewSlot","useRetainedViewPlacements","WorkbenchWidgetHost","WorkbenchRegionProps","workbench","region","title","pointerEvents","transparent","horizontalScrollRegions","Set","panelMenuRegionIds","Object","values","flatMap","regions","sidePanelRegionIds","verticalContentProps","display","flexDirection","minH","position","const","horizontalContentProps","alignItems","h","getActivePlacement","widgets","activeWidgetId","find","placement","widgetId","resolveRenderedRegionPlacements","activePlacement","filter","mountStrategy","resolveRegionPlacementRenderState","active","additive","visibility","createPlaceholderPlacement","placeholder","id","contributionId","closable","WorkbenchRegionPlacementProps","globalActiveWidgetId","visible","order","WorkbenchRegionPlacement","props","$","_c","t0","renderState","overlaysActivePlacement","flex","t1","layout","activatePanel","activatePlacement","t2","t3","t4","undefined","t5","t6","t7","t8","t9","panelRegion","includes","panelSlot","sharedViews","enabled","chrome","locationResource","modeId","store","state","currentRegionState","registeredWidgets","activeSubPanel","has","ignoreOwnerResourceKey","activeLocationPanel","regionState","contribution","location","locationPanel","subPanel","getPlaceholder","renderedPlacements","retainedPlacements","visibleIds","map","entry","scrollsHorizontally","target","justifyContent","ref","renderedPlacement","findIndex","_c","IconButton","Menu","Portal","ListRow","PANEL_HEADER_CONTROL_SIZE","Tooltip","useRef","ResourceRef","WorkbenchCompositionAddablePanel","WorkbenchCore","WorkbenchPanelRegion","WorkbenchIcon","openPanelWidget","WorkbenchPanelAddMenuProps","workbench","region","resource","panels","WorkbenchPanelAddMenu","props","$","_c","triggerRef","length","t0","panel","widget","contribution","pinned","open","openPanel","t1","undefined","t2","t3","Symbol","for","t4","label","trigger","t5","placement","getAnchorElement","current","t6","t7","t8","panel_0","id","title","icon","map","t9","_c","Box","Menu","Portal","ListRow","useRef","WorkbenchCore","WorkbenchTabMenuGroup","WorkbenchWidgetPlacement","WorkbenchCommandParamsRequest","findPlacementByWidgetId","WorkbenchIcon","runPlacementAction","getPanelLabel","SharedAction","props","$","_c","value","label","icon","onActivate","t0","t1","t2","RegionTabMenuProps","anchor","x","y","width","height","open","setOpen","groups","placement","workbench","RegionTabMenu","pendingRequest","widgetId","layout","getLayout","regionId","currentRegion","region","destinations","getPanelDestinations","filter","placementIdentity","tabRetention","pinned","pinPlacement","updatePanel","strategy","kind","pin","t3","closePlacement","closePanel","close","t4","t5","details","t6","request","current","commandPalette","requestParams","t7","t8","Symbol","for","mainAxis","t9","getAnchorRect","offset","T0","t10","t11","t12","t13","t14","t15","_temp","map","group_0","index","group","id","rows","row","disabled","undefined","iconColor","selected","action","request_0","t16","some","_temp2","t17","t18","t19","t20","region_0","movePanel","t21","t22","closable","t23","resetLayout","t24","ItemGroup","t25","Content","t26","Positioner","t27","t28","Root","length","group_1","_c","_temp","_temp2","Box","DndContext","DragOverEvent","DragOverlay","MouseSensor","pointerWithin","TouchSensor","useDroppable","useSensor","useSensors","createContext","ReactNode","useContext","useId","useState","WorkbenchCore","WorkbenchPanelRegion","WorkbenchTabPosition","findPlacementByWidgetId","TabDrop","region","position","widgetId","edge","TabDragContext","activeId","drop","destinations","useTabDrag","WorkbenchTabDragProvider","props","$","_c","workbench","children","setActiveId","setDrop","t0","Symbol","for","activationConstraint","distance","t1","sensors","t2","undefined","finish","t3","event","data","over","current","id","active","getPanelDestinations","String","includes","rect","translated","before","left","width","beforeWidgetId","afterWidgetId","resolveDrop","t4","layout","getLayout","placement","t5","t6","t7","event_0","t8","t9","event_1","event_2","t10","event_3","target","movePanel","t11","title","resource","label","t12","t13","_temp","t14","WorkbenchTabDropTarget","allowed","Boolean","disabled","setNodeRef","highlighted","args","pointer","pointerCoordinates","panel","document","elementFromPoint","x","y","closest","getAttribute","filter","collision","droppableContainer","sort","a","b","area","rect_0","droppableRects","get","height","Infinity","_c","_temp","useDraggable","useDroppable","KeyboardEvent","MouseEvent","PointerEvent","useEffect","useRef","useState","WorkbenchCore","WorkbenchPanelRegion","WorkbenchWidgetPlacement","usePlacementTab","useTabDrag","WorkbenchRegionTabProps","workbench","placement","activeWidgetId","disabled","nextWidgetId","previousWidgetId","sortable","region","useRegionTab","props","$","_c","t0","t1","undefined","snapshot","open","setOpen","t2","Symbol","for","x","y","width","height","anchor","setAnchor","hold","t3","start","suppressClick","t4","t5","widgetId","id","drag","t6","t7","t8","data","target","context","t9","clearTimeout","current","clearHold","t10","t11","t12","element","rect","getBoundingClientRect","show","t13","event","preventDefault","stopPropagation","currentTarget","onContextMenu","t14","event_0","key","shiftKey","altKey","layout","reorderPanel","beforeWidgetId","afterWidgetId","onKeyDown","t15","event_1","pointerType","element_0","clientX","clientY","setTimeout","onPointerDown","t16","event_2","Math","hypot","onPointerMove","t17","event_3","onClick","t18","drop","t19","onPointerUp","onPointerCancel","_c","Box","CloseButton","Tabs","Text","useTabsContext","DropIndicator","Tooltip","WorkbenchIcon","RegionTabMenu","resolveTabIconName","useRegionTab","WorkbenchRegionTabProps","TabIcon","props","$","_c","indicator","icon","t0","color","t1","label","WorkbenchRegionTab","workbench","placement","activeWidgetId","disabled","sortable","undefined","tabs","behavior","snapshot","drag","target","drop","resource","title","contributionId","labelId","widgetId","t2","layout","resources","widget","getWidget","getKind","type","active","t3","node","setNodeRef","t4","t5","closable","t6","t7","Symbol","for","t8","getTriggerProps","value","t9","t10","tabRetention","t11","isDragging","t12","t13","t14","placementIdentity","opacity","pointerEvents","_temp","_temp2","_temp3","event_2","event","stopPropagation","closePlacement","closePanel","t15","onClick","onContextMenu","onKeyDown","onPointerCancel","onPointerDown","onPointerMove","onPointerUp","open","listeners","id","t16","t17","edge","t18","t19","menu","t20","anchor","setOpen","t21","event_0","event_1","_c","_temp","_temp2","_temp3","_Fragment","Tabs","WorkbenchCore","WorkbenchPanelRegion","WorkbenchWidgetPlacement","WorkbenchRegionTab","RegionTabListProps","activeWidgetId","disabled","panelRegion","placements","workbench","RegionTabList","props","$","_c","t0","map","placement","index","widgetId","Boolean","getPanelDestinations","length","t1","_c","HStack","IconButton","Menu","Portal","Tabs","buildTabVisibilityMenuActions","ListRow","PANEL_HEADER_CONTROL_SIZE","PANEL_HEADER_TAB_SIZE","ScrollArea","Tooltip","MouseEvent","ReactMouseEvent","useEffect","useState","WorkbenchCore","WorkbenchPanelRegion","WorkbenchRegion","WorkbenchRegionId","WorkbenchWidgetPlacement","workbenchPanelRegions","runUserAction","hasCommandParameters","WorkbenchMenuItem","WorkbenchIcon","WorkbenchPanelAddMenu","RegionTabList","resolveDisplayedActiveWidgetId","resolveTabIconName","toTabKey","useWorkbenchPanelRegionTabsState","useWorkbenchRegionTabsState","shouldShowPanelHeader","shouldShowRegionTabs","useWorkbenchPanelHeaderVisible","useWorkbenchRegionTabsVisible","WorkbenchRegionTabsProps","workbench","region","visibilityStorageKey","resolvePlacementIcon","placement","iconName","layout","getWidget","contributionId","resource","resources","getKind","type","icon","undefined","WorkbenchRegionTabsContentProps","state","ReturnType","WorkbenchRegionTabsContent","props","$","_c","commands","regionState","tabStore","subPanelPlacements","visiblePlacements","leadingItems","panelRegion","eligibleSubPanels","showTabs","hasActions","tabOverrides","t0","getKey","viewport","setViewport","menuOpen","setMenuOpen","t1","Symbol","for","x","y","width","height","anchor","setAnchor","t2","t3","key","hiddenByDefault","toggleTab","reset","t4","t5","t6","t7","placement_0","menuActions","onToggleTab","onResetAll","visibleIcon","hiddenIcon","resetIcon","hasVisibilityMenu","length","t8","event","preventDefault","target","Element","closest","rect","currentTarget","getBoundingClientRect","openVisibilityMenu","t10","t9","onWheel","event_0","deltaY","scrollWidth","clientWidth","scrollLeft","addEventListener","passive","removeEventListener","t11","activeWidgetId","t12","t13","querySelector","scrollIntoView","block","inline","t14","item","command","commandId","params","commandPalette","requestParams","record","label","args","executeCommand","onSelectLeadingItem","t15","t16","item_0","id","disabled","_temp","event_2","stopPropagation","map","leadingActions","t17","T0","t18","t19","t20","t21","details","placement_1","find","candidate","widgetId","value","role","setRegionActiveWidget","activatePanel","t22","t23","t24","t26","t27","t28","t29","t30","t31","t32","t33","t34","h","w","minW","t35","t36","details_0","open","getAnchorRect","offset","mainAxis","_temp2","t37","Root","t25","t38","t39","WorkbenchPanelRegionTabsProps","WorkbenchPanelRegionTabs","WorkbenchOtherRegionTabs","WorkbenchRegionTabs","panel","event_1","action","endContent","isDisabled","onClick","_c","_temp","_temp2","Button","AlertMessage","RendererReadNoticeProps","error","retry","RendererReadNotice","props","$","_c","t0","t1","_c","resolvePageParams","WorkbenchCore","WorkbenchPanelInstance","useWorkbenchStore","usePageParams","workbench","placement","$","_c","state_0","pages","store","_temp","owner","placementIdentity","kind","pageId","state","activePageId","t0","params","t1","location","t2","_c","_temp","createRendererMutations","baseline","T","revision","journal","Array","update","value","saving","pending","some","operation","undefined","reduce","accept","next","readRevision","length","begin","push","finish","success","splice","indexOf","createRendererMutationBinding","key","owner","bind","ownerKey","queryKey","JSON","stringify","createContext","ReactNode","useContext","WorkbenchConnectionContext","WorkbenchConnectionProviderProps","connected","children","WorkbenchConnectionProvider","props","$","_c","t0","useWorkbenchConnection","_c","PstdioConnectionError","useEffect","useRef","useState","Disposable","RendererReadBinding","WorkbenchCore","createRendererMutationBinding","useWorkbenchConnection","RendererReadOptions","workbench","ownerKey","queryKey","refreshKey","load","signal","AbortSignal","publish","value","T","Promise","subscribe","listener","ReadState","loading","error","Error","useRendererRead","options","connected","state","setState","retryRef","undefined","refreshRef","lastRefreshKey","callbacks","mutationBinding","mutations","current","bind","saveQueue","resolve","binding","views","reads","owner","handlers","onProgress","previous","onValue","onError","connectionLost","readError","String","refresh","reason","pending","revision","request","JSON","stringify","accept","subscription","dispose","message","retry","mutate","update","save","operation","begin","then","catch","finish","finally","WorkbenchCore","reportUserActionError","CommandParamFieldRenderer","CommandParamsDialog","TreeActionParamsRequest","TreeParamsDialogProps","request","renderParamField","workbench","onClose","TreeParamsDialog","props","$","_c","t0","t1","context","commands","id","args","signal","executeCommand","t2","input","getCommand","commandId","prepareCommandArgs","onArgsChange","Promise","resolve","t3","label","error","t4","t5","args_0","run","_c","Button","HStack","Text","ReactNode","useState","WorkbenchCommandExecutionContext","WorkbenchCore","ViewToolbarAction","CommandParamFieldRenderer","useWorkbenchStore","createTreeContextMenuItems","TreeActionParamsRequest","TreeParamsDialog","ViewToolbarActionsProps","workbench","actions","context","renderParamField","ViewToolbarActions","props","$","_c","request","setRequest","error","setError","store","_temp","commands","_temp2","T0","t0","t1","t2","Symbol","for","error_0","Error","message","String","items","onRequestParams","onCommandError","t3","item","id","find","action","presentation","disabled","undefined","onAction","icon","label","map","t4","t5","t6","state","values","state_0","_c","_temp","_temp2","_Fragment","resourceKey","ResourceContextAction","DataTableSelectionAction","RowData","ReactNode","DataTableRendererColumn","DataTableRendererContribution","DataTableRendererQueryResult","DataTableRendererRow","DataTableRendererSelectionAction","WorkbenchPanelInstance","resolveDataTableRendererQueryKey","contribution","Pick","resource","modeId","contextValues","Record","JSON","stringify","id","contextKeys","map","key","resolveDataTableRendererColumns","result","contributionColumns","columns","firstRow","rows","Object","keys","values","buildDataTableRendererData","rowByData","WeakMap","data","row","fromEntries","column","set","resolveDataTableRendererSelectionActions","actions","action","label","icon","destructive","onSelect","flatMap","rendererRow","get","run","resolveDataTableRendererResourceActions","resolveResourceActions","NonNullable","filter","isDisabled","_context","onClick","resolveDataTableRendererStorageKey","placement","identity","scope","instanceId","length","Stack","EmptyState","DataTable","DataTableColumnRenderer","DataTableColumnStat","DataTableRowAction","DataTableSkeleton","RowData","useDataTableViewStore","ReactNode","useSyncExternalStore","DataTableRendererQueryResult","RegisteredDataTableRendererContribution","WorkbenchCore","WorkbenchPanelInstance","getWorkbenchRenderers","rendererReadKey","runUserAction","CommandParamFieldRenderer","useWorkbenchResourceActionResolver","useWorkbenchStore","RendererReadNotice","usePageParams","useRendererRead","ViewToolbarActions","buildDataTableRendererData","resolveDataTableRendererColumns","resolveDataTableRendererQueryKey","resolveDataTableRendererResourceActions","resolveDataTableRendererSelectionActions","resolveDataTableRendererStorageKey","WorkbenchDataTableViewProps","workbench","renderParamField","contribution","placement","initialResult","rows","noopSubscribe","WorkbenchDataTableView","props","$","_c","pageParams","resolveResourceActions","contextValues","context","store","_temp","t0","storageKey","provider","viewsProvider","viewsSource","subscribe","getSnapshot","_temp2","_temp3","filter","_temp4","sorts","_temp5","settings","_temp6","t1","t2","resource","modes","getActiveModeId","t3","JSON","stringify","t4","signal","executeQuery","modeId","t5","refresh","subscription","events","onDidRefreshDataTableRenderer","event","dataTableRendererId","id","dispose","t6","ownerKey","queryKey","refreshKey","load","read","result","value","loading","T0","T1","model","openRow","renderers","rowActions","selectionActions","stats","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t7","t8","t9","columns","defaultActiveViewId","defaultFilter","defaultSettings","defaultSorts","defaultViews","emptyDescription","emptyTitle","onRowActivate","resourceKind","toolbarActions","error","retry","Symbol","for","bb0","labels","Object","fromEntries","_temp7","map","_temp8","descriptions","_temp9","_temp0","icons","_temp1","_temp10","_temp11","_temp12","_temp13","_temp14","action","label","icon","destructive","onSelect","data","row","rowByData","get","run","t34","action_0","data_0","row_0","t35","t36","column_9","column","hidden","hiddenColumns","includes","_temp15","skeletonColumns","length","undefined","t37","resources","getKind","data_1","flatMap","_temp16","_temp17","_temp18","_temp19","_temp20","_temp21","_temp22","data_2","data_3","row_1","Boolean","initialPageSize","pageSizeOptions","selectionMode","t38","state","values","state_0","state_1","state_2","column_0","column_1","description","column_2","column_3","column_4","column_5","stat","column_6","column_7","renderer","column_8","column_10","column_11","type","column_12","filterable","column_13","column_14","groupable","column_15","column_16","column_17","noopSubscribe","_c","_temp","_temp2","_temp3","_temp4","_temp5","_temp6","_temp7","_temp8","_temp9","_temp0","_temp1","_temp10","_temp11","_temp12","_temp13","_temp14","_temp15","_temp16","_temp17","_temp18","_temp19","_temp20","_temp21","_temp22","ParamEditorProps","PreferencePropertySchema","PreferenceValue","Param","NonNullable","ParamValue","Parameters","PreferenceParamEntry","name","schema","label","value","BOOLEAN_OPTIONS","id","humanize","segment","split","at","spaced","replace","charAt","toUpperCase","slice","toOptions","values","map","String","toParam","entry","description","current","default","base","type","defaultValue","Number","Boolean","options","enum","singleLine","Array","isArray","multiSelect","undefined","preferenceSchemaToParams","entries","filter","param","paramValueToPreference","Button","HStack","Stack","ParamEditor","ParamEditorProps","useState","PreferenceRegistry","PreferenceScope","PreferenceParamEntry","paramValueToPreference","preferenceSchemaToParams","ParamValue","Parameters","NonNullable","WorkbenchPreferencesFormProps","preferences","names","name","label","resolveScopeId","scope","mode","toName","entry","WorkbenchPreferencesForm","props","$","_c","t0","undefined","t1","Symbol","for","staged","setStaged","formKey","setFormKey","t2","scopeId","scopeRef","entries","t3","candidate","schema","getSchema","push","value","getValue","params","t4","Map","map","_temp","schemaByName","t5","name_0","schema_0","get","setValue","persist","t6","id","value_0","current","handleChange","t7","name_1","value_1","Object","_temp2","save","t8","_temp3","discard","t9","keys","hasStaged","length","t10","t11","t12","key","key_0","_c","_temp","_temp2","_temp3","Badge","Box","PageLocation","PageRef","resourceKey","Tooltip","TreeListNode","TreeListSection","DiffBubble","ReactNode","getWorkbenchSelectionResourceKeys","NavigationTarget","ResourceRef","resourceContextMenuPath","TreeNode","TreeViewSection","WorkbenchCore","WorkbenchIcon","createTreeActionItems","createTreeContextMenuItems","TreeActionParamsRequest","TreeNodeRenderContext","workbench","onCommandError","error","onRequestParams","request","resolveTreeListActiveNodeId","activeNodeId","selectedNodeId","ResolveTreeListSelectionInput","sections","childrenByNodeId","Record","activeLocation","activeResource","activeNodeIds","ids","uniqueIds","Set","length","undefined","targetPanelResource","target","targets","kind","reverse","find","candidate","resource","resolveTreeNodeResourceKey","node","listTreeNodes","nodes","flatMap","children","id","listSectionNodes","section","resolveActiveResourceNodeIds","resourceKeys","matches","filter","map","findSectionNode","nodeId","pageRefsEqual","left","right","extensionId","targetMatchesPage","activePage","some","page","resolveActivePageNodeIds","resolveTreeListSelection","input","activeResourceKeys","declaredSelection","selected","nodeResourceKey","includes","selectedNode","selectedResourceKey","activeResourceNodeId","activePageNodeId","canVirtualizeTreeNode","inlineInput","isContainer","canVirtualizeTreeSections","every","findNode","child","findNodeInSections","wrapTreeNodeIcon","icon","iconTooltip","resolveTreeNodeIcon","iconElement","resolveTreeNodeNavigationIntent","payload","resolveTreeNodeResource","resolveTreeNodeEndContent","endContent","badge","color","label","additions","metadata","diffAdditions","deletions","diffDeletions","type","toTreeListSectionEmptyNode","emptyState","title","description","disabled","rowVariant","toTreeListNode","context","navigationIntent","commandContext","contextMenuItems","actions","contextMenuActions","menuPath","contextMenuPath","menuItems","treeNode","moveScope","iconColor","tooltip","showContextMenuTrigger","canHide","canReorder","canDrag","canDrop","hiddenByDefault","menuPlacement","collapsible","isNavigable","Boolean","toTreeListSection","emptyNode","menuLabel","listTreeNodes","TreeListSection","TreeViewSection","pinnedOnlyNodeIds","sections","Set","flatMap","section","nodes","filter","node","pinnedOnly","map","id","withoutPinnedOnlyRows","ids","ReadonlySet","size","has","length","Skeleton","Stack","EmptyState","ResourceContextAction","TreeList","TreeListMovePolicy","TreeListSection","RefObject","canVirtualizeTreeSections","TREE_SKELETON_WIDTHS","TreeViewSkeleton","$","_c","t0","Symbol","for","map","_temp","TreeViewBodyProps","error","loading","moduleLoading","sections","backgroundContextActions","draggable","customizationAvailable","activeNodeId","expandedNodeIds","expandedSectionIds","scrollRef","HTMLDivElement","onToggleSection","sectionId","onToggleNode","nodeId","onReorderSections","nextSectionIds","onReorderNodes","nextNodeIds","canMove","onMoveNode","sourceNodeId","targetNodeId","position","onNavigate","event","Parameters","NonNullable","TreeViewBody","props","length","t1","width","index","_c","_temp","getWorkbenchRenderers","NavigationTarget","WorkbenchCore","shouldSelectTreeNodeForNavigationTarget","target","items","kind","targets","some","item","createToggleTreeSection","workbench","treeViewId","expandedIds","sectionId","setSectionExpanded","includes","Input","InputGroup","Header","WorkbenchIcon","TreeViewSearchProps","visible","placeholder","value","onChange","TreeViewSearch","props","$","_c","t0","undefined","t1","Symbol","for","t2","event","target","t3","_c","TreeNode","TreeViewSection","ResourcePreviewChanges","resolveResourcePreview","previewTreeResources","sections","childrenByNodeId","Record","changes","previewNodes","nodes","flatMap","node","resource","undefined","children","id","label","map","section","TreeNode","TreeQueryContext","TreeRendererRegistry","TreeViewSection","settleReadBatch","isUnregisteredTreeError","trees","treeId","error","Error","message","getTreeRenderer","LoadedTreeData","header","body","footer","listTreeNodes","data","flatMap","section","nodes","loadExpandedTreeChildren","expandedNodeIds","ctx","expanded","Set","visited","childrenByNodeId","Record","queue","length","signal","throwIfAborted","batch","node","shift","has","id","add","push","children","map","AbortSignal","getChildren","flat","expandDefaultTreeSections","tree","sectionId","defaultExpandedSectionIds","setSectionExpanded","loadTreeData","onProgress","Promise","available","loadSlot","slot","context","sections","aborted","loaders","getHeader","getBody","getFooter","RegisteredTreeRendererContribution","ResourceRef","TreeNode","TreeViewSection","WorkbenchCore","getWorkbenchRenderers","getNavigationTreeNodeSource","reportUserActionError","findNodeInSections","MoveTreeNodeContext","workbench","renderer","resource","viewId","sections","childrenByNodeId","Record","onError","error","canMoveTreeNode","context","Pick","sourceId","targetId","source","target","undefined","canDrag","canDrop","sourceOwner","targetOwner","contribution","registryToken","createMoveTreeNode","moveNode","sourceNodeId","targetNodeId","position","trees","state","getTreeState","id","refresh","setSelectedNode","nodeId","TreeNode","TreeViewSection","TreeMoveIntent","sourceId","targetId","position","previewTreeMove","sections","children","Record","move","childrenOf","node","id","find","nodes","child","roots","flatMap","section","source","target","canDrag","canDrop","collapsible","materialize","descendants","map","moving","update","next","useEffect","useRef","useState","TreeNode","TreeViewSection","previewTreeMove","TreeMoveIntent","PendingMove","token","intent","savedAfter","useTreeMovement","input","scope","body","childrenByNodeId","Record","persist","sourceId","targetId","position","Promise","canMove","refresh","pending","setPending","moves","latestBody","current","queue","resolve","filter","move","length","preview","reduce","sections","moveNode","then","Symbol","saved","map","undefined","resourceKey","useEffect","useState","useSyncExternalStore","WorkbenchPanelInstance","getWorkbenchRenderers","ResourceRef","TreeNode","WorkbenchCore","useWorkbenchStore","usePageParams","useRendererRead","previewTreeResources","expandDefaultTreeSections","LoadedTreeData","loadExpandedTreeChildren","loadTreeData","canMoveTreeNode","createMoveTreeNode","useTreeMovement","useTreeData","workbench","treeViewId","resource","viewId","filter","t0","onMoveError","placement","$","_c","ownerKey","undefined","JSON","stringify","pageParams","trees","changes","resources","preview","store","_temp","t1","state_0","state","refreshKeysByTreeId","treeStore","mode","modes","_temp2","location","pages","_temp3","project","_temp4","activePage","_temp5","t2","navigationTrees","resolveOwner","getPageOwner","t3","listener","subscription","onDidChange","dispose","pageOwner","queryKey","refreshKey","getTreeRenderer","getReadKey","childrenKey","t4","t5","expandedChildren","setExpandedChildren","byNodeId","read","load","signal","publish","ctx","data","available","children","throwIfAborted","getTreeState","expandedNodeIds","header","body","footer","subscribe","refresh","onDidRefresh","event","treeId","loadChildren","node","getChildren","then","children_0","current","id","t6","subscription_0","subscribeRefresh","resource_0","contains","nodes","some","node_0","value","section","retry","t7","savedBody","savedChildren","renderer","movement","scope","childrenByNodeId","canMove","sourceId","targetId","sections","persist","onError","t8","t9","Symbol","for","t10","t11","t12","error","t13","loading","t14","state_1","activeModeId","state_2","state_3","projectId","state_4","activePageId","_c","_temp","_temp2","_temp3","_temp4","_temp5","getAnchorResource","WorkbenchLayout","WorkbenchPageContribution","resolvePageActivePlacement","resolveTreeActiveResource","layout","page","overlay","regions","overlayResource","widgets","find","entry","widgetId","activeWidgetId","resource","active","WorkbenchCore","useWorkbenchStore","resolveTreeActiveResource","useTreeNavigationState","workbench","$","_c","projectId","pages","store","_temp","activeLocation","_temp2","activePage","_temp3","t0","state_2","state","layout","activeResource","t1","state_0","location","state_1","activePageId","undefined","_c","_temp","_temp2","_temp3","TreeNode","TreeViewSection","treeSelectionAncestors","sections","childrenByNodeId","Record","selectedIds","selected","Set","parents","expandedSections","visit","nodes","path","sectionId","node","has","id","add","children","section","size","undefined","useEffect","useRef","getWorkbenchRenderers","WorkbenchCore","resolveTreeListSelection","treeSelectionAncestors","useTreeSelection","workbench","treeViewId","input","$","_c","sections","childrenByNodeId","ids","selectedNodeIds","t0","JSON","stringify","key","revealed","t1","t2","length","current","ancestors","trees","id","nodes","setNodeExpanded","id_0","setSectionExpanded","_c","resolveVisibility","TreeListSection","VisibilityOverride","keepSectionsEmptiedByMoves","source","ordered","visible","sectionOverrides","Record","pinnedOnlyNodeIds","ReadonlySet","Set","visibleById","Map","map","section","id","hadRows","filter","nodes","some","node","has","flatMap","shown","get","emptiedByMoves","length","hiddenByDefault","TreeListGroup","TreeListSection","activeTreeGroupLayout","sections","groups","nodeOrderBySection","Record","scopes","Set","map","section","moveScope","activeGroups","filter","group","undefined","has","inactiveGroupIds","includes","id","activeNodeOrder","Object","fromEntries","entries","sectionId","ResourceContextAction","TreeListActionMenuItem","TreeListGroup","TreeListSection","useTreeListOrderStore","useState","WorkbenchIcon","activeTreeGroupLayout","GroupDraft","storageKey","group","isNew","useTreeViewGroups","sections","nodeOrderBySection","Record","enabled","savedGroups","state","groups","addGroup","renameGroup","removeGroup","draft","setDraft","currentDraft","activeNodeOrder","push","startGroup","moveScope","id","crypto","randomUUID","label","newGroupAction","key","icon","closeOnSelect","onClick","withGroupControls","orderedSections","map","section","find","menuItems","onAction","editing","canReorder","contextMenuItems","actions","inlineInput","ariaLabel","placeholder","defaultValue","onCommit","onCancel","undefined","applyTreeListOrder","buildTreeVisibilityMenuActions","filterVisibleSections","ResourceContextAction","resolveVisibility","TreeListActionMenuItem","TreeListNode","TreeListSection","useTreeListOrderStore","useTreeListVisibilityStore","VisibilityOverride","ReactNode","keepSectionsEmptiedByMoves","withoutPinnedOnlyRows","useTreeViewGroups","TreeViewRegions","headerSections","sections","footerSections","TreeViewSlot","TreeViewCustomization","visibleHeaderSections","visibleSections","visibleFooterSections","backgroundContextActions","customizationRevision","onReorderSections","slot","nextSectionIds","onMoveSection","sourceSectionId","destinationSectionId","onReorderNodes","sectionId","nextNodeIds","VisibilityToggleIcons","visibleIcon","hiddenIcon","resetIcon","NodeVisibilityActions","onToggleNode","id","hiddenByDefault","TreeViewCustomizationOptions","suppressNodeContextMenus","pinnedOnlyNodeIds","ReadonlySet","allowGroups","toStringLabel","label","fallback","isCustomizableNode","node","canHide","visibilityContextIcon","effective","icons","buildNodeVisibilityContextMenuItem","nodeOverrides","Record","actions","undefined","existingItems","contextMenuItems","icon","length","separatorBefore","onAction","addRegionNodeVisibilityContextMenuItems","nodes","enabled","changed","next","map","item","addSectionNodeVisibilityContextMenuItems","section","useTreeViewCustomization","storageKey","regions","t0","$","_c","options","sectionOverrides","_temp","_temp2","toggleSection","_temp3","toggleNode","_temp4","resetVisibility","_temp5","sectionOrder","_temp6","nodeOrderBySection","_temp7","sectionSlotById","_temp8","setSectionOrder","_temp9","setNodeOrder","_temp0","setSectionSlot","_temp1","resetOrder","_temp10","t1","sourceSections","groups","activeNodeOrder","withGroupControls","newGroupAction","t2","visibilityActions","onToggleSection","onResetAll","t3","Map","_temp11","_temp12","_temp13","defaultSlotBySectionId","orderedSectionsBySlot","header","content","footer","orderedAllSections","section_2","get","push","orderedHeaderSections","orderedSections","Set","orderedFooterSections","includeNodeContextMenus","contentSections","visibleIn","visibilityMenuItems","key","items","_temp14","JSON","stringify","_temp16","main","_temp18","_temp20","t4","slot_0","idsBySlot","_temp21","_temp22","_temp23","t5","nextSectionIds_0","destinationSlot","t6","state","state_0","state_1","state_2","state_3","reset","state_4","state_5","state_6","state_7","state_8","state_9","state_10","const","section_0","section_1","closeOnSelect","_temp15","section_3","_temp17","node_0","section_4","_temp19","node_1","section_5","section_6","section_7","section_8","_c","_temp","_temp2","_temp3","_temp4","_temp5","Box","Flex","Text","ResourceContextAction","ScrollArea","TreeList","TreeListDragProvider","useEffect","useRef","useState","NavigationTarget","ResourceRef","TreeNode","TreeRendererState","TreeViewSection","WorkbenchCore","WorkbenchPanelInstance","getWorkbenchRenderers","reportUserActionError","CommandParamFieldRenderer","WorkbenchIcon","useWorkbenchStore","workbenchBackgrounds","RendererReadNotice","TreeActionParamsRequest","findNodeInSections","toTreeListSection","TreeParamsDialog","pinnedOnlyNodeIds","TreeViewBody","createToggleTreeSection","shouldSelectTreeNodeForNavigationTarget","TreeViewSearch","useTreeData","useTreeNavigationState","useTreeSelection","useTreeViewCustomization","WorkbenchTreeViewProps","readOwnerKey","placement","workbench","treeViewId","activeNodeId","resource","viewId","renderParamField","onOpenResourceError","error","onSidenavContextActionsChange","actions","EMPTY_TREE_STATE","expandedNodeIds","expandedSectionIds","treeCustomizationOptions","body","isSidenav","suppressNodeContextMenus","allowGroups","useSidenavContextActions","revision","onChange","actionsRef","current","TreeNavigationContext","navigateTreeNode","context","nodeId","intent","id","payload","target","setSelectedNode","navigation","openTarget","catch","ToggleTreeNodeContext","header","footer","childrenByNodeId","Record","loadChildren","node","createToggleTreeNode","expanded","includes","setNodeExpanded","children","WorkbenchTreeView","props","$","_c","Boolean","scrollRef","t0","getTreeRenderer","treeRenderer","filter","setFilter","treeState","treeStore","state","statesByTreeId","projectId","activeLocation","activeResource","t1","searchable","trim","undefined","moveNode","loading","retry","paramsRequest","setParamsRequest","rawHeaderSections","rawSections","t2","adapterContext","onCommandError","onRequestParams","map","section","section_0","section_1","rawFooterSections","t3","headerSections","sections","footerSections","t4","Symbol","for","visibleIcon","hiddenIcon","resetIcon","t5","visibleHeaderSections","visibleSections","visibleFooterSections","backgroundContextActions","customizationRevision","onReorderSections","onReorderNodes","onMoveSection","t6","t7","selectedNodeId","activeNodeSelection","t8","toggleNode","t9","toggleSection","t10","navigationContext","t11","t12","canMove","t13","title","t14","length","sidenav","nextSectionIds","event","t15","t16","searchPlaceholder","t17","t18","t19","display","style","overflowX","minWidth","width","minHeight","flexDirection","t20","t21","nextSectionIds_0","t22","event_0","t23","t24","nextSectionIds_1","event_1","t25","t26","t27","t28","_c","Button","HStack","Input","Menu","Stack","Text","ResourceRole","resourceKey","AlertMessage","ListRow","ScrollArea","useEffect","useState","WorkbenchIcon","ResourceLinkCandidate","ResourceLinksService","ResourceLinkPickerProps","service","excludeKey","busy","onCancel","onSelect","candidate","role","Promise","ResourceLinkPicker","props","$","_c","query","setQuery","t0","Symbol","for","results","setResults","selected","setSelected","setRole","loading","setLoading","error","setError","revision","setRevision","t1","t2","subscribe","undefined","_temp","t3","cancelled","controller","AbortController","timer","setTimeout","search","signal","then","items","filter","item","resource","catch","cause","Error","message","String","finally","abort","clearTimeout","t4","t5","event","target","value","t6","t7","t8","t9","length","t10","t11","item_0","label","shorthand","id","description","icon","map","t12","t13","t14","t15","const","value_0","t16","t17","t18","t19","t20","t21","t22","_c","_temp","Button","Dialog","HStack","IconButton","Stack","Text","ResourceAnchorPage","ResourceRef","ResourceRole","resourceKey","AlertMessage","ListRow","ScrollArea","useEffect","useState","WorkbenchIcon","ResourceLinkPicker","ResourceLinkCandidate","ResourceLinksService","RelatedResourcesProps","resource","service","onClose","RelatedResourceRow","edge","candidate","incoming","RelatedResources","props","rows","setRows","cursor","setCursor","nextCursor","setNextCursor","picker","setPicker","busy","setBusy","loading","setLoading","error","setError","revision","setRevision","key","subscribe","value","cancelled","controller","AbortController","undefined","list","direction","limit","then","page","refs","items","map","source","target","resolved","resolve","signal","candidates","Map","item","index","get","catch","cause","Error","message","String","finally","abort","mutate","action","Promise","add","role","open","label","shorthand","id","length","type","extensionId","icon","event","stopPropagation","remove","_Fragment","WorkbenchModuleContext","closeResourceLinksOnProjectChange","ctx","Pick","viewId","dispose","pages","store","subscribeSelector","state","projectId","widget","layout","getLayout","regions","overlay","widgets","overlays","closeOverlay","widgetId","ResourceRef","WorkbenchModuleContribution","RelatedResources","closeResourceLinksOnProjectChange","ResourceLinksService","WorkbenchResourceLinksOptions","canonicalize","resource","createService","resourceLinksCommandId","viewId","createWorkbenchResourceLinksModule","options","id","activate","ctx","currentResource","getActiveResource","getPrimaryResource","views","registerView","title","body","kind","render","input","instance","projectId","extensionId","type","overlays","closeOverlay","instanceId","registerOverlay","config","size","placement","scrollBehavior","commands","registerCommand","label","icon","category","isEnabled","Boolean","isVisible","execute","_args","context","current","openOverlay","useSyncExternalStore","SettingsRegistry","useSettingsRevision","settings","$","_c","t0","t1","t2","store","listener","subscribe","getState","revision","_c","Box","Flex","Spinner","Stack","Text","resourceKey","EmptyState","ScrollArea","ReactNode","useEffect","useState","CollectionSettingsPanel","getWorkbenchRenderers","PreferenceScope","SettingsRegistry","WorkbenchPanelRenderInput","WorkbenchPreferencesForm","useWorkbenchStore","useSettingsRevision","SettingsSurfacePanelProps","input","settings","resolveScopeId","scope","Centered","props","$","_c","t0","children","ScrollableSettingsContent","Symbol","for","h","minH","t1","SettingsViewContent","panelId","viewId","workbench","state","renderers","renderer","store","t2","t3","state_0","refreshKeys","t4","render","instance","t5","t6","CollectionItemView","panel","itemId","resolveCollectionItem","status","setState","id","alive","then","item","undefined","SettingsSurfacePanel","revision","resource","metadata","getPanel","kind","title","p","display","flexDirection","gap","description","save","preferences","t7","_c","Box","Flex","Text","resourceKey","ResizableSplitLayout","PreferenceScope","SettingsRegistry","WorkbenchPanelRenderInput","WorkbenchTreeView","WorkbenchIcon","SettingsSurfacePanel","useSettingsRevision","SettingsOverlayProps","input","settings","navTreeId","title","resolveScopeId","scope","SettingsOverlay","props","$","_c","resource","instance","t0","workbench","t1","t2","nav","t3","content","t4","Symbol","for","t5","t6","t7","_c","ResourceRef","SettingsScope","SETTINGS_RESOURCE_KIND","WORKBENCH_SETTINGS_OPEN_COMMAND_ID","settingsPanelResource","panel","id","title","icon","type","label","metadata","panelId","settingsItemResource","item","itemId","isSettingsScopeVisible","scope","hasProjectScope","resourceKey","CollectionSettingsPanel","RegisteredSettingsPanel","SettingsAction","SettingsRegistry","TreeAction","TreeNode","TreeViewSection","settleReadBatch","isSettingsScopeVisible","settingsItemResource","settingsPanelResource","WORKBENCH_SETTINGS_OPEN_COMMAND_ID","FALLBACK_SECTION_ID","toTreeActions","actions","map","action","id","label","icon","run","collectionItemNode","panel","item","itemId","itemLabel","itemIcon","resource","target","kind","commandId","args","panelId","orderGroupKeys","keys","order","indexOf","key","index","Number","POSITIVE_INFINITY","sort","left","right","collectionChildren","Promise","items","groupBy","byKey","Map","list","get","push","set","collapsible","children","panelToNode","title","BuildSettingsTreeInput","settings","hasProjectScope","matchesWhen","expression","signal","AbortSignal","onProgress","sections","buildSettingsTreeBody","input","throwIfAborted","listSections","sectionsById","section","panels","listPanels","filter","scope","when","bySection","sectionId","has","renderOrder","result","collections","sectionPanels","length","nodes","node","PreferenceScope","standardResourceIcons","WorkbenchModuleContext","WorkbenchModuleContribution","SettingsOverlay","isSettingsScopeVisible","settingsItemResource","settingsPanelResource","WORKBENCH_SETTINGS_OPEN_COMMAND_ID","SettingsSurfacePanel","buildSettingsTreeBody","FALLBACK_SECTION_ID","WorkbenchSettingsModuleOptions","resolveScopeId","scope","title","WORKBENCH_SETTINGS_WIDGET_ID","WORKBENCH_SETTINGS_NAV_WIDGET_ID","WORKBENCH_SETTINGS_PANEL_WIDGET_ID","WIDGET_ID","openSettings","input","args","ctx","hasProjectScope","requested","undefined","panelId","itemId","requestedPanel","settings","getPanel","isVisible","entry","NonNullable","context","matches","when","panel","listPanels","find","resource","kind","id","label","overlays","openOverlay","createWorkbenchSettingsModule","options","activate","views","registerView","body","defaultExpandedSectionIds","listSections","map","section","getBody","signal","onProgress","matchesWhen","getChildren","render","registerOverlay","viewId","config","size","scrollBehavior","contentHeight","contentMaxWidth","contentWidth","closeOnInteractOutside","commands","registerCommand","category","icon","execute","refreshNavigation","getView","refreshView","unsubscribeSettings","store","subscribe","unsubscribeContext","dispose","Box","HStack","IconButton","Menu","Portal","Text","AttachedMenu","Header","PANEL_HEADER_CONTROL_SIZE","ResizableSplitLayout","Tooltip","ReactNode","useRef","WorkbenchCore","WorkbenchPanelRegion","WorkbenchRegion","WorkbenchIcon","workbenchBackgrounds","PANEL_CONTENT_MIN_SIZE_PX","PANEL_MENU_RESIZE_HANDLE_SIZE_PX","useWorkbenchPanelMenus","WorkbenchPanelMenuView","WorkbenchPanelMenu","props","$","_c","view","workbench","t0","region","split","panel","background","widget","t1","side","t2","label","t3","PanelMenuLayoutInput","content","contentMinSizePx","addPanelMenu","input","has","collapsed","collapsible","size","defaultPx","minPx","maxPx","width","layout","setRegionSize","onCollapsedChange","WorkbenchPanelMenuLayout","children","left","right","withRight","WorkbenchPanelMenuOpenerProps","canAttach","WorkbenchPanelMenuOpener","triggerRef","onOpen","undefined","t4","trigger","t5","title","t6","Symbol","for","mainAxis","t7","current","t8","placement","offset","flip","fitViewport","getAnchorElement","t9","focus","t10","t11","t12","t13","icon","t14","t15","t16","t17","t18","WorkbenchPanelMenuOpeners","filter","_temp","closedMenus","length","map","view_0","_c","_temp","useShallow","WorkbenchCore","WorkbenchRegion","useWorkbenchStore","useWorkbenchModeRegionSettings","workbench","region","$","_c","t0","layout","getRegionSettings","modes","store","_c","Box","Flex","IconButton","Text","AttachedPanel","BubbleButton","BubblePanel","Header","PANEL_HEADER_CONTROL_SIZE","Tooltip","MessageCircle","Minimize2","ReactNode","WorkbenchCore","WorkbenchFocusRegion","WorkbenchPanelMenuLayout","WorkbenchPanelMenuOpeners","useWorkbenchRegionTabsVisible","WorkbenchTabDropTarget","useWorkbenchModeRegionSettings","useWorkbenchStore","workbenchBackgrounds","WorkbenchSidePanelProps","workbench","contentSlotRef","node","HTMLDivElement","bottomOffset","header","bubbleIcon","onOpen","floatingPanelBottom","launcherBottom","WorkbenchSidePanelTitle","$","_c","t0","Symbol","for","WorkbenchSidePanelHeaderProps","WorkbenchSidePanelHeader","props","WorkbenchAttachedSidePanel","settings","sidePanel","canFloat","modes","store","t1","getMode","attached","layout","hasTabs","showHeader","Boolean","t2","setMode","undefined","t3","t4","t5","t6","widget","t7","WorkbenchFloatingSidePanelProps","available","WorkbenchFloatingSidePanel","mode","visible","bottom","bg","t8","t9","t10","t11","t12","_c","_Fragment","TagEditorValue","WorkflowStatus","toStatusEditorValue","status","id","name","label","color","icon","sortOrder","isDefault","actions","sameActions","left","right","sort","join","statusNeedsUpdate","original","draft","toWorkflowStatus","Stack","SaveTagSettingsInput","TagSettingsPanel","useEffect","useState","RegisteredWorkbenchStatusSet","WorkbenchStatusRegistry","WorkflowStatus","WorkbenchIcon","useWorkbenchStore","statusNeedsUpdate","toStatusEditorValue","toWorkflowStatus","WorkflowStatusSectionProps","statusSet","workbench","statuses","WorkflowStatusSection","props","$","_c","t0","id","cached","getStatuses","undefined","setStatuses","loadError","setLoadError","t1","current","cached_0","load","then","value","error","t2","t3","input","next","drafts","map","save","t4","t5","t6","actions","_temp","t7","title","t8","_temp2","WorkflowStatusSettingsProps","WorkflowStatusSettings","store","_temp3","T0","statusSets","listStatusSets","action","label","icon","status","name","state","_c","_temp","_temp2","_temp3","terminalPlacementBindingId","scope","instanceId","JSON","stringify","Box","Center","Text","useThemePreference","Terminal","TerminalBridge","useEffect","useLayoutEffect","useRef","useState","ResourceRef","WorkbenchCore","WorkbenchPanelInstance","WorkbenchTerminalController","useWorkbenchStore","terminalPlacementBindingId","ControllerTerminalBridgeOptions","getBindingId","getResource","getTitle","workspacePathFromResource","resource","workspacePath","metadata","length","undefined","withTerminalRequestDefaults","request","Parameters","cwd","createControllerTerminalBridge","terminal","options","openSession","sessionId","open","bindingId","title","id","write","data","resize","cols","rows","kill","signal","onData","handler","subscribe","onExit","onError","WorkbenchTerminalPanelProps","placement","workbench","WorkbenchTerminalPanel","props","themePreference","placementRef","current","bridge","layout","getPersistenceScope","instanceId","setSessionId","processTitle","store","state","sessionsById","active","region","Object","values","regions","find","widgets","some","candidate","widgetId","activeWidgetId","updateShellPlacement","shellPlacements","updatePlacement","currentPlacement","getLayout","flatMap","identity","placementIdentity","kind","label","isAvailable","test","Terminal","ResourceRef","WorkbenchCoreContributionContext","WorkbenchLayout","WorkbenchModuleContribution","workbenchPanelRegions","toPanelInstance","terminalPlacementBindingId","WorkbenchTerminalPanel","WORKBENCH_TERMINAL_WIDGET_ID","WORKBENCH_TERMINAL_OPEN_COMMAND_ID","WORKBENCH_TERMINAL_PANEL_SIZE","defaultPx","minPx","OpenWorkbenchTerminalOptions","resource","reveal","TerminalResource","terminalPlacements","layout","flatMap","region","regions","widgets","filter","placement","viewId","terminalInstanceIds","ctx","Set","getLayout","map","widgetId","watchClosedTerminalPlacements","changingScope","willChangeScope","onWillChangePersistenceScope","didChangeScope","onDidChangePersistenceScope","unsubscribeLayout","store","subscribe","state","previousState","currentIds","previousIds","scope","getPersistenceScope","instanceId","has","terminal","killBinding","dispose","terminalTitlePattern","nextTerminalIndexes","WeakMap","getInitialTerminalIndex","placements","titleIndexes","exec","title","index","undefined","Number","parseInt","Math","max","length","getNextTerminalTitle","nextIndex","get","set","hasWorkspacePath","metadata","workspacePath","getTerminalResource","activeResource","getActiveResource","primaryResource","getPrimaryResource","openWorkbenchTerminal","input","workspace","id","String","padStart","globalThis","crypto","randomUUID","type","label","icon","identity","shellPlacements","openPlacement","placementId","open","kind","Error","shell","setRegionOpen","secondary","find","candidate","placementIdentity","instanceKey","createWorkbenchTerminalModule","activate","disposables","views","registerView","body","render","instance","workbench","registerPlacement","item","binding","kinds","view","cardinality","add","target","command","mountStrategy","hiddenByDefault","commands","registerCommand","category","execute","_args","context","source","defaultThemePreferences","WorkbenchCore","useWorkbenchStore","useWorkbenchThemePreferences","workbench","$","_c","contributed","themes","store","_temp","t0","state","_c","_temp","ChakraProvider","FileIconThemePreferenceOption","FileIconThemePreferenceProvider","psTheme","ThemePreference","ThemePreferenceOption","ThemePreferenceProvider","ThemePreferenceStorage","createContext","ReactNode","useContext","WorkbenchThemeProviderProps","children","initialThemePreference","defaultThemePreference","preferenceScope","themeStorage","themePreferences","fileIconThemePreferences","WorkbenchThemeProviderContext","WorkbenchThemeProvider","props","$","_c","hasWorkbenchThemeProvider","t0","t1","t2","_c","Box","BoxProps","ReactNode","WorkbenchThemeScopeProps","Omit","children","WorkbenchThemeScope","props","$","_c","boxProps","t0","_c","Center","CloseButton","Dialog","Portal","ReactNode","useEffect","useState","getWorkbenchRenderers","WorkbenchCore","WorkbenchWidgetPlacement","toPanelContribution","toPanelInstance","WorkbenchIcon","useWorkbenchStore","WorkbenchOverlayWidgetConfig","size","placement","scrollBehavior","closeOnEscape","closeOnInteractOutside","modal","preventScroll","trapFocus","motionPreset","role","contentHeight","contentMaxHeight","contentMinHeight","contentWidth","contentMaxWidth","isRecord","value","Record","Array","isArray","stringValue","record","key","undefined","booleanValue","resolveOverlayConfig","config","overlayConfig","resolveOverlayDialogConfig","Pick","closeable","closable","resolveActivePlacement","widgets","activeWidgetId","find","entry","widgetId","resolveOverlayDialogRenderState","activePlacement","exitingPlacement","open","WorkbenchOverlayFallback","props","$","_c","t0","Symbol","for","t1","label","WorkbenchOverlayLayerProps","workbench","WorkbenchOverlayLayer","overlayRegion","layout","store","_temp","renderers","_temp2","_temp3","setExitingPlacement","renderState","widget","getWidget","contributionId","dialogRootConfig","renderer","rendererId","canCloseOverlay","closeLabel","title","body","render","panel","instance","refresh","_temp4","t2","details","closePanel","handleOpenChange","t3","current","handleExitComplete","handleInteractOutside","_temp5","t4","t5","t6","t7","t8","t9","state","regions","overlay","state_0","state_1","refreshKeys","event","target","detail","originalEvent","Element","closest","preventDefault","_c","_temp","_temp2","_temp3","_temp4","_temp5","IconButton","ResourceActionMenu","WorkbenchCore","resolvePageActivePlacement","resolveResourcePreview","createWorkbenchLocationActions","useWorkbenchResourceActionResolver","WorkbenchIcon","placementMenuActions","usePlacementTab","useWorkbenchStore","WorkbenchBreadcrumbActions","props","$","_c","workbench","items","breadcrumbs","store","_temp","changes","resources","preview","_temp2","page","pages","_temp3","t0","state_2","state","layout","placement","snapshot","resolveActions","contributed","subject","length","resource","at","undefined","resolved","commandIds","Set","map","_temp4","keys","_temp5","resourceActions","filter","action_1","has","action","key","commandId","t1","firstLocationAction","locationActions","actions","separatorBefore","resourceLabel","label","id","type","t2","Symbol","for","t3","t4","t5","state_0","state_1","activePageId","action_0","_c","_temp","_temp2","_temp3","_temp4","_temp5","Box","HStack","IconButton","Header","PANEL_HEADER_CONTROL_SIZE","Tooltip","WorkbenchCore","workbenchTopHeaderLeadingMenuPath","workbenchTopHeaderTrailingMenuPath","WorkbenchBreadcrumbView","useModeChrome","WorkbenchRegion","WorkbenchIcon","useWorkbenchStore","workbenchBackgrounds","WorkbenchHeaderActions","WorkbenchBreadcrumbActions","WorkbenchNavRegionControl","id","label","icon","open","onToggle","WorkbenchNavChromeProps","workbench","hasNav","regionControls","WorkbenchRegionControl","props","$","_c","control","t0","t1","t2","WorkbenchNavigationControlsProps","WorkbenchNavigationControls","history","pageLocations","historyStore","_temp","map","_temp2","canGoBack","goBack","t3","Symbol","for","t4","t5","canGoForward","t6","goForward","t7","t8","t9","WorkbenchRegionControls","controls","_temp3","WorkbenchNavChrome","chrome","filter","_temp4","sidenavControls","_temp5","trailingRegionControls","undefined","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","main","state","control_0","_c","_temp","_temp2","_temp3","_temp4","_temp5","z","activityResourceTypeSchema","string","activityActorTypeSchema","enum","activitySourceSchema","activityEventSchema","object","id","project_id","resource_type","resource_id","source_extension_id","nullable","event_type","actor_type","actor_id","source","summary","payload_json","record","unknown","created_at","listActivityInputSchema","optional","from","to","cursor","limit","coerce","number","int","listProjectActivityInputSchema","extend","listActivityResponseSchema","events","array","next_cursor","ActivityResourceType","ActivityActorType","infer","ActivitySource","ActivityEvent","ListActivityInput","ListProjectActivityInput","ListActivityResponse","WorkspaceExecutionTarget","SessionMessage","JsonPatch","op","path","value","EventStore","push","patch","getHistory","subscribe","AsyncIterable","historyPlusStream","snapshotAndSubscribe","history","stream","AGENT_CAPABILITIES","const","AgentCapability","QuestionResponse","answers","callId","HarnessQuestionReplyError","Error","questionRejected","HarnessQuestionOption","label","description","HarnessQuestion","question","options","multiple","HarnessQuestionRequest","id","toolUseId","questions","HarnessQuestionChannel","ask","request","Promise","QuestionService","answer","response","hasPending","dispose","ApprovalRequest","toolName","toolInput","ApprovalResponse","decision","ApprovalService","requestApproval","handleResponse","TimeoutStrategy","HarnessEventSink","getMessages","HarnessAttachment","fileId","fileName","mimeType","sizeBytes","localPath","url","HarnessApprovalChannel","HarnessParamValue","HarnessParams","Record","HarnessWorkspaceContext","workspaceId","executionTarget","HarnessExitStatus","HarnessExit","status","HarnessSession","agentSessionId","done","stop","replyQuestion","steer","input","HarnessSteeringInput","HarnessSteeringResult","timeoutStrategy","pid","HarnessStartInput","prompt","sessionId","cwd","workspace","model","params","attachments","events","signal","AbortSignal","HarnessResumeInput","messageOffset","questionResponse","approvals","HarnessReattachInput","HarnessMessagesInput","HarnessRecoveryInput","knownMessages","nativeMessages","HarnessRecoveryResult","kind","messages","category","deliveryId","reason","z","AGENT_CAPABILITIES","agentAvailabilityTypeSchema","enum","agentSkillsLayoutSchema","object","dir","string","global_dir","localizableSchema","union","$l10n","default","optional","harnessParamBaseSchema","control","literal","label","description","required","boolean","metadata","record","unknown","harnessParamOptionSchema","value","icon","harnessSelectParamSchema","extend","type","defaultValue","options","array","harnessBooleanParamSchema","harnessParamDescriptorSchema","harnessParamsSchema","agentInfoSchema","id","name","availability","reason","skills","params","capabilities","supportsModels","agentModelSchema","isDefault","paramOverrides","nullable","AgentAvailabilityType","infer","AgentInfo","AgentModel","AgentSkillsLayout","HarnessParamDescriptorInfo","HarnessParamsInfo","findAgentModel","resolveAgentModelParams","harnessLocalId","slice","lastIndexOf","z","JsonObject","jsonObjectSchema","record","string","unknown","serializableJsonObjectSchema","ZodType","json","meta","type","additionalProperties","localizedStringSchema","object","$l10n","default","optional","localizableStringSchema","union","extensionSettingScopeSchema","enum","extensionSettingValueTypeSchema","extensionSettingSourceSchema","extensionDiagnosticSeveritySchema","extensionDiagnosticSchema","code","severity","message","extensionId","commandId","sourcePath","metadata","extensionRecordSchema","id","name","displayName","extensionInstanceId","installedExtensionId","installName","version","description","packageAssetDescriptorSchema","kind","literal","path","baseUrl","extensionPlacementSchema","extensionSlotKindSchema","commandSourceSchema","extensionWhenExpressionSchema","mode","array","source","viewId","resourceType","extensionWebviewContributionSchema","entry","title","capabilities","workbenchExtensionWebviewSchema","extend","runtimeUrl","moduleUrl","styles","ExtensionDiagnostic","infer","LocalizableString","ExtensionRecord","z","jsonObjectSchema","localizableStringSchema","packageAssetDescriptorSchema","extensionThemeRecordSchema","object","id","string","extensionId","title","description","optional","format","literal","mode","enum","source","tokens","record","monacoTheme","base","inherit","rules","array","unknown","colors","extensionFileIconThemeRecordSchema","definitions","fileExtensions","fileNames","defaults","file","folder","default","fonts","fontFamily","src","url","weight","style","extensionTranslationRecordSchema","defaultLocale","bundles","ExtensionThemeRecord","infer","ExtensionFileIconThemeRecord","ExtensionTranslationRecord","z","localizableStringSchema","extensionArtifactMountSchema","object","id","string","extensionId","relativePath","fullPath","label","watch","boolean","ExtensionArtifactMount","infer","workbenchMenuTargets","const","workbenchTreeTargets","workbenchRegions","workbenchViewTargets","workbenchSettingsTargets","workbenchSettingsScopes","workbenchModeLayoutTargets","WorkbenchMenuTarget","WorkbenchTreeTarget","WorkbenchViewTarget","WorkbenchSettingsTarget","WorkbenchAttachmentTarget","z","workbenchMenuTargets","workbenchModeLayoutTargets","workbenchRegions","workbenchSettingsScopes","workbenchSettingsTargets","workbenchTreeTargets","workbenchViewTargets","workbenchMenuTargetSchema","enum","workbenchTreeTargetSchema","workbenchRegionSchema","workbenchViewTargetSchema","workbenchSettingsTargetSchema","workbenchModeLayoutTargetSchema","workbenchAttachmentTargetSchema","union","workbenchSettingsScopeSchema","z","extensionPlacementSchema","extensionWhenExpressionSchema","jsonObjectSchema","localizableStringSchema","workbenchMenuTargetSchema","extensionCommandRecordSchema","object","id","string","extensionId","title","description","optional","cliPath","cliAliases","array","examples","automation","boolean","mutating","resourceMutation","discriminatedUnion","kind","literal","resourceType","idParam","labelParam","params","record","type","catchall","unknown","extensionParamObjectSchema","extensionMiddlewareRecordSchema","commandId","extensionHookRecordSchema","eventId","extensionScheduleRecordSchema","cron","workbenchExtensionAutomationRecordSchema","localId","extensionInstanceId","enabled","extensionMenuContributionSchema","slotId","target","label","group","placement","icon","presentation","enum","when","disabledWhen","disabledReason","extensionCommandPaletteContributionSchema","ExtensionCommandRecord","infer","ExtensionMiddlewareRecord","ExtensionHookRecord","ExtensionScheduleRecord","WorkbenchExtensionAutomationRecord","ExtensionMenuContribution","ExtensionCommandPaletteContribution","z","extensionDiagnosticSchema","extensionHostCapabilitySchema","object","version","number","int","positive","since","string","optional","extensionHostCapabilitiesSchema","host","literal","hostVersion","capabilities","record","extensionHostCompatibilitySchema","status","enum","diagnostics","array","ExtensionHostCapability","infer","ExtensionHostCapabilities","ExtensionHostCompatibility","Localizable","CommandRef","ExtensionContextBase","ContributionDefinition","ResourceKindRef","MaybePromise","ResourceRef","ViewHierarchyParent","dockedWorkbenchRegions","const","DockedWorkbenchRegion","extensionPanelRegions","ExtensionPanelRegion","RegionSize","defaultPx","minPx","maxPx","ResourceMenuSlotDefinition","id","placement","label","access","order","ResourceKindDefinition","prefix","$prefix","icon","menuSlots","resolve","resolveMany","validateAnchors","ResourceHierarchyProvider","resourceKind","parent","ctx","resource","dockedWorkbenchRegions","z","localizableStringSchema","workbenchExtensionConnectionRecordSchema","object","id","string","localId","extensionId","label","authType","enum","supportsCheck","boolean","extensionConnectionRecordSchema","connectionId","baseUrl","configured","lastCheck","ok","status","number","int","nullable","error","checkedAt","updatedAt","configureExtensionConnectionSchema","url","secret","optional","listExtensionConnectionsResponseSchema","connections","array","ExtensionConnectionRecord","infer","ConfigureExtensionConnectionInput","ListExtensionConnectionsResponse","isNavigationHref","href","protocol","URL","FileSourcePosition","isFileSourcePosition","value","Array","isArray","position","positive","number","Number","isSafeInteger","line","key","const","undefined","endColumn","endLine","column","isFileSourcePosition","PageParamDefinition","PageParams","PageParamValue","PageParamDefinitions","Readonly","Record","reserved","Set","invalid","name","Error","equal","left","right","JSON","stringify","isPageParamValue","definition","value","type","Array","isArray","every","item","values","includes","Number","isFinite","validatePageParamDefinitions","definitions","Object","keys","length","entries","test","has","default","undefined","validateNames","hasOwn","normalizePageParams","strict","result","freeze","params","pageParamsQuery","toString","resolvePageParams","query","URLSearchParams","append","String","parsePageParams","items","getAll","raw","validatePageParamDefinitions","z","validatePageParamDefinitions","pageParamValueSchema","union","string","number","boolean","array","pageParamDefinitionsSchema","record","discriminatedUnion","object","type","literal","default","optional","values","readonly","strict","superRefine","value","ctx","error","addIssue","code","message","String","z","serializableJsonObjectSchema","extensionResourceRefSchema","object","shorthand","string","optional","type","id","projectId","label","icon","extensionId","metadata","z","serializableJsonObjectSchema","contributionRefSchema","kind","Kind","object","extensionId","string","literal","id","pageRefSchema","placementRefSchema","modeRefSchema","viewRefSchema","resourceKindRefSchema","pageSlotRefSchema","page","panelRefSchema","union","commandTargetSchema","command","params","optional","contributionRefSchema","pageRefSchema","modeRefSchema","viewRefSchema","resourceKindRefSchema","z","isNavigationHref","isFileSourcePosition","FileSourcePosition","PageParams","pageParamValueSchema","extensionResourceRefSchema","commandTargetSchema","pageRefSchema","panelRefSchema","sourcePositionSchema","object","line","number","int","positive","column","optional","endLine","endColumn","refine","sectionSchema","anchors","array","id","string","heading","occurrence","nonnegative","MetadataPageTarget","kind","page","infer","resource","open","section","position","params","parent","pageTargetSchema","ZodType","lazy","literal","enum","record","value","meta","navigationOperationSchema","union","panel","navigationTargetSchema","target","href","targets","min","isFileSourcePosition","pageRefSchema","z","NavigationTarget","Struct","commandSourceSchema","extensionSlotKindSchema","jsonObjectSchema","navigationTargetSchema","pageParamValueSchema","extensionResourceRefSchema","workbenchAttachmentTargetSchema","extensionSlotInvocationSchema","object","id","string","kind","context","extensionAttachmentInvocationSchema","target","mode","optional","projectId","resource","extensionRendererContextSchema","rendererId","pageParams","record","modeId","invocation","placement","enum","commandExecuteRequestSchema","min","workspaceId","params","attachment","slot","source","metadata","commandExecuteBodySchema","dispatchExtensionEventBodySchema","eventId","payload","strict","serializedErrorSchema","name","message","stack","commandNoticeSchema","type","title","commandDiagnosticSchema","code","severity","extensionId","commandId","responseNavigationTargetSchema","ZodType","commandOutcomeSchema","ok","boolean","status","value","unknown","navigationRequests","array","reason","data","error","notices","diagnostics","commandExecuteResponseSchema","eventIds","outcome","CommandExecuteRequest","infer","CommandExecuteBody","CommandExecuteResponse","ExtensionRendererContext","DispatchExtensionEventInput","z","ControlParam","ControlsQueryResult","extensionResourceRefSchema","base","id","string","name","description","optional","readOnly","boolean","numeric","min","number","max","step","vector","strictObject","x","y","range","tuple","harness","harnessId","model","params","record","union","selectionValue","array","selectionOption","icon","color","disabled","selection","placeholder","searchable","searchPlaceholder","emptyText","image","src","alt","primitive","null","readOnlyContent","extend","type","literal","images","controlValueSchema","controlValuesSchema","controlParamSchema","discriminatedUnion","defaultValue","singleLine","allowCustomValues","options","multiSelect","clearable","group","value","href","ref","copyText","editable","unit","markerCount","variant","enum","indicatorColor","coordinateMode","xLabel","yLabel","ZodType","controlGroupSchema","title","collapsible","defaultCollapsed","controlsQueryResultSchema","groups","values","z","localizableStringSchema","extensionRendererRecordBaseSchema","object","id","string","extensionId","title","icon","optional","resourceKind","refreshEventIds","array","min","emptyTitle","emptyDescription","extensionTreeRendererRecordSchema","extend","searchable","boolean","searchPlaceholder","headerHandlerId","bodyHandlerId","childrenHandlerId","moveHandlerId","footerHandlerId","defaultExpandedSectionIds","defaultExpandedNodeIds","extensionFileRendererRecordSchema","loadHandlerId","saveHandlerId","ExtensionTreeRendererRecord","infer","ExtensionFileRendererRecord","WorkbenchExtensionFileRendererRecord","WorkbenchExtensionTreeRendererRecord","z","controlValuesSchema","extensionRendererRecordBaseSchema","extensionControlsRendererRecordSchema","extend","queryHandlerId","string","valueChangeHandlerId","optional","applyHandlerId","resetHandlerId","defaultValues","ExtensionControlsRendererRecord","infer","WorkbenchExtensionControlsRendererRecord","ViewFilterCondition","ViewFilterRule","attributeId","condition","value","ViewFilterGroup","conjunction","rules","groups","ViewSortDirection","ViewSort","direction","ViewFieldKind","optionConditions","VIEW_FILTER_CONDITIONS","Record","boolean","string","number","date","enum","status","user","z","VIEW_FILTER_CONDITIONS","ViewFieldKind","ViewFilterCondition","ViewFilterGroup","ViewFilterRule","ViewSort","EMPTY_VIEW_FILTER","conjunction","rules","VIEW_DAY_PATTERN","conditionIds","Set","Object","values","flat","viewFilterConditionSchema","enum","viewFilterRuleSchema","object","attributeId","string","min","condition","value","union","boolean","number","array","optional","advancedFilterGroupSchema","strictObject","viewFilterGroupSchema","extend","groups","refine","filter","length","message","viewSortSchema","direction","viewSortsSchema","max","viewFilterValueKind","kind","const","valueNeeds","none","day","text","options","valueFits","ReturnType","undefined","Number","isFinite","test","Array","isArray","ViewRuleField","id","filterable","sortable","canSortViewField","field","Pick","ruleProblem","rule","fields","find","map","join","conditions","legacyList","includes","valueKind","unknown","some","option","findViewFilterProblem","flatMap","group","problem","findViewSortsProblem","sorts","sort","z","extensionParamObjectSchema","jsonObjectSchema","localizableStringSchema","viewToolbarActionSchema","object","id","string","label","icon","optional","presentation","enum","params","input","submitLabel","when","disabled","boolean","viewToolbarActionRecordSchema","extend","commandId","z","viewFilterGroupSchema","viewSortsSchema","localizableStringSchema","extensionRendererRecordBaseSchema","viewToolbarActionRecordSchema","themeColorSchema","object","light","string","dark","foreground","optional","columnStatSchema","discriminatedUnion","type","literal","bins","number","int","positive","limit","columnRendererSchema","stops","array","value","color","categories","union","boolean","null","dataTableRendererColumnSchema","id","label","enum","groupable","filterable","description","icon","hidden","stat","renderer","dataTableRendererSettingsSchema","grouping","rowNumbers","wrapRows","showStats","hiddenColumns","columnOrder","dataTableRendererSavedViewSchema","title","settings","partial","filter","sorts","rowActionSchema","destructive","commandId","selectionActionSchema","extensionDataTableRendererRecordSchema","extend","toolbarActions","columns","queryHandlerId","selectionMode","selectionActions","rowActions","rowActivationHandlerId","initialPageSize","pageSizeOptions","defaultSettings","defaultFilter","defaultSorts","defaultViews","defaultActiveViewId","ExtensionDataTableRendererRecord","infer","WorkbenchExtensionDataTableRendererRecord","z","viewFilterGroupSchema","viewSortsSchema","extensionParamObjectSchema","localizableStringSchema","extensionRendererRecordBaseSchema","viewToolbarActionRecordSchema","kanbanRendererEnumOptionSchema","object","value","string","label","color","optional","icon","nullable","kanbanRendererAttributeTypeSchema","discriminatedUnion","kind","literal","options","array","statuses","extensionId","id","legacyValues","record","boolean","kanbanRendererAttributeDisplaySchema","union","itemsAttributeId","passthrough","refine","display","kanbanRendererAttributeSchema","type","filterable","groupable","sortable","displayable","editable","kanbanViewSettingsSchema","viewMode","enum","columnGrouping","rowGrouping","displayProperties","kanbanRendererSavedViewSchema","title","settings","filter","sorts","isDefault","extensionKanbanRendererCreateRowSchema","commandId","submitLabel","columnParam","params","attributesParam","attachments","resourceParam","fileParam","labels","cancel","properties","submitError","removeFile","extensionKanbanRendererRowActionSchema","destructive","extensionKanbanRendererRecordSchema","extend","toolbarActions","extensionInstanceId","attributes","queryHandlerId","attributeChangeHandlerId","reorderHandlerId","moveHandlerId","schemaRefreshEventIds","columnActionHandlerId","createRow","rowActions","rowActivationHandlerId","defaultSettings","partial","defaultFilter","defaultSorts","defaultViews","defaultActiveViewId","hideToolbar","extensionCommandPaletteResourceRecordSchema","resourceKind","refreshEventIds","min","ExtensionKanbanRendererRecord","infer","ExtensionCommandPaletteResourceRecord","WorkbenchExtensionKanbanRendererRecord","WorkbenchExtensionCommandPaletteResourceRecord","z","extensionWhenExpressionSchema","navigationTargetSchema","parsedKeybindingChordSchema","object","key","string","ctrl","boolean","shift","alt","meta","modifiers","array","extensionKeybindingRecordSchema","id","extensionId","action","canonicalChord","parsed","platformOverrides","mac","optional","linux","win","when","ExtensionKeybindingRecord","infer","z","workbenchPlacementPresentationSchema","object","mountStrategy","enum","optional","hiddenByDefault","boolean","headerBorderBottom","tab","queryHandlerId","string","refreshEventIds","array","WorkbenchPlacementPresentationRecord","infer","placementPresenceSchema","regionSizeSchema","defaultPx","number","minPx","maxPx","regionSettingsSchema","showHeader","size","collapsible","alwaysShowTabs","z","navigationTargetSchema","placementPresenceSchema","resourceKindRefSchema","viewRefSchema","resourceConstraintSchema","object","kinds","array","min","strict","resourceBindingSchema","extend","view","cardinality","enum","add","optional","placementItemSchema","discriminatedUnion","kind","literal","presence","binding","resourceKindRefSchema","viewRefSchema","z","localizableStringSchema","pageParamDefinitionsSchema","workbenchPlacementPresentationSchema","placementItemSchema","resourceConstraintSchema","modeRefSchema","pageRefSchema","viewRefSchema","pageSlotRefSchema","panelRefSchema","placementRefSchema","mainSchema","discriminatedUnion","extend","kind","literal","view","cardinality","enum","strict","object","empty","slotSchema","id","string","region","order","number","optional","item","openOn","workbenchExtensionPageRecordSchema","localId","extensionId","title","icon","path","params","document","metadataKey","refine","key","trim","length","mode","parent","resource","main","slots","array","viewRefSchema","modeRefSchema","pageRefSchema","z","extensionSettingScopeSchema","extensionSettingSourceSchema","extensionSettingValueTypeSchema","extensionWebviewContributionSchema","localizableStringSchema","workbenchExtensionWebviewSchema","workbenchSettingsScopeSchema","workbenchSettingsTargetSchema","extensionSettingsPanelRecordSchema","object","id","string","extensionId","extensionInstanceId","optional","installedExtensionId","installName","slotId","target","scope","title","icon","section","webview","extensionSettingOptionSourceSchema","commandId","valueField","labelField","params","record","unknown","extensionSettingDefinitionRecordSchema","key","type","default","enum","array","options","description","extensionSettingValueRecordSchema","extend","value","source","listExtensionSettingsResponseSchema","settings","updateExtensionSettingRequestSchema","workbenchExtensionSettingsPanelRecordSchema","extensionSettingsSectionRecordSchema","order","number","ExtensionSettingsPanelRecord","infer","ExtensionSettingDefinitionRecord","ExtensionSettingValueRecord","ListExtensionSettingsResponse","UpdateExtensionSettingRequest","WorkbenchExtensionSettingsPanelRecord","ExtensionSettingsSectionRecord","workbenchExtensionSettingsPanelRecordSchema","z","dockedWorkbenchRegions","extensionPanelRegions","extensionCommandPaletteContributionSchema","extensionCommandRecordSchema","extensionMenuContributionSchema","workbenchExtensionAutomationRecordSchema","extensionDiagnosticSchema","extensionRecordSchema","jsonObjectSchema","localizableStringSchema","workbenchExtensionWebviewSchema","workbenchExtensionConnectionRecordSchema","extensionControlsRendererRecordSchema","extensionDataTableRendererRecordSchema","extensionCommandPaletteResourceRecordSchema","extensionKanbanRendererRecordSchema","extensionKeybindingRecordSchema","navigationTargetSchema","workbenchExtensionPageRecordSchema","regionSettingsSchema","workbenchPlacementPresentationSchema","extensionFileRendererRecordSchema","extensionTreeRendererRecordSchema","placementItemSchema","extensionSettingDefinitionRecordSchema","extensionSettingsSectionRecordSchema","viewToolbarActionSchema","contributionRefSchema","kind","Kind","object","extensionId","string","literal","id","commandRefSchema","modeRefSchema","pageRefSchema","resourceKindRefSchema","settingsSectionRefSchema","statusRefSchema","viewRefSchema","normalizedWhenSchema","mode","union","array","optional","source","enum","view","resourceType","metadata","rendererBaseOmissions","title","icon","const","commandActionSchema","label","destructive","boolean","command","kanbanCreateRowSchema","submitLabel","columnParam","params","record","unknown","attributesParam","attachments","resourceParam","fileParam","labels","cancel","properties","submitError","removeFile","webviewBodySchema","webview","treeBodySchema","omit","extend","fileBodySchema","controlsBodySchema","kanbanBodySchema","createRow","rowActions","toolbarActions","dataTableBodySchema","selectionActions","workbenchExtensionViewBodySchema","discriminatedUnion","workbenchExtensionViewRecordSchema","localId","body","workbenchExtensionModeRecordSchema","regions","floatingPanels","regionSettings","partialRecord","defaultTheme","chrome","workbenchExtensionPlacementRecordSchema","item","region","order","number","movableTo","workbenchExtensionViewMenuRecordSchema","owner","side","group","placement","hostTreeHeader","hostTreeFooter","workbenchExtensionNavigationItemRecordSchema","slot","when","action","workbenchExtensionNavigationTreeRecordSchema","resourceScope","workbenchExtensionResourceKindRecordSchema","resolveCommand","resolveManyCommand","menuSlots","access","workbenchExtensionSettingsPanelRecordSchema","section","workbenchExtensionStatusBarItemRecordSchema","workbenchExtensionStatusRecordSchema","actions","queryHandlerId","saveHandlerId","workbenchExtensionMetadataSchema","extensions","commands","menuContributions","commandPaletteContributions","modes","pages","views","viewMenus","placements","resourceKinds","resourceHierarchyProviders","resourceKind","navigationItems","navigationTrees","statusBarItems","statuses","activityItems","settingsSections","settingsPanels","commandPaletteResources","keybindings","settingsDefinitions","automations","connections","harnesses","skills","templates","templateTypes","description","list","read","save","delete","themes","diagnostics","WorkbenchExtensionMetadata","infer","WorkbenchExtensionViewRecord","WorkbenchExtensionViewBody","WorkbenchExtensionStatusRecord","WorkbenchExtensionStatusRef","WorkbenchExtensionHarnessRecord","NonNullable","dockedWorkbenchRegions","z","extensionFileIconThemeRecordSchema","extensionThemeRecordSchema","extensionTranslationRecordSchema","extensionArtifactMountSchema","extensionHookRecordSchema","extensionMiddlewareRecordSchema","extensionScheduleRecordSchema","extensionHostCompatibilitySchema","workbenchExtensionMetadataSchema","extensionViewLikeSchema","object","id","string","extensionId","WorkbenchExtensionMetadata","WorkbenchExtensionViewRecord","checkWorkbenchMetadataSchema","pick","extensions","commands","menuContributions","commandPaletteContributions","modes","pages","views","viewMenus","placements","resourceKinds","resourceHierarchyProviders","navigationItems","navigationTrees","statusBarItems","statuses","activityItems","settingsSections","settingsPanels","commandPaletteResources","keybindings","settingsDefinitions","diagnostics","extensionsCheckResponseSchema","extend","extensionsRoot","extensionsRootExists","boolean","errorCount","number","int","nonnegative","warningCount","middlewares","array","hooks","schedules","artifactMounts","themes","fileIconThemes","templates","skills","hostCompatibility","listExtensionCommandsResponseSchema","shape","translations","optional","listExtensionAppearanceResponseSchema","ExtensionsCheckResponse","infer","ListExtensionCommandsResponse","ListExtensionAppearanceResponse","Localizable","ViewFilterGroup","ViewSort","CommandRef","RendererCallback","JsonValue","Struct","RendererContributionBase","RendererContext","ResourceRef","ViewToolbarAction","DataTableRendererResourceRef","DataTableRendererSettings","grouping","rowNumbers","wrapRows","showStats","hiddenColumns","columnOrder","DEFAULT_DATA_TABLE_SETTINGS","DataTableRendererSavedView","id","title","settings","Partial","filter","sorts","DataTableRendererQueryParams","renderer","DataTableRendererThemeColor","light","dark","foreground","DataTableRendererColumnStat","type","bins","limit","DataTableRendererColumnRenderer","stops","Array","value","color","categories","DataTableRendererColumn","label","groupable","filterable","description","icon","hidden","stat","DataTableRendererRow","values","Record","resource","DataTableRendererQueryResult","rows","columns","DataTableRendererRowAction","destructive","command","TParams","DataTableRendererSelectionAction","DataTableRendererRowActivationHandler","row","DataTableRendererContribution","toolbarActions","query","selectionMode","selectionActions","rowActions","onRowActivate","initialPageSize","pageSizeOptions","defaultSettings","defaultFilter","defaultSorts","defaultViews","defaultActiveViewId","Localizable","DataTableRendererSettings","KanbanRendererViewSettings","ViewFilterGroup","ViewSort","DEFAULT_DATA_TABLE_SETTINGS","EMPTY_VIEW_FILTER","KanbanViewSettings","Omit","DEFAULT_KANBAN_VIEW_SETTINGS","viewMode","columnGrouping","rowGrouping","displayProperties","DeclaredView","id","title","settings","Partial","TSettings","filter","sorts","isDefault","DeclaredViews","defaultSettings","defaultFilter","defaultSorts","defaultViews","builtInViews","base","record","length","views","builtIn","map","view","kanbanBuiltInViews","attributes","type","kind","statuses","field","dataTableBuiltInViews","z","jsonObjectSchema","enableInstalledExtensionRequestSchema","object","displayName","string","extensionId","manifest","name","sourceHash","nullable","optional","sourceKind","enum","sourcePath","sourceRef","version","enableInstalledExtensionResponseSchema","enabled","literal","installName","installedExtensionId","instanceId","projectId","projectExtensionInstanceSchema","id","description","scope","status","lastLoadedAt","lastError","boolean","config","record","unknown","canUpgrade","updateAvailable","marketplaceExtensionSchema","installed","origin","kind","url","path","ref","publisher","listProjectExtensionsResponseSchema","extensions","array","marketplace","setProjectExtensionEnabledRequestSchema","setExtensionAutomationEnabledRequestSchema","upgradeProjectExtensionResponseSchema","changed","extension","installMarketplaceExtensionResponseSchema","addLocalExtensionFolderRequestSchema","min","files","preprocess","value","Array","isArray","instanceof","File","meta","type","format","addLocalExtensionFolderResponseSchema","setupProjectExtensionResponseSchema","installedSkills","skillKey","installedAgents","EnableInstalledExtensionRequest","infer","EnableInstalledExtensionResponse","ProjectExtensionInstance","MarketplaceExtension","ListProjectExtensionsResponse","SetProjectExtensionEnabledRequest","SetExtensionAutomationEnabledRequest","UpgradeProjectExtensionResponse","InstallMarketplaceExtensionResponse","AddLocalExtensionFolderResponse","SetupProjectExtensionResponse","z","extensionsCheckResponseSchema","projectExtensionInstanceSchema","installNameSchema","string","min","refine","name","test","trim","length","installExtensionRequestSchema","object","source","discriminatedUnion","kind","literal","ref","optional","strict","path","development","boolean","installName","force","skipInstall","formBoolean","enum","transform","value","uploadExtensionRequestSchema","folderName","files","preprocess","Array","isArray","array","instanceof","File","meta","type","format","installedExtensionSourceSchema","check","manifest","record","unknown","metadata","id","displayName","version","description","enginesPstdio","sourceHash","targetPath","installExtensionResponseSchema","extension","extensionDiagnosticsResponseSchema","roots","scope","InstallExtensionRequest","infer","UploadExtensionRequest","InstallExtensionResponse","InstalledExtensionSource","ExtensionDiagnosticsResponse","z","extensionResourceRefSchema","jsonObjectSchema","automationRunStatusSchema","enum","issueAutomationTokenInputSchema","object","name","string","trim","min","max","projectId","principalId","uuid","optional","commandScopes","array","expiresInSeconds","number","int","positive","strict","automationTokenRecordSchema","id","tokenPrefix","expiresAt","lastUsedAt","nullable","revokedAt","createdAt","issueAutomationTokenResponseSchema","extend","token","listAutomationTokensResponseSchema","tokens","createAutomationRunInputSchema","commandId","input","workspaceId","params","resource","metadata","automationRunErrorSchema","code","message","retryable","boolean","automationRunSchema","status","startedAt","finishedAt","result","unknown","error","automationRunEventSchema","cursor","nonnegative","runId","type","payload","listAutomationRunEventsResponseSchema","events","AutomationRunStatus","infer","IssueAutomationTokenInput","AutomationTokenRecord","IssueAutomationTokenResponse","ListAutomationTokensResponse","CreateAutomationRunInput","AutomationRunError","AutomationRun","AutomationRunEvent","ListAutomationRunEventsResponse","z","viewFilterConditionSchema","viewFilterGroupSchema","viewSortsSchema","dataTableRendererSettingsSchema","kanbanViewSettingsSchema","boardFieldSchema","object","id","string","label","kind","enum","conditions","array","filterable","boolean","groupable","sortable","displayable","legacyValues","record","optional","options","value","boardSummarySchema","title","extensionId","nullable","fields","boardViewSettingsSchema","union","boardViewSchema","boardId","settings","filter","sorts","builtIn","boardViewsSchema","views","defaultViewId","boardViewUpdateSchema","trim","min","partial","strict","boardViewCreateSchema","extend","copyFrom","BoardSummary","infer","BoardField","BoardView","BoardViews","BoardViewSettings","BoardViewCreate","BoardViewUpdate","boardDefaultSyncRow","project_id","extension_instance_id","board_id","row","T","JSON","stringify","numericIdentifier","caretTerm","RegExp","parseExtensionApiDeclaration","declaration","minimums","split","map","term","exec","trim","every","minimum","undefined","supportsExtensionApiVersion","hostVersion","Bun","semver","satisfies","join","dockedWorkbenchRegions","ResourceKindDefinition","ContributionKind","hostRef","kind","Kind","id","extensionId","workbenchModes","project","sessions","settings","workbenchModeDefinitions","ref","regions","const","hostResourceKind","label","menuSlots","headerMenuSlots","placement","access","workbenchResourceKindDefinitions","session","workspace","workbenchResourceKinds","workbenchPages","start","workspaces","workbenchPageDefinitions","mode","path","primary","cardinality","resourceKinds","workbenchPanels","projectSession","workbenchPanelDefinitions","workbenchSlots","projectSettings","extensionSettings","statusBarLeading","statusBarTrailing","dockedWorkbenchRegions","workbenchPages","CommandRef","EventRef","Struct","ExternalRefInput","extensionId","id","ExtensionOwner","publisher","name","CommandRefFactory","input","TParams","TResult","forExtension","owner","createCommandRef","kind","commandRef","Object","assign","eventRef","TPayload","Struct","SlotOptions","SlotRef","UiSlotKind","defineSlot","id","options","TKind","TContext","kind","label","description","metadata","workbenchResourceKinds","eventRef","defineSlot","Struct","ResourceAnchor","ExtensionWorkspace","hostEventRef","id","TPayload","extensionId","resourceMenuSlotRef","resourceKind","kind","WorkspaceType","WorkspaceProvisionPayload","projectId","workspaceId","workspace","workspaceDir","projectDir","providerId","SessionLifecyclePayload","sessionId","sessionStatus","originalSessionId","branch","anchors","WorktreeRemovedPayload","repoPath","worktreePath","CommitPayload","commitSha","RebasePayload","MergePayload","ConflictPayload","operation","projectSlots","sidenav","headerPrimary","project","headerOverflow","settingsPanels","sessionSlots","session","workspaceSlots","projectEvents","opened","viewDataEvents","boardViewsChanged","resourceAnchorsChanged","sessionsChanged","workspacesChanged","repositoriesChanged","sessionEvents","started","resumed","awaitingInput","succeeded","failed","completed","workspaceEvents","created","provision","ready","archived","deleted","worktreeEvents","removed","gitEvents","committed","rebased","merged","conflicted","TerminalSessionOperation","TerminalSessionResult","CreateNotificationInput","Notification","NotificationStatus","CommandOutcome","ExtensionBlobRef","JsonObject","JsonValue","NavigationTarget","PageLocation","PageParamValue","ResourceRef","WEBVIEW_HOST_CAPABILITY_VERSION","WEBVIEW_DECLARABLE_CAPABILITIES","const","WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES","ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES","WEBVIEW_HOST_CAPABILITIES","filter","capability","WebviewHostCapability","WebviewDeclarableCapability","WebviewScopedDeclarableCapability","WebviewCapabilityDeclaration","WebviewCommandsExecuteParams","commandId","params","workspaceId","resource","metadata","WebviewCommandsStreamParams","operation","streamId","bytes","WebviewCommandStreamEvent","type","data","outcome","WebviewNavigationOpenParams","target","WebviewNotificationShowParams","level","title","message","WebviewNotificationActionParams","Omit","WebviewNotificationResolveParams","id","dedupeKey","status","Extract","WebviewNotificationDismissParams","Pick","WebviewPreferencesGetParams","name","scope","scopeId","WebviewPreferencesSetParams","value","Record","WebviewPageParamsUpdateParams","Readonly","WebviewExtensionSettingKeyParams","key","WebviewExtensionSettingSetParams","WebviewFileScope","WebviewFilesUploadParams","Uint8Array","ArrayBuffer","mimeType","WebviewFilesListParams","WebviewFilesDeleteParams","WebviewArtifactsReadParams","op","mount","prefix","path","WebviewArtifactFile","size","mediaType","WebviewKeyboardEventParams","code","ctrlKey","metaKey","altKey","shiftKey","repeat","WebviewHostCapabilityParams","WebviewHostCapabilityResults","accepted","location","resolved","notifications","files","WebviewHostCapabilityResult","Capability","Params","Exclude","WEBVIEW_DECLARABLE_CAPABILITIES","WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES","ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES","WEBVIEW_HOST_CAPABILITIES","z","fileRecordSchema","object","id","string","project_id","file_name","file_kind","storage_path","mime_type","nullable","size_bytes","number","hash","created_at","updated_at","FileRecord","infer","z","HarnessApprovalChannel","HarnessEventSink","HarnessParams","HarnessQuestionChannel","HarnessSession","HarnessWorkspaceContext","harnessCommandSchema","object","name","string","description","argumentHelp","optional","composer","label","modeId","reservedArguments","array","disabledReason","harnessModeActionSchema","id","icon","argument","value","harnessModeSchema","state","indicator","tone","enum","tagText","closeActionId","confirmation","title","actionId","cancelLabel","model","actions","harnessCommandStateSchema","commands","modes","slashCommands","boolean","harnessOperationSchema","discriminatedUnion","kind","literal","text","min","strict","HarnessCommandState","infer","HarnessOperation","HarnessCommandContext","sessionId","agentSessionId","cwd","workspace","params","HarnessCommandDiscoveryContext","Omit","draftHarnessCommandInputSchema","project_id","agent","workspace_id","record","union","DraftHarnessCommandInput","harnessOperationResponseSchema","status","message","HarnessOperationResponse","HarnessOperationResult","session","PreparedHarnessOperation","execution","invoke","input","events","approvals","questions","signal","AbortSignal","Promise","z","serializableJsonObjectSchema","initialWorkspaceSchema","object","provider_id","string","min","params","default","extensionSetupWarningSchema","code","literal","extension","message","projectSchema","id","name","shorthand","default_agent_id","nullable","default_agent_model","startup_script","created_at","updated_at","deleted_at","extension_warnings","array","optional","createProjectInputSchema","trim","initial_workspace","agents","updateProjectInputSchema","refine","value","Object","keys","length","Project","infer","ExtensionSetupWarning","CreateProjectInput","UpdateProjectInput","z","harnessParamValueSchema","union","string","boolean","harnessParamsInputSchema","record","sessionAttachmentRefSchema","object","file_id","min","z","harnessParamsInputSchema","sessionAttachmentRefSchema","queuedFollowUpSchema","object","queuePosition","number","int","positive","revision","string","min","prompt","steeringUnavailableReason","nullable","optional","steeringDelivery","id","runStartedAt","model","params","attachments","array","updateQueuedFollowUpInputSchema","trim","expectedRevision","combineQueuedFollowUpsInputSchema","sourcePosition","sourceRevision","targetRevision","queuedFollowUpUpdateResponseSchema","ok","literal","request","pendingQueuedFollowUpsResponseSchema","requests","activeRunStartedAt","steeringAvailable","boolean","QueuedFollowUpRequest","infer","UpdateQueuedFollowUpInput","CombineQueuedFollowUpsInput","QueuedFollowUpUpdateResponse","PendingQueuedFollowUpsResponse","steerQueuedFollowUpInputSchema","expectedRunStartedAt","queuedSteeringResultSchema","discriminatedUnion","status","deliveryId","reason","enum","message","SteerQueuedFollowUpInput","QueuedSteeringResult","z","extensionResourceRefSchema","resourceLinkRefSchema","extend","type","string","min","id","projectId","optional","extensionId","resourceAnchorSchema","role","enum","addResourceAnchorsSchema","object","resource","anchors","array","max","removeResourceAnchorsSchema","refs","resourceAnchorQuerySchema","direction","cursor","limit","number","int","resourceAnchorPageSchema","items","source","target","nextCursor","supportedSessionAttachmentMimeTypes","const","sessionAttachmentMimeTypesByExtension","c","cc","cpp","cs","css","csv","cxx","go","h","hpp","html","java","js","jsx","json","jsonc","kt","kts","lua","markdown","md","mjs","pdf","php","png","py","rb","rs","sh","sql","svg","swift","toml","ts","tsx","txt","vue","xml","xlsx","yaml","yml","supportedSessionAttachmentExtensions","Object","keys","supportedSessionAttachmentAccept","map","extension","join","z","SessionMessageRole","TextPart","type","text","ReasoningPart","ToolPartActionType","ToolPartStatus","ToolPart","tool","callId","actionType","status","state","input","output","errorText","metadata","StepStartPart","snapshot","StepFinishPart","reason","cost","tokens","PatchPart","hash","files","FilePart","fileId","mediaType","filename","size","url","LoadingPart","ErrorPart","errorType","message","TokenUsagePart","inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","SessionMessagePart","SessionMessage","id","role","parts","index","createdAt","modelId","providerId","reasoning","cache","read","write","textPartSchema","object","literal","string","reasoningPartSchema","toolPartActionTypeSchema","enum","toolPartStatusSchema","toolPartSchema","optional","unknown","stepStartPartSchema","stepFinishPartSchema","number","patchPartSchema","filePartSchema","loadingPartSchema","errorPartSchema","tokenUsagePartSchema","sessionMessagePartSchema","union","sessionMessageRoleSchema","sessionMessageSchema","array","z","listActivityInputSchema","listActivityResponseSchema","extensionResourceRefSchema","harnessOperationResponseSchema","harnessOperationSchema","pendingQueuedFollowUpsResponseSchema","sessionMessageSchema","sessionStatusSchema","enum","harnessParamsInputSchema","harnessParamValueSchema","sessionAttachmentRefSchema","sessionUsageSchema","object","input_tokens","number","output_tokens","cache_read_tokens","cache_write_tokens","sessionSchema","id","string","project_id","nullable","title","status","archived","boolean","last_request_started","last_request_ended","agent","last_selected_model","agent_session_id","session_file_id","original_session_id","cwd","params_json","usage_json","optional","workspace_id","anchors_json","array","created_at","updated_at","createSessionResponseSchema","extend","operation_result","CreateSessionResponse","infer","sessionAttachmentSchema","file_id","name","mime_type","size_bytes","hash","url","createSessionInputSchema","min","prompt","operation","anchors","attachments","model","params","questionResponseSchema","answers","callId","followUpInputSchema","question_response","summary_from_session_id","summary_format","default","summary_role","approvalInputSchema","decision","followUpDecisionSchema","union","literal","queue_position","int","followUpResponseSchema","follow_up","sessionQueuedMessagesResponseSchema","messages","queue","SessionQueuedMessagesResponse","sessionConversationSourcesSchema","checkpoint","native","checkpointError","nativeError","SessionConversationSources","sessionConversationResponseSchema","session","resolveSessionIdInputSchema","resolveSessionIdResponseSchema","session_id","listSessionActivityInputSchema","listSessionActivityResponseSchema","SessionStatus","Session","ResolveSessionIdInput","ResolveSessionIdResponse","CreateSessionInput","FollowUpInput","HarnessParamsInput","SessionAttachment","SessionAttachmentRef","ApprovalInput","SessionConversationResponse","ListSessionActivityInput","ListSessionActivityResponse","FollowUpDecision","FollowUpResponse","z","settingsSchema","object","notifications_enabled","boolean","machine_tokens_enabled","max_concurrent_sessions","number","int","min","nullable","updateSettingsInputSchema","optional","strict","refine","value","Object","keys","length","message","Settings","infer","UpdateSettingsInput","z","packageAssetDescriptorSchema","skillFileSchema","object","path","string","content","encoding","literal","skillSourceKindSchema","enum","skillAgentInstallationSchema","agent_id","agent_name","installed_version","nullable","skillSchema","id","project_id","name","title","description","source_kind","files","array","editable","boolean","extension_instance_id","optional","extension_id","installed_extension_id","install_name","key","source","enabled","created_at","updated_at","deleted_at","skillWithContentSchema","extend","installed_agents","agent_installations","updateSkillInputSchema","min","Skill","infer","SkillAgentInstallation","SkillWithContent","SkillFile","SkillSourceKind","UpdateSkillInput","z","listActivityInputSchema","listActivityResponseSchema","WorkspaceCapabilities","WorkspaceProviderRef","WorkspaceProviderState","ResourceRole","extensionResourceRefSchema","extensionParamObjectSchema","jsonObjectSchema","localizableStringSchema","workspaceProviderRefShape","version","number","int","positive","data","Record","ZodType","workspaceProviderRefSchema","object","workspaceProviderStates","const","workspaceProviderStateSchema","enum","workspaceExecutionKindSchema","workspaceCapabilitiesSchema","files","diff","boolean","merge","rebase","archive","delete","workspaceProviderErrorSchema","code","string","message","retryable","occurred_at","workspaceAnchorSchema","extend","role","optional","workspaceSchema","id","project_id","name","branch","nullable","root_path","provider_id","provider_params_json","provider_ref_json","provider_state","execution_kind","provider_operation_id","provider_operation_kind","provider_error_json","provider_capabilities_json","display_path","is_default","archived","initializing","setup_error","workspace_shorthand","startup_log_file_id","anchors_json","array","created_at","updated_at","deleted_at","workspaceListItemSchema","createWorkspaceInputSchema","min","params","anchors","shorthand_base","trim","renameWorkspaceInputSchema","max","removeWorktreeResponseSchema","removed","workspaceFileEntrySchema","path","type","size","nonnegative","modified_at","workspaceFilesResponseSchema","workspace_id","entries","truncated","workspaceFileContentSchema","file_name","mime_type","encoding","content","data_url","editable","writeWorkspaceFileInputSchema","moveWorkspaceEntryInputSchema","destination_path","listWorkspaceFilesInputSchema","query","limit","listWorkspaceActivityInputSchema","listWorkspaceActivityResponseSchema","Workspace","infer","PublicWorkspaceCapabilities","WorkspaceExecutionKind","WorkspaceProviderError","PublicWorkspaceProviderRef","PublicWorkspaceProviderState","WorkspaceListItem","CreateWorkspaceInput","RenameWorkspaceInput","RemoveWorktreeResponse","WorkspaceFileEntry","WorkspaceFilesResponse","WorkspaceFileContent","WriteWorkspaceFileInput","MoveWorkspaceEntryInput","ListWorkspaceFilesInput","ListWorkspaceActivityInput","ListWorkspaceActivityResponse","workspaceProviderDescriptorSchema","label","icon","description","WorkspaceProviderDescriptor","ControlValueMap","mergeControlDraft","draft","saved","changed","Record","values","id","Object","keys","createControlSaveQueue","previous","Promise","resolve","save","T","current","then","catch","undefined","Text","ControlValue","HarnessControl","HarnessControlDeclaration","CommandParamFieldRenderer","HarnessControlProps","param","value","readOnly","renderParamField","onChange","props","$","_c","t0","entry","key","id","label","name","description","type","required","JSON","stringify","disabled","Boolean","next","parse","field","t1","Symbol","for","_c","Box","Button","Flex","Stack","Text","ControlValueMap","resourceKey","ScrollArea","InputGroup","Param","ParamEditor","ParamValue","controlValueSchema","useEffect","useRef","useState","getWorkbenchRenderers","RegisteredControlsRendererContribution","rendererReadKey","WorkbenchCore","WorkbenchPanelInstance","runUserAction","CommandParamFieldRenderer","RendererReadNotice","usePageParams","useRendererRead","mergeControlDraft","createControlSaveQueue","HarnessControl","WorkbenchControlsViewProps","workbench","contribution","placement","renderParamField","ControlsViewState","params","groups","values","readOnly","loading","changed","Record","error","initialState","WorkbenchControlsView","props","$","_c","t0","id","resource","JSON","stringify","t1","WorkbenchControlsForm","pageParams","state","setState","pending","setPending","saves","changes","read","ownerKey","queryKey","load","signal","executeQuery","subscribe","refresh","subscription","events","onDidRefreshControlsRenderer","event","controlsRendererId","dispose","value","result","previous","defaultValues","Boolean","updateValue","apply","showFooter","reset","handleChange","input","parse","revision","current","controlId","retry","prev","undefined","submit","Error","message","String","ControlsContentProps","onChange","ControlsContent","param","type","name","defaultValue","hostParam","Symbol","for","length","map","t2","t3","group","emptyTitle","emptyDescription","t4","_c","createElement","getWorkbenchRenderers","WorkbenchCore","CommandParamFieldRenderer","WorkbenchControlsView","installed","WeakSet","installWorkbenchControlsRenderer","workbench","options","renderParamField","has","add","setControlsRendererImplementation","scope","instance","controlsRendererId","contribution","getControlsRenderer","placement","installed","createElement","getWorkbenchRenderers","WorkbenchCore","CommandParamFieldRenderer","WorkbenchDataTableView","installed","WeakSet","installWorkbenchDataTableRenderer","workbench","options","renderParamField","has","add","setDataTableRendererImplementation","scope","instance","dataTableRendererId","contribution","getDataTableRenderer","placement","installed","FileRendererContent","FileEditController","LoadedFile","editorRevision","loadKey","FILE_CONTENT_CACHE_LIMIT","fileContentCache","Map","readCachedFileContent","get","clearCachedResourceContent","resourceKey","key","keys","startsWith","JSON","stringify","delete","storeCachedFileContent","content","set","size","oldest","next","value","undefined","nextLoadedRevision","previous","shown","shownContent","dataUrl","acceptFileRendererLoad","controller","accepted","acceptLoaded","revision","resourceKey","createElement","lazy","Suspense","getWorkbenchRenderers","WorkbenchCore","clearCachedResourceContent","loadWorkbenchFileRendererView","then","module","default","WorkbenchFileRendererView","installed","WeakSet","installWorkbenchFileRenderer","workbench","has","add","resources","onWillRemove","resource","setFileRendererImplementation","scope","instance","fileRendererId","contribution","getFileRenderer","fallback","placement","installed","ComponentType","ReactNode","AttributeDescriptor","AttributesSource","BoardColumnConfig","KanbanRendererContribution","KanbanRendererRow","RegisteredKanbanRendererContribution","ResourceContextAction","ReactColumnIcon","size","ReactAttributeDescriptor","ReactAttributesSource","ReactBoardColumnConfig","ReactResourceContextAction","ReactKanbanRendererContribution","TRow","bindReactKanbanPresentation","contribution","WorkbenchPanelInstance","resolveProjectScope","placement","storageScope","metadata","resource","projectId","favoriteScope","Array","isArray","scope","undefined","resolveKanbanRendererStorageKey","kanbanRendererId","baseKey","instanceId","projectScope","Box","Skeleton","Stack","ResourceContextAction","ScrollArea","AttributeDescriptor","AttributesSource","applyKanbanMove","isAttributesSource","KanbanRenderer","KanbanRendererRow","useKanbanRendererStore","ReactNode","useSyncExternalStore","RegisteredKanbanRendererContribution","ResourceRef","WorkbenchCore","WorkbenchPanelInstance","getWorkbenchRenderers","rendererReadKey","reportUserActionError","runUserAction","CommandParamFieldRenderer","useWorkbenchResourceActionResolver","RendererReadNotice","usePageParams","useRendererRead","ViewToolbarActions","bindReactKanbanPresentation","resolveKanbanRendererStorageKey","WorkbenchKanbanViewProps","workbench","renderParamField","contribution","placement","WorkbenchKanbanViewFrameProps","children","usesInternalScroll","kanbanViewScrollContentProps","display","flexDirection","minH","const","WorkbenchKanbanViewFrame","props","$","_c","t0","undefined","t1","t2","noopSubscribe","isKanbanRowResource","resource","Boolean","type","id","useResolvedContributionAttributes","attributes","source","fallback","subscribe","getSnapshot","mergeKanbanViewRowActions","resourceActions","contributionActions","resourceActionKeys","Set","map","action","key","resourceCommandIds","flatMap","commandId","filter","has","WorkbenchKanbanView","pageParams","resolveResourceActions","storageKey","storageScope","provider","viewsProvider","viewsSource","_temp","_temp2","initialState","settings","defaultSettings","defaultFilter","sorts","defaultSorts","_temp3","_temp4","_temp5","read","ownerKey","queryKey","refreshKey","JSON","stringify","load","signal","executeQuery","refresh","subscription","events","onDidRefreshKanbanRenderer","event","kanbanRendererId","dispose","value","rows","handleOpenRow","row","onRowActivate","getRowContextMenuActions","row_0","onClick","label","error","retry","contentPlaceholder","readNotice","t3","viewMode","t4","Symbol","for","t5","T0","T1","resourceKind","resources","getKind","t6","t7","action_0","t8","onMove","move","mutate","rows_0","t9","onColumnAction","t10","args","t11","toolbarActions","t12","createRow","defaultActiveViewId","defaultViews","emptyDescription","emptyTitle","getBoardColumnConfig","hideToolbar","onAttributeChange","onCreateRow","onReorder","t13","state","state_0","state_1","_c","_temp","_temp2","_temp3","_temp4","_temp5","createElement","getWorkbenchRenderers","WorkbenchCore","CommandParamFieldRenderer","WorkbenchKanbanView","installed","WeakSet","installWorkbenchKanbanRenderer","workbench","options","renderParamField","has","add","setKanbanRendererImplementation","scope","instance","kanbanRendererId","contribution","getKanbanRenderer","placement","installed","ResourceContextAction","createElement","getWorkbenchRenderers","rendererReadKey","WorkbenchCore","CommandParamFieldRenderer","WorkbenchTreeView","InstallWorkbenchTreeRendererInput","renderParamField","onSidenavContextActionsChange","actions","WorkbenchTreeRendererInstallation","installed","WeakMap","isSidenavPlacement","workbench","instanceId","layout","getLayout","regions","sidenav","widgets","some","placement","widgetId","viewContextId","panelId","viewId","config","getPanel","candidate","installWorkbenchTreeRenderer","input","current","get","installation","set","setTreeRendererImplementation","scope","instance","treeId","treeViewId","readOwnerKey","resource","undefined","FileIconThemePreferenceOption","WorkbenchCore","useWorkbenchStore","useWorkbenchFileIconThemePreferences","workbench","fileIconThemes","store","_temp","state","themes","_temp","getActiveWorkbenchLocationPanel","getWorkbenchModePanelForRegion","isWorkbenchModePanelAvailable","isWorkbenchPanelPlacementVisible","matchesWorkbenchModeEligibility","WorkbenchCore","WorkbenchRegion","useModeChrome","useWorkbenchActiveModeId","useWorkbenchLocationResource","useWorkbenchStore","WorkbenchRegionContentOptions","locationScoped","useWorkbenchRegionContent","workbench","region","t0","$","_c","t1","undefined","options","chrome","resource","modeId","t2","modes","modePanel","getMode","panelAvailable","t3","state","placeholders","layout","regions","widgets","length","some","placement","widget","contributionId","location","store","_c","Box","WorkbenchCore","WorkbenchRegion","WorkbenchHeaderBorderProps","workbench","region","WorkbenchHeaderBorder","props","$","_c","layout","getRegionHeaderBorderBottom","t0","Symbol","for","_c","WorkbenchCore","useWorkbenchPanelMenusPresent","useWorkbenchPanelHeaderVisible","useWorkbenchStore","useWorkbenchRegionContent","resolvePanelCollapsible","useSecondaryPanelView","workbench","$","_c","t0","Symbol","for","locationScoped","hasContent","hasHeader","hasPanelHeader","hasMenus","t1","collapsible","layout","store","open","_temp","t2","t3","t4","shell","collapsed","setRegionOpen","t5","has","onCollapsedChange","useWorkbenchMainPanels","hasMainHeader","secondaryPanel","state","regions","secondary","visible","_c","_temp","Box","Header","WorkbenchCore","WorkbenchFocusRegion","WorkbenchPanelMenuLayout","WorkbenchPanelMenuOpeners","WorkbenchRegion","useWorkbenchPanelHeaderVisible","useWorkbenchRegionTabsVisible","WorkbenchRegionTabs","WorkbenchTabDropTarget","useWorkbenchModeRegionSettings","workbenchBackgrounds","WorkbenchHeaderBorder","WorkbenchSecondaryPanelProps","workbench","hasSecondaryHeader","WorkbenchSecondaryPanel","props","$","_c","hasPanelHeader","settings","hasTabs","visible","showHeader","t0","t1","t2","t3","t4","t5","t6","t7","panel","t8","Symbol","for","t9","t10","t11","_c","Box","Grid","Header","PANEL_HEADER_CONTROL_SIZE","ResizableSplitLayout","headerTrailingMenuPath","WorkbenchCore","WorkbenchRegionSize","WorkbenchFocusRegion","WorkbenchHeaderActions","WorkbenchPanelMenuLayout","WorkbenchPanelMenuOpeners","WorkbenchRegion","useWorkbenchPanelHeaderVisible","useWorkbenchRegionTabsVisible","WorkbenchRegionTabs","WorkbenchTabDropTarget","useWorkbenchModeRegionSettings","useWorkbenchStore","workbenchBackgrounds","WorkbenchHeaderBorder","useWorkbenchMainPanels","WorkbenchSecondaryPanel","WorkbenchBodyProps","workbench","SECONDARY_PANEL_SIZE","defaultPx","minPx","maxPx","SECONDARY_PANEL_CONTENT_MIN_SIZE_PX","mainHeaderTrailingMenuPath","resolveRegionSize","regionSize","persistedSize","fallback","Required","MainHeaderBarProps","hasMainHeader","MainHeaderBar","props","$","_c","hasMainContentTabs","hasPanelHeader","settings","visible","showHeader","t0","t1","t2","t3","t4","t5","t6","t7","t8","main","WorkbenchBody","pageId","pages","store","_temp","modeSettings","panels","secondaryPanel","persistedSecondarySize","layout","_temp2","size","getRegionSize","secondaryPanelSize","mainRegion","mainPanelWithMenus","Symbol","for","mainContent","t9","hasHeader","t10","has","collapsed","t11","height","setRegionSize","t12","collapsible","onCollapsedChange","state","activePageId","state_0","regions","secondary","_c","_temp","_temp2","Box","DndContext","DragOverEvent","DragOverlay","MouseSensor","pointerWithin","TouchSensor","useDraggable","useDroppable","useSensor","useSensors","DropIndicator","useState","WorkbenchCore","WorkbenchStatusBarSlot","WorkbenchWidgetPlacement","useRetainedViewPlacements","WorkbenchWidgetHost","useWorkbenchActiveModeId","useWorkbenchStore","StatusDrop","id","edge","reorderInstructions","resolveDrop","event","over","active","undefined","rect","current","translated","String","left","width","WorkbenchStatusBarItemProps","workbench","placement","ids","activeId","drop","WorkbenchStatusBarItem","props","$","_c","widgetId","order","indexOf","sortable","length","t0","t1","disabled","drag","t2","t3","target","title","t4","node","setNodeRef","t5","t6","attributes","t7","t8","t9","t10","t11","t12","t13","altKey","includes","key","preventDefault","stopPropagation","neighbor","statusBar","reorderItem","beforeItemId","afterItemId","t14","t15","t16","right","t17","listeners","WorkbenchStatusBarItems","slot","store","_temp","activeModeId","items","modes","getActiveModeId","listVisibleItems","map","_temp2","views","item_0","item","contributionId","viewId","getView","closable","placements","setActiveId","setDrop","Symbol","for","activationConstraint","distance","sensors","finish","T0","screenReaderInstructions","draggable","event_0","event_1","event_2","find","placement_0","state","_c","_temp","_temp2","Box","ResourceContextAction","ResourceContextMenu","WorkbenchCore","WorkbenchFocusRegion","ModeChromeView","useModeChrome","WorkbenchRegion","workbenchBackgrounds","WorkbenchStatusBarItems","WorkbenchSidenavProps","workbench","contextActions","WorkbenchSidenav","props","$","_c","t0","t1","sidenav","t2","WorkbenchRegionPanelProps","visible","WORKBENCH_STATUS_BAR_HEIGHT","WorkbenchActivityBar","WorkbenchStatusBar","chrome","undefined","t3","t4","t5","t6","t7","_c","Box","ResizableSplitLayout","ReactNode","createPortal","WorkbenchCore","WorkbenchRegion","WorkbenchRegionTabs","useWorkbenchModeRegionSettings","useWorkbenchStore","WorkbenchAttachedSidePanel","ATTACHED_PANEL_DEFAULT_SIZE_PX","ATTACHED_PANEL_MIN_SIZE_PX","WorkbenchSidePanelRegionPortalProps","workbench","sidePanelHost","HTMLDivElement","WorkbenchSidePanelRegionPortal","props","$","_c","t0","t1","WorkbenchSidePanelRegionHeaderProps","hasSideHeader","WorkbenchSidePanelRegionHeader","t2","WorkbenchAttachedSidePanelLayoutProps","attached","contentPanel","contentMinSizePx","header","onAttachedSlotChange","slot","onCollapse","WorkbenchAttachedSidePanelLayout","persistedSize","layout","store","_temp","modeSettings","size","getRegionSize","collapsible","getRegionCollapsible","t3","t4","defaultPx","t5","minPx","t6","maxPx","t7","width","setRegionSize","t8","collapsed","t9","state","regions","side","_c","_temp","Flex","ReactNode","useLayoutEffect","useRef","WorkbenchCore","WorkbenchAttachedSidePanelLayout","WorkbenchSidePanelBoundaryProps","workbench","showAttachedSidePanel","contentFrame","sideHeader","contentMinSizePx","onAttachedSlotChange","slot","HTMLDivElement","WorkbenchKeyboardFrameProps","children","interactivePointerTargetSelector","join","hasClosest","target","EventTarget","closest","selector","shouldFocusWorkbenchKeyboardFrame","currentTarget","focusWorkbenchKeyboardFrame","element","focus","preventScroll","WorkbenchKeyboardFrame","props","$","_c","ref","t0","t1","Symbol","for","current","t2","_temp","WorkbenchSidePanelBoundary","sidePanel","setMode","event","_c","_temp","Flex","ResizableSplitLayout","ResourceContextAction","ThemePreferenceStorage","Toaster","ReactNode","useLayoutEffect","useRef","useState","WorkbenchCore","WorkbenchShellOpenRegion","WorkbenchCommandPalette","CommandParamFieldRenderer","WorkbenchNavChrome","WorkbenchNavRegionControl","WorkbenchKeybindingDispatcher","WorkbenchNotificationHost","useWorkbenchPanelMenusPresent","useModeChrome","movePanelHost","WorkbenchPanelViewHosts","useWorkbenchPanelHeaderVisible","WorkbenchTabDragProvider","installWorkbenchControlsRenderer","installWorkbenchDataTableRenderer","installWorkbenchFileRenderer","installWorkbenchKanbanRenderer","installWorkbenchTreeRenderer","useWorkbenchStore","WorkbenchFloatingSidePanel","useWorkbenchFileIconThemePreferences","useWorkbenchThemePreferences","workbenchBackgrounds","WorkbenchThemeProvider","WorkbenchThemeScope","WorkbenchOverlayLayer","useWorkbenchRegionContent","WorkbenchBody","resolvePanelCollapsible","WORKBENCH_STATUS_BAR_HEIGHT","WorkbenchActivityBar","WorkbenchSidenav","WorkbenchStatusBar","WorkbenchSidePanelBoundary","WorkbenchSidePanelRegionHeader","WorkbenchSidePanelRegionPortal","WorkbenchProps","workbench","titleBar","renderParamField","sidePanelBubbleIcon","onOpenSidePanel","themeStorage","SIDENAV_DEFAULT_SIZE_PX","SIDENAV_MIN_SIZE_PX","CONTENT_MIN_SIZE_PX","resolveSidenavSize","persistedSize","regionSize","layout","getRegionSize","defaultPx","minPx","maxPx","createSidePanelHost","document","host","createElement","style","display","dataset","workbenchSidePanelHost","useWorkbenchLayoutFlags","$","_c","statusChrome","statusBarItems","statusBar","store","_temp","context","_temp2","activeModeId","modes","_temp3","t0","t1","t2","t3","t4","Symbol","for","locationScoped","t5","t6","t7","t8","t9","t10","t11","undefined","getActiveModeId","Object","keys","length","listVisibleItems","t12","hasNavWidgets","hasActivityBarWidgets","hasSidenavWidgets","hasSecondaryHeaderWidgets","hasSecondaryWidgets","hasSecondaryMenus","hasSideHeaderWidgets","hasSideWidgets","hasSideMenus","hasStatusWidgets","WorkbenchRegionControlsInput","showSidenav","sidenavOpen","showSecondaryPanel","secondaryPanelOpen","hasSidePanel","sidePanelMode","setPanelOpen","region","open","createWorkbenchRegionControls","input","controls","push","id","label","icon","onToggle","WorkbenchContent","props","sidenavContextActions","setSidenavContextActions","onSidenavContextActionsChange","attachedSidePanelSlot","setAttachedSidePanelSlot","HTMLDivElement","floatingSidePanelSlot","setFloatingSidePanelSlot","sidePanelHostRef","current","paletteOpen","commandPalette","state","paletteInitialQuery","initialQuery","regions","sidenav","visible","secondary","hasSecondaryPanelHeader","hasSidePanelHeader","sidePanel","getMode","sidenavCollapsible","persistedSidenavSize","size","sidenavSize","showAttachedSidePanel","shell","setRegionOpen","regionControls","sideHeader","activeSidePanelSlot","HTMLElement","parentElement","contentWithHeader","contentWithSidenav","width","setRegionSize","collapsed","contentFrame","main","close","Workbench","projectId","pages","_temp4","themePreferences","mode","_temp5","fileIconThemePreferences","defaultTheme","items","state_0","values","state_1","_c","_jsxs","useEffect","useRef","Disposable","WorkbenchCore","WorkbenchModuleContribution","WorkbenchModuleHostRegistration","disposable","WorkbenchModuleHostProps","workbench","modules","disposeWorkbenchModuleHostRegistrations","registrations","Map","registration","values","dispose","clear","syncWorkbenchModuleHostRegistrations","moduleIds","Set","map","module","id","has","delete","set","registerModule","WorkbenchModuleHost","props","$","_c","registeredWorkbench","t0","Symbol","for","t1","t2","current","t3","t4","_c","byContributionPriority","workbenchCommandPaletteMenuPath","getNavigationTreeNodeSource","headerTrailingMenuPath","getAnchorResource","getWorkbenchModePanelForRegion","isWorkbenchModePanelAvailable","workbenchRegionTabLeadingMenuPath","workbenchTopHeaderLeadingMenuPath","resourceContextMenuPath","workbenchTopHeaderTrailingMenuPath","toPanelInstance","standardResourceIcons","workbenchPanelRegions","getNavigationTargetKey","toPanelContribution","matchesWorkbenchPanelMenuOwner","getWorkbenchPanelForMenuRegion","rendererReadKey","getWorkbenchSelectionResourceKeys","runUserAction","matchesWorkbenchModeEligibility","workbenchBreadcrumbLocationMenuPath","getActiveWorkbenchSubPanel","matchesContextExpression","scopeWorkbenchResourceContextValues","reportUserActionError","isWorkbenchPanelPlacementVisible","settleReadBatch","getWorkbenchRenderers","getActiveWorkbenchLocationPanel","findPlacementByWidgetId","resolveResourcePreview","workbenchPanelMenuRegions","getKeybindingSteps","lucideIcons","Fragment$1","Terminal$1","resolvePageActivePlacement","page","selected","region","layout","id","entry","toPascalCase","value","part","resolveLucideIcon","pascalName","name","candidates","candidate","IconComponent","WorkbenchIcon","$","c","rest","t0","props","size","t1","optionIcons","option","t2","t3","Icon","humanize$1","spaced","isRecord$1","isFileUploadValue","isCommandFilesParamValue","ref","createCommandFilesParamValue","input","commandFilesParamValue","raw","item","multiple","stringifyEditableValue","toIdentifierPrefix","char","metadataString","metadata","key","resourceContextValue","resource","context","metadataValue","resourceKey","dedupeOptions","options","seen","hasCommandParameters","listCommandParamEntries","params","commandParamEntries","param","resolveCommandResourceParams","base","baseArgs","buildCommandParamInitialValues","values","isEmptyValue","parseJsonValue","normalizeValue","numberValue","normalizeCommandParamValues","normalized","mergeCommandParamArgs","schema","runPlacementAction","workbench","request","target","action","command","requestParams","commandIdForAction","placementMenuActions","snapshot","group","row","groupIndex","index","useWorkbenchStore","useStore","store","selector","readPlacementTab","placement","usePlacementTab","changes","_temp$40","state_0","setState","useState","refresh","subscription","useEffect","t4","projected","changed","t5","state","getSessionStatus","WorkbenchBreadcrumbIcon","status","SessionIndicator","Text","WorkbenchBreadcrumbTitle","title","HStack","buildWorkbenchBreadcrumbItems","items","actions","actionsForResource","WorkbenchBreadcrumbView","_temp$39","_temp2$25","_temp3$18","state_2","crumbs","item_0","T0","Breadcrumb","item_1","state_1","CommandOptionStatus","onRetry","Button","useWorkbenchCompositionPanels","chakraBackgrounds","vscodeColor","token","fallback","workbenchBackgrounds","workbenchRegionBackgrounds","workbenchCommandPaletteBackground","getWorkbenchRegionBackground","SEARCH_MODE_ID","COMMAND_MODE_ID","THEME_MODE_ID$1","workbenchPaletteModes","isThemePaletteView","view","getPaletteViewMode","getPaletteViewModes","getPaletteInitialActiveIndex","getPaletteInputIcon","Terminal","Search","getPalettePlaceholder","RESOURCE_QUERY_LIMIT","RESOURCE_QUERY_DEBOUNCE_MS","useWorkbenchCommandPaletteResourceEntries","refreshToken","_temp$38","entries","setEntries","onClose","open","query","cancelled","handle","groups","result","asText","asList","commandParamName","commandParamOptions","JSON_PARAM_TYPES","buildCommandParam","readCommandParamValue","CommandParamField","onChange","nextValue","next","refs","change","next_0","disabled","ParamEditorRow","valueRef","argumentsFor","source","descriptor","resolved","readOptions","createCommandOptionResolver","referencedValue","queryKey","disposed","controllers","listeners","requests","sources","publish","listener","clearInvalidSelection","offered","current","load","field","controller","version","requestKey","execute","error","errors","useCommandOptions","callbacks","useRef","resolver","args","signal","states","useSyncExternalStore","isFilled","CommandParamsDialog","setCurrent","CommandParamsForm","setValues","setError","submitting","setSubmitting","customFieldErrors","setCustomFieldErrors","close","setValue","executeOptionCommand","fieldErrors","setFieldErrors","run","invalid","key_0","error_0","preparedArgs","prepareArgs","nextArgs","submission","onRun","onRunError","caught_0","caught","isValid","Dialog","details","handleDialogAcceptShortcut","event","Stack","CloseButton","ScrollArea","entry_0","dynamic","fieldProps","value_0","current_0","update","current_1","error_1","custom","renderParamField","Box","AlertMessage","PaletteParamsDialog","_temp$37","confirmation","_temp2$24","CommandConfirmationDialog","label","args_0","t6","commandId","t7","Fragment","DeleteConfirmationModal","getPanelLabel","openPanelWidget","widget","active","widgetResource","createWorkbenchPanelWidgetPaletteEntries","panelsByRegion","panel","panelLabel","createResourceEntry","kind","icon","activate","createWorkbenchResourcePaletteEntries","THEME_MODE_ID","getThemeIconName","preference","getThemePreferenceLabel","themePreference","getThemePaletteEntryIndex","THEME_GROUP_LABELS","byModeThenLabel","a","b","createWorkbenchThemePreferencePaletteEntries","themePreferences","chosenThemePreference","setThemePreference","getCommandSearchText","createShortcutByAction","binding","getShortcut","PaletteShortcut","commandExecutionContext$1","executePaletteCommand","createEntry","record","shortcutByAction","onRequestParams","getRecordGroup","getRecordOrder","byCommandPaletteGroup","groupComparison","left","right","listCommandRecords","menuPath","createWorkbenchCommandPaletteEntries","WorkbenchCommandPalette","initialQuery","useThemePreference","_temp$36","_temp2$23","_temp3$17","_temp4$11","liveQuery","setLiveQuery","commandPaletteResourceEntries","compositionPanels","previewThemePreference","closePalette","exitPickerView","isThemeView","commandEntries","resourceEntries","themeEntries","panelWidgetEntries","themeInitialActiveIndex","initialActiveIndex","activeViewMode","activeViewModes","t8","t9","t10","t11","t12","t13","t14","t15","t16","mode_0","t17","themeEntry","ctx","t18","Palette","t19","t20","WorkbenchFocusRegion","boxProps","children","activeRegion","_temp$35","element","menuPathKey","path","resolveContextValues","listWorkbenchMenuItemsFromState","contextValues","listWorkbenchMenuItems","isKernelAction","isOverflowAction","withLeadingSeparator$1","enabled","first","resolveOverflowItems","regularItems","kernelItems","resolveWorkbenchHeaderActionGroups","resolveWorkbenchHeaderOverflowLabel","commandExecutionContext","WorkbenchInlineHeaderAction","onSelect","onClick","controlSize","IconButton","Tooltip","WorkbenchHeaderActions","commands","_temp$34","_temp2$22","itemsByPath","_temp3$16","_temp4$10","inlineItems","overflowItems","Menu","Portal","ListRow","useTanStackWorkbenchHotkeys","registrations","_temp$33","hotkeys","useHotkeys","registration","keyAliases","normalizeWorkbenchKeybindingStep","keybinding","trimmed","normalizeWorkbenchKeybinding","steps","createWorkbenchHotkeyRegistrations","allowedCommandIds","commandIds","WorkbenchKeybindingDispatcher","setRegistrations","subscriptions","unsubscribe","commandContextValues","isRegisteredCommandVisible","executeTreeAction","resolvedArgs","runTreeAction","onCommandError","resolveTreeActionCommand","isTreeActionVisible","isTreeActionEnabled","createMenuIcon","iconSrc","Image","createMenuEndContent","readOnly","disabledReason","external","withLeadingSeparator","isKernelMenuAction","createTreeMenuItemGroups","shortcuts","k","createTreeActionMenuItems","createTreeContextMenuItems","actionItems","visibleRegularItems","createTreeActionItems","toResourceContextAction","createWorkbenchResourceActions","createWorkbenchLocationActions","useWorkbenchResourceActionResolver","_temp$32","_temp2$21","_temp3$15","executeNotificationAction","WorkbenchNotificationHost","shownNotificationIds","showNotification","notification","toastAction","toastOptions","toaster","notification_0","useWorkbenchLocationResource","_temp$31","useWorkbenchActiveModeId","_temp2$20","retainViewPlacements","retained","previous","registeredViews","existing","unchanged","useRetainedViewPlacements","views","_temp$30","setPrevious","placements","WorkbenchWidgetFallback","Center","WorkbenchRenderedWidgetFrame","noopRefresh","toHostedPanel","WorkbenchWidgetHost","rendererId","renderer","instance","useModeChrome","mode","ModeChromeView","viewId","movePanelHost","slot","host","resolvePanelCollapsible","regions","getWorkbenchPanelMenuAttachment","panelWidth","menus","menu","attached","narrow","fits","sizes","total","PANEL_MENU_SIZE","panelLabels","resolveRegionSize$1","regionSize","getWorkbenchPanelMenuLabel","side","useWorkbenchPanelMenu","locationResource","modeId","panelAvailable","_temp$29","registeredWidgets","_temp2$19","currentRegionState","regionState","activeSubPanel","activeLocationPanel","contribution","placement_0","activePlacement","collapsible","panelStateKey","collapsed","useWorkbenchPanelMenus","width","useWorkbenchPanelWidth","attachment","_temp3$14","view_0","useWorkbenchPanelMenusPresent","setWidth","measure","observer","toTabKey","regionId","suppressesSidenavTabStrip","resolveTabIconName","resourceIcon","resourceKindIcon","resolveDisplayedActiveWidgetId","activeWidgetId","visiblePlacements","isWorkbenchPanelRegion","panelRegion","shouldShowRegionTabs","shouldShowPanelHeader","isPlacementEligibleForRegion","useWorkbenchRegionTabsState","hasPanelMenuOpeners","_temp$28","_temp2$18","_temp3$13","_temp4$9","layoutState","_temp5$9","visibilityStorageKey","storageKey","tabStore","useTabVisibilityStore","_temp6$2","getTabVisibilityStore","subPanelPlacements","visibleSubPanels","filterVisibleTabs","_temp7$2","visibleSubPanelIds","eligibleSubPanels","leadingItems","placement_2","placement_3","hasMovedPlacement","showTabs","hasActions","hasTrailingActions","useWorkbenchPanelRegionTabsState","hasPanelMenus","_temp8$2","tabs","useWorkbenchPanelHeaderVisible","useWorkbenchRegionTabsVisible","state_3","state_4","placement_1","PanelViewContext","createContext","usePanelViewSlot","registry","useContext","node","setNode","useLayoutEffect","PanelViewPortal","_temp$27","createPortal","WorkbenchPanelViewHosts","_temp2$17","_temp3$12","_temp4$8","_temp5$8","slots","setSlots","region_0","eligible","p","p_0","p_1","region_1","p_2","peers","p_3","selected_0","p_4","horizontalScrollRegions","panelMenuRegionIds","sidePanelRegionIds","verticalContentProps","horizontalContentProps","getActivePlacement","widgets","resolveRenderedRegionPlacements","resolveRegionPlacementRenderState","additive","createPlaceholderPlacement","placeholder","WorkbenchRegionPlacement","renderState","overlaysActivePlacement","flex","globalActiveWidgetId","activatePlacement","visible","order","WorkbenchRegion","panelSlot","sharedViews","chrome","renderedPlacements","retainedPlacements","visibleIds","scrollsHorizontally","Flex","transparent","renderedPlacement","WorkbenchPanelAddMenu","triggerRef","panels","openPanel","PANEL_HEADER_CONTROL_SIZE","trigger","panel_0","SharedAction","onActivate","RegionTabMenu","pendingRequest","currentRegion","destinations","pinned","pin","setOpen","anchor","_temp$26","group_0","request_0","_temp2$16","t21","t22","t23","t24","t25","t26","t27","t28","group_1","TabDragContext","useTabDrag","WorkbenchTabDragProvider","activeId","setActiveId","drop","setDrop","sensors","useSensors","useSensor","MouseSensor","TouchSensor","finish","data","widgetId","rect","before","resolveDrop","event_0","event_1","event_2","event_3","DragOverlay","DndContext","_temp$25","WorkbenchTabDropTarget","useId","allowed","useDroppable","highlighted","setNodeRef","pointer","pointerWithin","collision","area","rect_0","useRegionTab","sortable","setAnchor","hold","start","suppressClick","drag","useDraggable","clearHold","show","onContextMenu","nextWidgetId","previousWidgetId","onKeyDown","element_0","onPointerDown","onPointerMove","TabIcon","indicator","WorkbenchRegionTab","useTabsContext","behavior","labelId","_temp$24","_temp2$15","_temp3$11","Tabs","DropIndicator","RegionTabList","resolvePlacementIcon","iconName","WorkbenchRegionTabsContent","tabOverrides","getKey","viewport","setViewport","menuOpen","setMenuOpen","hiddenByDefault","menuActions","buildTabVisibilityMenuActions","hasVisibilityMenu","openVisibilityMenu","onWheel","onSelectLeadingItem","_temp$23","leadingActions","PANEL_HEADER_TAB_SIZE","t33","t34","t35","t36","details_0","_temp2$14","t37","t38","t39","WorkbenchPanelRegionTabs","WorkbenchOtherRegionTabs","WorkbenchRegionTabs","RendererReadNotice","retry","usePageParams","_temp$22","owner","resolvePageParams","createRendererMutations","baseline","revision","journal","pending","operation","readRevision","success","createRendererMutationBinding","ownerKey","WorkbenchConnectionContext","WorkbenchConnectionProvider","connected","useWorkbenchConnection","useRendererRead","retryRef","refreshRef","lastRefreshKey","refreshKey","mutationBinding","mutations","saveQueue","handlers","connectionLost","PstdioConnectionError","readError","previous_0","value_1","reason","previous_1","connectionLost_0","owner_0","previous_2","save","TreeParamsDialog","ViewToolbarActions","setRequest","_temp$21","_temp2$13","resolveDataTableRendererQueryKey","resolveDataTableRendererColumns","contributionColumns","firstRow","buildDataTableRendererData","rowByData","rows","columns","column","resolveDataTableRendererSelectionActions","rendererRow","resolveDataTableRendererResourceActions","resolveResourceActions","resolveDataTableRendererStorageKey","identity","scope","initialResult","noopSubscribe$1","WorkbenchDataTableView","pageParams","_temp$20","provider","viewsSource","_temp2$12","_temp3$10","filter","useDataTableViewStore","_temp4$7","sorts","_temp5$7","settings","_temp6$1","events","read","loading","T1","model","openRow","renderers","rowActions","selectionActions","stats","t29","t30","t31","t32","labels","_temp7$1","_temp8$1","descriptions","_temp9$1","_temp0$1","icons","_temp1$1","_temp10$1","_temp11$1","_temp12$1","_temp13$1","_temp14$1","action_0","row_0","data_0","column_9","_temp15$1","skeletonColumns","DataTableSkeleton","DataTable","EmptyState","data_1","_temp16$1","_temp17$1","_temp18$1","_temp19$1","_temp20$1","_temp21$1","_temp22$1","data_2","data_3","column_0","column_1","column_2","column_3","column_4","column_5","column_6","column_7","column_8","column_10","column_11","column_12","column_13","column_14","column_15","column_16","column_17","BOOLEAN_OPTIONS","humanize","toOptions","toParam","description","defaultValue","preferenceSchemaToParams","paramValueToPreference","toName","WorkbenchPreferencesForm","staged","setStaged","formKey","setFormKey","resolveScopeId","scopeRef","names","preferences","_temp$19","schemaByName","schema_0","name_0","persist","handleChange","name_1","_temp2$11","_temp3$9","discard","hasStaged","ParamEditor","activeNodeIds","uniqueIds","ids","targetPanelResource","resolveTreeNodeResourceKey","listTreeNodes$1","nodes","childrenByNodeId","listSectionNodes","sections","section","resolveActiveResourceNodeIds","resourceKeys","matches","findSectionNode","nodeId","pageRefsEqual","targetMatchesPage","activePage","activeResource","resolveActivePageNodeIds","resolveTreeListSelection","activeNodeId","activeResourceKeys","declaredSelection","nodeResourceKey","activeLocation","selectedNode","selectedNodeId","selectedResourceKey","activeResourceNodeId","activePageNodeId","canVirtualizeTreeNode","canVirtualizeTreeSections","findNode","child","findNodeInSections","wrapTreeNodeIcon","iconTooltip","resolveTreeNodeIcon","resolveTreeNodeNavigationIntent","resolveTreeNodeResource","resolveTreeNodeEndContent","Badge","additions","deletions","DiffBubble","toTreeListSectionEmptyNode","toTreeListNode","navigationIntent","commandContext","contextMenuItems","menuItems","toTreeListSection","emptyNode","pinnedOnlyNodeIds","withoutPinnedOnlyRows","TREE_SKELETON_WIDTHS","TreeViewSkeleton","_temp$18","TreeViewBody","moduleLoading","backgroundContextActions","customizationAvailable","canMove","draggable","expandedNodeIds","expandedSectionIds","onMoveNode","onNavigate","onReorderNodes","onReorderSections","onToggleNode","onToggleSection","scrollRef","TreeList","Skeleton","shouldSelectTreeNodeForNavigationTarget","createToggleTreeSection","treeViewId","sectionId","expandedIds","TreeViewSearch","Header","InputGroup","Input","previewTreeResources","previewNodes","isUnregisteredTreeError","treeId","trees","listTreeNodes","loadExpandedTreeChildren","expanded","visited","queue","batch","expandDefaultTreeSections","tree","loadTreeData","available","loadSlot","onProgress","header","body","footer","canMoveTreeNode","sourceId","targetId","sourceOwner","targetOwner","createMoveTreeNode","sourceNodeId","targetNodeId","previewTreeMove","childrenOf","find","roots","move","materialize","descendants","moving","useTreeMovement","setPending","latestBody","moves","moves_0","preview","move_0","position","intent","saved","move_1","move_2","useTreeData","_temp$17","_temp2$10","location","_temp3$8","project","_temp4$6","_temp5$6","getPageOwner","pageOwner","childrenKey","expandedChildren","setExpandedChildren","loadChildren","children_0","subscription_0","contains","node_0","resource_0","savedBody","savedChildren","movement","onMoveError","resolveTreeActiveResource","overlay","overlayResource","useTreeNavigationState","projectId","_temp$16","_temp2$9","_temp3$7","treeSelectionAncestors","selectedIds","parents","expandedSections","visit","useTreeSelection","selectedNodeIds","revealed","ancestors","id_0","keepSectionsEmptiedByMoves","visibleById","hadRows","ordered","shown","resolveVisibility","sectionOverrides","activeTreeGroupLayout","scopes","activeGroups","inactiveGroupIds","nodeOrderBySection","useTreeViewGroups","savedGroups","useTreeListOrderStore","addGroup","renameGroup","removeGroup","draft","setDraft","currentDraft","activeNodeOrder","startGroup","orderedSections","editing","section_0","toStringLabel","isCustomizableNode","visibilityContextIcon","effective","buildNodeVisibilityContextMenuItem","nodeOverrides","existingItems","addRegionNodeVisibilityContextMenuItems","addSectionNodeVisibilityContextMenuItems","useTreeViewCustomization","useTreeListVisibilityStore","_temp$15","_temp2$8","toggleSection","_temp3$6","toggleNode","_temp4$5","resetVisibility","_temp5$5","sectionOrder","_temp6","_temp7","sectionSlotById","_temp8","setSectionOrder","_temp9","setNodeOrder","_temp0","setSectionSlot","_temp1","resetOrder","_temp10","sourceSections","visibilityActions","_temp11","_temp12","_temp13","defaultSlotBySectionId","orderedSectionsBySlot","orderedAllSections","withGroupControls","applyTreeListOrder","section_2","orderedHeaderSections","orderedFooterSections","includeNodeContextMenus","headerSections","contentSections","footerSections","visibleIn","filterVisibleSections","visibleHeaderSections","visibleSections","visibleFooterSections","visibilityMenuItems","buildTreeVisibilityMenuActions","newGroupAction","_temp14","customizationRevision","_temp16","_temp18","_temp20","idsBySlot","_temp21","_temp22","_temp23","slot_0","nextSectionIds","destinationSlot","destinationSectionId","sourceSectionId","nextSectionIds_0","state_5","state_6","state_7","state_8","state_9","state_10","section_1","_temp15","section_3","_temp17","section_4","_temp19","node_1","section_5","section_6","section_7","section_8","EMPTY_TREE_STATE","treeCustomizationOptions","isSidenav","useSidenavContextActions","actionsRef","navigateTreeNode","createToggleTreeNode","WorkbenchTreeView","onSidenavContextActionsChange","treeRenderer","setFilter","treeState","onOpenResourceError","paramsRequest","setParamsRequest","rawHeaderSections","rawSections","adapterContext","rawFooterSections","activeNodeSelection","navigationContext","moveNode","nextSectionIds_1","onMoveSection","TreeListDragProvider","ResourceLinkPicker","setQuery","results","setResults","setSelected","role","setRole","setLoading","setRevision","service","_temp$14","excludeKey","timer","cause","busy","onCancel","RelatedResources","setRows","cursor","setCursor","nextCursor","setNextCursor","picker","setPicker","setBusy","edge","edge_0","mutate","cause_0","add","candidate_0","cause_1","edge_1","candidate_1","incoming","closeResourceLinksOnProjectChange","resourceLinksCommandId","createWorkbenchResourceLinksModule","currentResource","useSettingsRevision","Centered","ScrollableSettingsContent","SettingsViewContent","panelId","CollectionItemView","resolveCollectionItem","itemId","alive","Spinner","SettingsSurfacePanel","SettingsOverlay","navTreeId","nav","content","ResizableSplitLayout","SETTINGS_RESOURCE_KIND","WORKBENCH_SETTINGS_OPEN_COMMAND_ID","settingsPanelResource","settingsItemResource","isSettingsScopeVisible","hasProjectScope","FALLBACK_SECTION_ID","toTreeActions","collectionItemNode","orderGroupKeys","indexOf","keys","collectionChildren","groupBy","byKey","list","panelToNode","buildSettingsTreeBody","sectionsById","matchesWhen","bySection","renderOrder","collections","sectionPanels","WORKBENCH_SETTINGS_WIDGET_ID","WORKBENCH_SETTINGS_NAV_WIDGET_ID","WORKBENCH_SETTINGS_PANEL_WIDGET_ID","WIDGET_ID","openSettings","requested","requestedPanel","isVisible","createWorkbenchSettingsModule","when","refreshNavigation","unsubscribeSettings","unsubscribeContext","WorkbenchPanelMenu","background","AttachedMenu","addPanelMenu","WorkbenchPanelMenuLayout","WorkbenchPanelMenuOpener","canAttach","WorkbenchPanelMenuOpeners","_temp$13","closedMenus","useWorkbenchModeRegionSettings","useShallow","floatingPanelBottom","bottomOffset","launcherBottom","WorkbenchSidePanelTitle","WorkbenchSidePanelHeader","WorkbenchAttachedSidePanel","canFloat","hasTabs","showHeader","Minimize2","contentSlotRef","AttachedPanel","WorkbenchFloatingSidePanel","bubbleIcon","onOpen","BubbleButton","MessageCircle","BubblePanel","toStatusEditorValue","sameActions","statusNeedsUpdate","original","toWorkflowStatus","WorkflowStatusSection","statusSet","cached","statuses","setStatuses","loadError","setLoadError","cached_0","_temp$12","TagSettingsPanel","_temp2$7","WorkflowStatusSettings","_temp3$5","statusSets","terminalPlacementBindingId","instanceId","workspacePathFromResource","workspacePath","withTerminalRequestDefaults","cwd","createControllerTerminalBridge","terminal","sessionId","handler","WorkbenchTerminalPanel","placementRef","bridge","setSessionId","processTitle","updateShellPlacement","currentPlacement","WORKBENCH_TERMINAL_WIDGET_ID","WORKBENCH_TERMINAL_OPEN_COMMAND_ID","WORKBENCH_TERMINAL_PANEL_SIZE","terminalPlacements","terminalInstanceIds","watchClosedTerminalPlacements","changingScope","willChangeScope","didChangeScope","unsubscribeLayout","currentIds","previousIds","previousState","terminalTitlePattern","nextTerminalIndexes","getInitialTerminalIndex","titleIndexes","getNextTerminalTitle","nextIndex","hasWorkspacePath","getTerminalResource","primaryResource","openWorkbenchTerminal","workspace","reveal","createWorkbenchTerminalModule","useWorkbenchThemePreferences","contributed","_temp$11","defaultThemePreferences","WorkbenchThemeProviderContext","WorkbenchThemeProvider","ChakraProvider","psTheme","fileIconThemePreferences","FileIconThemePreferenceProvider","initialThemePreference","ThemePreferenceProvider","WorkbenchThemeScope","isRecord","stringValue","booleanValue","resolveOverlayConfig","config","overlayConfig","scrollBehavior","closeOnEscape","closeOnInteractOutside","modal","preventScroll","trapFocus","motionPreset","contentHeight","contentMaxHeight","contentMinHeight","contentWidth","contentMaxWidth","resolveOverlayDialogConfig","closeable","resolveActivePlacement","resolveOverlayDialogRenderState","exitingPlacement","WorkbenchOverlayFallback","WorkbenchOverlayLayer","overlayRegion","_temp$10","_temp2$6","_temp3$4","setExitingPlacement","dialogRootConfig","canCloseOverlay","closeLabel","_temp4$4","handleOpenChange","handleExitComplete","handleInteractOutside","_temp5$4","WorkbenchBreadcrumbActions","_temp$9","_temp2$5","_temp3$3","resolveActions","subject","_temp4$3","_temp5$3","resourceActions","action_1","firstLocationAction","locationActions","resourceLabel","ResourceActionMenu","WorkbenchRegionControl","control","WorkbenchNavigationControls","history","_temp$8","regionControls","_temp2$4","WorkbenchRegionControls","controls","_temp3$2","WorkbenchNavChrome","_temp4$2","sidenavControls","_temp5$2","trailingRegionControls","hasNav","control_0","activityResourceTypeSchema","z","activityActorTypeSchema","activitySourceSchema","activityEventSchema","AGENT_CAPABILITIES","agentAvailabilityTypeSchema","agentSkillsLayoutSchema","localizableSchema","harnessParamBaseSchema","harnessParamOptionSchema","harnessSelectParamSchema","harnessBooleanParamSchema","harnessParamDescriptorSchema","harnessParamsSchema","jsonObjectSchema","serializableJsonObjectSchema","localizedStringSchema","localizableStringSchema","extensionSettingScopeSchema","extensionSettingValueTypeSchema","extensionSettingSourceSchema","extensionDiagnosticSeveritySchema","extensionDiagnosticSchema","extensionRecordSchema","packageAssetDescriptorSchema","extensionPlacementSchema","extensionSlotKindSchema","commandSourceSchema","extensionWhenExpressionSchema","extensionWebviewContributionSchema","workbenchExtensionWebviewSchema","extensionThemeRecordSchema","extensionFileIconThemeRecordSchema","extensionTranslationRecordSchema","extensionArtifactMountSchema","workbenchMenuTargets","workbenchTreeTargets","workbenchRegions","workbenchViewTargets","workbenchSettingsTargets","workbenchSettingsScopes","workbenchModeLayoutTargets","workbenchMenuTargetSchema","workbenchTreeTargetSchema","workbenchViewTargetSchema","workbenchSettingsTargetSchema","workbenchAttachmentTargetSchema","workbenchSettingsScopeSchema","extensionCommandRecordSchema","extensionParamObjectSchema","extensionMiddlewareRecordSchema","extensionHookRecordSchema","extensionScheduleRecordSchema","workbenchExtensionAutomationRecordSchema","extensionMenuContributionSchema","extensionCommandPaletteContributionSchema","extensionHostCapabilitySchema","extensionHostCapabilitiesSchema","extensionHostCompatibilitySchema","dockedWorkbenchRegions$1","extensionPanelRegions","workbenchExtensionConnectionRecordSchema","extensionConnectionRecordSchema","isNavigationHref","href","protocol","isFileSourcePosition$1","positive","number","reserved","isPageParamValue","definition","validatePageParamDefinitions$1","definitions","pageParamValueSchema","pageParamDefinitionsSchema","extensionResourceRefSchema","contributionRefSchema$1","pageRefSchema$1","placementRefSchema","modeRefSchema$1","viewRefSchema$1","resourceKindRefSchema$1","pageSlotRefSchema","panelRefSchema","commandTargetSchema","sourcePositionSchema","sectionSchema","pageTargetSchema","navigationOperationSchema","navigationTargetSchema","extensionSlotInvocationSchema","extensionAttachmentInvocationSchema","serializedErrorSchema","commandNoticeSchema","commandDiagnosticSchema","responseNavigationTargetSchema","commandOutcomeSchema","numeric","vector","range","harness","selectionValue","selectionOption","selection","image","primitive","readOnlyContent","controlValueSchema","controlValuesSchema","controlParamSchema","controlGroupSchema","controlsQueryResultSchema","extensionRendererRecordBaseSchema","extensionTreeRendererRecordSchema","extensionFileRendererRecordSchema","extensionControlsRendererRecordSchema","optionConditions","VIEW_FILTER_CONDITIONS","EMPTY_VIEW_FILTER","conditionIds","viewFilterConditionSchema","viewFilterRuleSchema","advancedFilterGroupSchema","viewFilterGroupSchema","viewSortSchema","viewSortsSchema","viewToolbarActionSchema","viewToolbarActionRecordSchema","themeColorSchema","columnStatSchema","columnRendererSchema","dataTableRendererColumnSchema","dataTableRendererSettingsSchema","dataTableRendererSavedViewSchema","rowActionSchema","selectionActionSchema","extensionDataTableRendererRecordSchema","kanbanRendererEnumOptionSchema","kanbanRendererAttributeTypeSchema","kanbanRendererAttributeDisplaySchema","display","kanbanRendererAttributeSchema","kanbanViewSettingsSchema","kanbanRendererSavedViewSchema","extensionKanbanRendererCreateRowSchema","extensionKanbanRendererRowActionSchema","extensionKanbanRendererRecordSchema","extensionCommandPaletteResourceRecordSchema","parsedKeybindingChordSchema","extensionKeybindingRecordSchema","workbenchPlacementPresentationSchema","placementPresenceSchema","regionSizeSchema","regionSettingsSchema","resourceConstraintSchema","resourceBindingSchema","placementItemSchema","mainSchema","slotSchema","workbenchExtensionPageRecordSchema","extensionSettingsPanelRecordSchema","extensionSettingOptionSourceSchema","extensionSettingDefinitionRecordSchema","extensionSettingValueRecordSchema","extensionSettingsSectionRecordSchema","contributionRefSchema","commandRefSchema","modeRefSchema","pageRefSchema","resourceKindRefSchema","settingsSectionRefSchema","viewRefSchema","normalizedWhenSchema","rendererBaseOmissions","commandActionSchema","kanbanCreateRowSchema","webviewBodySchema","treeBodySchema","fileBodySchema","controlsBodySchema","kanbanBodySchema","dataTableBodySchema","workbenchExtensionViewBodySchema","workbenchExtensionViewRecordSchema","workbenchExtensionModeRecordSchema","workbenchExtensionPlacementRecordSchema","workbenchExtensionViewMenuRecordSchema","workbenchExtensionNavigationItemRecordSchema","workbenchExtensionNavigationTreeRecordSchema","workbenchExtensionResourceKindRecordSchema","workbenchExtensionSettingsPanelRecordSchema","workbenchExtensionStatusBarItemRecordSchema","workbenchExtensionStatusRecordSchema","workbenchExtensionMetadataSchema","extensionViewLikeSchema","extensionsCheckResponseSchema","DEFAULT_DATA_TABLE_SETTINGS","DEFAULT_KANBAN_VIEW_SETTINGS","builtInViews","kanbanBuiltInViews","dataTableBuiltInViews","projectExtensionInstanceSchema","marketplaceExtensionSchema","installNameSchema","formBoolean","installedExtensionSourceSchema","automationRunStatusSchema","automationTokenRecordSchema","automationRunErrorSchema","automationRunEventSchema","boardFieldSchema","boardViewSettingsSchema","boardViewSchema","numericIdentifier","hostRef","workbenchModes","hostResourceKind","headerMenuSlots","workbenchResourceKindDefinitions","workbenchResourceKinds","workbenchPages$1","createCommandRef","eventRef","defineSlot","hostEventRef","resourceMenuSlotRef","resourceKind","WEBVIEW_DECLARABLE_CAPABILITIES$1","WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES$1","ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES$1","capability","harnessCommandSchema","harnessModeActionSchema","harnessModeSchema","harnessOperationSchema","harnessOperationResponseSchema","initialWorkspaceSchema","extensionSetupWarningSchema","harnessParamValueSchema","harnessParamsInputSchema","sessionAttachmentRefSchema","queuedFollowUpSchema","pendingQueuedFollowUpsResponseSchema","resourceLinkRefSchema","resourceAnchorSchema","extension","textPartSchema","reasoningPartSchema","toolPartActionTypeSchema","toolPartStatusSchema","toolPartSchema","stepStartPartSchema","stepFinishPartSchema","patchPartSchema","filePartSchema","loadingPartSchema","errorPartSchema","tokenUsagePartSchema","sessionMessagePartSchema","sessionMessageRoleSchema","sessionMessageSchema","sessionStatusSchema","sessionUsageSchema","sessionSchema","questionResponseSchema","followUpDecisionSchema","skillFileSchema","skillSourceKindSchema","skillAgentInstallationSchema","workspaceProviderRefShape","workspaceProviderRefSchema","workspaceProviderStateSchema","workspaceExecutionKindSchema","workspaceCapabilitiesSchema","workspaceProviderErrorSchema","workspaceAnchorSchema","workspaceFileEntrySchema","mergeControlDraft","createControlSaveQueue","HarnessControl","initialState","WorkbenchControlsView","WorkbenchControlsForm","saves","showFooter","prev","submit","reset","ControlsContent","hostParam","installed$4","installWorkbenchControlsRenderer","controlsRendererId","createElement","installed$3","installWorkbenchDataTableRenderer","dataTableRendererId","FILE_CONTENT_CACHE_LIMIT","fileContentCache","readCachedFileContent","loadKey","clearCachedResourceContent","storeCachedFileContent","oldest","nextLoadedRevision","acceptFileRendererLoad","accepted","WorkbenchFileRendererView","lazy","module","installed$2","installWorkbenchFileRenderer","fileRendererId","Suspense","bindReactKanbanPresentation","resolveProjectScope","favoriteScope","storageScope","resolveKanbanRendererStorageKey","baseKey","kanbanRendererId","projectScope","kanbanViewScrollContentProps","WorkbenchKanbanViewFrame","usesInternalScroll","noopSubscribe","isKanbanRowResource","useResolvedContributionAttributes","isAttributesSource","attributes","subscribe","getSnapshot","mergeKanbanViewRowActions","resourceActionKeys","resourceCommandIds","contributionActions","WorkbenchKanbanView","_temp$7","_temp2$3","useKanbanRendererStore","_temp3$1","_temp4$1","_temp5$1","handleOpenRow","getRowContextMenuActions","contentPlaceholder","readNotice","KanbanRenderer","applyKanbanMove","rows_0","installed$1","installWorkbenchKanbanRenderer","installed","isSidenavPlacement","viewContextId","installWorkbenchTreeRenderer","installation","useWorkbenchFileIconThemePreferences","_temp$6","useWorkbenchRegionContent","modePanel","WorkbenchHeaderBorder","useSecondaryPanelView","hasContent","hasHeader","hasPanelHeader","hasMenus","_temp$5","useWorkbenchMainPanels","hasMainHeader","secondaryPanel","WorkbenchSecondaryPanel","hasSecondaryHeader","SECONDARY_PANEL_SIZE","SECONDARY_PANEL_CONTENT_MIN_SIZE_PX","mainHeaderTrailingMenuPath","resolveRegionSize","persistedSize","MainHeaderBar","hasMainContentTabs","WorkbenchBody","pageId","_temp$4","modeSettings","persistedSecondarySize","_temp2$2","secondaryPanelSize","mainRegion","mainPanelWithMenus","Grid","mainContent","height","reorderInstructions","WorkbenchStatusBarItem","neighbor","WorkbenchStatusBarItems","_temp$3","_temp2$1","WorkbenchSidenav","contextActions","ResourceContextMenu","WORKBENCH_STATUS_BAR_HEIGHT","WorkbenchActivityBar","WorkbenchStatusBar","ATTACHED_PANEL_DEFAULT_SIZE_PX","ATTACHED_PANEL_MIN_SIZE_PX","WorkbenchSidePanelRegionPortal","sidePanelHost","WorkbenchSidePanelRegionHeader","hasSideHeader","WorkbenchAttachedSidePanelLayout","_temp$2","onAttachedSlotChange","onCollapse","contentMinSizePx","contentPanel","interactivePointerTargetSelector","hasClosest","shouldFocusWorkbenchKeyboardFrame","currentTarget","focusWorkbenchKeyboardFrame","WorkbenchKeyboardFrame","_temp$1","WorkbenchSidePanelBoundary","contentFrame","showAttachedSidePanel","sideHeader","SIDENAV_DEFAULT_SIZE_PX","SIDENAV_MIN_SIZE_PX","CONTENT_MIN_SIZE_PX","resolveSidenavSize","createSidePanelHost","useWorkbenchLayoutFlags","statusChrome","statusBarItems","_temp","_temp2","activeModeId","_temp3","createWorkbenchRegionControls","WorkbenchContent","sidenavContextActions","setSidenavContextActions","attachedSidePanelSlot","setAttachedSidePanelSlot","floatingSidePanelSlot","setFloatingSidePanelSlot","sidePanelHostRef","paletteOpen","paletteInitialQuery","sidenavOpen","secondaryPanelOpen","hasSecondaryPanelHeader","hasSidePanelHeader","sidePanelMode","hasSidePanel","hasSideHeaderWidgets","hasSideWidgets","hasSideMenus","showSidenav","hasSidenavWidgets","sidenavCollapsible","showSecondaryPanel","hasSecondaryHeaderWidgets","hasSecondaryWidgets","hasSecondaryMenus","sidenavSize","setPanelOpen","activeSidePanelSlot","contentWithSidenav","hasNavWidgets","hasActivityBarWidgets","titleBar","hasStatusWidgets","sidePanelBubbleIcon","onOpenSidePanel","Workbench","_temp4","_temp5","Toaster","disposeWorkbenchModuleHostRegistrations","syncWorkbenchModuleHostRegistrations","moduleIds","modules","WorkbenchModuleHost","registeredWorkbench"],"sources":["../src/core/registries/pages/page-active-placement.ts","../src/react/shared/icon.tsx","../src/react/command-palette/command-palette-params.ts","../src/react/shared/run-placement-action.ts","../src/react/shared/placement-menu-actions.tsx","../src/react/shared/use-workbench-store.ts","../src/react/shared/use-placement-tab.ts","../src/react/breadcrumb/breadcrumb-view.tsx","../src/react/command-palette/command-option-status.tsx","../src/react/shared/use-workbench-composition-panels.ts","../src/react/theme/workbench-theme-background.ts","../src/react/command-palette/palette-view.tsx","../src/react/command-palette/command-palette-resources.tsx","../src/react/command-palette/command-param-descriptors.ts","../src/react/command-palette/command-param-field.tsx","../src/react/command-palette/command-option-resolver.ts","../src/react/command-palette/use-command-options.ts","../src/react/command-palette/command-params-dialog.tsx","../src/react/command-palette/palette-params-dialog.tsx","../src/react/region/panel-widget-open.ts","../src/react/command-palette/panel-widget-palette.tsx","../src/react/command-palette/resource-palette.tsx","../src/react/command-palette/theme-palette.tsx","../src/react/command-palette/command-palette.tsx","../src/react/focus/focus-region.tsx","../src/react/menus/menu-items.ts","../src/react/header/header-action-items.ts","../src/react/header/header-actions.tsx","../src/react/keybindings/tanstack-hotkey-adapter.ts","../src/react/keybindings/workbench-keybinding-dispatcher.tsx","../src/react/renderers/tree/tree-actions.tsx","../src/react/menus/resource-actions.tsx","../src/react/notifications/notification-host.tsx","../src/react/shared/use-workbench-location-resource.ts","../src/react/region/retained-view-placements.ts","../src/react/region/use-retained-view-placements.ts","../src/react/region/widget-host.tsx","../src/react/region/mode-chrome.tsx","../src/react/region/move-panel-host.ts","../src/react/workbench/workbench-panel-state.ts","../src/react/panel-menu/panel-menu-sizing.ts","../src/react/panel-menu/use-panel-menu.ts","../src/react/region/region-tabs-visibility.ts","../src/react/region/region-tabs-visibility-hooks.ts","../src/react/region/panel-view-hosts.tsx","../src/react/region/region.tsx","../src/react/region/panel-add-menu.tsx","../src/react/region/region-tab-menu.tsx","../src/react/region/tab-drag-context.tsx","../src/react/region/use-region-tab.ts","../src/react/region/workbench-region-tab.tsx","../src/react/region/region-tab-list.tsx","../src/react/region/region-tabs.tsx","../src/react/renderers/renderer-read-notice.tsx","../src/react/renderers/use-page-params.ts","../src/react/renderers/renderer-mutations.ts","../src/react/renderers/workbench-connection-provider.tsx","../src/react/renderers/use-renderer-read.ts","../src/react/renderers/tree/tree-params-dialog.tsx","../src/react/renderers/view-toolbar-actions.tsx","../src/react/renderers/data-table/data-table-view-model.ts","../src/react/renderers/data-table/data-table-view.tsx","../src/react/renderers/settings/preference-schema-to-params.ts","../src/react/renderers/settings/preferences-form.tsx","../src/react/renderers/tree/tree-list-adapter.tsx","../src/react/renderers/tree/tree-pinned-only.ts","../src/react/renderers/tree/tree-view-body.tsx","../src/react/renderers/tree/tree-view-navigation.ts","../src/react/renderers/tree/tree-view-search.tsx","../src/react/renderers/tree/tree-resource-preview.ts","../src/react/renderers/tree/tree-view-load.ts","../src/react/renderers/tree/tree-view-move.ts","../src/react/renderers/tree/tree-move-preview.ts","../src/react/renderers/tree/use-tree-movement.ts","../src/react/renderers/tree/use-tree-data.ts","../src/react/renderers/tree/tree-active-resource.ts","../src/react/renderers/tree/use-tree-navigation-state.ts","../src/react/renderers/tree/tree-selection-ancestors.ts","../src/react/renderers/tree/use-tree-selection.ts","../src/react/renderers/tree/tree-emptied-sections.ts","../src/react/renderers/tree/tree-group-scope.ts","../src/react/renderers/tree/use-tree-view-groups.tsx","../src/react/renderers/tree/use-tree-view-customization.ts","../src/react/renderers/tree/tree-view.tsx","../src/react/resource-links/resource-link-picker.tsx","../src/react/resource-links/related-resources.tsx","../src/react/resource-links/resource-links-project-scope.ts","../src/react/resource-links/resource-links-module.tsx","../src/react/settings/use-settings-revision.ts","../src/react/settings/settings-surface-panel.tsx","../src/react/settings/settings-overlay.tsx","../src/react/settings/settings-resources.ts","../src/react/settings/settings-tree.ts","../src/react/settings/settings-module.tsx","../src/react/panel-menu/panel-menu.tsx","../src/react/shared/use-workbench-mode-region-settings.ts","../src/react/side-panel/side-panel.tsx","../src/react/statuses/workflow-status-settings-model.ts","../src/react/statuses/workflow-status-settings.tsx","../src/react/terminal/terminal-placement-binding.ts","../src/react/terminal/workbench-terminal-panel.tsx","../src/react/terminal/terminal-module.tsx","../src/react/theme/use-workbench-theme-preferences.ts","../src/react/theme/workbench-theme-provider.tsx","../src/react/theme/workbench-theme-scope.tsx","../src/react/workbench/overlay-layer.tsx","../src/react/header/resource-actions.tsx","../src/react/header/workbench-nav-chrome.tsx","../../pstdio-api-contracts/src/activity.ts","../../pstdio-api-contracts/src/harness.ts","../../pstdio-api-contracts/src/agents.ts","../../pstdio-api-contracts/src/extensions/common.ts","../../pstdio-api-contracts/src/extensions/appearance.ts","../../pstdio-api-contracts/src/extensions/artifacts.ts","../../pstdio-api-contracts/src/extension-kernel/workbench-targets.ts","../../pstdio-api-contracts/src/extensions/targets.ts","../../pstdio-api-contracts/src/extensions/commands.ts","../../pstdio-api-contracts/src/extensions/host-capabilities.ts","../../pstdio-api-contracts/src/extension-kernel/types/composition.ts","../../pstdio-api-contracts/src/extensions/connections.ts","../../pstdio-api-contracts/src/extension-kernel/navigation-href.ts","../../pstdio-api-contracts/src/extension-kernel/source-position.ts","../../pstdio-api-contracts/src/extension-kernel/page-params.ts","../../pstdio-api-contracts/src/extensions/page-params-schema.ts","../../pstdio-api-contracts/src/extensions/resource-ref.ts","../../pstdio-api-contracts/src/extensions/workbench-refs-metadata.ts","../../pstdio-api-contracts/src/extensions/navigation-target-metadata.ts","../../pstdio-api-contracts/src/extensions/execute.ts","../../pstdio-api-contracts/src/extensions/control-declarations.ts","../../pstdio-api-contracts/src/extensions/renderers.ts","../../pstdio-api-contracts/src/extensions/controls-renderer.ts","../../pstdio-api-contracts/src/extension-kernel/types/collection-view.ts","../../pstdio-api-contracts/src/extensions/collection-view.ts","../../pstdio-api-contracts/src/extensions/view-toolbar-action.ts","../../pstdio-api-contracts/src/extensions/data-table-renderer.ts","../../pstdio-api-contracts/src/extensions/kanban-renderer.ts","../../pstdio-api-contracts/src/extensions/keybindings.ts","../../pstdio-api-contracts/src/extensions/placement-metadata.ts","../../pstdio-api-contracts/src/extensions/resource-binding-metadata.ts","../../pstdio-api-contracts/src/extensions/page-metadata.ts","../../pstdio-api-contracts/src/extensions/settings.ts","../../pstdio-api-contracts/src/extensions/workbench-metadata.ts","../../pstdio-api-contracts/src/extensions/check.ts","../../pstdio-api-contracts/src/extension-kernel/types/data-table-renderer.ts","../../pstdio-api-contracts/src/extensions/collection-view-builtins.ts","../../pstdio-api-contracts/src/extensions/install.ts","../../pstdio-api-contracts/src/extensions/installation.ts","../../pstdio-api-contracts/src/automation.ts","../../pstdio-api-contracts/src/board-views.ts","../../pstdio-api-contracts/src/extension-kernel/api-versions.ts","../../pstdio-api-contracts/src/extension-kernel/builtin-refs.ts","../../pstdio-api-contracts/src/extension-kernel/refs.ts","../../pstdio-api-contracts/src/extension-kernel/slots.ts","../../pstdio-api-contracts/src/extension-kernel/kernel-slots.ts","../../pstdio-api-contracts/src/extension-kernel/types/webview-capabilities.ts","../../pstdio-api-contracts/src/files.ts","../../pstdio-api-contracts/src/harness-commands.ts","../../pstdio-api-contracts/src/projects.ts","../../pstdio-api-contracts/src/session-request-values.ts","../../pstdio-api-contracts/src/queued-follow-ups.ts","../../pstdio-api-contracts/src/resource-anchors.ts","../../pstdio-api-contracts/src/session-attachment-types.ts","../../pstdio-api-contracts/src/session-messages.ts","../../pstdio-api-contracts/src/sessions.ts","../../pstdio-api-contracts/src/settings.ts","../../pstdio-api-contracts/src/skills.ts","../../pstdio-api-contracts/src/workspaces.ts","../src/react/renderers/controls/control-draft.ts","../src/react/renderers/controls/control-save-queue.ts","../src/react/renderers/controls/harness-control.tsx","../src/react/renderers/controls/controls-view.tsx","../src/react/renderers/controls/install-controls-renderer.ts","../src/react/renderers/data-table/install-data-table-renderer.ts","../src/react/renderers/file/file-renderer-load-state.ts","../src/react/renderers/file/install-file-renderer.ts","../src/react/renderers/kanban/kanban-presentation.ts","../src/react/renderers/kanban/kanban-view-storage.ts","../src/react/renderers/kanban/kanban-view.tsx","../src/react/renderers/kanban/install-kanban-renderer.ts","../src/react/renderers/tree/install-tree-renderer.ts","../src/react/theme/use-workbench-file-icon-theme-preferences.ts","../src/react/workbench/use-workbench-region-content.ts","../src/react/workbench/header-bottom-border.tsx","../src/react/workbench/use-workbench-main-panels.ts","../src/react/workbench/workbench-secondary-panel.tsx","../src/react/workbench/workbench-body.tsx","../src/react/workbench/workbench-status-bar-items.tsx","../src/react/workbench/workbench-panels.tsx","../src/react/workbench/workbench-side-panel-layout.tsx","../src/react/workbench/workbench-side-panel-boundary.tsx","../src/react/workbench/workbench.tsx","../src/react/workbench/workbench-module-host.tsx"],"sourcesContent":["import { workbenchPanelRegions } from \"../layout/layout-regions\";\nimport type { WorkbenchLayout } from \"../layout/layout-types\";\nimport type { WorkbenchPageContribution } from \"./page-registry\";\n\nexport const resolvePageActivePlacement = (layout: WorkbenchLayout, page?: WorkbenchPageContribution) => {\n if (page?.main.kind !== \"panels\") return;\n const selected = workbenchPanelRegions\n .flatMap((id) => {\n const region = layout.regions[id];\n return region.widgets.find((entry) => entry.widgetId === region.activeWidgetId) ?? region.widgets[0] ?? [];\n })\n .filter((entry) => entry.placementIdentity?.kind === \"page\" && entry.placementIdentity.pageId === page.id);\n return selected.find((entry) => entry.widgetId === layout.activeWidgetId) ?? selected.find((entry) => entry.resource);\n};\n","import { Icon, type IconProps } from \"@chakra-ui/react\";\nimport { optionIcons } from \"@pstdio/ui\";\nimport type { LucideIcon } from \"lucide-react\";\nimport * as lucideIcons from \"lucide-react\";\n\nexport interface WorkbenchIconProps extends Omit<IconProps, \"as\" | \"size\"> {\n name?: string;\n size?: number | string;\n}\n\nconst toPascalCase = (value: string) =>\n value\n .split(/[^a-zA-Z0-9]+/)\n .filter(Boolean)\n .map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\n .join(\"\");\n\nconst resolveLucideIcon = (name: string) => {\n const pascalName = toPascalCase(name);\n const candidates = [name, pascalName, `${pascalName}Icon`];\n\n for (const candidate of candidates) {\n const IconComponent = (lucideIcons as Record<string, unknown>)[candidate];\n if (IconComponent && (typeof IconComponent === \"function\" || typeof IconComponent === \"object\")) {\n return IconComponent as LucideIcon;\n }\n }\n\n return undefined;\n};\n\nexport const WorkbenchIcon = (props: WorkbenchIconProps) => {\n const { name, size = 14, ...rest } = props;\n if (!name) return null;\n\n const IconComponent = optionIcons.find((option) => option.value === name)?.icon ?? resolveLucideIcon(name);\n if (!IconComponent) return null;\n\n return (\n <Icon as={IconComponent} boxSize={typeof size === \"number\" ? `${size}px` : size} aria-hidden=\"true\" {...rest} />\n );\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type { FileUploadValue } from \"@pstdio/ui/param-editor\";\nimport type { CommandParamDescriptor, CommandParamSchema, WorkbenchCommandExecutionContext } from \"../../core\";\nexport interface CommandFilesParamValue {\n refs: string[];\n uploads: FileUploadValue[];\n}\nexport type CommandParamValue = string | boolean | string[] | CommandFilesParamValue | undefined;\nexport interface CommandParamEntry extends CommandParamDescriptor {\n key: string;\n label: string;\n}\nconst humanize = (value: string) => {\n const spaced = value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[-_]+/g, \" \")\n .trim();\n return spaced.charAt(0).toUpperCase() + spaced.slice(1);\n};\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\nexport const isFileUploadValue = (value: unknown): value is FileUploadValue => {\n if (!isRecord(value) || !isRecord(value.file)) return false;\n return typeof value.id === \"string\" && typeof value.file.name === \"string\" && typeof value.status === \"string\";\n};\nexport const isCommandFilesParamValue = (value: unknown): value is CommandFilesParamValue =>\n isRecord(value) &&\n Array.isArray(value.refs) &&\n value.refs.every((ref) => typeof ref === \"string\") &&\n Array.isArray(value.uploads) &&\n value.uploads.every(isFileUploadValue);\nexport const createCommandFilesParamValue = (input: Partial<CommandFilesParamValue> = {}): CommandFilesParamValue => ({\n refs: [...(input.refs ?? [])],\n uploads: [...(input.uploads ?? [])],\n});\nconst commandFilesParamValue = (raw: unknown, multiple: boolean | undefined) => {\n const value = isCommandFilesParamValue(raw)\n ? createCommandFilesParamValue(raw)\n : createCommandFilesParamValue({\n refs: Array.isArray(raw) ? raw.filter((item): item is string => typeof item === \"string\") : [],\n uploads: Array.isArray(raw) ? raw.filter(isFileUploadValue) : [],\n });\n if (multiple !== false) return value;\n if (value.uploads[0]) return createCommandFilesParamValue({ uploads: [value.uploads[0]] });\n return createCommandFilesParamValue({ refs: value.refs.slice(0, 1) });\n};\nconst stringifyEditableValue = (value: unknown) => {\n if (value === undefined || value === null) return \"\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return JSON.stringify(value);\n};\nconst toIdentifierPrefix = (value: string) =>\n value\n .replace(/[^a-zA-Z0-9]+([a-zA-Z0-9])/g, (_match, char: string) => char.toUpperCase())\n .replace(/^[A-Z]/, (char) => char.toLowerCase());\nconst metadataString = (metadata: Record<string, unknown> | undefined, key: string) => {\n const value = metadata?.[key];\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\") return String(value);\n return undefined;\n};\nconst resourceContextValue = (entry: CommandParamEntry, context: WorkbenchCommandExecutionContext | undefined) => {\n const resource = context?.resource;\n if (!resource) return undefined;\n const metadataValue = metadataString(resource.metadata, entry.key);\n if (metadataValue !== undefined) return metadataValue;\n if (entry.key === `${toIdentifierPrefix(resource.type)}Id`) return resource.id ?? resourceKey(resource);\n if (entry.type === \"resource\" && (!entry.resourceType || entry.resourceType === resource.type)) {\n return {\n type: resource.type,\n id: resource.id ?? resourceKey(resource),\n ...(resource.label ? { label: resource.label } : {}),\n ...(resource.metadata ? { metadata: resource.metadata } : {}),\n };\n }\n return undefined;\n};\nconst dedupeOptions = (options: CommandParamDescriptor[\"options\"]) => {\n if (!Array.isArray(options)) return options;\n const seen = new Set<string>();\n return options.filter((option) => {\n if (seen.has(option.value)) return false;\n seen.add(option.value);\n return true;\n });\n};\nexport const hasCommandParameters = (params: CommandParamSchema | undefined) =>\n listCommandParamEntries(params).length > 0;\nconst commandParamEntries = (params: CommandParamSchema | undefined): CommandParamEntry[] =>\n Object.entries(params ?? {}).map(([key, param]) => ({\n ...param,\n options: dedupeOptions(param.options),\n key,\n label: param.label ?? humanize(key),\n }));\nexport const listCommandParamEntries = (params: CommandParamSchema | undefined) =>\n commandParamEntries(params).filter((entry) => entry.resolvedFrom !== \"resource\");\nexport const resolveCommandResourceParams = (\n params: CommandParamSchema | undefined,\n baseArgs?: unknown,\n context?: WorkbenchCommandExecutionContext,\n) => {\n const base = isRecord(baseArgs) ? baseArgs : {};\n return Object.fromEntries(\n commandParamEntries(params)\n .filter((entry) => entry.resolvedFrom === \"resource\")\n .map((entry) => [\n entry.key,\n Object.hasOwn(base, entry.key) ? base[entry.key] : resourceContextValue(entry, context),\n ]),\n );\n};\nexport const buildCommandParamInitialValues = (\n params: CommandParamSchema | undefined,\n baseArgs?: unknown,\n context?: WorkbenchCommandExecutionContext,\n): Record<string, CommandParamValue> => {\n const base = isRecord(baseArgs) ? baseArgs : {};\n const values: Record<string, CommandParamValue> = {};\n for (const entry of listCommandParamEntries(params)) {\n const raw = Object.hasOwn(base, entry.key)\n ? base[entry.key]\n : (resourceContextValue(entry, context) ?? entry.defaultValue);\n if (entry.type === \"boolean\") {\n values[entry.key] = raw === undefined ? undefined : raw === true || raw === \"true\";\n continue;\n }\n if (entry.type === \"files\") {\n values[entry.key] = commandFilesParamValue(raw, entry.multiple);\n continue;\n }\n if (entry.type === \"multi-select\") {\n values[entry.key] = Array.isArray(raw) ? raw.map(String) : [];\n continue;\n }\n values[entry.key] = stringifyEditableValue(raw);\n }\n return values;\n};\nconst isEmptyValue = (value: CommandParamValue) => {\n if (isCommandFilesParamValue(value)) return value.refs.length === 0 && value.uploads.length === 0;\n return value === undefined || value === \"\" || (Array.isArray(value) && value.length === 0);\n};\nconst parseJsonValue = (entry: CommandParamEntry, value: CommandParamValue) => {\n if (typeof value !== \"string\") return value;\n try {\n return JSON.parse(value);\n } catch {\n throw new Error(`Invalid JSON for ${entry.label}`);\n }\n};\nconst normalizeValue = (entry: CommandParamEntry, value: CommandParamValue) => {\n if (entry.type === \"number\") {\n const numberValue = Number(value);\n if (!Number.isFinite(numberValue)) throw new Error(`Invalid number for ${entry.label}`);\n return numberValue;\n }\n if (entry.type === \"boolean\") return value === true || value === \"true\";\n if (entry.type === \"files\") return isCommandFilesParamValue(value) ? value : createCommandFilesParamValue();\n if (entry.type === \"json\" || entry.type === \"resource\" || entry.type === \"harness\" || entry.type === \"workspace\") {\n return parseJsonValue(entry, value);\n }\n if (entry.type === \"multi-select\") return Array.isArray(value) ? value : String(value).split(\",\").filter(Boolean);\n return String(value ?? \"\");\n};\nexport const normalizeCommandParamValues = (\n params: CommandParamSchema | undefined,\n values: Record<string, CommandParamValue>,\n) => {\n const normalized: Record<string, unknown> = {};\n for (const entry of listCommandParamEntries(params)) {\n const value = values[entry.key];\n if (isEmptyValue(value)) {\n if (entry.required) throw new Error(`Missing required parameter: ${entry.label}`);\n continue;\n }\n normalized[entry.key] = normalizeValue(entry, value);\n }\n return normalized;\n};\nexport const mergeCommandParamArgs = (\n baseArgs: unknown,\n params: Record<string, unknown>,\n schema: CommandParamSchema | undefined,\n) => {\n const base = isRecord(baseArgs) ? { ...baseArgs } : {};\n for (const entry of listCommandParamEntries(schema)) delete base[entry.key];\n return { ...base, ...params };\n};\n","import type { WorkbenchCore, WorkbenchTabAction } from \"../../core\";\nimport type { WorkbenchCommandParamsRequest } from \"../../core/controllers/command-palette/command-palette-controller\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\nimport { hasCommandParameters } from \"../command-palette/command-palette-params\";\n\nexport const runPlacementAction = (\n workbench: WorkbenchCore,\n action: WorkbenchTabAction,\n requestParams = (request: WorkbenchCommandParamsRequest) => workbench.commandPalette.requestParams(request),\n) => {\n const target = action.kind === \"navigation\" ? action.target : action;\n if (target.kind !== \"command\") {\n void runUserAction(workbench, \"Open\", () => workbench.navigation.openTarget(target));\n return;\n }\n const command = workbench.commands.getCommand(target.commandId)?.command;\n if (command && hasCommandParameters(command.params)) {\n requestParams({ record: { command }, label: command.label, args: target.args });\n } else {\n void runUserAction(workbench, command?.label ?? \"Command\", () =>\n workbench.commands.executeCommand(target.commandId, target.args),\n );\n }\n};\n","import type { WorkbenchCore, WorkbenchTabAction, WorkbenchTabSnapshot } from \"../../core\";\nimport { WorkbenchIcon } from \"./icon\";\nimport { runPlacementAction } from \"./run-placement-action\";\n\nconst commandIdForAction = (action: WorkbenchTabAction | undefined) => {\n const target = action?.kind === \"navigation\" ? action.target : action;\n return target?.kind === \"command\" ? target.commandId : undefined;\n};\n\nexport const placementMenuActions = (workbench: WorkbenchCore, snapshot: WorkbenchTabSnapshot) =>\n (snapshot.menu ?? []).flatMap((group, groupIndex) =>\n group.rows.map((row, index) => ({\n key: `${group.id}:${row.id}`,\n label: row.label,\n commandId: commandIdForAction(row.action),\n icon: row.icon ? <WorkbenchIcon name={row.icon} size={14} /> : undefined,\n isDisabled: row.disabled,\n separatorBefore: groupIndex > 0 && index === 0,\n onClick: () => {\n if (row.action) runPlacementAction(workbench, row.action);\n },\n })),\n );\n","import { useStore } from \"zustand\";\nimport type { WorkbenchStore } from \"../../core\";\n\nexport const useWorkbenchStore = <TState, TSlice>(store: WorkbenchStore<TState>, selector: (state: TState) => TSlice) =>\n useStore(store, selector);\n","import { useEffect, useState } from \"react\";\nimport type { WorkbenchCore, WorkbenchTabSnapshot, WorkbenchWidgetPlacement } from \"../../core\";\nimport { toPanelInstance } from \"../../core/registries/layout/panel-api\";\nimport { resolveResourcePreview } from \"../../core/registries/resources/resource-preview\";\nimport { useWorkbenchStore } from \"./use-workbench-store\";\n\nconst readPlacementTab = (placement: WorkbenchWidgetPlacement | undefined) =>\n placement?.tab?.getSnapshot(toPanelInstance(placement)) ?? {};\n\nexport const usePlacementTab = (placement: WorkbenchWidgetPlacement | undefined, workbench: WorkbenchCore) => {\n const changes = useWorkbenchStore(workbench.resources.preview.store, (state) => state.changes);\n const [state, setState] = useState<{ placement: typeof placement; snapshot: WorkbenchTabSnapshot }>(() => ({\n placement,\n snapshot: readPlacementTab(placement),\n }));\n useEffect(() => {\n const refresh = () => setState({ placement, snapshot: readPlacementTab(placement) });\n const subscription = placement?.tab?.subscribe?.(refresh);\n refresh();\n return () => {\n if (typeof subscription === \"function\") subscription();\n else subscription?.dispose();\n };\n }, [placement]);\n const snapshot = state.placement === placement ? state.snapshot : readPlacementTab(placement);\n const resource = placement?.resource;\n const projected = resource ? resolveResourcePreview(resource, changes) : undefined;\n const changed = projected && projected !== resource;\n return changed ? { ...snapshot, label: projected.label } : snapshot;\n};\n","import { HStack, Text } from \"@chakra-ui/react\";\nimport { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { Breadcrumb, type ResourceContextAction, type SessionCompletionStatus, SessionIndicator } from \"@pstdio/ui\";\nimport type { ReactNode } from \"react\";\nimport type { WorkbenchBreadcrumbItem, WorkbenchCore } from \"../../core\";\nimport { resolvePageActivePlacement } from \"../../core/registries/pages/page-active-placement\";\nimport { resolveResourcePreview } from \"../../core/registries/resources/resource-preview\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { placementMenuActions } from \"../shared/placement-menu-actions\";\nimport { usePlacementTab } from \"../shared/use-placement-tab\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\ninterface WorkbenchBreadcrumbViewProps {\n workbench: WorkbenchCore;\n}\nconst getSessionStatus = (item: WorkbenchBreadcrumbItem) =>\n typeof item.resource?.metadata?.status === \"string\"\n ? (item.resource.metadata.status as SessionCompletionStatus)\n : undefined;\nconst WorkbenchBreadcrumbIcon = (props: { item: WorkbenchBreadcrumbItem }) => {\n const { item } = props;\n const status = getSessionStatus(item);\n if (item.indicator === \"session-status\" || item.resource?.type === \"session\") {\n return <SessionIndicator status={status} boxSize=\"14px\" />;\n }\n if (!item.icon) return null;\n return (\n <Text as=\"span\" aria-hidden=\"true\" color=\"fg.muted\" display=\"inline-flex\" flexShrink={0}>\n <WorkbenchIcon name={item.icon} size={14} />\n </Text>\n );\n};\nconst WorkbenchBreadcrumbTitle = (props: { item: WorkbenchBreadcrumbItem }) => {\n const { item } = props;\n const title = item.title as ReactNode;\n return (\n <HStack as=\"span\" gap=\"2xs\" minW=\"0\">\n <WorkbenchBreadcrumbIcon item={item} />\n <Text as=\"span\" minW=\"0\" maxW=\"15rem\" truncate>\n {title}\n </Text>\n </HStack>\n );\n};\nexport const buildWorkbenchBreadcrumbItems = (\n items: WorkbenchBreadcrumbItem[] | undefined,\n actionsForResource?: (item: WorkbenchBreadcrumbItem) => ResourceContextAction[] | undefined,\n) =>\n (items ?? []).map((item) => {\n const actions = actionsForResource?.(item);\n return {\n title: <WorkbenchBreadcrumbTitle item={item} />,\n url: item.url,\n onClick: item.onClick,\n ...(actions?.length ? { contextMenuActions: actions } : {}),\n };\n });\nexport const WorkbenchBreadcrumbView = (props: WorkbenchBreadcrumbViewProps) => {\n const { workbench } = props;\n const changes = useWorkbenchStore(workbench.resources.preview.store, (state) => state.changes);\n const items = useWorkbenchStore(workbench.breadcrumbs.store, (state) => state.items) ?? [];\n const page = useWorkbenchStore(workbench.pages.store, (state) =>\n state.activePageId ? state.pages[state.activePageId] : undefined,\n );\n const placement = useWorkbenchStore(workbench.layout.store, (state) =>\n resolvePageActivePlacement(state.layout, page),\n );\n const snapshot = usePlacementTab(placement, workbench);\n if (items.length === 0) return null;\n const resource = placement?.resource;\n const crumbs = items.flatMap((item) => {\n if (!item.resource) return [item];\n const projected = resolveResourcePreview(item.resource, changes);\n if (!projected) return [];\n return [{ ...item, resource: projected, title: projected !== item.resource ? projected.label : item.title }];\n });\n if (\n resource &&\n resolveResourcePreview(resource, changes) &&\n !items.some((item) => item.resource && resourceKey(item.resource) === resourceKey(resource))\n ) {\n crumbs.push({\n title: snapshot.label ?? resource.label ?? resource.id,\n icon: snapshot.icon ?? workbench.resources.getKind(resource.type)?.icon,\n resource,\n });\n }\n const actions = placementMenuActions(workbench, snapshot);\n\n return (\n <Breadcrumb\n items={buildWorkbenchBreadcrumbItems(crumbs, (item) =>\n resource && item.resource && resourceKey(item.resource) === resourceKey(resource) ? actions : undefined,\n )}\n separator=\"/\"\n separatorGap=\"xs\"\n display=\"flex\"\n h=\"full\"\n />\n );\n};\n","import { Button, HStack, Text } from \"@chakra-ui/react\";\nimport type { CommandOptionState } from \"./command-option-resolver\";\n\ninterface CommandOptionStatusProps {\n state?: CommandOptionState;\n onRetry: () => void;\n}\nexport const CommandOptionStatus = (props: CommandOptionStatusProps) => {\n const { state, onRetry } = props;\n if (state?.status === \"ready\")\n return state.options.length === 0 ? (\n <Text px=\"sm\" textStyle=\"paragraph/XS/regular\" color=\"fg.muted\">\n No options available.\n </Text>\n ) : null;\n return (\n <HStack px=\"sm\" py=\"xs\" gap=\"sm\">\n <Text role=\"status\" textStyle=\"paragraph/XS/regular\" color={state?.status === \"error\" ? \"fg.error\" : \"fg.muted\"}>\n {state?.error ?? \"Loading options…\"}\n </Text>\n {state?.status === \"error\" ? (\n <Button size=\"xs\" variant=\"outline\" onClick={onRetry}>\n Retry\n </Button>\n ) : null}\n </HStack>\n );\n};\n","import type { WorkbenchCompositionRegionPanels, WorkbenchCore, WorkbenchPanelRegion } from \"../../core\";\nimport { useWorkbenchStore } from \"./use-workbench-store\";\n\nexport type WorkbenchCompositionPanelsByRegion = Record<WorkbenchPanelRegion, WorkbenchCompositionRegionPanels>;\n\nexport const useWorkbenchCompositionPanels = (workbench: WorkbenchCore): WorkbenchCompositionPanelsByRegion => {\n \"use no memo\";\n\n useWorkbenchStore(workbench.layout.store, (state) => state);\n useWorkbenchStore(workbench.modes.store, (state) => state.activeModeId);\n useWorkbenchStore(workbench.commands.store, (state) => state);\n useWorkbenchStore(workbench.context.store, (state) => state);\n\n return {\n main: workbench.composition.panelsFor(\"main\"),\n secondary: workbench.composition.panelsFor(\"secondary\"),\n side: workbench.composition.panelsFor(\"side\"),\n };\n};\n","import type { WorkbenchRegion } from \"../../core\";\n\nconst chakraBackgrounds = {\n sidenav: \"var(--chakra-colors-bg-subtle)\",\n main: \"var(--chakra-colors-bg)\",\n panel: \"var(--chakra-colors-bg-panel)\",\n} as const;\n\nconst vscodeColor = (token: string, fallback: string) =>\n `var(--chakra-colors-vscode-${token.replaceAll(\".\", \"-\")}, ${fallback})`;\n\nexport const workbenchBackgrounds = {\n sidenav: vscodeColor(\"sideBar.background\", chakraBackgrounds.sidenav),\n main: vscodeColor(\"editor.background\", chakraBackgrounds.main),\n panel: vscodeColor(\"panel.background\", chakraBackgrounds.panel),\n widget: vscodeColor(\"editorWidget.background\", vscodeColor(\"panel.background\", chakraBackgrounds.panel)),\n} as const;\n\nconst workbenchRegionBackgrounds = {\n nav: workbenchBackgrounds.main,\n activity: workbenchBackgrounds.main,\n sidenav: workbenchBackgrounds.sidenav,\n \"main-header\": workbenchBackgrounds.main,\n \"main-left-menu\": workbenchBackgrounds.panel,\n main: workbenchBackgrounds.main,\n \"main-right-menu\": workbenchBackgrounds.panel,\n \"secondary-header\": workbenchBackgrounds.panel,\n \"secondary-left-menu\": workbenchBackgrounds.panel,\n secondary: workbenchBackgrounds.panel,\n \"secondary-right-menu\": workbenchBackgrounds.panel,\n status: workbenchBackgrounds.main,\n overlay: workbenchBackgrounds.widget,\n \"side-header\": workbenchBackgrounds.widget,\n \"side-left-menu\": workbenchBackgrounds.widget,\n side: workbenchBackgrounds.widget,\n \"side-right-menu\": workbenchBackgrounds.widget,\n} as const satisfies Record<WorkbenchRegion, string>;\n\nexport const workbenchFocusBorder = vscodeColor(\"focusBorder\", \"var(--chakra-colors-color-palette-focus-ring)\");\n\nexport const workbenchCommandPaletteBackground = workbenchBackgrounds.widget;\n\nexport const getWorkbenchRegionBackground = (region: WorkbenchRegion) => workbenchRegionBackgrounds[region];\n","import type { PaletteMode } from \"@pstdio/ui\";\nimport { Search, Terminal } from \"lucide-react\";\nimport type { WorkbenchCommandPaletteView } from \"../../core\";\nimport { WorkbenchIcon } from \"../shared/icon\";\n\nexport const SEARCH_MODE_ID = \"search\";\nexport const COMMAND_MODE_ID = \"command\";\nexport const THEME_MODE_ID = \"theme\";\n\nexport const workbenchPaletteModes: PaletteMode[] = [{ id: SEARCH_MODE_ID }, { id: COMMAND_MODE_ID, inputPrefix: \">\" }];\n\nexport const isThemePaletteView = (view: WorkbenchCommandPaletteView) => view === THEME_MODE_ID;\n\nexport const getPaletteViewMode = (view: WorkbenchCommandPaletteView) => {\n if (isThemePaletteView(view)) return THEME_MODE_ID;\n return undefined;\n};\n\nexport const getPaletteViewModes = (view: WorkbenchCommandPaletteView) => {\n if (isThemePaletteView(view)) return undefined;\n\n return workbenchPaletteModes;\n};\n\nexport const getPaletteInitialActiveIndex = (input: {\n view: WorkbenchCommandPaletteView;\n themeInitialActiveIndex: number;\n}) => {\n if (isThemePaletteView(input.view)) return input.themeInitialActiveIndex;\n\n return 0;\n};\n\nexport const getPaletteInputIcon = (input: { view: WorkbenchCommandPaletteView; mode: string | undefined }) => {\n if (isThemePaletteView(input.view)) return <WorkbenchIcon name=\"Palette\" size={16} />;\n if (input.mode === COMMAND_MODE_ID) return <Terminal size={16} aria-hidden=\"true\" />;\n\n return <Search size={16} aria-hidden=\"true\" />;\n};\n\nexport const getPalettePlaceholder = (input: { view: WorkbenchCommandPaletteView; mode: string | undefined }) => {\n if (isThemePaletteView(input.view)) return \"Search themes\";\n if (input.mode === COMMAND_MODE_ID) return \"Run command\";\n\n return \"Search, or type > to run a command\";\n};\n","import type { PaletteEntry } from \"@pstdio/ui\";\nimport { useEffect, useState } from \"react\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { SEARCH_MODE_ID } from \"./palette-view\";\n\nconst RESOURCE_QUERY_LIMIT = 25;\nconst RESOURCE_QUERY_DEBOUNCE_MS = 150;\n\ninterface UseWorkbenchCommandPaletteResourceEntriesInput {\n workbench: WorkbenchCore;\n query: string;\n open: boolean;\n onClose: () => void;\n}\n\n// Fetches extension-provided palette results for the live query (debounced) and maps\n// them to search-mode palette entries. Provider errors are isolated by the registry, so\n// one failing provider never blanks the palette.\nexport const useWorkbenchCommandPaletteResourceEntries = (input: UseWorkbenchCommandPaletteResourceEntriesInput) => {\n const { workbench, query, open, onClose } = input;\n const refreshToken = useWorkbenchStore(workbench.commandPaletteResources.store, (state) => state.refreshToken);\n const [entries, setEntries] = useState<PaletteEntry[]>([]);\n\n useEffect(() => {\n if (!open) {\n setEntries([]);\n return;\n }\n\n // Read so an explicit registry refresh (refreshToken bump) re-runs this query.\n void refreshToken;\n let cancelled = false;\n const handle = setTimeout(() => {\n void workbench.commandPaletteResources.queryProviders({ query, limit: RESOURCE_QUERY_LIMIT }).then((groups) => {\n if (cancelled) return;\n setEntries(\n groups.flatMap((group) =>\n group.results.map((result) => ({\n id: `workbench-command-palette-resource:${result.id}`,\n mode: SEARCH_MODE_ID,\n label: result.label,\n searchText: `${query} ${result.label} ${(result.keywords ?? []).join(\" \")}`.trim(),\n description: result.description,\n group: result.group ?? group.title,\n icon: result.icon ? <WorkbenchIcon name={result.icon} /> : undefined,\n onActivate: () => {\n onClose();\n void runUserAction(workbench, result.label, () => result.activate());\n },\n })),\n ),\n );\n });\n }, RESOURCE_QUERY_DEBOUNCE_MS);\n\n return () => {\n cancelled = true;\n clearTimeout(handle);\n };\n }, [workbench, query, open, refreshToken, onClose]);\n\n return entries;\n};\n","import type { Param, ParamValue, SelectionOption } from \"@pstdio/ui/param-editor\";\nimport {\n type CommandParamEntry,\n type CommandParamValue,\n createCommandFilesParamValue,\n isCommandFilesParamValue,\n isFileUploadValue,\n} from \"./command-palette-params\";\n\nconst asText = (value: CommandParamValue) => (typeof value === \"string\" ? value : \"\");\n\nconst asList = (value: CommandParamValue) => (Array.isArray(value) ? value : []);\n\nexport const commandParamName = (entry: CommandParamEntry) => entry.label;\n\nconst commandParamOptions = (entry: CommandParamEntry): SelectionOption[] =>\n (Array.isArray(entry.options) ? entry.options : []).map((option) => ({\n id: option.value,\n name: option.label,\n icon: option.icon,\n }));\n\n// Structured params (harness, resource, workspace) are normally rendered by the host,\n// which knows how to fetch their options. Without a host renderer they fall back\n// to the JSON they are serialized as, so the command can still be run.\nconst JSON_PARAM_TYPES = new Set([\"json\", \"resource\", \"harness\", \"workspace\"]);\n\n/**\n * Maps a declared command param onto the design-system control that owns that\n * kind of input, so a command dialog is built from the same rows as every other\n * param surface rather than from hand-rolled fields.\n */\nexport const buildCommandParam = (entry: CommandParamEntry, value: CommandParamValue): Param => {\n const base = { id: entry.key, name: commandParamName(entry), description: entry.description };\n\n if (entry.type === \"boolean\") return { ...base, type: \"boolean\", defaultValue: value === true };\n\n if (entry.type === \"number\") return { ...base, type: \"number\", defaultValue: Number(asText(value)) };\n\n if (entry.type === \"markdown\") return { ...base, type: \"markdown\", defaultValue: asText(value) };\n\n if (entry.type === \"files\") {\n return {\n ...base,\n type: \"fileUpload\",\n defaultValue: isCommandFilesParamValue(value) ? value.uploads : [],\n accept: entry.accept,\n multiple: entry.multiple,\n };\n }\n\n if (entry.type === \"multi-select\") {\n return {\n ...base,\n type: \"selection\",\n allowCustomValues: entry.allowCustomValues,\n defaultValue: asList(value),\n options: commandParamOptions(entry),\n multiSelect: true,\n placeholder: `Select ${entry.label.toLowerCase()}`,\n searchable: (Array.isArray(entry.options) ? entry.options.length : 0) > 5,\n };\n }\n\n if ((entry.type === \"select\" || entry.type === \"template\") && Array.isArray(entry.options)) {\n return {\n ...base,\n type: \"selection\",\n allowCustomValues: entry.allowCustomValues,\n defaultValue: asText(value),\n options: commandParamOptions(entry),\n placeholder: `Select ${entry.label.toLowerCase()}`,\n searchable: entry.options.length > 5,\n clearable: !entry.required,\n };\n }\n\n if (entry.type === \"longtext\" || JSON_PARAM_TYPES.has(entry.type)) {\n return { ...base, type: \"text\", defaultValue: asText(value), singleLine: false };\n }\n\n return { ...base, type: \"text\", defaultValue: asText(value), singleLine: true };\n};\n\n/** Narrows an editor value back to what a command param can carry. */\nexport const readCommandParamValue = (value: ParamValue, entry?: CommandParamEntry): CommandParamValue => {\n if (typeof value === \"boolean\") return value;\n if (entry?.type === \"files\") {\n return createCommandFilesParamValue({ uploads: Array.isArray(value) ? value.filter(isFileUploadValue) : [] });\n }\n if (Array.isArray(value)) return value.map(String);\n return String(value ?? \"\");\n};\n","import { ParamEditorRow } from \"@pstdio/ui/param-editor\";\nimport type { ReactNode } from \"react\";\nimport type { WorkbenchCommandExecutionContext } from \"../../core\";\nimport { type CommandParamEntry, type CommandParamValue, isCommandFilesParamValue } from \"./command-palette-params\";\nimport { buildCommandParam, readCommandParamValue } from \"./command-param-descriptors\";\n\nexport interface CommandParamFieldProps {\n entry: CommandParamEntry;\n value: CommandParamValue;\n context?: WorkbenchCommandExecutionContext;\n disabled: boolean;\n onChange: (value: CommandParamValue) => void;\n /** Updates a compound field using its latest stored value. */\n onUpdateValue?: (update: (current: CommandParamValue) => CommandParamValue) => void;\n /** Reports host field validation to the containing command form. */\n onValidationChange?: (error: string | undefined) => void;\n}\n\n// Lets the host supply field UI for param types the workbench cannot render on its\n// own (e.g. harness/workspace selectors backed by host data). Returning a falsy value\n// defers to the built-in field for that entry.\nexport type CommandParamFieldRenderer = (props: CommandParamFieldProps) => ReactNode;\n\nexport const CommandParamField = (props: Omit<CommandParamFieldProps, \"context\">) => {\n const { entry, value, disabled, onChange } = props;\n\n const change = (next: Parameters<typeof readCommandParamValue>[0]) => {\n const nextValue = readCommandParamValue(next, entry);\n if (entry.type !== \"files\" || !isCommandFilesParamValue(value) || !isCommandFilesParamValue(nextValue)) {\n onChange(nextValue);\n return;\n }\n\n const refs = entry.multiple === false && nextValue.uploads.length > 0 ? [] : value.refs;\n onChange({ ...nextValue, refs });\n };\n\n return (\n <ParamEditorRow\n param={buildCommandParam(entry, value)}\n readOnly={disabled}\n onChange={(_id, next) => change(next)}\n />\n );\n};\n","import type { CommandParamOption, CommandParamOptionSource, CommandParamSchema } from \"../../core\";\nimport { type CommandParamValue, normalizeCommandParamValues } from \"./command-palette-params\";\n\ntype Values = Record<string, CommandParamValue>;\nexport interface CommandOptionState {\n key: string;\n status: \"loading\" | \"ready\" | \"error\";\n options: CommandParamOption[];\n error?: string;\n}\nexport type ExecuteOptionCommand = (\n commandId: string,\n args: Record<string, unknown>,\n signal?: AbortSignal,\n) => Promise<unknown>;\nconst valueRef = (value: unknown): value is { kind: \"param-value\"; key: string } =>\n typeof value === \"object\" &&\n value !== null &&\n \"kind\" in value &&\n value.kind === \"param-value\" &&\n \"key\" in value &&\n typeof value.key === \"string\";\nconst argumentsFor = (\n source: CommandParamOptionSource,\n values: Values,\n schema: CommandParamSchema,\n resolved: Record<string, unknown>,\n) =>\n Object.fromEntries(\n Object.entries(source.params ?? {}).map(([key, value]) => {\n if (!valueRef(value)) return [key, value];\n const descriptor = schema[value.key];\n if (descriptor?.resolvedFrom === \"resource\") return [key, resolved[value.key]];\n const normalized = descriptor\n ? normalizeCommandParamValues({ [value.key]: { ...descriptor, required: false } }, values)[value.key]\n : values[value.key];\n return [key, normalized];\n }),\n );\n\nconst readOptions = (source: CommandParamOptionSource, result: unknown): CommandParamOption[] => {\n if (!Array.isArray(result)) throw new Error(\"The option command must return a list.\");\n return result.map((row) => {\n if (\n !row ||\n typeof row !== \"object\" ||\n typeof row[source.valueField] !== \"string\" ||\n typeof row[source.labelField] !== \"string\"\n )\n throw new Error(\"The option command returned an invalid value or label.\");\n return { value: row[source.valueField], label: row[source.labelField] };\n });\n};\n\nexport function createCommandOptionResolver(\n schema: CommandParamSchema,\n execute: ExecuteOptionCommand,\n onChange: (key: string, value: CommandParamValue) => void,\n resolved: Record<string, unknown> = {},\n) {\n const referencedValue = (key: string, values: Values) =>\n schema[key]?.resolvedFrom === \"resource\" ? resolved[key] : values[key];\n const queryKey = (source: CommandParamOptionSource, values: Values) =>\n JSON.stringify([\n source,\n Object.entries(source.params ?? {}).map(([key, value]) => [\n key,\n valueRef(value) ? referencedValue(value.key, values) : value,\n ]),\n ]);\n let snapshot: Record<string, CommandOptionState> = {};\n let values: Values = {};\n let disposed = false;\n const controllers = new Map<string, AbortController>();\n const listeners = new Set<() => void>();\n const requests = new Map<string, number>();\n const sources = Object.entries(schema).flatMap(([key, param]) =>\n param.options && !Array.isArray(param.options) ? [{ key, param, source: param.options }] : [],\n );\n const publish = (key: string, state: CommandOptionState) => {\n snapshot = { ...snapshot, [key]: state };\n for (const listener of listeners) listener();\n };\n const clearInvalidSelection = (key: string, options: CommandParamOption[]) => {\n const offered = new Set(options.map((option) => option.value));\n const current = values[key];\n if (Array.isArray(current)) {\n const next = current.filter((value) => offered.has(value));\n if (next.length !== current.length) onChange(key, next);\n } else if (typeof current === \"string\" && current && !offered.has(current)) onChange(key, \"\");\n };\n const load = async (field: (typeof sources)[number]) => {\n const { key, source, param } = field;\n controllers.get(key)?.abort();\n const controller = new AbortController();\n controllers.set(key, controller);\n const version = (requests.get(key) ?? 0) + 1;\n requests.set(key, version);\n const requestKey = queryKey(source, values);\n publish(key, { key: requestKey, status: \"loading\", options: [] });\n try {\n const options = readOptions(\n source,\n await execute(source.commandId, argumentsFor(source, values, schema, resolved), controller.signal),\n );\n if (disposed || requests.get(key) !== version) return;\n publish(key, { key: requestKey, status: \"ready\", options });\n if (param.allowCustomValues) return;\n clearInvalidSelection(key, options);\n } catch (error) {\n if (disposed || requests.get(key) !== version) return;\n publish(key, {\n key: requestKey,\n status: \"error\",\n options: [],\n error: error instanceof Error ? error.message : String(error),\n });\n }\n };\n return {\n subscribe(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n getSnapshot: () => snapshot,\n update(next: Values) {\n disposed = false;\n values = next;\n for (const field of sources) if (snapshot[field.key]?.key !== queryKey(field.source, values)) void load(field);\n },\n retry(key: string) {\n const field = sources.find((field) => field.key === key);\n if (field && !disposed) void load(field);\n },\n validate(next: Values) {\n const errors: Record<string, string> = {};\n for (const { key, param, source } of sources) {\n const state = snapshot[key];\n if (state?.status !== \"ready\" || state.key !== queryKey(source, next)) {\n errors[key] = \"Wait for the available options to load.\";\n continue;\n }\n if (param.allowCustomValues) continue;\n const value = next[key];\n const selected = Array.isArray(value) ? value : [value].filter(Boolean);\n if (selected.some((value) => !state.options.some((option) => option.value === value)))\n errors[key] = \"Choose a value from the available options.\";\n }\n return errors;\n },\n dispose() {\n disposed = true;\n for (const controller of controllers.values()) controller.abort();\n for (const [key, version] of requests) requests.set(key, version + 1);\n snapshot = {};\n listeners.clear();\n },\n };\n}\n","import { useEffect, useRef, useState, useSyncExternalStore } from \"react\";\nimport type { CommandParamSchema } from \"../../core\";\nimport { createCommandOptionResolver, type ExecuteOptionCommand } from \"./command-option-resolver\";\nimport type { CommandParamValue } from \"./command-palette-params\";\n\nexport const useCommandOptions = (\n schema: CommandParamSchema,\n values: Record<string, CommandParamValue>,\n execute: ExecuteOptionCommand | undefined,\n onChange: (key: string, value: CommandParamValue) => void,\n resolved: Record<string, unknown> = {},\n) => {\n const callbacks = useRef({ execute, onChange });\n callbacks.current = { execute, onChange };\n const [resolver] = useState(() =>\n createCommandOptionResolver(\n schema,\n (id, args, signal) => {\n if (!callbacks.current.execute) return Promise.reject(new Error(\"Option commands are unavailable.\"));\n return callbacks.current.execute(id, args, signal);\n },\n (key, value) => callbacks.current.onChange(key, value),\n resolved,\n ),\n );\n const states = useSyncExternalStore(resolver.subscribe, resolver.getSnapshot, resolver.getSnapshot);\n useEffect(() => {\n resolver.update(values);\n }, [resolver, values]);\n useEffect(() => () => resolver.dispose(), [resolver]);\n return { states, validate: resolver.validate, retry: resolver.retry };\n};\n","import { Box, Button, CloseButton, Dialog, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { AlertMessage, handleDialogAcceptShortcut, ScrollArea } from \"@pstdio/ui\";\nimport { Fragment, useState } from \"react\";\nimport type { Command, RegisteredMenuItem, WorkbenchCommandExecutionContext } from \"../../core\";\nimport type { ExecuteOptionCommand } from \"./command-option-resolver\";\nimport { CommandOptionStatus } from \"./command-option-status\";\nimport {\n buildCommandParamInitialValues,\n type CommandParamEntry,\n type CommandParamValue,\n isCommandFilesParamValue,\n listCommandParamEntries,\n mergeCommandParamArgs,\n normalizeCommandParamValues,\n resolveCommandResourceParams,\n} from \"./command-palette-params\";\nimport { CommandParamField, type CommandParamFieldRenderer } from \"./command-param-field\";\nimport { useCommandOptions } from \"./use-command-options\";\n\nexport interface CommandParamsRequest {\n record: { command: Pick<Command, \"id\" | \"label\" | \"description\" | \"params\" | \"resourceMutation\"> };\n action?: RegisteredMenuItem;\n label: string;\n // Confirm-button label for the dialog (defaults to \"Run\").\n submitLabel?: string;\n args?: unknown;\n context?: WorkbenchCommandExecutionContext;\n}\n\nexport type { CommandParamFieldProps, CommandParamFieldRenderer } from \"./command-param-field\";\n\ninterface CommandParamsDialogProps {\n request: CommandParamsRequest | null;\n renderParamField?: CommandParamFieldRenderer;\n executeOptionCommand?: ExecuteOptionCommand;\n prepareArgs?: (input: {\n commandId: string;\n args: unknown;\n context?: WorkbenchCommandExecutionContext;\n onArgsChange: (args: unknown) => void;\n }) => Promise<unknown>;\n onRunError?: (label: string, error: unknown) => void;\n onClose: () => void;\n onRun: (input: {\n commandId: string;\n args: unknown;\n context?: WorkbenchCommandExecutionContext;\n label: string;\n }) => Promise<void>;\n}\n\nconst isFilled = (entry: CommandParamEntry, value: CommandParamValue) => {\n if (entry.type === \"boolean\") return value !== undefined;\n if (isCommandFilesParamValue(value)) return value.refs.length + value.uploads.length > 0;\n if (Array.isArray(value)) return value.length > 0;\n return typeof value === \"string\" && value.length > 0;\n};\n\nexport const CommandParamsDialog = (props: CommandParamsDialogProps) => {\n const [current, setCurrent] = useState({ request: props.request, revision: 0 });\n if (current.request !== props.request) {\n setCurrent({ request: props.request, revision: current.revision + 1 });\n }\n return props.request ? <CommandParamsForm key={current.revision} {...props} request={props.request} /> : null;\n};\n\nconst CommandParamsForm = (props: CommandParamsDialogProps & { request: CommandParamsRequest }) => {\n const { request, renderParamField, prepareArgs, executeOptionCommand, onClose, onRun, onRunError } = props;\n const [values, setValues] = useState<Record<string, CommandParamValue>>(() =>\n buildCommandParamInitialValues(request.record.command.params, request.args, request.context),\n );\n const [resolved] = useState(() =>\n resolveCommandResourceParams(request.record.command.params, request.args, request.context),\n );\n const [error, setError] = useState<string | undefined>();\n const [submitting, setSubmitting] = useState(false);\n const [customFieldErrors, setCustomFieldErrors] = useState<Record<string, string | undefined>>({});\n const entries = listCommandParamEntries(request?.record.command.params);\n\n const close = () => {\n if (submitting) return;\n onClose();\n };\n\n const setValue = (key: string, value: CommandParamValue) => {\n setValues((current) => ({ ...current, [key]: value }));\n };\n\n const options = useCommandOptions(\n request.record.command.params ?? {},\n values,\n executeOptionCommand,\n setValue,\n resolved,\n );\n const [fieldErrors, setFieldErrors] = useState<Record<string, string>>({});\n\n const run = async () => {\n if (!request || submitting) return;\n const invalid = options.validate(values);\n for (const [key, error] of Object.entries(customFieldErrors)) {\n if (error) invalid[key] = error;\n }\n setFieldErrors(invalid);\n if (Object.keys(invalid).length > 0) return;\n setSubmitting(true);\n setError(undefined);\n try {\n const params = normalizeCommandParamValues(request.record.command.params, values);\n const args = mergeCommandParamArgs(request.args, { ...resolved, ...params }, request.record.command.params);\n const preparedArgs = prepareArgs\n ? await prepareArgs({\n commandId: request.record.command.id,\n args,\n context: request.context,\n onArgsChange: (nextArgs) =>\n setValues(buildCommandParamInitialValues(request.record.command.params, nextArgs, request.context)),\n })\n : args;\n const submission = {\n commandId: request.record.command.id,\n args: preparedArgs,\n context: request.context,\n label: request.label,\n };\n if (request.record.command.resourceMutation) {\n onClose();\n void onRun(submission).catch((caught) => onRunError?.(request.label, caught));\n return;\n }\n await onRun(submission);\n onClose();\n } catch (caught) {\n setError(caught instanceof Error ? caught.message : \"Command failed.\");\n } finally {\n setSubmitting(false);\n }\n };\n\n const isValid =\n Object.keys(options.validate(values)).length === 0 &&\n !Object.values(customFieldErrors).some(Boolean) &&\n entries.every((entry) => !entry.required || isFilled(entry, values[entry.key]));\n\n return (\n <Dialog.Root\n open={request !== null}\n size=\"lg\"\n scrollBehavior=\"inside\"\n onOpenChange={(details) => !details.open && close()}\n >\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content\n display=\"flex\"\n flexDirection=\"column\"\n maxH=\"calc(100% - 48px)\"\n onKeyDownCapture={(event) => handleDialogAcceptShortcut(event, () => void run(), isValid && !submitting)}\n >\n <Dialog.Header>\n <Stack gap=\"2xs\" minW=\"0\">\n <Dialog.Title>{request?.label ?? \"Run command\"}</Dialog.Title>\n {request?.record.command.description ? (\n <Text textStyle=\"paragraph/XS/regular\" color=\"fg.muted\" truncate>\n {request.record.command.description}\n </Text>\n ) : null}\n </Stack>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" disabled={submitting} />\n </Dialog.CloseTrigger>\n </Dialog.Header>\n <Dialog.Body flex=\"1\" minH=\"0\" p=\"0\">\n <ScrollArea h=\"full\" contentProps={{ px: \"sm\", py: \"md\" }}>\n {/* Fields carry the param editor's own row padding, so the form is a\n flush stack of rows rather than rows spaced twice over. */}\n <Stack gap=\"0\">\n {entries.map((entry) => {\n const state = options.states[entry.key];\n const dynamic = entry.options && !Array.isArray(entry.options);\n const fieldProps = {\n entry: dynamic ? { ...entry, options: state?.options ?? [] } : entry,\n value: values[entry.key],\n disabled: submitting || Boolean(dynamic && state?.status !== \"ready\"),\n onChange: (value: CommandParamValue) => setValue(entry.key, value),\n onUpdateValue: (update: (current: CommandParamValue) => CommandParamValue) =>\n setValues((current) => ({ ...current, [entry.key]: update(current[entry.key]) })),\n onValidationChange: (error: string | undefined) =>\n setCustomFieldErrors((current) =>\n current[entry.key] === error ? current : { ...current, [entry.key]: error },\n ),\n };\n const custom = renderParamField?.({ ...fieldProps, context: request?.context });\n return (\n <Fragment key={entry.key}>\n {custom ?? <CommandParamField {...fieldProps} />}\n {dynamic ? <CommandOptionStatus state={state} onRetry={() => options.retry(entry.key)} /> : null}\n {fieldErrors[entry.key] ? (\n <Text role=\"alert\" px=\"sm\" textStyle=\"paragraph/XS/regular\" color=\"fg.error\">\n {fieldErrors[entry.key]}\n </Text>\n ) : null}\n </Fragment>\n );\n })}\n </Stack>\n </ScrollArea>\n </Dialog.Body>\n {/* Outside the scroll area, so the reason stays next to Run however long the form is. */}\n {error ? (\n <Box px=\"lg\" pb=\"md\">\n <AlertMessage status=\"error\" title={error} role=\"alert\" />\n </Box>\n ) : null}\n <Dialog.Footer>\n <HStack gap=\"2\">\n <Button size=\"sm\" variant=\"ghost\" disabled={submitting} onClick={close}>\n Cancel\n </Button>\n <Button size=\"sm\" variant=\"primary\" disabled={!isValid} loading={submitting} onClick={() => void run()}>\n {request?.submitLabel ?? \"Run\"}\n </Button>\n </HStack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { AlertMessage, DeleteConfirmationModal } from \"@pstdio/ui\";\nimport { useState } from \"react\";\nimport type { WorkbenchCore } from \"../../core\";\nimport type { WorkbenchCommandConfirmation } from \"../../core/controllers/command-palette/command-palette-controller\";\nimport { reportUserActionError } from \"../../core/shared/run-user-action\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { type CommandParamFieldRenderer, CommandParamsDialog } from \"./command-params-dialog\";\n\ninterface PaletteParamsDialogProps {\n workbench: WorkbenchCore;\n renderParamField?: CommandParamFieldRenderer;\n}\n\nexport const PaletteParamsDialog = (props: PaletteParamsDialogProps) => {\n const { workbench, renderParamField } = props;\n const request = useWorkbenchStore(workbench.commandPalette.store, (state) => state.paramsRequest);\n const confirmation = useWorkbenchStore(workbench.commandPalette.store, (state) => state.confirmation);\n return (\n <>\n {confirmation ? <CommandConfirmationDialog key={confirmation.label} confirmation={confirmation} /> : null}\n <CommandParamsDialog\n request={request}\n renderParamField={renderParamField}\n executeOptionCommand={(id, args, signal) =>\n workbench.commands.executeCommand(id, args, { ...request?.context, signal })\n }\n prepareArgs={(input) =>\n workbench.commands.prepareCommandArgs(input.commandId, input.args, input.context, input.onArgsChange)\n }\n onRunError={(label, error) => reportUserActionError(workbench, label, error)}\n onClose={() => workbench.commandPalette.clearParams()}\n // The dialog shows a failure itself and stays open, so let the error reach it.\n onRun={async ({ commandId, args, context }) => {\n await workbench.commands.executeCommand(commandId, args, context);\n }}\n />\n </>\n );\n};\n\nexport const CommandConfirmationDialog = (props: { confirmation: WorkbenchCommandConfirmation }) => {\n const { confirmation } = props;\n const [error, setError] = useState<string>();\n return (\n <DeleteConfirmationModal\n open\n headline={`${confirmation.label}?`}\n notificationText={confirmation.description ?? \"This cannot be undone.\"}\n buttonText={confirmation.buttonLabel ?? \"Delete\"}\n onClose={() => confirmation.resolve(false)}\n onDelete={async () => {\n setError(undefined);\n try {\n await confirmation.onConfirm?.();\n confirmation.resolve(true);\n } catch (caught) {\n setError(caught instanceof Error ? caught.message : \"Could not save. Try again.\");\n throw caught;\n }\n }}\n >\n {error ? <AlertMessage status=\"error\" title={error} role=\"alert\" /> : null}\n </DeleteConfirmationModal>\n );\n};\n","import type {\n RegisteredWidgetContribution,\n ResourceRef,\n WorkbenchCompositionAddablePanel,\n WorkbenchCore,\n WorkbenchPanelRegion,\n} from \"../../core\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\n\ninterface OpenPanelWidgetInput {\n workbench: WorkbenchCore;\n widget: RegisteredWidgetContribution;\n region: WorkbenchPanelRegion;\n resource?: ResourceRef;\n pinned?: boolean;\n open?: WorkbenchCompositionAddablePanel[\"open\"];\n}\n\nexport const getPanelLabel = (region: WorkbenchPanelRegion) => {\n if (region === \"secondary\") return \"Secondary\";\n if (region === \"side\") return \"Side\";\n return \"Main\";\n};\n\nexport const openPanelWidget = async (input: OpenPanelWidgetInput) => {\n const { open, pinned, region, resource, widget, workbench } = input;\n\n if (open) {\n await open(resource);\n } else if (widget.openCommand) {\n await runUserAction(workbench, widget.title, async () => {\n await workbench.commands.executeCommand(widget.openCommand!.commandId, widget.openCommand!.args, {\n source: \"panel-add\",\n ...(resource ? { resource } : {}),\n });\n const active = workbench.layout.getActivePanel();\n if (active?.panelId === widget.id) workbench.movePanel(active.instanceId, region);\n });\n } else {\n const widgetResource = widget.resourceKinds?.length || widget.canOpen ? resource : undefined;\n // Adding a tab from the region's \"+\" tray is the user asking for a tab that stays.\n // The resource only binds the tab to its location; the tab is the widget, so it\n // keeps the widget's title instead of inheriting the location resource's label.\n workbench.layout.openWidget(widget.id, {\n region,\n resource: widgetResource,\n title: widget.title,\n closable: true,\n pinned,\n role: region === \"main\" ? \"location\" : \"sub-panel\",\n tabRetention: \"persistent\",\n });\n }\n\n if (region === \"secondary\") {\n workbench.shell.setRegionOpen(\"secondary\", true);\n }\n if (region === \"side\" && workbench.sidePanel.getMode() === \"closed\") {\n workbench.sidePanel.setMode(\"attached\");\n }\n};\n","import type { PaletteEntry } from \"@pstdio/ui\";\nimport { type WorkbenchCore, workbenchPanelRegions } from \"../../core\";\nimport { getPanelLabel, openPanelWidget } from \"../region/panel-widget-open\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport type { WorkbenchCompositionPanelsByRegion } from \"../shared/use-workbench-composition-panels\";\nimport { COMMAND_MODE_ID } from \"./palette-view\";\n\nexport const createWorkbenchPanelWidgetPaletteEntries = (input: {\n workbench: WorkbenchCore;\n onClose: () => void;\n panelsByRegion?: WorkbenchCompositionPanelsByRegion;\n}) => {\n const { onClose, panelsByRegion, workbench } = input;\n const resource = workbench.getPrimaryResource();\n return workbenchPanelRegions.flatMap((region) =>\n (panelsByRegion?.[region] ?? workbench.composition.panelsFor(region)).addable.map((panel): PaletteEntry => {\n const widget = panel.contribution;\n const panelLabel = getPanelLabel(region);\n const label = `Open ${widget.title} in ${panelLabel} Panel`;\n\n return {\n id: `workbench-panel:${region}:${widget.id}`,\n mode: COMMAND_MODE_ID,\n label,\n searchText: `${label} ${widget.id}`,\n group: \"Panels\",\n icon: widget.icon ? <WorkbenchIcon name={widget.icon} /> : undefined,\n onActivate: () => {\n onClose();\n openPanelWidget({ workbench, widget, region, resource, pinned: panel.pinned, open: panel.open });\n },\n };\n }),\n );\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type { PaletteEntry } from \"@pstdio/ui\";\nimport type { ResourceBrowseEntry, WorkbenchCore } from \"../../core\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { SEARCH_MODE_ID } from \"./palette-view\";\nexport interface WorkbenchResourcePaletteEntry extends PaletteEntry {\n resourceKey: string;\n mode: typeof SEARCH_MODE_ID;\n}\nconst createResourceEntry = (input: {\n workbench: WorkbenchCore;\n entry: ResourceBrowseEntry;\n onClose: () => void;\n}): WorkbenchResourcePaletteEntry | undefined => {\n const { entry, onClose, workbench } = input;\n const { resource } = entry;\n const label = entry.resource.label ?? resourceKey(entry.resource);\n const kind = workbench.resources.getKind(resource.type);\n const icon = resource.icon ?? kind?.icon;\n const activate = entry.activate;\n if (!activate) return undefined;\n return {\n id: `workbench-resource:${resourceKey(resource)}`,\n resourceKey: resourceKey(resource),\n mode: SEARCH_MODE_ID,\n label,\n searchText: entry.searchText ?? label,\n description: entry.description,\n group: entry.group,\n icon: icon ? <WorkbenchIcon name={icon} /> : undefined,\n onActivate: () => {\n onClose();\n void runUserAction(workbench, label, () => activate(resource));\n },\n };\n};\nexport const createWorkbenchResourcePaletteEntries = (input: {\n workbench: WorkbenchCore;\n query: string;\n onClose: () => void;\n}) => {\n const { onClose, query, workbench } = input;\n return workbench.resources\n .listResources(query)\n .map((entry) => createResourceEntry({ workbench, entry, onClose }))\n .filter((entry): entry is WorkbenchResourcePaletteEntry => entry !== undefined);\n};\n","import type { PaletteEntry, ThemePreference, ThemePreferenceOption } from \"@pstdio/ui\";\nimport { WorkbenchIcon } from \"../shared/icon\";\n\nconst THEME_MODE_ID = \"theme\";\n\nexport interface WorkbenchThemePaletteEntry extends PaletteEntry {\n themePreference: ThemePreference;\n mode: typeof THEME_MODE_ID;\n}\n\nconst getThemeIconName = (preference: ThemePreference) => {\n if (preference === \"pstdio-light\") return \"Sun\";\n if (preference === \"pstdio-dark\") return \"Moon\";\n return \"Palette\";\n};\n\nconst getThemePreferenceLabel = (themePreference: ThemePreferenceOption) => themePreference.title ?? themePreference.id;\n\nexport const getThemePaletteEntryIndex = (\n entries: readonly WorkbenchThemePaletteEntry[],\n themePreference: ThemePreference,\n) =>\n Math.max(\n entries.findIndex((entry) => entry.themePreference === themePreference),\n 0,\n );\n\nconst THEME_GROUP_LABELS = { light: \"Light\", dark: \"Dark\" } as const;\n\n// Group entries by appearance mode (lights first) so cycling the picker stays\n// within one mode instead of flashing light/dark/light on every step.\nconst byModeThenLabel = (a: ThemePreferenceOption, b: ThemePreferenceOption) => {\n if (a.mode !== b.mode) return a.mode === \"light\" ? -1 : 1;\n return getThemePreferenceLabel(a).localeCompare(getThemePreferenceLabel(b));\n};\n\nexport const createWorkbenchThemePreferencePaletteEntries = (input: {\n /** The saved theme. A theme shown only as a preview is never marked as selected. */\n chosenThemePreference: ThemePreference;\n themePreferences: readonly ThemePreferenceOption[];\n setThemePreference: (themePreference: ThemePreference) => void;\n onClose: () => void;\n}) => {\n const { chosenThemePreference, onClose, setThemePreference, themePreferences } = input;\n\n return [...themePreferences].sort(byModeThenLabel).map((preference): WorkbenchThemePaletteEntry => {\n const label = getThemePreferenceLabel(preference);\n\n return {\n id: `theme:${preference.id}`,\n themePreference: preference.id,\n mode: THEME_MODE_ID,\n label,\n searchText: `theme color appearance ${preference.mode} ${preference.id} ${label}`,\n group: THEME_GROUP_LABELS[preference.mode],\n icon: <WorkbenchIcon name={getThemeIconName(preference.id)} />,\n isSelected: preference.id === chosenThemePreference,\n onActivate: () => {\n setThemePreference(preference.id);\n onClose();\n },\n };\n });\n};\n","import { Box } from \"@chakra-ui/react\";\nimport { Palette, type PaletteEntry, PaletteShortcut, useThemePreference } from \"@pstdio/ui\";\nimport { type ReactNode, useEffect, useState } from \"react\";\nimport {\n type Command,\n getNavigationTargetKey,\n type KeybindingSequence,\n type MenuPath,\n type RegisteredCommand,\n type RegisteredMenuItem,\n type WorkbenchCommandExecutionContext,\n type WorkbenchCore,\n workbenchCommandPaletteMenuPath,\n} from \"../../core\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { useWorkbenchCompositionPanels } from \"../shared/use-workbench-composition-panels\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { workbenchCommandPaletteBackground } from \"../theme/workbench-theme-background\";\nimport { hasCommandParameters } from \"./command-palette-params\";\nimport { useWorkbenchCommandPaletteResourceEntries } from \"./command-palette-resources\";\nimport type { CommandParamFieldRenderer, CommandParamsRequest } from \"./command-params-dialog\";\nimport { PaletteParamsDialog } from \"./palette-params-dialog\";\nimport {\n COMMAND_MODE_ID,\n getPaletteInitialActiveIndex,\n getPaletteInputIcon,\n getPalettePlaceholder,\n getPaletteViewMode,\n getPaletteViewModes,\n isThemePaletteView,\n} from \"./palette-view\";\nimport { createWorkbenchPanelWidgetPaletteEntries } from \"./panel-widget-palette\";\nimport { createWorkbenchResourcePaletteEntries } from \"./resource-palette\";\nimport {\n createWorkbenchThemePreferencePaletteEntries,\n getThemePaletteEntryIndex,\n type WorkbenchThemePaletteEntry,\n} from \"./theme-palette\";\n\nexport type { WorkbenchResourcePaletteEntry } from \"./resource-palette\";\nexport { createWorkbenchResourcePaletteEntries };\n\ninterface WorkbenchCommandPaletteProps {\n workbench: WorkbenchCore;\n open: boolean;\n menuPath?: MenuPath;\n initialQuery?: string;\n renderParamField?: CommandParamFieldRenderer;\n onClose: () => void;\n}\n\nexport interface WorkbenchCommandPaletteEntry extends PaletteEntry {\n commandId: string;\n mode: typeof COMMAND_MODE_ID;\n}\n\ninterface WorkbenchCommandPaletteRecord {\n record: RegisteredCommand;\n action?: RegisteredMenuItem;\n}\n\nconst getCommandSearchText = (command: Command, label: string) =>\n [label, command.id, command.description, command.category].filter(Boolean).join(\" \");\n\nconst createShortcutByAction = (workbench: WorkbenchCore) =>\n new Map(\n workbench.keybindings\n .listKeybindings()\n .map((binding) => [getNavigationTargetKey(binding.action), binding.keybinding]),\n );\n\nconst getShortcut = (binding: KeybindingSequence | undefined): ReactNode =>\n binding ? <PaletteShortcut binding={binding} /> : undefined;\n\nconst commandExecutionContext = (workbench: WorkbenchCore): WorkbenchCommandExecutionContext | undefined => {\n const resource = workbench.getPrimaryResource();\n return resource ? { resource } : undefined;\n};\n\nconst executePaletteCommand = async (input: {\n workbench: WorkbenchCore;\n commandId: string;\n args: unknown;\n context?: WorkbenchCommandExecutionContext;\n label: string;\n}) => {\n const { args, commandId, context, label, workbench } = input;\n await runUserAction(workbench, label, () => workbench.commands.executeCommand(commandId, args, context));\n};\n\nconst createEntry = (input: {\n workbench: WorkbenchCore;\n record: RegisteredCommand;\n action?: RegisteredMenuItem;\n shortcutByAction: Map<string, KeybindingSequence>;\n onClose: () => void;\n onRequestParams?: (request: CommandParamsRequest) => void;\n}): WorkbenchCommandPaletteEntry | null => {\n const { action, onClose, onRequestParams, record, workbench, shortcutByAction } = input;\n const args = action?.args;\n\n if (!workbench.commands.isCommandVisible(record.command.id, args)) return null;\n\n const label = action?.label ?? record.command.label;\n const icon = action?.icon ?? record.command.icon;\n const group = action?.group ?? record.command.category;\n\n return {\n id: `workbench-command:${record.command.id}`,\n commandId: record.command.id,\n mode: COMMAND_MODE_ID,\n label,\n searchText: getCommandSearchText(record.command, label),\n description: record.command.description,\n group,\n icon: icon ? <WorkbenchIcon name={icon} /> : undefined,\n shortcut: getShortcut(\n shortcutByAction.get(getNavigationTargetKey({ kind: \"command\", commandId: record.command.id, args })) ??\n shortcutByAction.get(\n getNavigationTargetKey({\n kind: \"command\",\n commandId: action?.sourceCommandId ?? record.command.id,\n args,\n }),\n ),\n ),\n onActivate: () => {\n const context = commandExecutionContext(workbench);\n onClose();\n if (hasCommandParameters(record.command.params) && onRequestParams) {\n onRequestParams({ record, action, label, args, context });\n return;\n }\n void executePaletteCommand({ workbench, commandId: record.command.id, args, context, label });\n },\n };\n};\n\nconst getRecordGroup = (item: WorkbenchCommandPaletteRecord) =>\n item.action?.group ?? item.record.command.category ?? \"\";\n\nconst getRecordOrder = (item: WorkbenchCommandPaletteRecord) => item.action?.order ?? 0;\n\nconst byCommandPaletteGroup = (left: WorkbenchCommandPaletteRecord, right: WorkbenchCommandPaletteRecord) => {\n const groupComparison = getRecordGroup(left).localeCompare(getRecordGroup(right));\n if (groupComparison !== 0) return groupComparison;\n\n return getRecordOrder(left) - getRecordOrder(right);\n};\n\nconst listCommandRecords = (workbench: WorkbenchCore, menuPath?: MenuPath) => {\n if (!menuPath) {\n return workbench.commands.listCommands().map((record) => ({ record, action: undefined }));\n }\n\n return workbench.layout\n .listMenuItems(menuPath)\n .filter((action) => workbench.context.matches(action.when))\n .map((action) => {\n const record = workbench.commands.getCommand(action.commandId);\n return record ? { record, action } : null;\n })\n .filter((item): item is { record: RegisteredCommand; action: RegisteredMenuItem } => item !== null);\n};\n\nexport const createWorkbenchCommandPaletteEntries = (input: {\n workbench: WorkbenchCore;\n menuPath?: MenuPath;\n onClose: () => void;\n onRequestParams?: (request: CommandParamsRequest) => void;\n}) => {\n const { menuPath, onClose, onRequestParams, workbench } = input;\n const shortcutByAction = createShortcutByAction(workbench);\n\n return listCommandRecords(workbench, menuPath)\n .sort(byCommandPaletteGroup)\n .map(({ record, action }) => createEntry({ workbench, record, action, shortcutByAction, onClose, onRequestParams }))\n .filter((entry): entry is WorkbenchCommandPaletteEntry => entry !== null);\n};\n\nexport const WorkbenchCommandPalette = (props: WorkbenchCommandPaletteProps) => {\n const {\n workbench,\n open,\n menuPath = workbenchCommandPaletteMenuPath,\n initialQuery = \"\",\n renderParamField,\n onClose,\n } = props;\n const { chosenThemePreference, themePreferences, setThemePreference, previewThemePreference } = useThemePreference();\n const view = useWorkbenchStore(workbench.commandPalette.store, (state) => state.view);\n useWorkbenchStore(workbench.keybindings.store, (state) => state.keybindings);\n useWorkbenchStore(workbench.commands.store, (state) => state.commands);\n useWorkbenchStore(workbench.layout.menuStore, (state) => state.itemsByPath);\n const [liveQuery, setLiveQuery] = useState(initialQuery);\n const commandPaletteResourceEntries = useWorkbenchCommandPaletteResourceEntries({\n workbench,\n query: liveQuery,\n open,\n onClose,\n });\n const compositionPanels = useWorkbenchCompositionPanels(workbench);\n\n // A theme preview is never saved, so leaving the picker in any way shows the chosen theme again.\n const closePalette = () => {\n previewThemePreference(null);\n onClose();\n };\n\n const exitPickerView = () => {\n previewThemePreference(null);\n workbench.commandPalette.open({ view: \"main\" });\n };\n\n const commandEntries = createWorkbenchCommandPaletteEntries({\n workbench,\n menuPath,\n onClose,\n onRequestParams: (request) => workbench.commandPalette.requestParams(request),\n });\n const resourceEntries = createWorkbenchResourcePaletteEntries({ workbench, query: initialQuery, onClose });\n const themeEntries = createWorkbenchThemePreferencePaletteEntries({\n chosenThemePreference,\n themePreferences,\n setThemePreference,\n onClose,\n });\n const panelWidgetEntries = createWorkbenchPanelWidgetPaletteEntries({\n workbench,\n onClose,\n panelsByRegion: compositionPanels,\n });\n const entries = [\n ...resourceEntries,\n ...commandPaletteResourceEntries,\n ...commandEntries,\n ...panelWidgetEntries,\n ...themeEntries,\n ];\n const themeInitialActiveIndex = getThemePaletteEntryIndex(themeEntries, chosenThemePreference);\n const isThemeView = isThemePaletteView(view);\n const initialActiveIndex = getPaletteInitialActiveIndex({\n view,\n themeInitialActiveIndex,\n });\n const activeViewMode = getPaletteViewMode(view);\n const activeViewModes = getPaletteViewModes(view);\n\n useEffect(() => {\n if (open) setLiveQuery(initialQuery);\n }, [initialQuery, open]);\n\n useEffect(() => {\n if (!open || !isThemeView) previewThemePreference(null);\n }, [isThemeView, open, previewThemePreference]);\n\n return (\n <>\n <Box\n display=\"contents\"\n css={{\n \"& [data-scope=dialog][data-part=backdrop], & [data-scope=dialog][data-part=positioner]\": {\n position: \"absolute\",\n inset: \"0\",\n },\n \"& [data-scope=dialog][data-part=positioner]\": {\n alignItems: \"center\",\n justifyContent: \"center\",\n h: \"full\",\n minH: \"0\",\n padding: \"md\",\n w: \"full\",\n },\n \"& [data-scope=dialog][data-part=content]\": { background: workbenchCommandPaletteBackground },\n }}\n >\n <Palette\n open={open}\n entries={entries}\n initialQuery={initialQuery}\n initialActiveIndex={initialActiveIndex}\n mode={activeViewMode}\n modes={activeViewModes}\n resetKey={`${view}:${initialQuery}`}\n inputIcon={({ mode }) => getPaletteInputIcon({ view, mode })}\n placeholder={({ mode }) => getPalettePlaceholder({ view, mode })}\n emptyLabel=\"No results found.\"\n onActiveEntryChange={(entry) => {\n if (!open || !isThemeView) return;\n const themeEntry = entry as WorkbenchThemePaletteEntry | null;\n if (!themeEntry?.themePreference) return;\n previewThemePreference(\n themeEntry.themePreference === chosenThemePreference ? null : themeEntry.themePreference,\n );\n }}\n onQueryChange={setLiveQuery}\n onClose={closePalette}\n onEscape={(ctx) => {\n if (isThemePaletteView(view)) {\n exitPickerView();\n return true;\n }\n\n if (ctx.query.length > 0) {\n ctx.setQuery(\"\");\n ctx.setActiveIndex(0);\n return true;\n }\n\n closePalette();\n return true;\n }}\n />\n </Box>\n <PaletteParamsDialog workbench={workbench} renderParamField={renderParamField} />\n </>\n );\n};\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\nimport { type ReactNode, useEffect, useRef } from \"react\";\nimport type { WorkbenchCore, WorkbenchFocusRegionId } from \"../../core\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\ninterface WorkbenchFocusRegionProps extends BoxProps {\n workbench: WorkbenchCore;\n region: WorkbenchFocusRegionId;\n children: ReactNode;\n}\n\nexport const WorkbenchFocusRegion = (props: WorkbenchFocusRegionProps) => {\n const { workbench, region, children, ...boxProps } = props;\n const activeRegion = useWorkbenchStore(workbench.focus.store, (state) => state.activeRegion);\n const ref = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const element = ref.current;\n if (!element || activeRegion !== region) return;\n if (element.contains(document.activeElement)) return;\n element.focus({ preventScroll: true });\n }, [activeRegion, region]);\n\n return (\n <Box\n ref={ref}\n tabIndex={-1}\n outline=\"none\"\n onFocusCapture={(event) => {\n if (event.currentTarget.contains(event.target)) workbench.focus.setActiveRegion(region);\n }}\n {...boxProps}\n >\n {children}\n </Box>\n );\n};\n","import type {\n ContextKeyValue,\n MenuPath,\n RegisteredCommand,\n RegisteredMenuItem,\n ResourceRef,\n WorkbenchCore,\n} from \"../../core\";\nimport { matchesContextExpression, scopeWorkbenchResourceContextValues } from \"../../core\";\nimport { byContributionPriority } from \"../../core/shared/contributions/metadata\";\n\nexport interface WorkbenchMenuItem {\n id: string;\n commandId: string;\n label: string;\n description?: string;\n icon: string | undefined;\n iconSrc?: string;\n overflowLabel?: string;\n group: string | undefined;\n args: unknown;\n disabled: boolean;\n separatorBefore?: boolean;\n readOnly?: true;\n}\n\ninterface WorkbenchMenuItemState {\n itemsByPath: Record<string, RegisteredMenuItem[]>;\n commands: Record<string, RegisteredCommand>;\n contextValues: Record<string, ContextKeyValue>;\n}\n\nconst menuPathKey = (path: MenuPath) => path.join(\"/\");\n\ninterface WorkbenchMenuItemContext {\n resource?: ResourceRef | undefined;\n}\n\nconst resolveContextValues = (state: WorkbenchMenuItemState, context: WorkbenchMenuItemContext | undefined) =>\n context ? scopeWorkbenchResourceContextValues(state.contextValues, context.resource) : state.contextValues;\n\nexport const listWorkbenchMenuItemsFromState = (\n state: WorkbenchMenuItemState,\n menuPath: MenuPath,\n context?: WorkbenchMenuItemContext,\n) => {\n const contextValues = resolveContextValues(state, context);\n\n return [...(state.itemsByPath[menuPathKey(menuPath)] ?? [])]\n .sort((left, right) => {\n const leftOrder = left.order ?? 0;\n const rightOrder = right.order ?? 0;\n return leftOrder - rightOrder || byContributionPriority(left, right);\n })\n .filter((action) => matchesContextExpression(contextValues, action.when))\n .map((action, index) => {\n const record = state.commands[action.commandId];\n if (!record) return null;\n\n const args = action.args;\n if (record.handler.isVisible?.(args) === false) return null;\n\n return {\n id: `${action.commandId}:${index}`,\n commandId: record.command.id,\n label: action.label ?? record.command.label,\n ...((action.description ?? record.command.description)\n ? { description: action.description ?? record.command.description }\n : {}),\n icon: action.icon ?? record.command.icon,\n ...(action.iconSrc ? { iconSrc: action.iconSrc } : {}),\n ...(action.overflowLabel ? { overflowLabel: action.overflowLabel } : {}),\n group: action.group,\n args,\n disabled: action.readOnly === true || record.handler.isEnabled?.(args) === false,\n ...(action.readOnly ? { readOnly: true } : {}),\n } satisfies WorkbenchMenuItem;\n })\n .filter((item): item is WorkbenchMenuItem => item !== null);\n};\n\nexport const listWorkbenchMenuItems = (\n workbench: WorkbenchCore,\n menuPath: MenuPath,\n context?: WorkbenchMenuItemContext,\n) =>\n listWorkbenchMenuItemsFromState(\n {\n itemsByPath: workbench.layout.menuStore.getState().itemsByPath,\n commands: workbench.commands.store.getState().commands,\n contextValues: workbench.context.store.getState().values,\n },\n menuPath,\n context,\n );\n","import type { WorkbenchMenuItem } from \"../menus/menu-items\";\n\nexport type WorkbenchHeaderOverflowItem = WorkbenchMenuItem & { separatorBefore?: boolean };\n\nexport interface WorkbenchHeaderActionGroups {\n inlineItems: WorkbenchMenuItem[];\n overflowItems: WorkbenchHeaderOverflowItem[];\n}\n\nconst isKernelAction = (item: WorkbenchMenuItem) => item.group === \"kernel\";\n\nconst isOverflowAction = (item: WorkbenchMenuItem) => item.group === \"overflow\" || isKernelAction(item);\n\nconst withLeadingSeparator = (items: WorkbenchMenuItem[], enabled: boolean) => {\n if (!enabled || items.length === 0) return items;\n\n const [first, ...rest] = items;\n if (!first) return rest;\n\n return [{ ...first, separatorBefore: true as const }, ...rest];\n};\n\nconst resolveOverflowItems = (items: WorkbenchMenuItem[]) => {\n const regularItems = items.filter((item) => !isKernelAction(item));\n const kernelItems = items.filter(isKernelAction);\n\n return [...regularItems, ...withLeadingSeparator(kernelItems, regularItems.length > 0)];\n};\n\nexport const resolveWorkbenchHeaderActionGroups = (items: WorkbenchMenuItem[]) =>\n ({\n inlineItems: items.filter((item) => !isOverflowAction(item)),\n overflowItems: resolveOverflowItems(items.filter(isOverflowAction)),\n }) satisfies WorkbenchHeaderActionGroups;\n\nexport const resolveWorkbenchHeaderOverflowLabel = (items: WorkbenchMenuItem[]) =>\n items.find((item) => item.overflowLabel)?.overflowLabel ?? \"More header actions\";\n","import { Button, HStack, IconButton, Menu, Portal } from \"@chakra-ui/react\";\nimport { ListRow, Tooltip } from \"@pstdio/ui\";\nimport { Fragment } from \"react\";\nimport {\n getAnchorResource,\n type MenuPath,\n type ResourceRef,\n type WorkbenchCommandExecutionContext,\n type WorkbenchCore,\n} from \"../../core\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\nimport { hasCommandParameters } from \"../command-palette/command-palette-params\";\nimport { listWorkbenchMenuItemsFromState, type WorkbenchMenuItem } from \"../menus/menu-items\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { resolveWorkbenchHeaderActionGroups, resolveWorkbenchHeaderOverflowLabel } from \"./header-action-items\";\n\ninterface WorkbenchHeaderActionsProps {\n workbench: WorkbenchCore;\n menuPath: MenuPath;\n controlSize?: \"2xs\" | \"xs\";\n}\n\nconst commandExecutionContext = (resource: ResourceRef | undefined): WorkbenchCommandExecutionContext | undefined =>\n resource ? { resource } : undefined;\n\nconst WorkbenchInlineHeaderAction = (props: {\n item: WorkbenchMenuItem;\n onSelect: (item: WorkbenchMenuItem) => void;\n controlSize: \"2xs\" | \"xs\";\n}) => {\n const { controlSize, item, onSelect } = props;\n const onClick = () => onSelect(item);\n\n if (item.group === \"primary\" || !item.icon) {\n return (\n <Button\n key={item.id}\n size={controlSize}\n variant={item.group === \"primary\" ? \"primary\" : \"subtle\"}\n disabled={item.disabled}\n onClick={onClick}\n >\n {item.icon ? <WorkbenchIcon name={item.icon} size={14} /> : null}\n {item.label}\n </Button>\n );\n }\n\n return (\n <Tooltip key={item.id} content={item.label}>\n <IconButton size={controlSize} variant=\"ghost\" aria-label={item.label} disabled={item.disabled} onClick={onClick}>\n <WorkbenchIcon name={item.icon} size={16} />\n </IconButton>\n </Tooltip>\n );\n};\n\nexport const WorkbenchHeaderActions = (props: WorkbenchHeaderActionsProps) => {\n const { controlSize = \"xs\", menuPath, workbench } = props;\n const commands = useWorkbenchStore(workbench.commands.store, (state) => state.commands);\n const contextValues = useWorkbenchStore(workbench.context.store, (state) => state.values);\n const itemsByPath = useWorkbenchStore(workbench.layout.menuStore, (state) => state.itemsByPath);\n // Command handlers can read the focused panel while the page's primary resource stays unchanged.\n const layout = useWorkbenchStore(workbench.layout.store, (state) => state.layout);\n const resource = getAnchorResource(layout, \"primary\");\n const items = listWorkbenchMenuItemsFromState({ itemsByPath, commands, contextValues }, menuPath, { resource });\n const { inlineItems, overflowItems } = resolveWorkbenchHeaderActionGroups(items);\n\n // Actions whose command declares parameters collect that input through the shared\n // command params dialog (opened via the command palette store) before running;\n // parameterless actions execute immediately.\n const onSelect = (item: WorkbenchMenuItem) => {\n const command = commands[item.commandId]?.command;\n const args = item.args;\n const context = commandExecutionContext(resource);\n if (command && hasCommandParameters(command.params)) {\n workbench.commandPalette.requestParams({ record: { command }, label: item.label, args, context });\n return;\n }\n void runUserAction(workbench, item.label, () => workbench.commands.executeCommand(item.commandId, args, context));\n };\n\n if (items.length === 0) return null;\n\n return (\n <HStack flexShrink={0} gap=\"2xs\" minW=\"0\">\n {inlineItems.map((item) => (\n <WorkbenchInlineHeaderAction key={item.id} item={item} onSelect={onSelect} controlSize={controlSize} />\n ))}\n {overflowItems.length > 0 ? (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton\n size={controlSize}\n variant=\"ghost\"\n aria-label={resolveWorkbenchHeaderOverflowLabel(overflowItems)}\n >\n <WorkbenchIcon name=\"MoreHorizontal\" size={16} />\n </IconButton>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content minW=\"220px\" bg=\"bg\">\n {overflowItems.map((item) => (\n <Fragment key={item.id}>\n {item.separatorBefore ? <Menu.Separator /> : null}\n <Menu.Item value={item.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={item.id}\n label={item.label}\n icon={item.icon ? <WorkbenchIcon name={item.icon} size={16} /> : undefined}\n disabled={item.disabled}\n onActivate={() => onSelect(item)}\n />\n </Menu.Item>\n </Fragment>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n ) : null}\n </HStack>\n );\n};\n","import { type UseHotkeyDefinition, useHotkeys } from \"@tanstack/react-hotkeys\";\nimport type { WorkbenchHotkeyRegistration } from \"./workbench-keybinding-dispatcher\";\n\nexport const useTanStackWorkbenchHotkeys = (registrations: WorkbenchHotkeyRegistration[]) => {\n const hotkeys: UseHotkeyDefinition[] = registrations.map((registration) => ({\n hotkey: registration.hotkey as UseHotkeyDefinition[\"hotkey\"],\n callback: (event) => {\n event.preventDefault();\n void registration.execute();\n },\n options: {\n enabled: registration.enabled,\n ignoreInputs: registration.ignoreInputs,\n preventDefault: true,\n stopPropagation: true,\n },\n }));\n\n useHotkeys(hotkeys, {\n ignoreInputs: true,\n preventDefault: true,\n stopPropagation: true,\n });\n};\n","import { useEffect, useState } from \"react\";\nimport { getKeybindingSteps, type KeybindingSequence, type WorkbenchCore } from \"../../core\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\nimport { hasCommandParameters } from \"../command-palette/command-palette-params\";\nimport { useTanStackWorkbenchHotkeys } from \"./tanstack-hotkey-adapter\";\n\nexport interface WorkbenchHotkeyRegistration {\n id: string;\n hotkey: KeybindingSequence;\n enabled: boolean;\n ignoreInputs: boolean;\n execute(): Promise<unknown>;\n}\n\nexport interface CreateWorkbenchHotkeyRegistrationsInput {\n workbench: WorkbenchCore;\n disabled?: boolean;\n commandIds?: readonly string[];\n}\n\nexport interface WorkbenchKeybindingDispatcherProps {\n workbench: WorkbenchCore;\n disabled?: boolean;\n commandIds?: readonly string[];\n}\n\nconst keyAliases: Record<string, string> = {\n alt: \"Alt\",\n cmd: \"Meta\",\n command: \"Meta\",\n ctrl: \"Control\",\n control: \"Control\",\n meta: \"Meta\",\n mod: \"Mod\",\n option: \"Alt\",\n shift: \"Shift\",\n};\n\nconst normalizeWorkbenchKeybindingStep = (keybinding: string) =>\n keybinding\n .split(\"+\")\n .map((part) => {\n const trimmed = part.trim();\n const alias = keyAliases[trimmed.toLowerCase()];\n if (alias) return alias;\n if (trimmed.length === 1) return trimmed.toUpperCase();\n return trimmed.slice(0, 1).toUpperCase() + trimmed.slice(1);\n })\n .join(\"+\");\n\nexport const normalizeWorkbenchKeybinding = (keybinding: KeybindingSequence): KeybindingSequence => {\n const steps = getKeybindingSteps(keybinding).map(normalizeWorkbenchKeybindingStep);\n return steps.length === 1 ? (steps[0] ?? \"\") : steps;\n};\n\nexport const createWorkbenchHotkeyRegistrations = (input: CreateWorkbenchHotkeyRegistrationsInput) => {\n const { workbench, disabled = false, commandIds } = input;\n const allowedCommandIds = commandIds ? new Set(commandIds) : undefined;\n\n return workbench.keybindings.listActiveKeybindings().flatMap((keybinding, index) => {\n const action = keybinding.action;\n if (action.kind === \"command\") {\n if (allowedCommandIds && !allowedCommandIds.has(action.commandId)) return [];\n const record = workbench.commands.getCommand(action.commandId);\n if (!record) return [];\n const enabled =\n !disabled &&\n workbench.commands.isCommandVisible(record.command.id, action.args) &&\n workbench.commands.isCommandEnabled(record.command.id, action.args);\n return [\n {\n id: record.command.id,\n hotkey: normalizeWorkbenchKeybinding(keybinding.keybinding),\n enabled,\n ignoreInputs: true,\n execute: async () => {\n if (action.args === undefined && hasCommandParameters(record.command.params)) {\n const resource = workbench.getPrimaryResource();\n workbench.commandPalette.requestParams({\n record,\n label: record.command.label,\n context: resource ? { resource } : undefined,\n });\n return;\n }\n return runUserAction(workbench, record.command.label, () => workbench.navigation.openTarget(action));\n },\n } satisfies WorkbenchHotkeyRegistration,\n ];\n }\n if (allowedCommandIds) return [];\n return [\n {\n id: `workbench.keybinding.${index}`,\n hotkey: normalizeWorkbenchKeybinding(keybinding.keybinding),\n enabled: !disabled,\n ignoreInputs: true,\n execute: () => runUserAction(workbench, \"Open\", () => workbench.navigation.openTarget(action)),\n } satisfies WorkbenchHotkeyRegistration,\n ];\n });\n};\n\nexport const WorkbenchKeybindingDispatcher = (props: WorkbenchKeybindingDispatcherProps) => {\n const { workbench, disabled, commandIds } = props;\n const [registrations, setRegistrations] = useState(() =>\n createWorkbenchHotkeyRegistrations({ workbench, disabled, commandIds }),\n );\n useEffect(() => {\n const refresh = () => setRegistrations(createWorkbenchHotkeyRegistrations({ workbench, disabled, commandIds }));\n const subscriptions = [workbench.keybindings.store, workbench.context.store, workbench.commands.store].map(\n (store) => store.subscribe(refresh),\n );\n refresh();\n return () => {\n for (const unsubscribe of subscriptions) unsubscribe();\n };\n }, [workbench, disabled, commandIds]);\n useTanStackWorkbenchHotkeys(registrations);\n\n return null;\n};\n","import { Box, HStack, Image, Text } from \"@chakra-ui/react\";\nimport { PaletteShortcut, Tooltip, type TreeListAction, type TreeListActionMenuItem } from \"@pstdio/ui\";\nimport type {\n ContextKeyValue,\n KeybindingSequence,\n MenuPath,\n RegisteredCommand,\n TreeAction,\n WorkbenchCommandExecutionContext,\n WorkbenchCoreContributionContext,\n} from \"../../../core\";\nimport { matchesContextExpression, scopeWorkbenchResourceContextValues } from \"../../../core\";\nimport { reportUserActionError } from \"../../../core/shared/run-user-action\";\nimport { hasCommandParameters } from \"../../command-palette/command-palette-params\";\nimport type { CommandParamsRequest } from \"../../command-palette/command-params-dialog\";\nimport { WorkbenchIcon } from \"../../shared/icon\";\n\nexport interface TreeActionParamsRequest {\n request: CommandParamsRequest;\n run: (args: unknown) => Promise<void>;\n}\n\ninterface CreateTreeActionItemsInput {\n actions?: TreeAction[];\n workbench: WorkbenchCoreContributionContext;\n context?: WorkbenchCommandExecutionContext;\n onCommandError?: (error: unknown) => void;\n onRequestParams?: (request: TreeActionParamsRequest) => void;\n}\n\ninterface CreateTreeMenuItemsInput {\n workbench: WorkbenchCoreContributionContext;\n menuPath: MenuPath;\n context?: WorkbenchCommandExecutionContext;\n onCommandError?: (error: unknown) => void;\n onRequestParams?: (request: TreeActionParamsRequest) => void;\n}\n\ninterface CreateTreeContextMenuItemsInput {\n actions?: TreeAction[];\n menuPath?: MenuPath;\n workbench: WorkbenchCoreContributionContext;\n context?: WorkbenchCommandExecutionContext;\n onCommandError?: (error: unknown) => void;\n onRequestParams?: (request: TreeActionParamsRequest) => void;\n}\n\nconst commandContextValues = (\n workbench: WorkbenchCoreContributionContext,\n context: WorkbenchCommandExecutionContext | undefined,\n): Record<string, ContextKeyValue> =>\n context?.resource\n ? scopeWorkbenchResourceContextValues(workbench.context.snapshot(), context.resource)\n : workbench.context.snapshot();\n\nconst isRegisteredCommandVisible = (\n record: RegisteredCommand,\n args: unknown,\n contextValues: Record<string, ContextKeyValue>,\n) => {\n if (!matchesContextExpression(contextValues, record.command.when)) return false;\n return record.handler.isVisible?.(args) !== false;\n};\n\nconst executeTreeAction = async (input: {\n action: TreeAction;\n workbench: WorkbenchCoreContributionContext;\n args?: unknown;\n context?: WorkbenchCommandExecutionContext;\n}) => {\n const { action, args, context, workbench } = input;\n const record = action.commandId ? workbench.commands.getCommand(action.commandId) : undefined;\n const resolvedArgs = args ?? action.args;\n await (record\n ? workbench.commands.executeCommand(record.command.id, resolvedArgs, context)\n : action.run?.(resolvedArgs));\n};\n\nconst runTreeAction = async (input: {\n action: TreeAction;\n workbench: WorkbenchCoreContributionContext;\n onCommandError?: (error: unknown) => void;\n args?: unknown;\n context?: WorkbenchCommandExecutionContext;\n}) => {\n const { action, args, context, onCommandError, workbench } = input;\n try {\n await executeTreeAction({ action, args, context, workbench });\n } catch (error) {\n if (onCommandError) onCommandError(error);\n else reportUserActionError(workbench, action.label ?? \"Action\", error);\n throw error;\n }\n};\n\nconst resolveTreeActionCommand = (workbench: WorkbenchCoreContributionContext, action: TreeAction) => {\n if (!action.commandId) return undefined;\n return workbench.commands.getCommand(action.commandId);\n};\n\nconst isTreeActionVisible = (\n workbench: WorkbenchCoreContributionContext,\n action: TreeAction,\n contextValues: Record<string, ContextKeyValue>,\n) => {\n if (!matchesContextExpression(contextValues, action.when)) return false;\n\n const record = resolveTreeActionCommand(workbench, action);\n if (action.commandId && !record) return false;\n\n return record ? isRegisteredCommandVisible(record, action.args, contextValues) : true;\n};\n\nconst isTreeActionEnabled = (workbench: WorkbenchCoreContributionContext, action: TreeAction) => {\n if (action.disabled) return false;\n\n const record = resolveTreeActionCommand(workbench, action);\n return record ? workbench.commands.isCommandEnabled(record.command.id, action.args) : true;\n};\n\nconst createMenuIcon = (input: { icon?: string; iconSrc?: string }) => {\n const { icon, iconSrc } = input;\n if (iconSrc) {\n return (\n <Box boxSize=\"16px\" bg=\"white\" borderRadius=\"4px\" p=\"1px\" display=\"grid\" placeItems=\"center\">\n <Image\n src={iconSrc}\n alt=\"\"\n aria-hidden=\"true\"\n htmlWidth={14}\n htmlHeight={14}\n display=\"block\"\n w=\"full\"\n h=\"full\"\n fit=\"contain\"\n />\n </Box>\n );\n }\n\n return icon ? <WorkbenchIcon name={icon} /> : undefined;\n};\n\nconst createMenuEndContent = (input: {\n external?: boolean;\n binding?: KeybindingSequence;\n disabledReason?: string;\n readOnly?: boolean;\n}) => {\n const { binding, external, disabledReason, readOnly } = input;\n if (readOnly && disabledReason)\n return (\n <Tooltip content={disabledReason} openDelay={300}>\n <Box as=\"span\" tabIndex={0} aria-label={disabledReason}>\n <WorkbenchIcon name=\"Info\" />\n </Box>\n </Tooltip>\n );\n if (external) return <WorkbenchIcon name=\"ArrowUpRight\" size={14} color=\"fg.muted\" />;\n if (binding) return <PaletteShortcut binding={binding} />;\n return undefined;\n};\n\nconst withLeadingSeparator = <T extends TreeListActionMenuItem>(items: T[], enabled: boolean) => {\n if (!enabled || items.length === 0) return items;\n const [first, ...rest] = items;\n return [{ ...first, separatorBefore: true }, ...rest];\n};\n\nconst isKernelMenuAction = (group: string | undefined) => group === \"kernel\";\n\nconst createTreeMenuItemGroups = (input: CreateTreeMenuItemsInput) => {\n const { context, menuPath, onCommandError, onRequestParams, workbench } = input;\n const contextValues = commandContextValues(workbench, context);\n const shortcuts = new Map(workbench.keybindings.listCommandKeybindings().map((k) => [k.commandId, k.keybinding]));\n const regularItems: TreeListActionMenuItem[] = [];\n const kernelItems: TreeListActionMenuItem[] = [];\n\n for (const [index, action] of workbench.layout.listMenuItems(menuPath).entries()) {\n if (!matchesContextExpression(contextValues, action.when)) continue;\n\n const record = workbench.commands.getCommand(action.commandId);\n if (!record) continue;\n\n const args = action.args;\n if (!isRegisteredCommandVisible(record, args, contextValues)) continue;\n\n const icon = action.icon ?? record.command.icon;\n const binding = shortcuts.get(record.command.id);\n const readOnly = action.readOnly === true;\n const label = action.label ?? record.command.label;\n const requestParams =\n hasCommandParameters(record.command.params) && onRequestParams\n ? () =>\n onRequestParams({\n request: {\n record: { command: record.command },\n label,\n args,\n context,\n },\n run: async (nextArgs) => {\n await workbench.commands.executeCommand(record.command.id, nextArgs, context);\n },\n })\n : undefined;\n const item = {\n id: `${action.commandId}:${index}`,\n label,\n commandId: action.sourceCommandId ?? record.command.id,\n description: action.description ?? record.command.description,\n icon: createMenuIcon({ icon, iconSrc: action.iconSrc }),\n endContent: createMenuEndContent({\n external: action.external,\n binding,\n disabledReason: action.description,\n readOnly,\n }),\n disabled: readOnly || !workbench.commands.isCommandEnabled(record.command.id, args),\n readOnly,\n separatorBefore: action.separatorBefore,\n onAction: readOnly\n ? undefined\n : () => {\n if (requestParams) {\n requestParams();\n return;\n }\n void workbench.commands.executeCommand(record.command.id, args, context).catch((error) => {\n if (onCommandError) onCommandError(error);\n else reportUserActionError(workbench, label, error);\n });\n },\n };\n\n if (isKernelMenuAction(action.group)) {\n kernelItems.push(item);\n } else {\n regularItems.push(item);\n }\n }\n\n return { regularItems, kernelItems };\n};\n\nexport const createTreeMenuItems = (input: CreateTreeMenuItemsInput) => {\n const { regularItems, kernelItems } = createTreeMenuItemGroups(input);\n return [...regularItems, ...withLeadingSeparator(kernelItems, regularItems.length > 0)];\n};\n\nconst createTreeActionMenuItems = (input: CreateTreeContextMenuItemsInput) => {\n const { actions = [], context, onCommandError, onRequestParams, workbench } = input;\n const contextValues = commandContextValues(workbench, context);\n const shortcuts = new Map(workbench.keybindings.listCommandKeybindings().map((k) => [k.commandId, k.keybinding]));\n const items: TreeListActionMenuItem[] = [];\n\n for (const action of actions) {\n if (!isTreeActionVisible(workbench, action, contextValues)) continue;\n\n const record = resolveTreeActionCommand(workbench, action);\n const label = action.label ?? record?.command.label;\n if (!label) continue;\n\n const icon = action.icon ?? record?.command.icon;\n const disabled = !isTreeActionEnabled(workbench, action);\n const binding = action.commandId ? shortcuts.get(action.commandId) : undefined;\n const requestParams =\n hasCommandParameters(action.params) && onRequestParams\n ? () =>\n onRequestParams({\n request: {\n record: {\n command: {\n id: action.commandId ?? action.id,\n label,\n params: action.params,\n resourceMutation: action.resourceMutation ?? record?.command.resourceMutation,\n },\n },\n label,\n submitLabel: action.submitLabel,\n args: action.args,\n context,\n },\n run: (args) => executeTreeAction({ action, args, context, workbench }),\n })\n : undefined;\n items.push({\n id: action.id,\n label,\n commandId: record?.command.id ?? action.commandId,\n icon: icon ? <WorkbenchIcon name={icon} /> : undefined,\n endContent: binding ? <PaletteShortcut binding={binding} /> : undefined,\n disabled,\n onAction: () => {\n if (disabled) return;\n if (requestParams) {\n requestParams();\n return;\n }\n void runTreeAction({ action, context, workbench, onCommandError }).catch(() => undefined);\n },\n });\n }\n\n return items;\n};\n\nexport const createTreeContextMenuItems = (input: CreateTreeContextMenuItemsInput) => {\n const actionItems = createTreeActionMenuItems(input);\n const { regularItems, kernelItems } = input.menuPath\n ? createTreeMenuItemGroups({ ...input, menuPath: input.menuPath })\n : { regularItems: [], kernelItems: [] };\n const visibleRegularItems = [...actionItems, ...regularItems];\n\n return [...visibleRegularItems, ...withLeadingSeparator(kernelItems, visibleRegularItems.length > 0)];\n};\n\nexport const createTreeActionItems = (input: CreateTreeActionItemsInput) => {\n const { actions = [], context, onCommandError, onRequestParams, workbench } = input;\n const contextValues = commandContextValues(workbench, context);\n const shortcuts = new Map(workbench.keybindings.listCommandKeybindings().map((k) => [k.commandId, k.keybinding]));\n const items: TreeListAction[] = [];\n\n for (const action of actions) {\n if (!isTreeActionVisible(workbench, action, contextValues) || !isTreeActionEnabled(workbench, action)) continue;\n\n const record = resolveTreeActionCommand(workbench, action);\n const label = action.label ?? record?.command.label;\n if (!label) continue;\n\n const icon = action.icon ?? record?.command.icon;\n const binding = action.commandId ? shortcuts.get(action.commandId) : undefined;\n const requestParams =\n hasCommandParameters(action.params) && onRequestParams\n ? () =>\n onRequestParams({\n request: {\n record: {\n command: {\n id: action.commandId ?? action.id,\n label,\n params: action.params,\n resourceMutation: action.resourceMutation ?? record?.command.resourceMutation,\n },\n },\n label,\n submitLabel: action.submitLabel,\n args: action.args,\n context,\n },\n run: (args) => executeTreeAction({ action, args, context, workbench }),\n })\n : undefined;\n items.push({\n id: action.id,\n label,\n icon: icon ? <WorkbenchIcon name={icon} /> : undefined,\n tooltip: binding ? (\n <HStack gap=\"2\">\n <Text>{label}</Text>\n <PaletteShortcut binding={binding} />\n </HStack>\n ) : undefined,\n onAction: () => {\n if (requestParams) {\n requestParams();\n return;\n }\n void runTreeAction({ action, context, workbench, onCommandError }).catch(() => undefined);\n },\n });\n }\n\n return items;\n};\n","import { Icon } from \"@chakra-ui/react\";\nimport type { ResourceContextAction, TreeListActionMenuItem } from \"@pstdio/ui\";\nimport type { ResourceRef, WorkbenchCoreContributionContext } from \"../../core\";\nimport { resourceContextMenuPath, workbenchBreadcrumbLocationMenuPath } from \"../../core\";\nimport { createTreeContextMenuItems } from \"../renderers/tree/tree-actions\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\nconst toResourceContextAction = (item: TreeListActionMenuItem): ResourceContextAction => ({\n key: item.id,\n label: item.label,\n commandId: item.commandId,\n icon: typeof item.icon === \"function\" ? <Icon as={item.icon} boxSize=\"16px\" /> : item.icon,\n endContent: item.endContent,\n isDisabled: item.disabled,\n separatorBefore: item.separatorBefore,\n onClick: () => item.onAction?.(),\n});\nexport const createWorkbenchResourceActions = (workbench: WorkbenchCoreContributionContext, resource: ResourceRef) =>\n createTreeContextMenuItems({\n menuPath: resourceContextMenuPath(resource.type),\n workbench,\n context: { resource },\n onRequestParams: ({ request }) => workbench.commandPalette.requestParams(request),\n }).map(toResourceContextAction);\nexport const createWorkbenchLocationActions = (\n workbench: WorkbenchCoreContributionContext,\n resource: ResourceRef | undefined,\n) =>\n createTreeContextMenuItems({\n menuPath: workbenchBreadcrumbLocationMenuPath,\n workbench,\n context: resource ? { resource } : undefined,\n onRequestParams: ({ request }) => workbench.commandPalette.requestParams(request),\n }).map(toResourceContextAction);\nexport const useWorkbenchResourceActionResolver = (workbench: WorkbenchCoreContributionContext) => {\n useWorkbenchStore(workbench.commands.store, (state) => state.commands);\n useWorkbenchStore(workbench.context.store, (state) => state.values);\n useWorkbenchStore(workbench.layout.menuStore, (state) => state.itemsByPath);\n return (resource: ResourceRef) => createWorkbenchResourceActions(workbench, resource);\n};\n","import type { ToastStatusChangeDetails } from \"@chakra-ui/react\";\nimport { toaster } from \"@pstdio/ui\";\nimport { useEffect, useRef } from \"react\";\nimport type { RegisteredWorkbenchNotification, WorkbenchCore, WorkbenchNotificationAction } from \"../../core\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\n\n// Bridges `workbench.notifications` into the shared `@pstdio/ui` toaster singleton.\n// The Workbench shell renders the viewport once alongside the rest of its chrome.\ninterface WorkbenchNotificationHostProps {\n workbench: WorkbenchCore;\n}\n\nconst executeNotificationAction = (input: { action: WorkbenchNotificationAction; workbench: WorkbenchCore }) => {\n const { action, workbench } = input;\n void runUserAction(workbench, action.title, () => workbench.commands.executeCommand(action.commandId, action.args));\n};\n\nexport const WorkbenchNotificationHost = (props: WorkbenchNotificationHostProps) => {\n const { workbench } = props;\n const shownNotificationIds = useRef(new Set<string>());\n\n useEffect(() => {\n const showNotification = (notification: RegisteredWorkbenchNotification) => {\n const action = notification.actions?.[0];\n const toastAction = action\n ? {\n label: action.title,\n onClick: () => executeNotificationAction({ action, workbench }),\n }\n : undefined;\n const toastOptions = {\n id: notification.id,\n type: notification.level,\n title: notification.title,\n description: notification.message,\n action: toastAction,\n closable: true,\n onStatusChange: (details: ToastStatusChangeDetails) => {\n if (details.status === \"unmounted\") workbench.notifications.dismiss(notification.id);\n },\n };\n\n if (shownNotificationIds.current.has(notification.id)) {\n toaster.update(notification.id, toastOptions);\n return;\n }\n\n shownNotificationIds.current.add(notification.id);\n toaster.create(toastOptions);\n };\n\n for (const notification of workbench.notifications.listNotifications()) showNotification(notification);\n\n const subscription = workbench.notifications.subscribe((event) => {\n if (event.type === \"show\") {\n showNotification(event.notification);\n return;\n }\n\n shownNotificationIds.current.delete(event.id);\n toaster.dismiss(event.id);\n });\n\n return () => {\n subscription.dispose();\n for (const id of shownNotificationIds.current) toaster.dismiss(id);\n shownNotificationIds.current.clear();\n };\n }, [workbench]);\n\n return null;\n};\n","import type { WorkbenchCore } from \"../../core\";\nimport { useWorkbenchStore } from \"./use-workbench-store\";\n\nexport const useWorkbenchLocationResource = (workbench: WorkbenchCore) =>\n useWorkbenchStore(workbench.pages.store, (state) => state.location?.resource);\n\nexport const useWorkbenchActiveModeId = (workbench: WorkbenchCore) =>\n useWorkbenchStore(workbench.modes.store, (state) => state.activeModeId);\n","import type { WorkbenchWidgetPlacement } from \"../../core\";\n\nexport const retainViewPlacements = (\n previous: WorkbenchWidgetPlacement[],\n current: WorkbenchWidgetPlacement[],\n registeredViews: ReadonlySet<string>,\n) => {\n const retained = new Map(\n previous\n .filter((placement) => placement.viewId && registeredViews.has(placement.viewId))\n .map((placement) => [placement.widgetId, placement]),\n );\n for (const placement of current) {\n const existing = previous.find((entry) => entry.widgetId === placement.widgetId);\n const unchanged =\n existing &&\n Object.keys(existing).length === Object.keys(placement).length &&\n Object.entries(placement).every(([key, value]) => Reflect.get(existing, key) === value);\n retained.set(placement.widgetId, unchanged ? existing : placement);\n }\n const next = [...retained.values()];\n return next.length === previous.length && next.every((placement, index) => placement === previous[index])\n ? previous\n : next;\n};\n","import { useState } from \"react\";\nimport type { WorkbenchCore, WorkbenchWidgetPlacement } from \"../../core\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { retainViewPlacements } from \"./retained-view-placements\";\n\n// A region owns live views; the active location owns only their visibility.\n// Keep this cache in React so it is discarded with the workbench, never persisted.\nexport const useRetainedViewPlacements = (workbench: WorkbenchCore, current: WorkbenchWidgetPlacement[]) => {\n const views = useWorkbenchStore(workbench.views.store, (state) => state.views);\n const [previous, setPrevious] = useState(current);\n const placements = retainViewPlacements(previous, current, new Set(Object.keys(views)));\n if (previous !== placements) setPrevious(placements);\n return placements;\n};\n","import { Box, Center } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport type {\n RegisteredPlaceholderContribution,\n RegisteredWidgetContribution,\n RegisteredWorkbenchView,\n WorkbenchCore,\n WorkbenchPanelContribution,\n WorkbenchRegion,\n WorkbenchWidgetPlacement,\n} from \"../../core\";\nimport { getWorkbenchRenderers } from \"../../core\";\nimport { toPanelContribution, toPanelInstance } from \"../../core/registries/layout/panel-api\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\ninterface WorkbenchWidgetHostProps {\n workbench: WorkbenchCore;\n placement: WorkbenchWidgetPlacement;\n widget?: RegisteredWidgetContribution | RegisteredPlaceholderContribution;\n region?: WorkbenchRegion;\n}\n\nconst WorkbenchWidgetFallback = (props: { label: string }) => {\n const { label } = props;\n\n return (\n <Center h=\"full\" w=\"full\" color=\"fg.muted\" p=\"md\" aria-label={label}>\n <WorkbenchIcon name=\"circle-alert\" size={20} />\n </Center>\n );\n};\n\nconst WorkbenchRenderedWidgetFrame = (props: { children: ReactNode }) => {\n const { children } = props;\n\n return (\n <Box flex=\"1\" minW=\"0\" minH=\"0\" w=\"full\" h=\"full\" overflow=\"hidden\">\n {children}\n </Box>\n );\n};\n\nconst noopRefresh = () => undefined;\n\nconst toHostedPanel = (input: {\n placement: WorkbenchWidgetPlacement;\n region?: WorkbenchRegion;\n view?: RegisteredWorkbenchView;\n widget?: RegisteredWidgetContribution | RegisteredPlaceholderContribution;\n}) => {\n if (input.view) {\n return {\n id: input.placement.contributionId,\n title: input.placement.title ?? input.view.title,\n icon: input.view.icon,\n region: input.region ?? input.widget?.region ?? \"main\",\n rendererId: input.view.id,\n } satisfies WorkbenchPanelContribution;\n }\n if (input.widget) {\n if (\"singleton\" in input.widget) return toPanelContribution(input.widget as RegisteredWidgetContribution);\n return input.widget;\n }\n return undefined;\n};\n\nexport const WorkbenchWidgetHost = (props: WorkbenchWidgetHostProps) => {\n const { workbench, placement } = props;\n const widget = props.widget ?? workbench.layout.getWidget(placement.contributionId);\n const view = placement.viewId ? workbench.views.getView(placement.viewId) : undefined;\n const rendererId = view?.id ?? widget?.rendererId ?? \"\";\n const refresh = noopRefresh;\n const rendererFromStore = useWorkbenchStore(\n getWorkbenchRenderers(workbench).store,\n (state) => state.renderers[rendererId],\n );\n const renderer = rendererFromStore ?? getWorkbenchRenderers(workbench).getRenderer(rendererId);\n useWorkbenchStore(getWorkbenchRenderers(workbench).store, (state) => state.refreshKeys[rendererId] ?? 0);\n\n if (!widget && !view) {\n return <WorkbenchWidgetFallback label=\"Widget contribution is no longer registered.\" />;\n }\n const panel = toHostedPanel({ placement, region: props.region, view, widget });\n if (!panel) return <WorkbenchWidgetFallback label=\"View contribution is no longer registered.\" />;\n const instance = toPanelInstance(placement);\n\n return (\n // `flex: 1 0 auto` lets the host fill its region when the widget is short and\n // grow past it when the widget is tall, so the region's ScrollArea can scroll.\n <Box\n data-workbench-view={view?.id ?? placement.contributionId}\n data-workbench-renderer={renderer ? \"mounted\" : \"missing\"}\n display=\"flex\"\n flex=\"1 0 auto\"\n minW=\"0\"\n minH=\"0\"\n w=\"full\"\n overflow=\"hidden\"\n >\n {renderer ? (\n <WorkbenchRenderedWidgetFrame>\n {renderer.render({ workbench, panel, instance, refresh }) as ReactNode}\n </WorkbenchRenderedWidgetFrame>\n ) : (\n <WorkbenchWidgetFallback label={`No renderer registered for ${rendererId}.`} />\n )}\n </Box>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { WorkbenchCore, WorkbenchRegion } from \"../../core\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { useRetainedViewPlacements } from \"./use-retained-view-placements\";\nimport { WorkbenchWidgetHost } from \"./widget-host\";\n\nexport const useModeChrome = (workbench: WorkbenchCore, region: WorkbenchRegion) =>\n useWorkbenchStore(workbench.modes.store, (state) => {\n const mode = state.activeModeId ? state.modes[state.activeModeId] : undefined;\n if (region !== \"nav\" && region !== \"sidenav\" && region !== \"activity\" && region !== \"status\") return undefined;\n return mode?.chrome?.[region];\n });\n\nexport const ModeChromeView = (props: { workbench: WorkbenchCore; viewId?: string; region: WorkbenchRegion }) => {\n const { workbench, viewId, region } = props;\n const placements = useRetainedViewPlacements(\n workbench,\n viewId ? [{ widgetId: viewId, contributionId: viewId, viewId, closable: false }] : [],\n );\n return (\n <Box h=\"full\" w=\"full\" minH=\"0\" position=\"relative\" display={viewId ? \"block\" : \"none\"}>\n {placements.map((placement) => (\n <Box\n key={placement.widgetId}\n position=\"absolute\"\n inset=\"0\"\n display={placement.viewId === viewId ? \"flex\" : \"none\"}\n inert={placement.viewId !== viewId}\n >\n <WorkbenchWidgetHost workbench={workbench} region={region} placement={placement} />\n </Box>\n ))}\n </Box>\n );\n};\n","export const movePanelHost = (host: HTMLElement, slot: HTMLElement | null | undefined) => {\n if (!slot || host.parentNode === slot) return;\n if (slot.moveBefore && host.isConnected && slot.isConnected) slot.moveBefore(host, null);\n // Temporary WebKit fallback: ADR 0053 explains the iframe reload limitation.\n else slot.appendChild(host);\n};\n","import type { WorkbenchCore, WorkbenchRegion } from \"../../core\";\n\nexport const resolvePanelCollapsible = (workbench: WorkbenchCore, ...regions: WorkbenchRegion[]) =>\n regions.every((region) => workbench.layout.getRegionCollapsible(region));\n","interface WorkbenchPanelMenuSize {\n has: boolean;\n open: boolean;\n collapsible: boolean;\n minSize: number;\n}\n\nexport const PANEL_CONTENT_MIN_SIZE_PX = 120;\nexport const PANEL_MENU_RESIZE_HANDLE_SIZE_PX = 1;\n// Narrow panels give their full width to content, even when a menu's minimum width would fit.\nexport const PANEL_MENU_NARROW_PANEL_MAX_PX = 580;\n\nexport const getWorkbenchPanelMenuAttachment = (panelWidth: number, menus: readonly WorkbenchPanelMenuSize[]) => {\n if (panelWidth === 0) return menus.map((menu) => menu.has && (menu.open || !menu.collapsible));\n\n const attached = new Set(menus.filter((menu) => menu.has && !menu.collapsible));\n const narrow = panelWidth <= PANEL_MENU_NARROW_PANEL_MAX_PX;\n const fits = (menu: WorkbenchPanelMenuSize) => {\n const sizes = [...attached, menu];\n return (\n !narrow &&\n panelWidth >=\n PANEL_CONTENT_MIN_SIZE_PX +\n sizes.reduce((total, candidate) => total + candidate.minSize + PANEL_MENU_RESIZE_HANDLE_SIZE_PX, 0)\n );\n };\n\n // Keep content usable and reserve fixed menus before optional menus, in side order.\n for (const menu of menus) {\n if (menu.has && menu.open && !attached.has(menu) && fits(menu)) attached.add(menu);\n }\n return menus.map((menu) => menu.has && (attached.has(menu) || fits(menu)));\n};\n","import { useEffect, useState } from \"react\";\nimport {\n getActiveWorkbenchLocationPanel,\n getActiveWorkbenchSubPanel,\n isWorkbenchModePanelAvailable,\n isWorkbenchPanelPlacementVisible,\n matchesWorkbenchModeEligibility,\n matchesWorkbenchPanelMenuOwner,\n type WorkbenchCore,\n type WorkbenchPanelMenuRegion,\n type WorkbenchPanelMenuSide,\n type WorkbenchPanelRegion,\n type WorkbenchRegionSize,\n workbenchPanelMenuRegions,\n} from \"../../core\";\nimport { useWorkbenchActiveModeId, useWorkbenchLocationResource } from \"../shared/use-workbench-location-resource\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { resolvePanelCollapsible } from \"../workbench/workbench-panel-state\";\nimport { getWorkbenchPanelMenuAttachment } from \"./panel-menu-sizing\";\n\nconst PANEL_MENU_SIZE = { defaultPx: 280, minPx: 144, maxPx: 320 };\n\nconst panelLabels: Record<WorkbenchPanelRegion, string> = {\n main: \"Main\",\n secondary: \"Secondary\",\n side: \"Side\",\n};\n\nconst resolveRegionSize = (regionSize: WorkbenchRegionSize | undefined) => ({\n defaultPx: regionSize?.defaultPx ?? PANEL_MENU_SIZE.defaultPx,\n minPx: regionSize?.minPx ?? PANEL_MENU_SIZE.minPx,\n maxPx: regionSize ? regionSize.maxPx : PANEL_MENU_SIZE.maxPx,\n});\n\nexport const getWorkbenchPanelMenuLabel = (panel: WorkbenchPanelRegion, side: WorkbenchPanelMenuSide) =>\n `${panelLabels[panel]} ${side} menu`;\n\nexport interface WorkbenchPanelMenuView {\n region: WorkbenchPanelMenuRegion;\n side: WorkbenchPanelMenuSide;\n label: string;\n title: string;\n icon: string;\n has: boolean;\n collapsed: boolean;\n collapsible: boolean;\n size: ReturnType<typeof resolveRegionSize>;\n onOpen: () => void;\n onCollapsedChange: (collapsed: boolean) => void;\n}\n\nconst useWorkbenchPanelMenu = (\n workbench: WorkbenchCore,\n panel: WorkbenchPanelRegion,\n side: WorkbenchPanelMenuSide,\n): WorkbenchPanelMenuView => {\n const region = workbenchPanelMenuRegions[panel][side];\n const locationResource = useWorkbenchLocationResource(workbench);\n const modeId = useWorkbenchActiveModeId(workbench);\n const panelAvailable = isWorkbenchModePanelAvailable(modeId ? workbench.modes.getMode(modeId) : undefined, panel);\n const layout = useWorkbenchStore(workbench.layout.store, (state) => state.layout);\n const registeredWidgets = useWorkbenchStore(workbench.layout.store, (state) => state.widgets);\n const currentRegionState = layout.regions[region];\n const activeSubPanel = getActiveWorkbenchSubPanel(layout, panel, locationResource, {\n ignoreOwnerResourceKey: panel === \"side\",\n });\n const activeLocationPanel = getActiveWorkbenchLocationPanel(layout);\n const regionState = {\n ...currentRegionState,\n widgets: currentRegionState.widgets.filter((placement) => {\n const contribution = registeredWidgets[placement.contributionId];\n return contribution\n ? (panel === \"side\"\n ? matchesWorkbenchModeEligibility(contribution, modeId)\n : isWorkbenchPanelPlacementVisible(contribution, locationResource, modeId, placement, {\n location: activeLocationPanel,\n })) &&\n matchesWorkbenchPanelMenuOwner(contribution, {\n locationPanel: activeLocationPanel,\n subPanel: activeSubPanel,\n })\n : false;\n }),\n };\n const activePlacement =\n regionState.widgets.find((placement) => placement.widgetId === regionState.activeWidgetId) ??\n regionState.widgets[0];\n const widget = activePlacement ? registeredWidgets[activePlacement.contributionId] : undefined;\n const collapsible = useWorkbenchStore(workbench.layout.store, () => resolvePanelCollapsible(workbench, region));\n const panelStateKey = activePlacement ? `panel-menu:${activePlacement.widgetId}` : region;\n const open = useWorkbenchStore(workbench.panelMenuState.store, (state) => state.openByMenuId[panelStateKey] ?? true);\n\n return {\n region,\n side,\n label: getWorkbenchPanelMenuLabel(panel, side),\n title: widget?.title ?? getWorkbenchPanelMenuLabel(panel, side),\n icon: widget?.icon ?? (side === \"left\" ? \"PanelLeft\" : \"PanelRight\"),\n has: panelAvailable && (regionState.widgets.length > 0 || Boolean(workbench.layout.getPlaceholder(region))),\n collapsed: !open && collapsible,\n collapsible,\n size: resolveRegionSize(workbench.layout.getRegionSize(region)),\n onOpen: () => workbench.panelMenuState.setOpen(panelStateKey, true),\n onCollapsedChange: (collapsed) => {\n if (!collapsed || collapsible) workbench.panelMenuState.setOpen(panelStateKey, !collapsed);\n },\n };\n};\n\nexport const useWorkbenchPanelMenus = (workbench: WorkbenchCore, panel: WorkbenchPanelRegion) => {\n const width = useWorkbenchPanelWidth(panel);\n const views = [useWorkbenchPanelMenu(workbench, panel, \"left\"), useWorkbenchPanelMenu(workbench, panel, \"right\")];\n const attachment = getWorkbenchPanelMenuAttachment(\n width,\n views.map((view) => ({\n has: view.has,\n open: !view.collapsed,\n collapsible: view.collapsible,\n minSize: view.size.minPx,\n })),\n );\n return views.map((view, index) => ({\n ...view,\n canAttach: attachment[index],\n collapsed: view.collapsed || !attachment[index],\n }));\n};\n\nexport const useWorkbenchPanelMenusPresent = (workbench: WorkbenchCore, panel: WorkbenchPanelRegion) => {\n const left = useWorkbenchPanelMenu(workbench, panel, \"left\");\n const right = useWorkbenchPanelMenu(workbench, panel, \"right\");\n return left.has || right.has;\n};\n\nconst useWorkbenchPanelWidth = (panel: WorkbenchPanelRegion) => {\n const [width, setWidth] = useState(0);\n\n useEffect(() => {\n const element = document.querySelector<HTMLElement>(`[data-workbench-panel=\"${panel}\"]`);\n if (!element) return;\n\n const measure = () => setWidth(element.clientWidth);\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [panel]);\n\n return width;\n};\n","import type { WorkbenchRegion, WorkbenchWidgetPlacement } from \"../../core\";\n\nexport const toTabKey = (regionId: string, placement: WorkbenchWidgetPlacement) =>\n `${regionId}:${placement.contributionId}`;\n\n// Sidenav placements compose as vertical navigation sections. They never become tabs.\nexport const suppressesSidenavTabStrip = (region: WorkbenchRegion, _placements: WorkbenchWidgetPlacement[]) =>\n region === \"sidenav\";\n\n// A Sub Panel tab presents its widget; the resource on its placement only binds\n// it to a Location. Location and content tabs present the resource they show.\nexport const resolveTabIconName = (\n placement: WorkbenchWidgetPlacement,\n widget: { icon?: string } | undefined,\n resourceKindIcon: string | undefined,\n) => {\n const resourceIcon = placement.resource?.icon ?? resourceKindIcon;\n if (placement.role === \"sub-panel\") return widget?.icon ?? resourceIcon;\n return resourceIcon ?? widget?.icon;\n};\n\nexport const resolveDisplayedActiveWidgetId = (\n visiblePlacements: WorkbenchWidgetPlacement[],\n activeWidgetId: string | undefined,\n): string | undefined => {\n if (!activeWidgetId) return visiblePlacements[0]?.widgetId;\n const hasActive = visiblePlacements.some((placement) => placement.widgetId === activeWidgetId);\n if (hasActive) return activeWidgetId;\n return visiblePlacements[0]?.widgetId;\n};\n","import { filterVisibleTabs, getTabVisibilityStore, useTabVisibilityStore } from \"@pstdio/ui\";\nimport { useEffect } from \"react\";\nimport {\n getActiveWorkbenchLocationPanel,\n getAnchorResource,\n headerTrailingMenuPath,\n isWorkbenchPanelPlacementVisible,\n type WorkbenchCore,\n type WorkbenchPanelRegion,\n type WorkbenchRegion,\n type WorkbenchWidgetPlacement,\n workbenchPanelRegions,\n workbenchRegionTabLeadingMenuPath,\n} from \"../../core\";\nimport { resolveResourcePreview } from \"../../core/registries/resources/resource-preview\";\nimport { listWorkbenchMenuItemsFromState } from \"../menus/menu-items\";\nimport { useWorkbenchPanelMenus } from \"../panel-menu/use-panel-menu\";\nimport { useWorkbenchCompositionPanels } from \"../shared/use-workbench-composition-panels\";\nimport { useWorkbenchActiveModeId, useWorkbenchLocationResource } from \"../shared/use-workbench-location-resource\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { suppressesSidenavTabStrip, toTabKey } from \"./region-tabs-visibility\";\n\nconst isWorkbenchPanelRegion = (region: WorkbenchRegion): region is WorkbenchPanelRegion =>\n workbenchPanelRegions.some((panelRegion) => panelRegion === region);\n\nexport const shouldShowRegionTabs = (\n placements: WorkbenchWidgetPlacement[],\n options: { alwaysShowTabs?: boolean } = {},\n) => placements.length > 1 || (placements.length === 1 && (options.alwaysShowTabs ?? placements[0]?.closable) === true);\n\ninterface WorkbenchPanelHeaderVisibility {\n hasTabs?: boolean;\n hasPanelMenus?: boolean;\n hasHeaderActions?: boolean;\n}\n\nexport const shouldShowPanelHeader = (input: WorkbenchPanelHeaderVisibility) =>\n input.hasTabs === true || input.hasPanelMenus === true || input.hasHeaderActions === true;\n\nexport const isPlacementEligibleForRegion = (\n workbench: WorkbenchCore,\n region: WorkbenchRegion,\n placement: WorkbenchWidgetPlacement,\n resource = workbench.getPrimaryResource(),\n modeId = workbench.modes.getActiveModeId(),\n) => {\n if (placement.resource && !workbench.resources.preview.resolve(placement.resource)) return false;\n const widget = workbench.layout.getWidget(placement.contributionId);\n return widget\n ? isWorkbenchPanelPlacementVisible(widget, resource, modeId, placement, {\n ignoreResourceLocation: region === \"side\",\n location: getActiveWorkbenchLocationPanel(workbench.layout.getLayout()),\n })\n : false;\n};\n\nexport const useWorkbenchRegionTabsState = (\n workbench: WorkbenchCore,\n region: WorkbenchRegion,\n visibilityStorageKey?: string,\n hasPanelMenuOpeners = false,\n) => {\n const changes = useWorkbenchStore(workbench.resources.preview.store, (state) => state.changes);\n const commands = useWorkbenchStore(workbench.commands.store, (state) => state.commands);\n const contextValues = useWorkbenchStore(workbench.context.store, (state) => state.values);\n const itemsByPath = useWorkbenchStore(workbench.layout.menuStore, (state) => state.itemsByPath);\n const layoutState = useWorkbenchStore(workbench.layout.store, (state) => state);\n const resource = useWorkbenchLocationResource(workbench);\n const modeId = useWorkbenchActiveModeId(workbench);\n const compositionPanels = useWorkbenchCompositionPanels(workbench);\n const storageKey = visibilityStorageKey ?? `${workbench.layout.getPersistenceScope() ?? \"unscoped\"}/${region}`;\n const tabStore = useTabVisibilityStore(storageKey, (state) => state);\n useEffect(() => {\n const subscription = workbench.onDidResetLayout(() => getTabVisibilityStore(storageKey).getState().reset());\n return () => subscription.dispose();\n }, [workbench, storageKey]);\n const regionState = layoutState.layout.regions[region];\n const subPanelPlacements = regionState.widgets.filter(\n (placement) =>\n placement.role === \"sub-panel\" &&\n (!placement.resource || Boolean(resolveResourcePreview(placement.resource, changes))) &&\n isPlacementEligibleForRegion(workbench, region, placement, resource, modeId),\n );\n const visibleSubPanels = filterVisibleTabs(subPanelPlacements, tabStore.tabOverrides, (placement) =>\n toTabKey(region, placement),\n );\n const visibleSubPanelIds = new Set(visibleSubPanels.map((placement) => placement.widgetId));\n const visiblePlacements = regionState.widgets.filter(\n (placement) =>\n (visibleSubPanelIds.has(placement.widgetId) || placement.role === \"location\") &&\n (!placement.resource || Boolean(resolveResourcePreview(placement.resource, changes))),\n );\n const leadingItems = listWorkbenchMenuItemsFromState(\n { itemsByPath, commands, contextValues },\n workbenchRegionTabLeadingMenuPath(region),\n );\n const panelRegion = isWorkbenchPanelRegion(region) ? region : undefined;\n const eligibleSubPanels = panelRegion ? compositionPanels[panelRegion].addable : [];\n const hasMovedPlacement = visiblePlacements.some(\n (placement) => layoutState.widgets[placement.contributionId]?.region !== region,\n );\n const showTabs =\n !suppressesSidenavTabStrip(region, visiblePlacements) &&\n ((hasPanelMenuOpeners && visiblePlacements.length > 0) ||\n hasMovedPlacement ||\n shouldShowRegionTabs(visiblePlacements, {\n alwaysShowTabs: workbench.layout.getRegionSettings(region)?.alwaysShowTabs,\n }));\n const hasActions =\n leadingItems.length > 0 || (eligibleSubPanels.length > 0 && (visiblePlacements.length === 0 || showTabs));\n const hasTrailingActions =\n region === \"main\" &&\n listWorkbenchMenuItemsFromState({ itemsByPath, commands, contextValues }, headerTrailingMenuPath(region), {\n resource: getAnchorResource(layoutState.layout, \"primary\"),\n }).length > 0;\n\n return {\n commands,\n regionState,\n resource,\n tabStore: { tabOverrides: tabStore.tabOverrides, toggleTab: tabStore.toggleTab, reset: tabStore.reset },\n subPanelPlacements,\n visiblePlacements,\n leadingItems,\n panelRegion,\n eligibleSubPanels,\n showTabs,\n hasActions,\n hasTrailingActions,\n };\n};\n\nexport const useWorkbenchPanelRegionTabsState = (\n workbench: WorkbenchCore,\n region: WorkbenchPanelRegion,\n visibilityStorageKey?: string,\n) => {\n const [left, right] = useWorkbenchPanelMenus(workbench, region);\n const hasPanelMenus = [left, right].some((menu) => menu.has && menu.collapsed);\n const tabs = useWorkbenchRegionTabsState(workbench, region, visibilityStorageKey, hasPanelMenus);\n return { ...tabs, hasPanelMenus };\n};\n\nexport const useWorkbenchPanelHeaderVisible = (workbench: WorkbenchCore, region: WorkbenchPanelRegion) => {\n const { showTabs, hasActions, hasTrailingActions, hasPanelMenus } = useWorkbenchPanelRegionTabsState(\n workbench,\n region,\n );\n return shouldShowPanelHeader({\n hasTabs: showTabs,\n hasHeaderActions: hasActions || hasTrailingActions,\n hasPanelMenus,\n });\n};\n\nexport const useWorkbenchRegionTabsVisible = (workbench: WorkbenchCore, region: WorkbenchPanelRegion) => {\n const { showTabs, hasActions } = useWorkbenchPanelRegionTabsState(workbench, region);\n return showTabs || hasActions;\n};\n","import { Box } from \"@chakra-ui/react\";\nimport { createContext, type ReactNode, useContext, useLayoutEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { WorkbenchCore, WorkbenchPanelRegion, WorkbenchWidgetPlacement } from \"../../core\";\nimport { workbenchPanelRegions } from \"../../core\";\nimport { resolveResourcePreview } from \"../../core/registries/resources/resource-preview\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { movePanelHost } from \"./move-panel-host\";\nimport { isPlacementEligibleForRegion } from \"./region-tabs-visibility-hooks\";\nimport { useRetainedViewPlacements } from \"./use-retained-view-placements\";\nimport { WorkbenchWidgetHost } from \"./widget-host\";\n\ninterface PanelViewSlots {\n register(region: WorkbenchPanelRegion, node: HTMLDivElement | null): void;\n}\nconst PanelViewContext = createContext<PanelViewSlots | null>(null);\nexport const usePanelViewSlot = (region: WorkbenchPanelRegion | undefined) => {\n const registry = useContext(PanelViewContext);\n const [node, setNode] = useState<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!region) return;\n registry?.register(region, node);\n return () => registry?.register(region, null);\n }, [registry, region, node]);\n return { enabled: Boolean(registry && region), ref: setNode };\n};\n\nconst PanelViewPortal = (props: {\n workbench: WorkbenchCore;\n placement: WorkbenchWidgetPlacement;\n slot?: HTMLElement;\n region?: WorkbenchPanelRegion;\n active: boolean;\n}) => {\n const { workbench, placement, slot, region, active } = props;\n // The portal target is stable for the life of a view. Only its DOM parent moves.\n const [host] = useState(() => {\n const node = document.createElement(\"div\");\n node.style.display = \"contents\";\n return node;\n });\n useLayoutEffect(() => {\n // Hidden retained views stay connected to keep their iframe browsing context.\n movePanelHost(host, slot);\n }, [host, slot]);\n useLayoutEffect(() => () => host.remove(), [host]);\n const activate = () => {\n if (workbench.layout.getLayout().activeWidgetId !== placement.widgetId)\n workbench.layout.activatePanel(placement.widgetId);\n };\n return createPortal(\n <Box\n data-workbench-instance={placement.widgetId}\n display={active ? \"flex\" : \"none\"}\n inert={!active}\n flex=\"1 0 auto\"\n minW=\"0\"\n minH=\"0\"\n w=\"full\"\n overflow=\"hidden\"\n onPointerDown={activate}\n onFocusCapture={(event) => {\n if (!event.currentTarget.contains(event.target)) return;\n activate();\n if (region) workbench.focus.setActiveRegion(region);\n }}\n >\n <WorkbenchWidgetHost workbench={workbench} placement={placement} region={region} />\n </Box>,\n host,\n );\n};\n\nexport const WorkbenchPanelViewHosts = (props: { workbench: WorkbenchCore; children: ReactNode }) => {\n const { workbench, children } = props;\n const changes = useWorkbenchStore(workbench.resources.preview.store, (state) => state.changes);\n const layout = useWorkbenchStore(workbench.layout.store, (state) => state.layout);\n useWorkbenchStore(workbench.pages.store, (state) => state.location);\n useWorkbenchStore(workbench.modes.store, (state) => state.activeModeId);\n const [slots, setSlots] = useState<Partial<Record<WorkbenchPanelRegion, HTMLDivElement>>>({});\n const [registry] = useState<PanelViewSlots>(() => ({\n register: (region, node) =>\n setSlots((previous) => {\n if (previous[region] === (node ?? undefined)) return previous;\n return { ...previous, [region]: node ?? undefined };\n }),\n }));\n const current = workbenchPanelRegions.flatMap((region) => {\n const state = layout.regions[region];\n const eligible = state.widgets.filter(\n (p) =>\n (!p.resource || Boolean(resolveResourcePreview(p.resource, changes))) &&\n isPlacementEligibleForRegion(workbench, region, p),\n );\n const selected = eligible.find((p) => p.widgetId === state.activeWidgetId) ?? eligible[0];\n return eligible.filter((p) => p.widgetId === selected?.widgetId || p.mountStrategy === \"keep-mounted\");\n });\n const retained = useRetainedViewPlacements(workbench, current);\n return (\n <PanelViewContext value={registry}>\n {children}\n {retained.map((placement) => {\n const region = workbenchPanelRegions.find((id) =>\n layout.regions[id].widgets.some((p) => p.widgetId === placement.widgetId),\n );\n const peers = region\n ? layout.regions[region].widgets.filter(\n (p) =>\n (!p.resource || Boolean(resolveResourcePreview(p.resource, changes))) &&\n isPlacementEligibleForRegion(workbench, region, p),\n )\n : [];\n const selected = region\n ? (peers.find((p) => p.widgetId === layout.regions[region].activeWidgetId) ?? peers[0])\n : undefined;\n return (\n <PanelViewPortal\n key={placement.widgetId}\n workbench={workbench}\n placement={placement}\n region={region}\n slot={region ? slots[region] : undefined}\n active={selected?.widgetId === placement.widgetId}\n />\n );\n })}\n </PanelViewContext>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@pstdio/ui\";\nimport type {\n RegisteredPlaceholderContribution,\n WorkbenchCore,\n WorkbenchPanelMenuRegion,\n WorkbenchRegion as WorkbenchRegionId,\n WorkbenchWidgetPlacement,\n} from \"../../core\";\nimport {\n getActiveWorkbenchLocationPanel,\n getActiveWorkbenchSubPanel,\n getWorkbenchPanelForMenuRegion,\n isWorkbenchPanelPlacementVisible,\n matchesWorkbenchModeEligibility,\n matchesWorkbenchPanelMenuOwner,\n type WorkbenchPanelRegion,\n workbenchPanelMenuRegions,\n workbenchPanelRegions,\n} from \"../../core\";\nimport { useWorkbenchActiveModeId, useWorkbenchLocationResource } from \"../shared/use-workbench-location-resource\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { getWorkbenchRegionBackground } from \"../theme/workbench-theme-background\";\nimport { ModeChromeView, useModeChrome } from \"./mode-chrome\";\nimport { usePanelViewSlot } from \"./panel-view-hosts\";\nimport { useRetainedViewPlacements } from \"./use-retained-view-placements\";\nimport { WorkbenchWidgetHost } from \"./widget-host\";\n\ninterface WorkbenchRegionProps {\n workbench: WorkbenchCore;\n region: WorkbenchRegionId;\n title?: string;\n pointerEvents?: \"auto\" | \"none\";\n transparent?: boolean;\n}\n\n// Header bars and the status bar lay their content out in a row, so they\n// scroll on the X axis; every other region scrolls vertically.\nconst horizontalScrollRegions = new Set<WorkbenchRegionId>([\n \"nav\",\n \"main-header\",\n \"secondary-header\",\n \"side-header\",\n \"status\",\n]);\n\nconst panelMenuRegionIds = new Set<WorkbenchRegionId>(\n Object.values(workbenchPanelMenuRegions).flatMap((regions) => Object.values(regions)),\n);\nconst sidePanelRegionIds = new Set<WorkbenchRegionId>([\"side\", \"side-header\", \"side-left-menu\", \"side-right-menu\"]);\n\n// A flex column at least as tall as the viewport lets a widget fill the region\n// (e.g. a tree with a pinned footer) while still growing and scrolling.\nconst verticalContentProps = { display: \"flex\", flexDirection: \"column\", minH: \"100%\", position: \"relative\" } as const;\n\n// Horizontal header regions need a definite content height so full-height\n// controls can stretch through the ScrollArea's content wrapper.\nconst horizontalContentProps = {\n display: \"flex\",\n alignItems: \"stretch\",\n h: \"full\",\n minH: \"100%\",\n position: \"relative\",\n} as const;\n\nconst getActivePlacement = (widgets: WorkbenchWidgetPlacement[], activeWidgetId?: string) =>\n widgets.find((placement) => placement.widgetId === activeWidgetId) ?? widgets[0];\n\nexport const resolveRenderedRegionPlacements = (\n widgets: WorkbenchWidgetPlacement[],\n activeWidgetId?: string,\n region?: WorkbenchRegionId,\n): WorkbenchWidgetPlacement[] => {\n if (region === \"sidenav\") return widgets;\n const activePlacement = getActivePlacement(widgets, activeWidgetId);\n if (!activePlacement) return [];\n return widgets.filter(\n (placement) => placement.widgetId === activePlacement.widgetId || placement.mountStrategy === \"keep-mounted\",\n );\n};\n\nexport const resolveRegionPlacementRenderState = (\n placement: WorkbenchWidgetPlacement,\n activeWidgetId: string | undefined,\n region?: WorkbenchRegionId,\n) => {\n const active = placement.widgetId === activeWidgetId;\n const additive = region === \"sidenav\";\n return {\n active,\n display: \"flex\",\n pointerEvents: active || additive ? \"auto\" : \"none\",\n position: active || additive ? \"relative\" : \"absolute\",\n visibility: active || additive ? \"visible\" : \"hidden\",\n } as const;\n};\n\nconst createPlaceholderPlacement = (placeholder: RegisteredPlaceholderContribution): WorkbenchWidgetPlacement => ({\n widgetId: placeholder.id,\n contributionId: placeholder.id,\n title: placeholder.title,\n closable: false,\n});\n\ninterface WorkbenchRegionPlacementProps {\n workbench: WorkbenchCore;\n placement: WorkbenchWidgetPlacement;\n activeWidgetId?: string;\n globalActiveWidgetId?: string;\n region: WorkbenchRegionId;\n visible: boolean;\n order: number;\n}\n\nconst WorkbenchRegionPlacement = (props: WorkbenchRegionPlacementProps) => {\n const { workbench, placement, activeWidgetId, globalActiveWidgetId, region, visible, order } = props;\n const renderState = resolveRegionPlacementRenderState(placement, activeWidgetId, region);\n const additive = region === \"sidenav\";\n const overlaysActivePlacement = !renderState.active && !additive;\n let flex: string | undefined;\n if (additive) flex = \"1 1 0\";\n else if (renderState.active) flex = \"1 0 auto\";\n\n const activatePlacement = () => {\n if (placement.widgetId !== globalActiveWidgetId) workbench.layout.activatePanel(placement.widgetId);\n };\n\n return (\n <Box\n display={visible ? renderState.display : \"none\"}\n inert={!visible || (!renderState.active && !additive)}\n order={order}\n flex={flex}\n h={overlaysActivePlacement ? \"full\" : undefined}\n inset={overlaysActivePlacement ? \"0\" : undefined}\n minH=\"0\"\n minW=\"0\"\n onPointerDown={additive ? activatePlacement : undefined}\n onFocusCapture={additive ? activatePlacement : undefined}\n overflow=\"hidden\"\n pointerEvents={renderState.pointerEvents}\n position={renderState.position}\n visibility={renderState.visibility}\n w=\"full\"\n >\n <WorkbenchWidgetHost workbench={workbench} placement={placement} />\n </Box>\n );\n};\n\nexport const WorkbenchRegion = (props: WorkbenchRegionProps) => {\n const { workbench, region, title, pointerEvents = \"auto\", transparent = false } = props;\n const panelRegion = workbenchPanelRegions.includes(region as WorkbenchPanelRegion)\n ? (region as WorkbenchPanelRegion)\n : undefined;\n const panelSlot = usePanelViewSlot(panelRegion);\n const sharedViews = panelSlot.enabled;\n const chrome = useModeChrome(workbench, region);\n const locationResource = useWorkbenchLocationResource(workbench);\n const modeId = useWorkbenchActiveModeId(workbench);\n const layout = useWorkbenchStore(workbench.layout.store, (state) => state.layout);\n const currentRegionState = layout.regions[region];\n const registeredWidgets = useWorkbenchStore(workbench.layout.store, (state) => state.widgets);\n const activeSubPanel = panelMenuRegionIds.has(region)\n ? getActiveWorkbenchSubPanel(\n layout,\n getWorkbenchPanelForMenuRegion(region as WorkbenchPanelMenuRegion),\n locationResource,\n { ignoreOwnerResourceKey: sidePanelRegionIds.has(region) },\n )\n : undefined;\n const activeLocationPanel = getActiveWorkbenchLocationPanel(layout);\n const regionState = {\n ...currentRegionState,\n widgets: currentRegionState.widgets.filter((placement) => {\n const contribution = registeredWidgets[placement.contributionId];\n return contribution\n ? (sidePanelRegionIds.has(region)\n ? matchesWorkbenchModeEligibility(contribution, modeId)\n : isWorkbenchPanelPlacementVisible(contribution, locationResource, modeId, placement, {\n location: activeLocationPanel,\n })) &&\n matchesWorkbenchPanelMenuOwner(contribution, {\n locationPanel: activeLocationPanel,\n subPanel: activeSubPanel,\n })\n : false;\n }),\n };\n const globalActiveWidgetId = useWorkbenchStore(workbench.layout.store, (state) => state.layout.activeWidgetId);\n const activePlacement = getActivePlacement(regionState.widgets, regionState.activeWidgetId);\n const placeholder = activePlacement ? undefined : workbench.layout.getPlaceholder(region);\n const placement = activePlacement ?? (placeholder ? createPlaceholderPlacement(placeholder) : undefined);\n const renderedPlacements = activePlacement\n ? resolveRenderedRegionPlacements(regionState.widgets, activePlacement.widgetId, region)\n : [];\n\n const retainedPlacements = useRetainedViewPlacements(\n workbench,\n chrome !== undefined || sharedViews ? [] : renderedPlacements,\n );\n const visibleIds = new Set(renderedPlacements.map((entry) => entry.widgetId));\n\n const scrollsHorizontally = horizontalScrollRegions.has(region);\n\n // Interacting with a region makes its active widget the globally-active one (so clicking\n // into the Side Panel session sets it global-active) without touching the primary anchor,\n // which only follows `main`. Placeholders are not real widgets, so only activate a real\n // placement that is not already active.\n const activatePlacement = (target: WorkbenchWidgetPlacement | undefined) => {\n if (target && target.widgetId !== globalActiveWidgetId) {\n workbench.layout.activatePanel(target.widgetId);\n }\n };\n const additive = region === \"sidenav\";\n\n return (\n <Flex\n as=\"section\"\n display={chrome === false ? \"none\" : \"flex\"}\n direction=\"column\"\n h=\"full\"\n minH=\"0\"\n minW=\"0\"\n w=\"full\"\n bg={transparent ? \"transparent\" : getWorkbenchRegionBackground(region)}\n overflow=\"hidden\"\n pointerEvents={pointerEvents}\n aria-label={title ?? region}\n onPointerDown={additive ? undefined : () => activatePlacement(activePlacement)}\n onFocusCapture={additive ? undefined : () => activatePlacement(activePlacement)}\n >\n {/* The region owns scrolling: overflowing widget content scrolls here\n with the same narrow overlay scrollbar used across the workbench. */}\n <ModeChromeView workbench={workbench} region={region} viewId={chrome || undefined} />\n <ScrollArea\n display={chrome ? \"none\" : \"flex\"}\n flex=\"1\"\n minH=\"0\"\n minW=\"0\"\n w=\"full\"\n size=\"xs\"\n showVerticalScrollbar={!scrollsHorizontally}\n showHorizontalScrollbar={scrollsHorizontally}\n // Horizontal bars hold a single row that should stay vertically\n // centered; the ScrollArea otherwise top-aligns its flowing content.\n viewportProps={scrollsHorizontally ? { justifyContent: \"center\" } : undefined}\n // Vertical regions host a flex column so a widget can fill the region\n // (e.g. a tree with a pinned footer) yet still grow and scroll.\n contentProps={scrollsHorizontally ? horizontalContentProps : verticalContentProps}\n >\n {placeholder && placement ? (\n <WorkbenchWidgetHost workbench={workbench} placement={placement} widget={placeholder} />\n ) : null}\n {sharedViews ? (\n <Box ref={panelSlot.ref} display=\"flex\" flexDirection=\"column\" minH=\"full\" w=\"full\" minW=\"0\" />\n ) : null}\n {retainedPlacements.map((renderedPlacement) => (\n <WorkbenchRegionPlacement\n key={renderedPlacement.widgetId}\n visible={!chrome && visibleIds.has(renderedPlacement.widgetId)}\n order={renderedPlacements.findIndex((entry) => entry.widgetId === renderedPlacement.widgetId)}\n workbench={workbench}\n placement={renderedPlacement}\n activeWidgetId={activePlacement?.widgetId}\n globalActiveWidgetId={globalActiveWidgetId}\n region={region}\n />\n ))}\n </ScrollArea>\n </Flex>\n );\n};\n","import { IconButton, Menu, Portal } from \"@chakra-ui/react\";\nimport { ListRow, PANEL_HEADER_CONTROL_SIZE, Tooltip } from \"@pstdio/ui\";\nimport { useRef } from \"react\";\nimport type { ResourceRef, WorkbenchCompositionAddablePanel, WorkbenchCore, WorkbenchPanelRegion } from \"../../core\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { openPanelWidget } from \"./panel-widget-open\";\n\ninterface WorkbenchPanelAddMenuProps {\n workbench: WorkbenchCore;\n region: WorkbenchPanelRegion;\n resource?: ResourceRef;\n panels: readonly WorkbenchCompositionAddablePanel[];\n}\n\nexport const WorkbenchPanelAddMenu = (props: WorkbenchPanelAddMenuProps) => {\n const { panels, region, resource, workbench } = props;\n const triggerRef = useRef<HTMLButtonElement>(null);\n const label = \"Add panel\";\n if (panels.length === 0) return null;\n\n const openPanel = (panel: WorkbenchCompositionAddablePanel) =>\n openPanelWidget({\n workbench,\n widget: panel.contribution,\n region,\n resource,\n pinned: panel.pinned,\n open: panel.open,\n });\n\n const trigger = (\n <IconButton\n ref={panels.length > 1 ? triggerRef : undefined}\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={label}\n flexShrink={0}\n onClick={panels.length === 1 ? () => openPanel(panels[0]) : undefined}\n >\n <WorkbenchIcon name=\"plus\" size={13} />\n </IconButton>\n );\n\n if (panels.length === 1) return <Tooltip content={label}>{trigger}</Tooltip>;\n\n return (\n <Menu.Root positioning={{ placement: \"bottom-start\", getAnchorElement: () => triggerRef.current }}>\n <Tooltip content={label}>\n <Menu.Trigger asChild>{trigger}</Menu.Trigger>\n </Tooltip>\n <Portal>\n <Menu.Positioner>\n <Menu.Content aria-label={label} minW=\"17.5rem\" bg=\"bg\">\n {panels.map((panel) => (\n <Menu.Item key={panel.contribution.id} value={`widget:${panel.contribution.id}`} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={panel.contribution.title}\n icon={\n panel.contribution.icon ? <WorkbenchIcon name={panel.contribution.icon} size={14} /> : undefined\n }\n onActivate={() => openPanel(panel)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { Box, Menu, Portal } from \"@chakra-ui/react\";\nimport { ListRow } from \"@pstdio/ui\";\nimport { useRef } from \"react\";\nimport type { WorkbenchCore, WorkbenchTabMenuGroup, WorkbenchWidgetPlacement } from \"../../core\";\nimport type { WorkbenchCommandParamsRequest } from \"../../core/controllers/command-palette/command-palette-controller\";\nimport { findPlacementByWidgetId } from \"../../core/registries/layout/layout-operations\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { runPlacementAction } from \"../shared/run-placement-action\";\nimport { getPanelLabel } from \"./panel-widget-open\";\n\nconst SharedAction = (props: { value: string; label: string; icon: string; onActivate(): void }) => {\n const { value, label, icon, onActivate } = props;\n return (\n <Menu.Item value={value} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={label}\n icon={<WorkbenchIcon name={icon} size={14} />}\n onActivate={onActivate}\n />\n </Menu.Item>\n );\n};\ninterface RegionTabMenuProps {\n anchor: { x: number; y: number; width: number; height: number };\n label: string;\n open: boolean;\n setOpen(open: boolean): void;\n groups: readonly WorkbenchTabMenuGroup[];\n placement: WorkbenchWidgetPlacement;\n workbench: WorkbenchCore;\n}\nexport const RegionTabMenu = (props: RegionTabMenuProps) => {\n const { anchor, label, open, setOpen, groups, placement, workbench } = props;\n const pendingRequest = useRef<WorkbenchCommandParamsRequest | null>(null);\n const currentRegion = findPlacementByWidgetId(workbench.layout.getLayout(), placement.widgetId)?.regionId;\n const destinations = workbench.getPanelDestinations(placement.widgetId).filter((region) => region !== currentRegion);\n const pin = () => {\n const pinned = placement.tabRetention === \"preview\";\n if (placement.placementIdentity) workbench.pinPlacement(placement.placementIdentity, pinned);\n else workbench.layout.updatePanel(placement.widgetId, { strategy: { kind: pinned ? \"persistent\" : \"preview\" } });\n };\n const close = () => {\n if (placement.placementIdentity) workbench.closePlacement(placement.placementIdentity);\n else workbench.layout.closePanel(placement.widgetId);\n };\n return (\n <Menu.Root\n open={open}\n onOpenChange={(details) => setOpen(details.open)}\n onExitComplete={() => {\n const request = pendingRequest.current;\n pendingRequest.current = null;\n // Finish the menu's focus restoration before opening a dialog.\n if (request) workbench.commandPalette.requestParams(request);\n }}\n positioning={{ placement: \"bottom-start\", getAnchorRect: () => anchor, offset: { mainAxis: 0 } }}\n >\n <Portal>\n <Menu.Positioner>\n <Menu.Content aria-label={`${label} context menu`} minW=\"64\" bg=\"bg\">\n {groups\n .filter((group) => group.rows.length)\n .map((group, index) => (\n <Box key={group.id} display=\"contents\">\n {index > 0 ? <Menu.Separator /> : null}\n {group.rows.map((row) => (\n <Menu.Item key={row.id} value={row.id} disabled={row.disabled} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={row.label}\n icon={row.icon ? <WorkbenchIcon name={row.icon} size={14} /> : undefined}\n iconColor={row.iconColor}\n isSelected={row.selected}\n disabled={row.disabled}\n onActivate={\n row.action\n ? () => {\n runPlacementAction(workbench, row.action!, (request) => {\n pendingRequest.current = request;\n });\n }\n : undefined\n }\n />\n </Menu.Item>\n ))}\n </Box>\n ))}\n {groups.some((group) => group.rows.length) ? <Menu.Separator /> : null}\n <Menu.ItemGroup>\n <Menu.ItemGroupLabel>Tab</Menu.ItemGroupLabel>\n {placement.tabRetention ? (\n <SharedAction\n value=\"pin\"\n label={placement.tabRetention === \"preview\" ? \"Pin tab\" : \"Unpin tab\"}\n icon=\"pin\"\n onActivate={pin}\n />\n ) : null}\n {destinations.map((region) => (\n <SharedAction\n key={region}\n value={`move-${region}`}\n label={`Move to ${getPanelLabel(region)}`}\n icon=\"ArrowRight\"\n onActivate={() => workbench.movePanel(placement.widgetId, region)}\n />\n ))}\n {placement.closable ? <SharedAction value=\"close\" label=\"Close tab\" icon=\"x\" onActivate={close} /> : null}\n <SharedAction\n value=\"reset-layout\"\n label=\"Reset layout\"\n icon=\"RotateCcw\"\n onActivate={() => workbench.resetLayout()}\n />\n </Menu.ItemGroup>\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport {\n DndContext,\n type DragOverEvent,\n DragOverlay,\n MouseSensor,\n pointerWithin,\n TouchSensor,\n useDroppable,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { createContext, type ReactNode, useContext, useId, useState } from \"react\";\nimport type { WorkbenchCore, WorkbenchPanelRegion, WorkbenchTabPosition } from \"../../core\";\nimport { findPlacementByWidgetId } from \"../../core/registries/layout/layout-operations\";\n\ninterface TabDrop {\n region: WorkbenchPanelRegion;\n position: WorkbenchTabPosition;\n widgetId?: string;\n edge?: \"before\" | \"after\";\n}\nconst TabDragContext = createContext<{ activeId?: string; drop?: TabDrop; destinations?: WorkbenchPanelRegion[] }>({});\nexport const useTabDrag = () => useContext(TabDragContext);\n\nexport const WorkbenchTabDragProvider = (props: { workbench: WorkbenchCore; children: ReactNode }) => {\n const { workbench, children } = props;\n const [activeId, setActiveId] = useState<string>();\n const [drop, setDrop] = useState<TabDrop>();\n const sensors = useSensors(\n useSensor(MouseSensor, { activationConstraint: { distance: 5 } }),\n useSensor(TouchSensor, { activationConstraint: { distance: 5 } }),\n );\n const finish = () => {\n setActiveId(undefined);\n setDrop(undefined);\n };\n const resolveDrop = (event: DragOverEvent) => {\n const data = event.over?.data.current;\n if (\n !data?.region ||\n event.over?.id === event.active.id ||\n !workbench.getPanelDestinations(String(event.active.id)).includes(data.region)\n )\n return undefined;\n const widgetId = data.widgetId as string | undefined;\n if (!widgetId) return { region: data.region, position: \"end\" } satisfies TabDrop;\n const rect = event.active.rect.current.translated;\n const before = rect && event.over && rect.left + rect.width / 2 < event.over.rect.left + event.over.rect.width / 2;\n return {\n region: data.region,\n widgetId,\n edge: before ? \"before\" : \"after\",\n position: before ? { beforeWidgetId: widgetId } : { afterWidgetId: widgetId },\n } satisfies TabDrop;\n };\n const placement = activeId ? findPlacementByWidgetId(workbench.layout.getLayout(), activeId)?.placement : undefined;\n return (\n <TabDragContext value={{ activeId, drop, destinations: activeId ? workbench.getPanelDestinations(activeId) : [] }}>\n <DndContext\n sensors={sensors}\n collisionDetection={(args) => {\n const pointer = args.pointerCoordinates;\n const panel = pointer\n ? document\n .elementFromPoint(pointer.x, pointer.y)\n ?.closest(\"[data-workbench-panel]\")\n ?.getAttribute(\"data-workbench-panel\")\n : undefined;\n return pointerWithin(args)\n .filter((collision) => collision.data?.droppableContainer.data.current?.region === panel)\n .sort((a, b) => {\n const area = (id: typeof a.id) => {\n const rect = args.droppableRects.get(id);\n return rect ? rect.width * rect.height : Infinity;\n };\n return area(a.id) - area(b.id);\n });\n }}\n onDragStart={(event) => setActiveId(String(event.active.id))}\n onDragOver={(event) => setDrop(resolveDrop(event))}\n onDragMove={(event) => setDrop(resolveDrop(event))}\n onDragCancel={finish}\n onDragEnd={(event) => {\n const target = resolveDrop(event);\n finish();\n if (target) workbench.movePanel(String(event.active.id), target.region, target.position);\n }}\n >\n {children}\n <Box asChild pointerEvents=\"none\">\n <DragOverlay dropAnimation={null}>\n {placement ? (\n <Box layerStyle=\"floatingBar\" textStyle=\"label/XS/medium\">\n {placement.title ?? placement.resource?.label}\n </Box>\n ) : null}\n </DragOverlay>\n </Box>\n </DndContext>\n </TabDragContext>\n );\n};\n\nexport const WorkbenchTabDropTarget = (props: { region: WorkbenchPanelRegion }) => {\n const { region } = props;\n const { activeId, drop, destinations } = useTabDrag();\n const id = useId();\n const allowed = Boolean(activeId && destinations?.includes(region));\n const { setNodeRef } = useDroppable({ id, data: { region }, disabled: !allowed });\n const highlighted = allowed && drop?.region === region;\n return (\n <Box\n ref={setNodeRef}\n data-workbench-tab-drop={region}\n data-drop-active={highlighted || undefined}\n position=\"absolute\"\n inset=\"0\"\n zIndex=\"dropdown\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n // Keep tab drag events out of iframes, including release over a disallowed\n // destination. Native file drops still reach the guest outside tab drags.\n pointerEvents={activeId ? \"auto\" : \"none\"}\n visibility={activeId ? \"visible\" : \"hidden\"}\n layerStyle={highlighted ? \"tabDropZone\" : undefined}\n textStyle=\"label/XS/medium\"\n >\n {highlighted && !drop?.widgetId ? \"Drop here to add a tab\" : null}\n </Box>\n );\n};\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport { type KeyboardEvent, type MouseEvent, type PointerEvent, useEffect, useRef, useState } from \"react\";\nimport type { WorkbenchCore, WorkbenchPanelRegion, WorkbenchWidgetPlacement } from \"../../core\";\nimport { usePlacementTab } from \"../shared/use-placement-tab\";\nimport { useTabDrag } from \"./tab-drag-context\";\n\nexport interface WorkbenchRegionTabProps {\n workbench: WorkbenchCore;\n placement: WorkbenchWidgetPlacement;\n activeWidgetId?: string;\n disabled?: boolean;\n nextWidgetId?: string;\n previousWidgetId?: string;\n sortable?: boolean;\n region?: WorkbenchPanelRegion;\n}\nexport const useRegionTab = (props: WorkbenchRegionTabProps) => {\n const { workbench, placement, disabled = false, sortable = false, region, nextWidgetId, previousWidgetId } = props;\n const snapshot = usePlacementTab(placement, workbench);\n const [open, setOpen] = useState(false);\n const [anchor, setAnchor] = useState({ x: 0, y: 0, width: 0, height: 0 });\n const hold = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const start = useRef({ x: 0, y: 0 });\n const suppressClick = useRef(false);\n const drag = useDraggable({ id: placement.widgetId, disabled: disabled || !sortable });\n const target = useDroppable({\n id: placement.widgetId,\n disabled: !region,\n data: { region, widgetId: placement.widgetId },\n });\n const context = useTabDrag();\n const clearHold = () => clearTimeout(hold.current);\n useEffect(() => () => clearTimeout(hold.current), []);\n const show = (element: HTMLElement) => {\n if (disabled) return;\n const rect = element.getBoundingClientRect();\n setAnchor({ x: rect.x, y: rect.y, width: rect.width, height: rect.height });\n setOpen(true);\n };\n const onContextMenu = (event: MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n show(event.currentTarget);\n };\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\")) {\n event.preventDefault();\n show(event.currentTarget);\n return;\n }\n if (!sortable || disabled || !event.altKey) return;\n if (event.key === \"ArrowLeft\" && previousWidgetId) {\n event.preventDefault();\n workbench.layout.reorderPanel(placement.widgetId, { beforeWidgetId: previousWidgetId });\n }\n if (event.key === \"ArrowRight\" && nextWidgetId) {\n event.preventDefault();\n workbench.layout.reorderPanel(placement.widgetId, { afterWidgetId: nextWidgetId });\n }\n };\n const onPointerDown = (event: PointerEvent<HTMLElement>) => {\n suppressClick.current = false;\n if (event.pointerType !== \"touch\") return;\n const element = event.currentTarget;\n start.current = { x: event.clientX, y: event.clientY };\n hold.current = setTimeout(() => {\n suppressClick.current = true;\n show(element);\n }, 550);\n };\n const onPointerMove = (event: PointerEvent<HTMLElement>) => {\n if (Math.hypot(event.clientX - start.current.x, event.clientY - start.current.y) > 5) clearHold();\n };\n const onClick = (event: MouseEvent<HTMLElement>) => {\n if (suppressClick.current) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n return {\n snapshot,\n open,\n setOpen,\n anchor,\n drag,\n target,\n drop: context.drop?.widgetId === placement.widgetId ? context.drop : undefined,\n onContextMenu,\n onKeyDown,\n onPointerDown,\n onPointerMove,\n onPointerUp: clearHold,\n onPointerCancel: clearHold,\n onClick,\n };\n};\n","import { Box, CloseButton, Tabs, Text, useTabsContext } from \"@chakra-ui/react\";\nimport { DropIndicator, Tooltip } from \"@pstdio/ui\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { RegionTabMenu } from \"./region-tab-menu\";\nimport { resolveTabIconName } from \"./region-tabs-visibility\";\nimport { useRegionTab, type WorkbenchRegionTabProps } from \"./use-region-tab\";\n\nconst TabIcon = (props: { indicator?: import(\"../../core\").WorkbenchTabSnapshot[\"indicator\"]; icon?: string }) => {\n const { indicator, icon } = props;\n if (indicator)\n return (\n <WorkbenchIcon\n name={indicator.icon}\n size={12}\n flexShrink={0}\n color={indicator.color ?? \"fg.muted\"}\n aria-label={indicator.label}\n />\n );\n return icon ? <WorkbenchIcon name={icon} size={12} flexShrink={0} color=\"fg.muted\" /> : null;\n};\n\nexport const WorkbenchRegionTab = (props: WorkbenchRegionTabProps) => {\n const { workbench, placement, activeWidgetId, disabled = false, sortable = false } = props;\n const tabs = useTabsContext();\n const behavior = useRegionTab(props);\n const { snapshot, drag, target, drop } = behavior;\n const label = snapshot.label ?? placement.resource?.label ?? placement.title ?? placement.contributionId;\n const labelId = `workbench-tab-label-${placement.widgetId}`;\n const widget = workbench.layout.getWidget(placement.contributionId);\n const icon =\n snapshot.icon ??\n resolveTabIconName(\n placement,\n widget,\n placement.resource ? workbench.resources.getKind(placement.resource.type)?.icon : undefined,\n );\n const active = placement.widgetId === activeWidgetId;\n return (\n <>\n <Box\n ref={(node: HTMLDivElement | null) => {\n drag.setNodeRef(node);\n target.setNodeRef(node);\n }}\n position=\"relative\"\n data-workbench-tab={placement.widgetId}\n minW={placement.closable ? \"tab-min\" : undefined}\n flex={placement.closable ? \"1 1 0\" : \"0 0 auto\"}\n maxW=\"fit-content\"\n className=\"group\"\n >\n <Tooltip content={label} openDelay={300} closeDelay={150} positioning={{ placement: \"bottom\" }}>\n <Tabs.Trigger\n id={tabs.getTriggerProps({ value: placement.widgetId }).id}\n value={placement.widgetId}\n aria-labelledby={labelId}\n disabled={disabled}\n aria-haspopup=\"menu\"\n aria-expanded={behavior.open}\n aria-keyshortcuts={sortable ? \"Alt+ArrowLeft Alt+ArrowRight Shift+F10\" : \"Shift+F10\"}\n fontStyle={placement.tabRetention === \"preview\" ? \"italic\" : undefined}\n opacity={drag.isDragging ? 0.5 : undefined}\n w=\"full\"\n {...drag.listeners}\n onKeyDown={behavior.onKeyDown}\n onContextMenu={behavior.onContextMenu}\n onPointerDown={behavior.onPointerDown}\n onPointerMove={behavior.onPointerMove}\n onPointerUp={behavior.onPointerUp}\n onPointerCancel={behavior.onPointerCancel}\n onClickCapture={behavior.onClick}\n >\n <TabIcon indicator={snapshot.indicator} icon={icon} />\n <Text as=\"span\" id={labelId} data-tab-label>\n {label}\n </Text>\n {placement.closable ? (\n <CloseButton\n as=\"span\"\n role=\"button\"\n aria-label={`Close ${label}`}\n aria-disabled={disabled}\n data-tab-close\n size=\"2xs\"\n boxSize=\"4\"\n minW=\"4\"\n p=\"0\"\n borderRadius=\"2xs\"\n flexShrink={0}\n me=\"-1\"\n opacity={active ? 1 : 0}\n pointerEvents={active ? \"auto\" : \"none\"}\n color=\"fg.muted\"\n _groupHover={{ opacity: 1, pointerEvents: \"auto\" }}\n _groupFocusWithin={{ opacity: 1, pointerEvents: \"auto\" }}\n onPointerDown={(event) => event.stopPropagation()}\n onMouseDown={(event) => event.stopPropagation()}\n onTouchStart={(event) => event.stopPropagation()}\n onClick={(event) => {\n event.stopPropagation();\n if (disabled) return;\n if (placement.placementIdentity) workbench.closePlacement(placement.placementIdentity);\n else workbench.layout.closePanel(placement.widgetId);\n }}\n />\n ) : null}\n </Tabs.Trigger>\n </Tooltip>\n {drop ? (\n <DropIndicator\n orientation=\"vertical\"\n left={drop.edge === \"before\" ? \"0\" : undefined}\n right={drop.edge === \"after\" ? \"0\" : undefined}\n />\n ) : null}\n </Box>\n <RegionTabMenu\n anchor={behavior.anchor}\n label={label}\n open={behavior.open}\n setOpen={behavior.setOpen}\n groups={snapshot.menu ?? []}\n placement={placement}\n workbench={workbench}\n />\n </>\n );\n};\n","import { Tabs } from \"@chakra-ui/react\";\nimport type { WorkbenchCore, WorkbenchPanelRegion, WorkbenchWidgetPlacement } from \"../../core\";\nimport { WorkbenchRegionTab } from \"./workbench-region-tab\";\n\ninterface RegionTabListProps {\n activeWidgetId?: string;\n disabled: boolean;\n panelRegion?: WorkbenchPanelRegion;\n placements: WorkbenchWidgetPlacement[];\n workbench: WorkbenchCore;\n}\nexport const RegionTabList = (props: RegionTabListProps) => {\n const { activeWidgetId, disabled, panelRegion, placements, workbench } = props;\n return (\n <Tabs.List h=\"full\" minH=\"0\" w=\"full\" alignItems=\"center\" gap=\"2xs\" justifyContent=\"flex-start\">\n {placements.map((placement, index) => (\n <WorkbenchRegionTab\n key={placement.widgetId}\n workbench={workbench}\n placement={placement}\n activeWidgetId={activeWidgetId}\n disabled={disabled}\n region={panelRegion}\n sortable={Boolean(panelRegion && workbench.getPanelDestinations(placement.widgetId).length)}\n previousWidgetId={placements[index - 1]?.widgetId}\n nextWidgetId={placements[index + 1]?.widgetId}\n />\n ))}\n </Tabs.List>\n );\n};\n","import { HStack, IconButton, Menu, Portal, Tabs } from \"@chakra-ui/react\";\nimport {\n buildTabVisibilityMenuActions,\n ListRow,\n PANEL_HEADER_CONTROL_SIZE,\n PANEL_HEADER_TAB_SIZE,\n ScrollArea,\n Tooltip,\n} from \"@pstdio/ui\";\nimport type { MouseEvent as ReactMouseEvent } from \"react\";\nimport { useEffect, useState } from \"react\";\nimport {\n type WorkbenchCore,\n type WorkbenchPanelRegion,\n type WorkbenchRegion as WorkbenchRegionId,\n type WorkbenchWidgetPlacement,\n workbenchPanelRegions,\n} from \"../../core\";\nimport { runUserAction } from \"../../core/shared/run-user-action\";\nimport { hasCommandParameters } from \"../command-palette/command-palette-params\";\nimport type { WorkbenchMenuItem } from \"../menus/menu-items\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { WorkbenchPanelAddMenu } from \"./panel-add-menu\";\nimport { RegionTabList } from \"./region-tab-list\";\nimport { resolveDisplayedActiveWidgetId, resolveTabIconName, toTabKey } from \"./region-tabs-visibility\";\nimport { useWorkbenchPanelRegionTabsState, useWorkbenchRegionTabsState } from \"./region-tabs-visibility-hooks\";\n\nexport {\n shouldShowPanelHeader,\n shouldShowRegionTabs,\n useWorkbenchPanelHeaderVisible,\n useWorkbenchRegionTabsVisible,\n} from \"./region-tabs-visibility-hooks\";\n\ninterface WorkbenchRegionTabsProps {\n workbench: WorkbenchCore;\n region: WorkbenchRegionId;\n visibilityStorageKey?: string;\n}\nconst resolvePlacementIcon = (workbench: WorkbenchCore, placement: WorkbenchWidgetPlacement) => {\n const iconName = resolveTabIconName(\n placement,\n workbench.layout.getWidget(placement.contributionId),\n placement.resource ? workbench.resources.getKind(placement.resource.type)?.icon : undefined,\n );\n return iconName ? <WorkbenchIcon name={iconName} size={14} /> : undefined;\n};\ninterface WorkbenchRegionTabsContentProps extends WorkbenchRegionTabsProps {\n state: ReturnType<typeof useWorkbenchRegionTabsState>;\n}\n\nconst WorkbenchRegionTabsContent = (props: WorkbenchRegionTabsContentProps) => {\n const { workbench, region, state } = props;\n const {\n commands,\n regionState,\n resource,\n tabStore,\n subPanelPlacements,\n visiblePlacements,\n leadingItems,\n panelRegion,\n eligibleSubPanels,\n showTabs,\n hasActions,\n } = state;\n const tabOverrides = tabStore.tabOverrides;\n const getKey = (placement: WorkbenchWidgetPlacement) => toTabKey(region, placement);\n const [viewport, setViewport] = useState<HTMLDivElement | null>(null);\n const [menuOpen, setMenuOpen] = useState(false);\n const [anchor, setAnchor] = useState({ x: 0, y: 0, width: 0, height: 0 });\n const menuActions = buildTabVisibilityMenuActions(\n subPanelPlacements,\n tabOverrides,\n {\n onToggleTab: (key, hiddenByDefault) => tabStore.toggleTab(key, hiddenByDefault),\n onResetAll: () => tabStore.reset(),\n },\n getKey,\n {\n visibleIcon: <WorkbenchIcon name=\"eye\" size={14} />,\n hiddenIcon: <WorkbenchIcon name=\"eye-off\" size={14} />,\n resetIcon: <WorkbenchIcon name=\"rotate-ccw\" size={14} />,\n },\n (placement) => resolvePlacementIcon(workbench, placement),\n );\n const hasVisibilityMenu = menuActions.length > 0;\n const openVisibilityMenu = (event: ReactMouseEvent<HTMLElement>) => {\n if (!hasVisibilityMenu) return;\n event.preventDefault();\n const target = event.target instanceof Element ? event.target.closest('[role=\"tab\"]') : undefined;\n const rect = (target ?? event.currentTarget).getBoundingClientRect();\n setAnchor({ x: rect.x, y: rect.y, width: rect.width, height: rect.height });\n setMenuOpen(true);\n };\n // Translate vertical wheel into horizontal scrolling so the tab strip scrolls\n // with a plain mouse wheel — no modifier key required.\n useEffect(() => {\n if (!viewport) return;\n const onWheel = (event: WheelEvent) => {\n if (event.deltaY === 0 || viewport.scrollWidth <= viewport.clientWidth) return;\n viewport.scrollLeft += event.deltaY;\n event.preventDefault();\n };\n viewport.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => viewport.removeEventListener(\"wheel\", onWheel);\n }, [viewport]);\n const activeWidgetId = resolveDisplayedActiveWidgetId(visiblePlacements, regionState.activeWidgetId);\n useEffect(() => {\n if (!activeWidgetId) return;\n viewport?.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]')?.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n });\n }, [activeWidgetId, viewport]);\n if (!showTabs && !hasActions) return null;\n const onSelectLeadingItem = (item: WorkbenchMenuItem) => {\n const command = commands[item.commandId]?.command;\n if (command && hasCommandParameters(command.params)) {\n workbench.commandPalette.requestParams({ record: { command }, label: item.label, args: item.args });\n return;\n }\n void runUserAction(workbench, item.label, () => workbench.commands.executeCommand(item.commandId, item.args));\n };\n const leadingActions = leadingItems.map((item) => (\n <Tooltip key={item.id} content={item.label}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={item.label}\n disabled={item.disabled}\n flexShrink={0}\n onPointerDown={(event) => event.stopPropagation()}\n onClick={(event) => {\n event.stopPropagation();\n onSelectLeadingItem(item);\n }}\n >\n <WorkbenchIcon name={item.icon ?? \"plus\"} size={14} />\n </IconButton>\n </Tooltip>\n ));\n if (!showTabs) {\n return (\n <HStack flex=\"1\" h=\"full\" minW=\"0\" gap=\"2xs\">\n {panelRegion ? (\n <WorkbenchPanelAddMenu\n workbench={workbench}\n region={panelRegion}\n resource={resource}\n panels={eligibleSubPanels}\n />\n ) : null}\n {leadingActions}\n </HStack>\n );\n }\n return (\n <HStack flex=\"1\" h=\"full\" minW=\"0\" gap=\"2xs\">\n <Tabs.Root\n value={activeWidgetId}\n onValueChange={(details) => {\n const placement = visiblePlacements.find((candidate) => candidate.widgetId === details.value);\n if (placement?.role === \"location\") {\n workbench.layout.setRegionActiveWidget(region, placement.widgetId);\n return;\n }\n workbench.layout.activatePanel(details.value);\n }}\n variant=\"subtle\"\n colorPalette=\"gray\"\n justify=\"start\"\n size={PANEL_HEADER_TAB_SIZE}\n alignSelf=\"stretch\"\n flex=\"0 1 auto\"\n maxW=\"full\"\n minW=\"0\"\n h=\"full\"\n position=\"relative\"\n zIndex=\"1\"\n onContextMenu={hasVisibilityMenu ? openVisibilityMenu : undefined}\n >\n {/* Overflowing tabs scroll horizontally; the overlay scrollbar adds no\n height so the active tab still meets the header's bottom edge.\n The content minimum overrides Zag's inline style; see ADR 0049. */}\n <ScrollArea\n viewportRef={setViewport}\n size=\"xs\"\n h=\"full\"\n maxW=\"full\"\n minW=\"0\"\n showVerticalScrollbar={false}\n showHorizontalScrollbar\n contentProps={{ h: \"full\", w: \"full\", minW: \"0!\" }}\n >\n {/* Chakra's size=\"sm\" list sets a 36px min-height that overflows the 2rem header and\n makes the horizontal-only viewport scroll vertically; minH=\"0\" lets h=\"full\" win. */}\n <RegionTabList\n disabled={false}\n workbench={workbench}\n placements={visiblePlacements}\n activeWidgetId={activeWidgetId}\n panelRegion={panelRegion}\n />\n </ScrollArea>\n {hasVisibilityMenu ? (\n <Menu.Root\n open={menuOpen}\n onOpenChange={(details) => setMenuOpen(details.open)}\n positioning={{\n placement: \"bottom-start\",\n getAnchorRect: () => anchor,\n offset: { mainAxis: 0 },\n }}\n >\n <Portal>\n <Menu.Positioner>\n <Menu.Content minW=\"220px\" bg=\"bg\">\n {menuActions.map((action) => (\n <Menu.Item key={action.key} value={action.key} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={action.label}\n icon={action.icon}\n endContent={action.endContent}\n disabled={action.isDisabled}\n onActivate={action.onClick}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n ) : null}\n </Tabs.Root>\n {panelRegion ? (\n <WorkbenchPanelAddMenu\n workbench={workbench}\n region={panelRegion}\n resource={resource}\n panels={eligibleSubPanels}\n />\n ) : null}\n {leadingActions}\n </HStack>\n );\n};\n\ninterface WorkbenchPanelRegionTabsProps extends WorkbenchRegionTabsProps {\n region: WorkbenchPanelRegion;\n}\n\nconst WorkbenchPanelRegionTabs = (props: WorkbenchPanelRegionTabsProps) => {\n const { workbench, region, visibilityStorageKey } = props;\n const state = useWorkbenchPanelRegionTabsState(workbench, region, visibilityStorageKey);\n return <WorkbenchRegionTabsContent {...props} state={state} />;\n};\n\nconst WorkbenchOtherRegionTabs = (props: WorkbenchRegionTabsProps) => {\n const { workbench, region, visibilityStorageKey } = props;\n const state = useWorkbenchRegionTabsState(workbench, region, visibilityStorageKey);\n return <WorkbenchRegionTabsContent {...props} state={state} />;\n};\n\nexport const WorkbenchRegionTabs = (props: WorkbenchRegionTabsProps) => {\n const { region } = props;\n const panel = workbenchPanelRegions.find((panelRegion) => panelRegion === region);\n return panel ? <WorkbenchPanelRegionTabs {...props} region={panel} /> : <WorkbenchOtherRegionTabs {...props} />;\n};\n","import { Button } from \"@chakra-ui/react\";\nimport { AlertMessage } from \"@pstdio/ui\";\n\ninterface RendererReadNoticeProps {\n error: string;\n retry(): void;\n}\n\nexport const RendererReadNotice = (props: RendererReadNoticeProps) => {\n const { error, retry } = props;\n return (\n <AlertMessage\n status=\"error\"\n title=\"Could not load this view\"\n endElement={\n <Button size=\"xs\" variant=\"outline\" onClick={retry}>\n Retry\n </Button>\n }\n >\n {error}\n </AlertMessage>\n );\n};\n","import { resolvePageParams } from \"@pstdio/sdk/extensions\";\nimport type { WorkbenchCore, WorkbenchPanelInstance } from \"../../core\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\nexport const usePageParams = (workbench: WorkbenchCore, placement?: WorkbenchPanelInstance) => {\n const state = useWorkbenchStore(workbench.pages.store, (state) => state);\n const owner = placement?.placementIdentity;\n if (owner?.kind !== \"page\" || owner.pageId !== state.activePageId) return undefined;\n return resolvePageParams(state.pages[owner.pageId]?.params, state.location?.params);\n};\n","// The read owner keeps the canonical value and a journal of local edits. Reads\n// begun before an edit or while saving cannot replace its preview.\nexport const createRendererMutations = <T>() => {\n let baseline: T | undefined;\n let revision = 0;\n const journal: Array<{ update: (value: T) => T; saving: boolean }> = [];\n const pending = () => journal.some((operation) => operation.saving);\n const value = () =>\n baseline === undefined ? undefined : journal.reduce<T>((value, operation) => operation.update(value), baseline!);\n return {\n value,\n pending,\n revision: () => revision,\n accept(next: T, readRevision: number) {\n if (readRevision !== revision || pending()) return false;\n baseline = next;\n journal.length = 0;\n return true;\n },\n begin(update: (value: T) => T) {\n revision += 1;\n const operation = { update, saving: true };\n journal.push(operation);\n return operation;\n },\n finish(operation: (typeof journal)[number], success: boolean) {\n revision += 1;\n operation.saving = false;\n if (!success) journal.splice(journal.indexOf(operation), 1);\n },\n };\n};\n\n/** Connection changes rebind transport reads, not local mutation ownership. */\nexport const createRendererMutationBinding = <T>() => {\n let key: string | undefined;\n let owner = createRendererMutations<T>();\n return {\n bind(ownerKey: string, queryKey: string) {\n const next = JSON.stringify([ownerKey, queryKey]);\n if (key !== undefined && key !== next) owner = createRendererMutations<T>();\n key = next;\n return owner;\n },\n };\n};\n","import { createContext, type ReactNode, useContext } from \"react\";\n\nconst WorkbenchConnectionContext = createContext(true);\n\ninterface WorkbenchConnectionProviderProps {\n connected: boolean;\n children: ReactNode;\n}\n\n// The host owns transport health. Views retain their data until that connection recovers.\nexport const WorkbenchConnectionProvider = (props: WorkbenchConnectionProviderProps) => {\n const { connected, children } = props;\n return <WorkbenchConnectionContext value={connected}>{children}</WorkbenchConnectionContext>;\n};\n\nexport const useWorkbenchConnection = () => useContext(WorkbenchConnectionContext);\n","import { PstdioConnectionError } from \"@pstdio/sdk/client\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { Disposable, RendererReadBinding, WorkbenchCore } from \"../../core\";\nimport { createRendererMutationBinding } from \"./renderer-mutations\";\nimport { useWorkbenchConnection } from \"./workbench-connection-provider\";\n\ninterface RendererReadOptions<T> {\n workbench: WorkbenchCore;\n ownerKey: string;\n /** What the read is about. A new key drops the old value and loads again. */\n queryKey: string;\n /**\n * What the read is asked for, such as a view's filter. A new key loads again but keeps the\n * current value on screen until the new one arrives.\n */\n refreshKey?: string;\n load(signal: AbortSignal, publish: (value: T) => void): Promise<T> | T;\n subscribe(listener: () => void): Disposable | (() => void);\n}\n\ninterface ReadState<T> {\n queryKey: string;\n value?: T;\n loading: boolean;\n error?: Error;\n}\n\nexport const useRendererRead = <T>(options: RendererReadOptions<T>) => {\n const { workbench, ownerKey, queryKey, refreshKey } = options;\n const connected = useWorkbenchConnection();\n const [state, setState] = useState<ReadState<T>>({ queryKey, loading: true });\n const retryRef = useRef<(() => Promise<void>) | undefined>(undefined);\n const refreshRef = useRef<(() => Promise<void>) | undefined>(undefined);\n const lastRefreshKey = useRef(refreshKey);\n const callbacks = useRef(options);\n const mutationBinding = useRef(createRendererMutationBinding<T>());\n const mutations = useRef(mutationBinding.current.bind(ownerKey, queryKey));\n const saveQueue = useRef(Promise.resolve());\n useEffect(() => {\n callbacks.current = options;\n });\n // Query identity controls ownership. Rendering a new callback must not start another read.\n // biome-ignore lint/correctness/useExhaustiveDependencies: A connection change reloads views after missed sync events, including local contributions.\n useEffect(() => {\n const binding: RendererReadBinding = workbench.views.reads.bind(ownerKey);\n const owner = mutationBinding.current.bind(ownerKey, queryKey);\n mutations.current = owner;\n const handlers = {\n onProgress: (value: T) => {\n // Background refreshes keep the complete snapshot until its replacement is ready.\n setState((previous) => {\n if (previous.queryKey === queryKey && previous.value !== undefined && !previous.loading) return previous;\n return { queryKey, value, loading: true };\n });\n },\n onValue: (value: T) => {\n setState({ queryKey, value: owner.value() ?? value, loading: false });\n },\n onError: (error: unknown) => {\n const connectionLost = error instanceof PstdioConnectionError;\n const readError = error instanceof Error ? error : new Error(String(error));\n setState((previous) => ({\n queryKey,\n value: previous.queryKey === queryKey ? previous.value : undefined,\n loading: false,\n // Retain a loaded snapshot after a dropped response. An initial failure\n // still needs Retry if the host's sync connection has not been lost.\n error:\n connectionLost && previous.queryKey === queryKey && previous.value !== undefined ? undefined : readError,\n }));\n },\n };\n const refresh = (reason?: \"retry\") => {\n if (owner.pending()) return Promise.resolve();\n const current = callbacks.current;\n const revision = owner.revision();\n return binding.request(\n {\n ...handlers,\n // A changed read scope cancels older work without clearing the mounted view's snapshot.\n queryKey: JSON.stringify([queryKey, current.refreshKey]),\n load: current.load,\n onValue: (value: T) => {\n if (owner.accept(value, revision)) handlers.onValue(value);\n },\n },\n reason,\n );\n };\n refreshRef.current = () => refresh();\n // This read already uses the current refresh key, so the refresh effect below must not repeat it.\n lastRefreshKey.current = callbacks.current.refreshKey;\n retryRef.current = () => {\n setState((previous) => ({ ...previous, loading: previous.value === undefined, error: undefined }));\n return refresh(\"retry\");\n };\n refresh();\n const subscription = callbacks.current.subscribe(refresh);\n return () => {\n retryRef.current = undefined;\n refreshRef.current = undefined;\n binding.dispose();\n if (typeof subscription === \"function\") subscription();\n else subscription.dispose();\n };\n }, [workbench, ownerKey, queryKey, connected]);\n useEffect(() => {\n if (lastRefreshKey.current === refreshKey) return;\n lastRefreshKey.current = refreshKey;\n refreshRef.current?.();\n }, [refreshKey]);\n const current = state.queryKey === queryKey ? state : { queryKey, loading: true };\n const connectionLost = current.error instanceof PstdioConnectionError && !connected;\n return {\n ...current,\n error: connectionLost ? undefined : current.error?.message,\n loading: current.loading || (connectionLost && current.value === undefined),\n retry: () => retryRef.current?.() ?? Promise.resolve(),\n mutate: (update: (value: T) => T, save: () => Promise<void> | void) => {\n const owner = mutations.current;\n const operation = owner.begin(update);\n const publish = () => setState((previous) => ({ ...previous, value: owner.value() }));\n publish();\n const pending = saveQueue.current.then(save);\n saveQueue.current = pending.catch(() => undefined);\n return pending\n .then(\n () => owner.finish(operation, true),\n (error: unknown) => {\n owner.finish(operation, false);\n throw error;\n },\n )\n .finally(() => {\n if (mutations.current !== owner) return;\n publish();\n if (!owner.pending()) void refreshRef.current?.();\n });\n },\n };\n};\n","import type { WorkbenchCore } from \"../../../core\";\nimport { reportUserActionError } from \"../../../core/shared/run-user-action\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-params-dialog\";\nimport { CommandParamsDialog } from \"../../command-palette/command-params-dialog\";\nimport type { TreeActionParamsRequest } from \"./tree-actions\";\n\ninterface TreeParamsDialogProps {\n request: TreeActionParamsRequest | null;\n renderParamField?: CommandParamFieldRenderer;\n workbench: WorkbenchCore;\n onClose: () => void;\n}\n\nexport const TreeParamsDialog = (props: TreeParamsDialogProps) => {\n const { request, renderParamField, workbench, onClose } = props;\n return (\n <CommandParamsDialog\n request={request?.request ?? null}\n renderParamField={renderParamField}\n executeOptionCommand={(id, args, signal) =>\n workbench.commands.executeCommand(id, args, { ...request?.request.context, signal })\n }\n prepareArgs={(input) =>\n workbench.commands.getCommand(input.commandId)\n ? workbench.commands.prepareCommandArgs(input.commandId, input.args, input.context, input.onArgsChange)\n : Promise.resolve(input.args)\n }\n onRunError={(label, error) => reportUserActionError(workbench, label, error)}\n onClose={onClose}\n onRun={async ({ args }) => {\n await request?.run(args);\n }}\n />\n );\n};\n","import { Button, HStack, Text } from \"@chakra-ui/react\";\nimport { type ReactNode, useState } from \"react\";\nimport type { WorkbenchCommandExecutionContext, WorkbenchCore } from \"../../core\";\nimport type { ViewToolbarAction } from \"../../core/registries/renderers/view-toolbar-action\";\nimport type { CommandParamFieldRenderer } from \"../command-palette/command-params-dialog\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { createTreeContextMenuItems, type TreeActionParamsRequest } from \"./tree/tree-actions\";\nimport { TreeParamsDialog } from \"./tree/tree-params-dialog\";\n\ninterface ViewToolbarActionsProps {\n workbench: WorkbenchCore;\n actions?: ViewToolbarAction[];\n context?: WorkbenchCommandExecutionContext;\n renderParamField?: CommandParamFieldRenderer;\n}\n\nexport const ViewToolbarActions = (props: ViewToolbarActionsProps) => {\n const { workbench, actions, context, renderParamField } = props;\n const [request, setRequest] = useState<TreeActionParamsRequest | null>(null);\n const [error, setError] = useState<string>();\n useWorkbenchStore(workbench.context.store, (state) => state.values);\n useWorkbenchStore(workbench.commands.store, (state) => state.commands);\n const items = createTreeContextMenuItems({\n workbench,\n actions,\n context,\n onRequestParams: setRequest,\n onCommandError: (error) => setError(error instanceof Error ? error.message : String(error)),\n });\n return (\n <>\n <HStack gap=\"xs\">\n {items.map((item) => (\n <Button\n key={item.id}\n size=\"sm\"\n variant={\n actions?.find((action) => action.id === item.id)?.presentation === \"primary\" ? \"primary\" : \"outline\"\n }\n disabled={item.disabled}\n onClick={() => {\n setError(undefined);\n item.onAction?.();\n }}\n >\n {item.icon as ReactNode}\n {item.label}\n </Button>\n ))}\n {error ? (\n <Text role=\"alert\" textStyle=\"paragraph/XS/regular\" color=\"fg.error\">\n {error}\n </Text>\n ) : null}\n </HStack>\n <TreeParamsDialog\n workbench={workbench}\n request={request}\n renderParamField={renderParamField}\n onClose={() => setRequest(null)}\n />\n </>\n );\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type { ResourceContextAction } from \"@pstdio/ui\";\nimport type { DataTableSelectionAction, RowData } from \"@pstdio/ui/data-table\";\nimport type { ReactNode } from \"react\";\nimport type {\n DataTableRendererColumn,\n DataTableRendererContribution,\n DataTableRendererQueryResult,\n DataTableRendererRow,\n DataTableRendererSelectionAction,\n WorkbenchPanelInstance,\n} from \"../../../core\";\nexport const resolveDataTableRendererQueryKey = (\n contribution: Pick<DataTableRendererContribution, \"id\" | \"contextKeys\">,\n resource: WorkbenchPanelInstance[\"resource\"],\n modeId: string | undefined,\n contextValues: Record<string, unknown>,\n) =>\n JSON.stringify([\n contribution.id,\n resourceKey(resource),\n modeId,\n contribution.contextKeys?.map((key) => contextValues[key] ?? null),\n ]);\n\nexport const resolveDataTableRendererColumns = (\n result: DataTableRendererQueryResult,\n contributionColumns?: DataTableRendererColumn[],\n) => {\n if (result.columns) return result.columns;\n if (contributionColumns) return contributionColumns;\n const firstRow = result.rows[0];\n return firstRow ? Object.keys(firstRow.values).map((id): DataTableRendererColumn => ({ id })) : [];\n};\nexport const buildDataTableRendererData = (rows: DataTableRendererRow[], columns: DataTableRendererColumn[]) => {\n const rowByData = new WeakMap<Record<string, unknown>, DataTableRendererRow>();\n const data = rows.map((row) => {\n const values = Object.fromEntries(columns.map((column) => [column.id, row.values[column.id]]));\n rowByData.set(values, row);\n return values;\n });\n return { data, rowByData };\n};\nexport const resolveDataTableRendererSelectionActions = (\n actions: DataTableRendererSelectionAction[],\n rowByData: WeakMap<RowData, DataTableRendererRow>,\n): DataTableSelectionAction[] =>\n actions.map((action) => ({\n label: action.label,\n icon: action.icon as ReactNode,\n destructive: action.destructive,\n onSelect: (data) => {\n const rows = data.flatMap((row) => {\n const rendererRow = rowByData.get(row);\n return rendererRow ? [rendererRow] : [];\n });\n void action.run(rows);\n },\n }));\nexport const resolveDataTableRendererResourceActions = (\n data: RowData,\n rowByData: WeakMap<RowData, DataTableRendererRow>,\n resolveResourceActions: (resource: NonNullable<DataTableRendererRow[\"resource\"]>) => ResourceContextAction[],\n) => {\n const resource = rowByData.get(data)?.resource;\n if (!resource) return [];\n return resolveResourceActions(resource)\n .filter((action) => !action.isDisabled)\n .map((action) => ({\n label: action.label,\n icon: action.icon,\n onSelect: (_context?: unknown) => void action.onClick?.(),\n }));\n};\nexport const resolveDataTableRendererStorageKey = (\n contribution: Pick<DataTableRendererContribution, \"id\" | \"contextKeys\">,\n placement: WorkbenchPanelInstance,\n contextValues: Record<string, unknown>,\n) => {\n const identity = resourceKey(placement.resource) ?? placement.resource?.id ?? \"unscoped\";\n const scope = contribution.contextKeys?.map((key) => contextValues[key] ?? null);\n const key = `pstdio:workbench:dataTableRenderer:${contribution.id}:${placement.instanceId}:${identity}`;\n return scope?.length ? `${key}:${JSON.stringify(scope)}` : key;\n};\n","import { Stack } from \"@chakra-ui/react\";\nimport { EmptyState } from \"@pstdio/ui\";\nimport {\n DataTable,\n type DataTableColumnRenderer,\n type DataTableColumnStat,\n type DataTableRowAction,\n DataTableSkeleton,\n type RowData,\n useDataTableViewStore,\n} from \"@pstdio/ui/data-table\";\nimport { type ReactNode, useSyncExternalStore } from \"react\";\nimport type {\n DataTableRendererQueryResult,\n RegisteredDataTableRendererContribution,\n WorkbenchCore,\n WorkbenchPanelInstance,\n} from \"../../../core\";\nimport { getWorkbenchRenderers, rendererReadKey } from \"../../../core\";\nimport { runUserAction } from \"../../../core/shared/run-user-action\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-params-dialog\";\nimport { useWorkbenchResourceActionResolver } from \"../../menus/resource-actions\";\nimport { useWorkbenchStore } from \"../../shared/use-workbench-store\";\nimport { RendererReadNotice } from \"../renderer-read-notice\";\nimport { usePageParams } from \"../use-page-params\";\nimport { useRendererRead } from \"../use-renderer-read\";\nimport { ViewToolbarActions } from \"../view-toolbar-actions\";\nimport {\n buildDataTableRendererData,\n resolveDataTableRendererColumns,\n resolveDataTableRendererQueryKey,\n resolveDataTableRendererResourceActions,\n resolveDataTableRendererSelectionActions,\n resolveDataTableRendererStorageKey,\n} from \"./data-table-view-model\";\n\ninterface WorkbenchDataTableViewProps {\n workbench: WorkbenchCore;\n renderParamField?: CommandParamFieldRenderer;\n contribution: RegisteredDataTableRendererContribution;\n placement: WorkbenchPanelInstance;\n}\nconst initialResult: DataTableRendererQueryResult = { rows: [] };\nconst noopSubscribe = () => () => {};\n\nexport const WorkbenchDataTableView = (props: WorkbenchDataTableViewProps) => {\n const { workbench, contribution, placement } = props;\n const pageParams = usePageParams(workbench, placement);\n const resolveResourceActions = useWorkbenchResourceActionResolver(workbench);\n const contextValues = useWorkbenchStore(workbench.context.store, (state) => state.values);\n const storageKey = resolveDataTableRendererStorageKey(contribution, placement, contextValues);\n const provider = contribution.viewsProvider;\n const viewsSource = useSyncExternalStore(\n provider?.subscribe ?? noopSubscribe,\n provider?.getSnapshot ?? (() => undefined),\n provider?.getSnapshot ?? (() => undefined),\n );\n const filter = useDataTableViewStore(storageKey, (state) => state.filter, contribution);\n const sorts = useDataTableViewStore(storageKey, (state) => state.sorts, contribution);\n const settings = useDataTableViewStore(storageKey, (state) => state.settings, contribution);\n const read = useRendererRead({\n workbench,\n ownerKey: rendererReadKey(placement),\n queryKey: resolveDataTableRendererQueryKey(\n contribution,\n placement.resource,\n workbench.modes.getActiveModeId(),\n contextValues,\n ),\n // Filter and sorts can narrow what the query returns. Display settings and search never run it again.\n refreshKey: JSON.stringify([filter, sorts, pageParams]),\n load: (signal) =>\n contribution.executeQuery(\n {\n pageParams,\n resource: placement.resource,\n modeId: workbench.modes.getActiveModeId(),\n filter,\n sorts,\n settings,\n },\n signal,\n ),\n subscribe: (refresh) => {\n const subscription = contribution.subscribe?.(refresh);\n const events = getWorkbenchRenderers(workbench).onDidRefreshDataTableRenderer((event) => {\n if (event.dataTableRendererId === contribution.id) refresh();\n });\n return () => {\n if (typeof subscription === \"function\") subscription();\n else subscription?.dispose();\n events.dispose();\n };\n },\n });\n const result = read.value ?? initialResult;\n const loading = read.loading && !read.value;\n const columns = resolveDataTableRendererColumns(result, contribution.columns);\n const model = buildDataTableRendererData(result.rows, columns);\n const labels = Object.fromEntries(\n columns.filter((column) => column.label).map((column) => [column.id, column.label!]),\n );\n const descriptions = Object.fromEntries(\n columns.filter((column) => column.description).map((column) => [column.id, column.description!]),\n );\n const icons = Object.fromEntries(\n columns.filter((column) => column.icon).map((column) => [column.id, column.icon as ReactNode]),\n );\n const stats = Object.fromEntries(\n columns.filter((column) => column.stat).map((column) => [column.id, column.stat as DataTableColumnStat]),\n );\n const renderers = Object.fromEntries(\n columns\n .filter((column) => column.renderer)\n .map((column) => [column.id, column.renderer as DataTableColumnRenderer]),\n );\n const rowActions: DataTableRowAction[] = (contribution.rowActions ?? []).map((action) => ({\n label: action.label,\n icon: action.icon as ReactNode,\n destructive: action.destructive,\n onSelect: (data) => {\n const row = model.rowByData.get(data);\n if (row) void runUserAction(workbench, action.label, () => action.run(row));\n },\n }));\n const selectionActions = resolveDataTableRendererSelectionActions(\n (contribution.selectionActions ?? []).map((action) => ({\n ...action,\n run: (rows) => runUserAction(workbench, action.label, () => action.run(rows)),\n })),\n model.rowByData,\n );\n const openRow = (data: RowData) => {\n const row = model.rowByData.get(data);\n if (!row) return;\n if (contribution.onRowActivate) void runUserAction(workbench, \"Open row\", () => contribution.onRowActivate!(row));\n };\n if (loading) {\n // The table chrome renders instantly: declared columns become real headers\n // and only the row values shimmer until the first query resolves.\n const skeletonColumns = (contribution.columns ?? [])\n .filter((column) => !column.hidden && !settings.hiddenColumns.includes(column.id))\n .map((column) => ({ id: column.id, label: column.label ?? column.id }));\n return (\n <Stack h=\"full\" minH=\"0\" minW=\"0\" gap=\"0\" bg=\"bg\" overflow=\"hidden\">\n <DataTableSkeleton columns={skeletonColumns.length > 0 ? skeletonColumns : undefined} />\n </Stack>\n );\n }\n if (!read.value && read.error) return <RendererReadNotice error={read.error} retry={read.retry} />;\n if (provider && !viewsSource) return <DataTableSkeleton />;\n\n return (\n <Stack h=\"full\" minH=\"0\" minW=\"0\" gap=\"0\" bg=\"bg\" overflow=\"hidden\">\n {read.error ? <RendererReadNotice error={read.error} retry={read.retry} /> : null}\n <DataTable\n itemLabel={\n contribution.resourceKind ? workbench.resources.getKind(contribution.resourceKind)?.label : undefined\n }\n toolbarActions={\n <ViewToolbarActions\n workbench={workbench}\n actions={contribution.toolbarActions}\n context={{ resource: placement.resource }}\n renderParamField={props.renderParamField}\n />\n }\n contentPlaceholder={\n result.rows.length === 0 ? (\n <EmptyState\n h=\"full\"\n title={contribution.emptyTitle ?? \"No rows\"}\n description={contribution.emptyDescription}\n />\n ) : undefined\n }\n data={model.data}\n getRowId={(data) => model.rowByData.get(data)?.id ?? \"\"}\n toolbarStorageKey={storageKey}\n viewsSource={viewsSource}\n defaultSettings={contribution.defaultSettings}\n defaultFilter={contribution.defaultFilter}\n defaultSorts={contribution.defaultSorts}\n defaultViews={contribution.defaultViews}\n defaultActiveViewId={contribution.defaultActiveViewId}\n columnTypes={Object.fromEntries(columns.flatMap((column) => (column.type ? [[column.id, column.type]] : [])))}\n filterableColumns={columns.filter((column) => column.filterable !== false).map((column) => column.id)}\n groupableColumns={columns.filter((column) => column.groupable).map((column) => column.id)}\n compactHeaders={labels}\n columnDescriptions={descriptions}\n columnIcons={icons}\n hiddenColumns={columns.filter((column) => column.hidden).map((column) => column.id)}\n columnStats={stats}\n columnRenderers={renderers}\n initialPageSize={contribution.initialPageSize}\n pageSizeOptions={contribution.pageSizeOptions}\n selectionMode={contribution.selectionMode}\n selectionActions={selectionActions}\n rowActions={rowActions}\n getRowActions={(data) => resolveDataTableRendererResourceActions(data, model.rowByData, resolveResourceActions)}\n onRowClick={openRow}\n isRowInteractive={(data) => {\n const row = model.rowByData.get(data);\n return Boolean(row && contribution.onRowActivate);\n }}\n getCellContextMenuActions={(context) =>\n resolveDataTableRendererResourceActions(context.row, model.rowByData, resolveResourceActions)\n }\n fullWidth\n />\n </Stack>\n );\n};\n","import type { ParamEditorProps } from \"@pstdio/ui/param-editor\";\nimport type { PreferencePropertySchema, PreferenceValue } from \"../../../core\";\n\n// `@pstdio/ui` does not export the Param union by name, so derive it from the\n// editor props — this keeps the mapper honest about what the editor accepts.\ntype Param = NonNullable<ParamEditorProps[\"params\"]>[number];\ntype ParamValue = Parameters<NonNullable<ParamEditorProps[\"onChange\"]>>[1];\n\nexport interface PreferenceParamEntry {\n name: string;\n schema: PreferencePropertySchema;\n label?: string;\n /** Current value; falls back to the schema default when omitted. */\n value?: PreferenceValue;\n}\n\n// Booleans have no dedicated param-editor control, so they render as a two-option\n// selection. Array/object schemas without an enum have no editor at all and are skipped.\nconst BOOLEAN_OPTIONS = [\n { id: \"true\", name: \"On\" },\n { id: \"false\", name: \"Off\" },\n];\n\nconst humanize = (value: string) => {\n const segment = value.split(\".\").at(-1) ?? value;\n const spaced = segment.replace(/([a-z0-9])([A-Z])/g, \"$1 $2\").replace(/[-_]/g, \" \");\n return spaced.charAt(0).toUpperCase() + spaced.slice(1);\n};\n\nconst toOptions = (values: PreferenceValue[]) =>\n values.map((value) => ({ id: String(value), name: humanize(String(value)) }));\n\nconst toParam = (entry: PreferenceParamEntry): Param | undefined => {\n const { name, schema } = entry;\n const label = entry.label ?? humanize(name);\n const description = schema.description;\n const current = entry.value ?? schema.default;\n const base = { id: name, name: label, description };\n\n if (schema.type === \"number\") {\n return { ...base, type: \"number\", defaultValue: Number(current ?? 0) };\n }\n\n if (schema.type === \"boolean\") {\n return { ...base, type: \"selection\", defaultValue: String(Boolean(current)), options: BOOLEAN_OPTIONS };\n }\n\n if (schema.type === \"string\") {\n if (schema.enum) {\n return { ...base, type: \"selection\", defaultValue: String(current ?? \"\"), options: toOptions(schema.enum) };\n }\n return { ...base, type: \"text\", defaultValue: String(current ?? \"\"), singleLine: true };\n }\n\n if (schema.type === \"array\" && schema.enum) {\n const defaultValue = Array.isArray(current) ? current.map(String) : [];\n return { ...base, type: \"selection\", multiSelect: true, defaultValue, options: toOptions(schema.enum) };\n }\n\n return undefined;\n};\n\nexport const preferenceSchemaToParams = (entries: PreferenceParamEntry[]) =>\n entries.map(toParam).filter((param): param is Param => param !== undefined);\n\nexport const paramValueToPreference = (schema: PreferencePropertySchema, value: ParamValue): PreferenceValue => {\n if (schema.type === \"boolean\") return value === \"true\";\n if (schema.type === \"number\") return Number(value);\n if (schema.type === \"array\") return Array.isArray(value) ? value.map(String) : [];\n return String(value);\n};\n","import { Button, HStack, Stack } from \"@chakra-ui/react\";\nimport { ParamEditor, type ParamEditorProps } from \"@pstdio/ui/param-editor\";\nimport { useState } from \"react\";\nimport type { PreferenceRegistry, PreferenceScope } from \"../../../core\";\nimport {\n type PreferenceParamEntry,\n paramValueToPreference,\n preferenceSchemaToParams,\n} from \"./preference-schema-to-params\";\n\ntype ParamValue = Parameters<NonNullable<ParamEditorProps[\"onChange\"]>>[1];\n\nexport interface WorkbenchPreferencesFormProps {\n preferences: PreferenceRegistry;\n /** Preference names to edit; an object form overrides the displayed label. */\n names: (string | { name: string; label?: string })[];\n /** Resolves the scopeId for a preference's scope (e.g. \"project\" -> active project id). */\n resolveScopeId?: (scope: PreferenceScope) => string | undefined;\n /** \"live\" persists on change (default); \"apply\" stages edits behind Save/Discard. */\n mode?: \"live\" | \"apply\";\n}\n\nconst toName = (entry: string | { name: string; label?: string }) =>\n typeof entry === \"string\" ? { name: entry } : entry;\n\n// Renders a param editor auto-generated from the registered preference schema. The\n// form is generic: it knows only about preference names + scope, never the domain.\nexport const WorkbenchPreferencesForm = (props: WorkbenchPreferencesFormProps) => {\n const { preferences, names, resolveScopeId, mode = \"live\" } = props;\n const [staged, setStaged] = useState<Record<string, ParamValue>>({});\n const [formKey, setFormKey] = useState(0);\n\n const scopeRef = (scope: PreferenceScope) => ({ scope, scopeId: resolveScopeId?.(scope) });\n\n const entries: PreferenceParamEntry[] = [];\n for (const candidate of names) {\n const { name, label } = toName(candidate);\n const schema = preferences.getSchema(name);\n if (!schema) continue;\n entries.push({ name, label, schema, value: preferences.getValue(name, scopeRef(schema.scope)) });\n }\n\n const params = preferenceSchemaToParams(entries);\n const schemaByName = new Map(entries.map((entry) => [entry.name, entry.schema]));\n\n const persist = (name: string, value: ParamValue) => {\n const schema = schemaByName.get(name);\n if (!schema) return;\n preferences.setValue(name, paramValueToPreference(schema, value), scopeRef(schema.scope));\n };\n\n const handleChange = (id: string, value: ParamValue) => {\n if (mode === \"apply\") {\n setStaged((current) => ({ ...current, [id]: value }));\n return;\n }\n persist(id, value);\n };\n\n const save = () => {\n for (const [name, value] of Object.entries(staged)) persist(name, value);\n setStaged({});\n setFormKey((key) => key + 1);\n };\n\n const discard = () => {\n setStaged({});\n setFormKey((key) => key + 1);\n };\n\n const hasStaged = Object.keys(staged).length > 0;\n\n return (\n <Stack gap=\"md\" maxW=\"640px\">\n <ParamEditor key={formKey} params={params} onChange={handleChange} fullWidth />\n {mode === \"apply\" && (\n <HStack gap=\"sm\">\n <Button size=\"sm\" onClick={save} disabled={!hasStaged}>\n Save\n </Button>\n <Button size=\"sm\" variant=\"outline\" onClick={discard} disabled={!hasStaged}>\n Discard\n </Button>\n </HStack>\n )}\n </Stack>\n );\n};\n","import { Badge, Box } from \"@chakra-ui/react\";\nimport type { PageLocation, PageRef } from \"@pstdio/sdk/extensions\";\nimport { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { Tooltip, type TreeListNode, type TreeListSection } from \"@pstdio/ui\";\nimport { DiffBubble } from \"@pstdio/ui/diff\";\nimport type { ReactNode } from \"react\";\nimport {\n getWorkbenchSelectionResourceKeys,\n type NavigationTarget,\n type ResourceRef,\n resourceContextMenuPath,\n type TreeNode,\n type TreeViewSection,\n type WorkbenchCore,\n} from \"../../../core\";\nimport { WorkbenchIcon } from \"../../shared/icon\";\nimport { createTreeActionItems, createTreeContextMenuItems, type TreeActionParamsRequest } from \"./tree-actions\";\n\ninterface TreeNodeRenderContext {\n workbench: WorkbenchCore;\n onCommandError?: (error: unknown) => void;\n onRequestParams?: (request: TreeActionParamsRequest) => void;\n}\nexport const resolveTreeListActiveNodeId = (activeNodeId: string | null | undefined, selectedNodeId?: string) => {\n if (!activeNodeId) return selectedNodeId;\n return activeNodeId;\n};\ninterface ResolveTreeListSelectionInput {\n sections: TreeViewSection[];\n childrenByNodeId: Record<string, TreeNode[]>;\n activeNodeId?: string | null;\n activeLocation?: PageLocation;\n activeResource?: ResourceRef;\n selectedNodeId?: string;\n}\nconst activeNodeIds = (ids: string[]) => {\n const uniqueIds = [...new Set(ids)];\n if (uniqueIds.length === 0) return undefined;\n return uniqueIds.length === 1 ? uniqueIds[0] : uniqueIds;\n};\nconst targetPanelResource = (target: NavigationTarget | undefined) => {\n if (!target) return undefined;\n const targets = target.kind === \"compound\" ? target.targets : [target];\n return [...targets].reverse().find((candidate) => candidate.kind === \"panel\")?.resource;\n};\nconst resolveTreeNodeResourceKey = (node: TreeNode) => {\n const resource = node.resource ?? targetPanelResource(node.target);\n return resource ? resourceKey(resource) : undefined;\n};\nconst listTreeNodes = (nodes: TreeNode[], childrenByNodeId: Record<string, TreeNode[]>): TreeNode[] =>\n nodes.flatMap((node) => [\n node,\n ...listTreeNodes([...(node.children ?? []), ...(childrenByNodeId[node.id] ?? [])], childrenByNodeId),\n ]);\nconst listSectionNodes = (sections: TreeViewSection[], childrenByNodeId: Record<string, TreeNode[]>) =>\n sections.flatMap((section) => listTreeNodes(section.nodes, childrenByNodeId));\nconst resolveActiveResourceNodeIds = (\n sections: TreeViewSection[],\n childrenByNodeId: Record<string, TreeNode[]>,\n resourceKeys: string[],\n) => {\n const nodes = listSectionNodes(sections, childrenByNodeId);\n for (const resourceKey of resourceKeys) {\n const matches = nodes\n .filter((node) => node.id === resourceKey || resolveTreeNodeResourceKey(node) === resourceKey)\n .map((node) => node.id);\n if (matches.length > 0) return activeNodeIds(matches);\n }\n return undefined;\n};\nconst findSectionNode = (sections: TreeViewSection[], nodeId: string, childrenByNodeId: Record<string, TreeNode[]>) =>\n listSectionNodes(sections, childrenByNodeId).find((node) => node.id === nodeId);\nconst pageRefsEqual = (left: PageRef, right: PageRef) => left.id === right.id && left.extensionId === right.extensionId;\nconst targetMatchesPage = (target: NavigationTarget | undefined, activePage: PageRef, activeResource?: ResourceRef) => {\n // A resource panel owns its selection; its containing page can host other open resources.\n if (!target || targetPanelResource(target)) return false;\n const targets = target.kind === \"compound\" ? target.targets : [target];\n return targets.some(\n (candidate) =>\n candidate.kind === \"page\" &&\n pageRefsEqual(candidate.page, activePage) &&\n (candidate.resource\n ? activeResource !== undefined && resourceKey(candidate.resource) === resourceKey(activeResource)\n : activeResource === undefined),\n );\n};\nconst resolveActivePageNodeIds = (\n sections: TreeViewSection[],\n childrenByNodeId: Record<string, TreeNode[]>,\n activePage: PageRef | undefined,\n activeResource: ResourceRef | undefined,\n) => {\n if (!activePage) return undefined;\n return activeNodeIds(\n listSectionNodes(sections, childrenByNodeId)\n .filter((node) => targetMatchesPage(node.target, activePage, activeResource))\n .map((node) => node.id),\n );\n};\nexport const resolveTreeListSelection = (input: ResolveTreeListSelectionInput) => {\n const { sections, childrenByNodeId, activeNodeId, activeLocation, activeResource, selectedNodeId } = input;\n if (activeNodeId) return activeNodeId;\n const activeResourceKeys = getWorkbenchSelectionResourceKeys(activeResource);\n // Parent trees retain their document selection, but only the active context owns selection.\n const declaredSelection = activeNodeIds(\n listSectionNodes(sections, childrenByNodeId)\n .filter((node) => {\n if (!node.selected) return false;\n const nodeResourceKey = resolveTreeNodeResourceKey(node);\n if (!nodeResourceKey && !node.target) return true;\n if (nodeResourceKey && activeResourceKeys.includes(nodeResourceKey)) return true;\n return activeLocation ? targetMatchesPage(node.target, activeLocation.page, activeResource) : !activeResource;\n })\n .map((node) => node.id),\n );\n if (declaredSelection) return declaredSelection;\n const selectedNode = selectedNodeId ? findSectionNode(sections, selectedNodeId, childrenByNodeId) : undefined;\n const selectedResourceKey = selectedNode ? resolveTreeNodeResourceKey(selectedNode) : undefined;\n if (selectedResourceKey && activeResourceKeys.includes(selectedResourceKey)) return selectedNodeId;\n // Keep the selected document when several nodes target the same page and resource.\n if (activeLocation && targetMatchesPage(selectedNode?.target, activeLocation.page, activeResource)) {\n return selectedNodeId;\n }\n const activeResourceNodeId = resolveActiveResourceNodeIds(sections, childrenByNodeId, activeResourceKeys);\n if (activeResourceNodeId) return activeResourceNodeId;\n const activePageNodeId = resolveActivePageNodeIds(\n sections,\n childrenByNodeId,\n activeLocation?.page,\n activeLocation?.resource,\n );\n if (activePageNodeId) return activePageNodeId;\n if (!selectedNodeId) return undefined;\n if (selectedResourceKey) return undefined;\n return selectedNodeId;\n};\nconst canVirtualizeTreeNode = (node: TreeListNode) =>\n node.inlineInput === undefined && node.isContainer !== true && (node.children ?? []).length === 0;\nexport const canVirtualizeTreeSections = (sections: TreeListSection[]) =>\n sections.every((section) => section.nodes.every(canVirtualizeTreeNode));\nconst findNode = (nodes: TreeNode[], nodeId: string, childrenByNodeId: Record<string, TreeNode[]>): TreeNode | null => {\n for (const node of nodes) {\n if (node.id === nodeId) return node;\n const child = findNode([...(node.children ?? []), ...(childrenByNodeId[node.id] ?? [])], nodeId, childrenByNodeId);\n if (child) return child;\n }\n return null;\n};\nexport const findNodeInSections = (\n sections: TreeViewSection[],\n nodeId: string,\n childrenByNodeId: Record<string, TreeNode[]>,\n) => {\n for (const section of sections) {\n const node = findNode(section.nodes, nodeId, childrenByNodeId);\n if (node) return node;\n }\n return null;\n};\nconst wrapTreeNodeIcon = (icon: ReactNode, iconTooltip: string | undefined) => {\n if (!iconTooltip) return icon;\n return (\n <Tooltip content={iconTooltip} openDelay={300}>\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" justifyContent=\"center\">\n {icon}\n </Box>\n </Tooltip>\n );\n};\nconst resolveTreeNodeIcon = (node: TreeNode): ReactNode | undefined => {\n let icon: ReactNode | undefined;\n if (node.iconElement !== undefined) {\n icon = node.iconElement as ReactNode;\n } else if (node.icon) {\n icon = <WorkbenchIcon name={node.icon} />;\n }\n return icon === undefined ? undefined : wrapTreeNodeIcon(icon, node.iconTooltip);\n};\nconst resolveTreeNodeNavigationIntent = (node: TreeNode) => {\n if (node.target) return { id: \"target\", payload: node.target };\n if (node.resource) return { id: \"resource\", payload: node.resource };\n return undefined;\n};\nconst resolveTreeNodeResource = (node: TreeNode): ResourceRef | undefined => {\n if (node.resource) return node.resource;\n return undefined;\n};\nconst resolveTreeNodeEndContent = (node: TreeNode, resource: ResourceRef | undefined) => {\n if (node.endContent !== undefined) return node.endContent as ReactNode;\n if (node.badge) {\n return (\n <Badge size=\"sm\" variant=\"subtle\" colorPalette={node.badge.color ?? \"gray\"} flexShrink={0}>\n {node.badge.label}\n </Badge>\n );\n }\n const additions = resource?.metadata?.diffAdditions;\n const deletions = resource?.metadata?.diffDeletions;\n if (resource?.type !== \"workspace\" || typeof additions !== \"number\" || typeof deletions !== \"number\") {\n return undefined;\n }\n return <DiffBubble additions={additions} deletions={deletions} variant=\"ghost\" size=\"small\" />;\n};\nconst toTreeListSectionEmptyNode = (section: TreeViewSection): TreeListNode | undefined => {\n if (!section.emptyState || section.nodes.length > 0) return undefined;\n return {\n id: `${section.id}:empty`,\n label: section.emptyState.title,\n description: section.emptyState.description,\n icon: section.emptyState.icon ? <WorkbenchIcon name={section.emptyState.icon} /> : undefined,\n disabled: true,\n rowVariant: \"empty-state\",\n };\n};\nconst toTreeListNode = (\n node: TreeNode,\n childrenByNodeId: Record<string, TreeNode[]>,\n context: TreeNodeRenderContext,\n) => {\n const navigationIntent = resolveTreeNodeNavigationIntent(node);\n const resource = resolveTreeNodeResource(node);\n const commandContext = resource ? { resource } : undefined;\n const contextMenuItems = createTreeContextMenuItems({\n actions: node.contextMenuActions,\n menuPath: node.contextMenuPath ?? node.menuPath ?? (resource ? resourceContextMenuPath(resource.type) : undefined),\n workbench: context.workbench,\n context: commandContext,\n onCommandError: context.onCommandError,\n onRequestParams: context.onRequestParams,\n });\n const menuItems = node.menuPath && contextMenuItems.length > 0 ? contextMenuItems : undefined;\n const treeNode: TreeListNode = {\n id: node.id,\n moveScope: node.moveScope,\n label: node.label,\n description: node.description,\n icon: resolveTreeNodeIcon(node),\n iconColor: node.iconColor,\n tooltip: node.tooltip,\n disabled: node.disabled,\n rowVariant: node.rowVariant,\n inlineInput: node.inlineInput,\n showContextMenuTrigger: node.showContextMenuTrigger,\n canHide: node.canHide,\n canReorder: node.canReorder,\n canDrag: node.canDrag,\n canDrop: node.canDrop,\n hiddenByDefault: node.hiddenByDefault,\n actions: createTreeActionItems({\n actions: node.actions,\n workbench: context.workbench,\n context: commandContext,\n onCommandError: context.onCommandError,\n onRequestParams: context.onRequestParams,\n }),\n endContent: resolveTreeNodeEndContent(node, resource),\n menuItems,\n contextMenuItems: contextMenuItems.length > 0 ? contextMenuItems : undefined,\n ...(node.menuPlacement ? { menuPlacement: node.menuPlacement } : {}),\n isContainer: node.collapsible,\n isNavigable: Boolean(navigationIntent),\n navigationIntent,\n children: [...(node.children ?? []), ...(childrenByNodeId[node.id] ?? [])].map((child) =>\n toTreeListNode(child, childrenByNodeId, context),\n ),\n } as TreeListNode;\n return treeNode;\n};\nexport const toTreeListSection = (\n section: TreeViewSection,\n childrenByNodeId: Record<string, TreeNode[]>,\n context: TreeNodeRenderContext,\n) => {\n const emptyNode = toTreeListSectionEmptyNode(section);\n return {\n id: section.id,\n moveScope: section.moveScope,\n label: section.label,\n menuLabel: section.menuLabel,\n actions: createTreeActionItems({\n actions: section.actions,\n workbench: context.workbench,\n onCommandError: context.onCommandError,\n onRequestParams: context.onRequestParams,\n }),\n collapsible: section.collapsible,\n canHide: section.canHide,\n canReorder: section.canReorder,\n hiddenByDefault: section.hiddenByDefault,\n nodes: emptyNode ? [emptyNode] : section.nodes.map((node) => toTreeListNode(node, childrenByNodeId, context)),\n };\n};\n","import type { TreeListSection } from \"@pstdio/ui\";\nimport type { TreeViewSection } from \"../../../core\";\n\nexport const pinnedOnlyNodeIds = (sections: readonly TreeViewSection[]) =>\n new Set(sections.flatMap((section) => section.nodes.filter((node) => node.pinnedOnly).map((node) => node.id)));\n\n// Pinned-only rows render where users pinned them (header or footer), never in the body.\nexport const withoutPinnedOnlyRows = (sections: TreeListSection[], ids: ReadonlySet<string>) => {\n if (ids.size === 0) return sections;\n return sections.flatMap((section) => {\n const nodes = section.nodes.filter((node) => !ids.has(node.id));\n if (nodes.length === section.nodes.length) return [section];\n return nodes.length > 0 ? [{ ...section, nodes }] : [];\n });\n};\n","import { Skeleton, Stack } from \"@chakra-ui/react\";\nimport {\n EmptyState,\n type ResourceContextAction,\n TreeList,\n type TreeListMovePolicy,\n type TreeListSection,\n} from \"@pstdio/ui\";\nimport type { RefObject } from \"react\";\nimport { canVirtualizeTreeSections } from \"./tree-list-adapter\";\n\nconst TREE_SKELETON_WIDTHS = [\"70%\", \"50%\", \"82%\", \"60%\", \"44%\", \"76%\"];\n\nconst TreeViewSkeleton = () => (\n <Stack gap=\"sm\" px=\"sm\" py=\"xs\" aria-hidden>\n {TREE_SKELETON_WIDTHS.map((width, index) => (\n <Skeleton key={`${width}-${index}`} height=\"4\" width={width} borderRadius=\"xs\" />\n ))}\n </Stack>\n);\n\ninterface TreeViewBodyProps {\n error?: string | null;\n loading: boolean;\n moduleLoading?: boolean;\n sections: TreeListSection[];\n backgroundContextActions?: ResourceContextAction[];\n draggable?: boolean;\n customizationAvailable?: boolean;\n activeNodeId: string | string[] | undefined;\n expandedNodeIds: string[];\n expandedSectionIds: string[];\n scrollRef: RefObject<HTMLDivElement | null>;\n onToggleSection: (sectionId: string) => void;\n onToggleNode: (nodeId: string) => void;\n onReorderSections?: (nextSectionIds: string[]) => void;\n onReorderNodes?: (sectionId: string, nextNodeIds: string[]) => void;\n canMove?: TreeListMovePolicy;\n onMoveNode?: (sourceNodeId: string, targetNodeId?: string, position?: \"before\" | \"after\" | \"inside\") => void;\n onNavigate: (event: Parameters<NonNullable<Parameters<typeof TreeList>[0][\"onNavigate\"]>>[0]) => void;\n}\n\nexport const TreeViewBody = (props: TreeViewBodyProps) => {\n const {\n error,\n loading,\n moduleLoading,\n sections,\n backgroundContextActions,\n draggable,\n customizationAvailable,\n activeNodeId,\n expandedNodeIds,\n expandedSectionIds,\n scrollRef,\n onToggleSection,\n onToggleNode,\n onReorderSections,\n onReorderNodes,\n canMove,\n onMoveNode,\n onNavigate,\n } = props;\n\n if (error && sections.length === 0) return null;\n if (loading) return null;\n if (moduleLoading) return <TreeViewSkeleton />;\n\n // Keep an empty-but-customizable tree right-clickable so a fully-hidden tree\n // can still be restored from the back-of-tree menu.\n if (sections.length === 0 && (backgroundContextActions?.length ?? 0) === 0 && !customizationAvailable) {\n return <EmptyState minH=\"12rem\" title=\"No tree items\" />;\n }\n\n return (\n <TreeList\n sections={sections}\n backgroundContextActions={backgroundContextActions}\n draggable={draggable}\n expandedNodeIds={expandedNodeIds}\n expandedSectionIds={expandedSectionIds}\n activeNodeId={activeNodeId}\n rowVariant=\"compact\"\n sectionGap=\"md\"\n nodeGap=\"1px\"\n virtualize={canVirtualizeTreeSections(sections)}\n scrollRef={scrollRef}\n onToggleSection={onToggleSection}\n onToggleNode={onToggleNode}\n onReorderSections={onReorderSections}\n onReorderNodes={onReorderNodes}\n canMove={canMove}\n onMoveNode={onMoveNode}\n onNavigate={onNavigate}\n />\n );\n};\n","import { getWorkbenchRenderers, type NavigationTarget, type WorkbenchCore } from \"../../../core\";\n\nexport const shouldSelectTreeNodeForNavigationTarget = (target: NavigationTarget) => {\n const items = target.kind === \"compound\" ? target.targets : [target];\n return items.some((item) => item.kind === \"page\" || item.kind === \"panel\");\n};\n\nexport const createToggleTreeSection =\n (workbench: WorkbenchCore, treeViewId: string, expandedIds: string[]) => (sectionId: string) => {\n getWorkbenchRenderers(workbench).setSectionExpanded(treeViewId, sectionId, !expandedIds.includes(sectionId));\n };\n","import { Input, InputGroup } from \"@chakra-ui/react\";\nimport { Header } from \"@pstdio/ui\";\nimport { WorkbenchIcon } from \"../../shared/icon\";\n\ninterface TreeViewSearchProps {\n visible: boolean;\n placeholder?: string;\n value: string;\n onChange: (value: string) => void;\n}\n\nexport const TreeViewSearch = (props: TreeViewSearchProps) => {\n const { visible, placeholder = \"Search files\", value, onChange } = props;\n if (!visible) return null;\n\n return (\n <Header flexShrink={0} borderBottomWidth=\"1px\" borderColor=\"border.subtle\" bg=\"bg\">\n <InputGroup startElement={<WorkbenchIcon name=\"search\" size={14} />} width=\"full\">\n <Input\n size=\"sm\"\n variant=\"borderless\"\n aria-label={placeholder}\n placeholder={placeholder}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n />\n </InputGroup>\n </Header>\n );\n};\n","import type { TreeNode, TreeViewSection } from \"../../../core\";\nimport {\n type ResourcePreviewChanges,\n resolveResourcePreview,\n} from \"../../../core/registries/resources/resource-preview\";\n\nexport const previewTreeResources = (\n sections: TreeViewSection[],\n childrenByNodeId: Record<string, TreeNode[]>,\n changes: ResourcePreviewChanges,\n) => {\n const previewNodes = (nodes: TreeNode[]): TreeNode[] =>\n nodes.flatMap((node) => {\n const resource = node.resource ? resolveResourcePreview(node.resource, changes) : undefined;\n if (node.resource && !resource) return [];\n const children = childrenByNodeId[node.id] ?? node.children;\n return [\n {\n ...node,\n label: resource && resource !== node.resource ? (resource.label ?? node.label) : node.label,\n ...(resource ? { resource } : {}),\n ...(children ? { children: previewNodes(children) } : {}),\n },\n ];\n });\n return sections.map((section) => ({ ...section, nodes: previewNodes(section.nodes) }));\n};\n","import type { TreeNode, TreeQueryContext, TreeRendererRegistry, TreeViewSection } from \"../../../core\";\nimport { settleReadBatch } from \"../../../core/registries/views/settle-read-batch\";\n\nconst isUnregisteredTreeError = (trees: TreeRendererRegistry, treeId: string, error: unknown) =>\n error instanceof Error &&\n error.message === `Tree renderer not registered: ${treeId}` &&\n !trees.getTreeRenderer(treeId);\n\nexport interface LoadedTreeData {\n header: TreeViewSection[];\n body: TreeViewSection[];\n footer: TreeViewSection[];\n}\n\nconst listTreeNodes = (data: LoadedTreeData) => [\n ...data.header.flatMap((section) => section.nodes),\n ...data.body.flatMap((section) => section.nodes),\n ...data.footer.flatMap((section) => section.nodes),\n];\n\nexport const loadExpandedTreeChildren = async (\n trees: TreeRendererRegistry,\n treeId: string,\n data: LoadedTreeData,\n expandedNodeIds: string[],\n ctx: TreeQueryContext = {},\n) => {\n const expanded = new Set(expandedNodeIds);\n const visited = new Set<string>();\n const childrenByNodeId: Record<string, TreeNode[]> = {};\n\n const queue = listTreeNodes(data);\n while (queue.length) {\n ctx.signal?.throwIfAborted();\n const batch: TreeNode[] = [];\n while (queue.length && batch.length < 4) {\n const node = queue.shift()!;\n if (!expanded.has(node.id) || visited.has(node.id)) continue;\n visited.add(node.id);\n batch.push(node);\n }\n const children = await settleReadBatch(\n batch.map((node) => async (signal: AbortSignal) => {\n const children = node.children ?? (await trees.getChildren(treeId, node, { ...ctx, signal }));\n if (!node.children) childrenByNodeId[node.id] = children;\n return children;\n }),\n ctx.signal,\n );\n queue.push(...children.flat());\n }\n return childrenByNodeId;\n};\n\nexport const expandDefaultTreeSections = (trees: TreeRendererRegistry, treeId: string) => {\n const tree = trees.getTreeRenderer(treeId);\n if (!tree) return;\n for (const sectionId of tree.defaultExpandedSectionIds ?? []) {\n trees.setSectionExpanded(treeId, sectionId, true);\n }\n};\n\nexport const loadTreeData = async (\n trees: TreeRendererRegistry,\n treeId: string,\n ctx: TreeQueryContext = {},\n onProgress?: (data: LoadedTreeData) => void,\n): Promise<LoadedTreeData | null> => {\n if (!trees.getTreeRenderer(treeId)) return null;\n let available: LoadedTreeData = { header: [], body: [], footer: [] };\n const loadSlot = async (slot: keyof LoadedTreeData, signal: AbortSignal) => {\n const context = {\n ...ctx,\n signal,\n onProgress: (sections: TreeViewSection[]) => {\n if (signal.aborted) return;\n available = { ...available, [slot]: sections };\n onProgress?.(available);\n },\n };\n const loaders = { header: trees.getHeader, body: trees.getBody, footer: trees.getFooter };\n const sections = await loaders[slot](treeId, context);\n available = { ...available, [slot]: sections };\n return sections;\n };\n\n try {\n const [header, body, footer] = await settleReadBatch(\n [\n (signal) => loadSlot(\"header\", signal),\n (signal) => loadSlot(\"body\", signal),\n (signal) => loadSlot(\"footer\", signal),\n ],\n ctx.signal,\n );\n return { header, body, footer };\n } catch (error) {\n if (isUnregisteredTreeError(trees, treeId, error)) return null;\n throw error;\n }\n};\n","import type {\n RegisteredTreeRendererContribution,\n ResourceRef,\n TreeNode,\n TreeViewSection,\n WorkbenchCore,\n} from \"../../../core\";\nimport { getWorkbenchRenderers } from \"../../../core\";\nimport { getNavigationTreeNodeSource } from \"../../../core/registries/navigation/navigation-tree-node-source\";\nimport { reportUserActionError } from \"../../../core/shared/run-user-action\";\nimport { findNodeInSections } from \"./tree-list-adapter\";\n\ninterface MoveTreeNodeContext {\n workbench: WorkbenchCore;\n renderer: RegisteredTreeRendererContribution;\n resource?: ResourceRef;\n viewId?: string;\n sections: TreeViewSection[];\n childrenByNodeId: Record<string, TreeNode[]>;\n onError?: (error: unknown) => void;\n}\n\nexport const canMoveTreeNode = (\n context: Pick<MoveTreeNodeContext, \"sections\" | \"childrenByNodeId\">,\n sourceId: string,\n targetId?: string,\n) => {\n const source = findNodeInSections(context.sections, sourceId, context.childrenByNodeId);\n const target = targetId ? findNodeInSections(context.sections, targetId, context.childrenByNodeId) : undefined;\n if (!source?.canDrag || sourceId === targetId || (targetId && !target?.canDrop)) return false;\n if (!target) return true;\n // Resource ownership is independent of the scope used for arranging navigation rows.\n const sourceOwner = getNavigationTreeNodeSource(source);\n const targetOwner = getNavigationTreeNodeSource(target);\n return (\n sourceOwner?.contribution === targetOwner?.contribution && sourceOwner?.registryToken === targetOwner?.registryToken\n );\n};\n\nexport const createMoveTreeNode = (context: MoveTreeNodeContext) =>\n context.renderer.moveNode\n ? async (sourceNodeId: string, targetNodeId?: string, position?: \"before\" | \"after\" | \"inside\") => {\n const source = findNodeInSections(context.sections, sourceNodeId, context.childrenByNodeId);\n const target = targetNodeId\n ? (findNodeInSections(context.sections, targetNodeId, context.childrenByNodeId) ?? undefined)\n : undefined;\n if (!source || !canMoveTreeNode(context, sourceNodeId, targetNodeId)) return false;\n const trees = getWorkbenchRenderers(context.workbench);\n try {\n await context.renderer.moveNode?.(source, target, {\n resource: context.resource,\n viewId: context.viewId,\n position,\n state: trees.getTreeState(context.renderer.id),\n refresh: () => trees.refresh(context.renderer.id),\n setSelectedNode: (nodeId) => trees.setSelectedNode(context.renderer.id, nodeId),\n });\n return true;\n } catch (error) {\n if (context.onError) context.onError(error);\n else reportUserActionError(context.workbench, \"Move\", error);\n return false;\n }\n }\n : undefined;\n","import type { TreeNode, TreeViewSection } from \"../../../core\";\n\nexport interface TreeMoveIntent {\n sourceId: string;\n targetId: string;\n position: \"before\" | \"after\" | \"inside\";\n}\n\nexport const previewTreeMove = (\n sections: TreeViewSection[],\n children: Record<string, TreeNode[]>,\n move: TreeMoveIntent,\n) => {\n const childrenOf = (node: TreeNode) => node.children ?? children[node.id];\n const find = (nodes: TreeNode[], id: string): TreeNode | undefined => {\n for (const node of nodes) {\n if (node.id === id) return node;\n const child = find(childrenOf(node) ?? [], id);\n if (child) return child;\n }\n };\n const roots = sections.flatMap((section) => section.nodes);\n const source = find(roots, move.sourceId);\n const target = find(roots, move.targetId);\n if (!source?.canDrag || !target?.canDrop || source === target) return sections;\n if (find(childrenOf(source) ?? [], target.id)) return sections;\n if (move.position === \"inside\" && !childrenOf(target) && !target.collapsible) return sections;\n const materialize = (node: TreeNode): TreeNode => {\n const descendants = childrenOf(node);\n return descendants ? { ...node, children: descendants.map(materialize) } : node;\n };\n const moving = materialize(source);\n const update = (nodes: TreeNode[]): TreeNode[] =>\n nodes.flatMap((node) => {\n if (node.id === source.id) return [];\n const descendants = childrenOf(node);\n const next = descendants ? { ...node, children: update(descendants) } : node;\n if (node.id !== target.id) return [next];\n if (move.position === \"inside\") return [{ ...next, children: [...(next.children ?? []), moving] }];\n return move.position === \"before\" ? [moving, next] : [next, moving];\n });\n return sections.map((section) => ({ ...section, nodes: update(section.nodes) }));\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport type { TreeNode, TreeViewSection } from \"../../../core\";\nimport { previewTreeMove, type TreeMoveIntent } from \"./tree-move-preview\";\n\ninterface PendingMove {\n token: symbol;\n intent: TreeMoveIntent;\n savedAfter?: TreeViewSection[];\n}\n\n// Keep only unconfirmed intent. The renderer owns persistence and every completed read replaces the preview.\nexport const useTreeMovement = (input: {\n scope: string;\n body: TreeViewSection[];\n childrenByNodeId: Record<string, TreeNode[]>;\n persist?: (sourceId: string, targetId?: string, position?: TreeMoveIntent[\"position\"]) => Promise<boolean>;\n canMove(sourceId: string, targetId?: string): boolean;\n refresh(): void;\n}) => {\n const { scope, body, childrenByNodeId, persist, canMove, refresh } = input;\n const [pending, setPending] = useState<{ scope: string; moves: PendingMove[] }>({ scope, moves: [] });\n const latestBody = useRef(body);\n latestBody.current = body;\n const queue = useRef(Promise.resolve());\n useEffect(() => {\n setPending((current) => {\n if (current.scope !== scope) return { scope, moves: [] };\n const moves = current.moves.filter((move) => !move.savedAfter || move.savedAfter === body);\n return moves.length === current.moves.length ? current : { scope, moves };\n });\n }, [scope, body]);\n const moves = pending.scope === scope ? pending.moves : [];\n const preview = moves.reduce((sections, move) => previewTreeMove(sections, childrenByNodeId, move.intent), body);\n return {\n body: preview,\n // Preview parents contain their loaded children, so the adapter must not append the old children again.\n childrenByNodeId: moves.length ? {} : childrenByNodeId,\n moveNode: persist\n ? (sourceId: string, targetId?: string, position: TreeMoveIntent[\"position\"] = \"inside\") => {\n if (!canMove(sourceId, targetId)) return;\n if (!targetId || previewTreeMove(preview, childrenByNodeId, { sourceId, targetId, position }) === preview) {\n queue.current = queue.current.then(async () => {\n await persist(sourceId, targetId, position);\n refresh();\n });\n return;\n }\n const intent = { sourceId, targetId, position };\n const token = Symbol(\"tree move\");\n setPending((current) => ({\n scope,\n moves: [...(current.scope === scope ? current.moves : []), { token, intent }],\n }));\n // Serial writes preserve the user's order when several drops happen before the first save finishes.\n queue.current = queue.current.then(async () => {\n const saved = await persist(sourceId, targetId, position);\n setPending((current) =>\n current.scope !== scope\n ? current\n : {\n scope,\n moves: saved\n ? current.moves.map((move) =>\n move.token === token ? { ...move, savedAfter: latestBody.current } : move,\n )\n : current.moves.filter((move) => move.token !== token),\n },\n );\n // Retry cancels an older read so it cannot replace the preview with a pre-save snapshot.\n refresh();\n });\n }\n : undefined,\n };\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { useEffect, useState, useSyncExternalStore } from \"react\";\nimport type { WorkbenchPanelInstance } from \"../../../core\";\nimport { getWorkbenchRenderers, type ResourceRef, type TreeNode, type WorkbenchCore } from \"../../../core\";\nimport { useWorkbenchStore } from \"../../shared/use-workbench-store\";\nimport { usePageParams } from \"../use-page-params\";\nimport { useRendererRead } from \"../use-renderer-read\";\nimport { previewTreeResources } from \"./tree-resource-preview\";\nimport {\n expandDefaultTreeSections,\n type LoadedTreeData,\n loadExpandedTreeChildren,\n loadTreeData,\n} from \"./tree-view-load\";\nimport { canMoveTreeNode, createMoveTreeNode } from \"./tree-view-move\";\nimport { useTreeMovement } from \"./use-tree-movement\";\n\nexport const useTreeData = (\n workbench: WorkbenchCore,\n treeViewId: string,\n resource?: ResourceRef,\n viewId?: string,\n filter?: string,\n ownerKey = JSON.stringify([\"tree\", treeViewId, viewId]),\n onMoveError?: (error: unknown) => void,\n placement?: WorkbenchPanelInstance,\n) => {\n const pageParams = usePageParams(workbench, placement);\n const trees = getWorkbenchRenderers(workbench);\n const changes = useWorkbenchStore(workbench.resources.preview.store, (state) => state.changes);\n useWorkbenchStore(trees.treeStore, (state) => state.refreshKeysByTreeId[treeViewId]);\n const mode = useWorkbenchStore(workbench.modes.store, (state) => state.activeModeId);\n const location = useWorkbenchStore(workbench.pages.store, (state) => state.location);\n const project = useWorkbenchStore(workbench.pages.store, (state) => state.projectId);\n const activePage = useWorkbenchStore(workbench.pages.store, (state) => state.activePageId);\n const getPageOwner = () => (activePage ? workbench.navigationTrees.resolveOwner(\"page\", activePage) : undefined);\n const pageOwner = useSyncExternalStore(\n (listener) => {\n const subscription = workbench.navigationTrees.onDidChange(listener);\n return () => subscription.dispose();\n },\n getPageOwner,\n getPageOwner,\n );\n // Navigation keeps mounted rows. A new search clears results that no longer match its query.\n const queryKey = JSON.stringify([treeViewId, viewId, project, filter, pageParams]);\n const refreshKey = JSON.stringify(\n trees.getTreeRenderer(treeViewId)?.getReadKey?.({ resource, viewId, filter, pageParams }) ?? [\n resourceKey(resource),\n resourceKey(location?.resource),\n mode,\n pageOwner,\n ],\n );\n const childrenKey = JSON.stringify([queryKey, refreshKey]);\n // Defaults apply when the view starts. Refreshes keep sections the user collapsed.\n useEffect(() => expandDefaultTreeSections(getWorkbenchRenderers(workbench), treeViewId), [workbench, treeViewId]);\n const [expandedChildren, setExpandedChildren] = useState<{ queryKey: string; byNodeId: Record<string, TreeNode[]> }>({\n queryKey: childrenKey,\n byNodeId: {},\n });\n const read = useRendererRead<LoadedTreeData & { children: Record<string, TreeNode[]> }>({\n workbench,\n ownerKey,\n queryKey,\n refreshKey,\n load: async (signal, publish) => {\n const ctx = { resource, viewId, filter, signal, pageParams };\n const data = await loadTreeData(trees, treeViewId, ctx, (available) => publish({ ...available, children: {} }));\n signal.throwIfAborted();\n const children =\n data && trees.getTreeRenderer(treeViewId)\n ? await loadExpandedTreeChildren(trees, treeViewId, data, trees.getTreeState(treeViewId).expandedNodeIds, ctx)\n : {};\n return { header: data?.header ?? [], body: data?.body ?? [], footer: data?.footer ?? [], children };\n },\n subscribe: (refresh) =>\n trees.onDidRefresh((event) => {\n if (event.treeId === treeViewId) refresh();\n }),\n });\n // Expanding one folder loads only its children. The next full read already includes them.\n const loadChildren = (node: TreeNode) => {\n void trees.getChildren(treeViewId, node, { resource, viewId, filter, pageParams }).then((children) => {\n setExpandedChildren((current) => ({\n queryKey: childrenKey,\n byNodeId: { ...(current.queryKey === childrenKey ? current.byNodeId : {}), [node.id]: children },\n }));\n });\n };\n useEffect(() => {\n const subscription = workbench.resources.preview.subscribeRefresh(async (resource) => {\n const contains = (nodes: TreeNode[]): boolean =>\n nodes.some(\n (node) =>\n (node.resource && resourceKey(node.resource) === resourceKey(resource)) ||\n contains(read.value?.children[node.id] ?? node.children ?? []),\n );\n if (read.value?.body.some((section) => contains(section.nodes))) await read.retry();\n });\n return () => subscription.dispose();\n }, [workbench, read.retry, read.value]);\n const savedBody = read.value?.body ?? [];\n const savedChildren = {\n ...(expandedChildren.queryKey === childrenKey ? expandedChildren.byNodeId : {}),\n ...read.value?.children,\n };\n const renderer = trees.getTreeRenderer(treeViewId);\n const movement = useTreeMovement({\n scope: queryKey,\n body: savedBody,\n childrenByNodeId: savedChildren,\n canMove: (sourceId, targetId) =>\n canMoveTreeNode({ sections: savedBody, childrenByNodeId: savedChildren }, sourceId, targetId),\n persist: renderer\n ? createMoveTreeNode({\n workbench,\n renderer,\n resource,\n viewId,\n sections: savedBody,\n childrenByNodeId: savedChildren,\n onError: onMoveError,\n })\n : undefined,\n refresh: read.retry,\n });\n return {\n ...movement,\n body: previewTreeResources(movement.body, movement.childrenByNodeId, changes),\n childrenByNodeId: {},\n header: read.value?.header ?? [],\n footer: read.value?.footer ?? [],\n loadChildren,\n error: read.error ?? null,\n loading: read.loading && !read.value,\n retry: read.retry,\n };\n};\n","import { getAnchorResource, type WorkbenchLayout, type WorkbenchPageContribution } from \"../../../core\";\nimport { resolvePageActivePlacement } from \"../../../core/registries/pages/page-active-placement\";\n\nexport const resolveTreeActiveResource = (layout: WorkbenchLayout, page?: WorkbenchPageContribution) => {\n const overlay = layout.regions.overlay;\n const overlayResource = (\n overlay.widgets.find((entry) => entry.widgetId === overlay.activeWidgetId) ?? overlay.widgets[0]\n )?.resource;\n if (overlayResource) return overlayResource;\n // Collection pages select their own content, independently of the routed primary.\n const active = resolvePageActivePlacement(layout, page);\n if (active?.resource) return active.resource;\n return getAnchorResource(layout, \"primary\");\n};\n","import type { WorkbenchCore } from \"../../../core\";\nimport { useWorkbenchStore } from \"../../shared/use-workbench-store\";\nimport { resolveTreeActiveResource } from \"./tree-active-resource\";\n\nexport const useTreeNavigationState = (workbench: WorkbenchCore) => {\n const projectId = useWorkbenchStore(workbench.pages.store, (state) => state.projectId);\n const activeLocation = useWorkbenchStore(workbench.pages.store, (state) => state.location);\n const activePage = useWorkbenchStore(workbench.pages.store, (state) =>\n state.activePageId ? state.pages[state.activePageId] : undefined,\n );\n const activeResource = useWorkbenchStore(workbench.layout.store, (state) =>\n resolveTreeActiveResource(state.layout, activePage),\n );\n return { projectId, activeLocation, activeResource };\n};\n","import type { TreeNode, TreeViewSection } from \"../../../core\";\n\nexport const treeSelectionAncestors = (\n sections: TreeViewSection[],\n childrenByNodeId: Record<string, TreeNode[]>,\n selectedIds: string[],\n) => {\n const selected = new Set(selectedIds);\n const parents = new Set<string>();\n const expandedSections = new Set<string>();\n const visit = (nodes: TreeNode[], path: string[], sectionId: string) => {\n for (const node of nodes) {\n if (selected.has(node.id)) {\n for (const id of path) parents.add(id);\n expandedSections.add(sectionId);\n }\n visit([...(node.children ?? []), ...(childrenByNodeId[node.id] ?? [])], [...path, node.id], sectionId);\n }\n };\n for (const section of sections) visit(section.nodes, [], section.id);\n if (!expandedSections.size) return undefined;\n return { nodes: [...parents], sections: [...expandedSections] };\n};\n","import { useEffect, useRef } from \"react\";\nimport { getWorkbenchRenderers, type WorkbenchCore } from \"../../../core\";\nimport { resolveTreeListSelection } from \"./tree-list-adapter\";\nimport { treeSelectionAncestors } from \"./tree-selection-ancestors\";\n\nexport const useTreeSelection = (\n workbench: WorkbenchCore,\n treeViewId: string,\n input: Parameters<typeof resolveTreeListSelection>[0],\n) => {\n const { sections, childrenByNodeId } = input;\n const selectedNodeIds = resolveTreeListSelection(input);\n const ids = typeof selectedNodeIds === \"string\" ? [selectedNodeIds] : (selectedNodeIds ?? []);\n const key = JSON.stringify([treeViewId, ids]);\n const revealed = useRef<string | null>(null);\n useEffect(() => {\n if (!ids.length) {\n revealed.current = null;\n return;\n }\n if (revealed.current === key) return;\n const ancestors = treeSelectionAncestors(sections, childrenByNodeId, ids);\n if (!ancestors) return;\n revealed.current = key;\n const trees = getWorkbenchRenderers(workbench);\n for (const id of ancestors.nodes) trees.setNodeExpanded(treeViewId, id, true);\n for (const id of ancestors.sections) trees.setSectionExpanded(treeViewId, id, true);\n }, [workbench, treeViewId, key, ids, sections, childrenByNodeId]);\n return selectedNodeIds;\n};\n","import { resolveVisibility, type TreeListSection, type VisibilityOverride } from \"@pstdio/ui\";\n\n// A section left empty because users moved its rows elsewhere stays as an empty drop target, so the rows can move\n// back. Sections users hid, sections their contributor sent empty, and outer-level sections whose rows are all\n// pinned-only stay out.\nexport const keepSectionsEmptiedByMoves = (\n source: TreeListSection[],\n ordered: TreeListSection[],\n visible: TreeListSection[],\n sectionOverrides: Record<string, VisibilityOverride>,\n pinnedOnlyNodeIds: ReadonlySet<string> = new Set(),\n) => {\n const visibleById = new Map(visible.map((section) => [section.id, section]));\n const hadRows = new Set(\n source\n .filter((section) => section.nodes.some((node) => !pinnedOnlyNodeIds.has(node.id)))\n .map((section) => section.id),\n );\n return ordered.flatMap((section) => {\n const shown = visibleById.get(section.id);\n if (shown) return [shown];\n const emptiedByMoves =\n section.nodes.length === 0 &&\n hadRows.has(section.id) &&\n resolveVisibility(sectionOverrides[section.id], section.hiddenByDefault) === \"shown\";\n return emptiedByMoves ? [section] : [];\n });\n};\n","import type { TreeListGroup, TreeListSection } from \"@pstdio/ui\";\n\nexport const activeTreeGroupLayout = (\n sections: TreeListSection[],\n groups: TreeListGroup[],\n nodeOrderBySection: Record<string, string[]>,\n) => {\n const scopes = new Set(sections.map((section) => section.moveScope));\n const activeGroups = groups.filter((group) => group.moveScope === undefined || scopes.has(group.moveScope));\n const inactiveGroupIds = new Set(groups.filter((group) => !activeGroups.includes(group)).map((group) => group.id));\n // Inactive groups must not turn into the unnamed runs the order model reconstructs from saved memberships.\n const activeNodeOrder = Object.fromEntries(\n Object.entries(nodeOrderBySection).filter(([sectionId]) => !inactiveGroupIds.has(sectionId)),\n );\n return { groups: activeGroups, nodeOrderBySection: activeNodeOrder };\n};\n","import {\n type ResourceContextAction,\n type TreeListActionMenuItem,\n type TreeListGroup,\n type TreeListSection,\n useTreeListOrderStore,\n} from \"@pstdio/ui\";\nimport { useState } from \"react\";\nimport { WorkbenchIcon } from \"../../shared/icon\";\nimport { activeTreeGroupLayout } from \"./tree-group-scope\";\n\ninterface GroupDraft {\n storageKey: string;\n group: TreeListGroup;\n isNew: boolean;\n}\n\nexport const useTreeViewGroups = (\n storageKey: string,\n sections: TreeListSection[],\n nodeOrderBySection: Record<string, string[]>,\n enabled: boolean,\n) => {\n const savedGroups = useTreeListOrderStore(storageKey, (state) => state.groups);\n const addGroup = useTreeListOrderStore(storageKey, (state) => state.addGroup);\n const renameGroup = useTreeListOrderStore(storageKey, (state) => state.renameGroup);\n const removeGroup = useTreeListOrderStore(storageKey, (state) => state.removeGroup);\n const [draft, setDraft] = useState<GroupDraft | null>(null);\n const currentDraft = draft?.storageKey === storageKey ? draft : null;\n const { groups, nodeOrderBySection: activeNodeOrder } = activeTreeGroupLayout(\n sections,\n savedGroups,\n nodeOrderBySection,\n );\n if (currentDraft?.isNew) groups.push(currentDraft.group);\n\n const startGroup = (moveScope = sections[0]?.moveScope) => {\n setDraft({\n storageKey,\n group: { id: `tree-list-group:${crypto.randomUUID()}`, label: \"New group\", moveScope },\n isNew: true,\n });\n };\n const newGroupAction: ResourceContextAction = {\n key: \"tree-group:new\",\n label: \"New group\",\n icon: <WorkbenchIcon name=\"folder-plus\" size={14} />,\n closeOnSelect: true,\n onClick: () => startGroup(),\n };\n\n const withGroupControls = (orderedSections: TreeListSection[]) =>\n orderedSections.map((section) => {\n const group = groups.find((group) => group.id === section.id);\n if (!group) return section;\n const menuItems: TreeListActionMenuItem[] = [\n {\n id: \"tree-group:rename\",\n label: \"Rename group\",\n icon: <WorkbenchIcon name=\"pencil\" size={14} />,\n onAction: () => setDraft({ storageKey, group, isNew: false }),\n },\n {\n id: \"tree-group:remove\",\n label: \"Remove group\",\n icon: <WorkbenchIcon name=\"trash-2\" size={14} />,\n onAction: () => removeGroup(group.id),\n },\n ];\n const editing = currentDraft?.group.id === group.id;\n return {\n ...section,\n canReorder: !editing,\n contextMenuItems: menuItems,\n actions: [\n {\n id: \"tree-group:actions\",\n label: \"Group actions\",\n icon: <WorkbenchIcon name=\"ellipsis\" size={14} />,\n menuItems,\n },\n ],\n inlineInput: editing\n ? {\n ariaLabel: \"Group name\",\n placeholder: \"New group\",\n defaultValue: currentDraft.isNew ? \"\" : group.label,\n onCommit: (label: string) => {\n if (currentDraft.isNew)\n addGroup(\n { ...group, label },\n orderedSections.map((section) => section.id),\n );\n else renameGroup(group.id, label);\n setDraft(null);\n },\n onCancel: () => setDraft(null),\n }\n : undefined,\n };\n });\n\n return {\n groups,\n nodeOrderBySection: activeNodeOrder,\n withGroupControls,\n newGroupAction: enabled ? newGroupAction : undefined,\n };\n};\n","import {\n applyTreeListOrder,\n buildTreeVisibilityMenuActions,\n filterVisibleSections,\n type ResourceContextAction,\n resolveVisibility,\n type TreeListActionMenuItem,\n type TreeListNode,\n type TreeListSection,\n useTreeListOrderStore,\n useTreeListVisibilityStore,\n type VisibilityOverride,\n} from \"@pstdio/ui\";\nimport type { ReactNode } from \"react\";\nimport { keepSectionsEmptiedByMoves } from \"./tree-emptied-sections\";\nimport { withoutPinnedOnlyRows } from \"./tree-pinned-only\";\nimport { useTreeViewGroups } from \"./use-tree-view-groups\";\n\ninterface TreeViewRegions {\n headerSections: TreeListSection[];\n sections: TreeListSection[];\n footerSections: TreeListSection[];\n}\n\nexport type TreeViewSlot = \"header\" | \"content\" | \"footer\";\n\ninterface TreeViewCustomization {\n // Header sections with hidden entries removed — what the pinned header renders.\n visibleHeaderSections: TreeListSection[];\n // Sections with hidden categories removed — what the tree body renders.\n visibleSections: TreeListSection[];\n // Footer sections with hidden entries removed — what the pinned footer renders.\n visibleFooterSections: TreeListSection[];\n // Back-of-tree right-click menu: header rows, body categories, and footer rows that opt in.\n backgroundContextActions: ResourceContextAction[];\n customizationRevision: string;\n onReorderSections: (slot: TreeViewSlot, nextSectionIds: string[]) => void;\n onMoveSection: (nextSectionIds: string[], sourceSectionId: string, destinationSectionId: string) => void;\n onReorderNodes: (sectionId: string, nextNodeIds: string[]) => void;\n}\n\ninterface VisibilityToggleIcons {\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n resetIcon?: ReactNode;\n}\n\ninterface NodeVisibilityActions {\n onToggleNode: (id: string, hiddenByDefault: boolean) => void;\n}\n\ninterface TreeViewCustomizationOptions {\n suppressNodeContextMenus?: boolean;\n pinnedOnlyNodeIds?: ReadonlySet<string>;\n allowGroups?: boolean;\n}\n\nconst toStringLabel = (label: ReactNode, fallback: string) => (typeof label === \"string\" ? label : fallback);\n\nconst isCustomizableNode = (node: TreeListNode) => node.canHide === true || node.hiddenByDefault === true;\n\nconst visibilityContextIcon = (effective: VisibilityOverride, icons: VisibilityToggleIcons) =>\n effective === \"shown\" ? icons.hiddenIcon : icons.visibleIcon;\n\nconst buildNodeVisibilityContextMenuItem = (\n node: TreeListNode,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: NodeVisibilityActions,\n icons: VisibilityToggleIcons,\n): TreeListActionMenuItem | undefined => {\n if (!isCustomizableNode(node)) return undefined;\n\n const hiddenByDefault = node.hiddenByDefault === true;\n const effective = resolveVisibility(nodeOverrides[node.id], hiddenByDefault);\n const label = toStringLabel(node.label, node.id);\n const existingItems = node.contextMenuItems ?? [];\n\n return {\n id: `tree-visibility:${node.id}`,\n label: effective === \"shown\" ? `Hide ${label}` : `Show ${label}`,\n icon: visibilityContextIcon(effective, icons),\n ...(existingItems.length > 0 ? { separatorBefore: true } : {}),\n onAction: () => actions.onToggleNode(node.id, hiddenByDefault),\n };\n};\n\nexport const addRegionNodeVisibilityContextMenuItems = (\n nodes: TreeListNode[],\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: NodeVisibilityActions,\n icons: VisibilityToggleIcons,\n enabled = true,\n) => {\n if (!enabled) return nodes;\n let changed = false;\n const next = nodes.map((node) => {\n const item = buildNodeVisibilityContextMenuItem(node, nodeOverrides, actions, icons);\n if (!item) return node;\n\n changed = true;\n return { ...node, contextMenuItems: [...(node.contextMenuItems ?? []), item] };\n });\n\n return changed ? next : nodes;\n};\n\nconst addSectionNodeVisibilityContextMenuItems = (\n sections: TreeListSection[],\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: NodeVisibilityActions,\n icons: VisibilityToggleIcons,\n enabled: boolean,\n) => {\n let changed = false;\n const next = sections.map((section) => {\n const nodes = addRegionNodeVisibilityContextMenuItems(section.nodes, nodeOverrides, actions, icons, enabled);\n if (nodes === section.nodes) return section;\n changed = true;\n return { ...section, nodes };\n });\n return changed ? next : sections;\n};\n\n// Wires the generic @pstdio/ui visibility primitives onto a single tree host. Visibility is\n// persisted per `storageKey`, so each tree view customizes independently. The menu is built from\n// the unfiltered regions so hidden entries stay listed (eye-off) and can be brought back —\n// covering header rows, body categories, and footer rows (never individual body items).\nexport const useTreeViewCustomization = (\n storageKey: string,\n regions: TreeViewRegions,\n icons: VisibilityToggleIcons,\n options: TreeViewCustomizationOptions = {},\n): TreeViewCustomization => {\n const sectionOverrides = useTreeListVisibilityStore(storageKey, (state) => state.sectionOverrides);\n const nodeOverrides = useTreeListVisibilityStore(storageKey, (state) => state.nodeOverrides);\n const toggleSection = useTreeListVisibilityStore(storageKey, (state) => state.toggleSection);\n const toggleNode = useTreeListVisibilityStore(storageKey, (state) => state.toggleNode);\n const resetVisibility = useTreeListVisibilityStore(storageKey, (state) => state.reset);\n const sectionOrder = useTreeListOrderStore(storageKey, (state) => state.sectionOrder);\n const nodeOrderBySection = useTreeListOrderStore(storageKey, (state) => state.nodeOrderBySection);\n const sectionSlotById = useTreeListOrderStore(storageKey, (state) => state.sectionSlotById);\n const setSectionOrder = useTreeListOrderStore(storageKey, (state) => state.setSectionOrder);\n const setNodeOrder = useTreeListOrderStore(storageKey, (state) => state.setNodeOrder);\n const setSectionSlot = useTreeListOrderStore(storageKey, (state) => state.setSectionSlot);\n const resetOrder = useTreeListOrderStore(storageKey, (state) => state.reset);\n const sourceSections = [...regions.headerSections, ...regions.sections, ...regions.footerSections];\n const {\n groups,\n nodeOrderBySection: activeNodeOrder,\n withGroupControls,\n newGroupAction,\n } = useTreeViewGroups(storageKey, sourceSections, nodeOrderBySection, options.allowGroups === true);\n const visibilityActions = {\n onToggleSection: toggleSection,\n onToggleNode: toggleNode,\n onResetAll: () => {\n resetVisibility();\n resetOrder();\n },\n };\n\n const defaultSlotBySectionId = new Map([\n ...regions.headerSections.map((section) => [section.id, \"header\" as const] as const),\n ...regions.sections.map((section) => [section.id, \"content\" as const] as const),\n ...regions.footerSections.map((section) => [section.id, \"footer\" as const] as const),\n ]);\n const orderedSectionsBySlot: Record<TreeViewSlot, TreeListSection[]> = { header: [], content: [], footer: [] };\n const orderedAllSections = withGroupControls(\n applyTreeListOrder(sourceSections, sectionOrder, activeNodeOrder, groups),\n );\n for (const section of orderedAllSections) {\n const slot = sectionSlotById[section.id] ?? defaultSlotBySectionId.get(section.id) ?? \"content\";\n orderedSectionsBySlot[slot].push(section);\n }\n const orderedHeaderSections = orderedSectionsBySlot.header;\n const orderedSections = withoutPinnedOnlyRows(orderedSectionsBySlot.content, options.pinnedOnlyNodeIds ?? new Set());\n const orderedFooterSections = orderedSectionsBySlot.footer;\n const includeNodeContextMenus = options.suppressNodeContextMenus !== true;\n\n const headerSections = addSectionNodeVisibilityContextMenuItems(\n orderedHeaderSections,\n nodeOverrides,\n visibilityActions,\n icons,\n includeNodeContextMenus,\n );\n const contentSections = addSectionNodeVisibilityContextMenuItems(\n orderedSections,\n nodeOverrides,\n visibilityActions,\n icons,\n includeNodeContextMenus,\n );\n const footerSections = addSectionNodeVisibilityContextMenuItems(\n orderedFooterSections,\n nodeOverrides,\n visibilityActions,\n icons,\n includeNodeContextMenus,\n );\n const visibleIn = (sections: TreeListSection[]) =>\n keepSectionsEmptiedByMoves(\n sourceSections,\n sections,\n filterVisibleSections(sections, sectionOverrides, nodeOverrides),\n sectionOverrides,\n options.pinnedOnlyNodeIds,\n );\n const visibleHeaderSections = visibleIn(headerSections);\n const visibleSections = visibleIn(contentSections);\n const visibleFooterSections = visibleIn(footerSections);\n const visibilityMenuItems = buildTreeVisibilityMenuActions(\n { headerSections: orderedHeaderSections, sections: orderedSections, footerSections: orderedFooterSections },\n sectionOverrides,\n nodeOverrides,\n visibilityActions,\n icons,\n );\n const backgroundContextActions: ResourceContextAction[] = newGroupAction ? [newGroupAction] : [];\n if (visibilityMenuItems.length > 0)\n backgroundContextActions.push({\n key: \"tree-visibility\",\n label: \"Hide/show items\",\n icon: icons.visibleIcon,\n items: visibilityMenuItems.map((item) => ({ ...item, closeOnSelect: false })),\n });\n\n const customizationRevision = JSON.stringify({\n header: orderedHeaderSections.map((section) => [\n section.id,\n toStringLabel(section.label, section.id),\n section.nodes.map((node) => [node.id, toStringLabel(node.label, node.id)]),\n ]),\n main: orderedSections.map((section) => [\n section.id,\n toStringLabel(section.label, section.id),\n section.nodes.map((node) => [node.id, toStringLabel(node.label, node.id)]),\n ]),\n footer: orderedFooterSections.map((section) => [\n section.id,\n toStringLabel(section.label, section.id),\n section.nodes.map((node) => [node.id, toStringLabel(node.label, node.id)]),\n ]),\n sectionOverrides,\n nodeOverrides,\n sectionOrder,\n nodeOrderBySection,\n sectionSlotById,\n groups,\n });\n\n return {\n visibleHeaderSections,\n visibleSections,\n visibleFooterSections,\n backgroundContextActions,\n customizationRevision,\n onReorderSections: (slot, nextSectionIds) => {\n const idsBySlot: Record<TreeViewSlot, string[]> = {\n header: orderedHeaderSections.map((section) => section.id),\n content: orderedSections.map((section) => section.id),\n footer: orderedFooterSections.map((section) => section.id),\n };\n idsBySlot[slot] = nextSectionIds;\n setSectionOrder([...idsBySlot.header, ...idsBySlot.content, ...idsBySlot.footer]);\n },\n onMoveSection: (nextSectionIds, sourceSectionId, destinationSectionId) => {\n const destinationSlot =\n sectionSlotById[destinationSectionId] ?? defaultSlotBySectionId.get(destinationSectionId) ?? \"content\";\n setSectionSlot(sourceSectionId, destinationSlot);\n setSectionOrder(nextSectionIds);\n },\n onReorderNodes: setNodeOrder,\n };\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { type ResourceContextAction, ScrollArea, TreeList, TreeListDragProvider } from \"@pstdio/ui\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type {\n NavigationTarget,\n ResourceRef,\n TreeNode,\n TreeRendererState,\n TreeViewSection,\n WorkbenchCore,\n WorkbenchPanelInstance,\n} from \"../../../core\";\nimport { getWorkbenchRenderers } from \"../../../core\";\nimport { reportUserActionError } from \"../../../core/shared/run-user-action\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-params-dialog\";\nimport { WorkbenchIcon } from \"../../shared/icon\";\nimport { useWorkbenchStore } from \"../../shared/use-workbench-store\";\nimport { workbenchBackgrounds } from \"../../theme/workbench-theme-background\";\nimport { RendererReadNotice } from \"../renderer-read-notice\";\nimport type { TreeActionParamsRequest } from \"./tree-actions\";\nimport { findNodeInSections, toTreeListSection } from \"./tree-list-adapter\";\nimport { TreeParamsDialog } from \"./tree-params-dialog\";\nimport { pinnedOnlyNodeIds } from \"./tree-pinned-only\";\nimport { TreeViewBody } from \"./tree-view-body\";\nimport { createToggleTreeSection, shouldSelectTreeNodeForNavigationTarget } from \"./tree-view-navigation\";\nimport { TreeViewSearch } from \"./tree-view-search\";\nimport { useTreeData } from \"./use-tree-data\";\nimport { useTreeNavigationState } from \"./use-tree-navigation-state\";\nimport { useTreeSelection } from \"./use-tree-selection\";\nimport { useTreeViewCustomization } from \"./use-tree-view-customization\";\n\ninterface WorkbenchTreeViewProps {\n readOwnerKey?: string;\n placement?: WorkbenchPanelInstance;\n workbench: WorkbenchCore;\n treeViewId: string;\n activeNodeId?: string | null;\n resource?: ResourceRef;\n viewId?: string;\n renderParamField?: CommandParamFieldRenderer;\n onOpenResourceError?: (error: unknown) => void;\n onSidenavContextActionsChange?: (actions: ResourceContextAction[]) => void;\n}\n\nconst EMPTY_TREE_STATE: TreeRendererState = { expandedNodeIds: [], expandedSectionIds: [] };\n\nconst treeCustomizationOptions = (body: TreeViewSection[], isSidenav: boolean) => ({\n suppressNodeContextMenus: isSidenav,\n pinnedOnlyNodeIds: pinnedOnlyNodeIds(body),\n allowGroups: isSidenav,\n});\n\nconst useSidenavContextActions = (\n actions: ResourceContextAction[],\n revision: string,\n onChange: ((actions: ResourceContextAction[]) => void) | undefined,\n) => {\n const actionsRef = useRef(actions);\n actionsRef.current = actions;\n\n useEffect(() => {\n void revision;\n onChange?.(actionsRef.current);\n }, [revision, onChange]);\n\n useEffect(\n () => () => {\n onChange?.([]);\n },\n [onChange],\n );\n};\n\ninterface TreeNavigationContext {\n workbench: WorkbenchCore;\n treeViewId: string;\n onOpenResourceError?: (error: unknown) => void;\n}\n\nconst navigateTreeNode = (\n context: TreeNavigationContext,\n nodeId: string,\n intent: { id?: string; payload?: unknown } | undefined,\n) => {\n if (intent?.id === \"target\") {\n const target = intent.payload as NavigationTarget;\n if (shouldSelectTreeNodeForNavigationTarget(target)) {\n getWorkbenchRenderers(context.workbench).setSelectedNode(context.treeViewId, nodeId);\n }\n void context.workbench.navigation.openTarget(target).catch((error) => {\n if (context.onOpenResourceError) context.onOpenResourceError(error);\n else reportUserActionError(context.workbench, \"Open\", error);\n });\n return;\n }\n};\n\ninterface ToggleTreeNodeContext {\n workbench: WorkbenchCore;\n treeViewId: string;\n resource?: ResourceRef;\n viewId?: string;\n body: TreeViewSection[];\n header: TreeViewSection[];\n footer: TreeViewSection[];\n childrenByNodeId: Record<string, TreeNode[]>;\n expandedNodeIds: string[];\n loadChildren(node: TreeNode): void;\n}\n\nconst createToggleTreeNode = (context: ToggleTreeNodeContext) => (nodeId: string) => {\n const node =\n findNodeInSections(context.body, nodeId, context.childrenByNodeId) ??\n findNodeInSections([...context.header, ...context.footer], nodeId, context.childrenByNodeId);\n if (!node) return;\n\n const expanded = context.expandedNodeIds.includes(nodeId);\n getWorkbenchRenderers(context.workbench).setNodeExpanded(context.treeViewId, nodeId, !expanded);\n if (expanded || context.childrenByNodeId[nodeId] || node.children) return;\n\n context.loadChildren(node);\n};\n\nexport const WorkbenchTreeView = (props: WorkbenchTreeViewProps) => {\n const {\n workbench,\n treeViewId,\n activeNodeId,\n resource,\n viewId,\n renderParamField,\n onOpenResourceError,\n onSidenavContextActionsChange,\n } = props;\n const isSidenav = Boolean(onSidenavContextActionsChange);\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const treeRenderer = getWorkbenchRenderers(workbench).getTreeRenderer(treeViewId);\n const [filter, setFilter] = useState(\"\");\n const treeState =\n useWorkbenchStore(getWorkbenchRenderers(workbench).treeStore, (state) => state.statesByTreeId[treeViewId]) ??\n EMPTY_TREE_STATE;\n const { projectId, activeLocation, activeResource } = useTreeNavigationState(workbench);\n const { body, childrenByNodeId, moveNode, error, footer, header, loadChildren, loading, retry } = useTreeData(\n workbench,\n treeViewId,\n resource,\n viewId,\n treeRenderer?.searchable ? filter.trim() || undefined : undefined,\n props.readOwnerKey,\n onOpenResourceError,\n props.placement,\n );\n const [paramsRequest, setParamsRequest] = useState<TreeActionParamsRequest | null>(null);\n\n const adapterContext = {\n workbench,\n onCommandError: onOpenResourceError,\n onRequestParams: setParamsRequest,\n };\n const rawSections = body.map((section) => toTreeListSection(section, childrenByNodeId, adapterContext));\n const rawHeaderSections = header.map((section) => toTreeListSection(section, childrenByNodeId, adapterContext));\n const rawFooterSections = footer.map((section) => toTreeListSection(section, childrenByNodeId, adapterContext));\n const {\n visibleHeaderSections,\n visibleSections,\n visibleFooterSections,\n backgroundContextActions,\n customizationRevision,\n onReorderSections,\n onReorderNodes,\n onMoveSection,\n } = useTreeViewCustomization(\n `${treeViewId}:${projectId ?? \"global\"}`,\n {\n headerSections: rawHeaderSections,\n sections: rawSections,\n footerSections: rawFooterSections,\n },\n {\n visibleIcon: <WorkbenchIcon name=\"eye\" size={14} />,\n hiddenIcon: <WorkbenchIcon name=\"eye-off\" size={14} />,\n resetIcon: <WorkbenchIcon name=\"rotate-ccw\" size={14} />,\n },\n treeCustomizationOptions(body, isSidenav),\n );\n useSidenavContextActions(backgroundContextActions, customizationRevision, onSidenavContextActionsChange);\n const activeNodeSelection = useTreeSelection(workbench, treeViewId, {\n sections: [...header, ...body, ...footer],\n childrenByNodeId,\n activeNodeId,\n activeLocation,\n activeResource,\n selectedNodeId: treeState.selectedNodeId,\n });\n\n if (!treeRenderer) {\n return (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n Tree renderer is no longer registered.\n </Text>\n );\n }\n\n const toggleNode = createToggleTreeNode({\n workbench,\n treeViewId,\n resource,\n viewId,\n body,\n header,\n footer,\n childrenByNodeId,\n expandedNodeIds: treeState.expandedNodeIds,\n loadChildren,\n });\n\n const toggleSection = createToggleTreeSection(workbench, treeViewId, treeState.expandedSectionIds);\n\n const navigationContext = { workbench, treeViewId, onOpenResourceError };\n\n return (\n <TreeListDragProvider\n sections={[...visibleHeaderSections, ...visibleSections, ...visibleFooterSections]}\n canMove={treeRenderer.canMove}\n onReorderSections={onMoveSection}\n onReorderNodes={onReorderNodes}\n >\n <Flex\n as=\"section\"\n direction=\"column\"\n h=\"full\"\n minH=\"0\"\n minW=\"0\"\n aria-label={treeRenderer.title}\n aria-busy={loading}\n >\n {!loading && visibleHeaderSections.length > 0 ? (\n <Flex bg={workbenchBackgrounds.sidenav} flexShrink={0}>\n <TreeList\n sections={visibleHeaderSections}\n draggable={isSidenav}\n expandedNodeIds={treeState.expandedNodeIds}\n expandedSectionIds={treeState.expandedSectionIds}\n activeNodeId={activeNodeSelection}\n rowVariant=\"compact\"\n // Header sections separate owners (mode and levels), so their rows read as one list.\n sectionGap=\"1px\"\n nodeGap=\"1px\"\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n onReorderSections={(nextSectionIds) => onReorderSections(\"header\", nextSectionIds)}\n onReorderNodes={onReorderNodes}\n canMove={treeRenderer.canMove}\n onNavigate={(event) => navigateTreeNode(navigationContext, event.nodeId, event.intent)}\n />\n </Flex>\n ) : null}\n <TreeViewSearch\n visible={Boolean(treeRenderer.searchable)}\n placeholder={treeRenderer.searchPlaceholder}\n value={filter}\n onChange={setFilter}\n />\n {error && !isSidenav ? <RendererReadNotice error={error} retry={retry} /> : null}\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n w=\"full\"\n viewportRef={scrollRef}\n viewportProps={{\n display: \"block\",\n style: { overflowX: \"hidden\" },\n }}\n contentProps={{\n style: { minWidth: \"100%\", width: \"100%\", minHeight: \"100%\", display: \"flex\", flexDirection: \"column\" },\n }}\n >\n <Box w=\"full\" minW=\"0\" flex=\"1 0 auto\" display=\"flex\" flexDirection=\"column\">\n <TreeViewBody\n error={error}\n loading={loading}\n moduleLoading={treeState.loading}\n sections={visibleSections}\n backgroundContextActions={isSidenav ? undefined : backgroundContextActions}\n draggable={isSidenav}\n customizationAvailable={isSidenav}\n activeNodeId={activeNodeSelection}\n expandedNodeIds={treeState.expandedNodeIds}\n expandedSectionIds={treeState.expandedSectionIds}\n scrollRef={scrollRef}\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n onReorderSections={(nextSectionIds) => onReorderSections(\"content\", nextSectionIds)}\n onReorderNodes={onReorderNodes}\n canMove={treeRenderer.canMove}\n onMoveNode={moveNode}\n onNavigate={(event) => navigateTreeNode(navigationContext, event.nodeId, event.intent)}\n />\n </Box>\n </ScrollArea>\n {!loading && visibleFooterSections.length > 0 ? (\n <Flex bg={workbenchBackgrounds.sidenav} flexShrink={0}>\n <TreeList\n sections={visibleFooterSections}\n draggable={isSidenav}\n expandedNodeIds={treeState.expandedNodeIds}\n expandedSectionIds={treeState.expandedSectionIds}\n activeNodeId={activeNodeSelection}\n rowVariant=\"compact\"\n sectionGap=\"md\"\n nodeGap=\"1px\"\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n onReorderSections={(nextSectionIds) => onReorderSections(\"footer\", nextSectionIds)}\n onReorderNodes={onReorderNodes}\n canMove={treeRenderer.canMove}\n onNavigate={(event) => navigateTreeNode(navigationContext, event.nodeId, event.intent)}\n />\n </Flex>\n ) : null}\n <TreeParamsDialog\n request={paramsRequest}\n renderParamField={renderParamField}\n workbench={workbench}\n onClose={() => setParamsRequest(null)}\n />\n </Flex>\n </TreeListDragProvider>\n );\n};\n","import { Button, HStack, Input, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { type ResourceRole, resourceKey } from \"@pstdio/sdk/extensions\";\nimport { AlertMessage, ListRow, ScrollArea } from \"@pstdio/ui\";\nimport { useEffect, useState } from \"react\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport type { ResourceLinkCandidate, ResourceLinksService } from \"./resource-links-types\";\n\ninterface ResourceLinkPickerProps {\n service: ResourceLinksService;\n excludeKey: string;\n busy: boolean;\n onCancel(): void;\n onSelect(candidate: ResourceLinkCandidate, role: ResourceRole): Promise<void>;\n}\n\nexport const ResourceLinkPicker = (props: ResourceLinkPickerProps) => {\n const { service, excludeKey, busy, onCancel, onSelect } = props;\n const [query, setQuery] = useState(\"\");\n const [results, setResults] = useState<ResourceLinkCandidate[]>([]);\n const [selected, setSelected] = useState<ResourceLinkCandidate>();\n const [role, setRole] = useState<ResourceRole>(\"context\");\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string>();\n const [revision, setRevision] = useState(0);\n useEffect(\n () =>\n service.subscribe(() => {\n setSelected(undefined);\n setRevision((value) => value + 1);\n }),\n [service],\n );\n useEffect(() => {\n void revision;\n let cancelled = false;\n const controller = new AbortController();\n setLoading(true);\n setResults([]);\n setSelected(undefined);\n setError(undefined);\n const timer = setTimeout(() => {\n void service\n .search(query, controller.signal)\n .then((items) => {\n if (!cancelled) setResults(items.filter((item) => resourceKey(item.resource) !== excludeKey));\n })\n .catch((cause: unknown) => {\n if (!cancelled) setError(cause instanceof Error ? cause.message : String(cause));\n })\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n }, 150);\n return () => {\n cancelled = true;\n controller.abort();\n clearTimeout(timer);\n };\n }, [service, query, excludeKey, revision]);\n return (\n <Stack gap=\"3\">\n <Input\n size=\"sm\"\n aria-label=\"Search resources\"\n placeholder=\"Search resources…\"\n value={query}\n onChange={(event) => {\n setQuery(event.target.value);\n setSelected(undefined);\n }}\n autoFocus\n />\n {error ? <AlertMessage status=\"error\" title={error} /> : null}\n <ScrollArea maxH=\"64\">\n {loading ? (\n <Text color=\"fg.muted\" textStyle=\"sm\">\n Searching…\n </Text>\n ) : null}\n {!loading && !results.length ? (\n <Text color=\"fg.muted\" textStyle=\"sm\">\n No resources found.\n </Text>\n ) : null}\n {results.map((item) => (\n <ListRow\n key={resourceKey(item.resource)}\n label={item.resource.label ?? item.resource.shorthand ?? item.resource.id}\n description={item.description}\n icon={<WorkbenchIcon name={item.resource.icon ?? \"file-text\"} />}\n isSelected={selected === item}\n onActivate={() => {\n if (!loading && !busy) setSelected(item);\n }}\n />\n ))}\n </ScrollArea>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n Purpose: {role}\n <WorkbenchIcon name=\"chevron-down\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content>\n {([\"primary\", \"context\", \"source\", \"result\"] as const).map((value) => (\n <Menu.Item key={value} value={value} onClick={() => setRole(value)}>\n {value}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n <HStack justify=\"flex-end\">\n <Button variant=\"ghost\" onClick={onCancel} disabled={busy}>\n Cancel\n </Button>\n <Button\n disabled={!selected || busy || loading}\n loading={busy}\n onClick={() => selected && void onSelect(selected, role)}\n >\n Link\n </Button>\n </HStack>\n </Stack>\n );\n};\n","import { Button, Dialog, HStack, IconButton, Stack, Text } from \"@chakra-ui/react\";\nimport { type ResourceAnchorPage, type ResourceRef, type ResourceRole, resourceKey } from \"@pstdio/sdk/extensions\";\nimport { AlertMessage, ListRow, ScrollArea } from \"@pstdio/ui\";\nimport { useEffect, useState } from \"react\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { ResourceLinkPicker } from \"./resource-link-picker\";\nimport type { ResourceLinkCandidate, ResourceLinksService } from \"./resource-links-types\";\n\ninterface RelatedResourcesProps {\n resource: ResourceRef;\n service: ResourceLinksService;\n onClose(): void;\n}\n\ninterface RelatedResourceRow {\n edge: ResourceAnchorPage[\"items\"][number];\n candidate: ResourceLinkCandidate;\n incoming: boolean;\n}\n\nexport const RelatedResources = (props: RelatedResourcesProps) => {\n const { resource, service, onClose } = props;\n const [rows, setRows] = useState<RelatedResourceRow[]>([]);\n const [cursor, setCursor] = useState<string>();\n const [nextCursor, setNextCursor] = useState<string>();\n const [picker, setPicker] = useState(false);\n const [busy, setBusy] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string>();\n const [revision, setRevision] = useState(0);\n const key = resourceKey(resource);\n useEffect(\n () =>\n service.subscribe(() => {\n setRevision((value) => value + 1);\n }),\n [service],\n );\n useEffect(() => {\n void revision;\n let cancelled = false;\n const controller = new AbortController();\n setLoading(true);\n setError(undefined);\n void service\n .list({ resource, direction: \"both\", limit: 25, cursor })\n .then(async (page) => {\n if (cancelled) return;\n const refs = page.items.map((edge) => (resourceKey(edge.source) === key ? edge.target : edge.source));\n const resolved = await service.resolve(refs, controller.signal);\n if (cancelled) return;\n const candidates = new Map(resolved.map((item) => [resourceKey(item.resource), item]));\n setRows(\n page.items.map((edge, index) => ({\n edge,\n incoming: resourceKey(edge.source) !== key,\n candidate: candidates.get(resourceKey(refs[index]!)) ?? { resource: refs[index]! },\n })),\n );\n setNextCursor(page.nextCursor);\n })\n .catch((cause: unknown) => {\n if (!cancelled) setError(cause instanceof Error ? cause.message : String(cause));\n })\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n controller.abort();\n };\n }, [resource, key, cursor, revision, service]);\n const mutate = async (action: () => Promise<void>) => {\n setBusy(true);\n setError(undefined);\n try {\n await action();\n setPicker(false);\n setCursor(undefined);\n setRevision((value) => value + 1);\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : String(cause));\n } finally {\n setBusy(false);\n }\n };\n const add = (candidate: ResourceLinkCandidate, role: ResourceRole) =>\n mutate(() => service.add(resource, [{ ...candidate.resource, role }]));\n const open = async (candidate: ResourceLinkCandidate) => {\n setError(undefined);\n try {\n await candidate.open?.();\n onClose();\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : String(cause));\n }\n };\n return (\n <>\n <Dialog.Header>\n <Dialog.Title>{picker ? \"Link resource\" : \"Related resources\"}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"3\">\n <Text color=\"fg.muted\" textStyle=\"sm\">\n {resource.label ?? resource.shorthand ?? resource.id}\n </Text>\n {error ? <AlertMessage status=\"error\" title={error} /> : null}\n {picker ? (\n <ResourceLinkPicker\n service={service}\n excludeKey={key}\n busy={busy}\n onCancel={() => setPicker(false)}\n onSelect={add}\n />\n ) : (\n <>\n {loading ? (\n <Text color=\"fg.muted\" textStyle=\"sm\">\n Loading resources…\n </Text>\n ) : null}\n {!loading && !rows.length && !error ? (\n <Text color=\"fg.muted\" textStyle=\"sm\">\n No related resources yet.\n </Text>\n ) : null}\n <ScrollArea maxH=\"80\">\n {rows.map(({ edge, candidate, incoming }) => (\n <ListRow\n key={`${resourceKey(edge.source)}:${resourceKey(edge.target)}`}\n label={\n candidate.resource.label ??\n candidate.resource.shorthand ??\n `${candidate.resource.type}: ${candidate.resource.id}`\n }\n description={`${incoming ? \"Incoming\" : \"Outgoing\"} · ${edge.target.role ?? \"context\"}${candidate.open ? \"\" : \" · Unavailable\"}`}\n tooltip={`${candidate.resource.extensionId ?? \"pstdio\"} · ${candidate.resource.type}: ${candidate.resource.id}`}\n icon={<WorkbenchIcon name={candidate.resource.icon ?? \"file-text\"} />}\n onActivate={\n candidate.open\n ? () => {\n void open(candidate);\n }\n : undefined\n }\n endContent={\n <IconButton\n aria-label=\"Remove link\"\n variant=\"ghost\"\n size=\"2xs\"\n disabled={busy}\n onKeyDown={(event) => event.stopPropagation()}\n onClick={(event) => {\n event.stopPropagation();\n void mutate(() => service.remove(edge.source, [edge.target]));\n }}\n >\n <WorkbenchIcon name=\"unlink\" />\n </IconButton>\n }\n />\n ))}\n </ScrollArea>\n <HStack>\n <Button variant=\"outline\" onClick={() => setPicker(true)} disabled={busy}>\n <WorkbenchIcon name=\"link\" />\n Link resource\n </Button>\n {cursor ? (\n <Button variant=\"ghost\" onClick={() => setCursor(undefined)} disabled={loading}>\n First page\n </Button>\n ) : null}\n {nextCursor ? (\n <Button variant=\"ghost\" onClick={() => setCursor(nextCursor)} disabled={loading}>\n More resources\n </Button>\n ) : null}\n </HStack>\n </>\n )}\n </Stack>\n </Dialog.Body>\n </>\n );\n};\n","import type { WorkbenchModuleContext } from \"../../core\";\n\nexport const closeResourceLinksOnProjectChange = (\n ctx: Pick<WorkbenchModuleContext, \"pages\" | \"layout\" | \"overlays\">,\n viewId: string,\n) => ({\n dispose: ctx.pages.store.subscribeSelector(\n (state) => state.projectId,\n () => {\n for (const widget of ctx.layout.getLayout().regions.overlay.widgets) {\n if (widget.viewId === viewId) ctx.overlays.closeOverlay(widget.widgetId);\n }\n },\n ),\n});\n","import type { ResourceRef } from \"@pstdio/sdk/extensions\";\nimport type { WorkbenchModuleContribution } from \"../../core\";\nimport { RelatedResources } from \"./related-resources\";\nimport { closeResourceLinksOnProjectChange } from \"./resource-links-project-scope\";\nimport type { ResourceLinksService } from \"./resource-links-types\";\n\nexport interface WorkbenchResourceLinksOptions {\n canonicalize(resource: ResourceRef): ResourceRef | undefined;\n createService(resource: ResourceRef): ResourceLinksService;\n}\n\nexport const resourceLinksCommandId = \"workbench.resources.links\";\nconst viewId = \"workbench.resources.related\";\n\nexport const createWorkbenchResourceLinksModule = (options: WorkbenchResourceLinksOptions) =>\n ({\n id: \"workbench.resource-links\",\n activate(ctx) {\n const currentResource = () => {\n const resource = ctx.getActiveResource() ?? ctx.getPrimaryResource();\n return resource && options.canonicalize(resource);\n };\n ctx.views.registerView({\n id: viewId,\n title: \"Related resources\",\n body: {\n kind: \"react\",\n render: (input) => {\n const resource = input.instance.resource;\n return resource ? (\n <RelatedResources\n key={`${resource.projectId}:${resource.extensionId}:${resource.type}:${resource.id}`}\n resource={resource}\n service={options.createService(resource)}\n onClose={() => ctx.overlays.closeOverlay(input.instance.instanceId)}\n />\n ) : null;\n },\n },\n });\n ctx.overlays.registerOverlay({\n id: viewId,\n viewId,\n config: { size: \"md\", placement: \"center\", scrollBehavior: \"inside\" },\n });\n ctx.commands.registerCommand(\n { id: resourceLinksCommandId, label: \"Related resources\", icon: \"link\", category: \"Resources\" },\n {\n isEnabled: () => Boolean(currentResource()),\n isVisible: () => Boolean(currentResource()),\n execute: (_args, context) => {\n const current = context?.resource ?? ctx.getActiveResource() ?? ctx.getPrimaryResource();\n const resource = current && options.canonicalize(current);\n if (resource) ctx.overlays.openOverlay(viewId, { resource, title: \"Related resources\" });\n },\n },\n );\n return closeResourceLinksOnProjectChange(ctx, viewId);\n },\n }) satisfies WorkbenchModuleContribution;\n","import { useSyncExternalStore } from \"react\";\nimport type { SettingsRegistry } from \"../../core\";\n\nexport const useSettingsRevision = (settings: SettingsRegistry) =>\n useSyncExternalStore(\n (listener) => settings.store.subscribe(() => listener()),\n () => settings.store.getState().revision,\n () => settings.store.getState().revision,\n );\n","import { Box, Flex, Spinner, Stack, Text } from \"@chakra-ui/react\";\nimport { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { EmptyState, ScrollArea } from \"@pstdio/ui\";\nimport { type ReactNode, useEffect, useState } from \"react\";\nimport {\n type CollectionSettingsPanel,\n getWorkbenchRenderers,\n type PreferenceScope,\n type SettingsRegistry,\n type WorkbenchPanelRenderInput,\n} from \"../../core\";\nimport { WorkbenchPreferencesForm } from \"../renderers/settings/preferences-form\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { useSettingsRevision } from \"./use-settings-revision\";\nexport interface SettingsSurfacePanelProps {\n input: WorkbenchPanelRenderInput;\n settings: SettingsRegistry;\n resolveScopeId?: (scope: PreferenceScope) => string | undefined;\n}\nconst Centered = (props: { children: ReactNode }) => (\n <Flex h=\"full\" minH=\"0\" align=\"center\" justify=\"center\" p=\"lg\">\n {props.children}\n </Flex>\n);\nconst ScrollableSettingsContent = (props: { children: ReactNode }) => (\n <ScrollArea h=\"full\" minH=\"0\" contentProps={{ h: \"full\", minH: \"full\" }}>\n <Box h=\"full\" minH=\"full\">\n {props.children}\n </Box>\n </ScrollArea>\n);\nconst SettingsViewContent = (props: { input: WorkbenchPanelRenderInput; panelId: string; viewId: string }) => {\n const { input, panelId, viewId } = props;\n const renderer = useWorkbenchStore(getWorkbenchRenderers(input.workbench).store, (state) => state.renderers[viewId]);\n useWorkbenchStore(getWorkbenchRenderers(input.workbench).store, (state) => state.refreshKeys[viewId] ?? 0);\n if (!renderer) {\n return (\n <Centered>\n <EmptyState title=\"Settings View not found\" />\n </Centered>\n );\n }\n return (\n <ScrollableSettingsContent>\n {renderer.render({ ...input, instance: { ...input.instance, panelId, viewId } }) as ReactNode}\n </ScrollableSettingsContent>\n );\n};\n// Resolve async collection data before rendering its registered View. The View\n// can read the current item from settings by the stable panel and item ids.\nconst CollectionItemView = (props: {\n panel: CollectionSettingsPanel;\n itemId: string;\n input: WorkbenchPanelRenderInput;\n}) => {\n const { panel, itemId, input } = props;\n const resolveCollectionItem = input.workbench.settings.resolveCollectionItem;\n const [state, setState] = useState<{\n status: \"loading\" | \"ready\" | \"missing\";\n }>({\n status: \"loading\",\n });\n useEffect(() => {\n let alive = true;\n setState({ status: \"loading\" });\n resolveCollectionItem(panel.id, itemId).then((item) => {\n if (!alive) return;\n setState(item === undefined ? { status: \"missing\" } : { status: \"ready\" });\n });\n return () => {\n alive = false;\n };\n }, [panel, itemId, resolveCollectionItem]);\n if (state.status === \"loading\")\n return (\n <Centered>\n <Spinner size=\"sm\" />\n </Centered>\n );\n if (state.status === \"missing\")\n return (\n <Centered>\n <EmptyState title=\"Item not found\" />\n </Centered>\n );\n return <SettingsViewContent input={input} panelId={panel.id} viewId={panel.viewId} />;\n};\n// The single main-region renderer for the settings surface. Dispatches the open\n// resource to a schema form, a custom view, or a collection item editor.\nexport const SettingsSurfacePanel = (props: SettingsSurfacePanelProps) => {\n const { input, settings, resolveScopeId } = props;\n const revision = useSettingsRevision(settings);\n const resource = input.instance.resource;\n const panelId = typeof resource?.metadata?.panelId === \"string\" ? resource.metadata.panelId : undefined;\n const itemId = typeof resource?.metadata?.itemId === \"string\" ? resource.metadata.itemId : undefined;\n const panel = panelId ? settings.getPanel(panelId) : undefined;\n if (!panel) {\n return (\n <Centered>\n <EmptyState title=\"Select a settings entry\" description=\"Pick an item from the settings sidenav.\" />\n </Centered>\n );\n }\n if (panel.kind === \"view\") return <SettingsViewContent input={input} panelId={panel.id} viewId={panel.viewId} />;\n if (panel.kind === \"collection\") {\n if (!itemId)\n return (\n <Centered>\n <EmptyState title={panel.title} />\n </Centered>\n );\n return (\n <CollectionItemView\n key={`${resourceKey(resource) ?? itemId}:${revision}`}\n panel={panel}\n itemId={itemId}\n input={input}\n />\n );\n }\n return (\n <ScrollArea h=\"full\" minH=\"0\" contentProps={{ p: \"lg\", display: \"flex\", flexDirection: \"column\", gap: \"md\" }}>\n <Stack gap=\"xs\">\n <Text textStyle=\"heading/M/semibold\">{panel.title}</Text>\n {panel.description && (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" maxW=\"640px\">\n {panel.description}\n </Text>\n )}\n </Stack>\n <WorkbenchPreferencesForm\n preferences={input.workbench.preferences}\n names={panel.preferences}\n resolveScopeId={resolveScopeId}\n mode={panel.save ?? \"live\"}\n />\n </ScrollArea>\n );\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { ResizableSplitLayout } from \"@pstdio/ui\";\nimport type { PreferenceScope, SettingsRegistry, WorkbenchPanelRenderInput } from \"../../core\";\nimport { WorkbenchTreeView } from \"../renderers/tree/tree-view\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { SettingsSurfacePanel } from \"./settings-surface-panel\";\nimport { useSettingsRevision } from \"./use-settings-revision\";\nexport interface SettingsOverlayProps {\n input: WorkbenchPanelRenderInput;\n settings: SettingsRegistry;\n navTreeId: string;\n title: string;\n resolveScopeId?: (scope: PreferenceScope) => string | undefined;\n}\n// The settings surface rendered inside the overlay dialog: a titled header bar,\n// then a full-height resizable nav on the left and the dispatching panel on the\n// right. Nav clicks execute the settings command, which re-opens this singleton\n// overlay with the new resource — selection stays resource-driven and the dialog\n// never closes mid-navigation.\nexport const SettingsOverlay = (props: SettingsOverlayProps) => {\n const { input, settings, navTreeId, title, resolveScopeId } = props;\n useSettingsRevision(settings);\n const resource = input.instance.resource;\n const nav = (\n <Box h=\"full\" minH=\"0\" minW=\"0\" w=\"full\" bg=\"bg.subtle\">\n <WorkbenchTreeView workbench={input.workbench} treeViewId={navTreeId} activeNodeId={resourceKey(resource)} />\n </Box>\n );\n const content = (\n <Box flex=\"1\" h=\"full\" minH=\"0\" minW=\"0\">\n <SettingsSurfacePanel input={input} settings={settings} resolveScopeId={resolveScopeId} />\n </Box>\n );\n return (\n <Flex direction=\"column\" position=\"absolute\" inset=\"0\" minH=\"0\" minW=\"0\" overflow=\"hidden\">\n <Flex\n align=\"center\"\n bg=\"bg.subtle\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n flexShrink={0}\n gap=\"2\"\n h=\"12\"\n px=\"3.5\"\n >\n <Box color=\"fg.accent\" display=\"inline-flex\">\n <WorkbenchIcon name=\"settings\" size={16} />\n </Box>\n <Text fontWeight=\"semibold\" textStyle=\"sm\">\n {title}\n </Text>\n </Flex>\n <Box flex=\"1\" minH=\"0\" minW=\"0\" position=\"relative\" overflow=\"hidden\">\n <ResizableSplitLayout\n position=\"absolute\"\n inset=\"0\"\n minH=\"0\"\n minW=\"0\"\n resizableSide=\"left\"\n resizablePanel={nav}\n contentPanel={content}\n defaultSizePx={280}\n minSizePx={220}\n maxSizePx={420}\n contentMinSizePx={360}\n collapsible={false}\n resizeLabel=\"Resize settings navigation\"\n separator=\"line\"\n />\n </Box>\n </Flex>\n );\n};\n","import type { ResourceRef, SettingsScope } from \"../../core\";\nexport const SETTINGS_RESOURCE_KIND = \"workbench-settings\";\nexport const WORKBENCH_SETTINGS_OPEN_COMMAND_ID = \"workbench.settings.open\";\nexport const settingsPanelResource = (panel: { id: string; title: string; icon?: string }): ResourceRef => ({\n type: SETTINGS_RESOURCE_KIND,\n id: panel.id,\n label: panel.title,\n icon: panel.icon,\n metadata: { panelId: panel.id },\n});\nexport const settingsItemResource = (\n panelId: string,\n item: {\n id: string;\n label: string;\n icon?: string;\n },\n): ResourceRef => ({\n type: SETTINGS_RESOURCE_KIND,\n id: `${panelId}::${item.id}`,\n label: item.label,\n icon: item.icon,\n metadata: { panelId, itemId: item.id },\n});\n// Project-scoped entries stay hidden until a project scope id is available; global\n// entries are always visible. Mirrors the old dashboards' projectless behavior.\nexport const isSettingsScopeVisible = (scope: SettingsScope | undefined, hasProjectScope: boolean) =>\n (scope ?? \"project\") !== \"project\" || hasProjectScope;\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type {\n CollectionSettingsPanel,\n RegisteredSettingsPanel,\n SettingsAction,\n SettingsRegistry,\n TreeAction,\n TreeNode,\n TreeViewSection,\n} from \"../../core\";\nimport { settleReadBatch } from \"../../core/registries/views/settle-read-batch\";\nimport {\n isSettingsScopeVisible,\n settingsItemResource,\n settingsPanelResource,\n WORKBENCH_SETTINGS_OPEN_COMMAND_ID,\n} from \"./settings-resources\";\nexport const FALLBACK_SECTION_ID = \"settings\";\nconst toTreeActions = (actions: SettingsAction[] | undefined): TreeAction[] | undefined =>\n actions?.map((action) => ({ id: action.id, label: action.label, icon: action.icon, run: action.run }));\nconst collectionItemNode = (panel: CollectionSettingsPanel, item: unknown): TreeNode => {\n const id = panel.itemId(item);\n const label = panel.itemLabel(item);\n const icon = panel.itemIcon?.(item);\n const resource = settingsItemResource(panel.id, { id, label, icon });\n return {\n id: resourceKey(resource),\n label,\n icon,\n resource,\n target: {\n kind: \"command\",\n commandId: WORKBENCH_SETTINGS_OPEN_COMMAND_ID,\n args: { panelId: panel.id, itemId: id },\n },\n };\n};\nconst orderGroupKeys = (keys: string[], order: string[] | undefined) => {\n const indexOf = (key: string) => {\n const index = order?.indexOf(key) ?? -1;\n return index === -1 ? Number.POSITIVE_INFINITY : index;\n };\n return [...keys].sort((left, right) => indexOf(left) - indexOf(right));\n};\nconst collectionChildren = async (panel: CollectionSettingsPanel): Promise<TreeNode[]> => {\n let items: unknown[];\n try {\n items = await panel.items();\n } catch {\n items = [];\n }\n if (!panel.groupBy) return items.map((item) => collectionItemNode(panel, item));\n const groupBy = panel.groupBy;\n const byKey = new Map<string, unknown[]>();\n for (const item of items) {\n const key = groupBy.key(item);\n const list = byKey.get(key) ?? [];\n list.push(item);\n byKey.set(key, list);\n }\n return orderGroupKeys([...byKey.keys()], groupBy.order).map((key) => ({\n id: `${panel.id}:group:${key}`,\n label: groupBy.label(key),\n icon: groupBy.icon?.(key),\n collapsible: true,\n children: (byKey.get(key) ?? []).map((item) => collectionItemNode(panel, item)),\n }));\n};\nconst panelToNode = (panel: RegisteredSettingsPanel): TreeNode => {\n if (panel.kind === \"collection\") {\n return {\n id: `settings-collection:${panel.id}`,\n label: panel.title,\n icon: panel.icon,\n collapsible: true,\n actions: toTreeActions(panel.actions),\n children: [],\n };\n }\n const resource = settingsPanelResource(panel);\n return {\n id: resourceKey(resource),\n label: panel.title,\n icon: panel.icon,\n resource,\n target: {\n kind: \"command\",\n commandId: WORKBENCH_SETTINGS_OPEN_COMMAND_ID,\n args: { panelId: panel.id },\n },\n };\n};\nexport interface BuildSettingsTreeInput {\n settings: SettingsRegistry;\n hasProjectScope: boolean;\n matchesWhen(expression?: string): boolean;\n signal?: AbortSignal;\n onProgress?(sections: TreeViewSection[]): void;\n}\n// Derives the settings navigation tree from the registry: one section per registered\n// section (headerless when titleless), schema/custom panels as leaves, and collection\n// panels expanded into per-item nodes (optionally grouped). Scope gates project entries.\nexport const buildSettingsTreeBody = async (input: BuildSettingsTreeInput): Promise<TreeViewSection[]> => {\n const { settings, hasProjectScope, matchesWhen, signal, onProgress } = input;\n signal?.throwIfAborted();\n const sections = settings.listSections();\n const sectionsById = new Map(sections.map((section) => [section.id, section]));\n const panels = settings\n .listPanels()\n .filter((panel) => isSettingsScopeVisible(panel.scope, hasProjectScope) && matchesWhen(panel.when));\n const bySection = new Map<string, RegisteredSettingsPanel[]>();\n for (const panel of panels) {\n const sectionId = panel.section && sectionsById.has(panel.section) ? panel.section : FALLBACK_SECTION_ID;\n const list = bySection.get(sectionId) ?? [];\n list.push(panel);\n bySection.set(sectionId, list);\n }\n const renderOrder = sections.map((section) => section.id);\n if (bySection.has(FALLBACK_SECTION_ID) && !sectionsById.has(FALLBACK_SECTION_ID)) {\n renderOrder.push(FALLBACK_SECTION_ID);\n }\n let result: TreeViewSection[] = [];\n const collections: CollectionSettingsPanel[] = [];\n for (const sectionId of renderOrder) {\n const section = sectionsById.get(sectionId);\n // Sections are containers — only hide one that is *explicitly* project-scoped.\n // No-scope sections fall through and are dropped below if they have no content.\n if (section?.scope === \"project\" && !hasProjectScope) continue;\n const sectionPanels = bySection.get(sectionId) ?? [];\n const actions = toTreeActions(section?.actions);\n if (sectionPanels.length === 0 && !actions) continue;\n const nodes = sectionPanels.map(panelToNode);\n for (const panel of sectionPanels) if (panel.kind === \"collection\") collections.push(panel);\n // Settings groups are plain labels, not accordions — the whole tree stays visible.\n result.push({ id: sectionId, label: section?.title, actions, nodes, collapsible: false });\n }\n onProgress?.(result);\n await settleReadBatch(\n collections.map((panel) => async (signal) => {\n const children = await collectionChildren(panel);\n signal.throwIfAborted();\n result = result.map((section) => ({\n ...section,\n nodes: section.nodes.map((node) =>\n node.id === `settings-collection:${panel.id}` ? { ...node, children } : node,\n ),\n }));\n onProgress?.(result);\n }),\n signal,\n );\n return result;\n};\n","import {\n type PreferenceScope,\n standardResourceIcons,\n type WorkbenchModuleContext,\n type WorkbenchModuleContribution,\n} from \"../../core\";\nimport { SettingsOverlay } from \"./settings-overlay\";\nimport {\n isSettingsScopeVisible,\n settingsItemResource,\n settingsPanelResource,\n WORKBENCH_SETTINGS_OPEN_COMMAND_ID,\n} from \"./settings-resources\";\nimport { SettingsSurfacePanel } from \"./settings-surface-panel\";\nimport { buildSettingsTreeBody, FALLBACK_SECTION_ID } from \"./settings-tree\";\n\nexport interface WorkbenchSettingsModuleOptions {\n /** Maps a preference scope (e.g. \"project\") to its scope id; project entries hide until this resolves. */\n resolveScopeId?: (scope: PreferenceScope) => string | undefined;\n /** Heading shown at the top of the settings overlay. */\n title?: string;\n}\n\n// The single overlay placement that hosts the whole settings surface.\nexport const WORKBENCH_SETTINGS_WIDGET_ID = \"workbench.settings\";\nexport const WORKBENCH_SETTINGS_NAV_WIDGET_ID = \"workbench.settings.nav\";\nexport const WORKBENCH_SETTINGS_PANEL_WIDGET_ID = \"workbench.settings.panel\";\n\n// Built-in command to open settings at the first visible panel. Always registered\n// by the surface, so it is available in the command palette without host wiring;\n// hosts only add a curated menu item pointing at this id if they want one.\nexport { WORKBENCH_SETTINGS_OPEN_COMMAND_ID } from \"./settings-resources\";\n\nconst WIDGET_ID = WORKBENCH_SETTINGS_WIDGET_ID;\n\nconst openSettings = (input: { args: unknown; ctx: WorkbenchModuleContext; hasProjectScope: () => boolean }) => {\n const { args, ctx, hasProjectScope } = input;\n const requested = args && typeof args === \"object\" ? args : undefined;\n const panelId = requested && \"panelId\" in requested ? requested.panelId : undefined;\n const itemId = requested && \"itemId\" in requested ? requested.itemId : undefined;\n const requestedPanel = typeof panelId === \"string\" ? ctx.settings.getPanel(panelId) : undefined;\n const isVisible = (entry: NonNullable<typeof requestedPanel>) =>\n isSettingsScopeVisible(entry.scope, hasProjectScope()) && ctx.context.matches(entry.when);\n const panel =\n (requestedPanel && isVisible(requestedPanel) ? requestedPanel : undefined) ??\n ctx.settings.listPanels().find(isVisible);\n if (!panel) return undefined;\n const resource =\n panel.kind === \"collection\" && typeof itemId === \"string\"\n ? settingsItemResource(panel.id, { id: itemId, label: itemId })\n : settingsPanelResource(panel);\n ctx.overlays.openOverlay(WIDGET_ID, {\n resource,\n title: resource.label,\n });\n return resource;\n};\n\n// The unified Settings surface: a full-window modal overlay containing a nav tree\n// (derived from `ctx.settings`) and a dispatching panel, plus a resource presenter\n// that pops the overlay. Contributors only call ctx.settings.registerSection/\n// registerPanel — this renders and wires everything; hosts add no mode or presenter.\nexport const createWorkbenchSettingsModule = (\n options: WorkbenchSettingsModuleOptions = {},\n): WorkbenchModuleContribution => {\n const title = options.title ?? \"Settings\";\n const hasProjectScope = () => options.resolveScopeId?.(\"project\") !== undefined;\n\n return {\n id: \"workbench.settings.surface\",\n activate(ctx) {\n ctx.views.registerView({\n id: WORKBENCH_SETTINGS_NAV_WIDGET_ID,\n title: `${title} navigation`,\n body: {\n kind: \"tree\",\n // Settings sections read as a single scannable list, so every section starts expanded.\n defaultExpandedSectionIds: [...ctx.settings.listSections().map((section) => section.id), FALLBACK_SECTION_ID],\n getBody: ({ signal, onProgress }) =>\n buildSettingsTreeBody({\n settings: ctx.settings,\n hasProjectScope: hasProjectScope(),\n matchesWhen: (when) => ctx.context.matches(when),\n signal,\n onProgress,\n }),\n getChildren: () => [],\n },\n });\n\n ctx.views.registerView({\n id: WORKBENCH_SETTINGS_PANEL_WIDGET_ID,\n title,\n body: {\n kind: \"react\",\n render: (input) => (\n <SettingsSurfacePanel input={input} settings={ctx.settings} resolveScopeId={options.resolveScopeId} />\n ),\n },\n });\n\n ctx.views.registerView({\n id: WIDGET_ID,\n title,\n body: {\n kind: \"react\",\n render: (input) => (\n <SettingsOverlay\n input={input}\n settings={ctx.settings}\n navTreeId={WORKBENCH_SETTINGS_NAV_WIDGET_ID}\n title={title}\n resolveScopeId={options.resolveScopeId}\n />\n ),\n },\n });\n ctx.overlays.registerOverlay({\n id: WIDGET_ID,\n viewId: WIDGET_ID,\n config: {\n size: \"xl\",\n scrollBehavior: \"inside\",\n contentHeight: \"min(760px, 88vh)\",\n contentMaxWidth: \"min(1440px, 94vw)\",\n contentWidth: \"94vw\",\n // Settings hosts nested overlays (confirmations, popovers) that portal\n // outside this dialog's content; outside-interact dismissal would treat\n // clicks in them as \"close settings\". Esc and the close button remain.\n closeOnInteractOutside: false,\n },\n });\n\n ctx.commands.registerCommand(\n {\n id: WORKBENCH_SETTINGS_OPEN_COMMAND_ID,\n label: \"Open settings\",\n category: \"Settings\",\n icon: standardResourceIcons.settings,\n },\n {\n execute: (args) => openSettings({ args, ctx, hasProjectScope }),\n },\n );\n\n // Keep the tree in sync as contributions register or their context conditions change.\n const refreshNavigation = () => {\n if (ctx.views.getView(WORKBENCH_SETTINGS_NAV_WIDGET_ID)) {\n ctx.views.refreshView(WORKBENCH_SETTINGS_NAV_WIDGET_ID);\n }\n };\n const unsubscribeSettings = ctx.settings.store.subscribe(refreshNavigation);\n const unsubscribeContext = ctx.context.store.subscribe(refreshNavigation);\n return {\n dispose() {\n unsubscribeSettings();\n unsubscribeContext();\n },\n };\n },\n };\n};\n","import { Box, HStack, IconButton, Menu, Portal, Text } from \"@chakra-ui/react\";\nimport { AttachedMenu, Header, PANEL_HEADER_CONTROL_SIZE, ResizableSplitLayout, Tooltip } from \"@pstdio/ui\";\nimport type { ReactNode } from \"react\";\nimport { useRef } from \"react\";\nimport type { WorkbenchCore, WorkbenchPanelRegion } from \"../../core\";\nimport { WorkbenchRegion } from \"../region/region\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { workbenchBackgrounds } from \"../theme/workbench-theme-background\";\nimport { PANEL_CONTENT_MIN_SIZE_PX, PANEL_MENU_RESIZE_HANDLE_SIZE_PX } from \"./panel-menu-sizing\";\n\nimport { useWorkbenchPanelMenus, type WorkbenchPanelMenuView } from \"./use-panel-menu\";\n\nconst WorkbenchPanelMenu = (props: { workbench: WorkbenchCore; view: WorkbenchPanelMenuView }) => {\n const { view, workbench } = props;\n const panel = view.region.split(\"-\")[0] as WorkbenchPanelRegion;\n const background = panel === \"side\" ? workbenchBackgrounds.widget : workbenchBackgrounds.panel;\n\n return (\n <AttachedMenu\n data-workbench-panel-menu={`${panel}-${view.side}`}\n data-workbench-region={view.region}\n bg={background}\n >\n <WorkbenchRegion workbench={workbench} region={view.region} title={view.label} transparent />\n </AttachedMenu>\n );\n};\n\ninterface PanelMenuLayoutInput {\n content: ReactNode;\n view: WorkbenchPanelMenuView;\n workbench: WorkbenchCore;\n contentMinSizePx?: number;\n}\n\nconst addPanelMenu = (input: PanelMenuLayoutInput) => {\n const { content, view, workbench, contentMinSizePx = PANEL_CONTENT_MIN_SIZE_PX } = input;\n\n return (\n <ResizableSplitLayout\n minH=\"0\"\n minW=\"0\"\n resizableSide={view.side}\n resizablePanel={<WorkbenchPanelMenu workbench={workbench} view={view} />}\n contentPanel={content}\n collapsed={!view.has || view.collapsed}\n collapsible={view.collapsible}\n defaultSizePx={view.size.defaultPx}\n minSizePx={view.size.minPx}\n maxSizePx={view.size.maxPx}\n contentMinSizePx={contentMinSizePx}\n resizeLabel={`Resize ${view.label}`}\n separator=\"line\"\n onSizeChange={(width) => workbench.layout.setRegionSize(view.region, width)}\n onCollapsedChange={view.onCollapsedChange}\n />\n );\n};\n\nexport const WorkbenchPanelMenuLayout = (props: {\n workbench: WorkbenchCore;\n panel: WorkbenchPanelRegion;\n children: ReactNode;\n}) => {\n const { children, panel, workbench } = props;\n const [left, right] = useWorkbenchPanelMenus(workbench, panel);\n const withRight = addPanelMenu({ content: children, view: right, workbench });\n const contentMinSizePx =\n PANEL_CONTENT_MIN_SIZE_PX +\n (right.has && !right.collapsed ? right.size.minPx + PANEL_MENU_RESIZE_HANDLE_SIZE_PX : 0);\n return addPanelMenu({ content: withRight, view: left, workbench, contentMinSizePx });\n};\n\ninterface WorkbenchPanelMenuOpenerProps {\n view: WorkbenchPanelMenuView;\n workbench: WorkbenchCore;\n canAttach: boolean;\n}\n\nconst WorkbenchPanelMenuOpener = (props: WorkbenchPanelMenuOpenerProps) => {\n const { canAttach, view, workbench } = props;\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n const trigger = (\n <IconButton\n ref={triggerRef}\n variant=\"ghost\"\n size={PANEL_HEADER_CONTROL_SIZE}\n aria-label={`Open ${view.label}`}\n flexShrink={0}\n onClick={canAttach ? view.onOpen : undefined}\n >\n <WorkbenchIcon name={view.side === \"left\" ? \"PanelLeftOpen\" : \"PanelRightOpen\"} size={14} />\n </IconButton>\n );\n\n if (canAttach) return <Tooltip content={view.title}>{trigger}</Tooltip>;\n\n // A floating menu is a temporary view. It keeps the stored open preference so that dismissing it\n // does not close the menu for wider panels, and opening it does not move another menu out.\n return (\n <Menu.Root\n variant=\"panel\"\n positioning={{\n placement: view.side === \"left\" ? \"bottom-start\" : \"bottom-end\",\n offset: { mainAxis: 0 },\n flip: false,\n fitViewport: true,\n getAnchorElement: () => triggerRef.current,\n }}\n onExitComplete={() => triggerRef.current?.focus()}\n >\n <Tooltip content={view.title}>\n <Menu.Trigger asChild>{trigger}</Menu.Trigger>\n </Tooltip>\n <Portal>\n <Menu.Positioner>\n <Menu.Content aria-label={`${view.label} controls`} data-workbench-panel-menu-controls={view.region}>\n <Header variant=\"narrow\" borderBottomWidth=\"1px\" borderColor=\"border.subtle\" flexShrink={0} gap=\"xs\">\n <WorkbenchIcon name={view.icon} size={14} />\n <Text flex=\"1\" minW=\"0\" textStyle=\"label/S/medium\" truncate>\n {view.title}\n </Text>\n </Header>\n <Box flex=\"1\" minH=\"0\" minW=\"0\" overflowY=\"auto\">\n <WorkbenchRegion workbench={workbench} region={view.region} title={view.label} transparent />\n </Box>\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n\nexport const WorkbenchPanelMenuOpeners = (props: { workbench: WorkbenchCore; panel: WorkbenchPanelRegion }) => {\n const { panel, workbench } = props;\n const [left, right] = useWorkbenchPanelMenus(workbench, panel);\n const closedMenus = [left, right].filter((view) => view.has && view.collapsed);\n\n if (closedMenus.length === 0) return null;\n\n return (\n <HStack flexShrink={0} gap=\"2xs\" minW=\"0\">\n {closedMenus.map((view) => (\n <WorkbenchPanelMenuOpener key={view.region} view={view} workbench={workbench} canAttach={view.canAttach} />\n ))}\n </HStack>\n );\n};\n","import { useShallow } from \"zustand/react/shallow\";\nimport type { WorkbenchCore, WorkbenchRegion } from \"../../core\";\nimport { useWorkbenchStore } from \"./use-workbench-store\";\n\n// Read mode policy through its store so the React compiler sees policy changes.\nexport const useWorkbenchModeRegionSettings = (workbench: WorkbenchCore, region: WorkbenchRegion) =>\n useWorkbenchStore(\n workbench.modes.store,\n useShallow(() => workbench.layout.getRegionSettings(region)),\n );\n","import { Box, Flex, IconButton, Text } from \"@chakra-ui/react\";\nimport { AttachedPanel, BubbleButton, BubblePanel, Header, PANEL_HEADER_CONTROL_SIZE, Tooltip } from \"@pstdio/ui\";\nimport { MessageCircle, Minimize2 } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { WorkbenchFocusRegion } from \"../focus/focus-region\";\nimport { WorkbenchPanelMenuLayout, WorkbenchPanelMenuOpeners } from \"../panel-menu/panel-menu\";\nimport { useWorkbenchRegionTabsVisible } from \"../region/region-tabs\";\nimport { WorkbenchTabDropTarget } from \"../region/tab-drag-context\";\nimport { useWorkbenchModeRegionSettings } from \"../shared/use-workbench-mode-region-settings\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { workbenchBackgrounds } from \"../theme/workbench-theme-background\";\n\ninterface WorkbenchSidePanelProps {\n workbench: WorkbenchCore;\n contentSlotRef: (node: HTMLDivElement | null) => void;\n bottomOffset?: string;\n header?: ReactNode;\n bubbleIcon?: ReactNode;\n onOpen?: () => void;\n}\n\nconst floatingPanelBottom = (bottomOffset: string | undefined) =>\n bottomOffset ? `calc(${bottomOffset} + 0.75rem)` : \"3\";\n\nconst launcherBottom = (bottomOffset: string | undefined) => (bottomOffset ? `calc(${bottomOffset} + 1.5rem)` : \"6\");\n\nconst WorkbenchSidePanelTitle = () => (\n <Box flex=\"1\" minW=\"0\">\n <Text textStyle=\"label/S/medium\" color=\"fg\" truncate>\n Side Panel\n </Text>\n </Box>\n);\n\ninterface WorkbenchSidePanelHeaderProps {\n header?: ReactNode;\n}\n\nconst WorkbenchSidePanelHeader = (props: WorkbenchSidePanelHeaderProps) => {\n const { header } = props;\n\n return header ?? <WorkbenchSidePanelTitle />;\n};\n\nexport const WorkbenchAttachedSidePanel = (props: WorkbenchSidePanelProps) => {\n const { workbench, contentSlotRef, header } = props;\n const settings = useWorkbenchModeRegionSettings(workbench, \"side\");\n const canFloat = useWorkbenchStore(workbench.modes.store, () => workbench.sidePanel.canFloat());\n const attached = useWorkbenchStore(workbench.layout.store, () => workbench.sidePanel.getMode() === \"attached\");\n const hasTabs = useWorkbenchRegionTabsVisible(workbench, \"side\");\n const showHeader = (settings?.showHeader !== false || hasTabs) && Boolean(header || canFloat);\n\n return (\n <WorkbenchFocusRegion workbench={workbench} region=\"side\" h=\"full\" minH=\"0\" minW=\"0\" w=\"full\">\n <AttachedPanel\n data-testid=\"workbench-side-panel-attached\"\n data-workbench-panel=\"side\"\n data-workbench-region=\"side\"\n width=\"full\"\n minWidth=\"0\"\n bg={workbenchBackgrounds.widget}\n layerStyle=\"panel\"\n header={\n showHeader && attached ? (\n <Header data-workbench-panel-header=\"side\" variant=\"main\" flexShrink={0} gap=\"sm\">\n <WorkbenchSidePanelHeader header={header} />\n <WorkbenchPanelMenuOpeners workbench={workbench} panel=\"side\" />\n {canFloat ? (\n <Tooltip content=\"Float Side Panel\">\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label=\"Float Side Panel\"\n onClick={() => workbench.sidePanel.setMode(\"floating\")}\n >\n <Minimize2 size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n </Header>\n ) : undefined\n }\n >\n <WorkbenchPanelMenuLayout workbench={workbench} panel=\"side\">\n <Flex position=\"relative\" flex=\"1\" minH={0} direction=\"column\">\n <Flex ref={contentSlotRef} flex=\"1\" minH={0} direction=\"column\" />\n </Flex>\n </WorkbenchPanelMenuLayout>\n <WorkbenchTabDropTarget region=\"side\" />\n </AttachedPanel>\n </WorkbenchFocusRegion>\n );\n};\n\ninterface WorkbenchFloatingSidePanelProps extends WorkbenchSidePanelProps {\n available?: boolean;\n}\n\nexport const WorkbenchFloatingSidePanel = (props: WorkbenchFloatingSidePanelProps) => {\n const { workbench, contentSlotRef, bottomOffset, header, bubbleIcon, onOpen, available = true } = props;\n const mode = useWorkbenchStore(workbench.layout.store, () => workbench.sidePanel.getMode());\n const canFloat = useWorkbenchStore(workbench.modes.store, () => workbench.sidePanel.canFloat());\n const visible = available && canFloat && mode === \"floating\";\n\n return (\n <>\n {available && canFloat && mode !== \"attached\" ? (\n <BubbleButton\n isOpen={visible}\n aria-label=\"Open Side Panel\"\n containerProps={{ bottom: launcherBottom(bottomOffset) }}\n tooltip=\"Open Side Panel\"\n onClick={onOpen ?? (() => workbench.sidePanel.setMode(\"floating\"))}\n >\n {bubbleIcon ?? <MessageCircle size={20} strokeWidth={2} />}\n </BubbleButton>\n ) : null}\n {/* Both presentation slots stay connected so hiding cannot release a live iframe. */}\n <BubblePanel\n isOpen={visible}\n aria-label=\"Side Panel\"\n testId=\"workbench-side-panel-floating\"\n closeLabel=\"Close Side Panel\"\n containerProps={{\n \"data-workbench-panel\": \"side\",\n bottom: floatingPanelBottom(bottomOffset),\n bg: workbenchBackgrounds.widget,\n }}\n popOutLabel=\"Reattach Side Panel\"\n onClose={() => workbench.sidePanel.setMode(\"closed\")}\n onPopOut={() => workbench.sidePanel.setMode(\"attached\")}\n menu={visible ? <WorkbenchSidePanelHeader header={header} /> : undefined}\n overlay={<WorkbenchTabDropTarget region=\"side\" />}\n >\n <Flex ref={contentSlotRef} flex=\"1\" minH={0} direction=\"column\" />\n </BubblePanel>\n </>\n );\n};\n","import type { TagEditorValue } from \"@pstdio/ui\";\nimport type { WorkflowStatus } from \"../../core\";\n\nexport const toStatusEditorValue = (status: WorkflowStatus): TagEditorValue => ({\n id: status.id,\n name: status.label,\n color: status.color,\n icon: status.icon,\n sortOrder: status.sortOrder,\n isDefault: status.isDefault,\n actions: [...(status.actions ?? [])],\n});\n\nconst sameActions = (left: readonly string[] | undefined, right: readonly string[] | undefined) =>\n [...(left ?? [])].sort().join(\"|\") === [...(right ?? [])].sort().join(\"|\");\n\nexport const statusNeedsUpdate = (original: WorkflowStatus, draft: TagEditorValue) =>\n original.label !== draft.name ||\n original.color !== draft.color ||\n original.icon !== draft.icon ||\n original.isDefault !== draft.isDefault ||\n !sameActions(original.actions, draft.actions);\n\nexport const toWorkflowStatus = (draft: TagEditorValue): WorkflowStatus => ({\n id: draft.id,\n label: draft.name,\n color: draft.color,\n icon: draft.icon,\n sortOrder: draft.sortOrder,\n isDefault: draft.isDefault,\n actions: [...(draft.actions ?? [])],\n});\n","import { Stack } from \"@chakra-ui/react\";\nimport { type SaveTagSettingsInput, TagSettingsPanel } from \"@pstdio/ui\";\nimport { useEffect, useState } from \"react\";\nimport type { RegisteredWorkbenchStatusSet, WorkbenchStatusRegistry, WorkflowStatus } from \"../../core\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { statusNeedsUpdate, toStatusEditorValue, toWorkflowStatus } from \"./workflow-status-settings-model\";\n\ninterface WorkflowStatusSectionProps {\n statusSet: RegisteredWorkbenchStatusSet;\n workbench: { statuses: WorkbenchStatusRegistry };\n}\n\nconst WorkflowStatusSection = (props: WorkflowStatusSectionProps) => {\n const { statusSet, workbench } = props;\n const [statuses, setStatuses] = useState<WorkflowStatus[] | undefined>(() => {\n const cached = workbench.statuses.getStatuses(statusSet.id);\n return cached ? [...cached] : undefined;\n });\n const [loadError, setLoadError] = useState<unknown>();\n\n useEffect(() => {\n let current = true;\n const cached = workbench.statuses.getStatuses(statusSet.id);\n setStatuses(cached ? [...cached] : undefined);\n setLoadError(undefined);\n void workbench.statuses.load(statusSet.id).then(\n (value) => {\n if (current) setStatuses([...value]);\n },\n (error) => {\n if (current) setLoadError(error);\n },\n );\n return () => {\n current = false;\n };\n }, [statusSet.id, workbench]);\n\n const save = async (input: SaveTagSettingsInput<WorkflowStatus>) => {\n const next = input.drafts.map(toWorkflowStatus);\n setStatuses([...(await workbench.statuses.save(statusSet.id, next))]);\n };\n\n return (\n <TagSettingsPanel\n values={statuses}\n loadError={loadError}\n onSave={save}\n toEditorValue={toStatusEditorValue}\n valueNeedsUpdate={statusNeedsUpdate}\n readOnly={!statusSet.save}\n title={statusSet.title}\n description={statusSet.save ? undefined : \"This status set is read-only.\"}\n actionOptions={statusSet.actions?.map((action) => ({\n value: action.id,\n label: action.label,\n icon: action.icon ? <WorkbenchIcon name={action.icon} size={13} /> : undefined,\n }))}\n actionsLabel=\"Commands\"\n framed\n showColumnHeaders\n valueColumnLabel=\"State\"\n showDefault\n errorTitle={`Unable to update ${statusSet.title}`}\n addLabel=\"Add state\"\n addName=\"New status\"\n resetLabel=\"Reset\"\n saveLabel=\"Save\"\n deleteHeadline=\"Delete status?\"\n deleteNotificationText={(status) => `This will delete the \"${status.name}\" status.`}\n deleteButtonText=\"Delete status\"\n />\n );\n};\n\ninterface WorkflowStatusSettingsProps {\n workbench: { statuses: WorkbenchStatusRegistry };\n}\n\nexport const WorkflowStatusSettings = (props: WorkflowStatusSettingsProps) => {\n const { workbench } = props;\n useWorkbenchStore(workbench.statuses.store, (state) => state.statusSets);\n const statusSets = workbench.statuses.listStatusSets();\n\n return (\n <Stack gap=\"none\" minH=\"full\" bg=\"bg\">\n {statusSets.map((statusSet) => (\n <Stack key={statusSet.id} data-testid={`workflow-status-set-${statusSet.id}`} gap=\"none\">\n <WorkflowStatusSection workbench={workbench} statusSet={statusSet} />\n </Stack>\n ))}\n </Stack>\n );\n};\n","export const terminalPlacementBindingId = (scope: string | undefined, instanceId: string) =>\n JSON.stringify([scope, instanceId]);\n","import { Box, Center, Text } from \"@chakra-ui/react\";\nimport { useThemePreference } from \"@pstdio/ui\";\nimport { Terminal, type TerminalBridge } from \"@pstdio/ui/terminal\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport type { ResourceRef, WorkbenchCore, WorkbenchPanelInstance, WorkbenchTerminalController } from \"../../core\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { terminalPlacementBindingId } from \"./terminal-placement-binding\";\n\ninterface ControllerTerminalBridgeOptions {\n getBindingId?: () => string | undefined;\n getResource?: () => ResourceRef | undefined;\n getTitle?: () => string | undefined;\n}\n\nconst workspacePathFromResource = (resource: ResourceRef | undefined) => {\n const workspacePath = resource?.metadata?.workspacePath;\n return typeof workspacePath === \"string\" && workspacePath.length > 0 ? workspacePath : undefined;\n};\n\nconst withTerminalRequestDefaults = (\n request: Parameters<TerminalBridge[\"openSession\"]>[0],\n resource: ResourceRef | undefined,\n) => {\n const cwd = workspacePathFromResource(resource);\n return cwd && !request.cwd ? { ...request, cwd } : request;\n};\n\n// Adapts the core terminal controller to the renderer-side `TerminalBridge`\n// contract. Sessions opened by the panel land in the same controller registry\n// the `terminal.session` webview capability uses, so host UI and extension\n// webviews always see one session registry.\nexport const createControllerTerminalBridge = (\n terminal: WorkbenchTerminalController,\n options: ControllerTerminalBridgeOptions = {},\n): TerminalBridge => ({\n async openSession(request) {\n const { sessionId } = await terminal.open({\n bindingId: options.getBindingId?.(),\n request: withTerminalRequestDefaults(request, options.getResource?.()),\n title: options.getTitle?.(),\n });\n return {\n id: sessionId,\n write: (data) => terminal.write({ sessionId, data }),\n resize: (cols, rows) => terminal.resize({ sessionId, cols, rows }),\n kill: (signal) => terminal.kill({ sessionId, signal }),\n onData: (handler) => terminal.subscribe(sessionId, { onData: handler }),\n onExit: (handler) => terminal.subscribe(sessionId, { onExit: handler }),\n onError: (handler) => terminal.subscribe(sessionId, { onError: handler }),\n };\n },\n});\n\ninterface WorkbenchTerminalPanelProps {\n placement: WorkbenchPanelInstance;\n workbench: WorkbenchCore;\n}\n\n/**\n * Body of the host-owned terminal panel. Chrome (tab, title, close action,\n * resize) comes from the workbench `secondary` region; this component only mounts\n * the terminal bound to the workbench terminal controller. Collapsing the panel\n * keeps the terminal mounted. Scope changes keep the session alive; the terminal\n * module ends it when its tab is explicitly closed.\n */\nexport const WorkbenchTerminalPanel = (props: WorkbenchTerminalPanelProps) => {\n const { placement, workbench } = props;\n const { themePreference } = useThemePreference();\n const placementRef = useRef(placement);\n // A layout effect runs before the terminal's passive effect opens a session,\n // so a session opened in the same commit reads the current placement.\n useLayoutEffect(() => {\n placementRef.current = placement;\n }, [placement]);\n const [bridge] = useState(() =>\n createControllerTerminalBridge(workbench.terminal, {\n getBindingId: () =>\n terminalPlacementBindingId(workbench.layout.getPersistenceScope(), placementRef.current.instanceId),\n getResource: () => placementRef.current.resource,\n getTitle: () => placementRef.current.title,\n }),\n );\n const [sessionId, setSessionId] = useState<string>();\n // The terminal resource label follows the session's foreground process name.\n const processTitle = useWorkbenchStore(workbench.terminal.store, (state) =>\n sessionId ? state.sessionsById[sessionId]?.title : undefined,\n );\n const active = useWorkbenchStore(workbench.layout.store, (state) => {\n const region = Object.values(state.layout.regions).find((region) =>\n region.widgets.some((candidate) => candidate.widgetId === placement.instanceId),\n );\n if (!region) return false;\n return (region.activeWidgetId ?? region.widgets[0]?.widgetId) === placement.instanceId;\n });\n const updateShellPlacement = workbench.shellPlacements.updatePlacement;\n\n useEffect(() => {\n if (!sessionId || !processTitle) return;\n const currentPlacement = workbench.layout.getLayout().regions;\n const current = Object.values(currentPlacement)\n .flatMap((region) => region.widgets)\n .find((candidate) => candidate.widgetId === placement.instanceId);\n const identity = current?.placementIdentity;\n if (identity?.kind === \"shell\" && current?.resource) {\n updateShellPlacement(identity, { resource: { ...current.resource, label: processTitle } });\n }\n }, [sessionId, processTitle, placement.instanceId, workbench.layout, updateShellPlacement]);\n\n if (!workbench.terminal.isAvailable()) {\n return (\n <Center h=\"full\" px=\"md\">\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n Terminal sessions are not available in this workbench host.\n </Text>\n </Center>\n );\n }\n\n return (\n <Box h=\"full\" minH=\"0\" minW=\"0\" w=\"full\">\n <Terminal\n bridge={bridge}\n theme={/dark/i.test(themePreference) ? \"dark\" : \"light\"}\n autoFocus={active}\n killOnUnmount={false}\n onSessionOpen={setSessionId}\n />\n </Box>\n );\n};\n","import {\n type ResourceRef,\n type WorkbenchCoreContributionContext,\n type WorkbenchLayout,\n type WorkbenchModuleContribution,\n workbenchPanelRegions,\n} from \"../../core\";\nimport { toPanelInstance } from \"../../core/registries/layout/panel-api\";\nimport { terminalPlacementBindingId } from \"./terminal-placement-binding\";\nimport { WorkbenchTerminalPanel } from \"./workbench-terminal-panel\";\n// The host-owned terminal panel in the workbench `secondary` (bottom) region.\n// Exported so hosts can open or assert it directly.\nexport const WORKBENCH_TERMINAL_WIDGET_ID = \"workbench.terminal\";\n// Built-in command to open (or focus) the terminal panel. Registered by the\n// surface module so it is available in the command palette without host wiring.\nexport const WORKBENCH_TERMINAL_OPEN_COMMAND_ID = \"workbench.terminal.open\";\n/** Suggested secondary-region size for hosts that mount the terminal (createWorkbench regionSettings). */\nexport const WORKBENCH_TERMINAL_PANEL_SIZE = { defaultPx: 240, minPx: 128 };\ninterface OpenWorkbenchTerminalOptions {\n resource?: ResourceRef;\n reveal?: boolean;\n}\ntype TerminalResource = OpenWorkbenchTerminalOptions[\"resource\"];\nconst terminalPlacements = (layout: WorkbenchLayout) =>\n workbenchPanelRegions\n .flatMap((region) => layout.regions[region].widgets)\n .filter((placement) => placement.viewId === WORKBENCH_TERMINAL_WIDGET_ID);\nconst terminalInstanceIds = (ctx: WorkbenchCoreContributionContext) =>\n new Set(terminalPlacements(ctx.layout.getLayout()).map((placement) => placement.widgetId));\nconst watchClosedTerminalPlacements = (ctx: WorkbenchCoreContributionContext) => {\n // A scope rotation temporarily removes every placement. Only an explicit tab\n // close should end the PTY bound to that placement.\n let changingScope = false;\n const willChangeScope = ctx.layout.onWillChangePersistenceScope(() => {\n changingScope = true;\n });\n const didChangeScope = ctx.layout.onDidChangePersistenceScope(() => {\n changingScope = false;\n });\n const unsubscribeLayout = ctx.layout.store.subscribe((state, previousState) => {\n if (changingScope) return;\n const currentIds = new Set(terminalPlacements(state.layout).map((placement) => placement.widgetId));\n const previousIds = terminalPlacements(previousState.layout).map((placement) => placement.widgetId);\n const scope = ctx.layout.getPersistenceScope();\n for (const instanceId of previousIds) {\n if (!currentIds.has(instanceId)) void ctx.terminal.killBinding(terminalPlacementBindingId(scope, instanceId));\n }\n });\n return {\n dispose() {\n unsubscribeLayout();\n willChangeScope.dispose();\n didChangeScope.dispose();\n const scope = ctx.layout.getPersistenceScope();\n for (const instanceId of terminalInstanceIds(ctx)) {\n void ctx.terminal.killBinding(terminalPlacementBindingId(scope, instanceId));\n }\n },\n };\n};\nconst terminalTitlePattern = /^Terminal (\\d+)$/;\nconst nextTerminalIndexes = new WeakMap<WorkbenchCoreContributionContext[\"layout\"][\"store\"], number>();\nconst getInitialTerminalIndex = (ctx: WorkbenchCoreContributionContext) => {\n const placements = terminalPlacements(ctx.layout.getLayout());\n const titleIndexes = placements\n .map((placement) => terminalTitlePattern.exec(placement.title ?? \"\")?.[1])\n .filter((index): index is string => index !== undefined)\n .map((index) => Number.parseInt(index, 10));\n return Math.max(placements.length, ...titleIndexes) + 1;\n};\nconst getNextTerminalTitle = (ctx: WorkbenchCoreContributionContext) => {\n const nextIndex = Math.max(nextTerminalIndexes.get(ctx.layout.store) ?? 1, getInitialTerminalIndex(ctx));\n nextTerminalIndexes.set(ctx.layout.store, nextIndex + 1);\n return `Terminal ${nextIndex}`;\n};\nconst hasWorkspacePath = (resource: TerminalResource) =>\n typeof resource?.metadata?.workspacePath === \"string\" && resource.metadata.workspacePath.length > 0;\nconst getTerminalResource = (ctx: WorkbenchCoreContributionContext, resource: TerminalResource) => {\n const activeResource = ctx.getActiveResource();\n const primaryResource = ctx.getPrimaryResource();\n return (\n (hasWorkspacePath(resource) ? resource : undefined) ??\n (hasWorkspacePath(activeResource) ? activeResource : undefined) ??\n (hasWorkspacePath(primaryResource) ? primaryResource : undefined) ??\n resource ??\n primaryResource\n );\n};\n// Opens a new terminal placement, revealing the bottom region if it is collapsed.\nexport const openWorkbenchTerminal = (\n ctx: WorkbenchCoreContributionContext,\n input: OpenWorkbenchTerminalOptions = {},\n) => {\n const { reveal = true } = input;\n const workspace = getTerminalResource(ctx, input.resource);\n const title = getNextTerminalTitle(ctx);\n const index = Number.parseInt(terminalTitlePattern.exec(title)?.[1] ?? \"1\", 10);\n const id = `${String(index).padStart(8, \"0\")}-${globalThis.crypto.randomUUID()}`;\n const resource: ResourceRef = {\n type: \"terminal\",\n id,\n label: title,\n icon: \"SquareTerminal\",\n metadata: workspace?.metadata,\n };\n const identity = ctx.shellPlacements.openPlacement({\n placementId: WORKBENCH_TERMINAL_WIDGET_ID,\n resource,\n open: \"pin\",\n title,\n });\n if (identity.kind !== \"shell\") throw new Error(\"Terminal placement must be shell-owned\");\n if (reveal) {\n ctx.shell.setRegionOpen(\"secondary\", true);\n }\n const placement = ctx.layout\n .getLayout()\n .regions.secondary.widgets.find(\n (candidate) =>\n candidate.placementIdentity?.kind === \"shell\" &&\n candidate.placementIdentity.placementId === identity.placementId &&\n candidate.placementIdentity.instanceKey === identity.instanceKey,\n );\n if (!placement) throw new Error(`Terminal placement did not open: ${identity.instanceKey}`);\n return toPanelInstance(placement);\n};\n/**\n * Host-owned terminal surface: tabbed placements in the `secondary` region whose\n * chrome, focus, lifecycle, and styling belong to the workbench. Sessions are\n * owned by `workbench.terminal` (the same registry the `terminal.session`\n * webview capability uses); the host injects a session opener via\n * `workbench.terminal.setSessionOpener(...)`. Closing a tab kills its session;\n * disposing the controller kills every live session.\n */\nexport const createWorkbenchTerminalModule = (): WorkbenchModuleContribution => ({\n id: \"workbench.terminal.surface\",\n activate(ctx) {\n const disposables = [\n ctx.views.registerView({\n id: WORKBENCH_TERMINAL_WIDGET_ID,\n title: \"Terminal\",\n icon: \"SquareTerminal\",\n body: {\n kind: \"react\",\n render: (input) => <WorkbenchTerminalPanel placement={input.instance} workbench={input.workbench} />,\n },\n }),\n ctx.shellPlacements.registerPlacement({\n id: WORKBENCH_TERMINAL_WIDGET_ID,\n item: {\n kind: \"binding\",\n binding: {\n kinds: [\n {\n kind: \"resource-kind\",\n id: \"terminal\",\n },\n ],\n view: {\n kind: \"view\",\n id: WORKBENCH_TERMINAL_WIDGET_ID,\n },\n cardinality: \"many\",\n add: { kind: \"command\", target: { command: { kind: \"command\", id: WORKBENCH_TERMINAL_OPEN_COMMAND_ID } } },\n },\n },\n region: \"secondary\",\n mountStrategy: \"keep-mounted\",\n // Background flows mint terminals without user intent; a closed Secondary\n // Panel must stay closed until an explicit open reveals it.\n hiddenByDefault: true,\n }),\n watchClosedTerminalPlacements(ctx),\n ctx.commands.registerCommand(\n {\n id: WORKBENCH_TERMINAL_OPEN_COMMAND_ID,\n label: \"Open terminal\",\n category: \"Terminal\",\n icon: \"SquareTerminal\",\n },\n {\n // \"Add panel\" moves the new tab into its chosen region and reveals that region itself.\n execute: (_args, context) =>\n openWorkbenchTerminal(ctx, { resource: context?.resource, reveal: context?.source !== \"panel-add\" }),\n },\n ),\n ];\n return disposables;\n },\n});\n","import { defaultThemePreferences } from \"@pstdio/ui\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\n// The theme set a workbench offers: the built-in workbench themes plus whatever\n// is registered in `workbench.themes` (e.g. extension-contributed themes). The\n// list shrinks when a contribution is disposed, so the theme picker only ever\n// lists themes whose owner is still active.\nexport const useWorkbenchThemePreferences = (workbench: WorkbenchCore) => {\n const contributed = useWorkbenchStore(workbench.themes.store, (state) => state.themes);\n return [...defaultThemePreferences, ...contributed];\n};\n","import {\n ChakraProvider,\n type FileIconThemePreferenceOption,\n FileIconThemePreferenceProvider,\n psTheme,\n type ThemePreference,\n type ThemePreferenceOption,\n ThemePreferenceProvider,\n type ThemePreferenceStorage,\n} from \"@pstdio/ui\";\nimport { createContext, type ReactNode, useContext } from \"react\";\n\ninterface WorkbenchThemeProviderProps {\n children: ReactNode;\n initialThemePreference?: ThemePreference;\n defaultThemePreference?: ThemePreference;\n preferenceScope?: string;\n /** Where the chosen theme is saved. Defaults to browser storage. */\n themeStorage?: ThemePreferenceStorage;\n themePreferences?: readonly ThemePreferenceOption[];\n fileIconThemePreferences?: readonly FileIconThemePreferenceOption[];\n}\n\nconst WorkbenchThemeProviderContext = createContext(false);\n\nexport const WorkbenchThemeProvider = (props: WorkbenchThemeProviderProps) => {\n const { children, initialThemePreference, themePreferences, fileIconThemePreferences } = props;\n const hasWorkbenchThemeProvider = useContext(WorkbenchThemeProviderContext);\n\n if (hasWorkbenchThemeProvider) return children;\n\n return (\n <WorkbenchThemeProviderContext value>\n <ThemePreferenceProvider\n initialPreference={initialThemePreference}\n defaultPreference={props.defaultThemePreference}\n preferenceScope={props.preferenceScope}\n storage={props.themeStorage}\n themePreferences={themePreferences}\n >\n <FileIconThemePreferenceProvider themePreferences={fileIconThemePreferences}>\n <ChakraProvider value={psTheme}>{children}</ChakraProvider>\n </FileIconThemePreferenceProvider>\n </ThemePreferenceProvider>\n </WorkbenchThemeProviderContext>\n );\n};\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface WorkbenchThemeScopeProps extends Omit<BoxProps, \"children\"> {\n children: ReactNode;\n}\n\nexport const WorkbenchThemeScope = (props: WorkbenchThemeScopeProps) => {\n const { children, ...boxProps } = props;\n\n return <Box {...boxProps}>{children}</Box>;\n};\n","import { Center, CloseButton, Dialog, Portal } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { getWorkbenchRenderers, type WorkbenchCore, type WorkbenchWidgetPlacement } from \"../../core\";\nimport { toPanelContribution, toPanelInstance } from \"../../core/registries/layout/panel-api\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\nexport interface WorkbenchOverlayWidgetConfig {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"cover\" | \"full\";\n placement?: \"center\" | \"top\" | \"bottom\";\n scrollBehavior?: \"inside\" | \"outside\";\n closeOnEscape?: boolean;\n closeOnInteractOutside?: boolean;\n /** Controls dialog semantics. Every workbench overlay blocks background pointer input. */\n modal?: boolean;\n preventScroll?: boolean;\n trapFocus?: boolean;\n motionPreset?: \"scale\" | \"slide-in-bottom\" | \"slide-in-top\" | \"slide-in-left\" | \"slide-in-right\" | \"none\";\n role?: \"dialog\" | \"alertdialog\";\n contentHeight?: string;\n contentMaxHeight?: string;\n contentMinHeight?: string;\n contentWidth?: string;\n contentMaxWidth?: string;\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst stringValue = (record: Record<string, unknown>, key: string) => {\n const value = record[key];\n return typeof value === \"string\" ? value : undefined;\n};\n\nconst booleanValue = (record: Record<string, unknown>, key: string) => {\n const value = record[key];\n return typeof value === \"boolean\" ? value : undefined;\n};\n\nconst resolveOverlayConfig = (config: unknown): WorkbenchOverlayWidgetConfig => {\n if (!isRecord(config)) return {};\n\n const overlayConfig: WorkbenchOverlayWidgetConfig = {};\n const size = stringValue(config, \"size\");\n const placement = stringValue(config, \"placement\");\n const scrollBehavior = stringValue(config, \"scrollBehavior\");\n const closeOnEscape = booleanValue(config, \"closeOnEscape\");\n const closeOnInteractOutside = booleanValue(config, \"closeOnInteractOutside\");\n const modal = booleanValue(config, \"modal\");\n const preventScroll = booleanValue(config, \"preventScroll\");\n const trapFocus = booleanValue(config, \"trapFocus\");\n const motionPreset = stringValue(config, \"motionPreset\");\n const role = stringValue(config, \"role\");\n const contentHeight = stringValue(config, \"contentHeight\");\n const contentMaxHeight = stringValue(config, \"contentMaxHeight\");\n const contentMinHeight = stringValue(config, \"contentMinHeight\");\n const contentWidth = stringValue(config, \"contentWidth\");\n const contentMaxWidth = stringValue(config, \"contentMaxWidth\");\n\n if (size) overlayConfig.size = size as WorkbenchOverlayWidgetConfig[\"size\"];\n if (placement) overlayConfig.placement = placement as WorkbenchOverlayWidgetConfig[\"placement\"];\n if (scrollBehavior) overlayConfig.scrollBehavior = scrollBehavior as WorkbenchOverlayWidgetConfig[\"scrollBehavior\"];\n if (closeOnEscape !== undefined) overlayConfig.closeOnEscape = closeOnEscape;\n if (closeOnInteractOutside !== undefined) overlayConfig.closeOnInteractOutside = closeOnInteractOutside;\n if (modal !== undefined) overlayConfig.modal = modal;\n if (preventScroll !== undefined) overlayConfig.preventScroll = preventScroll;\n if (trapFocus !== undefined) overlayConfig.trapFocus = trapFocus;\n if (motionPreset) overlayConfig.motionPreset = motionPreset as WorkbenchOverlayWidgetConfig[\"motionPreset\"];\n if (role) overlayConfig.role = role as WorkbenchOverlayWidgetConfig[\"role\"];\n if (contentHeight) overlayConfig.contentHeight = contentHeight;\n if (contentMaxHeight) overlayConfig.contentMaxHeight = contentMaxHeight;\n if (contentMinHeight) overlayConfig.contentMinHeight = contentMinHeight;\n if (contentWidth) overlayConfig.contentWidth = contentWidth;\n if (contentMaxWidth) overlayConfig.contentMaxWidth = contentMaxWidth;\n return overlayConfig;\n};\n\nexport const resolveOverlayDialogConfig = (placement: Pick<WorkbenchWidgetPlacement, \"closable\">, config: unknown) => {\n const closeable = placement.closable === true;\n const overlayConfig = resolveOverlayConfig(config);\n\n return {\n size: \"xl\",\n scrollBehavior: \"inside\",\n modal: true,\n preventScroll: true,\n trapFocus: true,\n ...overlayConfig,\n closeOnEscape: closeable && (overlayConfig.closeOnEscape ?? true),\n closeOnInteractOutside: closeable && (overlayConfig.closeOnInteractOutside ?? true),\n } satisfies WorkbenchOverlayWidgetConfig;\n};\n\nconst resolveActivePlacement = (widgets: WorkbenchWidgetPlacement[], activeWidgetId?: string) =>\n widgets.find((entry) => entry.widgetId === activeWidgetId) ?? widgets[0];\n\nexport const resolveOverlayDialogRenderState = (\n activePlacement: WorkbenchWidgetPlacement | undefined,\n exitingPlacement: WorkbenchWidgetPlacement | undefined,\n) => {\n if (activePlacement) return { open: true, placement: activePlacement };\n if (exitingPlacement) return { open: false, placement: exitingPlacement };\n return undefined;\n};\n\nconst WorkbenchOverlayFallback = (props: { label: string }) => (\n <Center h=\"full\" w=\"full\" color=\"fg.muted\" p=\"md\" aria-label={props.label}>\n <WorkbenchIcon name=\"circle-alert\" size={20} />\n </Center>\n);\n\ninterface WorkbenchOverlayLayerProps {\n workbench: WorkbenchCore;\n}\n\nexport const WorkbenchOverlayLayer = (props: WorkbenchOverlayLayerProps) => {\n const { workbench } = props;\n const overlayRegion = useWorkbenchStore(workbench.layout.store, (state) => state.layout.regions.overlay);\n const renderers = useWorkbenchStore(getWorkbenchRenderers(workbench).store, (state) => state.renderers);\n useWorkbenchStore(getWorkbenchRenderers(workbench).store, (state) => state.refreshKeys);\n const [exitingPlacement, setExitingPlacement] = useState<WorkbenchWidgetPlacement | undefined>();\n\n const activePlacement = resolveActivePlacement(overlayRegion.widgets, overlayRegion.activeWidgetId);\n const renderState = resolveOverlayDialogRenderState(activePlacement, exitingPlacement);\n\n useEffect(() => {\n if (activePlacement) setExitingPlacement(undefined);\n }, [activePlacement]);\n\n if (!renderState) return null;\n\n const { open, placement } = renderState;\n const widget = workbench.layout.getWidget(placement.contributionId);\n const overlayConfig = resolveOverlayDialogConfig(placement, widget?.config);\n const { contentHeight, contentMaxHeight, contentMinHeight, contentWidth, contentMaxWidth, ...dialogRootConfig } =\n overlayConfig;\n const renderer = widget ? renderers[widget.rendererId] : undefined;\n const canCloseOverlay = open && placement.closable === true;\n const closeLabel = placement.title ?? widget?.title ?? \"overlay\";\n\n const body =\n widget && renderer ? (\n (renderer.render({\n workbench,\n panel: toPanelContribution(widget),\n instance: toPanelInstance(placement),\n refresh: () => undefined,\n }) as ReactNode)\n ) : (\n <WorkbenchOverlayFallback\n label={\n widget ? `No renderer registered for ${widget.rendererId}.` : \"Widget contribution is no longer registered.\"\n }\n />\n );\n\n const handleOpenChange = (details: { open: boolean }) => {\n if (!details.open && canCloseOverlay) {\n setExitingPlacement(placement);\n workbench.layout.closePanel(placement.widgetId);\n }\n };\n\n const handleExitComplete = () => {\n setExitingPlacement((current) => (current?.widgetId === placement.widgetId ? undefined : current));\n };\n\n // Nested overlays (confirmation dialogs, popovers, menus) portal outside this\n // dialog's content, so their clicks register as outside interactions here. If\n // the interaction landed inside any overlay content, it cannot mean \"dismiss\n // the settings dialog\" — the widget's own content never reaches this handler.\n const handleInteractOutside = (event: CustomEvent<{ originalEvent?: Event }>) => {\n const target = event.detail.originalEvent?.target;\n if (target instanceof Element && target.closest('[data-part=\"content\"]')) {\n event.preventDefault();\n }\n };\n\n return (\n <Dialog.Root\n {...dialogRootConfig}\n open={open}\n onExitComplete={handleExitComplete}\n onOpenChange={handleOpenChange}\n onInteractOutside={handleInteractOutside}\n >\n <Portal>\n <Dialog.Backdrop position=\"fixed\" inset=\"0\" pointerEvents=\"auto\" />\n <Dialog.Positioner\n position=\"fixed\"\n inset=\"0\"\n overflow={dialogRootConfig.scrollBehavior === \"outside\" ? \"auto\" : \"hidden\"}\n pointerEvents=\"auto\"\n >\n <Dialog.Content\n position=\"relative\"\n overflow=\"hidden\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n h={contentHeight}\n maxH={contentMaxHeight}\n minH={contentMinHeight}\n w={contentWidth}\n maxW={contentMaxWidth}\n >\n {body}\n {canCloseOverlay ? (\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" aria-label={`Close ${closeLabel}`} />\n </Dialog.CloseTrigger>\n ) : null}\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n );\n};\n","import { IconButton } from \"@chakra-ui/react\";\nimport { ResourceActionMenu } from \"@pstdio/ui\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { resolvePageActivePlacement } from \"../../core/registries/pages/page-active-placement\";\nimport { resolveResourcePreview } from \"../../core/registries/resources/resource-preview\";\nimport { createWorkbenchLocationActions, useWorkbenchResourceActionResolver } from \"../menus/resource-actions\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { placementMenuActions } from \"../shared/placement-menu-actions\";\nimport { usePlacementTab } from \"../shared/use-placement-tab\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nexport const WorkbenchBreadcrumbActions = (props: { workbench: WorkbenchCore }) => {\n const { workbench } = props;\n const items = useWorkbenchStore(workbench.breadcrumbs.store, (state) => state.items) ?? [];\n const changes = useWorkbenchStore(workbench.resources.preview.store, (state) => state.changes);\n const page = useWorkbenchStore(workbench.pages.store, (state) =>\n state.activePageId ? state.pages[state.activePageId] : undefined,\n );\n const placement = useWorkbenchStore(workbench.layout.store, (state) =>\n resolvePageActivePlacement(state.layout, page),\n );\n const snapshot = usePlacementTab(placement, workbench);\n const resolveActions = useWorkbenchResourceActionResolver(workbench);\n const contributed = placementMenuActions(workbench, snapshot);\n const subject = contributed.length ? placement?.resource : (items.at(-1)?.resource ?? placement?.resource);\n const resource = subject ? resolveResourcePreview(subject, changes) : undefined;\n const resolved = resource ? resolveActions(resource) : [];\n const commandIds = new Set(resolved.map((action) => action.commandId));\n const keys = new Set(resolved.map((action) => action.key));\n const resourceActions = [\n ...resolved,\n ...contributed.filter(\n (action) => !keys.has(action.key) && (!action.commandId || !commandIds.has(action.commandId)),\n ),\n ];\n const [firstLocationAction, ...locationActions] = createWorkbenchLocationActions(workbench, resource);\n const actions = firstLocationAction\n ? [...resourceActions, { ...firstLocationAction, separatorBefore: resourceActions.length > 0 }, ...locationActions]\n : resourceActions;\n if (items.length === 0 || actions.length === 0) return null;\n const resourceLabel =\n (contributed.length ? snapshot.label : undefined) ?? resource?.label ?? resource?.id ?? resource?.type;\n const label = resource ? `Actions for ${resourceLabel}` : \"Page actions\";\n return (\n <ResourceActionMenu actions={actions} positioning={{ placement: \"bottom-start\" }}>\n <IconButton size=\"xs\" variant=\"ghost\" aria-label={label} data-workbench-breadcrumb-resource-actions=\"\">\n <WorkbenchIcon name=\"ChevronDown\" size={14} />\n </IconButton>\n </ResourceActionMenu>\n );\n};\n","import { Box, HStack, IconButton } from \"@chakra-ui/react\";\nimport { Header, PANEL_HEADER_CONTROL_SIZE, Tooltip } from \"@pstdio/ui\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { workbenchTopHeaderLeadingMenuPath, workbenchTopHeaderTrailingMenuPath } from \"../../core\";\nimport { WorkbenchBreadcrumbView } from \"../breadcrumb/breadcrumb-view\";\nimport { useModeChrome } from \"../region/mode-chrome\";\nimport { WorkbenchRegion } from \"../region/region\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { workbenchBackgrounds } from \"../theme/workbench-theme-background\";\nimport { WorkbenchHeaderActions } from \"./header-actions\";\nimport { WorkbenchBreadcrumbActions } from \"./resource-actions\";\n\nexport interface WorkbenchNavRegionControl {\n id: \"sidenav\" | \"secondary\" | \"side\";\n label: string;\n icon: \"PanelLeft\" | \"PanelBottom\" | \"PanelRight\";\n open: boolean;\n onToggle: () => void;\n}\n\ninterface WorkbenchNavChromeProps {\n workbench: WorkbenchCore;\n hasNav: boolean;\n regionControls: WorkbenchNavRegionControl[];\n}\n\nconst WorkbenchRegionControl = (props: { control: WorkbenchNavRegionControl }) => {\n const { control } = props;\n\n return (\n <Tooltip content={control.label}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={control.label}\n aria-pressed={control.open}\n onClick={control.onToggle}\n >\n <WorkbenchIcon name={control.icon} size={14} />\n </IconButton>\n </Tooltip>\n );\n};\n\ninterface WorkbenchNavigationControlsProps {\n workbench: WorkbenchCore;\n regionControls: WorkbenchNavRegionControl[];\n}\n\nconst WorkbenchNavigationControls = (props: WorkbenchNavigationControlsProps) => {\n const { workbench, regionControls } = props;\n const history = useWorkbenchStore(workbench.pageLocations.historyStore, (state) => state);\n\n return (\n <HStack gap=\"2xs\" flexShrink={0}>\n {regionControls.map((control) => (\n <WorkbenchRegionControl key={control.id} control={control} />\n ))}\n <Tooltip content=\"Navigate back\">\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Navigate back\"\n disabled={!history.canGoBack}\n onClick={() => workbench.pageLocations.goBack()}\n >\n <WorkbenchIcon name=\"ArrowLeft\" size={14} />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Navigate forward\">\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Navigate forward\"\n disabled={!history.canGoForward}\n onClick={() => workbench.pageLocations.goForward()}\n >\n <WorkbenchIcon name=\"ArrowRight\" size={14} />\n </IconButton>\n </Tooltip>\n </HStack>\n );\n};\n\nconst WorkbenchRegionControls = (props: { controls: WorkbenchNavRegionControl[] }) => {\n const { controls } = props;\n\n return (\n <HStack gap=\"2xs\" flexShrink={0}>\n {controls.map((control) => (\n <WorkbenchRegionControl key={control.id} control={control} />\n ))}\n </HStack>\n );\n};\n\nexport const WorkbenchNavChrome = (props: WorkbenchNavChromeProps) => {\n const { workbench, hasNav, regionControls } = props;\n const chrome = useModeChrome(workbench, \"nav\");\n const sidenavControls = regionControls.filter((control) => control.id === \"sidenav\");\n const trailingRegionControls = regionControls.filter((control) => control.id !== \"sidenav\");\n\n return (\n <Header\n data-workbench-region=\"nav\"\n display={chrome === false ? \"none\" : \"flex\"}\n variant=\"main\"\n padding={chrome ? \"0\" : undefined}\n bg={workbenchBackgrounds.main}\n position=\"relative\"\n flexShrink={0}\n gap=\"xs\"\n overflow=\"hidden\"\n overflowY=\"hidden\"\n >\n <Box display={chrome ? \"none\" : \"contents\"}>\n <WorkbenchHeaderActions workbench={workbench} menuPath={workbenchTopHeaderLeadingMenuPath} />\n <WorkbenchNavigationControls workbench={workbench} regionControls={sidenavControls} />\n </Box>\n <Box\n display={hasNav ? \"block\" : \"none\"}\n flex={chrome ? \"1\" : undefined}\n h=\"full\"\n minW=\"0\"\n maxW={chrome ? undefined : \"60%\"}\n overflow=\"hidden\"\n >\n <WorkbenchRegion workbench={workbench} region=\"nav\" title=\"Nav Chrome\" />\n </Box>\n <Box display={chrome ? \"none\" : \"contents\"}>\n {!hasNav ? (\n <Box h=\"full\" minW=\"0\" maxW=\"60%\" overflow=\"hidden\">\n <WorkbenchBreadcrumbView workbench={workbench} />\n </Box>\n ) : null}\n <HStack\n data-workbench-breadcrumb-action-slot=\"\"\n flexShrink={0}\n gap=\"2xs\"\n h=\"6\"\n justifyContent=\"center\"\n minW=\"6\"\n >\n <WorkbenchBreadcrumbActions workbench={workbench} />\n </HStack>\n <Box flex=\"1\" minW=\"0\" />\n <WorkbenchHeaderActions workbench={workbench} menuPath={workbenchTopHeaderTrailingMenuPath} />\n </Box>\n <WorkbenchRegionControls controls={chrome ? regionControls : trailingRegionControls} />\n </Header>\n );\n};\n","import { z } from \"zod\";\n\nexport const activityResourceTypeSchema = z.string();\nexport const activityActorTypeSchema = z.enum([\"user\", \"agent\", \"system\"]);\nexport const activitySourceSchema = z.enum([\"ui\", \"api\", \"hook\", \"system\", \"agent\"]);\n\nexport const activityEventSchema = z.object({\n id: z.string(),\n project_id: z.string(),\n resource_type: activityResourceTypeSchema,\n resource_id: z.string(),\n source_extension_id: z.string().nullable(),\n event_type: z.string(),\n actor_type: activityActorTypeSchema,\n actor_id: z.string().nullable(),\n source: activitySourceSchema,\n summary: z.string(),\n payload_json: z.record(z.string(), z.unknown()),\n created_at: z.string(),\n});\n\nexport const listActivityInputSchema = z.object({\n event_type: z.string().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n cursor: z.string().optional(),\n limit: z.coerce.number().int().optional(),\n});\n\nexport const listProjectActivityInputSchema = listActivityInputSchema.extend({\n resource_type: activityResourceTypeSchema.optional(),\n});\n\nexport const listActivityResponseSchema = z.object({\n events: z.array(activityEventSchema),\n next_cursor: z.string().nullable(),\n});\n\nexport type ActivityResourceType = string;\nexport type ActivityActorType = z.infer<typeof activityActorTypeSchema>;\nexport type ActivitySource = z.infer<typeof activitySourceSchema>;\nexport type ActivityEvent = z.infer<typeof activityEventSchema>;\nexport type ListActivityInput = z.infer<typeof listActivityInputSchema>;\nexport type ListProjectActivityInput = z.infer<typeof listProjectActivityInputSchema>;\nexport type ListActivityResponse = z.infer<typeof listActivityResponseSchema>;\n","// Transport-neutral harness contract: the host injects an event sink (and, for\n// providers with the Approvals capability, an approval channel) and consumes a\n// neutral HarnessSession handle. Providers never control persistence or status;\n// they emit JSON patches and settle `done`.\n\nimport type { WorkspaceExecutionTarget } from \"./extension-kernel/types/extension\";\nimport type { SessionMessage } from \"./session-messages\";\n\nexport type JsonPatch = {\n op: \"add\" | \"replace\" | \"remove\";\n path: string;\n value?: unknown;\n};\n\nexport type EventStore = {\n push(patch: JsonPatch): void;\n getHistory(): JsonPatch[];\n subscribe(): AsyncIterable<JsonPatch>;\n historyPlusStream(): AsyncIterable<JsonPatch>;\n snapshotAndSubscribe(): { history: JsonPatch[]; stream: AsyncIterable<JsonPatch> };\n};\n\n/** Features a harness opts into. `Attachments` means the harness accepts `attachments` on start, resume and steering. */\nexport const AGENT_CAPABILITIES = [\n \"SessionFork\",\n \"ContextUsage\",\n \"Approvals\",\n \"SessionReattach\",\n \"Attachments\",\n] as const;\n\nexport type AgentCapability = (typeof AGENT_CAPABILITIES)[number];\n\nexport type QuestionResponse = {\n /**\n * One list of chosen labels per question, in the order the questions were asked. A label the\n * agent did not offer is the person's own typed answer, so a harness that validates answers\n * against its offered options has to add it to them before replying.\n *\n * An empty list means the person skipped the question rather than answering it. An answered\n * form always carries one entry per question, so the two can never be confused.\n */\n answers: string[][];\n /** Shared question tool call being answered, when the caller has its identity. */\n callId?: string;\n};\n\n/** A stale or declined answer. Other harness failures remain server errors. */\nexport type HarnessQuestionReplyError = Error & { readonly questionRejected: true };\n\nexport type HarnessQuestionOption = {\n label: string;\n description?: string;\n};\n\nexport type HarnessQuestion = {\n question: string;\n options?: HarnessQuestionOption[];\n /** The person may pick more than one option. */\n multiple?: boolean;\n};\n\nexport type HarnessQuestionRequest = {\n id: string;\n toolUseId: string;\n questions: HarnessQuestion[];\n};\n\n/**\n * Host channel a harness uses to ask the person something. The host sets the session to\n * `awaiting_input` while an ask is open, and resolves the ask with the answer. An ask has no\n * timeout; it rejects when the session ends.\n */\nexport type HarnessQuestionChannel = {\n ask(request: HarnessQuestionRequest): Promise<QuestionResponse>;\n};\n\n/** Host side of the question channel. Plain text answers all open asks; a call ID selects its tool use. */\nexport type QuestionService = HarnessQuestionChannel & {\n answer(response: QuestionResponse | string): boolean;\n hasPending(callId?: string): boolean;\n dispose(): void;\n};\n\nexport type ApprovalRequest = {\n id: string;\n toolName: string;\n toolInput: unknown;\n toolUseId: string;\n};\n\nexport type ApprovalResponse = {\n id: string;\n decision: \"approve\" | \"deny\" | \"timeout\";\n};\n\nexport type ApprovalService = {\n requestApproval(request: ApprovalRequest): Promise<ApprovalResponse>;\n handleResponse(response: ApprovalResponse): void;\n dispose(): void;\n};\n\n/** \"activity\": the host kills the session when no events arrive for a while; \"provider\": the provider self-terminates. */\nexport type TimeoutStrategy = \"activity\" | \"provider\";\n\nexport type HarnessEventSink = {\n push(patch: JsonPatch): void;\n getMessages(): readonly SessionMessage[];\n};\n\nexport type HarnessAttachment = {\n fileId: string;\n fileName: string;\n mimeType: string | null;\n sizeBytes: number;\n localPath: string;\n url: string;\n};\n\nexport type HarnessApprovalChannel = {\n requestApproval(request: ApprovalRequest): Promise<ApprovalResponse>;\n};\n\nexport type HarnessParamValue = string | boolean;\nexport type HarnessParams = Record<string, HarnessParamValue>;\n\nexport type HarnessWorkspaceContext = {\n workspaceId: string;\n executionTarget: WorkspaceExecutionTarget;\n};\n\nexport type HarnessExitStatus = \"completed\" | \"failed\" | \"cancelled\" | \"disconnected\";\n\nexport type HarnessExit = {\n status: HarnessExitStatus;\n};\n\nexport type HarnessSession = {\n /** Provider-side session id, used to resume/reattach later. */\n agentSessionId?: string;\n /** Settles exactly once; the host keys status transitions and persistence off it. */\n done: Promise<HarnessExit>;\n /** Called by the host on cancel or on its own activity timeout. */\n stop(): void | Promise<void>;\n /** Replies in place. Reject invalid answers with HarnessQuestionReplyError. */\n replyQuestion?(response: QuestionResponse): Promise<void>;\n /** Accept live input without starting a new run. Emit one user message with deliveryId before returning accepted. Native history must preserve that identity for recovery. A thrown transport error is uncertain, never a definite rejection. */\n steer?(input: HarnessSteeringInput): Promise<HarnessSteeringResult>;\n timeoutStrategy?: TimeoutStrategy;\n /** Observability only. */\n pid?: number;\n};\n\nexport type HarnessStartInput = {\n prompt: string;\n /** Host session id (correlation / env injection). */\n sessionId: string;\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n model?: string | null;\n params?: HarnessParams;\n attachments?: HarnessAttachment[];\n events: HarnessEventSink;\n /** Channel for asking the person something. Present on start and on resume. */\n questions?: HarnessQuestionChannel;\n /** Aborted when the host cancels the request that started or resumed this session. */\n signal?: AbortSignal;\n};\n\nexport type HarnessResumeInput = HarnessStartInput & {\n agentSessionId: string;\n /** Index offset so resumed streams align message patches with existing history. */\n messageOffset?: number;\n questionResponse?: QuestionResponse;\n approvals?: HarnessApprovalChannel;\n};\n\nexport type HarnessReattachInput = {\n sessionId: string;\n agentSessionId: string;\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n events: HarnessEventSink;\n /** Aborted when the host stops orphan recovery, including during shutdown. */\n signal?: AbortSignal;\n};\n\nexport type HarnessMessagesInput = {\n agentSessionId: string;\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n};\n\nexport type HarnessRecoveryInput = {\n knownMessages: readonly SessionMessage[];\n nativeMessages: readonly SessionMessage[];\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n};\n\nexport type HarnessRecoveryResult =\n | { kind: \"recovered\"; messages: SessionMessage[] }\n | { kind: \"conflict\"; category: string };\n\n/** Input to the captured running owner. Its saved model and params must already match that run. */\nexport interface HarnessSteeringInput {\n deliveryId: string;\n prompt: string;\n attachments: HarnessAttachment[];\n signal?: AbortSignal;\n}\n\nexport type HarnessSteeringResult =\n | { status: \"accepted\" }\n | { status: \"rejected\"; reason: string }\n | { status: \"uncertain\"; reason: string };\n","import { z } from \"zod\";\nimport { AGENT_CAPABILITIES } from \"./harness\";\n\nexport const agentAvailabilityTypeSchema = z.enum([\"INSTALLED\", \"NOT_FOUND\"]);\n\nexport const agentSkillsLayoutSchema = z.object({\n dir: z.string(),\n global_dir: z.string(),\n});\n\n// Mirrors ParamDescriptor: labels are Localizable so a harness can ship\n// translated copy for its run params.\nconst localizableSchema = z.union([z.string(), z.object({ $l10n: z.string(), default: z.string().optional() })]);\n\nconst harnessParamBaseSchema = z.object({\n control: z.literal(\"command\").optional(),\n label: localizableSchema.optional(),\n description: localizableSchema.optional(),\n required: z.boolean().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst harnessParamOptionSchema = z.object({ label: z.string(), value: z.string(), icon: z.string().optional() });\n\nexport const harnessSelectParamSchema = harnessParamBaseSchema.extend({\n type: z.literal(\"select\"),\n defaultValue: z.string().optional(),\n options: z.array(harnessParamOptionSchema),\n});\n\nexport const harnessBooleanParamSchema = harnessParamBaseSchema.extend({\n type: z.literal(\"boolean\"),\n defaultValue: z.boolean().optional(),\n});\n\nexport const harnessParamDescriptorSchema = z.union([harnessSelectParamSchema, harnessBooleanParamSchema]);\nexport const harnessParamsSchema = z.record(z.string(), harnessParamDescriptorSchema);\n\nexport const agentInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n availability: z.object({\n type: agentAvailabilityTypeSchema,\n /** Why the harness cannot run, such as a missing or too-old CLI. */\n reason: z.string().optional(),\n }),\n /** Present when the harness declares skill directories. */\n skills: agentSkillsLayoutSchema.optional(),\n /** Present when the harness declares discrete run params. */\n params: harnessParamsSchema.optional(),\n capabilities: z.array(z.enum(AGENT_CAPABILITIES)),\n /** The harness offers a model choice. A harness without one, such as a remote machine, picks its own model. */\n supportsModels: z.boolean(),\n});\n\nexport const agentModelSchema = z.object({\n id: z.string(),\n label: z.string().optional(),\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n paramOverrides: z.record(z.string(), harnessParamDescriptorSchema.nullable()).optional(),\n});\n\nexport type AgentAvailabilityType = z.infer<typeof agentAvailabilityTypeSchema>;\nexport type AgentInfo = z.infer<typeof agentInfoSchema>;\nexport type AgentModel = z.infer<typeof agentModelSchema>;\nexport type AgentSkillsLayout = z.infer<typeof agentSkillsLayoutSchema>;\nexport type HarnessParamDescriptorInfo = z.infer<typeof harnessParamDescriptorSchema>;\nexport type HarnessParamsInfo = z.infer<typeof harnessParamsSchema>;\n\nexport { findAgentModel, resolveAgentModelParams } from \"./agent-model-params\";\n\n/** Bare provider id of a (possibly namespaced) harness id, e.g. \"pstdio.harness-claude-code.harness.claude-code\" -> \"claude-code\". */\nexport const harnessLocalId = (id: string) => id.slice(id.lastIndexOf(\".\") + 1);\n","import { z } from \"zod\";\nimport type { JsonObject } from \"../extension-kernel/types/json\";\n\nexport const jsonObjectSchema = z.record(z.string(), z.unknown());\nexport const serializableJsonObjectSchema: z.ZodType<JsonObject> = z.record(z.string(), z.json()).meta({\n type: \"object\",\n additionalProperties: true,\n});\nexport const localizedStringSchema = z.object({ $l10n: z.string(), default: z.string().optional() });\nexport const localizableStringSchema = z.union([z.string(), localizedStringSchema]);\n\nexport const extensionSettingScopeSchema = z.enum([\"global\", \"project\"]);\nexport const extensionSettingValueTypeSchema = z.enum([\"boolean\", \"number\", \"string\", \"array\", \"object\"]);\nexport const extensionSettingSourceSchema = z.enum([\"stored\", \"default\"]);\n\nexport const extensionDiagnosticSeveritySchema = z.enum([\"info\", \"warning\", \"error\"]);\n\nexport const extensionDiagnosticSchema = z.object({\n code: z.string(),\n severity: extensionDiagnosticSeveritySchema,\n message: z.string(),\n extensionId: z.string().optional(),\n commandId: z.string().optional(),\n sourcePath: z.string().optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nexport const extensionRecordSchema = z.object({\n id: z.string(),\n name: z.string(),\n displayName: z.string(),\n extensionInstanceId: z.string().optional(),\n installedExtensionId: z.string().optional(),\n installName: z.string().optional(),\n version: z.string().optional(),\n description: z.string().optional(),\n sourcePath: z.string(),\n});\n\nexport const packageAssetDescriptorSchema = z.object({\n kind: z.literal(\"package-asset\"),\n path: z.string(),\n baseUrl: z.string(),\n});\n\nexport const extensionPlacementSchema = z.enum([\"first\", \"default\", \"last\"]);\nexport const extensionSlotKindSchema = z.enum([\n \"menu\",\n \"panel\",\n \"settings\",\n \"renderer\",\n \"kanbanRenderer\",\n \"dataTableRenderer\",\n]);\n\nexport const commandSourceSchema = z.enum([\n \"cli\",\n \"dashboard\",\n \"api\",\n \"schedule\",\n \"event\",\n \"automation\",\n \"command-panel\",\n]);\n\nexport const extensionWhenExpressionSchema = z.object({\n mode: z.union([z.string(), z.array(z.string())]).optional(),\n source: z.array(commandSourceSchema).optional(),\n viewId: z.union([z.string(), z.array(z.string())]).optional(),\n resourceType: z.array(z.string()).optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nexport const extensionWebviewContributionSchema = z.object({\n entry: packageAssetDescriptorSchema,\n title: localizableStringSchema.optional(),\n /** Host capabilities the webview is allowed to invoke through the bridge. */\n capabilities: z.array(z.string()).optional(),\n});\n\nexport const workbenchExtensionWebviewSchema = extensionWebviewContributionSchema.extend({\n /** API-served URL of the bridge runtime HTML the dashboard mounts in the iframe. */\n runtimeUrl: z.string(),\n /** API-served URL of the bundled extension module the bridge runtime dynamically imports. */\n moduleUrl: z.string(),\n /** API-served URLs of CSS files the bridge runtime should inject before mounting the module. */\n styles: z.array(z.string()).optional(),\n});\n\nexport type ExtensionDiagnostic = z.infer<typeof extensionDiagnosticSchema>;\nexport type LocalizableString = z.infer<typeof localizableStringSchema>;\nexport type ExtensionRecord = z.infer<typeof extensionRecordSchema>;\n","import { z } from \"zod\";\nimport { jsonObjectSchema, localizableStringSchema, packageAssetDescriptorSchema } from \"./common\";\n\nexport const extensionThemeRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n description: localizableStringSchema.optional(),\n format: z.literal(\"vscode-color-theme\"),\n mode: z.enum([\"light\", \"dark\"]),\n source: packageAssetDescriptorSchema,\n tokens: z.record(z.string(), z.string()),\n monacoTheme: z.object({\n base: z.enum([\"vs\", \"vs-dark\"]),\n inherit: z.literal(true),\n rules: z.array(z.record(z.string(), z.unknown())),\n colors: z.record(z.string(), z.string()),\n }),\n});\n\nexport const extensionFileIconThemeRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n description: localizableStringSchema.optional(),\n format: z.literal(\"vscode-file-icon-theme\"),\n source: packageAssetDescriptorSchema,\n definitions: jsonObjectSchema,\n fileExtensions: z.record(z.string(), z.string()),\n fileNames: z.record(z.string(), z.string()),\n defaults: z.object({ file: z.string().optional(), folder: z.string().optional() }).default({}),\n fonts: z\n .array(\n z.object({\n fontFamily: z.string(),\n src: z.array(z.object({ url: z.string(), format: z.string().optional() })),\n weight: z.string().optional(),\n style: z.string().optional(),\n }),\n )\n .default([]),\n});\n\nexport const extensionTranslationRecordSchema = z.object({\n extensionId: z.string(),\n defaultLocale: z.string(),\n bundles: z.record(z.string(), z.record(z.string(), z.string())),\n});\n\nexport type ExtensionThemeRecord = z.infer<typeof extensionThemeRecordSchema>;\nexport type ExtensionFileIconThemeRecord = z.infer<typeof extensionFileIconThemeRecordSchema>;\nexport type ExtensionTranslationRecord = z.infer<typeof extensionTranslationRecordSchema>;\n","import { z } from \"zod\";\nimport { localizableStringSchema } from \"./common\";\n\nexport const extensionArtifactMountSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n relativePath: z.string(),\n fullPath: z.string(),\n label: localizableStringSchema,\n watch: z.boolean(),\n});\n\nexport type ExtensionArtifactMount = z.infer<typeof extensionArtifactMountSchema>;\n","export const workbenchMenuTargets = [\"workbench.nav.actions\", \"workbench.nav.overflow\"] as const;\n\nexport const workbenchTreeTargets = [\n \"workbench.left.tree\",\n \"workbench.main.left.tree\",\n \"workbench.main.right.tree\",\n] as const;\n\nexport const workbenchRegions = [\n \"nav\",\n \"activity\",\n \"sidenav\",\n \"main-header\",\n \"main\",\n \"secondary-header\",\n \"secondary\",\n \"side-header\",\n \"side\",\n \"status\",\n \"overlay\",\n] as const;\n\nexport const workbenchViewTargets = [\n \"workbench.main\",\n \"workbench.main.left\",\n \"workbench.main.right\",\n \"workbench.secondary\",\n] as const;\n\nexport const workbenchSettingsTargets = [\"workbench.settings\"] as const;\n\nexport const workbenchSettingsScopes = [\"project\", \"global\"] as const;\n\nexport const workbenchModeLayoutTargets = [\n \"workbench.left\",\n \"workbench.main.left\",\n \"workbench.main\",\n \"workbench.main.right\",\n \"workbench.secondary\",\n] as const;\n\nexport type WorkbenchMenuTarget = (typeof workbenchMenuTargets)[number];\nexport type WorkbenchTreeTarget = (typeof workbenchTreeTargets)[number];\nexport type WorkbenchViewTarget = (typeof workbenchViewTargets)[number];\nexport type WorkbenchSettingsTarget = (typeof workbenchSettingsTargets)[number];\n\nexport type WorkbenchAttachmentTarget =\n | WorkbenchMenuTarget\n | WorkbenchTreeTarget\n | WorkbenchViewTarget\n | WorkbenchSettingsTarget;\n","import { z } from \"zod\";\nimport {\n workbenchMenuTargets,\n workbenchModeLayoutTargets,\n workbenchRegions,\n workbenchSettingsScopes,\n workbenchSettingsTargets,\n workbenchTreeTargets,\n workbenchViewTargets,\n} from \"../extension-kernel/workbench-targets\";\n\nexport const workbenchMenuTargetSchema = z.enum(workbenchMenuTargets);\nexport const workbenchTreeTargetSchema = z.enum(workbenchTreeTargets);\nexport const workbenchRegionSchema = z.enum(workbenchRegions);\nexport const workbenchViewTargetSchema = z.enum(workbenchViewTargets);\nexport const workbenchSettingsTargetSchema = z.enum(workbenchSettingsTargets);\nexport const workbenchModeLayoutTargetSchema = z.enum(workbenchModeLayoutTargets);\nexport const workbenchAttachmentTargetSchema = z.union([\n workbenchMenuTargetSchema,\n workbenchTreeTargetSchema,\n workbenchViewTargetSchema,\n workbenchSettingsTargetSchema,\n]);\nexport const workbenchSettingsScopeSchema = z.enum(workbenchSettingsScopes);\n","import { z } from \"zod\";\nimport {\n extensionPlacementSchema,\n extensionWhenExpressionSchema,\n jsonObjectSchema,\n localizableStringSchema,\n} from \"./common\";\nimport { workbenchMenuTargetSchema } from \"./targets\";\n\nexport const extensionCommandRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n description: localizableStringSchema.optional(),\n cliPath: z.string().optional(),\n cliAliases: z.array(z.string()).optional(),\n examples: z.array(z.string()).optional(),\n automation: z.boolean().optional(),\n mutating: z.boolean().optional(),\n resourceMutation: z\n .discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"rename\"), resourceType: z.string(), idParam: z.string(), labelParam: z.string() }),\n z.object({ kind: z.literal(\"remove\"), resourceType: z.string(), idParam: z.string() }),\n ])\n .optional(),\n params: z.record(z.string(), z.object({ type: z.string() }).catchall(z.unknown())).optional(),\n});\n\nexport const extensionParamObjectSchema = z.record(z.string(), z.object({ type: z.string() }).catchall(z.unknown()));\n\nexport const extensionMiddlewareRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n commandId: z.string(),\n});\n\nexport const extensionHookRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n eventId: z.string(),\n});\n\nexport const extensionScheduleRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n cron: z.string(),\n commandId: z.string(),\n});\n\nexport const workbenchExtensionAutomationRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n extensionInstanceId: z.string().optional(),\n title: localizableStringSchema,\n cron: z.string(),\n commandId: z.string(),\n enabled: z.boolean(),\n});\n\nexport const extensionMenuContributionSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n commandId: z.string(),\n slotId: z.string(),\n target: workbenchMenuTargetSchema.optional(),\n label: localizableStringSchema,\n group: z.string().optional(),\n placement: extensionPlacementSchema.optional(),\n icon: z.string().optional(),\n presentation: z.enum([\"menu-item\", \"button\", \"icon-button\"]).optional(),\n params: jsonObjectSchema.optional(),\n when: extensionWhenExpressionSchema.optional(),\n disabledWhen: extensionWhenExpressionSchema.optional(),\n disabledReason: localizableStringSchema.optional(),\n});\n\nexport const extensionCommandPaletteContributionSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n commandId: z.string(),\n label: localizableStringSchema,\n group: z.string().optional(),\n placement: extensionPlacementSchema.optional(),\n icon: z.string().optional(),\n params: jsonObjectSchema.optional(),\n when: extensionWhenExpressionSchema.optional(),\n});\n\nexport type ExtensionCommandRecord = z.infer<typeof extensionCommandRecordSchema>;\nexport type ExtensionMiddlewareRecord = z.infer<typeof extensionMiddlewareRecordSchema>;\nexport type ExtensionHookRecord = z.infer<typeof extensionHookRecordSchema>;\nexport type ExtensionScheduleRecord = z.infer<typeof extensionScheduleRecordSchema>;\nexport type WorkbenchExtensionAutomationRecord = z.infer<typeof workbenchExtensionAutomationRecordSchema>;\nexport type ExtensionMenuContribution = z.infer<typeof extensionMenuContributionSchema>;\nexport type ExtensionCommandPaletteContribution = z.infer<typeof extensionCommandPaletteContributionSchema>;\n","import { z } from \"zod\";\nimport { extensionDiagnosticSchema } from \"./common\";\n\nexport const extensionHostCapabilitySchema = z.object({\n version: z.number().int().positive(),\n since: z.string().optional(),\n});\n\nexport const extensionHostCapabilitiesSchema = z.object({\n host: z.literal(\"dashboard\"),\n hostVersion: z.string(),\n capabilities: z.record(z.string(), extensionHostCapabilitySchema),\n});\n\nexport const extensionHostCompatibilitySchema = z.object({\n status: z.enum([\"verified\", \"unverified\"]),\n host: extensionHostCapabilitiesSchema.optional(),\n diagnostics: z.array(extensionDiagnosticSchema),\n});\n\nexport type ExtensionHostCapability = z.infer<typeof extensionHostCapabilitySchema>;\nexport type ExtensionHostCapabilities = z.infer<typeof extensionHostCapabilitiesSchema>;\nexport type ExtensionHostCompatibility = z.infer<typeof extensionHostCompatibilitySchema>;\n","import type { Localizable } from \"../l10n\";\nimport type { CommandRef } from \"./commands\";\nimport type { ExtensionContextBase } from \"./context\";\nimport type { ContributionDefinition, ResourceKindRef } from \"./contribution-identity\";\nimport type { MaybePromise } from \"./json\";\nimport type { ResourceRef, ViewHierarchyParent } from \"./resources\";\n\nexport const dockedWorkbenchRegions = [\"sidenav\", \"main\", \"secondary\", \"side\"] as const;\nexport type DockedWorkbenchRegion = (typeof dockedWorkbenchRegions)[number];\nexport const extensionPanelRegions = [\"main\", \"secondary\", \"side\"] as const;\nexport type ExtensionPanelRegion = (typeof extensionPanelRegions)[number];\n\nexport interface RegionSize {\n readonly defaultPx?: number;\n readonly minPx?: number;\n readonly maxPx?: number;\n}\n\nexport interface ResourceMenuSlotDefinition {\n readonly id: string;\n readonly placement: \"header-primary\" | \"header-overflow\" | \"context-menu\";\n readonly label?: Localizable<string>;\n readonly access: \"owner\" | \"public\";\n readonly order?: number;\n}\n\nexport interface ResourceKindDefinition extends ContributionDefinition<\"resource-kind\"> {\n readonly prefix?: string | { readonly $prefix: \"project\" };\n readonly label?: Localizable<string>;\n readonly icon?: string;\n readonly menuSlots?: readonly ResourceMenuSlotDefinition[];\n /**\n * A command of this extension that returns the current reference for an open\n * resource, or null. The host runs it with `ctx.resource` set to the open\n * resource when the page opens and after the extension emits an event, and\n * shows the returned label, icon, and metadata. Keep metadata the page owns,\n * such as a selected document, from `ctx.resource`.\n */\n readonly resolve?: CommandRef;\n /** Resolve params.resources as a bounded ResourceRef[] batch. Return ResourceResolution[] with owner navigation; omit missing resources. */\n readonly resolveMany?: CommandRef;\n /** Validate an explicit anchor change. Return ResourceAnchorValidationResult. Must not mutate links. */\n readonly validateAnchors?: CommandRef;\n}\n\nexport interface ResourceHierarchyProvider extends ContributionDefinition<\"resource-hierarchy-provider\"> {\n resourceKind: ResourceKindRef;\n parent(ctx: ExtensionContextBase, resource: ResourceRef): MaybePromise<ResourceRef | ViewHierarchyParent | null>;\n}\n","import { z } from \"zod\";\nimport { localizableStringSchema } from \"./common\";\n\nexport const workbenchExtensionConnectionRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n label: localizableStringSchema,\n authType: z.enum([\"bearer\", \"header\"]),\n supportsCheck: z.boolean(),\n});\n\nexport const extensionConnectionRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n connectionId: z.string(),\n baseUrl: z.string(),\n authType: z.enum([\"bearer\", \"header\"]),\n configured: z.boolean(),\n lastCheck: z\n .object({\n ok: z.boolean(),\n status: z.number().int().nullable(),\n error: z.string().nullable(),\n checkedAt: z.string(),\n })\n .nullable(),\n updatedAt: z.string(),\n});\n\nexport const configureExtensionConnectionSchema = z.object({\n baseUrl: z.url(),\n secret: z.string().optional(),\n});\n\nexport const listExtensionConnectionsResponseSchema = z.object({\n connections: z.array(extensionConnectionRecordSchema),\n});\n\nexport type ExtensionConnectionRecord = z.infer<typeof extensionConnectionRecordSchema>;\nexport type ConfigureExtensionConnectionInput = z.infer<typeof configureExtensionConnectionSchema>;\nexport type ListExtensionConnectionsResponse = z.infer<typeof listExtensionConnectionsResponseSchema>;\n","export const isNavigationHref = (href: unknown) => {\n if (typeof href !== \"string\") return false;\n try {\n const { protocol } = new URL(href);\n return protocol === \"https:\" || protocol === \"http:\";\n } catch {\n return false;\n }\n};\n","import type { FileSourcePosition } from \"./types/pages\";\n\nexport const isFileSourcePosition = (value: unknown): value is FileSourcePosition => {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const position = value as FileSourcePosition;\n const positive = (number: unknown) => typeof number === \"number\" && Number.isSafeInteger(number) && number > 0;\n if (!positive(position.line)) return false;\n for (const key of [\"column\", \"endLine\", \"endColumn\"] as const) {\n if (position[key] !== undefined && !positive(position[key])) return false;\n }\n if (position.endColumn !== undefined && position.endLine === undefined) return false;\n if (position.endLine !== undefined) {\n if (position.endLine < position.line) return false;\n if (position.endLine === position.line && (position.endColumn ?? 1) < (position.column ?? 1)) return false;\n }\n return true;\n};\n","import type { PageParamDefinition, PageParams, PageParamValue } from \"./types/pages\";\n\nexport type PageParamDefinitions = Readonly<Record<string, PageParamDefinition>>;\n\n// Existing host selectors keep their meaning. Future host keys must start with `_`.\nconst reserved = new Set([\"resource\", \"section\", \"document\", \"line\", \"column\", \"endLine\", \"endColumn\"]);\nconst invalid = (name: string) => new Error(`page_param_invalid: ${name}`);\nconst equal = (left: unknown, right: unknown) => JSON.stringify(left) === JSON.stringify(right);\n\nexport const isPageParamValue = (definition: PageParamDefinition, value: unknown): value is PageParamValue => {\n if (definition.type === \"string[]\") return Array.isArray(value) && value.every((item) => typeof item === \"string\");\n if (definition.type === \"string\")\n return typeof value === \"string\" && (!definition.values || definition.values.includes(value));\n if (definition.type === \"number\") return typeof value === \"number\" && Number.isFinite(value);\n return typeof value === \"boolean\";\n};\n\nexport const validatePageParamDefinitions = (definitions: PageParamDefinitions = {}) => {\n if (Object.keys(definitions).length > 32) throw invalid(\"at most 32 params\");\n for (const [name, definition] of Object.entries(definitions)) {\n if (name.length > 64 || !/^[a-z][a-z0-9-]*$/.test(name) || reserved.has(name))\n throw new Error(`page_param_reserved: ${name}`);\n if (definition.default !== undefined && !isPageParamValue(definition, definition.default)) throw invalid(name);\n }\n};\n\nconst validateNames = (definitions: PageParamDefinitions, values: Readonly<Record<string, unknown>>) => {\n for (const name of Object.keys(values)) if (!Object.hasOwn(definitions, name)) throw invalid(name);\n};\n\nexport const normalizePageParams = (\n definitions: PageParamDefinitions = {},\n values: Readonly<Record<string, unknown>> = {},\n strict = true,\n) => {\n const result: Record<string, PageParamValue> = {};\n if (strict) validateNames(definitions, values);\n for (const name of Object.keys(definitions)) {\n if (!Object.hasOwn(values, name)) continue;\n const value = values[name];\n const definition = definitions[name]!;\n if (!isPageParamValue(definition, value)) {\n if (strict) throw invalid(name);\n continue;\n }\n if (equal(value, definition.default) || (Array.isArray(value) && !value.length)) continue;\n result[name] = Array.isArray(value) ? Object.freeze([...value]) : value;\n }\n const params = Object.keys(result).length ? Object.freeze(result) : undefined;\n if (pageParamsQuery(definitions, params).toString().length > 2048) {\n if (strict) throw invalid(\"query exceeds 2048 characters\");\n return undefined;\n }\n return params;\n};\n\nexport const resolvePageParams = (definitions: PageParamDefinitions = {}, params?: PageParams) => {\n const result: Record<string, PageParamValue> = {};\n for (const [name, definition] of Object.entries(definitions)) {\n if (definition.default !== undefined)\n result[name] = Array.isArray(definition.default) ? Object.freeze([...definition.default]) : definition.default;\n }\n return Object.freeze({ ...result, ...params });\n};\n\nexport const pageParamsQuery = (definitions: PageParamDefinitions = {}, params?: PageParams) => {\n const query = new URLSearchParams();\n for (const name of Object.keys(definitions)) {\n const value = params?.[name];\n if (value === undefined) continue;\n for (const item of Array.isArray(value) ? value : [value]) query.append(name, String(item));\n }\n return query;\n};\n\nexport const parsePageParams = (definitions: PageParamDefinitions = {}, query: URLSearchParams) => {\n const values: Record<string, unknown> = {};\n for (const [name, definition] of Object.entries(definitions)) {\n const items = query.getAll(name);\n if (!items.length || (definition.type !== \"string[]\" && items.length !== 1)) continue;\n const raw = items[0]!;\n if (definition.type === \"string[]\") values[name] = items;\n else if (definition.type === \"number\") {\n if (String(Number(raw)) === raw) values[name] = Number(raw);\n } else if (definition.type === \"boolean\") {\n if (raw === \"true\" || raw === \"false\") values[name] = raw === \"true\";\n } else values[name] = raw;\n }\n const params = normalizePageParams(definitions, values, false);\n return pageParamsQuery(definitions, params).toString().length <= 2048 ? params : undefined;\n};\n","import { z } from \"zod\";\nimport { validatePageParamDefinitions } from \"../extension-kernel/page-params\";\n\nexport const pageParamValueSchema = z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]);\nexport const pageParamDefinitionsSchema = z\n .record(\n z.string(),\n z.discriminatedUnion(\"type\", [\n z\n .object({\n type: z.literal(\"string\"),\n default: z.string().optional(),\n values: z.array(z.string()).readonly().optional(),\n })\n .strict(),\n z.object({ type: z.literal(\"number\"), default: z.number().optional() }).strict(),\n z.object({ type: z.literal(\"boolean\"), default: z.boolean().optional() }).strict(),\n z.object({ type: z.literal(\"string[]\"), default: z.array(z.string()).readonly().optional() }).strict(),\n ]),\n )\n .superRefine((value, ctx) => {\n try {\n validatePageParamDefinitions(value);\n } catch (error) {\n ctx.addIssue({ code: \"custom\", message: String(error) });\n }\n });\n","import { z } from \"zod\";\nimport { serializableJsonObjectSchema } from \"./common\";\n\nexport const extensionResourceRefSchema = z.object({\n shorthand: z.string().optional(),\n type: z.string(),\n id: z.string(),\n projectId: z.string().optional(),\n label: z.string().optional(),\n icon: z.string().optional(),\n extensionId: z.string().optional(),\n metadata: serializableJsonObjectSchema.optional(),\n});\n","import { z } from \"zod\";\nimport { serializableJsonObjectSchema } from \"./common\";\n\nexport const contributionRefSchema = <Kind extends string>(kind: Kind) =>\n z.object({ extensionId: z.string(), kind: z.literal(kind), id: z.string() });\n\nexport const pageRefSchema = contributionRefSchema(\"page\");\nexport const placementRefSchema = contributionRefSchema(\"placement\");\nexport const modeRefSchema = contributionRefSchema(\"mode\");\nexport const viewRefSchema = contributionRefSchema(\"view\");\nexport const resourceKindRefSchema = contributionRefSchema(\"resource-kind\");\n\nexport const pageSlotRefSchema = z.object({\n kind: z.literal(\"page-slot\"),\n page: pageRefSchema,\n id: z.string(),\n});\n\nexport const panelRefSchema = z.union([placementRefSchema, pageSlotRefSchema]);\n\nexport const commandTargetSchema = z.object({\n command: contributionRefSchema(\"command\"),\n params: serializableJsonObjectSchema.optional(),\n});\n","import { z } from \"zod\";\nimport { isNavigationHref } from \"../extension-kernel/navigation-href\";\nimport { isFileSourcePosition } from \"../extension-kernel/source-position\";\nimport type { FileSourcePosition, PageParams } from \"../extension-kernel/types/pages\";\nimport { pageParamValueSchema } from \"./page-params-schema\";\nimport { extensionResourceRefSchema } from \"./resource-ref\";\nimport { commandTargetSchema, pageRefSchema, panelRefSchema } from \"./workbench-refs-metadata\";\n\nconst sourcePositionSchema = z\n .object({\n line: z.number().int().positive(),\n column: z.number().int().positive().optional(),\n endLine: z.number().int().positive().optional(),\n endColumn: z.number().int().positive().optional(),\n })\n .refine(isFileSourcePosition, \"Expected ordered source coordinates\");\n\nconst sectionSchema = z.object({\n anchors: z.array(\n z.object({ id: z.string(), heading: z.string(), occurrence: z.number().int().nonnegative().optional() }),\n ),\n});\n\nexport interface MetadataPageTarget {\n kind: \"page\";\n page: z.infer<typeof pageRefSchema>;\n resource?: z.infer<typeof extensionResourceRefSchema>;\n open?: \"preview\" | \"pin\";\n section?: z.infer<typeof sectionSchema>;\n position?: FileSourcePosition;\n params?: PageParams;\n parent?: MetadataPageTarget;\n}\n\nconst pageTargetSchema: z.ZodType<MetadataPageTarget> = z\n .lazy(() =>\n z\n .object({\n kind: z.literal(\"page\"),\n page: pageRefSchema,\n resource: extensionResourceRefSchema.optional(),\n open: z.enum([\"preview\", \"pin\"]).optional(),\n section: sectionSchema.optional(),\n position: sourcePositionSchema.optional(),\n params: z.record(z.string(), pageParamValueSchema).optional(),\n parent: pageTargetSchema.optional(),\n })\n .refine((value) => !(value.position && value.section), \"Choose a source position or a heading section\"),\n )\n .meta({ id: \"WorkbenchMetadataPageTarget\" });\n\nconst navigationOperationSchema = z.union([\n pageTargetSchema,\n z.object({\n kind: z.literal(\"panel\"),\n panel: panelRefSchema,\n resource: extensionResourceRefSchema.optional(),\n open: z.enum([\"preview\", \"pin\"]).optional(),\n }),\n]);\n\nexport const navigationTargetSchema = z.union([\n navigationOperationSchema,\n z.object({ kind: z.literal(\"command\"), target: commandTargetSchema }),\n z.object({ kind: z.literal(\"href\"), href: z.string().refine(isNavigationHref, \"Expected an HTTP or HTTPS URL\") }),\n z.object({ kind: z.literal(\"compound\"), targets: z.array(navigationOperationSchema).min(1) }),\n]);\n","import { z } from \"zod\";\nimport type { NavigationTarget, Struct } from \"../extension-kernel\";\nimport { commandSourceSchema, extensionSlotKindSchema, jsonObjectSchema } from \"./common\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\nimport { pageParamValueSchema } from \"./page-params-schema\";\nimport { extensionResourceRefSchema } from \"./resource-ref\";\nimport { workbenchAttachmentTargetSchema } from \"./targets\";\n\nexport { extensionResourceRefSchema } from \"./resource-ref\";\n\nexport const extensionSlotInvocationSchema = z.object({\n id: z.string(),\n kind: extensionSlotKindSchema,\n context: jsonObjectSchema,\n});\n\nexport const extensionAttachmentInvocationSchema = z.object({\n target: workbenchAttachmentTargetSchema,\n mode: z.string().optional(),\n projectId: z.string().optional(),\n resource: extensionResourceRefSchema.optional(),\n});\n\nexport const extensionRendererContextSchema = z.object({\n rendererId: z.string(),\n pageParams: z.record(z.string(), pageParamValueSchema).optional(),\n projectId: z.string().optional(),\n modeId: z.string().optional(),\n resource: extensionResourceRefSchema.optional(),\n invocation: z.object({ placement: z.enum([\"visible\", \"background\"]) }).optional(),\n});\n\nexport const commandExecuteRequestSchema = z.object({\n projectId: z.string().min(1),\n workspaceId: z.string().optional(),\n params: jsonObjectSchema.optional(),\n resource: extensionResourceRefSchema.optional(),\n attachment: extensionAttachmentInvocationSchema.optional(),\n slot: extensionSlotInvocationSchema.optional(),\n source: commandSourceSchema.optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nexport const commandExecuteBodySchema = z.object({\n workspaceId: z.string().optional(),\n params: jsonObjectSchema.optional(),\n resource: extensionResourceRefSchema.optional(),\n attachment: extensionAttachmentInvocationSchema.optional(),\n slot: extensionSlotInvocationSchema.optional(),\n source: commandSourceSchema.optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nexport const dispatchExtensionEventBodySchema = z\n .object({\n eventId: z.string().min(1),\n payload: jsonObjectSchema,\n })\n .strict();\n\nconst serializedErrorSchema = z.object({\n name: z.string().optional(),\n message: z.string(),\n stack: z.string().optional(),\n});\n\nconst commandNoticeSchema = z.object({\n type: z.enum([\"info\", \"success\", \"warning\", \"error\"]),\n title: z.string().optional(),\n message: z.string(),\n metadata: jsonObjectSchema.optional(),\n});\n\nconst commandDiagnosticSchema = z.object({\n code: z.string(),\n message: z.string(),\n severity: z.enum([\"info\", \"warning\", \"error\"]),\n extensionId: z.string().optional(),\n commandId: z.string().optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nconst responseNavigationTargetSchema: z.ZodType<NavigationTarget> = navigationTargetSchema;\n\nexport const commandOutcomeSchema = z.object({\n ok: z.boolean(),\n status: z.enum([\"success\", \"rejected\", \"error\"]),\n value: z.unknown().optional(),\n navigationRequests: z.array(responseNavigationTargetSchema).optional(),\n code: z.string().optional(),\n reason: z.string().optional(),\n data: jsonObjectSchema.optional(),\n error: serializedErrorSchema.optional(),\n notices: z.array(commandNoticeSchema).optional(),\n diagnostics: z.array(commandDiagnosticSchema).optional(),\n});\n\nexport const commandExecuteResponseSchema = z.object({\n commandId: z.string(),\n extensionId: z.string(),\n eventIds: z.array(z.string()).optional(),\n outcome: commandOutcomeSchema,\n});\n\nexport type CommandExecuteRequest = z.infer<typeof commandExecuteRequestSchema>;\nexport type CommandExecuteBody = z.infer<typeof commandExecuteBodySchema>;\nexport type CommandExecuteResponse = z.infer<typeof commandExecuteResponseSchema>;\nexport type ExtensionRendererContext = z.infer<typeof extensionRendererContextSchema>;\nexport type DispatchExtensionEventInput = {\n eventId: string;\n payload: Struct;\n};\n","import { z } from \"zod\";\nimport type { ControlParam, ControlsQueryResult } from \"../extension-kernel\";\nimport { extensionResourceRefSchema } from \"./execute\";\n\nconst base = { id: z.string(), name: z.string(), description: z.string().optional(), readOnly: z.boolean().optional() };\nconst numeric = { min: z.number().optional(), max: z.number().optional(), step: z.number().optional() };\nconst vector = z.strictObject({ x: z.number(), y: z.number() });\nconst range = z.tuple([z.number(), z.number()]);\nconst harness = z.strictObject({\n harnessId: z.string().min(1),\n model: z.string().optional(),\n params: z.record(z.string(), z.union([z.string(), z.boolean()])).optional(),\n});\nconst selectionValue = z.union([z.string(), z.array(z.string())]);\nconst selectionOption = z.strictObject({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional(),\n color: z.string().optional(),\n description: z.string().optional(),\n disabled: z.boolean().optional(),\n});\nconst selection = {\n placeholder: z.string().optional(),\n searchable: z.boolean().optional(),\n searchPlaceholder: z.string().optional(),\n emptyText: z.string().optional(),\n disabled: z.boolean().optional(),\n};\nconst image = z.strictObject({ src: z.string(), alt: z.string() });\nconst primitive = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst readOnlyContent = z.union([\n primitive,\n z.array(primitive),\n image.extend({ type: z.literal(\"image\") }),\n z.strictObject({ type: z.literal(\"image-gallery\"), images: z.array(image) }),\n]);\n\nexport const controlValueSchema = z.union([primitive, z.array(z.string()), range, vector, harness]);\nexport const controlValuesSchema = z.record(z.string(), controlValueSchema);\nexport const controlParamSchema = z.discriminatedUnion(\"type\", [\n z.strictObject({ ...base, type: z.literal(\"harness\"), defaultValue: harness }),\n z.strictObject({ ...base, ...numeric, type: z.literal(\"number\"), defaultValue: z.number() }),\n z.strictObject({ ...base, type: z.literal(\"boolean\"), defaultValue: z.boolean() }),\n z.strictObject({ ...base, type: z.literal(\"text\"), defaultValue: z.string(), singleLine: z.boolean().optional() }),\n z.strictObject({\n ...base,\n type: z.literal(\"markdown\"),\n defaultValue: z.string(),\n placeholder: z.string().optional(),\n }),\n z.strictObject({\n ...base,\n ...selection,\n type: z.literal(\"selection\"),\n allowCustomValues: z.boolean().optional(),\n defaultValue: selectionValue,\n options: z.array(selectionOption),\n multiSelect: z.boolean().optional(),\n clearable: z.boolean().optional(),\n group: z\n .strictObject({\n id: z.string(),\n name: z.string(),\n defaultValue: z.string(),\n options: z.array(selectionOption),\n ...selection,\n })\n .optional(),\n }),\n z.strictObject({\n ...base,\n type: z.literal(\"date\"),\n defaultValue: z.string(),\n min: z.string().optional(),\n max: z.string().optional(),\n }),\n z.strictObject({ ...base, type: z.literal(\"color\"), defaultValue: z.string() }),\n z.strictObject({ ...base, type: z.literal(\"readOnly\"), value: readOnlyContent }),\n z.strictObject({\n ...base,\n type: z.literal(\"resource\"),\n defaultValue: selectionValue,\n options: z.array(\n z.strictObject({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional(),\n color: z.string().optional(),\n description: z.string().optional(),\n href: z.string().optional(),\n ref: extensionResourceRefSchema.optional(),\n copyText: z.string().optional(),\n }),\n ),\n multiSelect: z.boolean().optional(),\n editable: z.boolean().optional(),\n placeholder: z.string().optional(),\n emptyText: z.string().optional(),\n }),\n z.strictObject({\n ...base,\n ...numeric,\n type: z.literal(\"range\"),\n defaultValue: range,\n min: z.number(),\n max: z.number(),\n unit: z.string().optional(),\n markerCount: z.number().optional(),\n }),\n z.strictObject({\n ...base,\n type: z.literal(\"segmented\"),\n defaultValue: z.string(),\n variant: z.enum([\"default\", \"dots\"]).optional(),\n options: z.array(\n z.strictObject({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional(),\n indicatorColor: z.string().optional(),\n }),\n ),\n }),\n z.strictObject({\n ...base,\n type: z.literal(\"actions\"),\n defaultValue: z.string().optional(),\n options: z.array(\n z.strictObject({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional(),\n disabled: z.boolean().optional(),\n }),\n ),\n }),\n z.strictObject({\n ...base,\n type: z.literal(\"anchorGrid\"),\n defaultValue: z.enum([\n \"top-left\",\n \"top\",\n \"top-right\",\n \"left\",\n \"center\",\n \"right\",\n \"bottom-left\",\n \"bottom\",\n \"bottom-right\",\n ]),\n }),\n z.strictObject({\n ...base,\n ...numeric,\n type: z.literal(\"vector\"),\n defaultValue: vector,\n coordinateMode: z.enum([\"cartesian\", \"screen\"]).optional(),\n xLabel: z.string().optional(),\n yLabel: z.string().optional(),\n }),\n]) satisfies z.ZodType<ControlParam>;\n\nexport const controlGroupSchema = z.strictObject({\n id: z.string(),\n title: z.string(),\n description: z.string().optional(),\n params: z.array(controlParamSchema),\n collapsible: z.boolean().optional(),\n defaultCollapsed: z.boolean().optional(),\n});\nexport const controlsQueryResultSchema = z.strictObject({\n params: z.array(controlParamSchema).optional(),\n groups: z.array(controlGroupSchema).optional(),\n values: controlValuesSchema.optional(),\n readOnly: z.boolean().optional(),\n}) satisfies z.ZodType<ControlsQueryResult>;\n","import { z } from \"zod\";\nimport { localizableStringSchema } from \"./common\";\n\nexport const extensionRendererRecordBaseSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n icon: z.string().optional(),\n resourceKind: z.string().optional(),\n refreshEventIds: z.array(z.string().min(1)).optional(),\n emptyTitle: localizableStringSchema.optional(),\n emptyDescription: localizableStringSchema.optional(),\n});\n\nexport const extensionTreeRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n searchable: z.boolean().optional(),\n searchPlaceholder: localizableStringSchema.optional(),\n headerHandlerId: z.string().optional(),\n bodyHandlerId: z.string(),\n childrenHandlerId: z.string().optional(),\n moveHandlerId: z.string().optional(),\n footerHandlerId: z.string().optional(),\n defaultExpandedSectionIds: z.array(z.string()).optional(),\n defaultExpandedNodeIds: z.array(z.string()).optional(),\n});\n\nexport const extensionFileRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n loadHandlerId: z.string(),\n saveHandlerId: z.string().optional(),\n});\n\nexport type ExtensionTreeRendererRecord = z.infer<typeof extensionTreeRendererRecordSchema>;\nexport type ExtensionFileRendererRecord = z.infer<typeof extensionFileRendererRecordSchema>;\nexport type WorkbenchExtensionFileRendererRecord = z.infer<typeof extensionFileRendererRecordSchema>;\nexport type WorkbenchExtensionTreeRendererRecord = z.infer<typeof extensionTreeRendererRecordSchema>;\n","import { z } from \"zod\";\nimport { controlValuesSchema } from \"./control-declarations\";\nimport { extensionRendererRecordBaseSchema } from \"./renderers\";\n\nexport const extensionControlsRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n queryHandlerId: z.string(),\n valueChangeHandlerId: z.string().optional(),\n applyHandlerId: z.string().optional(),\n resetHandlerId: z.string().optional(),\n defaultValues: controlValuesSchema.optional(),\n});\n\nexport type ExtensionControlsRendererRecord = z.infer<typeof extensionControlsRendererRecordSchema>;\nexport type WorkbenchExtensionControlsRendererRecord = z.infer<typeof extensionControlsRendererRecordSchema>;\n","/** A condition that a filter rule applies to one field. Each field kind accepts a fixed list. */\nexport type ViewFilterCondition =\n | \"contains\"\n | \"does-not-contain\"\n | \"is\"\n | \"is-not\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"is-before\"\n | \"is-after\"\n | \"is-on-or-before\"\n | \"is-on-or-after\"\n | \"is-any-of\"\n | \"is-none-of\"\n | \"has-any-of\"\n | \"has-all-of\"\n | \"has-none-of\"\n | \"is-empty\"\n | \"is-not-empty\";\n\n// Views travel through command params, so these are type aliases: they stay assignable to JSON values.\nexport type ViewFilterRule = {\n attributeId: string;\n condition: ViewFilterCondition;\n /**\n * Text, a number, a day (\"2026-10-02\", \"today\", \"today-7\", \"today+7\"),\n * or option values. Absent for is-empty and is-not-empty.\n */\n value?: boolean | string | number | string[];\n};\n\nexport type ViewFilterGroup = {\n conjunction: \"and\" | \"or\";\n /** Normal rules share this conjunction. */\n rules: ViewFilterRule[];\n /** Advanced groups have one level and combine with the normal rules using AND. */\n groups?: { conjunction: \"and\" | \"or\"; rules: ViewFilterRule[] }[];\n};\n\nexport type ViewSortDirection = \"asc\" | \"desc\";\n\nexport type ViewSort = {\n attributeId: string;\n direction: ViewSortDirection;\n};\n\nexport type ViewFieldKind = \"string\" | \"number\" | \"boolean\" | \"date\" | \"enum\" | \"status\" | \"enum-multi\" | \"user\";\n\nconst optionConditions: readonly ViewFilterCondition[] = [\"is-any-of\", \"is-none-of\", \"is-empty\", \"is-not-empty\"];\n\n/** The only list of conditions. The UI, the views API, and the CLI all read it. */\nexport const VIEW_FILTER_CONDITIONS: Record<ViewFieldKind, readonly ViewFilterCondition[]> = {\n boolean: [\"is\", \"is-not\", \"is-empty\", \"is-not-empty\"],\n string: [\"contains\", \"does-not-contain\", \"is\", \"is-not\", \"is-empty\", \"is-not-empty\"],\n number: [\"is\", \"is-not\", \"gt\", \"gte\", \"lt\", \"lte\", \"is-empty\", \"is-not-empty\"],\n date: [\"is\", \"is-before\", \"is-after\", \"is-on-or-before\", \"is-on-or-after\", \"is-empty\", \"is-not-empty\"],\n enum: optionConditions,\n status: optionConditions,\n user: optionConditions,\n \"enum-multi\": [\"has-any-of\", \"has-all-of\", \"has-none-of\", \"is-empty\", \"is-not-empty\"],\n};\n","import { z } from \"zod\";\nimport {\n VIEW_FILTER_CONDITIONS,\n type ViewFieldKind,\n type ViewFilterCondition,\n type ViewFilterGroup,\n type ViewFilterRule,\n type ViewSort,\n} from \"../extension-kernel/types/collection-view\";\n\nexport const EMPTY_VIEW_FILTER: ViewFilterGroup = { conjunction: \"and\", rules: [] };\nexport const VIEW_DAY_PATTERN = /^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d+)?)$/;\n\nconst conditionIds = [...new Set(Object.values(VIEW_FILTER_CONDITIONS).flat())] as [\n ViewFilterCondition,\n ...ViewFilterCondition[],\n];\n\nexport const viewFilterConditionSchema = z.enum(conditionIds);\n\nexport const viewFilterRuleSchema = z.object({\n attributeId: z.string().min(1),\n condition: viewFilterConditionSchema,\n value: z.union([z.boolean(), z.string(), z.number(), z.array(z.string())]).optional(),\n});\nconst advancedFilterGroupSchema = z.strictObject({\n conjunction: z.enum([\"and\", \"or\"]),\n rules: z.array(viewFilterRuleSchema),\n});\nexport const viewFilterGroupSchema = advancedFilterGroupSchema\n .extend({\n groups: z.array(advancedFilterGroupSchema).optional(),\n })\n .refine((filter) => !filter.groups?.length || filter.conjunction === \"and\", {\n message: \"Normal rules and advanced groups combine using AND\",\n });\n\nconst viewSortSchema = z.object({ attributeId: z.string().min(1), direction: z.enum([\"asc\", \"desc\"]) });\nexport const viewSortsSchema = z.array(viewSortSchema).max(1, \"A view allows only one sort\");\n\n/** What a rule's value must be for a condition the field kind accepts. */\nexport const viewFilterValueKind = (kind: ViewFieldKind, condition: ViewFilterCondition) => {\n if (condition === \"is-empty\" || condition === \"is-not-empty\") return \"none\" as const;\n if (condition === \"is-any-of\" || condition === \"is-none-of\") return \"options\" as const;\n if (kind === \"boolean\") return \"boolean\" as const;\n if (kind === \"number\") return \"number\" as const;\n if (kind === \"date\") return \"day\" as const;\n if (kind === \"string\") return \"text\" as const;\n return \"options\" as const;\n};\n\nconst valueNeeds = {\n none: \"takes no value\",\n boolean: \"needs a boolean\",\n number: \"needs a number\",\n day: \"needs a day such as 2026-10-02, today, or today-7\",\n text: \"needs text\",\n options: \"needs a list of option values\",\n};\n\n/** A missing value marks a rule that is still being built. The renderer ignores it. */\nconst valueFits = (value: ViewFilterRule[\"value\"], kind: ReturnType<typeof viewFilterValueKind>) => {\n if (value === undefined) return true;\n if (kind === \"none\") return false;\n if (kind === \"boolean\") return typeof value === \"boolean\";\n if (kind === \"number\") return typeof value === \"number\" && Number.isFinite(value);\n if (kind === \"day\") return typeof value === \"string\" && VIEW_DAY_PATTERN.test(value);\n if (kind === \"text\") return typeof value === \"string\";\n return Array.isArray(value);\n};\n\nexport interface ViewRuleField {\n id: string;\n kind: ViewFieldKind;\n filterable: boolean;\n sortable: boolean;\n options?: { value: string }[];\n}\n\n/** enum-multi fields hold several values, so one order does not exist. */\nexport const canSortViewField = (field: Pick<ViewRuleField, \"kind\" | \"sortable\">) =>\n field.sortable && field.kind !== \"enum-multi\";\n\nconst ruleProblem = (rule: ViewFilterRule, fields: ViewRuleField[]) => {\n const filterable = fields.filter((field) => field.filterable);\n const field = filterable.find((field) => field.id === rule.attributeId);\n if (!field)\n return `Invalid filter field \"${rule.attributeId}\". Valid IDs: ${filterable.map((field) => field.id).join(\", \")}`;\n const conditions = VIEW_FILTER_CONDITIONS[field.kind];\n // Deprecated filter maps used exact value lists on scalar fields too. Keep them editable.\n const legacyList =\n [\"is-any-of\", \"is-none-of\"].includes(rule.condition) && [\"string\", \"number\", \"date\"].includes(field.kind);\n if (!conditions.includes(rule.condition) && !legacyList)\n return `Field \"${field.id}\" does not accept \"${rule.condition}\". Valid conditions: ${conditions.join(\", \")}`;\n const valueKind = viewFilterValueKind(field.kind, rule.condition);\n if (!valueFits(rule.value, valueKind))\n return `Condition \"${rule.condition}\" on \"${field.id}\" ${valueNeeds[valueKind]}`;\n const options = field.options;\n const values = Array.isArray(rule.value) ? rule.value : [];\n const unknown = options ? values.find((value) => !options.some((option) => option.value === value)) : undefined;\n if (options && unknown !== undefined)\n return `Invalid filter value \"${unknown}\" for \"${field.id}\". Valid values: ${options.map((option) => option.value).join(\", \")}`;\n return undefined;\n};\n\n/** The first reason the filter does not fit the fields, or undefined. */\nexport const findViewFilterProblem = (filter: ViewFilterGroup, fields: ViewRuleField[]) => {\n for (const rule of [...filter.rules, ...(filter.groups ?? []).flatMap((group) => group.rules)]) {\n const problem = ruleProblem(rule, fields);\n if (problem) return problem;\n }\n return undefined;\n};\n\n/** The first reason the sorts do not fit the fields, or undefined. */\nexport const findViewSortsProblem = (sorts: ViewSort[], fields: ViewRuleField[]) => {\n if (sorts.length > 1) return \"A view allows only one sort\";\n const sortable = fields.filter(canSortViewField).map((field) => field.id);\n for (const sort of sorts) {\n if (!sortable.includes(sort.attributeId))\n return `Invalid sort field \"${sort.attributeId}\". Valid IDs: ${sortable.join(\", \")}`;\n }\n return undefined;\n};\n","import { z } from \"zod\";\nimport { extensionParamObjectSchema } from \"./commands\";\nimport { jsonObjectSchema, localizableStringSchema } from \"./common\";\n\nexport const viewToolbarActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n presentation: z.enum([\"primary\", \"secondary\"]).optional(),\n params: jsonObjectSchema.optional(),\n input: extensionParamObjectSchema.optional(),\n submitLabel: z.string().optional(),\n when: z.string().optional(),\n disabled: z.boolean().optional(),\n});\nexport const viewToolbarActionRecordSchema = viewToolbarActionSchema.extend({ commandId: z.string() });\n","import { z } from \"zod\";\nimport { viewFilterGroupSchema, viewSortsSchema } from \"./collection-view\";\nimport { localizableStringSchema } from \"./common\";\nimport { extensionRendererRecordBaseSchema } from \"./renderers\";\nimport { viewToolbarActionRecordSchema } from \"./view-toolbar-action\";\n\nconst themeColorSchema = z.object({\n light: z.string(),\n dark: z.string(),\n foreground: z.object({ light: z.string(), dark: z.string() }).optional(),\n});\n\nconst columnStatSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"unique\") }),\n z.object({ type: z.literal(\"histogram\"), bins: z.number().int().positive().optional() }),\n z.object({ type: z.literal(\"top-values\"), limit: z.number().int().positive().optional() }),\n]);\n\nconst columnRendererSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\") }),\n z.object({\n type: z.literal(\"color-scale\"),\n stops: z.array(z.object({ value: z.number(), color: themeColorSchema })),\n }),\n z.object({\n type: z.literal(\"categorical-color\"),\n categories: z.array(\n z.object({ value: z.union([z.string(), z.number(), z.boolean(), z.null()]), color: themeColorSchema }),\n ),\n }),\n]);\n\nexport const dataTableRendererColumnSchema = z.object({\n id: z.string(),\n label: localizableStringSchema.optional(),\n type: z.enum([\"string\", \"number\", \"boolean\", \"date\"]).optional(),\n groupable: z.boolean().optional(),\n filterable: z.boolean().optional(),\n description: localizableStringSchema.optional(),\n icon: z.string().optional(),\n hidden: z.boolean().optional(),\n stat: columnStatSchema.optional(),\n renderer: columnRendererSchema.optional(),\n});\n\nexport const dataTableRendererSettingsSchema = z.object({\n grouping: z.string(),\n rowNumbers: z.boolean(),\n wrapRows: z.boolean(),\n showStats: z.boolean(),\n hiddenColumns: z.array(z.string()),\n columnOrder: z.array(z.string()),\n});\n\nconst dataTableRendererSavedViewSchema = z.object({\n id: z.string(),\n title: localizableStringSchema,\n settings: dataTableRendererSettingsSchema.partial().optional(),\n filter: viewFilterGroupSchema.optional(),\n sorts: viewSortsSchema.optional(),\n});\n\nconst rowActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n destructive: z.boolean().optional(),\n commandId: z.string(),\n});\n\nconst selectionActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n destructive: z.boolean().optional(),\n commandId: z.string(),\n});\n\nexport const extensionDataTableRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n toolbarActions: z.array(viewToolbarActionRecordSchema).optional(),\n columns: z.array(dataTableRendererColumnSchema).optional(),\n queryHandlerId: z.string(),\n selectionMode: z.enum([\"none\", \"multiple\"]).optional(),\n selectionActions: z.array(selectionActionSchema).optional(),\n rowActions: z.array(rowActionSchema).optional(),\n rowActivationHandlerId: z.string().optional(),\n initialPageSize: z.number().int().positive().optional(),\n pageSizeOptions: z.array(z.number().int().positive()).optional(),\n defaultSettings: dataTableRendererSettingsSchema.partial().optional(),\n defaultFilter: viewFilterGroupSchema.optional(),\n defaultSorts: viewSortsSchema.optional(),\n defaultViews: z.array(dataTableRendererSavedViewSchema).optional(),\n defaultActiveViewId: z.string().optional(),\n});\n\nexport type ExtensionDataTableRendererRecord = z.infer<typeof extensionDataTableRendererRecordSchema>;\nexport type WorkbenchExtensionDataTableRendererRecord = ExtensionDataTableRendererRecord;\n","import { z } from \"zod\";\nimport { viewFilterGroupSchema, viewSortsSchema } from \"./collection-view\";\nimport { extensionParamObjectSchema } from \"./commands\";\nimport { localizableStringSchema } from \"./common\";\nimport { extensionRendererRecordBaseSchema } from \"./renderers\";\nimport { viewToolbarActionRecordSchema } from \"./view-toolbar-action\";\n\nconst kanbanRendererEnumOptionSchema = z.object({\n value: z.string(),\n label: localizableStringSchema,\n color: z.string().optional(),\n icon: z.string().nullable().optional(),\n});\n\nconst kanbanRendererAttributeTypeSchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"enum\"), options: z.array(kanbanRendererEnumOptionSchema) }),\n z.object({ kind: z.literal(\"enum-multi\"), options: z.array(kanbanRendererEnumOptionSchema) }),\n z.object({\n kind: z.literal(\"status\"),\n statuses: z.object({\n extensionId: z.string().optional(),\n kind: z.literal(\"status\"),\n id: z.string(),\n }),\n }),\n z.object({ kind: z.literal(\"boolean\"), legacyValues: z.record(z.string(), z.boolean()).optional() }),\n z.object({ kind: z.literal(\"string\") }),\n z.object({ kind: z.literal(\"date\") }),\n z.object({ kind: z.literal(\"number\") }),\n z.object({ kind: z.literal(\"user\") }),\n]);\n\nconst kanbanRendererAttributeDisplaySchema = z.union([\n z.object({ kind: z.literal(\"badge-list\"), itemsAttributeId: z.string() }),\n z\n .object({ kind: z.string() })\n .passthrough()\n .refine((display) => display.kind !== \"badge-list\"),\n]);\n\nconst kanbanRendererAttributeSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n type: kanbanRendererAttributeTypeSchema,\n filterable: z.boolean().optional(),\n groupable: z.boolean().optional(),\n sortable: z.boolean().optional(),\n displayable: z.boolean().optional(),\n editable: z.boolean().optional(),\n display: kanbanRendererAttributeDisplaySchema.optional(),\n});\n\n/** Board display settings stored in a view. Order lives in the view's sorts. */\nexport const kanbanViewSettingsSchema = z.object({\n viewMode: z.enum([\"board\", \"list\"]),\n columnGrouping: z.string(),\n rowGrouping: z.string(),\n displayProperties: z.array(z.string()),\n});\n\nexport const kanbanRendererSavedViewSchema = z.object({\n id: z.string(),\n title: localizableStringSchema,\n settings: kanbanViewSettingsSchema,\n filter: viewFilterGroupSchema,\n sorts: viewSortsSchema,\n isDefault: z.boolean().optional(),\n});\n\nconst extensionKanbanRendererCreateRowSchema = z.object({\n commandId: z.string(),\n title: localizableStringSchema.optional(),\n submitLabel: localizableStringSchema.optional(),\n columnParam: z.string().optional(),\n params: extensionParamObjectSchema.optional(),\n attributesParam: z.string().optional(),\n attachments: z\n .object({\n commandId: z.string(),\n resourceParam: z.string(),\n fileParam: z.string(),\n })\n .optional(),\n labels: z\n .object({\n cancel: localizableStringSchema.optional(),\n properties: localizableStringSchema.optional(),\n submitError: localizableStringSchema.optional(),\n removeFile: localizableStringSchema.optional(),\n })\n .optional(),\n});\n\nconst extensionKanbanRendererRowActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n commandId: z.string(),\n destructive: z.boolean().optional(),\n});\n\nexport const extensionKanbanRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n toolbarActions: z.array(viewToolbarActionRecordSchema).optional(),\n extensionInstanceId: z.string().optional(),\n attributes: z.array(kanbanRendererAttributeSchema).optional(),\n queryHandlerId: z.string(),\n attributeChangeHandlerId: z.string().optional(),\n reorderHandlerId: z.string().optional(),\n moveHandlerId: z.string().optional(),\n schemaRefreshEventIds: z.array(z.string()).optional(),\n columnActionHandlerId: z.string().optional(),\n createRow: extensionKanbanRendererCreateRowSchema.optional(),\n rowActions: z.array(extensionKanbanRendererRowActionSchema).optional(),\n rowActivationHandlerId: z.string().optional(),\n defaultSettings: kanbanViewSettingsSchema.partial().optional(),\n defaultFilter: viewFilterGroupSchema.optional(),\n defaultSorts: viewSortsSchema.optional(),\n defaultViews: z.array(kanbanRendererSavedViewSchema).optional(),\n defaultActiveViewId: z.string().optional(),\n hideToolbar: z.boolean().optional(),\n});\n\nexport const extensionCommandPaletteResourceRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n resourceKind: z.string().optional(),\n queryHandlerId: z.string(),\n refreshEventIds: z.array(z.string().min(1)).optional(),\n});\n\nexport type ExtensionKanbanRendererRecord = z.infer<typeof extensionKanbanRendererRecordSchema>;\nexport type ExtensionCommandPaletteResourceRecord = z.infer<typeof extensionCommandPaletteResourceRecordSchema>;\nexport type WorkbenchExtensionKanbanRendererRecord = z.infer<typeof extensionKanbanRendererRecordSchema>;\nexport type WorkbenchExtensionCommandPaletteResourceRecord = z.infer<\n typeof extensionCommandPaletteResourceRecordSchema\n>;\n","import { z } from \"zod\";\nimport { extensionWhenExpressionSchema } from \"./common\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\n\nconst parsedKeybindingChordSchema = z.object({\n key: z.string(),\n ctrl: z.boolean(),\n shift: z.boolean(),\n alt: z.boolean(),\n meta: z.boolean(),\n modifiers: z.array(z.string()),\n});\n\nexport const extensionKeybindingRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n action: navigationTargetSchema,\n /** Original chord string as authored, e.g. \"mod+shift+p\". */\n key: z.string(),\n /**\n * Platform-independent canonical chord string produced by TanStack's\n * `normalizeHotkey(input, \"mac\")`. Inputs like `cmd+P` and `mod+P`\n * collapse to the same value so they can be deduped at extension-check\n * time, matching what would happen at dispatch on macOS.\n */\n canonicalChord: z.string(),\n /** Result of TanStack's `parseHotkey(key, \"mac\")`. */\n parsed: parsedKeybindingChordSchema,\n platformOverrides: z\n .object({\n mac: z.string().optional(),\n linux: z.string().optional(),\n win: z.string().optional(),\n })\n .optional(),\n when: extensionWhenExpressionSchema.optional(),\n});\n\nexport type ExtensionKeybindingRecord = z.infer<typeof extensionKeybindingRecordSchema>;\n","import { z } from \"zod\";\n\nexport const workbenchPlacementPresentationSchema = z.object({\n mountStrategy: z.enum([\"active\", \"keep-mounted\"]).optional(),\n hiddenByDefault: z.boolean().optional(),\n headerBorderBottom: z.boolean().optional(),\n tab: z\n .object({\n queryHandlerId: z.string(),\n refreshEventIds: z.array(z.string()).optional(),\n })\n .optional(),\n});\n\nexport type WorkbenchPlacementPresentationRecord = z.infer<typeof workbenchPlacementPresentationSchema>;\n\nexport const placementPresenceSchema = z.enum([\"fixed\", \"open\", \"closed\"]);\n\nexport const regionSizeSchema = z.object({\n defaultPx: z.number().optional(),\n minPx: z.number().optional(),\n maxPx: z.number().optional(),\n});\n\nexport const regionSettingsSchema = z.object({\n showHeader: z.boolean().optional(),\n size: regionSizeSchema.optional(),\n collapsible: z.boolean().optional(),\n alwaysShowTabs: z.boolean().optional(),\n});\n","import { z } from \"zod\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\nimport { placementPresenceSchema } from \"./placement-metadata\";\nimport { resourceKindRefSchema, viewRefSchema } from \"./workbench-refs-metadata\";\n\nexport const resourceConstraintSchema = z.object({ kinds: z.array(resourceKindRefSchema).min(1) }).strict();\nexport const resourceBindingSchema = resourceConstraintSchema.extend({\n view: viewRefSchema,\n cardinality: z.enum([\"one\", \"many\"]),\n add: navigationTargetSchema.optional(),\n});\nexport const placementItemSchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"view\"), view: viewRefSchema, presence: placementPresenceSchema }).strict(),\n z.object({ kind: z.literal(\"binding\"), binding: resourceBindingSchema }).strict(),\n]);\n","import { z } from \"zod\";\nimport { localizableStringSchema } from \"./common\";\nimport { pageParamDefinitionsSchema } from \"./page-params-schema\";\nimport { workbenchPlacementPresentationSchema } from \"./placement-metadata\";\nimport { placementItemSchema, resourceConstraintSchema } from \"./resource-binding-metadata\";\nimport { modeRefSchema, pageRefSchema, viewRefSchema } from \"./workbench-refs-metadata\";\n\nexport { pageRefSchema, pageSlotRefSchema, panelRefSchema, placementRefSchema } from \"./workbench-refs-metadata\";\n\nconst mainSchema = z.discriminatedUnion(\"kind\", [\n workbenchPlacementPresentationSchema\n .extend({\n kind: z.literal(\"view\"),\n view: viewRefSchema,\n cardinality: z.enum([\"one\", \"many\"]),\n })\n .strict(),\n z.object({ kind: z.literal(\"panels\"), empty: viewRefSchema }).strict(),\n]);\nconst slotSchema = workbenchPlacementPresentationSchema\n .extend({\n id: z.string(),\n region: z.enum([\"main\", \"secondary\", \"side\"]),\n order: z.number().optional(),\n item: placementItemSchema,\n openOn: z.literal(\"page-resource\").optional(),\n })\n .strict();\n\nexport const workbenchExtensionPageRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n icon: z.string().optional(),\n path: z.string(),\n params: pageParamDefinitionsSchema.optional(),\n document: z.object({ metadataKey: z.string().refine((key) => key.trim().length > 0) }).optional(),\n mode: modeRefSchema,\n parent: pageRefSchema.optional(),\n resource: resourceConstraintSchema.optional(),\n main: mainSchema,\n slots: z.array(slotSchema),\n});\n","import { z } from \"zod\";\nimport {\n extensionSettingScopeSchema,\n extensionSettingSourceSchema,\n extensionSettingValueTypeSchema,\n extensionWebviewContributionSchema,\n localizableStringSchema,\n workbenchExtensionWebviewSchema,\n} from \"./common\";\nimport { workbenchSettingsScopeSchema, workbenchSettingsTargetSchema } from \"./targets\";\n\nexport const extensionSettingsPanelRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n extensionInstanceId: z.string().optional(),\n installedExtensionId: z.string().optional(),\n installName: z.string().optional(),\n slotId: z.string(),\n target: workbenchSettingsTargetSchema.optional(),\n scope: workbenchSettingsScopeSchema.optional(),\n title: localizableStringSchema,\n icon: z.string().optional(),\n section: z.string().optional(),\n webview: extensionWebviewContributionSchema,\n});\n\n// The declared command ref is resolved to its full command id, so clients can run it directly.\nexport const extensionSettingOptionSourceSchema = z.object({\n commandId: z.string(),\n valueField: z.string(),\n labelField: z.string(),\n params: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const extensionSettingDefinitionRecordSchema = z.object({\n key: z.string(),\n extensionId: z.string(),\n type: extensionSettingValueTypeSchema,\n scope: extensionSettingScopeSchema,\n default: z.unknown().optional(),\n enum: z.array(z.unknown()).optional(),\n options: extensionSettingOptionSourceSchema.optional(),\n title: localizableStringSchema.optional(),\n description: localizableStringSchema.optional(),\n});\n\nexport const extensionSettingValueRecordSchema = extensionSettingDefinitionRecordSchema.extend({\n value: z.unknown().optional(),\n source: extensionSettingSourceSchema,\n});\n\nexport const listExtensionSettingsResponseSchema = z.object({\n settings: z.array(extensionSettingValueRecordSchema),\n});\n\nexport const updateExtensionSettingRequestSchema = z.object({\n value: z.unknown(),\n});\n\nexport const workbenchExtensionSettingsPanelRecordSchema = extensionSettingsPanelRecordSchema.extend({\n webview: workbenchExtensionWebviewSchema,\n});\n\nexport const extensionSettingsSectionRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n scope: workbenchSettingsScopeSchema.optional(),\n order: z.number().optional(),\n});\n\nexport type ExtensionSettingsPanelRecord = z.infer<typeof extensionSettingsPanelRecordSchema>;\nexport type ExtensionSettingDefinitionRecord = z.infer<typeof extensionSettingDefinitionRecordSchema>;\nexport type ExtensionSettingValueRecord = z.infer<typeof extensionSettingValueRecordSchema>;\nexport type ListExtensionSettingsResponse = z.infer<typeof listExtensionSettingsResponseSchema>;\nexport type UpdateExtensionSettingRequest = z.infer<typeof updateExtensionSettingRequestSchema>;\nexport type WorkbenchExtensionSettingsPanelRecord = z.infer<typeof workbenchExtensionSettingsPanelRecordSchema>;\nexport type ExtensionSettingsSectionRecord = z.infer<typeof extensionSettingsSectionRecordSchema>;\n","import { z } from \"zod\";\nimport { dockedWorkbenchRegions, extensionPanelRegions } from \"../extension-kernel/types/composition\";\nimport {\n extensionCommandPaletteContributionSchema,\n extensionCommandRecordSchema,\n extensionMenuContributionSchema,\n workbenchExtensionAutomationRecordSchema,\n} from \"./commands\";\nimport {\n extensionDiagnosticSchema,\n extensionRecordSchema,\n jsonObjectSchema,\n localizableStringSchema,\n workbenchExtensionWebviewSchema,\n} from \"./common\";\nimport { workbenchExtensionConnectionRecordSchema } from \"./connections\";\nimport { extensionControlsRendererRecordSchema } from \"./controls-renderer\";\nimport { extensionDataTableRendererRecordSchema } from \"./data-table-renderer\";\nimport { extensionCommandPaletteResourceRecordSchema, extensionKanbanRendererRecordSchema } from \"./kanban-renderer\";\nimport { extensionKeybindingRecordSchema } from \"./keybindings\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\nimport { workbenchExtensionPageRecordSchema } from \"./page-metadata\";\nimport { regionSettingsSchema, workbenchPlacementPresentationSchema } from \"./placement-metadata\";\nimport { extensionFileRendererRecordSchema, extensionTreeRendererRecordSchema } from \"./renderers\";\nimport { placementItemSchema } from \"./resource-binding-metadata\";\nimport { extensionSettingDefinitionRecordSchema, extensionSettingsSectionRecordSchema } from \"./settings\";\nimport { viewToolbarActionSchema } from \"./view-toolbar-action\";\n\nconst contributionRefSchema = <Kind extends string>(kind: Kind) =>\n z.object({ extensionId: z.string(), kind: z.literal(kind), id: z.string() });\n\nconst commandRefSchema = contributionRefSchema(\"command\");\nconst modeRefSchema = contributionRefSchema(\"mode\");\nconst pageRefSchema = contributionRefSchema(\"page\");\nconst resourceKindRefSchema = contributionRefSchema(\"resource-kind\");\nconst settingsSectionRefSchema = contributionRefSchema(\"settings-section\");\nconst statusRefSchema = contributionRefSchema(\"status\");\nconst viewRefSchema = contributionRefSchema(\"view\");\n\nconst normalizedWhenSchema = z.object({\n mode: z.union([modeRefSchema, z.array(modeRefSchema)]).optional(),\n source: z.array(z.enum([\"cli\", \"dashboard\", \"api\", \"schedule\", \"event\", \"automation\", \"command-panel\"])).optional(),\n view: z.union([viewRefSchema, z.array(viewRefSchema)]).optional(),\n resourceType: z.array(resourceKindRefSchema).optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nconst rendererBaseOmissions = {\n id: true,\n extensionId: true,\n title: true,\n icon: true,\n} as const;\n\nconst commandActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n destructive: z.boolean().optional(),\n command: commandRefSchema,\n});\n\nconst kanbanCreateRowSchema = z.object({\n command: commandRefSchema,\n title: localizableStringSchema.optional(),\n submitLabel: localizableStringSchema.optional(),\n columnParam: z.string().optional(),\n params: z.record(z.string(), z.unknown()).optional(),\n attributesParam: z.string().optional(),\n attachments: z.object({ command: commandRefSchema, resourceParam: z.string(), fileParam: z.string() }).optional(),\n labels: z\n .object({\n cancel: localizableStringSchema.optional(),\n properties: localizableStringSchema.optional(),\n submitError: localizableStringSchema.optional(),\n removeFile: localizableStringSchema.optional(),\n })\n .optional(),\n});\n\nconst webviewBodySchema = z.object({ kind: z.literal(\"webview\"), webview: workbenchExtensionWebviewSchema });\nconst treeBodySchema = extensionTreeRendererRecordSchema\n .omit(rendererBaseOmissions)\n .extend({ kind: z.literal(\"tree\") });\nconst fileBodySchema = extensionFileRendererRecordSchema\n .omit(rendererBaseOmissions)\n .extend({ kind: z.literal(\"file\") });\nconst controlsBodySchema = extensionControlsRendererRecordSchema\n .omit(rendererBaseOmissions)\n .extend({ kind: z.literal(\"controls\") });\nconst kanbanBodySchema = extensionKanbanRendererRecordSchema\n .omit({ ...rendererBaseOmissions, createRow: true, rowActions: true, toolbarActions: true })\n .extend({\n kind: z.literal(\"kanban\"),\n createRow: kanbanCreateRowSchema.optional(),\n rowActions: z.array(commandActionSchema).optional(),\n toolbarActions: z.array(viewToolbarActionSchema.extend({ command: commandRefSchema })).optional(),\n });\nconst dataTableBodySchema = extensionDataTableRendererRecordSchema\n .omit({ ...rendererBaseOmissions, selectionActions: true, rowActions: true, toolbarActions: true })\n .extend({\n kind: z.literal(\"dataTable\"),\n selectionActions: z.array(commandActionSchema).optional(),\n rowActions: z.array(commandActionSchema).optional(),\n toolbarActions: z.array(viewToolbarActionSchema.extend({ command: commandRefSchema })).optional(),\n });\n\nexport const workbenchExtensionViewBodySchema = z.discriminatedUnion(\"kind\", [\n webviewBodySchema,\n treeBodySchema,\n fileBodySchema,\n controlsBodySchema,\n kanbanBodySchema,\n dataTableBodySchema,\n]);\n\nexport const workbenchExtensionViewRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n icon: z.string().optional(),\n body: workbenchExtensionViewBodySchema,\n});\n\nconst workbenchExtensionModeRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n regions: z.array(z.enum(extensionPanelRegions)),\n floatingPanels: z.enum([\"visible\", \"hidden\"]).optional(),\n regionSettings: z.partialRecord(z.enum(dockedWorkbenchRegions), regionSettingsSchema).optional(),\n defaultTheme: contributionRefSchema(\"theme\").optional(),\n chrome: z\n .partialRecord(z.enum([\"nav\", \"sidenav\", \"activity\", \"status\"]), z.union([viewRefSchema, z.literal(false)]))\n .optional(),\n});\n\nconst workbenchExtensionPlacementRecordSchema = workbenchPlacementPresentationSchema.extend({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n mode: modeRefSchema,\n item: placementItemSchema,\n region: z.enum(extensionPanelRegions),\n order: z.number().optional(),\n movableTo: z.array(z.enum(extensionPanelRegions)).optional(),\n});\n\nconst workbenchExtensionViewMenuRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n owner: viewRefSchema,\n view: viewRefSchema,\n side: z.enum([\"left\", \"right\"]),\n group: z.string().optional(),\n placement: z.enum([\"first\", \"default\", \"last\"]).optional(),\n hostTreeHeader: z.enum([\"default\", \"none\"]).optional(),\n hostTreeFooter: z.enum([\"default\", \"none\"]).optional(),\n});\n\nconst workbenchExtensionNavigationItemRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n owner: z.union([modeRefSchema, pageRefSchema]),\n slot: z.enum([\"header\", \"content\", \"footer\"]),\n label: localizableStringSchema,\n icon: z.string().optional(),\n group: z.string().optional(),\n when: normalizedWhenSchema.optional(),\n action: navigationTargetSchema,\n});\n\nconst workbenchExtensionNavigationTreeRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n owner: z.union([modeRefSchema, pageRefSchema]),\n slot: z.enum([\"header\", \"content\", \"footer\"]),\n view: viewRefSchema,\n resourceScope: z.enum([\"project\", \"selection\"]).optional(),\n});\n\nconst workbenchExtensionResourceKindRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n label: localizableStringSchema.optional(),\n icon: z.string().optional(),\n resolveCommand: z.string().optional(),\n resolveManyCommand: z.string().optional(),\n menuSlots: z\n .array(\n z.object({\n id: z.string(),\n placement: z.enum([\"header-primary\", \"header-overflow\", \"context-menu\"]),\n label: localizableStringSchema.optional(),\n access: z.enum([\"owner\", \"public\"]),\n order: z.number().optional(),\n }),\n )\n .optional(),\n});\n\nconst workbenchExtensionSettingsPanelRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n view: viewRefSchema,\n slot: z.object({ id: z.string() }),\n section: settingsSectionRefSchema.optional(),\n});\n\nconst workbenchExtensionStatusBarItemRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n view: viewRefSchema,\n slot: z.object({ id: z.string() }),\n order: z.number().optional(),\n when: normalizedWhenSchema.optional(),\n});\n\nconst workbenchExtensionStatusRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n actions: z\n .array(z.object({ id: z.string(), label: localizableStringSchema, icon: z.string().optional() }))\n .optional(),\n queryHandlerId: z.string(),\n saveHandlerId: z.string().optional(),\n});\n\nexport const workbenchExtensionMetadataSchema = z.object({\n extensions: z.array(extensionRecordSchema),\n commands: z.array(extensionCommandRecordSchema),\n menuContributions: z.array(extensionMenuContributionSchema),\n commandPaletteContributions: z.array(extensionCommandPaletteContributionSchema).optional(),\n modes: z.array(workbenchExtensionModeRecordSchema),\n pages: z.array(workbenchExtensionPageRecordSchema),\n views: z.array(workbenchExtensionViewRecordSchema),\n viewMenus: z.array(workbenchExtensionViewMenuRecordSchema),\n placements: z.array(workbenchExtensionPlacementRecordSchema),\n resourceKinds: z.array(workbenchExtensionResourceKindRecordSchema),\n resourceHierarchyProviders: z\n .array(z.object({ id: z.string(), extensionId: z.string(), resourceKind: resourceKindRefSchema }))\n .optional(),\n navigationItems: z.array(workbenchExtensionNavigationItemRecordSchema),\n navigationTrees: z.array(workbenchExtensionNavigationTreeRecordSchema),\n statusBarItems: z.array(workbenchExtensionStatusBarItemRecordSchema),\n statuses: z.array(workbenchExtensionStatusRecordSchema),\n activityItems: z\n .array(\n z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n icon: z.string(),\n modes: z.array(modeRefSchema),\n placement: z.enum([\"first\", \"default\", \"last\"]).optional(),\n command: commandRefSchema,\n params: jsonObjectSchema.optional(),\n }),\n )\n .optional(),\n settingsSections: z.array(extensionSettingsSectionRecordSchema).optional(),\n settingsPanels: z.array(workbenchExtensionSettingsPanelRecordSchema),\n commandPaletteResources: z.array(extensionCommandPaletteResourceRecordSchema).optional(),\n keybindings: z.array(extensionKeybindingRecordSchema).optional(),\n settingsDefinitions: z.array(extensionSettingDefinitionRecordSchema).optional(),\n automations: z.array(workbenchExtensionAutomationRecordSchema).optional(),\n connections: z.array(workbenchExtensionConnectionRecordSchema).optional(),\n harnesses: z\n .array(\n z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n label: localizableStringSchema.optional(),\n }),\n )\n .optional(),\n skills: z\n .array(\n z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema.optional(),\n }),\n )\n .optional(),\n templates: z\n .array(\n z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema.optional(),\n }),\n )\n .optional(),\n templateTypes: z\n .array(\n z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n label: localizableStringSchema,\n description: localizableStringSchema.optional(),\n order: z.number().optional(),\n commands: z.object({ list: z.string(), read: z.string(), save: z.string(), delete: z.string() }).optional(),\n }),\n )\n .optional(),\n themes: z\n .array(\n z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema.optional(),\n }),\n )\n .optional(),\n diagnostics: z.array(extensionDiagnosticSchema),\n});\n\nexport type WorkbenchExtensionMetadata = z.infer<typeof workbenchExtensionMetadataSchema>;\nexport type WorkbenchExtensionViewRecord = z.infer<typeof workbenchExtensionViewRecordSchema>;\nexport type WorkbenchExtensionViewBody = z.infer<typeof workbenchExtensionViewBodySchema>;\nexport type WorkbenchExtensionStatusRecord = z.infer<typeof workbenchExtensionStatusRecordSchema>;\nexport type WorkbenchExtensionStatusRef = z.infer<typeof statusRefSchema>;\nexport type WorkbenchExtensionHarnessRecord = NonNullable<WorkbenchExtensionMetadata[\"harnesses\"]>[number];\n","import { z } from \"zod\";\nimport {\n extensionFileIconThemeRecordSchema,\n extensionThemeRecordSchema,\n extensionTranslationRecordSchema,\n} from \"./appearance\";\nimport { extensionArtifactMountSchema } from \"./artifacts\";\nimport { extensionHookRecordSchema, extensionMiddlewareRecordSchema, extensionScheduleRecordSchema } from \"./commands\";\nimport { extensionHostCompatibilitySchema } from \"./host-capabilities\";\nimport { workbenchExtensionMetadataSchema } from \"./workbench-metadata\";\n\nconst extensionViewLikeSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n});\n\nexport type { WorkbenchExtensionMetadata, WorkbenchExtensionViewRecord } from \"./workbench-metadata\";\nexport { workbenchExtensionMetadataSchema } from \"./workbench-metadata\";\n\nconst checkWorkbenchMetadataSchema = workbenchExtensionMetadataSchema.pick({\n extensions: true,\n commands: true,\n menuContributions: true,\n commandPaletteContributions: true,\n modes: true,\n pages: true,\n views: true,\n viewMenus: true,\n placements: true,\n resourceKinds: true,\n resourceHierarchyProviders: true,\n navigationItems: true,\n navigationTrees: true,\n statusBarItems: true,\n statuses: true,\n activityItems: true,\n settingsSections: true,\n settingsPanels: true,\n commandPaletteResources: true,\n keybindings: true,\n settingsDefinitions: true,\n diagnostics: true,\n});\n\nexport const extensionsCheckResponseSchema = checkWorkbenchMetadataSchema.extend({\n extensionsRoot: z.string(),\n extensionsRootExists: z.boolean(),\n errorCount: z.number().int().nonnegative(),\n warningCount: z.number().int().nonnegative(),\n middlewares: z.array(extensionMiddlewareRecordSchema),\n hooks: z.array(extensionHookRecordSchema),\n schedules: z.array(extensionScheduleRecordSchema),\n artifactMounts: z.array(extensionArtifactMountSchema),\n themes: z.array(extensionThemeRecordSchema),\n fileIconThemes: z.array(extensionFileIconThemeRecordSchema),\n templates: z.array(extensionViewLikeSchema),\n skills: z.array(extensionViewLikeSchema),\n hostCompatibility: extensionHostCompatibilitySchema,\n});\n\nexport const listExtensionCommandsResponseSchema = z.object({\n commands: workbenchExtensionMetadataSchema.shape.commands,\n translations: z.array(extensionTranslationRecordSchema).optional(),\n diagnostics: workbenchExtensionMetadataSchema.shape.diagnostics,\n});\n\nexport const listExtensionAppearanceResponseSchema = z.object({\n themes: z.array(extensionThemeRecordSchema),\n fileIconThemes: z.array(extensionFileIconThemeRecordSchema),\n translations: z.array(extensionTranslationRecordSchema),\n diagnostics: workbenchExtensionMetadataSchema.shape.diagnostics,\n});\n\nexport type ExtensionsCheckResponse = z.infer<typeof extensionsCheckResponseSchema>;\nexport type ListExtensionCommandsResponse = z.infer<typeof listExtensionCommandsResponseSchema>;\nexport type ListExtensionAppearanceResponse = z.infer<typeof listExtensionAppearanceResponseSchema>;\n","import type { Localizable } from \"../l10n\";\nimport type { ViewFilterGroup, ViewSort } from \"./collection-view\";\nimport type { CommandRef } from \"./commands\";\nimport type { RendererCallback } from \"./context\";\nimport type { JsonValue, Struct } from \"./json\";\nimport type { RendererContributionBase } from \"./renderer-base\";\nimport type { RendererContext, ResourceRef } from \"./resources\";\nimport type { ViewToolbarAction } from \"./view-toolbar-action\";\n\nexport type DataTableRendererResourceRef = ResourceRef;\n\n/** Display settings stored in a data table view. */\nexport interface DataTableRendererSettings {\n /** A groupable column id, or \"none\". */\n grouping: string;\n rowNumbers: boolean;\n wrapRows: boolean;\n showStats: boolean;\n hiddenColumns: string[];\n /** Column ids in display order. An empty list means the declared order. */\n columnOrder: string[];\n}\n\n/** What a data table view shows until a contribution or a saved view says otherwise. */\nexport const DEFAULT_DATA_TABLE_SETTINGS: DataTableRendererSettings = {\n grouping: \"none\",\n rowNumbers: true,\n wrapRows: false,\n showStats: true,\n hiddenColumns: [],\n columnOrder: [],\n};\n\nexport interface DataTableRendererSavedView {\n id: string;\n title: Localizable<string>;\n settings?: Partial<DataTableRendererSettings>;\n filter?: ViewFilterGroup;\n sorts?: ViewSort[];\n}\n\nexport interface DataTableRendererQueryParams {\n renderer: RendererContext;\n /** The view's full filter. Use it only to narrow what you load; the renderer applies it to the rows you return. */\n filter: ViewFilterGroup;\n /** The view's sorts, first level first. The renderer applies them to the rows you return. */\n sorts: ViewSort[];\n settings: DataTableRendererSettings;\n}\n\nexport interface DataTableRendererThemeColor {\n light: string;\n dark: string;\n foreground?: { light: string; dark: string };\n}\n\nexport type DataTableRendererColumnStat =\n | { type: \"unique\" }\n | { type: \"histogram\"; bins?: number }\n | { type: \"top-values\"; limit?: number };\n\nexport type DataTableRendererColumnRenderer =\n | { type: \"json\" }\n | { type: \"color-scale\"; stops: Array<{ value: number; color: DataTableRendererThemeColor }> }\n | {\n type: \"categorical-color\";\n categories: Array<{\n value: string | number | boolean | null;\n color: DataTableRendererThemeColor;\n }>;\n };\n\nexport interface DataTableRendererColumn {\n id: string;\n label?: Localizable<string>;\n /** How filters and sorts compare the column. Without it, the type is inferred from the values. */\n type?: \"string\" | \"number\" | \"boolean\" | \"date\";\n /** Offers the column under Grouping in the table's Display menu. */\n groupable?: boolean;\n /** Whether this column can be filtered. Defaults to true. */\n filterable?: boolean;\n description?: Localizable<string>;\n icon?: string;\n hidden?: boolean;\n stat?: DataTableRendererColumnStat;\n renderer?: DataTableRendererColumnRenderer;\n}\n\nexport interface DataTableRendererRow {\n id: string;\n values: Record<string, JsonValue>;\n resource?: DataTableRendererResourceRef;\n}\n\nexport interface DataTableRendererQueryResult {\n rows: DataTableRendererRow[];\n columns?: DataTableRendererColumn[];\n}\n\nexport interface DataTableRendererRowAction<TParams extends Struct = Struct> {\n id: string;\n label: Localizable<string>;\n icon?: string;\n destructive?: boolean;\n command: CommandRef<TParams, unknown>;\n}\n\nexport interface DataTableRendererSelectionAction<TParams extends Struct = Struct> {\n id: string;\n label: Localizable<string>;\n icon?: string;\n destructive?: boolean;\n command: CommandRef<TParams, unknown>;\n}\n\nexport type DataTableRendererRowActivationHandler = RendererCallback<{ row: DataTableRendererRow }, void>;\n\nexport interface DataTableRendererContribution extends RendererContributionBase {\n toolbarActions?: ViewToolbarAction[];\n columns?: DataTableRendererColumn[];\n query: RendererCallback<DataTableRendererQueryParams, DataTableRendererQueryResult>;\n selectionMode?: \"none\" | \"multiple\";\n selectionActions?: DataTableRendererSelectionAction[];\n rowActions?: DataTableRendererRowAction[];\n onRowActivate?: DataTableRendererRowActivationHandler;\n initialPageSize?: number;\n pageSizeOptions?: number[];\n defaultSettings?: Partial<DataTableRendererSettings>;\n defaultFilter?: ViewFilterGroup;\n defaultSorts?: ViewSort[];\n defaultViews?: DataTableRendererSavedView[];\n defaultActiveViewId?: string;\n}\n","import type { Localizable } from \"../extension-kernel/l10n\";\nimport type {\n DataTableRendererSettings,\n KanbanRendererViewSettings,\n ViewFilterGroup,\n ViewSort,\n} from \"../extension-kernel/types\";\nimport { DEFAULT_DATA_TABLE_SETTINGS } from \"../extension-kernel/types/data-table-renderer\";\nimport { EMPTY_VIEW_FILTER } from \"./collection-view\";\n\nexport type KanbanViewSettings = Omit<KanbanRendererViewSettings, \"ordering\">;\n\nexport const DEFAULT_KANBAN_VIEW_SETTINGS: KanbanViewSettings = {\n viewMode: \"board\",\n columnGrouping: \"none\",\n rowGrouping: \"none\",\n displayProperties: [],\n};\n\ninterface DeclaredView<TSettings> {\n id: string;\n title: Localizable<string>;\n settings?: Partial<TSettings>;\n filter?: ViewFilterGroup;\n sorts?: ViewSort[];\n isDefault?: boolean;\n}\n\ninterface DeclaredViews<TSettings> {\n defaultSettings?: Partial<TSettings>;\n defaultFilter?: ViewFilterGroup;\n defaultSorts?: ViewSort[];\n defaultViews?: DeclaredView<TSettings>[];\n}\n\nconst builtInViews = <TSettings>(base: TSettings, record: DeclaredViews<TSettings>) => {\n const settings: TSettings = { ...base, ...record.defaultSettings };\n if (!record.defaultViews?.length)\n return {\n settings,\n views: [\n {\n id: \"default\",\n title: \"All\" as Localizable<string>,\n settings,\n filter: record.defaultFilter ?? EMPTY_VIEW_FILTER,\n sorts: record.defaultSorts ?? [],\n builtIn: true,\n },\n ],\n };\n return {\n settings,\n views: record.defaultViews.map((view) => ({\n ...view,\n settings: { ...settings, ...view.settings } as TSettings,\n filter: view.filter ?? EMPTY_VIEW_FILTER,\n sorts: view.sorts ?? [],\n builtIn: true,\n })),\n };\n};\n\n/** The views a board offers before anyone saves one. Titles are returned unlocalized. */\nexport const kanbanBuiltInViews = (\n record: DeclaredViews<KanbanViewSettings> & { attributes?: { id: string; type: { kind: string } }[] },\n) => {\n const statuses = record.attributes?.filter((field) => field.type.kind === \"status\") ?? [];\n // A board with one status field is a status board unless it says otherwise.\n const base =\n statuses.length === 1\n ? { ...DEFAULT_KANBAN_VIEW_SETTINGS, columnGrouping: statuses[0]!.id }\n : DEFAULT_KANBAN_VIEW_SETTINGS;\n return builtInViews(base, record);\n};\n\n/** The views a data table offers before anyone saves one. Titles are returned unlocalized. */\nexport const dataTableBuiltInViews = (record: DeclaredViews<DataTableRendererSettings>) =>\n builtInViews(DEFAULT_DATA_TABLE_SETTINGS, record);\n","import { z } from \"zod\";\nimport { jsonObjectSchema } from \"./common\";\n\nexport const enableInstalledExtensionRequestSchema = z.object({\n displayName: z.string(),\n extensionId: z.string(),\n manifest: jsonObjectSchema,\n name: z.string(),\n sourceHash: z.string().nullable().optional(),\n sourceKind: z.enum([\"local_path\", \"git\", \"registry\"]),\n sourcePath: z.string(),\n sourceRef: z.string().nullable().optional(),\n version: z.string().nullable().optional(),\n});\n\nexport const enableInstalledExtensionResponseSchema = z.object({\n enabled: z.literal(true),\n installName: z.string(),\n installedExtensionId: z.string(),\n instanceId: z.string(),\n name: z.string(),\n projectId: z.string(),\n});\n\nexport const projectExtensionInstanceSchema = z.object({\n id: z.string(),\n projectId: z.string(),\n extensionId: z.string(),\n installedExtensionId: z.string(),\n installName: z.string(),\n name: z.string(),\n displayName: z.string(),\n version: z.string().nullable().optional(),\n description: z.string().optional(),\n sourcePath: z.string(),\n scope: z.enum([\"repo\", \"global\"]),\n status: z.enum([\"pending\", \"loaded\", \"error\", \"missing\", \"disabled\"]),\n lastLoadedAt: z.string().nullable().optional(),\n lastError: jsonObjectSchema.nullable().optional(),\n enabled: z.boolean(),\n config: z.record(z.string(), z.unknown()),\n /** A newer pinned release is available for this extension's source. */\n canUpgrade: z.boolean(),\n /** New source is waiting in the extensions root. The project keeps running the adopted version until a person takes it. */\n updateAvailable: z.boolean(),\n});\n\nexport const marketplaceExtensionSchema = z.object({\n installName: z.string(),\n displayName: z.string(),\n description: z.string(),\n installed: z.boolean(),\n origin: z.object({\n kind: z.literal(\"git\"),\n url: z.string(),\n path: z.string(),\n ref: z.string(),\n }),\n publisher: z.string().optional(),\n});\n\nexport const listProjectExtensionsResponseSchema = z.object({\n extensions: z.array(projectExtensionInstanceSchema),\n marketplace: z.array(marketplaceExtensionSchema),\n});\n\nexport const setProjectExtensionEnabledRequestSchema = z.object({\n enabled: z.boolean(),\n});\n\nexport const setExtensionAutomationEnabledRequestSchema = z.object({\n enabled: z.boolean(),\n});\n\nexport const upgradeProjectExtensionResponseSchema = z.object({\n changed: z.boolean(),\n extension: projectExtensionInstanceSchema,\n});\n\nexport const installMarketplaceExtensionResponseSchema = z.object({\n extension: projectExtensionInstanceSchema,\n});\n\n/**\n * A folder dropped on the extension panel. Each file's name is its path relative to the folder\n * root, so one field carries both the content and where it goes.\n */\nexport const addLocalExtensionFolderRequestSchema = z.object({\n name: z.string().min(1),\n // A form with one file sends a single value, not a list.\n files: z.preprocess(\n (value) => (Array.isArray(value) ? value : [value]),\n z.array(z.instanceof(File).meta({ type: \"string\", format: \"binary\" })).min(1),\n ),\n});\n\nexport const addLocalExtensionFolderResponseSchema = z.object({\n extension: projectExtensionInstanceSchema,\n});\n\nexport const setupProjectExtensionResponseSchema = z.object({\n extensionId: z.string(),\n name: z.string(),\n installName: z.string(),\n installedSkills: z.array(\n z.object({\n id: z.string(),\n extensionId: z.string(),\n skillKey: z.string(),\n installedAgents: z.array(z.string()),\n }),\n ),\n});\n\nexport type EnableInstalledExtensionRequest = z.infer<typeof enableInstalledExtensionRequestSchema>;\nexport type EnableInstalledExtensionResponse = z.infer<typeof enableInstalledExtensionResponseSchema>;\nexport type ProjectExtensionInstance = z.infer<typeof projectExtensionInstanceSchema>;\nexport type MarketplaceExtension = z.infer<typeof marketplaceExtensionSchema>;\nexport type ListProjectExtensionsResponse = z.infer<typeof listProjectExtensionsResponseSchema>;\nexport type SetProjectExtensionEnabledRequest = z.infer<typeof setProjectExtensionEnabledRequestSchema>;\nexport type SetExtensionAutomationEnabledRequest = z.infer<typeof setExtensionAutomationEnabledRequestSchema>;\nexport type UpgradeProjectExtensionResponse = z.infer<typeof upgradeProjectExtensionResponseSchema>;\nexport type InstallMarketplaceExtensionResponse = z.infer<typeof installMarketplaceExtensionResponseSchema>;\nexport type AddLocalExtensionFolderResponse = z.infer<typeof addLocalExtensionFolderResponseSchema>;\nexport type SetupProjectExtensionResponse = z.infer<typeof setupProjectExtensionResponseSchema>;\n","import { z } from \"zod\";\nimport { extensionsCheckResponseSchema } from \"./check\";\nimport { projectExtensionInstanceSchema } from \"./install\";\n\nconst installNameSchema = z\n .string()\n .min(1)\n .refine(\n (name) => name !== \".\" && name !== \"..\" && !/[\\\\/:]/.test(name) && name.trim().length > 0,\n \"Install name must be one folder name.\",\n );\n\nexport const installExtensionRequestSchema = z\n .object({\n source: z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"catalog\"), name: z.string().min(1), ref: z.string().min(1).optional() }).strict(),\n z\n .object({ kind: z.literal(\"project-folder\"), path: z.string().min(1), development: z.boolean().optional() })\n .strict(),\n ]),\n installName: installNameSchema.optional(),\n force: z.boolean().optional(),\n skipInstall: z.boolean().optional(),\n })\n .strict();\n\nconst formBoolean = z\n .enum([\"true\", \"false\"])\n .optional()\n .transform((value) => value === \"true\");\n\nexport const uploadExtensionRequestSchema = z\n .object({\n kind: z.literal(\"upload\"),\n installName: installNameSchema.optional(),\n folderName: installNameSchema,\n files: z.preprocess(\n (value) => (Array.isArray(value) ? value : [value]),\n z.array(z.instanceof(File).meta({ type: \"string\", format: \"binary\" })).min(1),\n ),\n force: formBoolean,\n skipInstall: formBoolean,\n development: formBoolean,\n })\n .strict();\n\nexport const installedExtensionSourceSchema = z.object({\n check: extensionsCheckResponseSchema,\n installName: z.string(),\n manifest: z.record(z.string(), z.unknown()),\n metadata: z.object({\n id: z.string(),\n name: z.string(),\n displayName: z.string(),\n version: z.string(),\n description: z.string().optional(),\n enginesPstdio: z.string(),\n }),\n source: z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"local\"), path: z.string(), ref: z.string().optional() }),\n z.object({ kind: z.literal(\"named\"), name: z.string(), ref: z.string() }),\n ]),\n sourceHash: z.string(),\n targetPath: z.string(),\n});\nexport const installExtensionResponseSchema = z.object({\n source: installedExtensionSourceSchema,\n extension: projectExtensionInstanceSchema,\n});\nexport const extensionDiagnosticsResponseSchema = z.object({\n roots: z.array(\n z.object({\n scope: z.enum([\"repo\", \"user\"]),\n path: z.string(),\n check: extensionsCheckResponseSchema,\n }),\n ),\n});\nexport type InstallExtensionRequest = z.infer<typeof installExtensionRequestSchema>;\nexport type UploadExtensionRequest = z.infer<typeof uploadExtensionRequestSchema>;\nexport type InstallExtensionResponse = z.infer<typeof installExtensionResponseSchema>;\nexport type InstalledExtensionSource = z.infer<typeof installedExtensionSourceSchema>;\nexport type ExtensionDiagnosticsResponse = z.infer<typeof extensionDiagnosticsResponseSchema>;\n","import { z } from \"zod\";\nimport { extensionResourceRefSchema } from \"./extensions\";\nimport { jsonObjectSchema } from \"./extensions/common\";\n\nexport const automationRunStatusSchema = z.enum([\"queued\", \"running\", \"succeeded\", \"failed\", \"cancelled\", \"rejected\"]);\n\nexport const issueAutomationTokenInputSchema = z\n .object({\n name: z.string().trim().min(1).max(120),\n projectId: z.string().min(1),\n principalId: z.string().uuid().optional(),\n commandScopes: z.array(z.string().min(1)).min(1),\n expiresInSeconds: z\n .number()\n .int()\n .positive()\n .max(365 * 24 * 60 * 60),\n })\n .strict();\n\nexport const automationTokenRecordSchema = z.object({\n id: z.string(),\n principalId: z.string(),\n name: z.string(),\n tokenPrefix: z.string(),\n projectId: z.string(),\n commandScopes: z.array(z.string()),\n expiresAt: z.string(),\n lastUsedAt: z.string().nullable(),\n revokedAt: z.string().nullable(),\n createdAt: z.string(),\n});\n\nexport const issueAutomationTokenResponseSchema = automationTokenRecordSchema.extend({ token: z.string() });\nexport const listAutomationTokensResponseSchema = z.object({ tokens: z.array(automationTokenRecordSchema) });\n\nexport const createAutomationRunInputSchema = z\n .object({\n commandId: z.string().min(1),\n input: z\n .object({\n workspaceId: z.string().optional(),\n params: jsonObjectSchema.optional(),\n resource: extensionResourceRefSchema.optional(),\n metadata: jsonObjectSchema.optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const automationRunErrorSchema = z.object({\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n});\n\nexport const automationRunSchema = z.object({\n id: z.string(),\n projectId: z.string(),\n commandId: z.string(),\n status: automationRunStatusSchema,\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n finishedAt: z.string().nullable(),\n result: z.unknown().nullable(),\n error: automationRunErrorSchema.nullable(),\n});\n\nexport const automationRunEventSchema = z.object({\n cursor: z.number().int().nonnegative(),\n runId: z.string(),\n type: z.string(),\n payload: jsonObjectSchema,\n createdAt: z.string(),\n});\n\nexport const listAutomationRunEventsResponseSchema = z.object({ events: z.array(automationRunEventSchema) });\n\nexport type AutomationRunStatus = z.infer<typeof automationRunStatusSchema>;\nexport type IssueAutomationTokenInput = z.infer<typeof issueAutomationTokenInputSchema>;\nexport type AutomationTokenRecord = z.infer<typeof automationTokenRecordSchema>;\nexport type IssueAutomationTokenResponse = z.infer<typeof issueAutomationTokenResponseSchema>;\nexport type ListAutomationTokensResponse = z.infer<typeof listAutomationTokensResponseSchema>;\nexport type CreateAutomationRunInput = z.infer<typeof createAutomationRunInputSchema>;\nexport type AutomationRunError = z.infer<typeof automationRunErrorSchema>;\nexport type AutomationRun = z.infer<typeof automationRunSchema>;\nexport type AutomationRunEvent = z.infer<typeof automationRunEventSchema>;\nexport type ListAutomationRunEventsResponse = z.infer<typeof listAutomationRunEventsResponseSchema>;\n","import { z } from \"zod\";\nimport { viewFilterConditionSchema, viewFilterGroupSchema, viewSortsSchema } from \"./extensions/collection-view\";\nimport { dataTableRendererSettingsSchema } from \"./extensions/data-table-renderer\";\nimport { kanbanViewSettingsSchema } from \"./extensions/kanban-renderer\";\n\nexport const boardFieldSchema = z.object({\n id: z.string(),\n label: z.string(),\n kind: z.enum([\"enum\", \"enum-multi\", \"status\", \"string\", \"date\", \"number\", \"boolean\", \"user\"]),\n /** Derived from `kind`. Never stored. */\n conditions: z.array(viewFilterConditionSchema),\n filterable: z.boolean(),\n groupable: z.boolean(),\n sortable: z.boolean(),\n displayable: z.boolean(),\n legacyValues: z.record(z.string(), z.boolean()).optional(),\n options: z.array(z.object({ value: z.string(), label: z.string() })).optional(),\n});\nexport const boardSummarySchema = z.object({\n id: z.string(),\n title: z.string(),\n kind: z.enum([\"kanban\", \"dataTable\"]),\n extensionId: z.string().nullable(),\n fields: z.array(boardFieldSchema),\n});\nexport const boardViewSettingsSchema = z.union([kanbanViewSettingsSchema, dataTableRendererSettingsSchema]);\nexport const boardViewSchema = z.object({\n id: z.string(),\n boardId: z.string(),\n title: z.string(),\n settings: boardViewSettingsSchema,\n filter: viewFilterGroupSchema,\n sorts: viewSortsSchema,\n builtIn: z.boolean(),\n});\nexport const boardViewsSchema = z.object({ views: z.array(boardViewSchema), defaultViewId: z.string() });\nexport const boardViewUpdateSchema = z\n .object({\n title: z.string().trim().min(1).optional(),\n // Strict, so a table setting never matches the board shape and loses its keys.\n settings: z\n .union([kanbanViewSettingsSchema.partial().strict(), dataTableRendererSettingsSchema.partial().strict()])\n .optional(),\n filter: viewFilterGroupSchema.optional(),\n sorts: viewSortsSchema.optional(),\n })\n .strict();\nexport const boardViewCreateSchema = boardViewUpdateSchema.extend({\n title: z.string().trim().min(1),\n copyFrom: z.string().optional(),\n});\nexport type BoardSummary = z.infer<typeof boardSummarySchema>;\nexport type BoardField = z.infer<typeof boardFieldSchema>;\nexport type BoardView = z.infer<typeof boardViewSchema>;\nexport type BoardViews = z.infer<typeof boardViewsSchema>;\nexport type BoardViewSettings = z.infer<typeof boardViewSettingsSchema>;\nexport type BoardViewCreate = z.infer<typeof boardViewCreateSchema>;\nexport type BoardViewUpdate = z.infer<typeof boardViewUpdateSchema>;\n\n// The sync key is derived from the database's unique collection scope, never stored twice.\nexport const boardDefaultSyncRow = <\n T extends { project_id: string; extension_instance_id: string | null; board_id: string },\n>(\n row: T,\n) => ({ ...row, id: JSON.stringify([row.project_id, row.extension_instance_id, row.board_id]) });\n","const numericIdentifier = \"(?:0|[1-9]\\\\d*)\";\nconst caretTerm = new RegExp(`^\\\\^(${numericIdentifier}\\\\.${numericIdentifier}\\\\.${numericIdentifier})$`);\n\n/**\n * Only caret terms are accepted because each one stops below the next breaking version, so a\n * declaration can never claim support for a breaking API that did not exist when it was written.\n * Returns the minimum API version of each term.\n */\nexport const parseExtensionApiDeclaration = (declaration: string) => {\n const minimums = declaration.split(\"||\").map((term) => caretTerm.exec(term.trim())?.[1]);\n return minimums.every((minimum): minimum is string => minimum !== undefined) ? minimums : null;\n};\n\nexport const supportsExtensionApiVersion = (declaration: string, hostVersion: string) => {\n const minimums = parseExtensionApiDeclaration(declaration);\n // Rebuilt from the parsed terms because semver range syntax does not accept every whitespace `trim` removes.\n return minimums !== null && Bun.semver.satisfies(hostVersion, minimums.map((minimum) => `^${minimum}`).join(\" || \"));\n};\n","import { dockedWorkbenchRegions, type ResourceKindDefinition } from \"./types/composition\";\nimport type { ContributionKind } from \"./types/contribution-identity\";\n\nconst hostRef = <Kind extends ContributionKind>(kind: Kind, id: string) => ({ extensionId: \"pstdio\", kind, id });\n\nexport const workbenchModes = {\n project: hostRef(\"mode\", \"project\"),\n sessions: hostRef(\"mode\", \"sessions\"),\n settings: hostRef(\"mode\", \"settings\"),\n};\n\nexport const workbenchModeDefinitions = {\n project: { ref: workbenchModes.project, regions: dockedWorkbenchRegions },\n sessions: { ref: workbenchModes.sessions, regions: dockedWorkbenchRegions },\n settings: { ref: workbenchModes.settings, regions: dockedWorkbenchRegions },\n} as const;\n\nconst hostResourceKind = (\n id: string,\n label: string,\n menuSlots: ResourceKindDefinition[\"menuSlots\"],\n): ResourceKindDefinition => ({\n id,\n ref: hostRef(\"resource-kind\", id),\n label,\n menuSlots,\n});\n\nconst headerMenuSlots = [\n { id: \"headerPrimary\", placement: \"header-primary\", access: \"public\" },\n { id: \"headerOverflow\", placement: \"header-overflow\", access: \"public\" },\n] as const;\n\nexport const workbenchResourceKindDefinitions = {\n project: hostResourceKind(\"project\", \"Extension\", headerMenuSlots),\n session: hostResourceKind(\"session\", \"Session\", headerMenuSlots),\n workspace: hostResourceKind(\"workspace\", \"Workspace\", headerMenuSlots),\n};\n\nexport const workbenchResourceKinds = {\n project: workbenchResourceKindDefinitions.project.ref,\n session: workbenchResourceKindDefinitions.session.ref,\n workspace: workbenchResourceKindDefinitions.workspace.ref,\n};\n\nexport const workbenchPages = {\n start: hostRef(\"page\", \"start\"),\n sessions: hostRef(\"page\", \"sessions\"),\n session: hostRef(\"page\", \"session\"),\n workspaces: hostRef(\"page\", \"workspaces\"),\n workspace: hostRef(\"page\", \"workspace\"),\n};\n\nexport const workbenchPageDefinitions = {\n start: {\n ref: workbenchPages.start,\n mode: workbenchModes.project,\n path: \"\",\n primary: { cardinality: \"one\", resourceKinds: [] },\n },\n sessions: {\n ref: workbenchPages.sessions,\n mode: workbenchModes.sessions,\n path: \"sessions\",\n primary: { cardinality: \"one\", resourceKinds: [] },\n },\n session: {\n ref: workbenchPages.session,\n mode: workbenchModes.sessions,\n path: \"session\",\n primary: { cardinality: \"one\", resourceKinds: [\"session\", \"session-draft\"] },\n },\n workspaces: {\n ref: workbenchPages.workspaces,\n mode: workbenchModes.project,\n path: \"workspaces\",\n primary: { cardinality: \"one\", resourceKinds: [] },\n },\n workspace: {\n ref: workbenchPages.workspace,\n mode: workbenchModes.project,\n path: \"workspace\",\n primary: { cardinality: \"many\", resourceKinds: [\"workspace\"] },\n },\n} as const;\n\nexport const workbenchPanels = {\n projectSession: hostRef(\"placement\", \"project-session\"),\n};\n\nexport const workbenchPanelDefinitions = {\n projectSession: {\n ref: workbenchPanels.projectSession,\n mode: workbenchModes.project,\n cardinality: \"many\",\n resourceKinds: [\"session\", \"session-draft\"],\n },\n} as const;\n\nexport const workbenchSlots = {\n projectSettings: hostRef(\"settings-panel\", \"project.settings\"),\n /** Custom controls shown in the owner's extension detail Settings tab. */\n extensionSettings: hostRef(\"settings-panel\", \"extension.settings\"),\n statusBarLeading: hostRef(\"status-bar-item\", \"status-bar.leading\"),\n statusBarTrailing: hostRef(\"status-bar-item\", \"status-bar.trailing\"),\n};\n","import type { CommandRef } from \"./types/commands\";\nimport type { EventRef } from \"./types/events\";\nimport type { Struct } from \"./types/json\";\n\ninterface ExternalRefInput {\n extensionId: string;\n id: string;\n}\n\ninterface ExtensionOwner {\n publisher: string;\n name: string;\n}\n\ninterface CommandRefFactory {\n <TParams extends Struct = Struct, TResult = unknown>(input: ExternalRefInput): CommandRef<TParams, TResult>;\n forExtension(\n owner: ExtensionOwner,\n ): <TParams extends Struct = Struct, TResult = unknown>(id: string) => CommandRef<TParams, TResult>;\n}\n\nconst createCommandRef = <TParams extends Struct = Struct, TResult = unknown>(\n input: ExternalRefInput,\n): CommandRef<TParams, TResult> => ({ ...input, kind: \"command\" });\n\n/** Build a typed cross-extension command reference. */\nexport const commandRef: CommandRefFactory = Object.assign(createCommandRef, {\n forExtension:\n (owner: ExtensionOwner) =>\n <TParams extends Struct = Struct, TResult = unknown>(id: string): CommandRef<TParams, TResult> =>\n createCommandRef({ extensionId: `${owner.publisher}.${owner.name}`, id }),\n});\n\n/** Build a typed event reference from separate ownership and local identity. */\nexport const eventRef = <TPayload extends Struct = Struct>(input: ExternalRefInput): EventRef<TPayload> => ({\n ...input,\n kind: \"event\",\n});\n","import type { Struct } from \"./types/json\";\nimport type { SlotOptions, SlotRef, UiSlotKind } from \"./types/slots\";\n\n/**\n * Define a host-owned UI slot that extension contributions can target.\n */\nexport const defineSlot = <TContext extends Struct = Struct, TKind extends UiSlotKind = UiSlotKind>(\n id: string,\n options: SlotOptions<TKind>,\n): SlotRef<TContext, TKind> => ({\n id,\n kind: options.kind,\n label: options.label,\n description: options.description,\n metadata: options.metadata,\n});\n","import { workbenchResourceKinds } from \"./builtin-refs\";\nimport { eventRef } from \"./refs\";\nimport { defineSlot } from \"./slots\";\nimport type { Struct } from \"./types/json\";\nimport type { ResourceAnchor } from \"./types/resources\";\nimport type { ExtensionWorkspace } from \"./types/workspaces\";\n\nconst hostEventRef = <TPayload extends Struct>(id: string) => eventRef<TPayload>({ extensionId: \"pstdio\", id });\n\nconst resourceMenuSlotRef = (resourceKind: { id: string }, id: string) =>\n defineSlot<Struct, \"menu\">(`${resourceKind.id}.${id}`, { kind: \"menu\" });\n\n/** Provider that owns the workspace location and lifecycle. */\nexport type WorkspaceType = string;\n\nexport interface WorkspaceProvisionPayload {\n projectId: string;\n workspaceId: string;\n workspace: ExtensionWorkspace;\n /** Absolute local workspace directory to materialize files into. */\n workspaceDir: string;\n /** Local home directory of the project, absent when its default workspace has no local target. */\n projectDir?: string;\n providerId: string;\n}\n\nexport interface SessionLifecyclePayload {\n projectId: string;\n sessionId: string;\n sessionStatus?: string;\n originalSessionId?: string;\n workspace?: ExtensionWorkspace;\n workspaceId?: string;\n workspaceDir?: string;\n branch?: string;\n anchors?: ResourceAnchor[];\n}\n\nexport interface WorktreeRemovedPayload {\n projectId: string;\n repoPath?: string;\n worktreePath: string;\n workspace?: ExtensionWorkspace;\n workspaceId?: string;\n anchors?: ResourceAnchor[];\n}\n\nexport interface CommitPayload {\n projectId: string;\n repoPath?: string;\n worktreePath?: string;\n branch?: string;\n commitSha?: string;\n workspace?: ExtensionWorkspace;\n anchors?: ResourceAnchor[];\n}\n\nexport interface RebasePayload {\n projectId: string;\n repoPath?: string;\n worktreePath?: string;\n branch?: string;\n workspace?: ExtensionWorkspace;\n anchors?: ResourceAnchor[];\n}\n\nexport interface MergePayload extends CommitPayload {}\n\nexport interface ConflictPayload {\n projectId: string;\n operation: \"rebase\" | \"merge\";\n repoPath?: string;\n worktreePath?: string;\n branch?: string;\n workspace?: ExtensionWorkspace;\n anchors?: ResourceAnchor[];\n}\n\nexport const projectSlots = {\n sidenav: defineSlot<Struct, \"panel\">(\"project.sidenav\", { kind: \"panel\" }),\n headerPrimary: resourceMenuSlotRef(workbenchResourceKinds.project, \"headerPrimary\"),\n headerOverflow: resourceMenuSlotRef(workbenchResourceKinds.project, \"headerOverflow\"),\n settingsPanels: defineSlot<Struct, \"settings\">(\"project.settingsPanels\", { kind: \"settings\" }),\n};\n\nexport const sessionSlots = {\n headerPrimary: resourceMenuSlotRef(workbenchResourceKinds.session, \"headerPrimary\"),\n headerOverflow: resourceMenuSlotRef(workbenchResourceKinds.session, \"headerOverflow\"),\n};\n\nexport const workspaceSlots = {\n headerPrimary: resourceMenuSlotRef(workbenchResourceKinds.workspace, \"headerPrimary\"),\n headerOverflow: resourceMenuSlotRef(workbenchResourceKinds.workspace, \"headerOverflow\"),\n sidenav: defineSlot<Struct, \"panel\">(\"workspace.sidenav\", { kind: \"panel\" }),\n};\n\nexport const projectEvents = {\n opened: hostEventRef<{ projectId: string }>(\"project.opened\"),\n};\n\n/** View dependencies delivered by the host when synced project data changes. */\nexport const viewDataEvents = {\n boardViewsChanged: hostEventRef<{ projectId: string }>(\"view.board-views.changed\"),\n resourceAnchorsChanged: hostEventRef<{ projectId: string }>(\"view.resource-anchors.changed\"),\n sessionsChanged: hostEventRef<{ projectId: string }>(\"view.sessions.changed\"),\n workspacesChanged: hostEventRef<{ projectId: string }>(\"view.workspaces.changed\"),\n repositoriesChanged: hostEventRef<{ projectId: string }>(\"view.repositories.changed\"),\n};\n\nexport const sessionEvents = {\n started: hostEventRef<SessionLifecyclePayload & { anchors?: ResourceAnchor[] }>(\"session.started\"),\n resumed: hostEventRef<SessionLifecyclePayload>(\"session.resumed\"),\n /** The session asked the person a question and waits for the answer. */\n awaitingInput: hostEventRef<SessionLifecyclePayload>(\"session.awaitingInput\"),\n /** The run ended with status `completed`. */\n succeeded: hostEventRef<SessionLifecyclePayload>(\"session.succeeded\"),\n /** The run ended with status `failed`. */\n failed: hostEventRef<SessionLifecyclePayload>(\"session.failed\"),\n /**\n * The run ended with any terminal status: `completed`, `failed`, `cancelled`, or `disconnected`.\n * Read `sessionStatus` to tell them apart.\n */\n completed: hostEventRef<SessionLifecyclePayload & { anchors?: ResourceAnchor[] }>(\"session.completed\"),\n};\n\nexport const workspaceEvents = {\n created: hostEventRef<{ workspace: ExtensionWorkspace }>(\"workspace.created\"),\n /** Awaited: harness extensions sync their agent dir into the working tree. Gates workspace readiness. */\n provision: hostEventRef<WorkspaceProvisionPayload>(\"workspace.provision\"),\n /** Fire-and-forget after the workspace is ready: background setup (deps install, builds). */\n ready: hostEventRef<WorkspaceProvisionPayload>(\"workspace.ready\"),\n /** @deprecated Use workspaceEvents.deleted. */\n archived: hostEventRef<{ workspace: ExtensionWorkspace }>(\"workspace.archived\"),\n deleted: hostEventRef<{ workspace: ExtensionWorkspace }>(\"workspace.deleted\"),\n};\n\nexport const worktreeEvents = {\n removed: hostEventRef<WorktreeRemovedPayload>(\"worktree.removed\"),\n};\n\nexport const gitEvents = {\n committed: hostEventRef<CommitPayload>(\"git.committed\"),\n rebased: hostEventRef<RebasePayload>(\"git.rebased\"),\n merged: hostEventRef<MergePayload>(\"git.merged\"),\n conflicted: hostEventRef<ConflictPayload>(\"git.conflicted\"),\n};\n","import type { TerminalSessionOperation, TerminalSessionResult } from \"../../extensions.terminal\";\nimport type { CreateNotificationInput, Notification, NotificationStatus } from \"../../notifications/types\";\nimport type { CommandOutcome } from \"./commands\";\nimport type { ExtensionBlobRef } from \"./context\";\nimport type { JsonObject, JsonValue } from \"./json\";\nimport type { NavigationTarget } from \"./navigation-target\";\nimport type { PageLocation, PageParamValue } from \"./pages\";\nimport type { ResourceRef } from \"./resources\";\n\nexport type { ExtensionBlobRef } from \"./context\";\n\nexport const WEBVIEW_HOST_CAPABILITY_VERSION = 1;\n\n// Capabilities a webview must declare in its manifest before the bridge will route them.\nexport const WEBVIEW_DECLARABLE_CAPABILITIES = [\n \"clipboard.write\",\n \"commands.execute\",\n \"commands.stream\",\n \"navigation.open\",\n \"page.params.update\",\n \"placement.close\",\n \"notification.show\",\n \"notification.action\",\n \"notification.resolve\",\n \"notification.dismiss\",\n \"preferences.get\",\n \"preferences.set\",\n \"extension.settings.all\",\n \"extension.settings.get\",\n \"extension.settings.set\",\n \"extension.settings.delete\",\n \"terminal.session\",\n \"files.upload\",\n \"files.list\",\n \"files.delete\",\n] as const;\n\n// Capabilities that must be declared with a scope suffix (`name:scope`). Each\n// declaration grants one scope; a bare declaration is invalid.\nexport const WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES = [\"artifacts.read\"] as const;\n\n// Runtime plumbing the guest invokes on its own (e.g. keyboard forwarding). Enabled\n// wherever the host implements them, with no manifest declaration required.\nexport const ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES = [\"host.dispatchKeyboardEvent\"] as const;\n\nexport const WEBVIEW_HOST_CAPABILITIES = [\n ...WEBVIEW_DECLARABLE_CAPABILITIES.filter((capability) => capability !== \"clipboard.write\"),\n ...WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES,\n ...ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES,\n] as const;\n\nexport type WebviewHostCapability = (typeof WEBVIEW_HOST_CAPABILITIES)[number];\nexport type WebviewDeclarableCapability = (typeof WEBVIEW_DECLARABLE_CAPABILITIES)[number];\nexport type WebviewScopedDeclarableCapability = (typeof WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES)[number];\nexport type WebviewCapabilityDeclaration =\n | WebviewDeclarableCapability\n | `${WebviewDeclarableCapability}@${typeof WEBVIEW_HOST_CAPABILITY_VERSION}`\n | `${WebviewScopedDeclarableCapability}:${string}`;\n\nexport interface WebviewCommandsExecuteParams {\n commandId: string;\n params?: JsonObject;\n workspaceId?: string;\n resource?: ResourceRef;\n metadata?: JsonObject;\n}\n\nexport type WebviewCommandsStreamParams =\n | ({ operation: \"start\"; streamId: string } & WebviewCommandsExecuteParams)\n | { operation: \"cancel\"; streamId: string }\n | { operation: \"ack\"; streamId: string; bytes: number };\n\nexport type WebviewCommandStreamEvent =\n | { streamId: string; type: \"data\"; data: JsonValue }\n | { streamId: string; type: \"end\"; outcome: CommandOutcome };\n\nexport interface WebviewNavigationOpenParams {\n target: NavigationTarget;\n}\n\nexport interface WebviewNotificationShowParams {\n level: \"info\" | \"success\" | \"warning\" | \"error\";\n title: string;\n message?: string;\n}\n\nexport type WebviewNotificationActionParams = Omit<CreateNotificationInput, \"projectId\">;\nexport interface WebviewNotificationResolveParams {\n id?: string;\n dedupeKey?: string;\n status?: Extract<NotificationStatus, \"done\" | \"dismissed\" | \"expired\">;\n}\nexport type WebviewNotificationDismissParams = Pick<WebviewNotificationResolveParams, \"id\" | \"dedupeKey\">;\n\nexport interface WebviewPreferencesGetParams {\n /** Access to another extension's registered names is deprecated. Use names owned by the caller. */\n name: string;\n scope?: {\n scope: \"default\" | \"user\" | \"project\" | \"workspace\" | \"extension\" | \"session\";\n scopeId?: string;\n };\n}\n\nexport interface WebviewPreferencesSetParams extends WebviewPreferencesGetParams {\n value: boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;\n}\n\nexport interface WebviewPageParamsUpdateParams {\n /** Merge overrides into the active page. Null resets a name to its declared default. */\n params: Readonly<Record<string, PageParamValue | null>>;\n}\n\nexport interface WebviewExtensionSettingKeyParams {\n key: string;\n}\n\nexport interface WebviewExtensionSettingSetParams extends WebviewExtensionSettingKeyParams {\n value: unknown;\n}\n\nexport type WebviewFileScope = { type: \"project\" } | { type: \"resource\"; id: string } | { type: string; id?: string };\n\nexport interface WebviewFilesUploadParams {\n name: string;\n data: Uint8Array | ArrayBuffer;\n mimeType?: string;\n scope?: WebviewFileScope;\n}\n\nexport interface WebviewFilesListParams {\n scope?: WebviewFileScope;\n}\n\nexport interface WebviewFilesDeleteParams {\n id: string;\n}\n\n// One bridge method covers every artifact read; the operation is in the params,\n// mirroring terminal.session. The mount is always the mount's local id.\nexport type WebviewArtifactsReadParams =\n | { op: \"list\"; mount: string; prefix?: string }\n | { op: \"readText\"; mount: string; path: string }\n | { op: \"imageUrl\"; mount: string; path: string };\n\nexport interface WebviewArtifactFile {\n path: string;\n size: number;\n mediaType: string;\n}\n\nexport interface WebviewKeyboardEventParams {\n key?: string;\n code?: string;\n ctrlKey?: boolean;\n metaKey?: boolean;\n altKey?: boolean;\n shiftKey?: boolean;\n repeat?: boolean;\n}\n\nexport interface WebviewHostCapabilityParams {\n \"commands.execute\": WebviewCommandsExecuteParams;\n \"commands.stream\": WebviewCommandsStreamParams;\n \"page.params.update\": WebviewPageParamsUpdateParams;\n \"navigation.open\": WebviewNavigationOpenParams;\n \"placement.close\": Record<string, never>;\n \"notification.show\": WebviewNotificationShowParams;\n \"notification.action\": WebviewNotificationActionParams;\n \"notification.resolve\": WebviewNotificationResolveParams;\n \"notification.dismiss\": WebviewNotificationDismissParams;\n \"preferences.get\": WebviewPreferencesGetParams;\n \"preferences.set\": WebviewPreferencesSetParams;\n \"extension.settings.all\": Record<string, never>;\n \"extension.settings.get\": WebviewExtensionSettingKeyParams;\n \"extension.settings.set\": WebviewExtensionSettingSetParams;\n \"extension.settings.delete\": WebviewExtensionSettingKeyParams;\n \"terminal.session\": TerminalSessionOperation;\n \"files.upload\": WebviewFilesUploadParams;\n \"files.list\": WebviewFilesListParams;\n \"files.delete\": WebviewFilesDeleteParams;\n \"artifacts.read\": WebviewArtifactsReadParams;\n \"host.dispatchKeyboardEvent\": WebviewKeyboardEventParams;\n}\n\nexport interface WebviewHostCapabilityResults {\n \"commands.execute\": { outcome: CommandOutcome };\n \"commands.stream\": { operation: \"start\" | \"cancel\" | \"ack\"; accepted: true };\n \"page.params.update\": { location: PageLocation };\n \"navigation.open\": void;\n \"placement.close\": void;\n \"notification.show\": void;\n \"notification.action\": Notification;\n \"notification.resolve\": Notification | { resolved: number; notifications: Notification[] };\n \"notification.dismiss\": Notification | { resolved: number; notifications: Notification[] };\n \"preferences.get\": WebviewPreferencesSetParams[\"value\"] | undefined;\n \"preferences.set\": { name: string; value: WebviewPreferencesSetParams[\"value\"] };\n \"extension.settings.all\": Record<string, unknown>;\n \"extension.settings.get\": unknown;\n \"extension.settings.set\": void;\n \"extension.settings.delete\": void;\n \"terminal.session\": TerminalSessionResult;\n \"files.upload\": ExtensionBlobRef;\n \"files.list\": { files: ExtensionBlobRef[] };\n \"files.delete\": void;\n \"artifacts.read\": WebviewArtifactFile[] | string;\n \"host.dispatchKeyboardEvent\": void;\n}\n\nexport type WebviewHostCapabilityResult<\n Capability extends WebviewHostCapability,\n Params extends WebviewHostCapabilityParams[Capability] = WebviewHostCapabilityParams[Capability],\n> = Capability extends \"artifacts.read\"\n ? Params extends { op: \"list\" }\n ? WebviewArtifactFile[]\n : Params extends { op: \"readText\" | \"imageUrl\" }\n ? string\n : WebviewHostCapabilityResults[Capability]\n : Capability extends \"terminal.session\"\n ? Params extends { operation: \"open\" }\n ? Extract<TerminalSessionResult, { operation: \"open\" }>\n : Params extends { operation: \"write\" | \"resize\" | \"kill\" | \"subscribe\" }\n ? Exclude<TerminalSessionResult, { operation: \"open\" }>\n : TerminalSessionResult\n : WebviewHostCapabilityResults[Capability];\n","import { z } from \"zod\";\n\nexport const fileRecordSchema = z.object({\n id: z.string(),\n project_id: z.string(),\n file_name: z.string(),\n file_kind: z.string(),\n storage_path: z.string(),\n mime_type: z.string().nullable(),\n size_bytes: z.number(),\n hash: z.string().nullable(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport type FileRecord = z.infer<typeof fileRecordSchema>;\n","import { z } from \"zod\";\nimport type {\n HarnessApprovalChannel,\n HarnessEventSink,\n HarnessParams,\n HarnessQuestionChannel,\n HarnessSession,\n HarnessWorkspaceContext,\n} from \"./harness\";\n\nexport const harnessCommandSchema = z.object({\n name: z.string(),\n description: z.string(),\n argumentHelp: z.string().optional(),\n /** Selecting this command tags the draft instead of inserting command text. */\n composer: z\n .object({\n label: z.string(),\n /** Native mode that can confirm this input after submission. */\n modeId: z.string().optional(),\n /** Native action words that cannot be submitted as an objective through this command. */\n reservedArguments: z.array(z.string()).optional(),\n })\n .optional(),\n /** Native availability or combination limit for the current session. */\n disabledReason: z.string().optional(),\n});\nexport const harnessModeActionSchema = z.object({\n id: z.string(),\n label: z.string(),\n /** Shared UI icon name. Omit when no icon represents the native action. */\n icon: z.string().optional(),\n /** A single native text argument. This is not a general form language. */\n argument: z.object({ label: z.string(), value: z.string().optional() }).optional(),\n});\nexport const harnessModeSchema = z.object({\n id: z.string(),\n label: z.string(),\n description: z.string(),\n state: z.string(),\n /** Provider-owned status presentation; the host must not infer it from command names or prose. */\n indicator: z\n .object({ label: z.string(), tone: z.enum([\"neutral\", \"info\", \"success\", \"warning\", \"error\"]) })\n .optional(),\n /** Short native summary displayed in the composer tag. */\n tagText: z.string().optional(),\n /** An advertised native action to invoke when the person closes the tag. */\n closeActionId: z.string().optional(),\n /** An explicit native decision that takes over the composer. */\n confirmation: z\n .object({\n /** Native revision identity. Pass it as the advertised action's argument. */\n id: z.string(),\n title: z.string(),\n actionId: z.string(),\n cancelLabel: z.string().optional(),\n /** Model reported by the native provider for this decision. Omit when unknown. */\n model: z.string().optional(),\n })\n .optional(),\n actions: z.array(harnessModeActionSchema),\n});\nexport const harnessCommandStateSchema = z.object({\n commands: z.array(harnessCommandSchema),\n modes: z.array(harnessModeSchema),\n /** Whether input beginning with a slash name is a native command. */\n slashCommands: z.boolean(),\n});\nexport const harnessOperationSchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"command\"), text: z.string().min(1) }).strict(),\n z\n .object({\n kind: z.literal(\"mode-action\"),\n modeId: z.string(),\n actionId: z.string(),\n argument: z.string().optional(),\n })\n .strict(),\n]);\nexport type HarnessCommandState = z.infer<typeof harnessCommandStateSchema>;\nexport type HarnessOperation = z.infer<typeof harnessOperationSchema>;\nexport type HarnessCommandContext = {\n sessionId: string;\n agentSessionId?: string;\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n model?: string | null;\n params?: HarnessParams;\n};\n/** Discovery also runs before a conversation has a host or native session. */\nexport type HarnessCommandDiscoveryContext = Omit<HarnessCommandContext, \"sessionId\"> & { sessionId?: string };\nexport const draftHarnessCommandInputSchema = z\n .object({\n project_id: z.string().min(1),\n agent: z.string().min(1),\n workspace_id: z.string().optional(),\n model: z.string().optional(),\n params: z.record(z.string(), z.union([z.string(), z.boolean()])).optional(),\n })\n .strict();\nexport type DraftHarnessCommandInput = z.infer<typeof draftHarnessCommandInputSchema>;\nexport const harnessOperationResponseSchema = z.object({\n status: z.enum([\"completed\", \"started\"]),\n message: z.string().optional(),\n});\nexport type HarnessOperationResponse = z.infer<typeof harnessOperationResponseSchema>;\nexport type HarnessOperationResult =\n | { kind: \"completed\"; message?: string; params?: HarnessParams }\n | { kind: \"started\"; session: HarnessSession; params?: HarnessParams };\nexport type PreparedHarnessOperation = {\n /** Controls may run during a turn. Exclusive work acquires the host execution slot. */\n execution: \"control\" | \"exclusive\";\n invoke(input: {\n events: HarnessEventSink;\n approvals?: HarnessApprovalChannel;\n questions?: HarnessQuestionChannel;\n signal?: AbortSignal;\n }): Promise<HarnessOperationResult>;\n};\n","import { z } from \"zod\";\nimport { serializableJsonObjectSchema } from \"./extensions/common\";\n\nexport const initialWorkspaceSchema = z.object({\n provider_id: z.string().min(1),\n params: serializableJsonObjectSchema.default({}),\n});\n\nexport const extensionSetupWarningSchema = z.object({\n code: z.literal(\"extension_setup_failed\"),\n extension: z.string(),\n message: z.string(),\n});\n\nexport const projectSchema = z.object({\n id: z.string(),\n name: z.string(),\n shorthand: z.string(),\n default_agent_id: z.string().nullable(),\n default_agent_model: z.string().nullable(),\n startup_script: z.string().nullable(),\n created_at: z.string(),\n updated_at: z.string(),\n deleted_at: z.string().nullable(),\n extension_warnings: z.array(extensionSetupWarningSchema).optional(),\n});\n\nexport const createProjectInputSchema = z.object({\n name: z.string().trim().min(1).optional(),\n initial_workspace: initialWorkspaceSchema,\n agents: z.array(z.string().min(1)).min(1).optional(),\n});\n\nexport const updateProjectInputSchema = z\n .object({\n name: z.string().trim().min(1).optional(),\n default_agent_id: z.string().min(1).nullable().optional(),\n default_agent_model: z.string().min(1).nullable().optional(),\n })\n .refine((value) => Object.keys(value).length > 0, {\n message: \"At least one field must be provided\",\n });\n\nexport type Project = z.infer<typeof projectSchema>;\nexport type ExtensionSetupWarning = z.infer<typeof extensionSetupWarningSchema>;\nexport type CreateProjectInput = z.infer<typeof createProjectInputSchema>;\nexport type UpdateProjectInput = z.infer<typeof updateProjectInputSchema>;\n","import { z } from \"zod\";\n\nexport const harnessParamValueSchema = z.union([z.string(), z.boolean()]);\nexport const harnessParamsInputSchema = z.record(z.string(), harnessParamValueSchema);\nexport const sessionAttachmentRefSchema = z.object({ file_id: z.string().min(1) });\n","import { z } from \"zod\";\nimport { harnessParamsInputSchema, sessionAttachmentRefSchema } from \"./session-request-values\";\n\nexport const queuedFollowUpSchema = z.object({\n queuePosition: z.number().int().positive(),\n revision: z.string().min(1),\n prompt: z.string(),\n steeringUnavailableReason: z.string().nullable().optional(),\n steeringDelivery: z.object({ id: z.string(), runStartedAt: z.string() }).nullable(),\n model: z.string().nullable(),\n params: harnessParamsInputSchema,\n attachments: z.array(sessionAttachmentRefSchema),\n});\n\nexport const updateQueuedFollowUpInputSchema = z.object({\n prompt: z.string().trim().min(1),\n expectedRevision: z.string().min(1).optional(),\n model: z.string().min(1).nullable().optional(),\n params: harnessParamsInputSchema.nullable().optional(),\n attachments: z.array(sessionAttachmentRefSchema).optional(),\n});\n\nexport const combineQueuedFollowUpsInputSchema = z.object({\n sourcePosition: z.number().int().positive(),\n sourceRevision: z.string().min(1),\n targetRevision: z.string().min(1),\n});\n\nexport const queuedFollowUpUpdateResponseSchema = z.object({ ok: z.literal(true), request: queuedFollowUpSchema });\nexport const pendingQueuedFollowUpsResponseSchema = z.object({\n requests: z.array(queuedFollowUpSchema),\n activeRunStartedAt: z.string().nullable(),\n steeringAvailable: z.boolean(),\n steeringUnavailableReason: z.string().nullable(),\n});\nexport type QueuedFollowUpRequest = z.infer<typeof queuedFollowUpSchema>;\nexport type UpdateQueuedFollowUpInput = z.infer<typeof updateQueuedFollowUpInputSchema>;\nexport type CombineQueuedFollowUpsInput = z.infer<typeof combineQueuedFollowUpsInputSchema>;\nexport type QueuedFollowUpUpdateResponse = z.infer<typeof queuedFollowUpUpdateResponseSchema>;\nexport type PendingQueuedFollowUpsResponse = z.infer<typeof pendingQueuedFollowUpsResponseSchema>;\n\nexport const steerQueuedFollowUpInputSchema = z.object({\n expectedRevision: z.string().min(1),\n expectedRunStartedAt: z.string().min(1),\n});\nexport const queuedSteeringResultSchema = z.discriminatedUnion(\"status\", [\n z.object({ status: z.literal(\"accepted\"), deliveryId: z.string() }),\n z.object({\n status: z.literal(\"rejected\"),\n reason: z.enum([\n \"unsupported\",\n \"inactive\",\n \"stale_run\",\n \"blocking_input\",\n \"missing\",\n \"stale_revision\",\n \"different_settings\",\n \"delivery_failed\",\n \"invalid_attachments\",\n ]),\n message: z.string(),\n }),\n z.object({ status: z.literal(\"uncertain\"), deliveryId: z.string(), message: z.string() }),\n]);\nexport type SteerQueuedFollowUpInput = z.infer<typeof steerQueuedFollowUpInputSchema>;\nexport type QueuedSteeringResult = z.infer<typeof queuedSteeringResultSchema>;\n","import { z } from \"zod\";\nimport { extensionResourceRefSchema } from \"./extensions/resource-ref\";\n\nexport const resourceLinkRefSchema = extensionResourceRefSchema.extend({\n type: z.string().min(1),\n id: z.string().min(1),\n projectId: z.string().min(1).optional(),\n extensionId: z.string().min(1).optional(),\n});\nexport const resourceAnchorSchema = resourceLinkRefSchema.extend({\n role: z.enum([\"primary\", \"context\", \"source\", \"result\"]).optional(),\n});\nexport const addResourceAnchorsSchema = z.object({\n resource: resourceLinkRefSchema,\n anchors: z.array(resourceAnchorSchema).max(100),\n});\nexport const removeResourceAnchorsSchema = z.object({\n resource: resourceLinkRefSchema,\n refs: z.array(resourceLinkRefSchema).max(100),\n});\nexport const resourceAnchorQuerySchema = z.object({\n resource: resourceLinkRefSchema,\n direction: z.enum([\"outgoing\", \"incoming\", \"both\"]).optional(),\n role: z.enum([\"primary\", \"context\", \"source\", \"result\"]).optional(),\n cursor: z.string().optional(),\n limit: z.number().int().min(1).max(100).optional(),\n});\nexport const resourceAnchorPageSchema = z.object({\n items: z.array(z.object({ source: resourceLinkRefSchema, target: resourceAnchorSchema })),\n nextCursor: z.string().optional(),\n});\n","export const supportedSessionAttachmentMimeTypes = [\n \"application/pdf\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"image/png\",\n \"image/svg+xml\",\n \"text/csv\",\n \"text/markdown\",\n \"text/plain\",\n] as const;\n\nexport const sessionAttachmentMimeTypesByExtension = {\n c: \"text/plain\",\n cc: \"text/plain\",\n cpp: \"text/plain\",\n cs: \"text/plain\",\n css: \"text/css\",\n csv: \"text/csv\",\n cxx: \"text/plain\",\n go: \"text/plain\",\n h: \"text/plain\",\n hpp: \"text/plain\",\n html: \"text/html\",\n java: \"text/plain\",\n js: \"application/javascript\",\n jsx: \"text/plain\",\n json: \"application/json\",\n jsonc: \"application/json\",\n kt: \"text/plain\",\n kts: \"text/plain\",\n lua: \"text/plain\",\n markdown: \"text/markdown\",\n md: \"text/markdown\",\n mjs: \"application/javascript\",\n pdf: \"application/pdf\",\n php: \"text/plain\",\n png: \"image/png\",\n py: \"text/plain\",\n rb: \"text/plain\",\n rs: \"text/plain\",\n sh: \"text/plain\",\n sql: \"text/plain\",\n svg: \"image/svg+xml\",\n swift: \"text/plain\",\n toml: \"text/plain\",\n ts: \"text/plain\",\n tsx: \"text/plain\",\n txt: \"text/plain\",\n vue: \"text/plain\",\n xml: \"text/xml\",\n xlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n yaml: \"text/plain\",\n yml: \"text/plain\",\n} as const;\n\nexport const supportedSessionAttachmentExtensions = Object.keys(sessionAttachmentMimeTypesByExtension);\nexport const supportedSessionAttachmentAccept = supportedSessionAttachmentExtensions\n .map((extension) => `.${extension}`)\n .join(\",\");\n","import { z } from \"zod\";\n\nexport type SessionMessageRole = \"user\" | \"assistant\" | \"tool\" | \"system\" | \"developer\";\n\nexport type TextPart = { type: \"text\"; text: string };\n\nexport type ReasoningPart = { type: \"reasoning\"; text: string };\n\nexport type ToolPartActionType = \"read\" | \"write\" | \"execute\" | \"network\" | \"other\";\n\nexport type ToolPartStatus = \"pending\" | \"running\" | \"completed\" | \"failed\" | \"denied\";\n\nexport type ToolPart = {\n type: \"tool\";\n tool: string;\n callId?: string;\n actionType?: ToolPartActionType;\n status?: ToolPartStatus;\n state?: {\n status?: string;\n input?: unknown;\n output?: unknown;\n errorText?: string;\n metadata?: unknown;\n };\n};\n\nexport type StepStartPart = { type: \"step-start\"; snapshot?: string };\n\nexport type StepFinishPart = {\n type: \"step-finish\";\n reason?: string;\n snapshot?: string;\n cost?: number;\n tokens?: unknown;\n};\n\nexport type PatchPart = { type: \"patch\"; hash?: string; files?: unknown };\n\nexport type FilePart = {\n type: \"file\";\n fileId?: string;\n mediaType?: string;\n filename?: string;\n size?: number;\n url: string;\n};\n\nexport type LoadingPart = { type: \"loading\" };\n\nexport type ErrorPart = {\n type: \"error\";\n errorType: \"timeout\" | \"crash\" | \"permission\" | \"other\";\n message?: string;\n};\n\nexport type TokenUsagePart = {\n type: \"token_usage\";\n inputTokens: number;\n outputTokens: number;\n cacheReadTokens?: number;\n cacheWriteTokens?: number;\n};\n\nexport type SessionMessagePart =\n | TextPart\n | ReasoningPart\n | ToolPart\n | StepStartPart\n | StepFinishPart\n | PatchPart\n | FilePart\n | LoadingPart\n | ErrorPart\n | TokenUsagePart;\n\nexport type SessionMessage = {\n id: string;\n role: SessionMessageRole;\n parts: SessionMessagePart[];\n index?: number;\n createdAt?: number;\n modelId?: string;\n providerId?: string;\n tokens?: {\n input?: number;\n output?: number;\n reasoning?: number;\n cache?: { read?: number; write?: number };\n };\n};\n\nconst textPartSchema = z.object({\n type: z.literal(\"text\"),\n text: z.string(),\n});\n\nconst reasoningPartSchema = z.object({\n type: z.literal(\"reasoning\"),\n text: z.string(),\n});\n\nconst toolPartActionTypeSchema = z.enum([\"read\", \"write\", \"execute\", \"network\", \"other\"]);\n\nconst toolPartStatusSchema = z.enum([\"pending\", \"running\", \"completed\", \"failed\", \"denied\"]);\n\nconst toolPartSchema = z.object({\n type: z.literal(\"tool\"),\n tool: z.string(),\n callId: z.string().optional(),\n actionType: toolPartActionTypeSchema.optional(),\n status: toolPartStatusSchema.optional(),\n state: z\n .object({\n status: z.string().optional(),\n input: z.unknown().optional(),\n output: z.unknown().optional(),\n errorText: z.string().optional(),\n metadata: z.unknown().optional(),\n })\n .optional(),\n});\n\nconst stepStartPartSchema = z.object({\n type: z.literal(\"step-start\"),\n snapshot: z.string().optional(),\n});\n\nconst stepFinishPartSchema = z.object({\n type: z.literal(\"step-finish\"),\n reason: z.string().optional(),\n snapshot: z.string().optional(),\n cost: z.number().optional(),\n tokens: z.unknown().optional(),\n});\n\nconst patchPartSchema = z.object({\n type: z.literal(\"patch\"),\n hash: z.string().optional(),\n files: z.unknown().optional(),\n});\n\nconst filePartSchema = z.object({\n type: z.literal(\"file\"),\n fileId: z.string().optional(),\n mediaType: z.string().optional(),\n filename: z.string().optional(),\n size: z.number().optional(),\n url: z.string(),\n});\n\nconst loadingPartSchema = z.object({\n type: z.literal(\"loading\"),\n});\n\nconst errorPartSchema = z.object({\n type: z.literal(\"error\"),\n errorType: z.enum([\"timeout\", \"crash\", \"permission\", \"other\"]),\n message: z.string().optional(),\n});\n\nconst tokenUsagePartSchema = z.object({\n type: z.literal(\"token_usage\"),\n inputTokens: z.number(),\n outputTokens: z.number(),\n cacheReadTokens: z.number().optional(),\n cacheWriteTokens: z.number().optional(),\n});\n\nexport const sessionMessagePartSchema = z.union([\n textPartSchema,\n reasoningPartSchema,\n toolPartSchema,\n stepStartPartSchema,\n stepFinishPartSchema,\n patchPartSchema,\n filePartSchema,\n loadingPartSchema,\n errorPartSchema,\n tokenUsagePartSchema,\n]);\n\nexport const sessionMessageRoleSchema = z.enum([\"user\", \"assistant\", \"tool\", \"system\", \"developer\"]);\n\nexport const sessionMessageSchema = z.object({\n id: z.string(),\n role: sessionMessageRoleSchema,\n parts: z.array(sessionMessagePartSchema),\n index: z.number().optional(),\n createdAt: z.number().optional(),\n modelId: z.string().optional(),\n providerId: z.string().optional(),\n tokens: z\n .object({\n input: z.number().optional(),\n output: z.number().optional(),\n reasoning: z.number().optional(),\n cache: z\n .object({\n read: z.number().optional(),\n write: z.number().optional(),\n })\n .optional(),\n })\n .optional(),\n});\n","import { z } from \"zod\";\nimport { listActivityInputSchema, listActivityResponseSchema } from \"./activity\";\nimport { extensionResourceRefSchema } from \"./extensions\";\nimport { harnessOperationResponseSchema, harnessOperationSchema } from \"./harness-commands\";\nimport { pendingQueuedFollowUpsResponseSchema } from \"./queued-follow-ups\";\nimport { sessionMessageSchema } from \"./session-messages\";\n\nexport const sessionStatusSchema = z.enum([\n \"in_progress\",\n \"awaiting_input\",\n \"queued\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n \"disconnected\",\n]);\n\nexport {\n harnessParamsInputSchema,\n harnessParamValueSchema,\n sessionAttachmentRefSchema,\n} from \"./session-request-values\";\n\nimport { harnessParamsInputSchema, sessionAttachmentRefSchema } from \"./session-request-values\";\n\nexport const sessionUsageSchema = z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n cache_read_tokens: z.number(),\n cache_write_tokens: z.number(),\n});\n\nexport const sessionSchema = z.object({\n id: z.string(),\n project_id: z.string().nullable(),\n title: z.string(),\n status: sessionStatusSchema,\n archived: z.boolean(),\n last_request_started: z.string().nullable(),\n last_request_ended: z.string().nullable(),\n agent: z.string().nullable(),\n last_selected_model: z.string().nullable(),\n agent_session_id: z.string().nullable(),\n session_file_id: z.string().nullable(),\n original_session_id: z.string().nullable(),\n cwd: z.string().nullable(),\n params_json: harnessParamsInputSchema.nullable(),\n usage_json: sessionUsageSchema.nullable().optional(),\n workspace_id: z.string().nullable().optional(),\n anchors_json: z.array(extensionResourceRefSchema),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const createSessionResponseSchema = sessionSchema.extend({\n operation_result: harnessOperationResponseSchema.optional(),\n});\nexport type CreateSessionResponse = z.infer<typeof createSessionResponseSchema>;\n\nexport const sessionAttachmentSchema = z.object({\n file_id: z.string(),\n name: z.string(),\n mime_type: z.string().nullable(),\n size_bytes: z.number(),\n hash: z.string().nullable(),\n url: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const createSessionInputSchema = z.object({\n project_id: z.string().min(1),\n title: z.string().min(1),\n prompt: z.string().optional(),\n operation: harnessOperationSchema.optional(),\n agent: z.string().min(1).optional(),\n workspace_id: z.string().optional(),\n anchors: z.array(extensionResourceRefSchema).optional(),\n attachments: z.array(sessionAttachmentRefSchema).optional(),\n model: z.string().optional(),\n params: harnessParamsInputSchema.optional(),\n original_session_id: z.string().optional(),\n});\n\nexport const questionResponseSchema = z.object({\n answers: z.array(z.array(z.string())),\n callId: z.string().min(1).optional(),\n});\n\nexport const followUpInputSchema = z.object({\n prompt: z.string().min(1).optional(),\n agent: z.string().optional(),\n model: z.string().optional(),\n question_response: questionResponseSchema.optional(),\n params: harnessParamsInputSchema.optional(),\n summary_from_session_id: z.string().optional(),\n summary_format: z.enum([\"brief\", \"detailed\"]).default(\"brief\").optional(),\n summary_role: z.enum([\"assistant\", \"all\"]).default(\"assistant\").optional(),\n attachments: z.array(sessionAttachmentRefSchema).optional(),\n});\n\nexport const approvalInputSchema = z.object({\n id: z.string().min(1),\n decision: z.enum([\"approve\", \"deny\"]),\n});\n\nexport const followUpDecisionSchema = z.union([\n z.object({ status: z.literal(\"dispatched\") }),\n z.object({ status: z.literal(\"queued\"), queue_position: z.number().int() }),\n]);\n\nexport const followUpResponseSchema = sessionSchema.extend({\n follow_up: followUpDecisionSchema,\n});\n\nexport const sessionQueuedMessagesResponseSchema = z.object({\n messages: z.array(sessionMessageSchema),\n queue: pendingQueuedFollowUpsResponseSchema.optional(),\n});\nexport type SessionQueuedMessagesResponse = z.infer<typeof sessionQueuedMessagesResponseSchema>;\n\nexport const sessionConversationSourcesSchema = z.object({\n checkpoint: z.array(sessionMessageSchema).nullable(),\n native: z.array(sessionMessageSchema).nullable(),\n checkpointError: z.string().nullable(),\n nativeError: z.string().nullable(),\n});\n\nexport type SessionConversationSources = z.infer<typeof sessionConversationSourcesSchema>;\n\nexport const sessionConversationResponseSchema = z.object({\n session: sessionSchema,\n messages: z.array(sessionMessageSchema),\n});\n\nexport const resolveSessionIdInputSchema = z.object({\n agent: z.string(),\n agent_session_id: z.string(),\n cwd: z.string().optional(),\n});\n\nexport const resolveSessionIdResponseSchema = z.object({\n session_id: z.string().nullable(),\n});\n\nexport const listSessionActivityInputSchema = listActivityInputSchema;\nexport const listSessionActivityResponseSchema = listActivityResponseSchema;\n\nexport type SessionStatus = z.infer<typeof sessionStatusSchema>;\nexport type Session = z.infer<typeof sessionSchema>;\nexport type ResolveSessionIdInput = z.infer<typeof resolveSessionIdInputSchema>;\nexport type ResolveSessionIdResponse = z.infer<typeof resolveSessionIdResponseSchema>;\nexport type CreateSessionInput = z.infer<typeof createSessionInputSchema>;\nexport type FollowUpInput = z.infer<typeof followUpInputSchema>;\nexport type HarnessParamsInput = z.infer<typeof harnessParamsInputSchema>;\nexport type SessionAttachment = z.infer<typeof sessionAttachmentSchema>;\nexport type SessionAttachmentRef = z.infer<typeof sessionAttachmentRefSchema>;\nexport type ApprovalInput = z.infer<typeof approvalInputSchema>;\nexport type SessionConversationResponse = z.infer<typeof sessionConversationResponseSchema>;\nexport type ListSessionActivityInput = z.infer<typeof listSessionActivityInputSchema>;\nexport type ListSessionActivityResponse = z.infer<typeof listSessionActivityResponseSchema>;\nexport type FollowUpDecision = z.infer<typeof followUpDecisionSchema>;\nexport type FollowUpResponse = z.infer<typeof followUpResponseSchema>;\n","import { z } from \"zod\";\n\nexport const settingsSchema = z.object({\n notifications_enabled: z.boolean(),\n machine_tokens_enabled: z.boolean(),\n max_concurrent_sessions: z.number().int().min(1).nullable(),\n});\n\nexport const updateSettingsInputSchema = z\n .object({\n notifications_enabled: z.boolean().optional(),\n machine_tokens_enabled: z.boolean().optional(),\n max_concurrent_sessions: z.number().int().min(1).nullable().optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).length > 0, { message: \"Expected at least one setting\" });\n\nexport type Settings = z.infer<typeof settingsSchema>;\nexport type UpdateSettingsInput = z.infer<typeof updateSettingsInputSchema>;\n","import { z } from \"zod\";\nimport { packageAssetDescriptorSchema } from \"./extensions\";\n\nexport const skillFileSchema = z.object({\n path: z.string(),\n content: z.string(),\n encoding: z.literal(\"utf8\"),\n});\n\nexport const skillSourceKindSchema = z.enum([\"project\", \"extension\"]);\n\nexport const skillAgentInstallationSchema = z.object({\n agent_id: z.string(),\n agent_name: z.string(),\n installed_version: z.string().nullable(),\n});\n\nexport const skillSchema = z.object({\n id: z.string(),\n project_id: z.string(),\n name: z.string(),\n title: z.string(),\n description: z.string(),\n source_kind: skillSourceKindSchema,\n files: z.array(skillFileSchema),\n editable: z.boolean(),\n extension_instance_id: z.string().optional(),\n extension_id: z.string().optional(),\n installed_extension_id: z.string().optional(),\n install_name: z.string().optional(),\n key: z.string().optional(),\n source: packageAssetDescriptorSchema.optional(),\n enabled: z.boolean().optional(),\n created_at: z.string(),\n updated_at: z.string(),\n deleted_at: z.string().nullable(),\n});\n\nexport const skillWithContentSchema = skillSchema.extend({\n installed_agents: z.array(z.string()),\n agent_installations: z.array(skillAgentInstallationSchema),\n});\n\nexport const updateSkillInputSchema = z.object({\n enabled: z.boolean().optional(),\n title: z.string().min(1).optional(),\n description: z.string().optional(),\n});\n\nexport type Skill = z.infer<typeof skillSchema>;\nexport type SkillAgentInstallation = z.infer<typeof skillAgentInstallationSchema>;\nexport type SkillWithContent = z.infer<typeof skillWithContentSchema>;\nexport type SkillFile = z.infer<typeof skillFileSchema>;\nexport type SkillSourceKind = z.infer<typeof skillSourceKindSchema>;\nexport type UpdateSkillInput = z.infer<typeof updateSkillInputSchema>;\n","import { z } from \"zod\";\nimport { listActivityInputSchema, listActivityResponseSchema } from \"./activity\";\nimport type {\n WorkspaceCapabilities,\n WorkspaceProviderRef,\n WorkspaceProviderState,\n} from \"./extension-kernel/types/extension\";\nimport type { ResourceRole } from \"./extension-kernel/types/resources\";\nimport { extensionResourceRefSchema } from \"./extensions\";\nimport { extensionParamObjectSchema } from \"./extensions/commands\";\nimport { jsonObjectSchema, localizableStringSchema } from \"./extensions/common\";\n\nconst workspaceProviderRefShape = {\n version: z.number().int().positive(),\n data: jsonObjectSchema,\n} satisfies Record<keyof WorkspaceProviderRef, z.ZodType>;\n\nexport const workspaceProviderRefSchema = z.object(workspaceProviderRefShape);\n\nconst workspaceProviderStates = [\n \"provisioning\",\n \"ready\",\n \"failed\",\n \"cancelled\",\n \"archiving\",\n \"archived\",\n \"deleting\",\n \"provider_missing\",\n] as const satisfies readonly WorkspaceProviderState[];\n\nexport const workspaceProviderStateSchema: z.ZodType<WorkspaceProviderState> = z.enum(workspaceProviderStates);\n\nexport const workspaceExecutionKindSchema = z.enum([\"local\", \"remote\"]);\n\nexport const workspaceCapabilitiesSchema: z.ZodType<WorkspaceCapabilities> = z.object({\n files: z.enum([\"none\", \"read\", \"write\"]),\n diff: z.boolean(),\n merge: z.boolean(),\n rebase: z.boolean(),\n /** @deprecated Use delete. */\n archive: z.boolean(),\n delete: z.boolean(),\n});\n\nexport const workspaceProviderErrorSchema = z.object({\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n occurred_at: z.string(),\n});\n\nconst workspaceAnchorSchema = extensionResourceRefSchema.extend({\n role: z.enum([\"primary\", \"context\", \"source\", \"result\"] satisfies ResourceRole[]).optional(),\n});\n\nexport const workspaceSchema = z.object({\n id: z.string(),\n project_id: z.string(),\n name: z.string(),\n branch: z.string().nullable(),\n root_path: z.string().nullable(),\n provider_id: z.string(),\n provider_params_json: jsonObjectSchema,\n provider_ref_json: workspaceProviderRefSchema.nullable(),\n provider_state: workspaceProviderStateSchema,\n execution_kind: workspaceExecutionKindSchema,\n provider_operation_id: z.string().nullable(),\n provider_operation_kind: z.enum([\"create\", \"cancel\", \"archive\", \"delete\"]).nullable(),\n provider_error_json: workspaceProviderErrorSchema.nullable(),\n provider_capabilities_json: workspaceCapabilitiesSchema,\n display_path: z.string().nullable(),\n is_default: z.boolean(),\n archived: z.boolean(),\n initializing: z.boolean(),\n setup_error: z.string().nullable(),\n workspace_shorthand: z.string(),\n startup_log_file_id: z.string().nullable(),\n anchors_json: z.array(workspaceAnchorSchema),\n created_at: z.string(),\n updated_at: z.string(),\n deleted_at: z.string().nullable(),\n});\n\n// Workspace list items are plain workspaces; domain linkage (e.g. a ticket) is\n// carried generically in anchors_json and resolved by the owning extension.\nexport const workspaceListItemSchema = workspaceSchema;\n\nexport const createWorkspaceInputSchema = z.object({\n project_id: z.string().min(1),\n /** Provider responsible for creating the workspace. */\n provider_id: z.string().min(1),\n /** Provider parameters. The Git provider accepts a base ref. */\n params: jsonObjectSchema.optional(),\n /** Optional resource links owned by the requesting tool. */\n anchors: z.array(workspaceAnchorSchema).optional(),\n /** Prefix for related workspace names; omitted workspaces use project-scoped WS-N names. */\n shorthand_base: z.string().trim().min(1).optional(),\n});\n\nexport const renameWorkspaceInputSchema = z.object({\n name: z\n .string()\n .trim()\n .min(1, \"Workspace name is required\")\n .max(120, \"Workspace name must be 120 characters or less\"),\n});\n\nexport const removeWorktreeResponseSchema = z.object({\n removed: z.boolean(),\n});\n\nexport const workspaceFileEntrySchema = z.object({\n path: z.string(),\n name: z.string(),\n type: z.enum([\"file\", \"directory\"]),\n size: z.number().int().nonnegative().optional(),\n modified_at: z.string().optional(),\n});\n\nexport const workspaceFilesResponseSchema = z.object({\n workspace_id: z.string(),\n path: z.string(),\n entries: z.array(workspaceFileEntrySchema),\n truncated: z.boolean(),\n});\n\nexport const workspaceFileContentSchema = z.object({\n workspace_id: z.string(),\n path: z.string(),\n file_name: z.string(),\n mime_type: z.string().optional(),\n size: z.number().int().nonnegative(),\n encoding: z.enum([\"utf8\", \"base64\"]),\n content: z.string().optional(),\n data_url: z.string().optional(),\n editable: z.boolean(),\n});\n\nexport const writeWorkspaceFileInputSchema = z.object({\n content: z.string(),\n});\n\nexport const moveWorkspaceEntryInputSchema = z.object({\n destination_path: z.string().min(1),\n});\n\nexport const listWorkspaceFilesInputSchema = z.object({\n path: z.string().optional(),\n query: z.string().optional(),\n limit: z.number().int().positive().max(500).optional(),\n});\n\nexport const listWorkspaceActivityInputSchema = listActivityInputSchema;\nexport const listWorkspaceActivityResponseSchema = listActivityResponseSchema;\n\nexport type Workspace = z.infer<typeof workspaceSchema>;\nexport type PublicWorkspaceCapabilities = z.infer<typeof workspaceCapabilitiesSchema>;\nexport type WorkspaceExecutionKind = z.infer<typeof workspaceExecutionKindSchema>;\nexport type WorkspaceProviderError = z.infer<typeof workspaceProviderErrorSchema>;\nexport type PublicWorkspaceProviderRef = z.infer<typeof workspaceProviderRefSchema>;\nexport type PublicWorkspaceProviderState = z.infer<typeof workspaceProviderStateSchema>;\nexport type WorkspaceListItem = z.infer<typeof workspaceListItemSchema>;\nexport type CreateWorkspaceInput = z.infer<typeof createWorkspaceInputSchema>;\nexport type RenameWorkspaceInput = z.infer<typeof renameWorkspaceInputSchema>;\nexport type RemoveWorktreeResponse = z.infer<typeof removeWorktreeResponseSchema>;\nexport type WorkspaceFileEntry = z.infer<typeof workspaceFileEntrySchema>;\nexport type WorkspaceFilesResponse = z.infer<typeof workspaceFilesResponseSchema>;\nexport type WorkspaceFileContent = z.infer<typeof workspaceFileContentSchema>;\nexport type WriteWorkspaceFileInput = z.infer<typeof writeWorkspaceFileInputSchema>;\nexport type MoveWorkspaceEntryInput = z.infer<typeof moveWorkspaceEntryInputSchema>;\nexport type ListWorkspaceFilesInput = z.infer<typeof listWorkspaceFilesInputSchema>;\nexport type ListWorkspaceActivityInput = z.infer<typeof listWorkspaceActivityInputSchema>;\nexport type ListWorkspaceActivityResponse = z.infer<typeof listWorkspaceActivityResponseSchema>;\n\nexport const workspaceProviderDescriptorSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n description: localizableStringSchema.optional(),\n params: extensionParamObjectSchema,\n});\nexport type WorkspaceProviderDescriptor = z.infer<typeof workspaceProviderDescriptorSchema>;\n","import type { ControlValueMap } from \"@pstdio/sdk/extensions\";\n\nexport const mergeControlDraft = (draft: ControlValueMap, saved: ControlValueMap, changed: Record<string, number>) => {\n const values = { ...saved };\n for (const id of Object.keys(changed)) {\n if (id in draft) values[id] = draft[id];\n }\n return values;\n};\n","export const createControlSaveQueue = () => {\n let previous: Promise<unknown> = Promise.resolve();\n return <T>(save: () => Promise<T>) => {\n const current = previous.then(save);\n previous = current.catch(() => undefined);\n return current;\n };\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { ControlValue, HarnessControl as HarnessControlDeclaration } from \"@pstdio/sdk/extensions\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-param-field\";\n\ninterface HarnessControlProps {\n param: HarnessControlDeclaration;\n value: ControlValue;\n readOnly: boolean;\n renderParamField?: CommandParamFieldRenderer;\n onChange: (value: ControlValue) => void;\n}\n\nexport const HarnessControl = (props: HarnessControlProps) => {\n const { param, value, readOnly, renderParamField, onChange } = props;\n const field = renderParamField?.({\n entry: { key: param.id, label: param.name, description: param.description, type: \"harness\", required: true },\n value: JSON.stringify(value),\n disabled: readOnly || Boolean(param.readOnly),\n onChange: (next) => {\n if (!readOnly && !param.readOnly && typeof next === \"string\") onChange(JSON.parse(next));\n },\n });\n if (field) return field;\n return (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n Harness selection is unavailable in this host.\n </Text>\n );\n};\n","import { Box, Button, Flex, Stack, Text } from \"@chakra-ui/react\";\nimport type { ControlValueMap } from \"@pstdio/sdk/extensions\";\nimport { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { ScrollArea } from \"@pstdio/ui\";\nimport { type InputGroup, type Param, ParamEditor, type ParamValue } from \"@pstdio/ui/param-editor\";\nimport { controlValueSchema } from \"pstdio-api-contracts\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n getWorkbenchRenderers,\n type RegisteredControlsRendererContribution,\n rendererReadKey,\n type WorkbenchCore,\n type WorkbenchPanelInstance,\n} from \"../../../core\";\nimport { runUserAction } from \"../../../core/shared/run-user-action\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-param-field\";\nimport { RendererReadNotice } from \"../renderer-read-notice\";\nimport { usePageParams } from \"../use-page-params\";\nimport { useRendererRead } from \"../use-renderer-read\";\nimport { mergeControlDraft } from \"./control-draft\";\nimport { createControlSaveQueue } from \"./control-save-queue\";\nimport { HarnessControl } from \"./harness-control\";\n\ninterface WorkbenchControlsViewProps {\n workbench: WorkbenchCore;\n contribution: RegisteredControlsRendererContribution;\n placement: WorkbenchPanelInstance;\n renderParamField?: CommandParamFieldRenderer;\n}\ninterface ControlsViewState {\n params: Param[];\n groups: InputGroup[];\n values: ControlValueMap;\n readOnly: boolean;\n loading: boolean;\n changed: Record<string, number>;\n error?: string;\n}\nconst initialState: ControlsViewState = {\n params: [],\n groups: [],\n values: {},\n changed: {},\n readOnly: false,\n loading: true,\n};\nexport const WorkbenchControlsView = (props: WorkbenchControlsViewProps) => {\n const { contribution, placement } = props;\n return <WorkbenchControlsForm key={JSON.stringify([contribution.id, resourceKey(placement.resource)])} {...props} />;\n};\nconst WorkbenchControlsForm = (props: WorkbenchControlsViewProps) => {\n const { workbench, contribution, placement, renderParamField } = props;\n const resource = placement.resource;\n const pageParams = usePageParams(workbench, placement);\n const [state, setState] = useState<ControlsViewState>(initialState);\n const [pending, setPending] = useState(false);\n const saves = useRef(createControlSaveQueue());\n const changes = useRef(0);\n const read = useRendererRead({\n workbench,\n ownerKey: rendererReadKey(placement),\n queryKey: JSON.stringify([contribution.id, resourceKey(resource), pageParams]),\n\n load: (signal) => contribution.executeQuery(resource, signal, pageParams),\n subscribe: (refresh) => {\n const subscription = contribution.subscribe?.(refresh);\n const events = getWorkbenchRenderers(workbench).onDidRefreshControlsRenderer((event) => {\n if (event.controlsRendererId === contribution.id) refresh();\n });\n return () => {\n if (typeof subscription === \"function\") subscription();\n else subscription?.dispose();\n events.dispose();\n };\n },\n });\n useEffect(() => {\n if (!read.value) {\n setState(initialState);\n return;\n }\n const result = read.value;\n setState((previous) => ({\n ...previous,\n params: result.params ?? [],\n groups: result.groups ?? [],\n values: mergeControlDraft(\n previous.values,\n { ...(contribution.defaultValues ?? {}), ...(result.values ?? {}) },\n previous.changed,\n ),\n readOnly: Boolean(result.readOnly),\n loading: false,\n }));\n }, [read.value, contribution.defaultValues]);\n const readOnly = pending || state.readOnly || (!contribution.updateValue && !contribution.apply);\n const showFooter =\n Boolean(read.value) &&\n !state.loading &&\n !state.readOnly &&\n (Boolean(contribution.apply) || Boolean(contribution.reset));\n const handleChange = (id: string, input: ParamValue) => {\n const value = controlValueSchema.parse(input);\n // The command runs outside the setState updater: React may invoke updaters\n // twice (StrictMode), which would double-execute the update command.\n const values = { ...state.values, [id]: value };\n const revision = ++changes.current;\n if (contribution.updateValue)\n void runUserAction(workbench, \"Update value\", () =>\n saves.current(async () => {\n try {\n await contribution.updateValue!({ controlId: id, value, values, resource });\n } finally {\n setState((previous) => {\n if (previous.changed[id] !== revision) return previous;\n const changed = { ...previous.changed };\n delete changed[id];\n return { ...previous, changed };\n });\n await read.retry();\n }\n }),\n );\n setState((prev) => ({\n ...prev,\n values: { ...prev.values, [id]: value },\n changed: { ...prev.changed, [id]: revision },\n error: undefined,\n }));\n };\n const submit = async (reset: boolean) => {\n setPending(true);\n setState((previous) => ({ ...previous, error: undefined }));\n try {\n if (reset) await contribution.reset?.({ resource });\n else await contribution.apply?.({ values: state.values, resource });\n setState((previous) => ({\n ...previous,\n changed: {},\n values: reset ? { ...contribution.defaultValues, ...read.value?.values } : previous.values,\n }));\n await read.retry();\n } catch (error) {\n setState((previous) => ({ ...previous, error: error instanceof Error ? error.message : String(error) }));\n } finally {\n setPending(false);\n }\n };\n return (\n <Stack h=\"full\" minH=\"0\" gap=\"0\" bg=\"bg\" overflow=\"hidden\">\n {read.error ? <RendererReadNotice error={read.error} retry={read.retry} /> : null}\n {state.error ? (\n <Box p=\"sm\">\n <Text role=\"alert\" textStyle=\"paragraph/S/regular\" color=\"fg\">\n {state.error}\n </Text>\n </Box>\n ) : null}\n <ScrollArea flex=\"1\" minH=\"0\" minW=\"0\" w=\"full\" size=\"xs\">\n {read.value || read.loading ? (\n <ControlsContent\n state={read.value ? state : initialState}\n contribution={contribution}\n readOnly={readOnly}\n onChange={handleChange}\n renderParamField={renderParamField}\n />\n ) : null}\n </ScrollArea>\n {showFooter ? (\n <Flex\n borderTopWidth=\"1px\"\n borderColor=\"border.muted\"\n pl=\"sm\"\n pr=\"4xl\"\n py=\"xs\"\n gap=\"xs\"\n justifyContent=\"flex-end\"\n >\n {contribution.reset || contribution.apply ? (\n <Button\n size=\"xs\"\n variant=\"ghost\"\n disabled={pending}\n onClick={() => {\n void submit(true);\n }}\n >\n Reset\n </Button>\n ) : null}\n {contribution.apply ? (\n <Button\n size=\"xs\"\n variant=\"subtle\"\n disabled={pending}\n onClick={() => {\n void submit(false);\n }}\n >\n Apply\n </Button>\n ) : null}\n </Flex>\n ) : null}\n </Stack>\n );\n};\n\ninterface ControlsContentProps {\n state: ControlsViewState;\n contribution: RegisteredControlsRendererContribution;\n readOnly: boolean;\n onChange(id: string, value: ParamValue): void;\n renderParamField?: CommandParamFieldRenderer;\n}\nconst ControlsContent = (props: ControlsContentProps) => {\n const { state, contribution, readOnly, onChange, renderParamField } = props;\n // Host-backed controls reuse command fields; the UI editor still owns group layout.\n const hostParam = (param: Param): Param => {\n if (param.type !== \"harness\") return param;\n return {\n id: param.id,\n name: \"\",\n type: \"property\",\n value: (\n <HarnessControl\n param={param}\n value={state.values[param.id] ?? param.defaultValue}\n readOnly={readOnly}\n renderParamField={renderParamField}\n onChange={(value) => onChange(param.id, value)}\n />\n ),\n };\n };\n if (state.loading)\n return (\n <Box p=\"md\">\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n Loading…\n </Text>\n </Box>\n );\n if (state.params.length || state.groups.length)\n return (\n <ParamEditor\n variant=\"small\"\n params={state.params.map(hostParam)}\n groups={state.groups.map((group) => ({ ...group, params: group.params.map(hostParam) }))}\n defaultValues={state.values}\n readOnly={readOnly}\n onChange={onChange}\n />\n );\n return (\n <Box p=\"md\">\n <Text textStyle=\"label/M/medium\" color=\"fg\">\n {contribution.emptyTitle || \"No controls\"}\n </Text>\n {contribution.emptyDescription ? (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" mt=\"2xs\">\n {contribution.emptyDescription}\n </Text>\n ) : null}\n </Box>\n );\n};\n","import { createElement } from \"react\";\nimport { getWorkbenchRenderers, type WorkbenchCore } from \"../../../core\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-param-field\";\nimport { WorkbenchControlsView } from \"./controls-view\";\n\n// Track per-core installation so repeated <Workbench> renders are idempotent.\nconst installed = new WeakSet<WorkbenchCore>();\n\nexport const installWorkbenchControlsRenderer = (\n workbench: WorkbenchCore,\n options: { renderParamField?: CommandParamFieldRenderer } = {},\n) => {\n if (installed.has(workbench)) return;\n installed.add(workbench);\n getWorkbenchRenderers(workbench).setControlsRendererImplementation(\n ({ workbench: scope, instance, controlsRendererId }) => {\n const contribution = getWorkbenchRenderers(scope).getControlsRenderer(controlsRendererId);\n if (!contribution) return null;\n return createElement(WorkbenchControlsView, {\n workbench: scope,\n contribution,\n placement: instance,\n renderParamField: options.renderParamField,\n });\n },\n );\n};\n","import { createElement } from \"react\";\nimport { getWorkbenchRenderers, type WorkbenchCore } from \"../../../core\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-params-dialog\";\nimport { WorkbenchDataTableView } from \"./data-table-view\";\n\nconst installed = new WeakSet<WorkbenchCore>();\n\nexport const installWorkbenchDataTableRenderer = (\n workbench: WorkbenchCore,\n options: { renderParamField?: CommandParamFieldRenderer } = {},\n) => {\n if (installed.has(workbench)) return;\n installed.add(workbench);\n getWorkbenchRenderers(workbench).setDataTableRendererImplementation(\n ({ workbench: scope, instance, dataTableRendererId }) => {\n const contribution = getWorkbenchRenderers(scope).getDataTableRenderer(dataTableRendererId);\n if (!contribution) return null;\n return createElement(WorkbenchDataTableView, {\n workbench: scope,\n contribution,\n placement: instance,\n renderParamField: options.renderParamField,\n });\n },\n );\n};\n","// Owns what a load does to the renderer: the last document per binding, the\n// revision that drives the editor's React key, and the single place where a\n// fetched document is accepted.\n\nimport type { FileRendererContent } from \"../../../core\";\nimport type { FileEditController } from \"./file-renderer-edit-state\";\n\nexport interface LoadedFile extends FileRendererContent {\n // Bumped whenever a load brings content the editor is not showing, so the\n // uncontrolled editors remount with it.\n editorRevision: number;\n loadKey: string;\n}\n\n// Last loaded document per binding, so reopening a recently viewed file mounts\n// the editor immediately instead of a spinner. The follow-up load reconciles:\n// unchanged content keeps the revision (no remount), changed content remounts.\nconst FILE_CONTENT_CACHE_LIMIT = 30;\nconst fileContentCache = new Map<string, FileRendererContent>();\n\nexport const readCachedFileContent = (loadKey: string) => fileContentCache.get(loadKey);\n\nexport const clearCachedResourceContent = (resourceKey: string) => {\n for (const key of fileContentCache.keys()) {\n if (key.startsWith(`${JSON.stringify(resourceKey)}:`)) fileContentCache.delete(key);\n }\n};\n\nexport const storeCachedFileContent = (loadKey: string, content: FileRendererContent) => {\n fileContentCache.delete(loadKey);\n fileContentCache.set(loadKey, content);\n if (fileContentCache.size <= FILE_CONTENT_CACHE_LIMIT) return;\n const oldest = fileContentCache.keys().next().value;\n if (oldest !== undefined) fileContentCache.delete(oldest);\n};\n\n// A reload that returns what the editor already shows must not remount it: the\n// revision feeds the editor's React key, and a new key destroys focus and\n// selection. `shown` is what the editor displayed before this load — after a\n// save that is the saved value, which differs from the previously loaded state.\nconst nextLoadedRevision = (\n previous: LoadedFile | null,\n next: FileRendererContent,\n loadKey: string,\n shown?: string,\n) => {\n if (!previous || previous.loadKey !== loadKey) return 1;\n const shownContent = shown ?? previous.content;\n if (shownContent === next.content && previous.dataUrl === next.dataUrl) return previous.editorRevision;\n return previous.editorRevision + 1;\n};\n\n// Records a load: the controller takes the document as its baseline and reports\n// what the editor was showing, the cache keeps it for the next open, and the\n// returned updater puts it in React state. Returns nothing when the controller\n// rejects the load, which it does while local edits or a failed save wait.\nexport const acceptFileRendererLoad = (\n next: FileRendererContent,\n loadKey: string,\n controller: FileEditController | null,\n) => {\n const accepted = controller ? controller.acceptLoaded(next.content, next.revision) : { shown: undefined };\n if (!accepted) return;\n storeCachedFileContent(loadKey, next);\n return (previous: LoadedFile | null) => ({\n ...next,\n editorRevision: nextLoadedRevision(previous, next, loadKey, accepted.shown),\n loadKey,\n });\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { createElement, lazy, Suspense } from \"react\";\nimport { getWorkbenchRenderers, type WorkbenchCore } from \"../../../core\";\nimport { clearCachedResourceContent } from \"./file-renderer-load-state\";\n\nconst loadWorkbenchFileRendererView = () =>\n import(\"./file-renderer-view\").then((module) => ({\n default: module.WorkbenchFileRendererView,\n }));\n\nconst WorkbenchFileRendererView = lazy(loadWorkbenchFileRendererView);\n\n// Track per-core installation so repeated <Workbench> renders are idempotent.\nconst installed = new WeakSet<WorkbenchCore>();\n\nexport const installWorkbenchFileRenderer = (workbench: WorkbenchCore) => {\n if (installed.has(workbench)) return;\n installed.add(workbench);\n workbench.resources.onWillRemove((resource) => {\n clearCachedResourceContent(resourceKey(resource));\n return [];\n });\n getWorkbenchRenderers(workbench).setFileRendererImplementation(({ workbench: scope, instance, fileRendererId }) => {\n const contribution = getWorkbenchRenderers(scope).getFileRenderer(fileRendererId);\n if (!contribution) return null;\n return createElement(\n Suspense,\n { fallback: null },\n createElement(WorkbenchFileRendererView, { workbench: scope, contribution, placement: instance }),\n );\n });\n};\n","import type { ComponentType, ReactNode } from \"react\";\nimport type {\n AttributeDescriptor,\n AttributesSource,\n BoardColumnConfig,\n KanbanRendererContribution,\n KanbanRendererRow,\n RegisteredKanbanRendererContribution,\n ResourceContextAction,\n} from \"../../../core\";\n\ntype ReactColumnIcon = ComponentType<{ size?: number | string }>;\nexport type ReactAttributeDescriptor = AttributeDescriptor<ReactNode>;\nexport type ReactAttributesSource = AttributesSource<ReactNode>;\nexport type ReactBoardColumnConfig = BoardColumnConfig<ReactColumnIcon>;\nexport type ReactResourceContextAction = ResourceContextAction<ReactNode>;\nexport type ReactKanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> =\n KanbanRendererContribution<TRow, ReactNode, ReactColumnIcon>;\n\n// The core stores presentation values without choosing a UI framework, as it\n// does for view.render. Installing the React renderer binds that presentation.\nexport const bindReactKanbanPresentation = (contribution: RegisteredKanbanRendererContribution) =>\n contribution as RegisteredKanbanRendererContribution<KanbanRendererRow, ReactNode, ReactColumnIcon>;\n","import type { WorkbenchPanelInstance } from \"../../../core\";\n\nconst resolveProjectScope = (placement: WorkbenchPanelInstance, storageScope: string | undefined) => {\n const metadata = placement.resource?.metadata;\n const projectId = metadata?.projectId;\n if (typeof projectId === \"string\") return projectId;\n\n const favoriteScope = metadata?.favoriteScope;\n if (!favoriteScope || typeof favoriteScope !== \"object\" || Array.isArray(favoriteScope)) {\n return storageScope;\n }\n\n const scope = favoriteScope as { scope?: unknown; projectId?: unknown };\n return scope.scope === \"project\" && typeof scope.projectId === \"string\" ? scope.projectId : undefined;\n};\n\nexport const resolveKanbanRendererStorageKey = (\n kanbanRendererId: string,\n placement: WorkbenchPanelInstance,\n storageScope?: string,\n) => {\n const baseKey = `pstdio:workbench:kanbanRenderer:${kanbanRendererId}:${placement.instanceId}`;\n const projectScope = resolveProjectScope(placement, storageScope);\n return projectScope ? `${baseKey}:project:${projectScope}` : baseKey;\n};\n","import { Box, Skeleton, Stack } from \"@chakra-ui/react\";\nimport { type ResourceContextAction, ScrollArea } from \"@pstdio/ui\";\nimport {\n type AttributeDescriptor,\n type AttributesSource,\n applyKanbanMove,\n isAttributesSource,\n KanbanRenderer,\n type KanbanRendererRow,\n useKanbanRendererStore,\n} from \"@pstdio/ui/kanban-renderer\";\nimport { type ReactNode, useSyncExternalStore } from \"react\";\nimport type {\n RegisteredKanbanRendererContribution,\n ResourceRef,\n WorkbenchCore,\n WorkbenchPanelInstance,\n} from \"../../../core\";\nimport { getWorkbenchRenderers, rendererReadKey } from \"../../../core\";\nimport { reportUserActionError, runUserAction } from \"../../../core/shared/run-user-action\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-params-dialog\";\nimport { useWorkbenchResourceActionResolver } from \"../../menus/resource-actions\";\nimport { RendererReadNotice } from \"../renderer-read-notice\";\nimport { usePageParams } from \"../use-page-params\";\nimport { useRendererRead } from \"../use-renderer-read\";\nimport { ViewToolbarActions } from \"../view-toolbar-actions\";\nimport { bindReactKanbanPresentation } from \"./kanban-presentation\";\nimport { resolveKanbanRendererStorageKey } from \"./kanban-view-storage\";\n\ninterface WorkbenchKanbanViewProps {\n workbench: WorkbenchCore;\n renderParamField?: CommandParamFieldRenderer;\n contribution: RegisteredKanbanRendererContribution;\n placement: WorkbenchPanelInstance;\n}\n\ninterface WorkbenchKanbanViewFrameProps {\n children: ReactNode;\n usesInternalScroll: boolean;\n}\n\nconst kanbanViewScrollContentProps = { display: \"flex\", flexDirection: \"column\", minH: \"100%\" } as const;\n\nconst WorkbenchKanbanViewFrame = (props: WorkbenchKanbanViewFrameProps) => {\n const { children, usesInternalScroll } = props;\n\n return (\n <Stack h=\"full\" minH=\"0\" gap=\"0\" bg=\"bg\" overflow=\"hidden\" position={usesInternalScroll ? \"relative\" : undefined}>\n {usesInternalScroll ? (\n // Board columns own vertical scrolling; do not let their content height\n // make the workbench region's outer ScrollArea become the scroll owner.\n <Box position=\"absolute\" inset=\"0\" minH=\"0\" minW=\"0\" overflow=\"hidden\">\n {children}\n </Box>\n ) : (\n <ScrollArea flex=\"1\" minH=\"0\" minW=\"0\" w=\"full\" size=\"xs\" contentProps={kanbanViewScrollContentProps}>\n {children}\n </ScrollArea>\n )}\n </Stack>\n );\n};\n\nconst noopSubscribe = () => () => {};\n\nexport const isKanbanRowResource = (resource: unknown): resource is ResourceRef =>\n Boolean(\n resource &&\n typeof resource === \"object\" &&\n \"type\" in resource &&\n typeof resource.type === \"string\" &&\n \"id\" in resource &&\n typeof resource.id === \"string\",\n );\n\nconst useResolvedContributionAttributes = (attributes: AttributeDescriptor[] | AttributesSource) => {\n const source = isAttributesSource(attributes) ? attributes : undefined;\n const fallback = source ? undefined : (attributes as AttributeDescriptor[]);\n const subscribe = source ? source.subscribe : noopSubscribe;\n const getSnapshot = source ? source.getSnapshot : () => fallback!;\n return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n};\n\nexport const mergeKanbanViewRowActions = (\n resourceActions: ResourceContextAction[],\n contributionActions: ResourceContextAction[],\n) => {\n const resourceActionKeys = new Set(resourceActions.map((action) => action.key));\n const resourceCommandIds = new Set(resourceActions.flatMap((action) => (action.commandId ? [action.commandId] : [])));\n return [\n ...resourceActions,\n ...contributionActions.filter(\n (action) =>\n !resourceActionKeys.has(action.key) && (!action.commandId || !resourceCommandIds.has(action.commandId)),\n ),\n ];\n};\n\nexport const WorkbenchKanbanView = (props: WorkbenchKanbanViewProps) => {\n const { workbench, placement } = props;\n const pageParams = usePageParams(workbench, placement);\n const contribution = bindReactKanbanPresentation(props.contribution);\n const resolveResourceActions = useWorkbenchResourceActionResolver(workbench);\n const attributes = useResolvedContributionAttributes(contribution.attributes);\n const storageKey = resolveKanbanRendererStorageKey(contribution.id, placement, contribution.storageScope);\n const provider = contribution.viewsProvider;\n const viewsSource = useSyncExternalStore(\n provider?.subscribe ?? noopSubscribe,\n provider?.getSnapshot ?? (() => undefined),\n provider?.getSnapshot ?? (() => undefined),\n );\n const initialState = {\n settings: contribution.defaultSettings,\n filter: contribution.defaultFilter,\n sorts: contribution.defaultSorts,\n };\n\n const settings = useKanbanRendererStore(storageKey, (state) => state.settings, initialState);\n const filter = useKanbanRendererStore(storageKey, (state) => state.filter, initialState);\n const sorts = useKanbanRendererStore(storageKey, (state) => state.sorts, initialState);\n\n const read = useRendererRead({\n workbench,\n ownerKey: rendererReadKey(placement),\n queryKey: contribution.id,\n // The view can narrow what the query returns, so it loads again while the board stays on\n // screen. Search is not part of it, so typing a search never runs the query.\n refreshKey: JSON.stringify([settings, filter, sorts, pageParams]),\n\n load: (signal) => contribution.executeQuery({ settings, filter, sorts, pageParams }, signal),\n subscribe: (refresh) => {\n const subscription = contribution.subscribe?.(refresh);\n const events = getWorkbenchRenderers(workbench).onDidRefreshKanbanRenderer((event) => {\n if (event.kanbanRendererId === contribution.id) refresh();\n });\n return () => {\n if (typeof subscription === \"function\") subscription();\n else subscription?.dispose();\n events.dispose();\n };\n },\n });\n const rows = read.value ?? [];\n\n const handleOpenRow = (row: KanbanRendererRow) => {\n if (contribution.onRowActivate) void runUserAction(workbench, \"Open row\", () => contribution.onRowActivate!(row));\n };\n\n const getRowContextMenuActions = (row: KanbanRendererRow) => {\n const resourceActions = isKanbanRowResource(row.resource) ? resolveResourceActions(row.resource) : [];\n const contributionActions = (contribution.getRowContextMenuActions?.(row) ?? []).map((action) => ({\n ...action,\n onClick: () => runUserAction(workbench, action.label, () => action.onClick?.()),\n }));\n return mergeKanbanViewRowActions(resourceActions, contributionActions);\n };\n const contentPlaceholder = read.error ? (\n <RendererReadNotice error={read.error} retry={read.retry} />\n ) : (\n <Skeleton minH=\"12rem\" w=\"full\" />\n );\n\n const readNotice = read.error && read.value ? <RendererReadNotice error={read.error} retry={read.retry} /> : null;\n if (provider && !viewsSource) {\n return (\n <WorkbenchKanbanViewFrame usesInternalScroll={settings.viewMode === \"board\"}>\n {readNotice}\n <Skeleton minH=\"12rem\" w=\"full\" />\n </WorkbenchKanbanViewFrame>\n );\n }\n\n return (\n <WorkbenchKanbanViewFrame usesInternalScroll={settings.viewMode === \"board\"}>\n {readNotice}\n <KanbanRenderer\n itemLabel={\n contribution.resourceKind ? workbench.resources.getKind(contribution.resourceKind)?.label : undefined\n }\n viewsSource={viewsSource}\n rows={rows}\n contentPlaceholder={read.value ? undefined : contentPlaceholder}\n storageKey={storageKey}\n attributes={attributes}\n defaultSettings={contribution.defaultSettings}\n defaultFilter={contribution.defaultFilter}\n defaultSorts={contribution.defaultSorts}\n defaultViews={contribution.defaultViews}\n defaultActiveViewId={contribution.defaultActiveViewId}\n emptyTitle={contribution.emptyTitle}\n emptyDescription={contribution.emptyDescription}\n getBoardColumnConfig={contribution.getBoardColumnConfig}\n hideToolbar={contribution.hideToolbar}\n onRowClick={contribution.onRowActivate ? handleOpenRow : undefined}\n onActionError={(error, action) => reportUserActionError(workbench, action, error)}\n onAttributeChange={contribution.onAttributeChange}\n onMove={\n contribution.onMove\n ? (move) =>\n read.mutate(\n (rows) => applyKanbanMove(rows, move),\n () => contribution.onMove!(move),\n )\n : undefined\n }\n onReorder={contribution.onReorder}\n createRow={contribution.createRow}\n onCreateRow={contribution.onCreateRow}\n onColumnAction={\n contribution.onColumnAction\n ? (...args) => runUserAction(workbench, \"Column action\", () => contribution.onColumnAction!(...args))\n : undefined\n }\n getRowContextMenuActions={getRowContextMenuActions}\n toolbarActions={\n <ViewToolbarActions\n workbench={workbench}\n actions={contribution.toolbarActions}\n context={{ resource: placement.resource }}\n renderParamField={props.renderParamField}\n />\n }\n />\n </WorkbenchKanbanViewFrame>\n );\n};\n","import { createElement } from \"react\";\nimport { getWorkbenchRenderers, type WorkbenchCore } from \"../../../core\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-params-dialog\";\nimport { WorkbenchKanbanView } from \"./kanban-view\";\n\n// Track per-core installation so repeated <Workbench> renders are idempotent.\nconst installed = new WeakSet<WorkbenchCore>();\n\nexport const installWorkbenchKanbanRenderer = (\n workbench: WorkbenchCore,\n options: { renderParamField?: CommandParamFieldRenderer } = {},\n) => {\n if (installed.has(workbench)) return;\n installed.add(workbench);\n getWorkbenchRenderers(workbench).setKanbanRendererImplementation(\n ({ workbench: scope, instance, kanbanRendererId }) => {\n const contribution = getWorkbenchRenderers(scope).getKanbanRenderer(kanbanRendererId);\n if (!contribution) return null;\n return createElement(WorkbenchKanbanView, {\n workbench: scope,\n contribution,\n placement: instance,\n renderParamField: options.renderParamField,\n });\n },\n );\n};\n","import type { ResourceContextAction } from \"@pstdio/ui\";\nimport { createElement } from \"react\";\nimport { getWorkbenchRenderers, rendererReadKey, type WorkbenchCore } from \"../../../core\";\nimport type { CommandParamFieldRenderer } from \"../../command-palette/command-params-dialog\";\nimport { WorkbenchTreeView } from \"./tree-view\";\n\ninterface InstallWorkbenchTreeRendererInput {\n renderParamField?: CommandParamFieldRenderer;\n onSidenavContextActionsChange?: (actions: ResourceContextAction[]) => void;\n}\n\ninterface WorkbenchTreeRendererInstallation {\n renderParamField: CommandParamFieldRenderer | undefined;\n onSidenavContextActionsChange: ((actions: ResourceContextAction[]) => void) | undefined;\n}\n\n// Track per-core installation so repeated <Workbench> renders are idempotent.\nconst installed = new WeakMap<WorkbenchCore, WorkbenchTreeRendererInstallation>();\n\nconst isSidenavPlacement = (workbench: WorkbenchCore, instanceId: string) =>\n workbench.layout.getLayout().regions.sidenav.widgets.some((placement) => placement.widgetId === instanceId);\n\nconst viewContextId = (workbench: WorkbenchCore, panelId: string, viewId: string | undefined) => {\n const config = workbench.layout.getPanel(panelId)?.config;\n if (config && typeof config === \"object\" && \"viewContextId\" in config) {\n const candidate = config.viewContextId;\n if (typeof candidate === \"string\") return candidate;\n }\n return viewId;\n};\n\nexport const installWorkbenchTreeRenderer = (\n workbench: WorkbenchCore,\n input: InstallWorkbenchTreeRendererInput = {},\n) => {\n const current = installed.get(workbench);\n if (current) {\n current.renderParamField = input.renderParamField;\n current.onSidenavContextActionsChange = input.onSidenavContextActionsChange;\n return;\n }\n\n const installation = {\n renderParamField: input.renderParamField,\n onSidenavContextActionsChange: input.onSidenavContextActionsChange,\n };\n installed.set(workbench, installation);\n getWorkbenchRenderers(workbench).setTreeRendererImplementation(({ workbench: scope, instance, treeId }) =>\n createElement(WorkbenchTreeView, {\n workbench: scope,\n treeViewId: treeId,\n placement: instance,\n readOwnerKey: rendererReadKey(instance),\n resource: instance.resource,\n viewId: viewContextId(scope, instance.panelId, instance.viewId),\n renderParamField: installation.renderParamField,\n onSidenavContextActionsChange: isSidenavPlacement(scope, instance.instanceId)\n ? installation.onSidenavContextActionsChange\n : undefined,\n }),\n );\n};\n","import type { FileIconThemePreferenceOption } from \"@pstdio/ui\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\n// The file icon themes a workbench offers: whatever is registered in\n// `workbench.fileIconThemes` (e.g. extension-contributed themes). The list\n// shrinks when a contribution is disposed, mirroring color themes.\nexport const useWorkbenchFileIconThemePreferences = (workbench: WorkbenchCore) =>\n useWorkbenchStore(\n workbench.fileIconThemes.store,\n (state) => state.themes,\n ) as readonly FileIconThemePreferenceOption[];\n","import {\n getActiveWorkbenchLocationPanel,\n getWorkbenchModePanelForRegion,\n isWorkbenchModePanelAvailable,\n isWorkbenchPanelPlacementVisible,\n matchesWorkbenchModeEligibility,\n type WorkbenchCore,\n type WorkbenchRegion,\n} from \"../../core\";\nimport { useModeChrome } from \"../region/mode-chrome\";\nimport { useWorkbenchActiveModeId, useWorkbenchLocationResource } from \"../shared/use-workbench-location-resource\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\ninterface WorkbenchRegionContentOptions {\n locationScoped?: boolean;\n}\n\nexport const useWorkbenchRegionContent = (\n workbench: WorkbenchCore,\n region: WorkbenchRegion,\n options: WorkbenchRegionContentOptions = {},\n) => {\n const chrome = useModeChrome(workbench, region);\n const resource = useWorkbenchLocationResource(workbench);\n const modeId = useWorkbenchActiveModeId(workbench);\n const modePanel = getWorkbenchModePanelForRegion(region);\n const panelAvailable =\n !modePanel || isWorkbenchModePanelAvailable(modeId ? workbench.modes.getMode(modeId) : undefined, modePanel);\n\n return useWorkbenchStore(workbench.layout.store, (state) => {\n if (chrome !== undefined) return chrome !== false;\n if (!panelAvailable) return false;\n if (state.placeholders[region]) return true;\n if (!options.locationScoped) return state.layout.regions[region].widgets.length > 0;\n\n return state.layout.regions[region].widgets.some((placement) => {\n const widget = state.widgets[placement.contributionId];\n if (!widget) return false;\n return region === \"side\"\n ? matchesWorkbenchModeEligibility(widget, modeId)\n : isWorkbenchPanelPlacementVisible(widget, resource, modeId, placement, {\n location: getActiveWorkbenchLocationPanel(state.layout),\n });\n });\n });\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { WorkbenchCore, WorkbenchRegion } from \"../../core\";\n\ninterface WorkbenchHeaderBorderProps {\n workbench: WorkbenchCore;\n region: WorkbenchRegion;\n}\n\n// The header's bottom edge is painted as an absolutely-positioned line instead\n// of a CSS border so an active outline tab can sit on top of it and merge with\n// the panel content below. Hosting headers must set `position=\"relative\"`; the\n// tab strip uses a higher `zIndex` so the active tab paints over this line.\nexport const WorkbenchHeaderBorder = (props: WorkbenchHeaderBorderProps) => {\n const { workbench, region } = props;\n\n if (!workbench.layout.getRegionHeaderBorderBottom(region)) return null;\n\n return (\n <Box position=\"absolute\" insetInline=\"0\" bottom=\"0\" h=\"1px\" bg=\"border.subtle\" pointerEvents=\"none\" zIndex=\"0\" />\n );\n};\n","import type { WorkbenchCore } from \"../../core\";\nimport { useWorkbenchPanelMenusPresent } from \"../panel-menu/use-panel-menu\";\nimport { useWorkbenchPanelHeaderVisible } from \"../region/region-tabs\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { useWorkbenchRegionContent } from \"./use-workbench-region-content\";\nimport { resolvePanelCollapsible } from \"./workbench-panel-state\";\n\n// The collapse/reveal state of one panel around the main editor region, bundled so\n// WorkbenchBody receives one object per panel instead of six flat props.\nconst useSecondaryPanelView = (workbench: WorkbenchCore) => {\n const hasContent = useWorkbenchRegionContent(workbench, \"secondary\", { locationScoped: true });\n const hasHeader = useWorkbenchRegionContent(workbench, \"secondary-header\");\n const hasPanelHeader = useWorkbenchPanelHeaderVisible(workbench, \"secondary\");\n const hasMenus = useWorkbenchPanelMenusPresent(workbench, \"secondary\");\n const collapsible = useWorkbenchStore(workbench.layout.store, () =>\n resolvePanelCollapsible(workbench, \"secondary-header\", \"secondary\"),\n );\n const open = useWorkbenchStore(workbench.layout.store, (state) => state.layout.regions.secondary.visible);\n\n return {\n has: hasContent || hasHeader || hasPanelHeader || hasMenus,\n hasHeader,\n collapsible,\n collapsed: !open,\n onCollapsedChange: (collapsed: boolean) => {\n if (!collapsed || collapsible) workbench.shell.setRegionOpen(\"secondary\", !collapsed);\n },\n };\n};\n\n// Subscribe to derived panel facts rather than the whole layout. Replaying a\n// resource can replace the active main placement without rebuilding the shell.\nexport const useWorkbenchMainPanels = (workbench: WorkbenchCore) => {\n const hasMainHeader = useWorkbenchRegionContent(workbench, \"main-header\");\n const secondaryPanel = useSecondaryPanelView(workbench);\n\n return {\n hasMainHeader,\n secondaryPanel,\n };\n};\n","import { Box } from \"@chakra-ui/react\";\nimport { Header } from \"@pstdio/ui\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { WorkbenchFocusRegion } from \"../focus/focus-region\";\nimport { WorkbenchPanelMenuLayout, WorkbenchPanelMenuOpeners } from \"../panel-menu/panel-menu\";\nimport { WorkbenchRegion } from \"../region/region\";\nimport {\n useWorkbenchPanelHeaderVisible,\n useWorkbenchRegionTabsVisible,\n WorkbenchRegionTabs,\n} from \"../region/region-tabs\";\nimport { WorkbenchTabDropTarget } from \"../region/tab-drag-context\";\nimport { useWorkbenchModeRegionSettings } from \"../shared/use-workbench-mode-region-settings\";\nimport { workbenchBackgrounds } from \"../theme/workbench-theme-background\";\nimport { WorkbenchHeaderBorder } from \"./header-bottom-border\";\n\ninterface WorkbenchSecondaryPanelProps {\n workbench: WorkbenchCore;\n hasSecondaryHeader: boolean;\n}\n\nexport const WorkbenchSecondaryPanel = (props: WorkbenchSecondaryPanelProps) => {\n const { workbench, hasSecondaryHeader } = props;\n const hasPanelHeader = useWorkbenchPanelHeaderVisible(workbench, \"secondary\");\n const settings = useWorkbenchModeRegionSettings(workbench, \"secondary\");\n const hasTabs = useWorkbenchRegionTabsVisible(workbench, \"secondary\");\n const visible = (settings?.showHeader !== false || hasTabs) && (hasSecondaryHeader || hasPanelHeader);\n\n return (\n <WorkbenchFocusRegion\n workbench={workbench}\n region=\"secondary\"\n data-workbench-panel=\"secondary\"\n data-workbench-region=\"secondary\"\n as=\"section\"\n bg={workbenchBackgrounds.panel}\n layerStyle=\"panel\"\n flex=\"1\"\n h=\"full\"\n minH=\"0\"\n minW=\"0\"\n overflow=\"hidden\"\n display=\"flex\"\n flexDirection=\"column\"\n w=\"full\"\n position=\"relative\"\n >\n <Header\n display={visible ? \"flex\" : \"none\"}\n data-workbench-panel-header=\"secondary\"\n variant=\"main\"\n bg={workbenchBackgrounds.panel}\n position=\"relative\"\n flexShrink={0}\n gap=\"xs\"\n overflow=\"hidden\"\n overflowY=\"hidden\"\n >\n <WorkbenchRegionTabs workbench={workbench} region=\"secondary\" />\n <Box display={hasSecondaryHeader ? \"block\" : \"none\"} flex=\"1\" h=\"full\" minW=\"0\" overflow=\"hidden\">\n <WorkbenchRegion workbench={workbench} region=\"secondary-header\" title=\"Secondary Panel header\" />\n </Box>\n <WorkbenchPanelMenuOpeners workbench={workbench} panel=\"secondary\" />\n <WorkbenchHeaderBorder workbench={workbench} region=\"secondary-header\" />\n </Header>\n <WorkbenchTabDropTarget region=\"secondary\" />\n <Box flex=\"1\" minH=\"0\" minW=\"0\" overflow=\"hidden\">\n <WorkbenchPanelMenuLayout workbench={workbench} panel=\"secondary\">\n <WorkbenchRegion workbench={workbench} region=\"secondary\" title=\"Secondary Panel\" />\n </WorkbenchPanelMenuLayout>\n </Box>\n </WorkbenchFocusRegion>\n );\n};\n","import { Box, Grid } from \"@chakra-ui/react\";\nimport { Header, PANEL_HEADER_CONTROL_SIZE, ResizableSplitLayout } from \"@pstdio/ui\";\nimport { headerTrailingMenuPath, type WorkbenchCore, type WorkbenchRegionSize } from \"../../core\";\nimport { WorkbenchFocusRegion } from \"../focus/focus-region\";\nimport { WorkbenchHeaderActions } from \"../header/header-actions\";\nimport { WorkbenchPanelMenuLayout, WorkbenchPanelMenuOpeners } from \"../panel-menu/panel-menu\";\nimport { WorkbenchRegion } from \"../region/region\";\nimport {\n useWorkbenchPanelHeaderVisible,\n useWorkbenchRegionTabsVisible,\n WorkbenchRegionTabs,\n} from \"../region/region-tabs\";\nimport { WorkbenchTabDropTarget } from \"../region/tab-drag-context\";\nimport { useWorkbenchModeRegionSettings } from \"../shared/use-workbench-mode-region-settings\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { workbenchBackgrounds } from \"../theme/workbench-theme-background\";\nimport { WorkbenchHeaderBorder } from \"./header-bottom-border\";\nimport { useWorkbenchMainPanels } from \"./use-workbench-main-panels\";\nimport { WorkbenchSecondaryPanel } from \"./workbench-secondary-panel\";\n\ninterface WorkbenchBodyProps {\n workbench: WorkbenchCore;\n}\n\nconst SECONDARY_PANEL_SIZE = { defaultPx: 240, minPx: 128, maxPx: 420 };\nconst SECONDARY_PANEL_CONTENT_MIN_SIZE_PX = 240;\nconst mainHeaderTrailingMenuPath = headerTrailingMenuPath(\"main\");\n\nconst resolveRegionSize = (\n regionSize: WorkbenchRegionSize | undefined,\n persistedSize: number | undefined,\n fallback: Required<WorkbenchRegionSize>,\n) => ({\n defaultPx: persistedSize ?? regionSize?.defaultPx ?? fallback.defaultPx,\n minPx: regionSize?.minPx ?? fallback.minPx,\n maxPx: regionSize ? regionSize.maxPx : fallback.maxPx,\n});\n\ninterface MainHeaderBarProps {\n workbench: WorkbenchCore;\n hasMainHeader: boolean;\n}\n\nconst MainHeaderBar = (props: MainHeaderBarProps) => {\n const { workbench, hasMainHeader } = props;\n const hasMainContentTabs = useWorkbenchRegionTabsVisible(workbench, \"main\");\n const hasPanelHeader = useWorkbenchPanelHeaderVisible(workbench, \"main\");\n const settings = useWorkbenchModeRegionSettings(workbench, \"main\");\n\n const visible = (settings?.showHeader !== false || hasMainContentTabs) && (hasMainHeader || hasPanelHeader);\n\n return (\n <Header\n data-workbench-panel-header=\"main\"\n display={visible ? \"flex\" : \"none\"}\n variant=\"main\"\n bg={workbenchBackgrounds.main}\n position=\"relative\"\n flexShrink={0}\n gap=\"xs\"\n overflow=\"hidden\"\n overflowY=\"hidden\"\n >\n <WorkbenchRegionTabs workbench={workbench} region=\"main\" />\n {/* The tab strip grows into the empty header, so only claim space when a\n main-header view is actually mounted or when there are no tabs to claim it. */}\n <Box flex={hasMainHeader || !hasMainContentTabs ? \"1\" : \"0\"} h=\"full\" minW=\"0\" overflow=\"hidden\">\n <WorkbenchRegion workbench={workbench} region=\"main-header\" title=\"Main header\" />\n </Box>\n <WorkbenchHeaderActions\n workbench={workbench}\n menuPath={mainHeaderTrailingMenuPath}\n controlSize={PANEL_HEADER_CONTROL_SIZE}\n />\n <WorkbenchPanelMenuOpeners workbench={workbench} panel=\"main\" />\n <WorkbenchHeaderBorder workbench={workbench} region=\"main-header\" />\n </Header>\n );\n};\n\nexport const WorkbenchBody = (props: WorkbenchBodyProps) => {\n const { workbench } = props;\n const pageId = useWorkbenchStore(workbench.pages.store, (state) => state.activePageId);\n const modeSettings = useWorkbenchModeRegionSettings(workbench, \"secondary\");\n const panels = useWorkbenchMainPanels(workbench);\n const { hasMainHeader, secondaryPanel } = panels;\n const persistedSecondarySize = useWorkbenchStore(\n workbench.layout.store,\n (state) => state.layout.regions.secondary.size,\n );\n const secondaryPanelSize = resolveRegionSize(\n modeSettings?.size ?? workbench.layout.getRegionSize(\"secondary\"),\n persistedSecondarySize,\n SECONDARY_PANEL_SIZE,\n );\n\n const mainRegion = (\n <WorkbenchFocusRegion\n workbench={workbench}\n region=\"main\"\n data-workbench-region=\"main\"\n bg={workbenchBackgrounds.main}\n flex=\"1\"\n h=\"full\"\n minH=\"0\"\n minW=\"0\"\n w=\"full\"\n overflow=\"hidden\"\n >\n <WorkbenchRegion workbench={workbench} region=\"main\" title=\"Main\" />\n </WorkbenchFocusRegion>\n );\n const mainPanelWithMenus = (\n <WorkbenchPanelMenuLayout workbench={workbench} panel=\"main\">\n {mainRegion}\n </WorkbenchPanelMenuLayout>\n );\n\n const mainContent = (\n <Grid\n data-workbench-panel=\"main\"\n data-workbench-page={pageId}\n gridTemplateRows=\"auto minmax(0, 1fr)\"\n h=\"full\"\n minH=\"0\"\n minW=\"0\"\n w=\"full\"\n bg={workbenchBackgrounds.main}\n layerStyle=\"panel\"\n position=\"relative\"\n >\n <MainHeaderBar workbench={workbench} hasMainHeader={hasMainHeader} />\n <WorkbenchTabDropTarget region=\"main\" />\n <Box gridRow=\"2\" h=\"full\" minH=\"0\" minW=\"0\" overflow=\"hidden\">\n {mainPanelWithMenus}\n </Box>\n </Grid>\n );\n\n return (\n <ResizableSplitLayout\n as=\"main\"\n minH=\"0\"\n minW=\"0\"\n resizableSide=\"bottom\"\n contentPanel={mainContent}\n resizablePanel={<WorkbenchSecondaryPanel workbench={workbench} hasSecondaryHeader={secondaryPanel.hasHeader} />}\n collapsed={!secondaryPanel.has || secondaryPanel.collapsed}\n collapsible={secondaryPanel.collapsible}\n defaultSizePx={secondaryPanelSize.defaultPx}\n minSizePx={secondaryPanelSize.minPx}\n maxSizePx={secondaryPanelSize.maxPx}\n contentMinSizePx={SECONDARY_PANEL_CONTENT_MIN_SIZE_PX}\n resizeLabel=\"Resize Secondary Panel\"\n onSizeChange={(height) => workbench.layout.setRegionSize(\"secondary\", height)}\n onCollapsedChange={secondaryPanel.onCollapsedChange}\n />\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport {\n DndContext,\n type DragOverEvent,\n DragOverlay,\n MouseSensor,\n pointerWithin,\n TouchSensor,\n useDraggable,\n useDroppable,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { DropIndicator } from \"@pstdio/ui\";\nimport { useState } from \"react\";\nimport type { WorkbenchCore, WorkbenchStatusBarSlot, WorkbenchWidgetPlacement } from \"../../core\";\nimport { useRetainedViewPlacements } from \"../region/use-retained-view-placements\";\nimport { WorkbenchWidgetHost } from \"../region/widget-host\";\nimport { useWorkbenchActiveModeId } from \"../shared/use-workbench-location-resource\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\n\ninterface StatusDrop {\n id: string;\n edge: \"before\" | \"after\";\n}\n\nconst reorderInstructions = \"Drag to reorder. Alt+Left or Alt+Right to move.\";\n\nconst resolveDrop = (event: DragOverEvent) => {\n if (!event.over || event.over.id === event.active.id) return undefined;\n const rect = event.active.rect.current.translated;\n if (!rect) return undefined;\n return {\n id: String(event.over.id),\n edge: rect.left + rect.width / 2 < event.over.rect.left + event.over.rect.width / 2 ? \"before\" : \"after\",\n } satisfies StatusDrop;\n};\n\ninterface WorkbenchStatusBarItemProps {\n workbench: WorkbenchCore;\n placement: WorkbenchWidgetPlacement;\n ids: string[];\n activeId?: string;\n drop?: StatusDrop;\n}\n\nconst WorkbenchStatusBarItem = (props: WorkbenchStatusBarItemProps) => {\n const { workbench, placement, ids, activeId, drop } = props;\n const id = placement.widgetId;\n const order = ids.indexOf(id);\n const sortable = order >= 0 && ids.length > 1;\n const drag = useDraggable({ id, disabled: !sortable });\n const target = useDroppable({ id, disabled: !sortable });\n const title = placement.title ?? id;\n return (\n <Box\n ref={(node: HTMLDivElement | null) => {\n drag.setNodeRef(node);\n target.setNodeRef(node);\n }}\n {...drag.listeners}\n tabIndex={sortable ? 0 : undefined}\n role=\"group\"\n aria-label={title}\n aria-describedby={sortable ? drag.attributes[\"aria-describedby\"] : undefined}\n aria-keyshortcuts={sortable ? \"Alt+ArrowLeft Alt+ArrowRight\" : undefined}\n data-status-bar-item={id}\n data-sortable={sortable || undefined}\n data-dragging={activeId === id || undefined}\n layerStyle=\"statusBarItem\"\n alignItems=\"center\"\n display={order < 0 ? \"none\" : \"flex\"}\n inert={order < 0}\n order={order}\n touchAction={sortable ? \"pan-y\" : undefined}\n onKeyDown={(event) => {\n if (!sortable || !event.altKey || ![\"ArrowLeft\", \"ArrowRight\"].includes(event.key)) return;\n event.preventDefault();\n event.stopPropagation();\n const left = event.key === \"ArrowLeft\";\n const neighbor = ids[order + (left ? -1 : 1)];\n if (neighbor) {\n workbench.statusBar.reorderItem(id, left ? { beforeItemId: neighbor } : { afterItemId: neighbor });\n }\n }}\n >\n <WorkbenchWidgetHost workbench={workbench} region=\"status\" placement={placement} />\n {/* A drag must keep its pointer events in the host, even over an extension iframe. */}\n {activeId ? <Box position=\"absolute\" inset=\"0\" /> : null}\n {drop?.id === id ? (\n <DropIndicator orientation=\"vertical\" {...(drop.edge === \"before\" ? { left: 0 } : { right: 0 })} />\n ) : null}\n </Box>\n );\n};\n\nexport const WorkbenchStatusBarItems = (props: { workbench: WorkbenchCore; slot: WorkbenchStatusBarSlot }) => {\n const { slot, workbench } = props;\n useWorkbenchStore(workbench.statusBar.store, (state) => state);\n const activeModeId = useWorkbenchActiveModeId(workbench);\n const items = activeModeId === workbench.modes.getActiveModeId() ? workbench.statusBar.listVisibleItems(slot) : [];\n const ids = items.map((item) => item.id);\n const placements = useRetainedViewPlacements(\n workbench,\n items.map((item) => ({\n widgetId: item.id,\n contributionId: item.viewId,\n viewId: item.viewId,\n title: workbench.views.getView(item.viewId)?.title,\n closable: false,\n })),\n );\n const [activeId, setActiveId] = useState<string>();\n const [drop, setDrop] = useState<StatusDrop>();\n const sensors = useSensors(\n useSensor(MouseSensor, { activationConstraint: { distance: 5 } }),\n useSensor(TouchSensor, { activationConstraint: { distance: 5 } }),\n );\n const finish = () => {\n setActiveId(undefined);\n setDrop(undefined);\n };\n return (\n <DndContext\n sensors={sensors}\n accessibility={{ screenReaderInstructions: { draggable: reorderInstructions } }}\n collisionDetection={pointerWithin}\n onDragStart={(event) => setActiveId(String(event.active.id))}\n onDragOver={(event) => setDrop(resolveDrop(event))}\n onDragMove={(event) => setDrop(resolveDrop(event))}\n onDragCancel={finish}\n onDragEnd={(event) => {\n const target = resolveDrop(event);\n finish();\n if (target) {\n workbench.statusBar.reorderItem(\n String(event.active.id),\n target.edge === \"before\" ? { beforeItemId: target.id } : { afterItemId: target.id },\n );\n }\n }}\n >\n {placements.map((placement) => (\n <WorkbenchStatusBarItem key={placement.widgetId} {...{ workbench, placement, ids, activeId, drop }} />\n ))}\n <Box asChild pointerEvents=\"none\">\n <DragOverlay dropAnimation={null}>\n {activeId ? (\n <Box layerStyle=\"floatingBar\" textStyle=\"label/XS/medium\">\n {placements.find((placement) => placement.widgetId === activeId)?.title ?? activeId}\n </Box>\n ) : null}\n </DragOverlay>\n </Box>\n </DndContext>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport { type ResourceContextAction, ResourceContextMenu } from \"@pstdio/ui\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { WorkbenchFocusRegion } from \"../focus/focus-region\";\nimport { ModeChromeView, useModeChrome } from \"../region/mode-chrome\";\nimport { WorkbenchRegion } from \"../region/region\";\nimport { workbenchBackgrounds } from \"../theme/workbench-theme-background\";\nimport { WorkbenchStatusBarItems } from \"./workbench-status-bar-items\";\n\ninterface WorkbenchSidenavProps {\n workbench: WorkbenchCore;\n contextActions: ResourceContextAction[];\n}\n\nexport const WorkbenchSidenav = (props: WorkbenchSidenavProps) => {\n const { workbench, contextActions } = props;\n\n return (\n <ResourceContextMenu actions={contextActions} closeOnSelect={false} keepMountedWhenEmpty>\n <Box h=\"full\" minH=\"0\" minW=\"0\" w=\"full\">\n <WorkbenchFocusRegion\n workbench={workbench}\n region=\"sidenav\"\n data-workbench-region=\"sidenav\"\n as=\"aside\"\n bg={workbenchBackgrounds.sidenav}\n layerStyle=\"panel\"\n display=\"flex\"\n flexDirection=\"column\"\n h=\"full\"\n minH=\"0\"\n minW=\"0\"\n overflow=\"hidden\"\n w=\"full\"\n >\n <Box flex=\"1\" minH=\"0\" minW=\"0\" overflow=\"hidden\">\n <WorkbenchRegion workbench={workbench} region=\"sidenav\" title=\"Sidenav\" />\n </Box>\n </WorkbenchFocusRegion>\n </Box>\n </ResourceContextMenu>\n );\n};\n\ninterface WorkbenchRegionPanelProps {\n workbench: WorkbenchCore;\n visible?: boolean;\n}\n\nexport const WORKBENCH_STATUS_BAR_HEIGHT = \"2rem\";\n\nexport const WorkbenchActivityBar = (props: WorkbenchRegionPanelProps) => {\n const { workbench } = props;\n\n return (\n <WorkbenchFocusRegion\n workbench={workbench}\n region=\"activity\"\n data-workbench-region=\"activity\"\n display={props.visible === false ? \"none\" : \"block\"}\n as=\"nav\"\n flexShrink={0}\n h=\"full\"\n minH=\"0\"\n overflow=\"hidden\"\n w=\"3.5rem\"\n >\n <WorkbenchRegion workbench={workbench} region=\"activity\" title=\"Activity bar\" />\n </WorkbenchFocusRegion>\n );\n};\n\nexport const WorkbenchStatusBar = (props: WorkbenchRegionPanelProps) => {\n const { workbench } = props;\n const chrome = useModeChrome(workbench, \"status\");\n\n return (\n <WorkbenchFocusRegion\n workbench={workbench}\n region=\"status\"\n data-workbench-region=\"status\"\n display={props.visible === false ? \"none\" : \"block\"}\n as=\"footer\"\n flexShrink={0}\n h={WORKBENCH_STATUS_BAR_HEIGHT}\n minH=\"0\"\n minW=\"0\"\n overflow=\"hidden\"\n >\n <ModeChromeView workbench={workbench} region=\"status\" viewId={chrome || undefined} />\n <Box\n display={chrome ? \"none\" : \"flex\"}\n alignItems=\"stretch\"\n justifyContent=\"space-between\"\n px=\"sm\"\n h=\"full\"\n minW=\"0\"\n w=\"full\"\n >\n <Box display=\"flex\" alignItems=\"stretch\" minW=\"0\" h=\"full\">\n <WorkbenchStatusBarItems workbench={workbench} slot=\"leading\" />\n </Box>\n <Box display=\"flex\" alignItems=\"stretch\" minW=\"0\" h=\"full\">\n <WorkbenchStatusBarItems workbench={workbench} slot=\"trailing\" />\n </Box>\n </Box>\n </WorkbenchFocusRegion>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport { ResizableSplitLayout } from \"@pstdio/ui\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { WorkbenchRegion } from \"../region/region\";\nimport { WorkbenchRegionTabs } from \"../region/region-tabs\";\nimport { useWorkbenchModeRegionSettings } from \"../shared/use-workbench-mode-region-settings\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { WorkbenchAttachedSidePanel } from \"../side-panel/side-panel\";\n\nconst ATTACHED_PANEL_DEFAULT_SIZE_PX = 420;\nconst ATTACHED_PANEL_MIN_SIZE_PX = 320;\n\ninterface WorkbenchSidePanelRegionPortalProps {\n workbench: WorkbenchCore;\n sidePanelHost: HTMLDivElement | null;\n}\n\nexport const WorkbenchSidePanelRegionPortal = (props: WorkbenchSidePanelRegionPortalProps) => {\n const { workbench, sidePanelHost } = props;\n\n if (!sidePanelHost) return null;\n\n return createPortal(\n <WorkbenchRegion workbench={workbench} region=\"side\" title=\"Side Panel\" transparent />,\n sidePanelHost,\n );\n};\n\ninterface WorkbenchSidePanelRegionHeaderProps {\n workbench: WorkbenchCore;\n hasSideHeader: boolean;\n}\n\nexport const WorkbenchSidePanelRegionHeader = (props: WorkbenchSidePanelRegionHeaderProps) => {\n const { workbench, hasSideHeader } = props;\n\n return (\n <Box alignItems=\"center\" display=\"flex\" flex=\"1\" h=\"full\" minW=\"0\" overflow=\"hidden\" w=\"full\">\n <WorkbenchRegionTabs workbench={workbench} region=\"side\" />\n {hasSideHeader ? (\n <Box flex=\"1\" h=\"full\" minW=\"0\" overflow=\"hidden\">\n <WorkbenchRegion workbench={workbench} region=\"side-header\" title=\"Side Panel header\" transparent />\n </Box>\n ) : null}\n </Box>\n );\n};\n\ninterface WorkbenchAttachedSidePanelLayoutProps {\n workbench: WorkbenchCore;\n attached: boolean;\n contentPanel: ReactNode;\n contentMinSizePx: number;\n header: ReactNode;\n onAttachedSlotChange: (slot: HTMLDivElement | null) => void;\n onCollapse: () => void;\n}\n\nexport const WorkbenchAttachedSidePanelLayout = (props: WorkbenchAttachedSidePanelLayoutProps) => {\n const { workbench, attached, contentPanel, contentMinSizePx, header, onAttachedSlotChange, onCollapse } = props;\n const persistedSize = useWorkbenchStore(workbench.layout.store, (state) => state.layout.regions.side.size);\n const modeSettings = useWorkbenchModeRegionSettings(workbench, \"side\");\n const size = modeSettings?.size ?? workbench.layout.getRegionSize(\"side\");\n const collapsible = modeSettings?.collapsible ?? workbench.layout.getRegionCollapsible(\"side\");\n\n return (\n <ResizableSplitLayout\n h=\"full\"\n minH=\"0\"\n minW=\"0\"\n w=\"full\"\n resizableSide=\"right\"\n contentPanel={contentPanel}\n resizablePanel={\n <WorkbenchAttachedSidePanel workbench={workbench} contentSlotRef={onAttachedSlotChange} header={header} />\n }\n collapsed={!attached}\n defaultSizePx={persistedSize ?? size?.defaultPx ?? ATTACHED_PANEL_DEFAULT_SIZE_PX}\n minSizePx={size?.minPx ?? ATTACHED_PANEL_MIN_SIZE_PX}\n maxSizePx={size?.maxPx}\n collapsible={collapsible}\n onSizeChange={(width) => workbench.layout.setRegionSize(\"side\", width)}\n contentMinSizePx={contentMinSizePx}\n resizeLabel=\"Resize Side Panel\"\n onCollapsedChange={(collapsed) => {\n if (attached && collapsed) onCollapse();\n }}\n />\n );\n};\n","import { Flex } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport type { WorkbenchCore } from \"../../core\";\nimport { WorkbenchAttachedSidePanelLayout } from \"./workbench-side-panel-layout\";\n\ninterface WorkbenchSidePanelBoundaryProps {\n workbench: WorkbenchCore;\n showAttachedSidePanel: boolean;\n contentFrame: ReactNode;\n sideHeader: ReactNode;\n contentMinSizePx: number;\n onAttachedSlotChange(slot: HTMLDivElement | null): void;\n}\n\ninterface WorkbenchKeyboardFrameProps {\n children: ReactNode;\n}\n\nconst interactivePointerTargetSelector = [\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"textarea\",\n \"[contenteditable='true']\",\n \"[role='button']\",\n \"[role='checkbox']\",\n \"[role='menuitem']\",\n \"[role='option']\",\n \"[role='radio']\",\n \"[role='switch']\",\n \"[tabindex]:not([tabindex='-1'])\",\n].join(\",\");\n\nconst hasClosest = (target: EventTarget | null): target is EventTarget & { closest(selector: string): unknown } =>\n typeof (target as { closest?: unknown } | null)?.closest === \"function\";\n\nexport const shouldFocusWorkbenchKeyboardFrame = (target: EventTarget | null, currentTarget: EventTarget) => {\n if (target === currentTarget) return true;\n if (!hasClosest(target)) return false;\n return !target.closest(interactivePointerTargetSelector);\n};\n\nconst focusWorkbenchKeyboardFrame = (element: HTMLDivElement | null) => {\n element?.focus({ preventScroll: true });\n};\n\nconst WorkbenchKeyboardFrame = (props: WorkbenchKeyboardFrameProps) => {\n const { children } = props;\n const ref = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n focusWorkbenchKeyboardFrame(ref.current);\n }, []);\n\n return (\n <Flex\n ref={ref}\n h=\"full\"\n minH=\"0\"\n minW=\"0\"\n w=\"full\"\n tabIndex={-1}\n outline=\"none\"\n onPointerDown={(event) => {\n if (shouldFocusWorkbenchKeyboardFrame(event.target, event.currentTarget)) {\n focusWorkbenchKeyboardFrame(event.currentTarget);\n }\n }}\n >\n {children}\n </Flex>\n );\n};\n\nexport const WorkbenchSidePanelBoundary = (props: WorkbenchSidePanelBoundaryProps) => {\n const { workbench, showAttachedSidePanel, contentFrame, sideHeader, contentMinSizePx, onAttachedSlotChange } = props;\n\n return (\n <WorkbenchKeyboardFrame>\n <WorkbenchAttachedSidePanelLayout\n workbench={workbench}\n attached={showAttachedSidePanel}\n contentPanel={contentFrame}\n contentMinSizePx={contentMinSizePx}\n header={sideHeader}\n onAttachedSlotChange={onAttachedSlotChange}\n onCollapse={() => workbench.sidePanel.setMode(\"closed\")}\n />\n </WorkbenchKeyboardFrame>\n );\n};\n","import { Flex } from \"@chakra-ui/react\";\nimport { ResizableSplitLayout, type ResourceContextAction, type ThemePreferenceStorage, Toaster } from \"@pstdio/ui\";\nimport { type ReactNode, useLayoutEffect, useRef, useState } from \"react\";\nimport type { WorkbenchCore, WorkbenchShellOpenRegion } from \"../../core\";\nimport { WorkbenchCommandPalette } from \"../command-palette/command-palette\";\nimport type { CommandParamFieldRenderer } from \"../command-palette/command-params-dialog\";\nimport { WorkbenchNavChrome, type WorkbenchNavRegionControl } from \"../header/workbench-nav-chrome\";\nimport { WorkbenchKeybindingDispatcher } from \"../keybindings/workbench-keybinding-dispatcher\";\nimport { WorkbenchNotificationHost } from \"../notifications/notification-host\";\nimport { useWorkbenchPanelMenusPresent } from \"../panel-menu/use-panel-menu\";\nimport { useModeChrome } from \"../region/mode-chrome\";\nimport { movePanelHost } from \"../region/move-panel-host\";\nimport { WorkbenchPanelViewHosts } from \"../region/panel-view-hosts\";\nimport { useWorkbenchPanelHeaderVisible } from \"../region/region-tabs\";\nimport { WorkbenchTabDragProvider } from \"../region/tab-drag-context\";\nimport { installWorkbenchControlsRenderer } from \"../renderers/controls/install-controls-renderer\";\nimport { installWorkbenchDataTableRenderer } from \"../renderers/data-table/install-data-table-renderer\";\nimport { installWorkbenchFileRenderer } from \"../renderers/file/install-file-renderer\";\nimport { installWorkbenchKanbanRenderer } from \"../renderers/kanban/install-kanban-renderer\";\nimport { installWorkbenchTreeRenderer } from \"../renderers/tree/install-tree-renderer\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nimport { WorkbenchFloatingSidePanel } from \"../side-panel/side-panel\";\nimport { useWorkbenchFileIconThemePreferences } from \"../theme/use-workbench-file-icon-theme-preferences\";\nimport { useWorkbenchThemePreferences } from \"../theme/use-workbench-theme-preferences\";\nimport { workbenchBackgrounds } from \"../theme/workbench-theme-background\";\nimport { WorkbenchThemeProvider } from \"../theme/workbench-theme-provider\";\nimport { WorkbenchThemeScope } from \"../theme/workbench-theme-scope\";\nimport { WorkbenchOverlayLayer } from \"./overlay-layer\";\nimport { useWorkbenchRegionContent } from \"./use-workbench-region-content\";\nimport { WorkbenchBody } from \"./workbench-body\";\nimport { resolvePanelCollapsible } from \"./workbench-panel-state\";\nimport {\n WORKBENCH_STATUS_BAR_HEIGHT,\n WorkbenchActivityBar,\n WorkbenchSidenav,\n WorkbenchStatusBar,\n} from \"./workbench-panels\";\nimport { WorkbenchSidePanelBoundary } from \"./workbench-side-panel-boundary\";\nimport { WorkbenchSidePanelRegionHeader, WorkbenchSidePanelRegionPortal } from \"./workbench-side-panel-layout\";\n\ninterface WorkbenchProps {\n workbench: WorkbenchCore;\n /** Host chrome above all workbench regions, inside the current theme. */\n titleBar?: ReactNode;\n renderParamField?: CommandParamFieldRenderer;\n /** Icon shown in the closed Side Panel's bubble launcher. */\n sidePanelBubbleIcon?: ReactNode;\n /** Host action for opening the closed Side Panel from its bubble launcher. */\n onOpenSidePanel?: () => void;\n /** Host storage for the chosen theme. Defaults to browser storage. */\n themeStorage?: ThemePreferenceStorage;\n}\n\nconst SIDENAV_DEFAULT_SIZE_PX = 250;\nconst SIDENAV_MIN_SIZE_PX = 200;\nconst CONTENT_MIN_SIZE_PX = 320;\n\nconst resolveSidenavSize = (workbench: WorkbenchCore, persistedSize: number | undefined) => {\n const regionSize = workbench.layout.getRegionSize(\"sidenav\");\n\n return {\n defaultPx: persistedSize ?? regionSize?.defaultPx ?? SIDENAV_DEFAULT_SIZE_PX,\n minPx: regionSize?.minPx ?? SIDENAV_MIN_SIZE_PX,\n maxPx: regionSize?.maxPx,\n };\n};\n\nconst createSidePanelHost = () => {\n if (typeof document === \"undefined\") return null;\n const host = document.createElement(\"div\");\n host.style.display = \"contents\";\n host.dataset.workbenchSidePanelHost = \"\";\n return host;\n};\n\nconst useWorkbenchLayoutFlags = (workbench: WorkbenchCore) => {\n const statusChrome = useModeChrome(workbench, \"status\");\n const statusBarItems = useWorkbenchStore(workbench.statusBar.store, (state) => state.items);\n useWorkbenchStore(workbench.context.store, (state) => state.values);\n const activeModeId = useWorkbenchStore(workbench.modes.store, (state) => state.activeModeId);\n return {\n hasNavWidgets: useWorkbenchRegionContent(workbench, \"nav\"),\n hasActivityBarWidgets: useWorkbenchRegionContent(workbench, \"activity\"),\n hasSidenavWidgets: useWorkbenchRegionContent(workbench, \"sidenav\"),\n hasSecondaryHeaderWidgets: useWorkbenchRegionContent(workbench, \"secondary-header\"),\n hasSecondaryWidgets: useWorkbenchRegionContent(workbench, \"secondary\", { locationScoped: true }),\n hasSecondaryMenus: useWorkbenchPanelMenusPresent(workbench, \"secondary\"),\n hasSideHeaderWidgets: useWorkbenchRegionContent(workbench, \"side-header\"),\n hasSideWidgets: useWorkbenchRegionContent(workbench, \"side\", { locationScoped: true }),\n hasSideMenus: useWorkbenchPanelMenusPresent(workbench, \"side\"),\n hasStatusWidgets:\n statusChrome !== undefined\n ? statusChrome !== false\n : activeModeId === workbench.modes.getActiveModeId() &&\n Object.keys(statusBarItems).length > 0 &&\n workbench.statusBar.listVisibleItems().length > 0,\n };\n};\n\ninterface WorkbenchRegionControlsInput {\n showSidenav: boolean;\n sidenavOpen: boolean;\n showSecondaryPanel: boolean;\n secondaryPanelOpen: boolean;\n hasSidePanel: boolean;\n sidePanelMode: \"attached\" | \"floating\" | \"closed\";\n setPanelOpen: (region: WorkbenchShellOpenRegion, open: boolean) => void;\n}\n\nconst createWorkbenchRegionControls = (input: WorkbenchRegionControlsInput) => {\n const controls: WorkbenchNavRegionControl[] = [];\n\n if (input.showSidenav && !input.sidenavOpen) {\n controls.push({\n id: \"sidenav\",\n label: \"Show Sidenav\",\n icon: \"PanelLeft\",\n open: false,\n onToggle: () => input.setPanelOpen(\"sidenav\", true),\n });\n }\n\n if (input.showSecondaryPanel) {\n controls.push({\n id: \"secondary\",\n label: input.secondaryPanelOpen ? \"Hide Secondary Panel\" : \"Show Secondary Panel\",\n icon: \"PanelBottom\",\n open: input.secondaryPanelOpen,\n onToggle: () => input.setPanelOpen(\"secondary\", !input.secondaryPanelOpen),\n });\n }\n\n if (input.hasSidePanel) {\n const open = input.sidePanelMode !== \"closed\";\n controls.push({\n id: \"side\",\n label: open ? \"Hide Side Panel\" : \"Show Side Panel\",\n icon: \"PanelRight\",\n open,\n onToggle: () => input.setPanelOpen(\"side\", !open),\n });\n }\n\n return controls;\n};\n\nconst WorkbenchContent = (props: WorkbenchProps) => {\n const { workbench, renderParamField, sidePanelBubbleIcon, onOpenSidePanel, titleBar } = props;\n const [sidenavContextActions, setSidenavContextActions] = useState<ResourceContextAction[]>([]);\n installWorkbenchTreeRenderer(workbench, {\n renderParamField,\n onSidenavContextActionsChange: setSidenavContextActions,\n });\n installWorkbenchKanbanRenderer(workbench, { renderParamField });\n installWorkbenchDataTableRenderer(workbench, { renderParamField });\n installWorkbenchFileRenderer(workbench);\n installWorkbenchControlsRenderer(workbench, { renderParamField });\n const [attachedSidePanelSlot, setAttachedSidePanelSlot] = useState<HTMLDivElement | null>(null);\n const [floatingSidePanelSlot, setFloatingSidePanelSlot] = useState<HTMLDivElement | null>(null);\n const sidePanelHostRef = useRef<HTMLDivElement | null>(null);\n if (!sidePanelHostRef.current) sidePanelHostRef.current = createSidePanelHost();\n\n const paletteOpen = useWorkbenchStore(workbench.commandPalette.store, (state) => state.open);\n const paletteInitialQuery = useWorkbenchStore(workbench.commandPalette.store, (state) => state.initialQuery);\n const sidenavOpen = useWorkbenchStore(workbench.layout.store, (state) => state.layout.regions.sidenav.visible);\n const secondaryPanelOpen = useWorkbenchStore(\n workbench.layout.store,\n (state) => state.layout.regions.secondary.visible,\n );\n const hasSecondaryPanelHeader = useWorkbenchPanelHeaderVisible(workbench, \"secondary\");\n const hasSidePanelHeader = useWorkbenchPanelHeaderVisible(workbench, \"side\");\n const sidePanelMode = useWorkbenchStore(workbench.layout.store, () => workbench.sidePanel.getMode());\n\n const {\n hasActivityBarWidgets,\n hasNavWidgets,\n hasSideHeaderWidgets,\n hasSideWidgets,\n hasSideMenus,\n hasSidenavWidgets,\n hasSecondaryHeaderWidgets,\n hasSecondaryWidgets,\n hasSecondaryMenus,\n hasStatusWidgets,\n } = useWorkbenchLayoutFlags(workbench);\n const hasSidePanel = hasSideHeaderWidgets || hasSideWidgets || hasSidePanelHeader || hasSideMenus;\n const showSidenav = hasSidenavWidgets;\n const sidenavCollapsible = resolvePanelCollapsible(workbench, \"sidenav\");\n const showSecondaryPanel =\n hasSecondaryHeaderWidgets || hasSecondaryWidgets || hasSecondaryPanelHeader || hasSecondaryMenus;\n const persistedSidenavSize = useWorkbenchStore(workbench.layout.store, (state) => state.layout.regions.sidenav.size);\n const sidenavSize = resolveSidenavSize(workbench, persistedSidenavSize);\n const showAttachedSidePanel = hasSidePanel && sidePanelMode === \"attached\";\n // Closed removes the Side Panel's footprint, not its live region. Keeping the\n // portal in the hidden attached slot preserves provider and renderer state.\n const setPanelOpen = workbench.shell.setRegionOpen;\n const regionControls = createWorkbenchRegionControls({\n showSidenav,\n sidenavOpen,\n showSecondaryPanel,\n secondaryPanelOpen,\n hasSidePanel,\n sidePanelMode,\n setPanelOpen,\n });\n\n const sideHeader =\n hasSideHeaderWidgets || hasSidePanelHeader ? (\n <WorkbenchSidePanelRegionHeader workbench={workbench} hasSideHeader={hasSideHeaderWidgets} />\n ) : undefined;\n let activeSidePanelSlot: HTMLElement | null = attachedSidePanelSlot;\n if (sidePanelMode === \"floating\") activeSidePanelSlot = floatingSidePanelSlot;\n else if (sidePanelMode === \"closed\")\n activeSidePanelSlot = sidePanelHostRef.current?.parentElement ?? attachedSidePanelSlot;\n\n useLayoutEffect(() => {\n const host = sidePanelHostRef.current;\n if (!host) return;\n movePanelHost(host, activeSidePanelSlot);\n }, [activeSidePanelSlot]);\n\n const contentWithHeader = (\n <Flex direction=\"column\" h=\"full\" minH=\"0\" minW=\"0\" w=\"full\">\n <WorkbenchNavChrome workbench={workbench} hasNav={hasNavWidgets} regionControls={regionControls} />\n <Flex flex=\"1\" minH=\"0\" minW=\"0\" overflow=\"hidden\">\n <WorkbenchBody workbench={workbench} />\n </Flex>\n </Flex>\n );\n\n const contentWithSidenav = (\n <ResizableSplitLayout\n flex=\"1\"\n minH=\"0\"\n minW=\"0\"\n resizablePanel={<WorkbenchSidenav workbench={workbench} contextActions={sidenavContextActions} />}\n contentPanel={contentWithHeader}\n collapsed={!showSidenav || !sidenavOpen}\n collapsible={sidenavCollapsible}\n defaultSizePx={sidenavSize.defaultPx}\n minSizePx={sidenavSize.minPx}\n maxSizePx={sidenavSize.maxPx}\n contentMinSizePx={CONTENT_MIN_SIZE_PX}\n resizeLabel=\"Resize sidenav\"\n onSizeChange={(width) => workbench.layout.setRegionSize(\"sidenav\", width)}\n onCollapsedChange={(collapsed) => {\n if (!collapsed || sidenavCollapsible) setPanelOpen(\"sidenav\", !collapsed);\n }}\n />\n );\n\n const contentFrame = (\n <Flex position=\"relative\" h=\"full\" minH=\"0\" minW=\"0\" w=\"full\" bg={workbenchBackgrounds.main} color=\"fg\">\n <WorkbenchActivityBar workbench={workbench} visible={hasActivityBarWidgets} />\n <Flex flex=\"1\" minH=\"0\" minW=\"0\" overflow=\"hidden\" position=\"relative\">\n {contentWithSidenav}\n </Flex>\n <WorkbenchOverlayLayer workbench={workbench} />\n </Flex>\n );\n\n return (\n <WorkbenchThemeScope h=\"full\" minH=\"0\" minW=\"0\" w=\"full\">\n <Flex direction=\"column\" h=\"full\" minH=\"0\" minW=\"0\" position=\"relative\" w=\"full\">\n {titleBar}\n <Flex\n flex=\"1\"\n minH=\"0\"\n minW=\"0\"\n overflow=\"hidden\"\n pt=\"panel-gap\"\n // The status bar owns the space under the panels, so its items center in it.\n pb={hasStatusWidgets ? \"0\" : \"panel-gap\"}\n pr=\"panel-gap\"\n pl={hasActivityBarWidgets ? \"0\" : \"panel-gap\"}\n >\n <WorkbenchSidePanelBoundary\n workbench={workbench}\n showAttachedSidePanel={showAttachedSidePanel}\n contentFrame={contentFrame}\n sideHeader={sideHeader}\n contentMinSizePx={CONTENT_MIN_SIZE_PX}\n onAttachedSlotChange={setAttachedSidePanelSlot}\n />\n </Flex>\n <WorkbenchStatusBar workbench={workbench} visible={hasStatusWidgets} />\n <WorkbenchFloatingSidePanel\n workbench={workbench}\n available={hasSidePanel}\n bubbleIcon={sidePanelBubbleIcon}\n onOpen={onOpenSidePanel}\n contentSlotRef={setFloatingSidePanelSlot}\n bottomOffset={hasStatusWidgets ? WORKBENCH_STATUS_BAR_HEIGHT : undefined}\n header={sideHeader}\n />\n <WorkbenchCommandPalette\n workbench={workbench}\n open={paletteOpen}\n initialQuery={paletteInitialQuery}\n renderParamField={renderParamField}\n onClose={() => workbench.commandPalette.close()}\n />\n <WorkbenchKeybindingDispatcher workbench={workbench} />\n <WorkbenchNotificationHost workbench={workbench} />\n </Flex>\n <WorkbenchSidePanelRegionPortal workbench={workbench} sidePanelHost={sidePanelHostRef.current} />\n </WorkbenchThemeScope>\n );\n};\n\nexport const Workbench = (props: WorkbenchProps) => {\n const projectId = useWorkbenchStore(props.workbench.pages.store, (state) => state.projectId);\n const themePreferences = useWorkbenchThemePreferences(props.workbench);\n const mode = useWorkbenchStore(props.workbench.modes.store, (state) =>\n state.activeModeId ? state.modes[state.activeModeId] : undefined,\n );\n const fileIconThemePreferences = useWorkbenchFileIconThemePreferences(props.workbench);\n\n return (\n <WorkbenchThemeProvider\n themePreferences={themePreferences}\n fileIconThemePreferences={fileIconThemePreferences}\n defaultThemePreference={mode?.defaultTheme}\n preferenceScope={mode?.defaultTheme ? mode.id : undefined}\n themeStorage={props.themeStorage}\n >\n <WorkbenchTabDragProvider workbench={props.workbench}>\n <WorkbenchPanelViewHosts key={projectId} workbench={props.workbench}>\n <WorkbenchContent {...props} />\n </WorkbenchPanelViewHosts>\n </WorkbenchTabDragProvider>\n <Toaster />\n </WorkbenchThemeProvider>\n );\n};\n","import { useEffect, useRef } from \"react\";\nimport type { Disposable, WorkbenchCore, WorkbenchModuleContribution } from \"../../core\";\n\nexport interface WorkbenchModuleHostRegistration {\n disposable: Disposable;\n}\n\nexport interface WorkbenchModuleHostProps {\n workbench: WorkbenchCore;\n modules: readonly WorkbenchModuleContribution[];\n}\n\nexport const disposeWorkbenchModuleHostRegistrations = (\n registrations: Map<string, WorkbenchModuleHostRegistration>,\n) => {\n for (const registration of registrations.values()) registration.disposable.dispose();\n registrations.clear();\n};\n\nexport const syncWorkbenchModuleHostRegistrations = (\n workbench: WorkbenchCore,\n registrations: Map<string, WorkbenchModuleHostRegistration>,\n modules: readonly WorkbenchModuleContribution[],\n) => {\n const moduleIds = new Set(modules.map((module) => module.id));\n\n for (const [id, registration] of registrations) {\n if (!moduleIds.has(id)) {\n registration.disposable.dispose();\n registrations.delete(id);\n }\n }\n\n for (const module of modules) {\n if (!registrations.has(module.id)) {\n registrations.set(module.id, { disposable: workbench.registerModule(module) });\n }\n }\n};\n\nexport const WorkbenchModuleHost = (props: WorkbenchModuleHostProps) => {\n const { workbench, modules } = props;\n const registeredWorkbench = useRef(workbench);\n const registrations = useRef(new Map<string, WorkbenchModuleHostRegistration>());\n\n useEffect(() => {\n if (registeredWorkbench.current !== workbench) {\n disposeWorkbenchModuleHostRegistrations(registrations.current);\n registeredWorkbench.current = workbench;\n }\n\n syncWorkbenchModuleHostRegistrations(workbench, registrations.current, modules);\n }, [modules, workbench]);\n\n useEffect(() => () => disposeWorkbenchModuleHostRegistrations(registrations.current), []);\n\n return null;\n};\n"],"mappings":"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"}