@pstdio/workbench 0.39.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/extensions.d.ts +2 -2
- package/dist/extensions.js +1 -1
- package/dist/{file-renderer-view-Cf3pcX_K.js → file-renderer-view-C95GHv9m.js} +2 -2
- package/dist/{file-renderer-view-Cf3pcX_K.js.map → file-renderer-view-C95GHv9m.js.map} +1 -1
- package/dist/{index-Bzx1gf5-.d.ts → index-DLh_fcGT.d.ts} +124 -122
- package/dist/index.d.ts +2 -2
- package/dist/index.js +769 -662
- package/dist/index.js.map +1 -1
- package/dist/{kanban-presentation-yKUdZyuY.d.ts → kanban-presentation-Ds4FpmbS.d.ts} +1 -1
- package/dist/{react-CgOb52iV.js → react-NAZBfSZz.js} +1318 -1333
- package/dist/react-NAZBfSZz.js.map +1 -0
- package/dist/react.d.ts +2 -2
- package/dist/react.js +1 -1
- package/dist/storage.d.ts +2 -3
- package/dist/storage.js +12 -29
- package/dist/storage.js.map +1 -1
- package/package.json +3 -3
- package/dist/react-CgOb52iV.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-CgOb52iV.js","names":["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","useStore","WorkbenchStore","useWorkbenchStore","store","selector","HStack","Text","Breadcrumb","SessionCompletionStatus","SessionIndicator","ReactNode","WorkbenchBreadcrumbItem","WorkbenchCore","WorkbenchIcon","useWorkbenchStore","WorkbenchBreadcrumbViewProps","workbench","getSessionStatus","item","resource","metadata","status","undefined","WorkbenchBreadcrumbIcon","props","$","_c","t0","indicator","type","t1","icon","WorkbenchBreadcrumbTitle","title","t2","buildWorkbenchBreadcrumbItems","items","map","url","onClick","WorkbenchBreadcrumbView","breadcrumbs","store","_temp","length","state","_c","_temp","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","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","Object","entries","flatMap","param","resolvedFrom","buildCommandParamInitialValues","baseArgs","base","values","hasOwn","defaultValue","map","isEmptyValue","parseJsonValue","parse","Error","normalizeValue","numberValue","Number","isFinite","split","Boolean","normalizeCommandParamValues","normalized","required","mergeCommandParamArgs","schema","humanize","isRecord","PaletteMode","Search","Terminal","WorkbenchCommandPaletteView","WorkbenchIcon","SEARCH_MODE_ID","COMMAND_MODE_ID","THEME_MODE_ID","workbenchPaletteModes","id","inputPrefix","isThemePaletteView","view","isPickerPaletteView","getPaletteViewMode","undefined","getPaletteViewModes","getPaletteInitialActiveIndex","input","themeInitialActiveIndex","getPaletteInputIcon","mode","getPalettePlaceholder","THEME_MODE_ID","PaletteEntry","useEffect","useState","WorkbenchCore","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","Promise","resolve","activate","catch","_temp2","clearTimeout","t2","state","_c","_temp","_temp2","Button","HStack","Text","CommandOptionState","CommandOptionStatusProps","state","onRetry","CommandOptionStatus","props","$","_c","status","t0","options","length","t1","error","t2","t3","t4","_c","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","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","Object","fromEntries","entries","params","map","descriptor","normalized","required","queryKey","JSON","stringify","readOptions","result","Array","isArray","Error","row","valueField","labelField","label","createCommandOptionResolver","execute","onChange","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","callbacks","current","resolver","id","args","signal","Promise","reject","Error","states","subscribe","getSnapshot","update","dispose","validate","retry","Button","CloseButton","Dialog","HStack","Stack","Text","handleDialogAcceptShortcut","ScrollArea","Fragment","useState","Command","RegisteredMenuItem","WorkbenchCommandExecutionContext","ExecuteOptionCommand","CommandOptionStatus","buildCommandParamInitialValues","CommandParamEntry","CommandParamValue","isCommandFilesParamValue","listCommandParamEntries","mergeCommandParamArgs","normalizeCommandParamValues","CommandParamField","CommandParamFieldRenderer","useCommandOptions","CommandParamsRequest","record","command","Pick","action","label","submitLabel","args","context","CommandParamFieldProps","CommandParamsDialogProps","request","renderParamField","executeOptionCommand","prepareArgs","input","commandId","onArgsChange","Promise","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","error","setError","submitting","setSubmitting","entries","close","setValue","key","options","fieldErrors","setFieldErrors","run","invalid","validate","Object","keys","preparedArgs","id","nextArgs","caught","Error","message","isValid","every","required","details","open","event","description","px","py","map","state","states","dynamic","fieldProps","disabled","Boolean","status","onChange","custom","retry","_c","Fragment","RegisteredWidgetContribution","ResourceRef","WorkbenchCompositionAddablePanel","WorkbenchCore","WorkbenchPanelRegion","OpenPanelWidgetInput","workbench","widget","region","resource","pinned","open","getPanelLabel","openPanelWidget","input","openCommand","commands","executeCommand","commandId","args","source","widgetResource","resourceKinds","length","canOpen","undefined","layout","openWidget","id","title","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","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","Promise","resolve","catch","createWorkbenchResourcePaletteEntries","query","listResources","map","filter","PaletteEntry","ThemePreference","ThemePreferenceOption","WorkbenchIcon","THEME_MODE_ID","WorkbenchThemePaletteEntry","themePreference","mode","getThemeIconName","preference","getThemePreferenceLabel","title","id","getThemePreferenceEntryIndex","themePreferences","index","findIndex","Math","max","THEME_GROUP_LABELS","light","dark","const","byModeThenLabel","a","b","localeCompare","createWorkbenchThemePreferencePaletteEntries","input","setThemePreference","onClose","sort","map","label","searchText","group","icon","isSelected","onActivate","Box","Palette","PaletteEntry","PaletteShortcut","ThemePreference","useThemePreference","ReactNode","useEffect","useRef","useState","Command","KeybindingSequence","MenuPath","RegisteredCommand","RegisteredMenuItem","WorkbenchCommandExecutionContext","WorkbenchCore","workbenchCommandPaletteMenuPath","WorkbenchIcon","useWorkbenchCompositionPanels","useWorkbenchStore","workbenchCommandPaletteBackground","hasCommandParameters","useWorkbenchCommandPaletteResourceEntries","CommandParamFieldRenderer","CommandParamsDialog","CommandParamsRequest","COMMAND_MODE_ID","getPaletteInitialActiveIndex","getPaletteInputIcon","getPalettePlaceholder","getPaletteViewMode","getPaletteViewModes","isPickerPaletteView","isThemePaletteView","createWorkbenchPanelWidgetPaletteEntries","createWorkbenchResourcePaletteEntries","createWorkbenchThemePreferencePaletteEntries","getThemePreferenceEntryIndex","WorkbenchThemePaletteEntry","WorkbenchResourcePaletteEntry","WorkbenchCommandPaletteProps","workbench","open","menuPath","initialQuery","renderParamField","onClose","WorkbenchCommandPaletteEntry","commandId","mode","WorkbenchThemePreviewState","baseTheme","WorkbenchCommandPaletteRecord","record","action","rollbackThemePreview","setThemePreference","themePreference","themePreviewRef","current","preview","getCommandSearchText","command","label","id","description","category","filter","Boolean","join","createShortcutByCommandId","Map","keybindings","listCommandKeybindings","map","keybinding","getShortcut","binding","undefined","getCommandErrorMessage","error","Error","message","commandExecutionContext","resource","getPrimaryResource","executePaletteCommand","input","args","context","commands","executeCommand","notifications","show","level","title","createEntry","shortcutByCommandId","onRequestParams","request","isCommandVisible","icon","group","searchText","shortcut","get","onActivate","params","getRecordGroup","item","getRecordOrder","order","byCommandPaletteGroup","left","right","groupComparison","localeCompare","listCommandRecords","listCommands","layout","listMenuItems","matches","when","getCommand","createWorkbenchCommandPaletteEntries","sort","entry","WorkbenchCommandPalette","props","themePreferences","view","commandPalette","store","state","paramsRequest","liveQuery","setLiveQuery","commandPaletteResourceEntries","query","compositionPanels","closePalette","exitPickerView","commitThemePreview","commandEntries","requestParams","resourceEntries","themeEntries","panelWidgetEntries","panelsByRegion","entries","themeInitialActiveIndex","isThemeView","initialActiveIndex","activeViewMode","activeViewModes","position","inset","alignItems","justifyContent","h","minH","padding","w","background","themeEntry","ctx","length","setQuery","setActiveIndex","signal","prepareCommandArgs","onArgsChange","clearParams","commandExecutionContext","_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","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","commandPalette","Symbol","for","bb0","items","inlineItems","overflowItems","t7","command","commandId","args","params","requestParams","record","executeCommand","catch","_temp5","length","t8","item_0","map","item_1","separatorBefore","state","state_0","values","state_1","state_2","_c","_temp","_temp2","_temp3","_temp4","_temp5","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","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","navigation","openTarget","WorkbenchKeybindingDispatcher","props","$","_c","t0","registrations","setRegistrations","t1","t2","refresh","subscriptions","store","context","subscribe","unsubscribe","_c","Box","HStack","Text","PaletteShortcut","TreeListAction","TreeListActionMenuItem","ContextKeyValue","KeybindingSequence","MenuPath","RegisteredCommand","TreeAction","WorkbenchCommandExecutionContext","WorkbenchCoreContributionContext","matchesContextExpression","scopeWorkbenchResourceContextValues","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","resolveTreeActionCommand","isTreeActionVisible","isTreeActionEnabled","disabled","isCommandEnabled","createMenuIcon","icon","iconSrc","display","width","height","objectFit","createMenuEndContent","external","binding","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","readOnly","label","requestParams","params","nextArgs","item","sourceCommandId","description","endContent","onAction","catch","push","createTreeMenuItems","createTreeActionMenuItems","submitLabel","createTreeContextMenuItems","actionItems","visibleRegularItems","createTreeActionItems","tooltip","Icon","ResourceContextAction","TreeListActionMenuItem","ResourceRef","WorkbenchCoreContributionContext","resourceContextMenuPath","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","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","WorkbenchNotificationHostProps","workbench","executeNotificationAction","input","action","commands","executeCommand","commandId","args","catch","undefined","WorkbenchNotificationHost","props","$","_c","t0","Symbol","for","Set","shownNotificationIds","t1","t2","showNotification","notification","actions","toastAction","label","title","onClick","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","Box","Flex","ScrollArea","RegisteredPlaceholderContribution","WorkbenchCore","WorkbenchPanelMenuRegion","WorkbenchRegion","WorkbenchRegionId","WorkbenchWidgetPlacement","getActiveWorkbenchLocationPanel","getActiveWorkbenchSubPanel","getWorkbenchPanelForMenuRegion","isWorkbenchPanelPlacementVisible","matchesWorkbenchModeEligibility","matchesWorkbenchPanelMenuOwner","workbenchPanelMenuRegions","useWorkbenchActiveModeId","useWorkbenchLocationResource","useWorkbenchStore","getWorkbenchRegionBackground","ModeChromeView","useModeChrome","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","chrome","locationResource","modeId","store","_temp","currentRegionState","registeredWidgets","_temp2","activeSubPanel","has","ignoreOwnerResourceKey","activeLocationPanel","regionState","contribution","location","locationPanel","subPanel","_temp3","getPlaceholder","placement_0","renderedPlacements","retainedPlacements","map","_temp4","visibleIds","scrollsHorizontally","target","t10","t11","t12","t13","t14","t15","justifyContent","t16","t17","t18","t19","renderedPlacement","findIndex","entry_0","entry","t20","state","state_0","state_1","_c","_temp","_temp2","_temp3","_temp4","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","WorkbenchRegion","WorkbenchWidgetPlacement","toTabKey","regionId","placement","contributionId","suppressesSidenavTabStrip","region","_placements","resolveTabIconName","widget","icon","resourceKindIcon","resourceIcon","resource","role","resolveDisplayedActiveWidgetId","visiblePlacements","activeWidgetId","widgetId","hasActive","some","CanAttachWorkbenchPanelMenuInput","panelWidth","targetMenuMinSize","attachedMenuMinSizes","PANEL_CONTENT_MIN_SIZE_PX","PANEL_MENU_RESIZE_HANDLE_SIZE_PX","PANEL_MENU_COLLAPSE_THRESHOLD_PX","shouldCollapseWorkbenchPanelMenus","canAttachWorkbenchPanelMenu","input","menuMinSizes","requiredWidth","reduce","total","size","length","WorkbenchCore","WorkbenchRegion","resolvePanelCollapsible","workbench","regions","every","region","layout","getRegionCollapsible","useEffect","useState","getActiveWorkbenchLocationPanel","getActiveWorkbenchSubPanel","isWorkbenchModePanelAvailable","isWorkbenchPanelPlacementVisible","matchesWorkbenchModeEligibility","matchesWorkbenchPanelMenuOwner","WorkbenchCore","WorkbenchPanelMenuRegion","WorkbenchPanelMenuSide","WorkbenchPanelRegion","WorkbenchRegionSize","workbenchPanelMenuRegions","useWorkbenchActiveModeId","useWorkbenchLocationResource","useWorkbenchStore","resolvePanelCollapsible","PANEL_MENU_SIZE","defaultPx","minPx","maxPx","panelLabels","Record","main","secondary","side","resolveRegionSize","regionSize","getWorkbenchPanelMenuLabel","panel","WorkbenchPanelMenuView","region","label","title","icon","has","collapsed","responsiveCollapsed","collapsible","size","ReturnType","onOpen","onCollapsedChange","useWorkbenchPanelMenu","workbench","t0","$","_c","undefined","locationResource","modeId","t1","modes","getMode","panelAvailable","layout","store","_temp","registeredWidgets","_temp2","currentRegionState","regions","regionState","t2","activeSubPanel","ignoreOwnerResourceKey","activeLocationPanel","widgets","filter","placement","contribution","contributionId","location","locationPanel","subPanel","find","placement_0","widgetId","activeWidgetId","activePlacement","widget","t3","panelStateKey","t4","state_1","state","openByMenuId","open","panelMenuState","t5","t6","t7","t8","length","Boolean","getPlaceholder","t9","t10","getRegionSize","t11","setOpen","t12","t13","useWorkbenchPanelMenusPresent","left","right","useWorkbenchPanelWidth","width","setWidth","element","document","querySelector","measure","clientWidth","observer","ResizeObserver","observe","disconnect","state_0","resolveRegionSize","_c","_temp","_temp2","filterVisibleTabs","useTabVisibilityStore","getActiveWorkbenchLocationPanel","getAnchorResource","headerTrailingMenuPath","isWorkbenchPanelPlacementVisible","WorkbenchCore","WorkbenchPanelRegion","WorkbenchRegion","WorkbenchWidgetPlacement","workbenchPanelRegions","workbenchRegionTabLeadingMenuPath","listWorkbenchMenuItemsFromState","shouldCollapseWorkbenchPanelMenus","useWorkbenchPanelMenu","useWorkbenchPanelWidth","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","widget","layout","getWidget","contributionId","ignoreResourceLocation","location","getLayout","useWorkbenchRegionTabsState","visibilityStorageKey","$","_c","commands","store","_temp","contextValues","context","_temp2","itemsByPath","menuStore","_temp3","layoutState","_temp4","compositionPanels","tabStore","_temp5","regionState","regions","subPanelPlacements","t0","widgets","tabOverrides","t1","role","filter","t2","placement_0","visibleSubPanels","Set","map","_temp6","visibleSubPanelIds","eligibleSubPanels","leadingItems","visiblePlacements","placement_2","has","widgetId","t3","undefined","t4","addable","getRegionSettings","showTabs","hasActions","hasTrailingActions","reset","toggleTab","useWorkbenchPanelHeaderVisible","width","responsiveCollapsed","left","right","_temp7","useWorkbenchRegionTabsVisible","state","state_0","values","state_1","state_2","state_3","placement_1","menu","collapsed","_c","_temp","_temp2","_temp3","_temp4","_temp5","_temp6","_temp7","Box","CloseButton","Menu","Portal","Tabs","Text","useSortable","CSS","ListRow","KeyboardEvent","MouseEvent","ReactMouseEvent","ReactNode","useEffect","useState","WorkbenchCore","WorkbenchTabMenuGroup","WorkbenchTabSnapshot","WorkbenchWidgetPlacement","toPanelInstance","WorkbenchIcon","resolveTabIconName","WorkbenchRegionTabProps","workbench","placement","activeWidgetId","disabled","nextWidgetId","previousWidgetId","sortable","useTabSnapshot","$","_c","tab","t0","getSnapshot","snapshot","setSnapshot","t1","t2","refresh","subscription","subscribe","dispose","useRegionTabBehavior","input","tabSnapshot","undefined","isPreview","tabRetention","menu","some","_temp","hasCustomMenu","Boolean","hasContextMenu","t3","t4","widgetId","id","sortableState","openMenu","setOpenMenu","t5","Symbol","for","x","y","width","height","anchor","setAnchor","t6","event","preventDefault","stopPropagation","rect","currentTarget","getBoundingClientRect","openTabMenu","t7","event_0","openCustomMenu","t8","event_1","openContextMenu","t9","menu_0","open","current","setMenuOpen","t10","event_2","altKey","key","layout","reorderPanel","beforeWidgetId","afterWidgetId","reorderWithKeyboard","t11","WorkbenchRegionTabMenuSurface","props","children","label","details","mainAxis","getAnchorRect","offset","WorkbenchRegionTabContextMenu","placementIdentity","pinPlacement","updatePanel","strategy","kind","WorkbenchRegionTabLabel","icon","indicator","color","activateTabAction","action","NonNullable","commands","executeCommand","commandId","args","navigation","openTarget","target","WorkbenchStructuredTabMenu","groups","map","group","groupIndex","rows","row","iconColor","selected","WorkbenchRegionTabCloseButton","isActive","closable","opacity","pointerEvents","bg","identity","closePlacement","closePanel","_temp2","WorkbenchRegionTabMenus","behavior","open_0","WorkbenchRegionTab","resource","title","contributionId","labelId","resources","widget","getWidget","getKind","type","isDragging","listeners","setNodeRef","transform","transition","menuOpen","Transform","toString","t12","t13","t14","t15","t16","t17","length","_c","_temp","_Fragment","_temp2","Tabs","closestCenter","DndContext","DragEndEvent","PointerSensor","useSensor","useSensors","horizontalListSortingStrategy","SortableContext","ReactNode","ResourceRef","WorkbenchCompositionAddablePanel","WorkbenchCore","WorkbenchPanelRegion","WorkbenchWidgetPlacement","WorkbenchPanelAddMenu","WorkbenchRegionTab","SortableRegionTabListProps","activeWidgetId","disabled","leadingActions","panelRegion","placements","resource","eligibleSubPanels","workbench","SortableRegionTabList","props","$","_c","t0","Symbol","for","activationConstraint","distance","sensors","T0","T1","T2","t1","t10","t11","t12","t13","t2","t3","t4","t5","t6","t7","t8","t9","reorderable","filter","_temp","t14","event","active","over","id","activeIndex","findIndex","placement_0","placement","widgetId","overIndex","placement_1","source","target","role","tabRetention","layout","reorderPanel","String","afterWidgetId","beforeWidgetId","reorderWidget","_temp2","map","_temp3","List","placement_3","reorderableIndex","candidate","t15","t16","t17","transform","y","placement_2","_c","_temp","_temp2","_temp3","HStack","IconButton","Menu","Portal","Tabs","buildTabVisibilityMenuActions","ListRow","PANEL_HEADER_CONTROL_SIZE","PANEL_HEADER_TAB_SIZE","ScrollArea","Tooltip","MouseEvent","ReactMouseEvent","useEffect","useState","WorkbenchCore","WorkbenchRegion","WorkbenchRegionId","WorkbenchWidgetPlacement","hasCommandParameters","WorkbenchMenuItem","WorkbenchIcon","WorkbenchPanelAddMenu","resolveDisplayedActiveWidgetId","resolveTabIconName","toTabKey","useWorkbenchRegionTabsState","SortableRegionTabList","shouldShowPanelHeader","shouldShowRegionTabs","useWorkbenchPanelHeaderVisible","useWorkbenchRegionTabsVisible","WorkbenchRegionTabsProps","workbench","region","visibilityStorageKey","resolvePlacementIcon","placement","iconName","layout","getWidget","contributionId","resource","resources","getKind","type","icon","undefined","WorkbenchRegionTabs","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","catch","_temp","onSelectLeadingItem","t15","t16","item_0","id","disabled","_temp2","event_2","stopPropagation","map","leadingActions","t17","details","placement_1","find","candidate","widgetId","value","role","setRegionActiveWidget","activatePanel","t18","t19","t20","t22","t23","t24","t25","t26","t27","t28","t29","t30","h","w","minW","t31","t32","details_0","open","getAnchorRect","offset","mainAxis","_temp3","t33","Root","t21","event_1","action","endContent","isDisabled","onClick","_c","_temp","_temp2","_temp3","Button","AlertMessage","RendererReadNoticeProps","error","retry","RendererReadNotice","props","$","_c","t0","t1","_c","useEffect","useRef","useState","Disposable","RendererReadBinding","WorkbenchCore","RendererReadOptions","workbench","ownerKey","queryKey","load","signal","AbortSignal","publish","value","T","Promise","subscribe","listener","ReadState","loading","error","useRendererRead","options","$","_c","t0","state","setState","retryRef","undefined","callbacks","t1","current","t2","views","reads","binding","bind","hasCompletedRead","request","onProgress","onValue","value_0","onError","previous","Error","message","String","refresh","_temp","subscription","dispose","t3","t4","t5","Symbol","for","t6","retry","previous_0","_c","_temp","WorkbenchCore","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","t4","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","rendererId","placement","identity","instanceId","Stack","EmptyState","DataTable","DataTableColumnRenderer","DataTableColumnStat","DataTableRowAction","DataTableSkeleton","RowData","ReactNode","DataTableRendererQueryResult","RegisteredDataTableRendererContribution","WorkbenchCore","WorkbenchPanelInstance","getWorkbenchRenderers","rendererReadKey","CommandParamFieldRenderer","useWorkbenchResourceActionResolver","useWorkbenchStore","RendererReadNotice","useRendererRead","ViewToolbarActions","buildDataTableRendererData","resolveDataTableRendererColumns","resolveDataTableRendererQueryKey","resolveDataTableRendererResourceActions","resolveDataTableRendererSelectionActions","resolveDataTableRendererStorageKey","WorkbenchDataTableViewProps","workbench","renderParamField","contribution","placement","initialResult","rows","WorkbenchDataTableView","props","$","_c","resolveResourceActions","contextValues","context","store","_temp","t0","t1","resource","modes","getActiveModeId","t2","signal","executeQuery","modeId","t3","refresh","subscription","subscribe","events","onDidRefreshDataTableRenderer","event","dataTableRendererId","id","dispose","t4","ownerKey","queryKey","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","t5","t6","t7","t8","t9","error","retry","Symbol","for","bb0","columns","labels","Object","fromEntries","filter","_temp2","map","_temp3","descriptions","_temp4","_temp5","icons","_temp6","_temp7","_temp8","_temp9","_temp0","_temp1","action","label","icon","destructive","onSelect","data","row","rowByData","get","run","data_0","row_0","onRowActivate","Promise","resolve","catch","_temp10","t23","_temp11","_temp12","skeletonColumns","t24","length","undefined","t25","toolbarActions","emptyDescription","emptyTitle","data_1","_temp13","_temp14","_temp15","_temp16","data_2","data_3","row_1","Boolean","t26","defaultShowStats","initialPageSize","pageSizeOptions","selectionMode","t27","state","values","column","column_0","column_1","description","column_2","column_3","column_4","column_5","stat","column_6","column_7","renderer","column_8","column_9","hidden","defaultHidden","column_10","column_11","column_12","column_13","column_14","_c","_temp","_temp2","_temp3","_temp4","_temp5","_temp6","_temp7","_temp8","_temp9","_temp0","_temp1","_temp10","_temp11","_temp12","_temp13","_temp14","_temp15","_temp16","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","Box","PageLocation","PageRef","resourceKey","PaletteShortcut","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","filterTreeListSelection","selection","selectedIds","pageRefsEqual","left","right","extensionId","targetMatchesPage","activePage","some","page","resolveActivePageNodeIds","resolveTreeListSelection","input","declaredSelection","selected","activeResourceKeys","selectedNode","selectedResourceKey","includes","activeResourceNodeId","activePageNodeId","canVirtualizeTreeNode","inlineInput","isContainer","canVirtualizeTreeSections","every","findNode","child","findNodeInSections","wrapTreeNodeIcon","icon","iconTooltip","resolveTreeNodeIcon","iconElement","resolveTreeNodeNavigationIntent","payload","resolveTreeNodeResource","renderShortcutEndContent","binding","opacity","resolveTreeNodeEndContent","endContent","shortcut","additions","metadata","diffAdditions","deletions","diffDeletions","type","toTreeListSectionEmptyNode","emptyState","label","title","description","disabled","rowVariant","toTreeListNode","context","navigationIntent","commandContext","contextMenuItems","actions","contextMenuActions","menuPath","contextMenuPath","menuItems","shortcuts","Map","keybindings","listCommandKeybindings","k","commandId","keybinding","get","treeNode","moveScope","iconColor","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","onNavigate","event","Parameters","NonNullable","TreeViewBody","props","length","t1","width","index","_c","_temp","RegisteredTreeRendererContribution","ResourceRef","TreeNode","TreeViewSection","WorkbenchCore","getWorkbenchRenderers","findNodeInSections","MoveTreeNodeContext","workbench","renderer","resource","viewId","sections","childrenByNodeId","Record","onError","error","createMoveTreeNode","context","moveNode","sourceNodeId","targetNodeId","source","target","undefined","trees","Promise","resolve","state","getTreeState","id","refresh","setSelectedNode","nodeId","catch","NavigationTarget","shouldSelectTreeNodeForNavigationTarget","target","items","kind","targets","some","item","Input","InputGroup","Header","WorkbenchIcon","TreeViewSearchProps","visible","placeholder","value","onChange","TreeViewSearch","props","$","_c","t0","undefined","t1","Symbol","for","t2","event","target","t3","_c","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","resourceKey","useEffect","useState","useSyncExternalStore","getWorkbenchRenderers","ResourceRef","TreeNode","WorkbenchCore","useWorkbenchStore","useRendererRead","expandDefaultTreeSections","LoadedTreeData","loadExpandedTreeChildren","loadTreeData","useTreeData","workbench","treeViewId","resource","viewId","filter","t0","$","_c","t1","undefined","JSON","stringify","ownerKey","trees","t2","state","refreshKeysByTreeId","treeStore","mode","modes","store","_temp","location","pages","_temp2","project","_temp3","activePage","_temp4","t3","navigationTrees","resolveOwner","getPageOwner","t4","listener","subscription","onDidChange","dispose","pageOwner","queryKey","getTreeRenderer","getReadKey","t5","t6","t7","Symbol","for","t8","byNodeId","expandedChildren","setExpandedChildren","t9","signal","publish","ctx","data","available","children","throwIfAborted","getTreeState","expandedNodeIds","header","body","footer","t10","refresh","onDidRefresh","event","treeId","t11","load","subscribe","read","t12","node","getChildren","then","children_0","current","id","loadChildren","t13","value","t14","t15","t16","t17","t18","t19","error","t20","loading","t21","retry","childrenByNodeId","state_0","activeModeId","state_1","state_2","projectId","state_3","activePageId","_c","_temp","_temp2","_temp3","_temp4","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","applyTreeListOrder","buildTreeVisibilityMenuActions","filterVisibleSections","ResourceContextAction","resolveVisibility","TreeListActionMenuItem","TreeListNode","TreeListSection","useTreeListOrderStore","useTreeListVisibilityStore","VisibilityOverride","ReactNode","keepSectionsEmptiedByMoves","withoutPinnedOnlyRows","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","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","visibilityActions","onToggleSection","onResetAll","t2","Map","_temp11","_temp12","_temp13","defaultSlotBySectionId","orderedSectionsBySlot","header","content","footer","orderedAllSections","section_2","get","push","orderedHeaderSections","orderedSections","Set","orderedFooterSections","includeNodeContextMenus","contentSections","sourceSections","visibleIn","JSON","stringify","_temp15","main","_temp17","_temp19","t3","slot_0","idsBySlot","_temp20","_temp21","_temp22","t4","nextSectionIds_0","destinationSlot","t5","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","_temp14","section_3","_temp16","node_0","section_4","_temp18","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","getAnchorResource","getWorkbenchRenderers","CommandParamFieldRenderer","WorkbenchIcon","useWorkbenchStore","workbenchBackgrounds","RendererReadNotice","TreeActionParamsRequest","filterTreeListSelection","findNodeInSections","resolveTreeListSelection","toTreeListSection","TreeParamsDialog","pinnedOnlyNodeIds","TreeViewBody","createMoveTreeNode","shouldSelectTreeNodeForNavigationTarget","TreeViewSearch","useTreeData","useTreeViewCustomization","WorkbenchTreeViewProps","readOwnerKey","workbench","treeViewId","activeNodeId","resource","viewId","renderParamField","onOpenResourceError","error","onSidenavContextActionsChange","actions","EMPTY_TREE_STATE","expandedNodeIds","expandedSectionIds","WorkbenchLayoutState","ReturnType","resolveActivePlacement","widgets","activeWidgetId","find","entry","widgetId","resolveTreeActiveResource","layout","regions","overlay","useSidenavContextActions","revision","onChange","actionsRef","current","TreeNavigationContext","navigateTreeNode","context","nodeId","intent","id","payload","target","setSelectedNode","navigation","openTarget","catch","ToggleTreeNodeContext","body","header","footer","childrenByNodeId","Record","loadChildren","node","createToggleTreeNode","expanded","includes","setNodeExpanded","children","WorkbenchTreeView","props","$","_c","scrollRef","treeRenderer","getTreeRenderer","filter","setFilter","treeState","treeStore","state","statesByTreeId","projectId","pages","store","_temp","activeLocation","_temp2","activeResource","_temp3","loading","retry","searchable","trim","undefined","paramsRequest","setParamsRequest","rawHeaderSections","rawSections","t0","adapterContext","onCommandError","onRequestParams","map","section","section_0","section_1","rawFooterSections","t1","headerSections","sections","footerSections","t2","Symbol","for","visibleIcon","hiddenIcon","resetIcon","t3","Boolean","t4","t5","suppressNodeContextMenus","visibleHeaderSections","visibleSections","visibleFooterSections","backgroundContextActions","customizationRevision","onReorderSections","onReorderNodes","onMoveSection","t6","toggleNode","t7","sectionId","setSectionExpanded","toggleSection","moveNode","renderer","onError","t8","navigationContext","bodyActiveNodeId","headerActiveNodeId","t9","selectedNodeId","activeNodeSelection","footerActiveNodeId","t10","t11","canMove","t12","title","t13","length","sidenav","nextSectionIds","event","t14","t15","searchPlaceholder","t16","t17","t18","display","style","overflowX","minWidth","width","minHeight","flexDirection","t19","t20","t21","t22","t23","nextSectionIds_0","t24","event_0","t25","t26","nextSectionIds_1","event_1","t27","t28","t29","t30","state_0","state_1","location","state_2","resolveActivePlacement","_c","_temp","_temp2","_temp3","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","canAttachWorkbenchPanelMenu","PANEL_CONTENT_MIN_SIZE_PX","shouldCollapseWorkbenchPanelMenus","useWorkbenchPanelMenu","useWorkbenchPanelWidth","WorkbenchPanelMenuView","WorkbenchPanelMenu","props","$","_c","view","workbench","t0","region","split","panel","background","widget","t1","side","t2","label","t3","addPanelMenu","input","content","has","collapsed","collapsible","size","defaultPx","minPx","maxPx","width","layout","setRegionSize","onCollapsedChange","WorkbenchPanelMenuLayout","children","panelWidth","responsiveCollapsed","left","right","withRight","WorkbenchPanelMenuOpenerProps","canAttach","WorkbenchPanelMenuOpener","triggerRef","Symbol","for","placement","offset","mainAxis","getAnchorElement","current","focus","t4","t5","t6","title","t7","t8","icon","t9","t10","t11","t12","t13","t14","t15","onOpen","t16","t17","t18","t19","t20","WorkbenchPanelMenuOpeners","bb0","views","closedMenus","filter","_temp","length","map","view_0","attachedMenuMinSizes","_temp2","_temp3","targetMenuMinSize","candidate","candidate_0","_c","_temp","_temp2","_temp3","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","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","showHeader","setMode","undefined","t2","t3","t4","widget","t5","WorkbenchFloatingSidePanel","mode","getMode","bottom","bg","t6","_c","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","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","regions","secondary","activeWidgetId","widgets","widgetId","updateShellPlacement","shellPlacements","updatePlacement","currentPlacement","getLayout","find","candidate","identity","placementIdentity","kind","label","isAvailable","test","Terminal","ResourceRef","WorkbenchCoreContributionContext","WorkbenchModuleContribution","toPanelInstance","terminalPlacementBindingId","WorkbenchTerminalPanel","WORKBENCH_TERMINAL_WIDGET_ID","WORKBENCH_TERMINAL_OPEN_COMMAND_ID","WORKBENCH_TERMINAL_PANEL_SIZE","defaultPx","minPx","OpenWorkbenchTerminalOptions","resource","reveal","TerminalResource","terminalInstanceIds","ctx","Set","layout","listPanelInstances","filter","placement","viewId","map","instanceId","watchClosedTerminalPlacements","changingScope","willChangeScope","onWillChangePersistenceScope","didChangeScope","onDidChangePersistenceScope","unsubscribeLayout","store","subscribe","state","previousState","currentIds","regions","secondary","widgets","widgetId","previousIds","scope","getPersistenceScope","has","terminal","killBinding","dispose","terminalTitlePattern","nextTerminalIndexes","WeakMap","getInitialTerminalIndex","terminalPlacements","getLayout","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","find","candidate","placementIdentity","instanceKey","createWorkbenchTerminalModule","activate","disposables","views","registerView","body","render","instance","workbench","registerPlacement","item","binding","kinds","view","cardinality","add","target","command","region","mountStrategy","hiddenByDefault","commands","registerCommand","category","execute","_args","context","defaultThemePreferences","WorkbenchCore","useWorkbenchStore","useWorkbenchThemePreferences","workbench","$","_c","contributed","themes","store","_temp","t0","state","_c","_temp","ChakraProvider","FileIconThemePreferenceOption","FileIconThemePreferenceProvider","psTheme","ThemePreference","ThemePreferenceOption","ThemePreferenceProvider","createContext","ReactNode","useContext","WorkbenchThemeProviderProps","children","initialThemePreference","defaultThemePreference","preferenceScope","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","useWorkbenchResourceActionResolver","WorkbenchIcon","useWorkbenchStore","WorkbenchBreadcrumbResourceActions","props","$","_c","workbench","items","breadcrumbs","store","_temp","resolveActions","resource","at","actions","length","label","id","type","t0","Symbol","for","placement","t1","t2","t3","t4","state","_c","_temp","Box","HStack","IconButton","Header","PANEL_HEADER_CONTROL_SIZE","Tooltip","WorkbenchCore","workbenchTopHeaderLeadingMenuPath","workbenchTopHeaderTrailingMenuPath","WorkbenchBreadcrumbView","useModeChrome","WorkbenchRegion","WorkbenchIcon","useWorkbenchStore","workbenchBackgrounds","WorkbenchHeaderActions","WorkbenchBreadcrumbResourceActions","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","z","agentAvailabilityTypeSchema","enum","agentSkillsLayoutSchema","object","dir","string","global_dir","localizableSchema","union","$l10n","default","optional","harnessParamBaseSchema","label","description","required","boolean","metadata","record","unknown","harnessParamOptionSchema","value","icon","harnessSelectParamSchema","extend","type","literal","defaultValue","options","array","harnessBooleanParamSchema","harnessParamDescriptorSchema","harnessParamsSchema","agentInfoSchema","id","name","availability","skills","params","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","ExtensionArtifactMount","infer","workbenchMenuTargets","const","workbenchTreeTargets","workbenchRegions","workbenchViewTargets","workbenchSettingsTargets","workbenchSettingsScopes","workbenchModePanels","workbenchModeLayoutTargets","WorkbenchMenuTarget","WorkbenchTreeTarget","WorkbenchRegion","WorkbenchViewTarget","WorkbenchSettingsTarget","WorkbenchSettingsScope","WorkbenchModePanel","WorkbenchModeLayoutTarget","WorkbenchLayoutTarget","workbenchModeLayoutTargetPanels","undefined","Record","getWorkbenchModeLayoutTargetPanel","target","normalizeWorkbenchModePanels","input","panels","Array","isArray","filter","panel","includes","invalid","length","Set","size","WorkbenchAttachmentTarget","WorkbenchContributionKind","WorkbenchTargetGranularity","WorkbenchTargetDefinition","id","allowedKinds","granularity","rationale","workbenchTargets","getWorkbenchTargetDefinition","find","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","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","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","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","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","extensionResourceRefSchema","commandTargetSchema","pageRefSchema","panelRefSchema","sectionSchema","object","anchors","array","id","string","heading","occurrence","number","int","nonnegative","optional","MetadataPageTarget","kind","page","infer","resource","open","section","parent","pageTargetSchema","ZodType","lazy","literal","enum","meta","navigationOperationSchema","union","panel","navigationTargetSchema","target","href","refine","targets","min","pageRefSchema","z","NavigationTarget","Struct","commandSourceSchema","extensionSlotKindSchema","jsonObjectSchema","navigationTargetSchema","extensionResourceRefSchema","workbenchAttachmentTargetSchema","extensionSlotInvocationSchema","object","id","string","kind","context","extensionAttachmentInvocationSchema","target","mode","optional","projectId","resource","extensionRendererContextSchema","rendererId","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","selectionValue","union","array","selectionOption","icon","color","disabled","selection","placeholder","searchable","searchPlaceholder","emptyText","image","src","alt","primitive","null","readOnlyContent","extend","type","literal","images","controlValueSchema","controlValuesSchema","record","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","params","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","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","z","extensionParamObjectSchema","jsonObjectSchema","localizableStringSchema","viewToolbarActionSchema","object","id","string","label","icon","optional","presentation","enum","params","input","submitLabel","when","disabled","boolean","viewToolbarActionRecordSchema","extend","commandId","z","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","description","icon","hidden","stat","renderer","rowActionSchema","destructive","commandId","selectionActionSchema","extensionDataTableRendererRecordSchema","extend","toolbarActions","columns","queryHandlerId","selectionMode","enum","selectionActions","rowActions","rowActivationHandlerId","initialPageSize","pageSizeOptions","ExtensionDataTableRendererRecord","infer","WorkbenchExtensionDataTableRendererRecord","z","extensionParamObjectSchema","localizableStringSchema","extensionRendererRecordBaseSchema","viewToolbarActionRecordSchema","kanbanRendererEnumOptionSchema","object","value","string","label","color","optional","icon","nullable","kanbanRendererAttributeTypeSchema","discriminatedUnion","kind","literal","options","array","statuses","extensionId","id","kanbanRendererAttributeDisplaySchema","union","itemsAttributeId","passthrough","refine","display","kanbanRendererAttributeSchema","type","filterable","boolean","groupable","sortable","displayable","editable","kanbanRendererSettingsSchema","viewMode","enum","columnGrouping","rowGrouping","ordering","attributeId","direction","displayProperties","kanbanRendererSavedViewSchema","title","settings","filters","record","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","columnActionHandlerId","createRow","rowActions","rowActivationHandlerId","defaultSettings","partial","defaultFilters","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","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","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","extensionSettingDefinitionRecordSchema","key","type","default","unknown","enum","array","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","resourceKind","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","menuSlots","access","workbenchExtensionSettingsPanelRecordSchema","section","workbenchExtensionStatusBarItemRecordSchema","workbenchExtensionStatusRecordSchema","actions","queryHandlerId","saveHandlerId","workbenchExtensionMetadataSchema","extensions","commands","menuContributions","commandPaletteContributions","modes","pages","views","viewMenus","placements","resourceKinds","resourceHierarchyProviders","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","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","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","kanbanRendererSettingsSchema","boardFieldSchema","object","id","string","label","kind","enum","filterable","boolean","groupable","sortable","displayable","options","array","value","optional","boardSummarySchema","title","extensionId","fields","boardFiltersSchema","record","boardViewSchema","boardId","settings","filters","builtIn","boardViewsSchema","views","defaultViewId","boardViewUpdateSchema","trim","min","partial","strict","boardViewCreateSchema","extend","copyFrom","BoardSummary","infer","BoardField","BoardView","BoardViews","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","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","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","NavigationTarget","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","WebviewNavigationOpenParams","target","WebviewNotificationShowParams","level","title","message","WebviewNotificationActionParams","Omit","WebviewNotificationResolveParams","id","dedupeKey","status","Extract","WebviewNotificationDismissParams","Pick","WebviewPreferencesGetParams","name","scope","scopeId","WebviewPreferencesSetParams","value","Record","WebviewExtensionSettingKeyParams","key","WebviewExtensionSettingSetParams","WebviewFileScope","type","WebviewFilesUploadParams","data","Uint8Array","ArrayBuffer","mimeType","WebviewFilesListParams","WebviewFilesDeleteParams","WebviewArtifactsReadParams","op","mount","prefix","path","WebviewArtifactFile","size","mediaType","WebviewKeyboardEventParams","code","ctrlKey","metaKey","altKey","shiftKey","repeat","WebviewHostCapabilityParams","WebviewHostCapabilityResults","outcome","resolved","notifications","files","WebviewHostCapabilityResult","Capability","Params","operation","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","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","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","sessionMessageSchema","sessionStatusSchema","enum","harnessParamValueSchema","union","string","boolean","harnessParamsInputSchema","record","sessionSchema","object","id","project_id","nullable","title","status","archived","last_request_started","last_request_ended","agent","last_selected_model","agent_session_id","session_file_id","original_session_id","cwd","params_json","anchors_json","array","created_at","updated_at","sessionAttachmentRefSchema","file_id","min","sessionAttachmentSchema","name","mime_type","size_bytes","number","hash","url","createSessionInputSchema","prompt","optional","workspace_id","anchors","attachments","model","params","questionResponseSchema","answers","followUpInputSchema","question_response","summary_from_session_id","summary_format","default","summary_role","approvalInputSchema","decision","followUpDecisionSchema","literal","queue_position","int","followUpResponseSchema","extend","follow_up","sessionQueuedMessagesResponseSchema","messages","SessionQueuedMessagesResponse","infer","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","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","outdated","boolean","skillSchema","id","project_id","name","title","description","source_kind","files","array","editable","extension_instance_id","optional","extension_id","installed_extension_id","install_name","key","source","enabled","created_at","updated_at","deleted_at","skillWithContentSchema","extend","installed_agents","outdated_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","Box","Button","Flex","Stack","Text","ControlValueMap","resourceKey","ScrollArea","InputGroup","Param","ParamEditor","ParamValue","controlValueSchema","useEffect","useState","getWorkbenchRenderers","RegisteredControlsRendererContribution","rendererReadKey","WorkbenchCore","WorkbenchPanelInstance","RendererReadNotice","useRendererRead","WorkbenchControlsViewProps","workbench","contribution","placement","ControlsViewState","params","groups","values","readOnly","loading","error","initialState","WorkbenchControlsView","props","$","_c","resource","state","setState","t0","t1","id","JSON","stringify","t2","signal","executeQuery","t3","refresh","subscription","subscribe","events","onDidRefreshControlsRenderer","event","controlsRendererId","dispose","t4","ownerKey","queryKey","load","read","t5","t6","defaultValues","value","result","Boolean","updateValue","apply","showFooter","reset","t7","input","parse","controlId","prev","handleChange","t8","retry","t9","t10","t11","t12","ControlsContentProps","onChange","ControlsContent","Symbol","for","length","emptyTitle","emptyDescription","_c","createElement","getWorkbenchRenderers","WorkbenchCore","WorkbenchControlsView","installed","WeakSet","installWorkbenchControlsRenderer","workbench","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","isAttributesSource","KanbanRenderer","KanbanRendererRow","useKanbanRendererStore","ReactNode","useSyncExternalStore","RegisteredKanbanRendererContribution","ResourceRef","WorkbenchCore","WorkbenchPanelInstance","getWorkbenchRenderers","rendererReadKey","CommandParamFieldRenderer","useWorkbenchResourceActionResolver","RendererReadNotice","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","resolveResourceActions","storageKey","storageScope","provider","viewsProvider","viewsSource","_temp","_temp2","initialState","settings","defaultSettings","filters","defaultFilters","_temp3","_temp4","JSON","stringify","signal","executeQuery","t3","refresh","subscription","events","onDidRefreshKanbanRenderer","event","kanbanRendererId","dispose","t4","ownerKey","queryKey","load","read","t5","value","rows","t6","row","onRowActivate","Promise","resolve","catch","_temp5","handleOpenRow","t7","row_0","getRowContextMenuActions","t8","error","retry","contentPlaceholder","t9","readNotice","t10","viewMode","t11","Symbol","for","t12","t13","t14","toolbarActions","t15","createRow","defaultActiveViewId","defaultViews","emptyDescription","emptyTitle","getBoardColumnConfig","hideToolbar","onAttributeChange","onColumnAction","onCreateRow","onReorder","t16","state","state_0","_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","WorkbenchPanelView","has","hasHeader","collapsible","collapsed","onCollapsedChange","WorkbenchMainPanels","hasMainHeader","secondaryPanel","useSecondaryPanelView","workbench","$","_c","t0","Symbol","for","locationScoped","hasContent","hasPanelHeader","hasMenus","t1","layout","store","open","_temp","t2","t3","t4","shell","setRegionOpen","t5","useWorkbenchMainPanels","state","regions","secondary","visible","_c","_temp","Box","Header","WorkbenchCore","WorkbenchFocusRegion","WorkbenchPanelMenuLayout","WorkbenchPanelMenuOpeners","WorkbenchRegion","useWorkbenchPanelHeaderVisible","WorkbenchRegionTabs","useWorkbenchModeRegionSettings","workbenchBackgrounds","WorkbenchHeaderBorder","WorkbenchSecondaryPanelProps","workbench","hasSecondaryHeader","WorkbenchSecondaryPanel","props","$","_c","hasPanelHeader","settings","t0","showHeader","t1","t2","t3","t4","t5","t6","t7","panel","t8","t9","t10","_c","Box","Grid","Header","PANEL_HEADER_CONTROL_SIZE","ResizableSplitLayout","headerTrailingMenuPath","WorkbenchCore","WorkbenchRegionSize","WorkbenchFocusRegion","WorkbenchHeaderActions","WorkbenchPanelMenuLayout","WorkbenchPanelMenuOpeners","WorkbenchRegion","useWorkbenchPanelHeaderVisible","useWorkbenchRegionTabsVisible","WorkbenchRegionTabs","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","mainContent","hasHeader","t9","has","collapsed","t10","height","setRegionSize","t11","collapsible","onCollapsedChange","state","activePageId","state_0","regions","secondary","_c","_temp","_temp2","Box","ResourceContextAction","ResourceContextMenu","WorkbenchCore","WorkbenchFocusRegion","ModeChromeView","useModeChrome","WorkbenchRegion","useRetainedViewPlacements","WorkbenchWidgetHost","useWorkbenchActiveModeId","useWorkbenchStore","workbenchBackgrounds","WorkbenchSidenavProps","workbench","contextActions","WorkbenchSidenav","props","$","_c","t0","t1","sidenav","t2","WorkbenchRegionPanelProps","visible","WORKBENCH_STATUS_BAR_HEIGHT","WorkbenchStatusBarItemsProps","slot","WorkbenchStatusBarItems","activeModeId","items","modes","getActiveModeId","statusBar","listVisibleItems","views","item","widgetId","id","contributionId","viewId","title","getView","closable","placements","map","placement","order","findIndex","item_0","WorkbenchActivityBar","WorkbenchStatusBar","store","_temp","chrome","undefined","t3","t4","t5","t6","t7","state","_c","_temp","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","Toaster","ReactNode","useLayoutEffect","useRef","useState","WorkbenchCore","WorkbenchShellOpenRegion","WorkbenchCommandPalette","CommandParamFieldRenderer","WorkbenchNavChrome","WorkbenchNavRegionControl","WorkbenchKeybindingDispatcher","WorkbenchNotificationHost","useWorkbenchPanelMenusPresent","useModeChrome","useWorkbenchPanelHeaderVisible","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","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","sidePanel","state","mode","paletteOpen","commandPalette","paletteInitialQuery","initialQuery","regions","sidenav","visible","secondary","hasSecondaryPanelHeader","hasSidePanelHeader","floatingPanelsAllowed","canFloat","sidenavCollapsible","persistedSidenavSize","size","sidenavSize","showAttachedSidePanel","shell","setRegionOpen","regionControls","sideHeader","activeSidePanelSlot","parentNode","appendChild","contentWithHeader","contentWithSidenav","width","setRegionSize","collapsed","contentFrame","main","close","Workbench","projectId","pages","_temp4","themePreferences","_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","getAnchorResource","workbenchTopHeaderTrailingMenuPath","byContributionPriority","getActiveWorkbenchSubPanel","getWorkbenchModePanelForRegion","isWorkbenchModePanelAvailable","workbenchCommandPaletteMenuPath","workbenchTopHeaderLeadingMenuPath","toPanelContribution","toPanelInstance","matchesWorkbenchModeEligibility","isWorkbenchPanelPlacementVisible","matchesWorkbenchPanelMenuOwner","settleReadBatch","headerTrailingMenuPath","scopeWorkbenchResourceContextValues","getWorkbenchPanelForMenuRegion","matchesContextExpression","getKeybindingSteps","workbenchPanelRegions","rendererReadKey","workbenchPanelMenuRegions","getActiveWorkbenchLocationPanel","getWorkbenchRenderers","getWorkbenchSelectionResourceKeys","standardResourceIcons","workbenchRegionTabLeadingMenuPath","resourceContextMenuPath","lucideIcons","Fragment$1","Terminal$1","toPascalCase","value","part","resolveLucideIcon","pascalName","name","candidates","candidate","IconComponent","WorkbenchIcon","$","c","rest","t0","props","size","t1","optionIcons","option","t2","t3","Icon","useWorkbenchStore","useStore","store","selector","getSessionStatus","item","WorkbenchBreadcrumbIcon","status","SessionIndicator","Text","WorkbenchBreadcrumbTitle","title","HStack","buildWorkbenchBreadcrumbItems","items","WorkbenchBreadcrumbView","workbench","_temp$35","Breadcrumb","state","useWorkbenchCompositionPanels","state_0","state_1","state_2","chakraBackgrounds","vscodeColor","token","fallback","workbenchBackgrounds","workbenchRegionBackgrounds","workbenchCommandPaletteBackground","getWorkbenchRegionBackground","region","humanize$1","spaced","isRecord$1","isFileUploadValue","isCommandFilesParamValue","ref","createCommandFilesParamValue","input","commandFilesParamValue","raw","multiple","stringifyEditableValue","toIdentifierPrefix","char","metadataString","metadata","key","resourceContextValue","resource","context","metadataValue","entry","resourceKey","dedupeOptions","options","seen","hasCommandParameters","listCommandParamEntries","params","param","buildCommandParamInitialValues","base","baseArgs","values","isEmptyValue","parseJsonValue","normalizeValue","numberValue","normalizeCommandParamValues","normalized","mergeCommandParamArgs","schema","SEARCH_MODE_ID","COMMAND_MODE_ID","THEME_MODE_ID$1","workbenchPaletteModes","isThemePaletteView","view","isPickerPaletteView","getPaletteViewMode","getPaletteViewModes","getPaletteInitialActiveIndex","getPaletteInputIcon","Terminal","Search","getPalettePlaceholder","RESOURCE_QUERY_LIMIT","RESOURCE_QUERY_DEBOUNCE_MS","useWorkbenchCommandPaletteResourceEntries","refreshToken","_temp$34","entries","setEntries","useState","onClose","open","query","cancelled","handle","groups","group","result","_temp2$22","useEffect","CommandOptionStatus","onRetry","Button","t4","asText","asList","commandParamName","commandParamOptions","JSON_PARAM_TYPES","buildCommandParam","readCommandParamValue","CommandParamField","onChange","nextValue","next","refs","change","next_0","disabled","ParamEditorRow","valueRef","argumentsFor","source","descriptor","queryKey","readOptions","row","createCommandOptionResolver","snapshot","disposed","controllers","listeners","requests","sources","publish","listener","clearInvalidSelection","offered","current","load","field","controller","version","requestKey","execute","error","errors","useCommandOptions","callbacks","useRef","resolver","id","args","signal","states","useSyncExternalStore","isFilled","CommandParamsDialog","setCurrent","CommandParamsForm","setValues","request","setError","submitting","setSubmitting","close","setValue","executeOptionCommand","fieldErrors","setFieldErrors","run","invalid","preparedArgs","prepareArgs","nextArgs","onRun","caught","isValid","Dialog","details","handleDialogAcceptShortcut","event","Stack","CloseButton","ScrollArea","entry_0","dynamic","fieldProps","value_0","custom","renderParamField","getPanelLabel","openPanelWidget","widget","widgetResource","createWorkbenchPanelWidgetPaletteEntries","panelsByRegion","panel","panelLabel","label","createResourceEntry","kind","icon","activate","createWorkbenchResourcePaletteEntries","THEME_MODE_ID","getThemeIconName","preference","getThemePreferenceLabel","themePreference","getThemePreferenceEntryIndex","index","themePreferences","THEME_GROUP_LABELS","byModeThenLabel","a","b","createWorkbenchThemePreferencePaletteEntries","setThemePreference","rollbackThemePreview","preview","themePreviewRef","getCommandSearchText","command","createShortcutByCommandId","keybinding","getShortcut","binding","PaletteShortcut","getCommandErrorMessage","commandExecutionContext$1","executePaletteCommand","commandId","createEntry","action","record","shortcutByCommandId","onRequestParams","getRecordGroup","getRecordOrder","byCommandPaletteGroup","groupComparison","left","right","listCommandRecords","menuPath","createWorkbenchCommandPaletteEntries","WorkbenchCommandPalette","useThemePreference","paramsRequest","liveQuery","setLiveQuery","initialQuery","commandPaletteResourceEntries","compositionPanels","closePalette","exitPickerView","commitThemePreview","commandEntries","resourceEntries","themeEntries","panelWidgetEntries","themeInitialActiveIndex","isThemeView","initialActiveIndex","activeViewMode","activeViewModes","Fragment","Box","Palette","mode_0","themeEntry","ctx","input_0","WorkbenchFocusRegion","boxProps","children","activeRegion","_temp$33","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$32","_temp2$21","itemsByPath","_temp3$16","_temp4$9","T0","t5","t6","t7","_temp5$7","t8","item_0","inlineItems","overflowItems","Menu","Portal","item_1","ListRow","useTanStackWorkbenchHotkeys","registrations","_temp$31","hotkeys","useHotkeys","registration","keyAliases","normalizeWorkbenchKeybindingStep","trimmed","normalizeWorkbenchKeybinding","steps","createWorkbenchHotkeyRegistrations","allowedCommandIds","commandIds","WorkbenchKeybindingDispatcher","setRegistrations","refresh","subscriptions","unsubscribe","commandContextValues","isRegisteredCommandVisible","executeTreeAction","resolvedArgs","runTreeAction","onCommandError","resolveTreeActionCommand","isTreeActionVisible","isTreeActionEnabled","createMenuIcon","iconSrc","createMenuEndContent","external","withLeadingSeparator","isKernelMenuAction","createTreeMenuItemGroups","shortcuts","k","readOnly","requestParams","createTreeActionMenuItems","actions","createTreeContextMenuItems","actionItems","visibleRegularItems","createTreeActionItems","toResourceContextAction","createWorkbenchResourceActions","useWorkbenchResourceActionResolver","_temp$30","_temp2$20","_temp3$15","executeNotificationAction","WorkbenchNotificationHost","shownNotificationIds","showNotification","notification","toastAction","toastOptions","toaster","notification_0","subscription","useWorkbenchLocationResource","_temp$29","useWorkbenchActiveModeId","_temp2$19","retainViewPlacements","retained","previous","placement","registeredViews","existing","unchanged","useRetainedViewPlacements","views","_temp$28","setPrevious","placements","WorkbenchWidgetFallback","Center","WorkbenchRenderedWidgetFrame","noopRefresh","toHostedPanel","WorkbenchWidgetHost","rendererId","renderer","instance","t10","t11","useModeChrome","mode","ModeChromeView","viewId","horizontalScrollRegions","panelMenuRegionIds","regions","sidePanelRegionIds","verticalContentProps","horizontalContentProps","getActivePlacement","widgets","activeWidgetId","resolveRenderedRegionPlacements","activePlacement","resolveRegionPlacementRenderState","active","additive","createPlaceholderPlacement","placeholder","WorkbenchRegionPlacement","renderState","overlaysActivePlacement","flex","globalActiveWidgetId","activatePlacement","visible","t9","order","WorkbenchRegion","pointerEvents","transparent","chrome","locationResource","modeId","layout","_temp$27","currentRegionState","registeredWidgets","_temp2$18","activeSubPanel","activeLocationPanel","regionState","contribution","_temp3$14","placement_0","renderedPlacements","retainedPlacements","_temp4$8","visibleIds","scrollsHorizontally","target","t12","t13","t14","t15","t16","t17","t18","t19","renderedPlacement","t20","Flex","WorkbenchPanelAddMenu","triggerRef","panels","openPanel","PANEL_HEADER_CONTROL_SIZE","trigger","panel_0","toTabKey","regionId","suppressesSidenavTabStrip","resolveTabIconName","resourceIcon","resourceKindIcon","resolveDisplayedActiveWidgetId","visiblePlacements","shouldCollapseWorkbenchPanelMenus","panelWidth","canAttachWorkbenchPanelMenu","menuMinSizes","requiredWidth","total","resolvePanelCollapsible","PANEL_MENU_SIZE","panelLabels","resolveRegionSize$1","regionSize","getWorkbenchPanelMenuLabel","side","useWorkbenchPanelMenu","responsiveCollapsed","panelAvailable","_temp$26","_temp2$17","collapsible","panelStateKey","collapsed","useWorkbenchPanelMenusPresent","useWorkbenchPanelWidth","width","setWidth","measure","observer","isWorkbenchPanelRegion","panelRegion","shouldShowRegionTabs","shouldShowPanelHeader","isPlacementEligibleForRegion","useWorkbenchRegionTabsState","_temp$25","_temp2$16","_temp3$13","layoutState","_temp4$7","tabStore","useTabVisibilityStore","visibilityStorageKey","_temp5$6","subPanelPlacements","visibleSubPanels","filterVisibleTabs","_temp6$2","visibleSubPanelIds","eligibleSubPanels","leadingItems","placement_2","showTabs","hasActions","hasTrailingActions","useWorkbenchPanelHeaderVisible","hasPanelMenus","_temp7$2","useWorkbenchRegionTabsVisible","state_3","placement_1","menu","useTabSnapshot","tab","setSnapshot","useRegionTabBehavior","sortable","isPreview","tabSnapshot","_temp$24","hasCustomMenu","hasContextMenu","sortableState","useSortable","openMenu","setOpenMenu","anchor","setAnchor","rect","openTabMenu","event_0","openCustomMenu","event_1","openContextMenu","menu_0","setMenuOpen","nextWidgetId","previousWidgetId","event_2","reorderWithKeyboard","WorkbenchRegionTabMenuSurface","WorkbenchRegionTabContextMenu","WorkbenchRegionTabLabel","indicator","activateTabAction","WorkbenchStructuredTabMenu","groupIndex","WorkbenchRegionTabCloseButton","isActive","identity","_temp2$15","WorkbenchRegionTabMenus","behavior","open_0","WorkbenchRegionTab","labelId","menuOpen","isDragging","transform","CSS","setNodeRef","transition","Tabs","SortableRegionTabList","sensors","useSensors","useSensor","PointerSensor","T1","T2","reorderable","_temp$23","over","activeIndex","overIndex","reorderWidget","DndContext","closestCenter","_temp2$14","SortableContext","_temp3$12","horizontalListSortingStrategy","reorderableIndex","placement_3","leadingActions","resolvePlacementIcon","iconName","WorkbenchRegionTabs","tabOverrides","getKey","viewport","setViewport","hiddenByDefault","menuActions","buildTabVisibilityMenuActions","hasVisibilityMenu","openVisibilityMenu","onWheel","_temp$22","onSelectLeadingItem","_temp2$13","t21","PANEL_HEADER_TAB_SIZE","t29","t30","t31","t32","details_0","_temp3$11","t33","RendererReadNotice","retry","AlertMessage","useRendererRead","setState","retryRef","ownerKey","hasCompletedRead","_temp$21","previous_0","TreeParamsDialog","args_0","ViewToolbarActions","setRequest","_temp$20","_temp2$12","error_0","resolveDataTableRendererQueryKey","resolveDataTableRendererColumns","contributionColumns","firstRow","buildDataTableRendererData","rowByData","rows","columns","column","resolveDataTableRendererSelectionActions","data","rendererRow","resolveDataTableRendererResourceActions","resolveResourceActions","resolveDataTableRendererStorageKey","initialResult","WorkbenchDataTableView","_temp$19","events","read","loading","model","openRow","renderers","rowActions","selectionActions","stats","t22","labels","_temp2$11","_temp3$10","descriptions","_temp4$6","_temp5$5","icons","_temp6$1","_temp7$1","_temp8$1","_temp9$1","_temp0$1","_temp1$1","row_0","data_0","_temp10$1","t23","_temp11$1","_temp12$1","skeletonColumns","t24","t25","DataTableSkeleton","DataTable","EmptyState","data_1","_temp13$1","_temp14$1","_temp15$1","_temp16$1","data_2","data_3","t26","t27","column_0","column_1","column_2","column_3","column_4","column_5","column_6","column_7","column_8","column_9","column_10","column_11","column_12","column_13","column_14","BOOLEAN_OPTIONS","humanize","toOptions","toParam","description","defaultValue","preferenceSchemaToParams","paramValueToPreference","toName","WorkbenchPreferencesForm","staged","setStaged","formKey","setFormKey","resolveScopeId","scope","scopeRef","names","preferences","_temp$18","schemaByName","schema_0","name_0","persist","handleChange","name_1","value_1","_temp2$10","save","_temp3$9","discard","hasStaged","ParamEditor","key_0","activeNodeIds","uniqueIds","ids","targetPanelResource","resolveTreeNodeResourceKey","node","listTreeNodes$1","nodes","childrenByNodeId","listSectionNodes","sections","section","resolveActiveResourceNodeIds","resourceKeys","matches","findSectionNode","nodeId","filterTreeListSelection","selection","pageRefsEqual","targetMatchesPage","activePage","activeResource","resolveActivePageNodeIds","resolveTreeListSelection","activeNodeId","declaredSelection","activeResourceKeys","selectedNode","selectedNodeId","selectedResourceKey","activeLocation","activeResourceNodeId","activePageNodeId","canVirtualizeTreeNode","canVirtualizeTreeSections","findNode","child","findNodeInSections","wrapTreeNodeIcon","iconTooltip","resolveTreeNodeIcon","resolveTreeNodeNavigationIntent","resolveTreeNodeResource","renderShortcutEndContent","resolveTreeNodeEndContent","shortcut","additions","deletions","DiffBubble","toTreeListSectionEmptyNode","toTreeListNode","navigationIntent","commandContext","contextMenuItems","menuItems","toTreeListSection","emptyNode","pinnedOnlyNodeIds","withoutPinnedOnlyRows","TREE_SKELETON_WIDTHS","TreeViewSkeleton","_temp$17","TreeViewBody","moduleLoading","backgroundContextActions","customizationAvailable","canMove","draggable","expandedNodeIds","expandedSectionIds","onMoveNode","onNavigate","onReorderNodes","onReorderSections","onToggleNode","onToggleSection","scrollRef","TreeList","Skeleton","createMoveTreeNode","sourceNodeId","targetNodeId","trees","shouldSelectTreeNodeForNavigationTarget","TreeViewSearch","Header","InputGroup","Input","isUnregisteredTreeError","treeId","listTreeNodes","loadExpandedTreeChildren","expanded","visited","queue","batch","expandDefaultTreeSections","tree","sectionId","loadTreeData","available","loadSlot","slot","onProgress","header","body","footer","useTreeData","treeViewId","_temp$16","location","_temp2$9","project","_temp3$8","_temp4$5","getPageOwner","pageOwner","filter","expandedChildren","setExpandedChildren","children_0","loadChildren","keepSectionsEmptiedByMoves","visibleById","hadRows","ordered","shown","resolveVisibility","sectionOverrides","toStringLabel","isCustomizableNode","visibilityContextIcon","effective","buildNodeVisibilityContextMenuItem","nodeOverrides","existingItems","addRegionNodeVisibilityContextMenuItems","changed","addSectionNodeVisibilityContextMenuItems","useTreeViewCustomization","useTreeListVisibilityStore","storageKey","_temp$15","_temp2$8","toggleSection","_temp3$7","toggleNode","_temp4$4","resetVisibility","_temp5$4","sectionOrder","useTreeListOrderStore","_temp6","nodeOrderBySection","_temp7","sectionSlotById","_temp8","setSectionOrder","_temp9","setNodeOrder","_temp0","setSectionSlot","_temp1","resetOrder","_temp10","visibilityActions","_temp11","_temp12","_temp13","defaultSlotBySectionId","orderedSectionsBySlot","orderedAllSections","applyTreeListOrder","section_2","orderedHeaderSections","orderedSections","orderedFooterSections","includeNodeContextMenus","headerSections","contentSections","footerSections","sourceSections","visibleIn","filterVisibleSections","visibleHeaderSections","visibleSections","visibleFooterSections","buildTreeVisibilityMenuActions","customizationRevision","_temp15","_temp17","_temp19","idsBySlot","_temp20","_temp21","_temp22","slot_0","nextSectionIds","destinationSlot","destinationSectionId","sourceSectionId","nextSectionIds_0","state_4","state_5","state_6","state_7","state_8","state_9","state_10","section_0","section_1","_temp14","section_3","_temp16","node_0","section_4","_temp18","node_1","section_5","section_6","section_7","section_8","EMPTY_TREE_STATE","resolveActivePlacement$1","resolveTreeActiveResource","useSidenavContextActions","actionsRef","revision","navigateTreeNode","intent","createToggleTreeNode","WorkbenchTreeView","treeRenderer","setFilter","treeState","projectId","_temp$14","_temp2$7","_temp3$6","setParamsRequest","rawHeaderSections","rawSections","onOpenResourceError","adapterContext","rawFooterSections","onSidenavContextActionsChange","moveNode","navigationContext","bodyActiveNodeId","headerActiveNodeId","activeNodeSelection","footerActiveNodeId","nextSectionIds_1","t28","onMoveSection","TreeListDragProvider","useSettingsRevision","settings","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","closedMenus","_temp$13","attachedMenuMinSizes","_temp2$6","_temp3$5","view_0","candidate_0","useWorkbenchModeRegionSettings","useShallow","floatingPanelBottom","bottomOffset","launcherBottom","WorkbenchSidePanelTitle","WorkbenchSidePanelHeader","WorkbenchAttachedSidePanel","canFloat","Minimize2","contentSlotRef","AttachedPanel","WorkbenchFloatingSidePanel","onOpen","bubbleIcon","MessageCircle","BubbleButton","BubblePanel","toStatusEditorValue","sameActions","statusNeedsUpdate","original","draft","toWorkflowStatus","WorkflowStatusSection","statusSet","cached","statuses","setStatuses","loadError","setLoadError","cached_0","_temp$12","TagSettingsPanel","_temp2$5","WorkflowStatusSettings","_temp3$4","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","terminalInstanceIds","watchClosedTerminalPlacements","changingScope","willChangeScope","didChangeScope","unsubscribeLayout","currentIds","previousIds","previousState","terminalTitlePattern","nextTerminalIndexes","getInitialTerminalIndex","terminalPlacements","titleIndexes","getNextTerminalTitle","nextIndex","hasWorkspacePath","getTerminalResource","primaryResource","openWorkbenchTerminal","workspace","reveal","createWorkbenchTerminalModule","useWorkbenchThemePreferences","contributed","_temp$11","defaultThemePreferences","WorkbenchThemeProviderContext","createContext","WorkbenchThemeProvider","useContext","ChakraProvider","psTheme","fileIconThemePreferences","FileIconThemePreferenceProvider","initialThemePreference","ThemePreferenceProvider","WorkbenchThemeScope","isRecord","stringValue","booleanValue","resolveOverlayConfig","config","overlayConfig","scrollBehavior","closeOnEscape","closeOnInteractOutside","modal","preventScroll","trapFocus","motionPreset","role","contentHeight","contentMaxHeight","contentMinHeight","contentWidth","contentMaxWidth","resolveOverlayDialogConfig","closeable","resolveActivePlacement","resolveOverlayDialogRenderState","exitingPlacement","WorkbenchOverlayFallback","WorkbenchOverlayLayer","overlayRegion","_temp$10","_temp2$4","_temp3$3","setExitingPlacement","dialogRootConfig","canCloseOverlay","closeLabel","_temp4$3","handleOpenChange","handleExitComplete","handleInteractOutside","_temp5$3","WorkbenchBreadcrumbResourceActions","_temp$9","resolveActions","ResourceActionMenu","WorkbenchRegionControl","control","WorkbenchNavigationControls","history","_temp$8","regionControls","_temp2$3","WorkbenchRegionControls","controls","_temp3$2","WorkbenchNavChrome","_temp4$2","sidenavControls","_temp5$2","trailingRegionControls","hasNav","control_0","activityResourceTypeSchema","z","activityActorTypeSchema","activitySourceSchema","activityEventSchema","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","extensionResourceRefSchema","contributionRefSchema$1","pageRefSchema$1","placementRefSchema","modeRefSchema$1","viewRefSchema$1","resourceKindRefSchema$1","pageSlotRefSchema","panelRefSchema","commandTargetSchema","sectionSchema","pageTargetSchema","navigationOperationSchema","navigationTargetSchema","extensionSlotInvocationSchema","extensionAttachmentInvocationSchema","serializedErrorSchema","commandNoticeSchema","commandDiagnosticSchema","responseNavigationTargetSchema","commandOutcomeSchema","numeric","vector","range","selectionValue","selectionOption","image","primitive","readOnlyContent","controlValueSchema","controlValuesSchema","controlParamSchema","controlGroupSchema","controlsQueryResultSchema","extensionRendererRecordBaseSchema","extensionTreeRendererRecordSchema","extensionFileRendererRecordSchema","extensionControlsRendererRecordSchema","viewToolbarActionSchema","viewToolbarActionRecordSchema","themeColorSchema","columnStatSchema","columnRendererSchema","dataTableRendererColumnSchema","rowActionSchema","selectionActionSchema","extensionDataTableRendererRecordSchema","kanbanRendererEnumOptionSchema","kanbanRendererAttributeTypeSchema","kanbanRendererAttributeDisplaySchema","display","kanbanRendererAttributeSchema","kanbanRendererSettingsSchema","kanbanRendererSavedViewSchema","extensionKanbanRendererCreateRowSchema","extensionKanbanRendererRowActionSchema","extensionKanbanRendererRecordSchema","extensionCommandPaletteResourceRecordSchema","parsedKeybindingChordSchema","extensionKeybindingRecordSchema","workbenchPlacementPresentationSchema","placementPresenceSchema","regionSizeSchema","regionSettingsSchema","resourceConstraintSchema","resourceBindingSchema","placementItemSchema","mainSchema","slotSchema","workbenchExtensionPageRecordSchema","extensionSettingsPanelRecordSchema","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","projectExtensionInstanceSchema","marketplaceExtensionSchema","automationRunStatusSchema","automationTokenRecordSchema","automationRunErrorSchema","automationRunEventSchema","boardFieldSchema","boardFiltersSchema","boardViewSchema","numericIdentifier","hostRef","workbenchModes","hostResourceKind","headerMenuSlots","workbenchResourceKindDefinitions","workbenchResourceKinds","workbenchPages$1","createCommandRef","owner","eventRef","defineSlot","hostEventRef","resourceMenuSlotRef","resourceKind","WEBVIEW_DECLARABLE_CAPABILITIES$1","WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES$1","ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES$1","capability","initialWorkspaceSchema","extensionSetupWarningSchema","extension","textPartSchema","reasoningPartSchema","toolPartActionTypeSchema","toolPartStatusSchema","toolPartSchema","stepStartPartSchema","stepFinishPartSchema","patchPartSchema","filePartSchema","loadingPartSchema","errorPartSchema","tokenUsagePartSchema","sessionMessagePartSchema","sessionMessageRoleSchema","sessionMessageSchema","sessionStatusSchema","harnessParamValueSchema","harnessParamsInputSchema","sessionSchema","sessionAttachmentRefSchema","questionResponseSchema","followUpDecisionSchema","skillFileSchema","skillSourceKindSchema","skillAgentInstallationSchema","workspaceProviderRefShape","workspaceProviderRefSchema","workspaceProviderStateSchema","workspaceExecutionKindSchema","workspaceCapabilitiesSchema","workspaceProviderErrorSchema","workspaceAnchorSchema","workspaceFileEntrySchema","initialState","WorkbenchControlsView","showFooter","prev","ControlsContent","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","resourceActions","resourceCommandIds","contributionActions","WorkbenchKanbanView","provider","viewsSource","_temp$7","_temp2$2","useKanbanRendererStore","_temp3$1","filters","_temp4$1","_temp5$1","handleOpenRow","getRowContextMenuActions","contentPlaceholder","readNotice","KanbanRenderer","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$1","secondaryPanelSize","mainRegion","mainPanelWithMenus","Grid","mainContent","height","WorkbenchSidenav","contextActions","ResourceContextMenu","WORKBENCH_STATUS_BAR_HEIGHT","WorkbenchStatusBarItems","WorkbenchActivityBar","WorkbenchStatusBar","_temp$3","ATTACHED_PANEL_DEFAULT_SIZE_PX","ATTACHED_PANEL_MIN_SIZE_PX","WorkbenchSidePanelRegionPortal","sidePanelHost","createPortal","WorkbenchSidePanelRegionHeader","hasSideHeader","WorkbenchAttachedSidePanelLayout","_temp$2","onAttachedSlotChange","attached","onCollapse","contentMinSizePx","contentPanel","interactivePointerTargetSelector","hasClosest","shouldFocusWorkbenchKeyboardFrame","currentTarget","focusWorkbenchKeyboardFrame","WorkbenchKeyboardFrame","useLayoutEffect","_temp$1","WorkbenchSidePanelBoundary","contentFrame","showAttachedSidePanel","sideHeader","SIDENAV_DEFAULT_SIZE_PX","SIDENAV_MIN_SIZE_PX","CONTENT_MIN_SIZE_PX","resolveSidenavSize","createSidePanelHost","host","useWorkbenchLayoutFlags","statusChrome","statusBarItems","_temp","_temp2","activeModeId","_temp3","createWorkbenchRegionControls","WorkbenchContent","sidenavContextActions","setSidenavContextActions","attachedSidePanelSlot","setAttachedSidePanelSlot","floatingSidePanelSlot","setFloatingSidePanelSlot","sidePanelHostRef","sidePanelMode","paletteOpen","paletteInitialQuery","sidenavOpen","secondaryPanelOpen","hasSecondaryPanelHeader","hasSidePanelHeader","floatingPanelsAllowed","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/react/shared/icon.tsx","../src/react/shared/use-workbench-store.ts","../src/react/breadcrumb/breadcrumb-view.tsx","../src/react/shared/use-workbench-composition-panels.ts","../src/react/theme/workbench-theme-background.ts","../src/react/command-palette/command-palette-params.ts","../src/react/command-palette/palette-view.tsx","../src/react/command-palette/command-palette-resources.tsx","../src/react/command-palette/command-option-status.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/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/region.tsx","../src/react/region/panel-add-menu.tsx","../src/react/region/region-tabs-visibility.ts","../src/react/panel-menu/panel-menu-sizing.ts","../src/react/workbench/workbench-panel-state.ts","../src/react/panel-menu/use-panel-menu.ts","../src/react/region/region-tabs-visibility-hooks.ts","../src/react/region/region-tab.tsx","../src/react/region/sortable-region-tab-list.tsx","../src/react/region/region-tabs.tsx","../src/react/renderers/renderer-read-notice.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-move.ts","../src/react/renderers/tree/tree-view-navigation.ts","../src/react/renderers/tree/tree-view-search.tsx","../src/react/renderers/tree/tree-view-load.ts","../src/react/renderers/tree/use-tree-data.ts","../src/react/renderers/tree/tree-emptied-sections.ts","../src/react/renderers/tree/use-tree-view-customization.ts","../src/react/renderers/tree/tree-view.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/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/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/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/extensions/install.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/projects.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/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-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 { 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 { 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 { HStack, Text } from \"@chakra-ui/react\";\nimport { Breadcrumb, type SessionCompletionStatus, SessionIndicator } from \"@pstdio/ui\";\nimport type { ReactNode } from \"react\";\nimport type { WorkbenchBreadcrumbItem, WorkbenchCore } from \"../../core\";\nimport { WorkbenchIcon } from \"../shared/icon\";\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 = (items: WorkbenchBreadcrumbItem[] | undefined) =>\n (items ?? []).map((item) => ({\n title: <WorkbenchBreadcrumbTitle item={item} />,\n url: item.url,\n onClick: item.onClick,\n }));\nexport const WorkbenchBreadcrumbView = (props: WorkbenchBreadcrumbViewProps) => {\n const { workbench } = props;\n const items = useWorkbenchStore(workbench.breadcrumbs.store, (state) => state.items) ?? [];\n if (items.length === 0) return null;\n return (\n <Breadcrumb items={buildWorkbenchBreadcrumbItems(items)} separator=\"/\" separatorGap=\"xs\" display=\"flex\" h=\"full\" />\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 { 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;\nexport const listCommandParamEntries = (params: CommandParamSchema | undefined): CommandParamEntry[] =>\n Object.entries(params ?? {}).flatMap(([key, param]) =>\n param.resolvedFrom === \"resource\"\n ? []\n : [\n {\n ...param,\n options: dedupeOptions(param.options),\n key,\n label: param.label ?? humanize(key),\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 { 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 isPickerPaletteView = isThemePaletteView;\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 (isPickerPaletteView(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 resources\";\n};\n","import type { PaletteEntry } from \"@pstdio/ui\";\nimport { useEffect, useState } from \"react\";\nimport type { WorkbenchCore } from \"../../core\";\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 Promise.resolve(result.activate()).catch(() => undefined);\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 { 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 { 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}\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 = (source: CommandParamOptionSource, values: Values, schema?: CommandParamSchema) =>\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 const normalized = descriptor\n ? normalizeCommandParamValues({ [value.key]: { ...descriptor, required: false } }, values)[value.key]\n : values[value.key];\n return [key, normalized];\n }),\n );\nconst queryKey = (source: CommandParamOptionSource, values: Values) =>\n JSON.stringify([source, argumentsFor(source, values)]);\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) {\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), 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) => {\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 ),\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 { Button, CloseButton, Dialog, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { 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} 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\"> };\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 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 } = props;\n const [values, setValues] = useState<Record<string, CommandParamValue>>(() =>\n buildCommandParamInitialValues(request.record.command.params, request.args, request.context),\n );\n const [error, setError] = useState<string | undefined>();\n const [submitting, setSubmitting] = useState(false);\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(request.record.command.params ?? {}, values, executeOptionCommand, setValue);\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 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, 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 await onRun({\n commandId: request.record.command.id,\n args: preparedArgs,\n context: request.context,\n label: request.label,\n });\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 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 };\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 {error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.error\" px=\"sm\" pt=\"xs\">\n {error}\n </Text>\n ) : null}\n </Stack>\n </ScrollArea>\n </Dialog.Body>\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 type {\n RegisteredWidgetContribution,\n ResourceRef,\n WorkbenchCompositionAddablePanel,\n WorkbenchCore,\n WorkbenchPanelRegion,\n} from \"../../core\";\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 = (input: OpenPanelWidgetInput) => {\n const { open, pinned, region, resource, widget, workbench } = input;\n\n if (open) {\n open(resource);\n } else if (widget.openCommand) {\n void workbench.commands.executeCommand(widget.openCommand.commandId, widget.openCommand.args, {\n source: \"panel-add\",\n ...(resource ? { resource } : {}),\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 { 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 Promise.resolve(activate(resource)).catch(() => undefined);\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 getThemePreferenceEntryIndex = (\n themePreference: ThemePreference,\n themePreferences: readonly ThemePreferenceOption[],\n) => {\n const index = themePreferences.findIndex((preference) => preference.id === themePreference);\n\n return Math.max(index, 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 themePreference: ThemePreference;\n themePreferences: readonly ThemePreferenceOption[];\n setThemePreference: (themePreference: ThemePreference) => void;\n onClose: () => void;\n}) => {\n const { onClose, setThemePreference, themePreference, 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 === themePreference,\n onActivate: () => {\n setThemePreference(preference.id);\n onClose();\n },\n };\n });\n};\n","import { Box } from \"@chakra-ui/react\";\nimport { Palette, type PaletteEntry, PaletteShortcut, type ThemePreference, useThemePreference } from \"@pstdio/ui\";\nimport { type ReactNode, useEffect, useRef, useState } from \"react\";\nimport {\n type Command,\n type KeybindingSequence,\n type MenuPath,\n type RegisteredCommand,\n type RegisteredMenuItem,\n type WorkbenchCommandExecutionContext,\n type WorkbenchCore,\n workbenchCommandPaletteMenuPath,\n} from \"../../core\";\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 {\n type CommandParamFieldRenderer,\n CommandParamsDialog,\n type CommandParamsRequest,\n} from \"./command-params-dialog\";\nimport {\n COMMAND_MODE_ID,\n getPaletteInitialActiveIndex,\n getPaletteInputIcon,\n getPalettePlaceholder,\n getPaletteViewMode,\n getPaletteViewModes,\n isPickerPaletteView,\n isThemePaletteView,\n} from \"./palette-view\";\nimport { createWorkbenchPanelWidgetPaletteEntries } from \"./panel-widget-palette\";\nimport { createWorkbenchResourcePaletteEntries } from \"./resource-palette\";\nimport {\n createWorkbenchThemePreferencePaletteEntries,\n getThemePreferenceEntryIndex,\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 WorkbenchThemePreviewState {\n baseTheme: ThemePreference;\n}\n\ninterface WorkbenchCommandPaletteRecord {\n record: RegisteredCommand;\n action?: RegisteredMenuItem;\n}\n\nconst rollbackThemePreview = (\n setThemePreference: (themePreference: ThemePreference) => void,\n themePreviewRef: { current: WorkbenchThemePreviewState | null },\n) => {\n const preview = themePreviewRef.current;\n themePreviewRef.current = null;\n if (preview) setThemePreference(preview.baseTheme);\n};\n\nconst getCommandSearchText = (command: Command, label: string) =>\n [label, command.id, command.description, command.category].filter(Boolean).join(\" \");\n\nconst createShortcutByCommandId = (workbench: WorkbenchCore) =>\n new Map(\n workbench.keybindings.listCommandKeybindings().map((keybinding) => [keybinding.commandId, keybinding.keybinding]),\n );\n\nconst getShortcut = (binding: KeybindingSequence | undefined): ReactNode =>\n binding ? <PaletteShortcut binding={binding} /> : undefined;\n\nconst getCommandErrorMessage = (error: unknown) => (error instanceof Error ? error.message : \"Command failed.\");\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 try {\n await workbench.commands.executeCommand(commandId, args, context);\n } catch (error) {\n workbench.notifications.show({ level: \"error\", title: `${label} failed`, message: getCommandErrorMessage(error) });\n }\n};\n\nconst createEntry = (input: {\n workbench: WorkbenchCore;\n record: RegisteredCommand;\n action?: RegisteredMenuItem;\n shortcutByCommandId: Map<string, KeybindingSequence>;\n onClose: () => void;\n onRequestParams?: (request: CommandParamsRequest) => void;\n}): WorkbenchCommandPaletteEntry | null => {\n const { action, onClose, onRequestParams, record, workbench, shortcutByCommandId } = 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(shortcutByCommandId.get(record.command.id)),\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 shortcutByCommandId = createShortcutByCommandId(workbench);\n\n return listCommandRecords(workbench, menuPath)\n .sort(byCommandPaletteGroup)\n .map(({ record, action }) =>\n createEntry({ workbench, record, action, shortcutByCommandId, onClose, onRequestParams }),\n )\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 { themePreference, themePreferences, setThemePreference } = useThemePreference();\n const view = useWorkbenchStore(workbench.commandPalette.store, (state) => state.view);\n const themePreviewRef = useRef<WorkbenchThemePreviewState | null>(null);\n const paramsRequest = useWorkbenchStore(workbench.commandPalette.store, (state) => state.paramsRequest);\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 const closePalette = () => {\n rollbackThemePreview(setThemePreference, themePreviewRef);\n onClose();\n };\n\n const exitPickerView = () => {\n rollbackThemePreview(setThemePreference, themePreviewRef);\n workbench.commandPalette.open({ view: \"main\" });\n };\n\n const commitThemePreview = () => {\n themePreviewRef.current = null;\n onClose();\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 themePreference,\n themePreferences,\n setThemePreference,\n onClose: commitThemePreview,\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 = getThemePreferenceEntryIndex(themePreference, themePreferences);\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) {\n if (!themePreviewRef.current) themePreviewRef.current = { baseTheme: themePreference };\n return;\n }\n\n rollbackThemePreview(setThemePreference, themePreviewRef);\n }, [isThemeView, open, setThemePreference, themePreference]);\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 || themeEntry.themePreference === themePreference) return;\n setThemePreference(themeEntry.themePreference);\n }}\n onQueryChange={setLiveQuery}\n onClose={closePalette}\n onEscape={(ctx) => {\n if (isPickerPaletteView(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 <CommandParamsDialog\n request={paramsRequest}\n renderParamField={renderParamField}\n executeOptionCommand={(id, args, signal) =>\n workbench.commands.executeCommand(id, args, { ...paramsRequest?.context, signal })\n }\n prepareArgs={(input) =>\n workbench.commands.prepareCommandArgs(input.commandId, input.args, input.context, input.onArgsChange)\n }\n onClose={() => workbench.commandPalette.clearParams()}\n onRun={(input) => executePaletteCommand({ workbench, ...input })}\n />\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 { 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 const resource = useWorkbenchStore(workbench.layout.store, (state) => getAnchorResource(state.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 workbench.commands.executeCommand(item.commandId, args, context).catch(() => undefined);\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 { 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: () => workbench.navigation.openTarget(action),\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: () => 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, Text } from \"@chakra-ui/react\";\nimport { PaletteShortcut, 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 { 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 onCommandError?.(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 <img\n src={iconSrc}\n alt=\"\"\n aria-hidden=\"true\"\n width={14}\n height={14}\n style={{ display: \"block\", width: \"100%\", height: \"100%\", objectFit: \"contain\" }}\n />\n </Box>\n );\n }\n\n return icon ? <WorkbenchIcon name={icon} /> : undefined;\n};\n\nconst createMenuEndContent = (input: { external?: boolean; binding?: KeybindingSequence }) => {\n const { binding, external } = input;\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 try {\n await workbench.commands.executeCommand(record.command.id, nextArgs, context);\n } catch (error) {\n onCommandError?.(error);\n throw error;\n }\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({ external: action.external, binding }),\n disabled: readOnly || !workbench.commands.isCommandEnabled(record.command.id, args),\n readOnly,\n onAction: readOnly\n ? undefined\n : () => {\n if (requestParams) {\n requestParams();\n return;\n }\n void workbench.commands\n .executeCommand(record.command.id, args, context)\n .catch((error) => onCommandError?.(error));\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: { command: { id: action.commandId ?? action.id, label, params: action.params } },\n label,\n submitLabel: action.submitLabel,\n args: action.args,\n context,\n },\n run: (args) => runTreeAction({ action, args, context, workbench, onCommandError }),\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: { command: { id: action.commandId ?? action.id, label, params: action.params } },\n label,\n submitLabel: action.submitLabel,\n args: action.args,\n context,\n },\n run: (args) => runTreeAction({ action, args, context, workbench, onCommandError }),\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 } 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 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\";\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 workbench.commands.executeCommand(action.commandId, action.args).catch(() => undefined);\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","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 workbenchPanelMenuRegions,\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 { 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 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(workbench, chrome !== undefined ? [] : renderedPlacements);\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 {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 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","interface CanAttachWorkbenchPanelMenuInput {\n panelWidth: number;\n targetMenuMinSize: number;\n attachedMenuMinSizes: readonly number[];\n}\n\nexport const PANEL_CONTENT_MIN_SIZE_PX = 120;\nexport const PANEL_MENU_RESIZE_HANDLE_SIZE_PX = 1;\nexport const PANEL_MENU_COLLAPSE_THRESHOLD_PX = 480;\n\nexport const shouldCollapseWorkbenchPanelMenus = (panelWidth: number) =>\n panelWidth > 0 && panelWidth <= PANEL_MENU_COLLAPSE_THRESHOLD_PX;\n\nexport const canAttachWorkbenchPanelMenu = (input: CanAttachWorkbenchPanelMenuInput) => {\n const menuMinSizes = [...input.attachedMenuMinSizes, input.targetMenuMinSize];\n const requiredWidth =\n PANEL_CONTENT_MIN_SIZE_PX +\n menuMinSizes.reduce((total, size) => total + size, 0) +\n menuMinSizes.length * PANEL_MENU_RESIZE_HANDLE_SIZE_PX;\n\n return input.panelWidth >= requiredWidth;\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","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\";\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 responsiveCollapsed: boolean;\n collapsible: boolean;\n size: ReturnType<typeof resolveRegionSize>;\n onOpen: () => void;\n onCollapsedChange: (collapsed: boolean) => void;\n}\n\nexport const useWorkbenchPanelMenu = (\n workbench: WorkbenchCore,\n panel: WorkbenchPanelRegion,\n side: WorkbenchPanelMenuSide,\n responsiveCollapsed = false,\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 || responsiveCollapsed) && collapsible,\n responsiveCollapsed,\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 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\nexport const 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 { filterVisibleTabs, useTabVisibilityStore } from \"@pstdio/ui\";\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 { listWorkbenchMenuItemsFromState } from \"../menus/menu-items\";\nimport { shouldCollapseWorkbenchPanelMenus } from \"../panel-menu/panel-menu-sizing\";\nimport { useWorkbenchPanelMenu, useWorkbenchPanelWidth } 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 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) => {\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 tabStore = useTabVisibilityStore(visibilityStorageKey ?? region, (state) => state);\n const regionState = layoutState.layout.regions[region];\n const subPanelPlacements = regionState.widgets.filter(\n (placement) =>\n placement.role === \"sub-panel\" && 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) => visibleSubPanelIds.has(placement.widgetId) || (region === \"main\" && placement.role === \"location\"),\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 showTabs =\n !suppressesSidenavTabStrip(region, visiblePlacements) &&\n shouldShowRegionTabs(visiblePlacements, {\n alwaysShowTabs: workbench.layout.getRegionSettings(region)?.alwaysShowTabs,\n });\n const hasActions = leadingItems.length > 0 || eligibleSubPanels.length > 0;\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 useWorkbenchPanelHeaderVisible = (workbench: WorkbenchCore, region: WorkbenchPanelRegion) => {\n const { showTabs, hasActions, hasTrailingActions } = useWorkbenchRegionTabsState(workbench, region);\n const width = useWorkbenchPanelWidth(region);\n const responsiveCollapsed = shouldCollapseWorkbenchPanelMenus(width);\n const left = useWorkbenchPanelMenu(workbench, region, \"left\", responsiveCollapsed);\n const right = useWorkbenchPanelMenu(workbench, region, \"right\", responsiveCollapsed);\n const hasPanelMenus = [left, right].some((menu) => menu.has && menu.collapsed);\n\n return shouldShowPanelHeader({\n hasTabs: showTabs,\n hasHeaderActions: hasActions || hasTrailingActions,\n hasPanelMenus,\n });\n};\n\nexport const useWorkbenchRegionTabsVisible = (workbench: WorkbenchCore, region: WorkbenchRegion) => {\n const { showTabs, hasActions } = useWorkbenchRegionTabsState(workbench, region);\n return showTabs || hasActions;\n};\n","import { Box, CloseButton, Menu, Portal, Tabs, Text } from \"@chakra-ui/react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { ListRow } from \"@pstdio/ui\";\nimport { type KeyboardEvent, type MouseEvent as ReactMouseEvent, type ReactNode, useEffect, useState } from \"react\";\nimport type { WorkbenchCore, WorkbenchTabMenuGroup, WorkbenchTabSnapshot, WorkbenchWidgetPlacement } from \"../../core\";\nimport { toPanelInstance } from \"../../core/registries/layout/panel-api\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { resolveTabIconName } from \"./region-tabs-visibility\";\n\ninterface WorkbenchRegionTabProps {\n workbench: WorkbenchCore;\n placement: WorkbenchWidgetPlacement;\n activeWidgetId: string | undefined;\n disabled?: boolean;\n nextWidgetId?: string;\n previousWidgetId?: string;\n sortable?: boolean;\n}\nconst useTabSnapshot = (placement: WorkbenchWidgetPlacement): WorkbenchTabSnapshot => {\n const tab = placement.tab;\n const [snapshot, setSnapshot] = useState(() => tab?.getSnapshot(toPanelInstance(placement)) ?? {});\n useEffect(() => {\n const refresh = () => setSnapshot(tab?.getSnapshot(toPanelInstance(placement)) ?? {});\n const subscription = tab?.subscribe?.(refresh);\n refresh();\n if (!subscription) return undefined;\n return typeof subscription === \"function\" ? subscription : () => subscription.dispose();\n }, [placement, tab]);\n return snapshot;\n};\nconst useRegionTabBehavior = (input: WorkbenchRegionTabProps, tabSnapshot: WorkbenchTabSnapshot) => {\n const { disabled = false, nextWidgetId, placement, previousWidgetId, sortable = false, workbench } = input;\n const isPreview = placement.tabRetention === \"preview\";\n const hasCustomMenu = Boolean(tabSnapshot.menu?.some((group) => group.rows.length > 0));\n const hasContextMenu = isPreview;\n const sortableState = useSortable({ id: placement.widgetId, disabled: disabled || !sortable });\n const [openMenu, setOpenMenu] = useState<\"custom\" | \"context\">();\n const [anchor, setAnchor] = useState({ x: 0, y: 0, width: 0, height: 0 });\n const openTabMenu = (menu: \"custom\" | \"context\", event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n const rect = event.currentTarget.getBoundingClientRect();\n setAnchor({ x: rect.x, y: rect.y, width: rect.width, height: rect.height });\n setOpenMenu(menu);\n };\n const openCustomMenu = (event: ReactMouseEvent<HTMLElement>) => {\n if (hasCustomMenu && !disabled) openTabMenu(\"custom\", event);\n };\n const openContextMenu = (event: ReactMouseEvent<HTMLElement>) => {\n if (hasContextMenu && !disabled) openTabMenu(\"context\", event);\n };\n const setMenuOpen = (menu: \"custom\" | \"context\", open: boolean) => {\n setOpenMenu((current) => (open ? menu : current === menu ? undefined : current));\n };\n const reorderWithKeyboard = (event: KeyboardEvent<HTMLElement>) => {\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 return {\n anchor,\n hasCustomMenu,\n hasContextMenu,\n isPreview,\n openContextMenu,\n openCustomMenu,\n openMenu,\n reorderWithKeyboard,\n setMenuOpen,\n sortableState,\n tabSnapshot,\n };\n};\nconst WorkbenchRegionTabMenuSurface = (props: {\n anchor: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n children: ReactNode;\n label: string;\n open: boolean;\n setMenuOpen(open: boolean): void;\n}) => {\n const { anchor, children, label, open, setMenuOpen } = props;\n return (\n <Menu.Root\n open={open}\n onOpenChange={(details) => setMenuOpen(details.open)}\n positioning={{ placement: \"bottom-start\", getAnchorRect: () => anchor, offset: { mainAxis: 0 } }}\n >\n <Portal>\n <Menu.Positioner>\n <Menu.Content aria-label={label} minW=\"18.75rem\" bg=\"bg\">\n {children}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\nconst WorkbenchRegionTabContextMenu = (props: {\n anchor: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n label: string;\n open: boolean;\n placement: WorkbenchWidgetPlacement;\n setMenuOpen(open: boolean): void;\n workbench: WorkbenchCore;\n}) => {\n const { anchor, label, open, placement, setMenuOpen, workbench } = props;\n return (\n <WorkbenchRegionTabMenuSurface\n anchor={anchor}\n label={`${label} context menu`}\n open={open}\n setMenuOpen={setMenuOpen}\n >\n <Menu.Item value=\"keep-open\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id=\"keep-open\"\n label=\"Keep Open\"\n icon={<WorkbenchIcon name=\"pin\" size={14} />}\n onActivate={() => {\n if (placement.placementIdentity) workbench.pinPlacement(placement.placementIdentity);\n else workbench.layout.updatePanel(placement.widgetId, { strategy: { kind: \"persistent\" } });\n }}\n />\n </Menu.Item>\n </WorkbenchRegionTabMenuSurface>\n );\n};\nconst WorkbenchRegionTabLabel = (props: {\n icon?: string;\n indicator?: WorkbenchTabSnapshot[\"indicator\"];\n id: string;\n label: string;\n}) => {\n const { icon, id, indicator, label } = props;\n return (\n <>\n {indicator ? (\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 ) : icon ? (\n <WorkbenchIcon name={icon} size={12} flexShrink={0} color=\"fg.muted\" />\n ) : null}\n <Text as=\"span\" id={id} data-tab-label>\n {label}\n </Text>\n </>\n );\n};\nconst activateTabAction = (\n workbench: WorkbenchCore,\n action: NonNullable<WorkbenchTabMenuGroup[\"rows\"][number][\"action\"]>,\n) => {\n if (action.kind === \"command\") {\n void workbench.commands.executeCommand(action.commandId, action.args);\n return;\n }\n void workbench.navigation.openTarget(action.target);\n};\nconst WorkbenchStructuredTabMenu = (props: { groups: readonly WorkbenchTabMenuGroup[]; workbench: WorkbenchCore }) => {\n const { groups, workbench } = props;\n return groups.map((group, groupIndex) => (\n <Box key={group.id} display=\"contents\">\n {groupIndex > 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 id={row.id}\n label={row.label}\n icon={row.icon ? <WorkbenchIcon name={row.icon} size={16} /> : undefined}\n iconColor={row.iconColor}\n isSelected={row.selected}\n disabled={row.disabled}\n onActivate={row.action ? () => activateTabAction(workbench, row.action!) : undefined}\n />\n </Menu.Item>\n ))}\n </Box>\n ));\n};\nconst WorkbenchRegionTabCloseButton = (props: {\n disabled: boolean;\n isActive: boolean;\n label: string;\n placement: WorkbenchWidgetPlacement;\n workbench: WorkbenchCore;\n}) => {\n const { disabled, isActive, label, placement, workbench } = props;\n if (placement.closable !== true) return null;\n return (\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=\"1rem\"\n minW=\"1rem\"\n p=\"0\"\n borderRadius=\"2xs\"\n flexShrink={0}\n me=\"-1\"\n opacity={isActive ? \"1\" : \"0\"}\n pointerEvents={isActive ? \"auto\" : \"none\"}\n color=\"fg.muted\"\n _groupHover={{ opacity: \"1\", pointerEvents: \"auto\" }}\n _groupFocusWithin={{ opacity: \"1\", pointerEvents: \"auto\" }}\n _hover={{ bg: \"transparent\", color: \"fg\" }}\n _active={{ bg: \"transparent\" }}\n transition=\"opacity 120ms ease\"\n onPointerDown={(event) => event.stopPropagation()}\n onClick={(event) => {\n event.stopPropagation();\n if (disabled) return;\n const identity = placement.placementIdentity;\n if (identity) {\n workbench.closePlacement(identity);\n return;\n }\n workbench.layout.closePanel(placement.widgetId);\n }}\n />\n );\n};\nconst WorkbenchRegionTabMenus = (props: {\n behavior: ReturnType<typeof useRegionTabBehavior>;\n label: string;\n placement: WorkbenchWidgetPlacement;\n workbench: WorkbenchCore;\n}) => {\n const { behavior, label, placement, workbench } = props;\n return (\n <>\n {behavior.hasCustomMenu ? (\n <WorkbenchRegionTabMenuSurface\n anchor={behavior.anchor}\n label={`${label} menu`}\n open={behavior.openMenu === \"custom\"}\n setMenuOpen={(open) => behavior.setMenuOpen(\"custom\", open)}\n >\n <WorkbenchStructuredTabMenu groups={behavior.tabSnapshot.menu ?? []} workbench={workbench} />\n </WorkbenchRegionTabMenuSurface>\n ) : null}\n {behavior.hasContextMenu ? (\n <WorkbenchRegionTabContextMenu\n anchor={behavior.anchor}\n label={label}\n open={behavior.openMenu === \"context\"}\n placement={placement}\n setMenuOpen={(open) => behavior.setMenuOpen(\"context\", open)}\n workbench={workbench}\n />\n ) : null}\n </>\n );\n};\nexport const WorkbenchRegionTab = (props: WorkbenchRegionTabProps) => {\n const { activeWidgetId, disabled = false, placement, sortable = false, workbench } = props;\n const isActive = placement.widgetId === activeWidgetId;\n const tabSnapshot = useTabSnapshot(placement);\n const label = tabSnapshot.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 = resolveTabIconName(\n placement,\n widget,\n placement.resource ? workbench.resources.getKind(placement.resource.type)?.icon : undefined,\n );\n const behavior = useRegionTabBehavior(props, tabSnapshot);\n const { isDragging, listeners, setNodeRef, transform, transition } = behavior.sortableState;\n const menuOpen =\n (behavior.openMenu === \"custom\" && behavior.hasCustomMenu) ||\n (behavior.openMenu === \"context\" && behavior.hasContextMenu);\n return (\n <>\n <Tabs.Trigger\n ref={setNodeRef}\n value={placement.widgetId}\n title={label}\n // Name the tab from its label element alone. Computing the name from the tab's\n // contents would fold in the nested Close button, so a closable tab would be\n // called \"Artifacts Close Artifacts\" and rename itself the moment it became\n // closable. The label element still carries any status or count a tab renders.\n aria-labelledby={labelId}\n disabled={disabled}\n className=\"group\"\n aria-haspopup={behavior.hasCustomMenu || behavior.hasContextMenu ? \"menu\" : undefined}\n aria-expanded={behavior.hasCustomMenu || behavior.hasContextMenu ? menuOpen : undefined}\n aria-keyshortcuts={sortable ? \"Alt+ArrowLeft Alt+ArrowRight\" : undefined}\n fontStyle={behavior.isPreview ? \"italic\" : undefined}\n opacity={isDragging ? \"0.5\" : undefined}\n transform={CSS.Transform.toString(transform)}\n transition={transition}\n {...listeners}\n onKeyDown={behavior.reorderWithKeyboard}\n onContextMenu={behavior.hasContextMenu ? behavior.openContextMenu : undefined}\n onClick={behavior.hasCustomMenu && isActive && !disabled ? behavior.openCustomMenu : undefined}\n >\n <WorkbenchRegionTabLabel\n icon={tabSnapshot.icon ?? icon}\n id={labelId}\n indicator={tabSnapshot.indicator}\n label={label}\n />\n <WorkbenchRegionTabCloseButton\n disabled={disabled}\n isActive={isActive}\n label={label}\n placement={placement}\n workbench={workbench}\n />\n </Tabs.Trigger>\n <WorkbenchRegionTabMenus behavior={behavior} label={label} placement={placement} workbench={workbench} />\n </>\n );\n};\n","import { Tabs } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, type DragEndEvent, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { horizontalListSortingStrategy, SortableContext } from \"@dnd-kit/sortable\";\nimport type { ReactNode } from \"react\";\nimport type {\n ResourceRef,\n WorkbenchCompositionAddablePanel,\n WorkbenchCore,\n WorkbenchPanelRegion,\n WorkbenchWidgetPlacement,\n} from \"../../core\";\nimport { WorkbenchPanelAddMenu } from \"./panel-add-menu\";\nimport { WorkbenchRegionTab } from \"./region-tab\";\n\ninterface SortableRegionTabListProps {\n activeWidgetId?: string;\n disabled: boolean;\n leadingActions: ReactNode;\n panelRegion?: WorkbenchPanelRegion;\n placements: WorkbenchWidgetPlacement[];\n resource?: ResourceRef;\n eligibleSubPanels: readonly WorkbenchCompositionAddablePanel[];\n workbench: WorkbenchCore;\n}\n\nexport const SortableRegionTabList = (props: SortableRegionTabListProps) => {\n const { activeWidgetId, disabled, eligibleSubPanels, leadingActions, panelRegion, placements, resource, workbench } =\n props;\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n const reorderable = placements.filter(\n (placement) => placement.role === \"sub-panel\" && placement.tabRetention !== \"preview\",\n );\n const reorderWidget = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n const activeIndex = placements.findIndex((placement) => placement.widgetId === active.id);\n const overIndex = placements.findIndex((placement) => placement.widgetId === over.id);\n const source = placements[activeIndex];\n const target = placements[overIndex];\n if (\n source?.role !== \"sub-panel\" ||\n source.tabRetention === \"preview\" ||\n target?.role !== \"sub-panel\" ||\n target.tabRetention === \"preview\"\n ) {\n return;\n }\n workbench.layout.reorderPanel(\n String(active.id),\n activeIndex < overIndex ? { afterWidgetId: target.widgetId } : { beforeWidgetId: target.widgetId },\n );\n };\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={reorderWidget}\n modifiers={[({ transform }) => ({ ...transform, y: 0 })]}\n >\n <SortableContext\n items={placements.map((placement) => placement.widgetId)}\n strategy={horizontalListSortingStrategy}\n >\n <Tabs.List h=\"full\" minH=\"0\" w=\"full\" alignItems=\"center\" gap=\"2xs\" justifyContent=\"flex-start\">\n {placements.map((placement) => {\n const reorderableIndex = reorderable.findIndex((candidate) => candidate.widgetId === placement.widgetId);\n return (\n <WorkbenchRegionTab\n key={placement.widgetId}\n workbench={workbench}\n placement={placement}\n activeWidgetId={activeWidgetId}\n disabled={disabled}\n sortable={reorderableIndex >= 0}\n previousWidgetId={reorderable[reorderableIndex - 1]?.widgetId}\n nextWidgetId={reorderable[reorderableIndex + 1]?.widgetId}\n />\n );\n })}\n {panelRegion ? (\n <WorkbenchPanelAddMenu\n workbench={workbench}\n region={panelRegion}\n resource={resource}\n panels={eligibleSubPanels}\n />\n ) : null}\n {leadingActions}\n </Tabs.List>\n </SortableContext>\n </DndContext>\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 type { WorkbenchCore, WorkbenchRegion as WorkbenchRegionId, WorkbenchWidgetPlacement } from \"../../core\";\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 { resolveDisplayedActiveWidgetId, resolveTabIconName, toTabKey } from \"./region-tabs-visibility\";\nimport { useWorkbenchRegionTabsState } from \"./region-tabs-visibility-hooks\";\nimport { SortableRegionTabList } from \"./sortable-region-tab-list\";\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};\nexport const WorkbenchRegionTabs = (props: WorkbenchRegionTabsProps) => {\n const { workbench, region, visibilityStorageKey } = 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 } = useWorkbenchRegionTabsState(workbench, region, visibilityStorageKey);\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 workbench.commands.executeCommand(item.commandId, item.args).catch(() => undefined);\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 1 auto\" 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 <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=\"1 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 <SortableRegionTabList\n disabled={false}\n workbench={workbench}\n placements={visiblePlacements}\n activeWidgetId={activeWidgetId}\n panelRegion={panelRegion}\n resource={resource}\n eligibleSubPanels={eligibleSubPanels}\n leadingActions={leadingActions}\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 );\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 { useEffect, useRef, useState } from \"react\";\nimport type { Disposable, RendererReadBinding, WorkbenchCore } from \"../../core\";\n\ninterface RendererReadOptions<T> {\n workbench: WorkbenchCore;\n ownerKey: string;\n queryKey: 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?: string;\n}\n\nexport const useRendererRead = <T>(options: RendererReadOptions<T>) => {\n const { workbench, ownerKey, queryKey } = options;\n const [state, setState] = useState<ReadState<T>>({ queryKey, loading: true });\n const retryRef = useRef<(() => void) | undefined>(undefined);\n const callbacks = useRef(options);\n useEffect(() => {\n callbacks.current = options;\n });\n // Query identity controls ownership. Rendering a new callback must not start another read.\n useEffect(() => {\n const binding: RendererReadBinding = workbench.views.reads.bind(ownerKey);\n let hasCompletedRead = false;\n const request = {\n queryKey,\n load: (signal: AbortSignal, publish: (value: T) => void) => callbacks.current.load(signal, publish),\n onProgress: (value: T) => {\n // Background refreshes keep the complete snapshot until its replacement is ready.\n if (!hasCompletedRead) setState({ queryKey, value, loading: true });\n },\n onValue: (value: T) => {\n hasCompletedRead = true;\n setState({ queryKey, value, loading: false });\n },\n onError: (error: unknown) =>\n setState((previous) => ({\n queryKey,\n value: previous.queryKey === queryKey ? previous.value : undefined,\n loading: false,\n error: error instanceof Error ? error.message : String(error),\n })),\n };\n const refresh = () => binding.request(request);\n retryRef.current = () => {\n setState((previous) => ({ ...previous, loading: true, error: undefined }));\n binding.request(request, \"retry\");\n };\n refresh();\n const subscription = callbacks.current.subscribe(refresh);\n return () => {\n retryRef.current = undefined;\n binding.dispose();\n if (typeof subscription === \"function\") subscription();\n else subscription.dispose();\n };\n }, [workbench, ownerKey, queryKey]);\n const current = state.queryKey === queryKey ? state : { queryKey, loading: true };\n return { ...current, retry: () => retryRef.current?.() };\n};\n","import type { WorkbenchCore } from \"../../../core\";\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 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 = (rendererId: string, placement: WorkbenchPanelInstance) => {\n const identity = resourceKey(placement.resource) ?? placement.resource?.id ?? \"unscoped\";\n return `pstdio:workbench:dataTableRenderer:${rendererId}:${placement.instanceId}:${identity}`;\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} from \"@pstdio/ui/data-table\";\nimport type { ReactNode } from \"react\";\nimport type {\n DataTableRendererQueryResult,\n RegisteredDataTableRendererContribution,\n WorkbenchCore,\n WorkbenchPanelInstance,\n} from \"../../../core\";\nimport { getWorkbenchRenderers, rendererReadKey } from \"../../../core\";\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 { 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: [] };\nexport const WorkbenchDataTableView = (props: WorkbenchDataTableViewProps) => {\n const { workbench, contribution, placement } = props;\n const resolveResourceActions = useWorkbenchResourceActionResolver(workbench);\n const contextValues = useWorkbenchStore(workbench.context.store, (state) => state.values);\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\n load: (signal) =>\n contribution.executeQuery({ resource: placement.resource, modeId: workbench.modes.getActiveModeId() }, signal),\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 action.run(row);\n },\n }));\n const selectionActions = resolveDataTableRendererSelectionActions(\n contribution.selectionActions ?? [],\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 Promise.resolve(contribution.onRowActivate(row)).catch(() => undefined);\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 && !column.defaultHidden)\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\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 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={resolveDataTableRendererStorageKey(contribution.id, placement)}\n compactHeaders={labels}\n columnDescriptions={descriptions}\n columnIcons={icons}\n hiddenColumns={columns.filter((column) => column.hidden).map((column) => column.id)}\n defaultHiddenColumns={columns.filter((column) => column.defaultHidden).map((column) => column.id)}\n defaultShowStats={contribution.defaultShowStats}\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 { Box } from \"@chakra-ui/react\";\nimport type { PageLocation, PageRef } from \"@pstdio/sdk/extensions\";\nimport { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { PaletteShortcut, 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);\nexport const filterTreeListSelection = (\n sections: TreeViewSection[],\n childrenByNodeId: Record<string, TreeNode[]>,\n selection: string | string[] | undefined,\n) => {\n const selectedIds = typeof selection === \"string\" ? [selection] : (selection ?? []);\n return activeNodeIds(selectedIds.filter((nodeId) => findSectionNode(sections, nodeId, childrenByNodeId)));\n};\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 // Keep renderer selection on the nodes so it survives composing and scoping trees.\n const declaredSelection = activeNodeIds(\n listSectionNodes(sections, childrenByNodeId)\n .filter((node) => node.selected)\n .map((node) => node.id),\n );\n if (declaredSelection) return declaredSelection;\n const activeResourceKeys = getWorkbenchSelectionResourceKeys(activeResource);\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 renderShortcutEndContent = (binding: string | string[] | undefined) => {\n if (!binding) return undefined;\n return (\n <Box\n opacity=\"0\"\n pointerEvents=\"none\"\n display=\"inline-flex\"\n alignItems=\"center\"\n transition=\"opacity 120ms ease\"\n _groupHover={{ opacity: \"1\" }}\n >\n <PaletteShortcut binding={binding} />\n </Box>\n );\n};\nconst resolveTreeNodeEndContent = (\n node: TreeNode,\n resource: ResourceRef | undefined,\n binding: string | string[] | undefined,\n) => {\n if (node.endContent !== undefined) return node.endContent as ReactNode;\n const shortcut = renderShortcutEndContent(binding);\n if (shortcut) return shortcut;\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 shortcuts = new Map(\n context.workbench.keybindings.listCommandKeybindings().map((k) => [k.commandId, k.keybinding]),\n );\n const binding = node.commandId ? shortcuts.get(node.commandId) : 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 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, binding),\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) => 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 type {\n RegisteredTreeRendererContribution,\n ResourceRef,\n TreeNode,\n TreeViewSection,\n WorkbenchCore,\n} from \"../../../core\";\nimport { getWorkbenchRenderers } from \"../../../core\";\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 createMoveTreeNode = (context: MoveTreeNodeContext) =>\n context.renderer.moveNode\n ? (sourceNodeId: string, targetNodeId?: string) => {\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 || (targetNodeId && !target)) return;\n const trees = getWorkbenchRenderers(context.workbench);\n void Promise.resolve(\n context.renderer.moveNode?.(source, target, {\n resource: context.resource,\n viewId: context.viewId,\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 ).catch(context.onError);\n }\n : undefined;\n","import type { NavigationTarget } 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","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, 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 { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { useEffect, useState, useSyncExternalStore } from \"react\";\nimport { getWorkbenchRenderers, type ResourceRef, type TreeNode, type WorkbenchCore } from \"../../../core\";\nimport { useWorkbenchStore } from \"../../shared/use-workbench-store\";\nimport { useRendererRead } from \"../use-renderer-read\";\nimport {\n expandDefaultTreeSections,\n type LoadedTreeData,\n loadExpandedTreeChildren,\n loadTreeData,\n} from \"./tree-view-load\";\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, resourceKey(resource)]),\n) => {\n const trees = getWorkbenchRenderers(workbench);\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 // Composed navigation owns its data scope. Other trees conservatively follow\n // the page resource so pending reads cannot publish into a different resource.\n const queryKey = JSON.stringify([\n treeViewId,\n resourceKey(resource),\n viewId,\n filter,\n project,\n mode,\n pageOwner,\n trees.getTreeRenderer(treeViewId)?.getReadKey?.({ resource, viewId, filter }) ?? resourceKey(location?.resource),\n ]);\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,\n byNodeId: {},\n });\n const read = useRendererRead<LoadedTreeData & { children: Record<string, TreeNode[]> }>({\n workbench,\n ownerKey,\n queryKey,\n load: async (signal, publish) => {\n const ctx = { resource, viewId, filter, signal };\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 }).then((children) => {\n setExpandedChildren((current) => ({\n queryKey,\n byNodeId: { ...(current.queryKey === queryKey ? current.byNodeId : {}), [node.id]: children },\n }));\n });\n };\n return {\n body: read.value?.body ?? [],\n header: read.value?.header ?? [],\n footer: read.value?.footer ?? [],\n childrenByNodeId: {\n ...(expandedChildren.queryKey === queryKey ? expandedChildren.byNodeId : {}),\n ...read.value?.children,\n },\n loadChildren,\n error: read.error ?? null,\n loading: read.loading && !read.value,\n retry: read.retry,\n };\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 {\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\";\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}\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 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 = applyTreeListOrder(\n [...regions.headerSections, ...regions.sections, ...regions.footerSections],\n sectionOrder,\n nodeOrderBySection,\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 sourceSections = [...regions.headerSections, ...regions.sections, ...regions.footerSections];\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 backgroundContextActions = buildTreeVisibilityMenuActions(\n { headerSections: orderedHeaderSections, sections: orderedSections, footerSections: orderedFooterSections },\n sectionOverrides,\n nodeOverrides,\n visibilityActions,\n icons,\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 });\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} from \"../../../core\";\nimport { getAnchorResource, getWorkbenchRenderers } from \"../../../core\";\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 {\n filterTreeListSelection,\n findNodeInSections,\n resolveTreeListSelection,\n toTreeListSection,\n} from \"./tree-list-adapter\";\nimport { TreeParamsDialog } from \"./tree-params-dialog\";\nimport { pinnedOnlyNodeIds } from \"./tree-pinned-only\";\nimport { TreeViewBody } from \"./tree-view-body\";\nimport { createMoveTreeNode } from \"./tree-view-move\";\nimport { shouldSelectTreeNodeForNavigationTarget } from \"./tree-view-navigation\";\nimport { TreeViewSearch } from \"./tree-view-search\";\nimport { useTreeData } from \"./use-tree-data\";\nimport { useTreeViewCustomization } from \"./use-tree-view-customization\";\n\ninterface WorkbenchTreeViewProps {\n readOwnerKey?: string;\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\ntype WorkbenchLayoutState = ReturnType<WorkbenchCore[\"layout\"][\"getLayout\"]>;\n\nconst resolveActivePlacement = (\n widgets: WorkbenchLayoutState[\"regions\"][\"overlay\"][\"widgets\"],\n activeWidgetId: string | undefined,\n) => widgets.find((entry) => entry.widgetId === activeWidgetId) ?? widgets[0];\n\nconst resolveTreeActiveResource = (layout: WorkbenchLayoutState) =>\n resolveActivePlacement(layout.regions.overlay.widgets, layout.regions.overlay.activeWidgetId)?.resource ??\n getAnchorResource(layout, \"primary\");\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(context.onOpenResourceError);\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 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 = useWorkbenchStore(workbench.pages.store, (state) => state.projectId);\n const activeLocation = useWorkbenchStore(workbench.pages.store, (state) => state.location);\n const activeResource = useWorkbenchStore(workbench.layout.store, (state) => resolveTreeActiveResource(state.layout));\n const { body, childrenByNodeId, 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 );\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 { suppressNodeContextMenus: Boolean(onSidenavContextActionsChange), pinnedOnlyNodeIds: pinnedOnlyNodeIds(body) },\n );\n useSidenavContextActions(backgroundContextActions, customizationRevision, onSidenavContextActionsChange);\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 = (sectionId: string) => {\n const expanded = treeState.expandedSectionIds.includes(sectionId);\n\n getWorkbenchRenderers(workbench).setSectionExpanded(treeViewId, sectionId, !expanded);\n };\n const moveNode = createMoveTreeNode({\n workbench,\n renderer: treeRenderer,\n resource,\n viewId,\n sections: body,\n childrenByNodeId,\n onError: onOpenResourceError,\n });\n\n const navigationContext = { workbench, treeViewId, onOpenResourceError };\n\n const activeNodeSelection = resolveTreeListSelection({\n sections: [...header, ...body, ...footer],\n childrenByNodeId,\n activeNodeId,\n activeLocation,\n activeResource,\n selectedNodeId: treeState.selectedNodeId,\n });\n const headerActiveNodeId = filterTreeListSelection(header, childrenByNodeId, activeNodeSelection);\n const bodyActiveNodeId = filterTreeListSelection(body, childrenByNodeId, activeNodeSelection);\n const footerActiveNodeId = filterTreeListSelection(footer, childrenByNodeId, activeNodeSelection);\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={Boolean(onSidenavContextActionsChange)}\n expandedNodeIds={treeState.expandedNodeIds}\n expandedSectionIds={treeState.expandedSectionIds}\n activeNodeId={headerActiveNodeId}\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 ? <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={onSidenavContextActionsChange ? undefined : backgroundContextActions}\n draggable={Boolean(onSidenavContextActionsChange)}\n customizationAvailable={Boolean(onSidenavContextActionsChange)}\n activeNodeId={bodyActiveNodeId}\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={Boolean(onSidenavContextActionsChange)}\n expandedNodeIds={treeState.expandedNodeIds}\n expandedSectionIds={treeState.expandedSectionIds}\n activeNodeId={footerActiveNodeId}\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 { 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 {\n canAttachWorkbenchPanelMenu,\n PANEL_CONTENT_MIN_SIZE_PX,\n shouldCollapseWorkbenchPanelMenus,\n} from \"./panel-menu-sizing\";\n\nimport { useWorkbenchPanelMenu, useWorkbenchPanelWidth, 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\nconst addPanelMenu = (input: { content: ReactNode; view: WorkbenchPanelMenuView; workbench: WorkbenchCore }) => {\n const { content, view, workbench } = 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={PANEL_CONTENT_MIN_SIZE_PX}\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 panelWidth = useWorkbenchPanelWidth(panel);\n const responsiveCollapsed = shouldCollapseWorkbenchPanelMenus(panelWidth);\n const left = useWorkbenchPanelMenu(workbench, panel, \"left\", responsiveCollapsed);\n const right = useWorkbenchPanelMenu(workbench, panel, \"right\", responsiveCollapsed);\n const withRight = addPanelMenu({ content: children, view: right, workbench });\n return addPanelMenu({ content: withRight, view: left, workbench });\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 return (\n <Menu.Root\n positioning={{ placement: \"bottom-start\", offset: { mainAxis: 0 }, getAnchorElement: () => triggerRef.current }}\n onExitComplete={() => triggerRef.current?.focus()}\n >\n <Tooltip content={view.title}>\n <Menu.Trigger asChild>\n <IconButton\n ref={triggerRef}\n variant=\"ghost\"\n size={PANEL_HEADER_CONTROL_SIZE}\n aria-label={`Open ${view.label}`}\n flexShrink={0}\n >\n <WorkbenchIcon name={view.side === \"left\" ? \"PanelLeftOpen\" : \"PanelRightOpen\"} size={14} />\n </IconButton>\n </Menu.Trigger>\n </Tooltip>\n <Portal>\n <Menu.Positioner>\n <Menu.Content\n aria-label={`${view.label} controls`}\n data-workbench-panel-menu-controls={view.region}\n boxShadow=\"none\"\n display=\"flex\"\n flexDirection=\"column\"\n h=\"64\"\n maxW=\"64\"\n minW=\"64\"\n overflow=\"hidden\"\n p=\"0\"\n w=\"64\"\n >\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 <Tooltip content={canAttach ? `Attach ${view.label}` : \"Panel is too narrow to attach this menu\"}>\n <Box as=\"span\" display=\"inline-flex\">\n <IconButton\n variant=\"ghost\"\n size=\"xs\"\n aria-label={`Attach ${view.label}`}\n disabled={!canAttach}\n onClick={view.onOpen}\n >\n <WorkbenchIcon name={view.side === \"left\" ? \"PanelLeft\" : \"PanelRight\"} size={14} />\n </IconButton>\n </Box>\n </Tooltip>\n </Header>\n <Box flex=\"1\" minH=\"0\" minW=\"0\">\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 panelWidth = useWorkbenchPanelWidth(panel);\n const responsiveCollapsed = shouldCollapseWorkbenchPanelMenus(panelWidth);\n const left = useWorkbenchPanelMenu(workbench, panel, \"left\", responsiveCollapsed);\n const right = useWorkbenchPanelMenu(workbench, panel, \"right\", responsiveCollapsed);\n const views = [left, right];\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 const attachedMenuMinSizes = views\n .filter((candidate) => candidate.has && !candidate.collapsed)\n .map((candidate) => candidate.size.minPx);\n const canAttach =\n !view.responsiveCollapsed &&\n canAttachWorkbenchPanelMenu({\n panelWidth,\n targetMenuMinSize: view.size.minPx,\n attachedMenuMinSizes,\n });\n\n return <WorkbenchPanelMenuOpener key={view.region} view={view} workbench={workbench} canAttach={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 { 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\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 settings?.showHeader !== false && (header || canFloat) ? (\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 ref={contentSlotRef} flex=\"1\" minH={0} direction=\"column\" />\n </WorkbenchPanelMenuLayout>\n </AttachedPanel>\n </WorkbenchFocusRegion>\n );\n};\n\nexport const WorkbenchFloatingSidePanel = (props: WorkbenchSidePanelProps) => {\n const { workbench, contentSlotRef, bottomOffset, header, bubbleIcon, onOpen } = props;\n const mode = workbench.sidePanel.getMode();\n\n if (!workbench.sidePanel.canFloat() || mode === \"attached\") return null;\n\n if (mode === \"closed\") {\n return (\n <BubbleButton\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 );\n }\n\n return (\n <BubblePanel\n isOpen\n aria-label=\"Side Panel\"\n testId=\"workbench-side-panel-floating\"\n closeLabel=\"Close Side Panel\"\n containerProps={{ bottom: floatingPanelBottom(bottomOffset), bg: workbenchBackgrounds.widget }}\n popOutLabel=\"Reattach Side Panel\"\n onClose={() => workbench.sidePanel.setMode(\"closed\")}\n onPopOut={() => workbench.sidePanel.setMode(\"attached\")}\n menu={<WorkbenchSidePanelHeader header={header} />}\n >\n <Flex ref={contentSlotRef} flex=\"1\" minH={0} direction=\"column\" />\n </BubblePanel>\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, 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 placementRef.current = 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 = state.layout.regions.secondary;\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\n .getLayout()\n .regions.secondary.widgets.find((candidate) => candidate.widgetId === placement.instanceId);\n const identity = currentPlacement?.placementIdentity;\n if (identity?.kind === \"shell\" && currentPlacement?.resource) {\n updateShellPlacement(identity, { resource: { ...currentPlacement.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 type { ResourceRef, WorkbenchCoreContributionContext, WorkbenchModuleContribution } 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 terminalInstanceIds = (ctx: WorkbenchCoreContributionContext) =>\n new Set(\n ctx.layout\n .listPanelInstances(\"secondary\")\n .filter((placement) => placement.viewId === WORKBENCH_TERMINAL_WIDGET_ID)\n .map((placement) => placement.instanceId),\n );\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(\n state.layout.regions.secondary.widgets\n .filter((placement) => placement.viewId === WORKBENCH_TERMINAL_WIDGET_ID)\n .map((placement) => placement.widgetId),\n );\n const previousIds = previousState.layout.regions.secondary.widgets\n .filter((placement) => placement.viewId === WORKBENCH_TERMINAL_WIDGET_ID)\n .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 terminalPlacements = ctx.layout\n .getLayout()\n .regions.secondary.widgets.filter((placement) => placement.viewId === WORKBENCH_TERMINAL_WIDGET_ID);\n const titleIndexes = terminalPlacements\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(terminalPlacements.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 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 { execute: (_args, context) => openWorkbenchTerminal(ctx, { resource: context?.resource }) },\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} 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 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 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 { useWorkbenchResourceActionResolver } from \"../menus/resource-actions\";\nimport { WorkbenchIcon } from \"../shared/icon\";\nimport { useWorkbenchStore } from \"../shared/use-workbench-store\";\nexport const WorkbenchBreadcrumbResourceActions = (props: { workbench: WorkbenchCore }) => {\n const { workbench } = props;\n const items = useWorkbenchStore(workbench.breadcrumbs.store, (state) => state.items) ?? [];\n const resolveActions = useWorkbenchResourceActionResolver(workbench);\n const resource = items.at(-1)?.resource;\n const actions = resource ? resolveActions(resource) : [];\n if (!resource || actions.length === 0) return null;\n const label = resource.label ?? resource.id ?? resource.type;\n return (\n <ResourceActionMenu actions={actions} positioning={{ placement: \"bottom-start\" }}>\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n aria-label={`Actions for ${label}`}\n data-workbench-breadcrumb-resource-actions=\"\"\n >\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 { WorkbenchBreadcrumbResourceActions } 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 <WorkbenchBreadcrumbResourceActions 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","import { z } from \"zod\";\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 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({ type: agentAvailabilityTypeSchema }),\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});\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});\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 workbenchModePanels = [\"main\", \"secondary\", \"side\"] 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 WorkbenchRegion = (typeof workbenchRegions)[number];\nexport type WorkbenchViewTarget = (typeof workbenchViewTargets)[number];\nexport type WorkbenchSettingsTarget = (typeof workbenchSettingsTargets)[number];\nexport type WorkbenchSettingsScope = (typeof workbenchSettingsScopes)[number];\nexport type WorkbenchModePanel = (typeof workbenchModePanels)[number];\nexport type WorkbenchModeLayoutTarget = (typeof workbenchModeLayoutTargets)[number];\nexport type WorkbenchLayoutTarget = WorkbenchModeLayoutTarget;\n\nconst workbenchModeLayoutTargetPanels = {\n \"workbench.left\": undefined,\n \"workbench.main.left\": \"main\",\n \"workbench.main\": \"main\",\n \"workbench.main.right\": \"main\",\n \"workbench.secondary\": \"secondary\",\n} as const satisfies Record<WorkbenchModeLayoutTarget, WorkbenchModePanel | undefined>;\n\nexport const getWorkbenchModeLayoutTargetPanel = (target: WorkbenchModeLayoutTarget) =>\n workbenchModeLayoutTargetPanels[target];\n\nexport const normalizeWorkbenchModePanels = (input: unknown) => {\n const panels = Array.isArray(input)\n ? input.filter((panel): panel is WorkbenchModePanel => (workbenchModePanels as readonly unknown[]).includes(panel))\n : [...workbenchModePanels];\n const invalid =\n input !== undefined &&\n (!Array.isArray(input) || panels.length !== input.length || new Set(panels).size !== panels.length);\n\n return { panels, invalid };\n};\n\nexport type WorkbenchAttachmentTarget =\n | WorkbenchMenuTarget\n | WorkbenchTreeTarget\n | WorkbenchViewTarget\n | WorkbenchSettingsTarget;\n\nexport type WorkbenchContributionKind = \"menu\" | \"treeItem\" | \"panel\" | \"settings\";\n\nexport type WorkbenchTargetGranularity = \"surface\" | \"area\" | \"areaTree\";\n\nexport interface WorkbenchTargetDefinition {\n id: WorkbenchAttachmentTarget;\n allowedKinds: readonly WorkbenchContributionKind[];\n granularity: WorkbenchTargetGranularity;\n rationale: string;\n}\n\nexport const workbenchTargets = [\n {\n id: \"workbench.nav.actions\",\n allowedKinds: [\"menu\"],\n granularity: \"surface\",\n rationale: \"Primary command surface in the host-owned nav (top) workbench chrome.\",\n },\n {\n id: \"workbench.nav.overflow\",\n allowedKinds: [\"menu\"],\n granularity: \"surface\",\n rationale: \"Secondary command surface in the host-owned nav (top) workbench chrome.\",\n },\n {\n id: \"workbench.left.tree\",\n allowedKinds: [\"treeItem\"],\n granularity: \"areaTree\",\n rationale: \"Tree entries for the active tree renderer mounted in the left area.\",\n },\n {\n id: \"workbench.main.left.tree\",\n allowedKinds: [\"treeItem\"],\n granularity: \"areaTree\",\n rationale: \"Tree entries for the active tree renderer mounted in the main-left area.\",\n },\n {\n id: \"workbench.main.right.tree\",\n allowedKinds: [\"treeItem\"],\n granularity: \"areaTree\",\n rationale: \"Tree entries for the active tree renderer mounted in the main-right area.\",\n },\n {\n id: \"workbench.settings\",\n allowedKinds: [\"settings\"],\n granularity: \"surface\",\n rationale: \"Settings panel placement in host-owned settings navigation.\",\n },\n] as const satisfies readonly WorkbenchTargetDefinition[];\n\nexport const getWorkbenchTargetDefinition = (id: string) => workbenchTargets.find((target) => target.id === id);\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 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});\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}\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 { 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 { extensionResourceRefSchema } from \"./resource-ref\";\nimport { commandTargetSchema, pageRefSchema, panelRefSchema } from \"./workbench-refs-metadata\";\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 parent?: MetadataPageTarget;\n}\n\nconst pageTargetSchema: z.ZodType<MetadataPageTarget> = z\n .lazy(() =>\n z.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 parent: pageTargetSchema.optional(),\n }),\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 { 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 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 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]);\nexport const controlValuesSchema = z.record(z.string(), controlValueSchema);\nexport const controlParamSchema = z.discriminatedUnion(\"type\", [\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 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","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 { 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 description: localizableStringSchema.optional(),\n icon: z.string().optional(),\n hidden: z.boolean().optional(),\n stat: columnStatSchema.optional(),\n renderer: columnRendererSchema.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});\n\nexport type ExtensionDataTableRendererRecord = z.infer<typeof extensionDataTableRendererRecordSchema>;\nexport type WorkbenchExtensionDataTableRendererRecord = ExtensionDataTableRendererRecord;\n","import { z } from \"zod\";\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(\"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\nexport const kanbanRendererSettingsSchema = z.object({\n viewMode: z.enum([\"board\", \"list\"]),\n columnGrouping: z.string(),\n rowGrouping: z.string(),\n ordering: z.object({\n attributeId: z.string(),\n direction: z.enum([\"asc\", \"desc\"]),\n }),\n displayProperties: z.array(z.string()),\n});\n\nexport const kanbanRendererSavedViewSchema = z.object({\n id: z.string(),\n title: localizableStringSchema,\n settings: kanbanRendererSettingsSchema,\n filters: z.record(z.string(), z.array(z.string())),\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 columnActionHandlerId: z.string().optional(),\n createRow: extensionKanbanRendererCreateRowSchema.optional(),\n rowActions: z.array(extensionKanbanRendererRowActionSchema).optional(),\n rowActivationHandlerId: z.string().optional(),\n defaultSettings: kanbanRendererSettingsSchema.partial().optional(),\n defaultFilters: z.record(z.string(), z.array(z.string())).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 { 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 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\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 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 resourceKind: 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 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 { 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 { 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 { kanbanRendererSettingsSchema } 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\", \"user\"]),\n filterable: z.boolean(),\n groupable: z.boolean(),\n sortable: z.boolean(),\n displayable: z.boolean(),\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 extensionId: z.string(),\n fields: z.array(boardFieldSchema),\n});\nexport const boardFiltersSchema = z.record(z.string(), z.array(z.string()));\nexport const boardViewSchema = z.object({\n id: z.string(),\n boardId: z.string(),\n title: z.string(),\n settings: kanbanRendererSettingsSchema,\n filters: boardFiltersSchema,\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 settings: kanbanRendererSettingsSchema.partial().optional(),\n filters: boardFiltersSchema.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 BoardViewCreate = z.infer<typeof boardViewCreateSchema>;\nexport type BoardViewUpdate = z.infer<typeof boardViewUpdateSchema>;\n\n// The sync key is derived from the database's composite primary key, never stored twice.\nexport const boardDefaultSyncRow = <T extends { project_id: string; extension_instance_id: string; board_id: string }>(\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 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 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 awaitingInput: hostEventRef<SessionLifecyclePayload>(\"session.awaitingInput\"),\n succeeded: hostEventRef<SessionLifecyclePayload>(\"session.succeeded\"),\n failed: hostEventRef<SessionLifecyclePayload>(\"session.failed\"),\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 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 } from \"./json\";\nimport type { NavigationTarget } from \"./navigation-target\";\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 \"navigation.open\",\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 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 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 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 \"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 \"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 { 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","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 { 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 const harnessParamValueSchema = z.union([z.string(), z.boolean()]);\nexport const harnessParamsInputSchema = z.record(z.string(), harnessParamValueSchema);\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 anchors_json: z.array(extensionResourceRefSchema),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const sessionAttachmentRefSchema = z.object({\n file_id: z.string().min(1),\n});\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().min(1).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});\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({ messages: z.array(sessionMessageSchema) });\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 max_concurrent_sessions: z.number().int().min(1).nullable(),\n});\n\nexport const updateSettingsInputSchema = z\n .object({\n notifications_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 outdated: z.boolean(),\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 outdated_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 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 { 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, useState } from \"react\";\nimport {\n getWorkbenchRenderers,\n type RegisteredControlsRendererContribution,\n rendererReadKey,\n type WorkbenchCore,\n type WorkbenchPanelInstance,\n} from \"../../../core\";\nimport { RendererReadNotice } from \"../renderer-read-notice\";\nimport { useRendererRead } from \"../use-renderer-read\";\n\ninterface WorkbenchControlsViewProps {\n workbench: WorkbenchCore;\n contribution: RegisteredControlsRendererContribution;\n placement: WorkbenchPanelInstance;\n}\ninterface ControlsViewState {\n params: Param[];\n groups: InputGroup[];\n values: ControlValueMap;\n readOnly: boolean;\n loading: boolean;\n error?: string;\n}\nconst initialState: ControlsViewState = { params: [], groups: [], values: {}, readOnly: false, loading: true };\nexport const WorkbenchControlsView = (props: WorkbenchControlsViewProps) => {\n const { workbench, contribution, placement } = props;\n const resource = placement.resource;\n const [state, setState] = useState<ControlsViewState>(initialState);\n const read = useRendererRead({\n workbench,\n ownerKey: rendererReadKey(placement),\n queryKey: JSON.stringify([contribution.id, resourceKey(resource)]),\n\n load: (signal) => contribution.executeQuery(resource, signal),\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({\n params: result.params ?? [],\n groups: result.groups ?? [],\n values: { ...(contribution.defaultValues ?? {}), ...(result.values ?? {}) },\n readOnly: Boolean(result.readOnly),\n loading: false,\n });\n }, [read.value, contribution.defaultValues]);\n const readOnly = state.readOnly || (!contribution.updateValue && !contribution.apply);\n const showFooter =\n Boolean(read.value) && !state.loading && !readOnly && (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 if (contribution.updateValue) void contribution.updateValue({ controlId: id, value, values, resource });\n setState((prev) => ({ ...prev, values: { ...prev.values, [id]: value } }));\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 <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 />\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 ? (\n <Button\n size=\"xs\"\n variant=\"ghost\"\n onClick={() => {\n void contribution.reset?.({ resource });\n }}\n >\n Reset\n </Button>\n ) : null}\n {contribution.apply ? (\n <Button\n size=\"xs\"\n variant=\"subtle\"\n onClick={() => {\n void contribution.apply?.({ values: state.values, resource });\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}\nconst ControlsContent = (props: ControlsContentProps) => {\n const { state, contribution, readOnly, onChange } = props;\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.error)\n return (\n <Box p=\"md\">\n <Text role=\"alert\" textStyle=\"paragraph/S/regular\" color=\"fg\">\n {state.error}\n </Text>\n </Box>\n );\n if (state.params.length || state.groups.length)\n return (\n <ParamEditor\n variant=\"small\"\n params={state.params}\n groups={state.groups}\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 { 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 = (workbench: WorkbenchCore) => {\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, { workbench: scope, contribution, placement: instance });\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 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 type { CommandParamFieldRenderer } from \"../../command-palette/command-params-dialog\";\nimport { useWorkbenchResourceActionResolver } from \"../../menus/resource-actions\";\nimport { RendererReadNotice } from \"../renderer-read-notice\";\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 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 filters: contribution.defaultFilters,\n };\n\n const settings = useKanbanRendererStore(storageKey, (state) => state.settings, initialState);\n const filters = useKanbanRendererStore(storageKey, (state) => state.filters, initialState);\n\n const read = useRendererRead({\n workbench,\n ownerKey: rendererReadKey(placement),\n queryKey: JSON.stringify([contribution.id, settings, filters]),\n\n load: (signal) => contribution.executeQuery({ settings, filters }, 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 Promise.resolve(contribution.onRowActivate(row)).catch(() => undefined);\n };\n\n const getRowContextMenuActions = (row: KanbanRendererRow) => {\n const resourceActions = isKanbanRowResource(row.resource) ? resolveResourceActions(row.resource) : [];\n const contributionActions = contribution.getRowContextMenuActions?.(row) ?? [];\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 viewsSource={viewsSource}\n rows={rows}\n contentPlaceholder={read.value ? undefined : contentPlaceholder}\n storageKey={storageKey}\n attributes={attributes}\n defaultSettings={contribution.defaultSettings}\n defaultFilters={contribution.defaultFilters}\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 onAttributeChange={contribution.onAttributeChange}\n onReorder={contribution.onReorder}\n createRow={contribution.createRow}\n onCreateRow={contribution.onCreateRow}\n onColumnAction={contribution.onColumnAction}\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 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.\nexport interface WorkbenchPanelView {\n has: boolean;\n hasHeader: boolean;\n collapsible: boolean;\n collapsed: boolean;\n onCollapsedChange: (collapsed: boolean) => void;\n}\n\nexport interface WorkbenchMainPanels {\n hasMainHeader: boolean;\n secondaryPanel: WorkbenchPanelView;\n}\n\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 { useWorkbenchPanelHeaderVisible, WorkbenchRegionTabs } from \"../region/region-tabs\";\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\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 >\n <Header\n display={settings?.showHeader !== false && (hasSecondaryHeader || hasPanelHeader) ? \"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 <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 { 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 && (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 >\n <MainHeaderBar workbench={workbench} hasMainHeader={hasMainHeader} />\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 { 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 { 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\";\nimport { workbenchBackgrounds } from \"../theme/workbench-theme-background\";\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\ninterface WorkbenchStatusBarItemsProps {\n workbench: WorkbenchCore;\n slot: \"leading\" | \"trailing\";\n}\n\nconst WorkbenchStatusBarItems = (props: WorkbenchStatusBarItemsProps) => {\n const { slot, workbench } = props;\n const activeModeId = useWorkbenchActiveModeId(workbench);\n const items = activeModeId === workbench.modes.getActiveModeId() ? workbench.statusBar.listVisibleItems(slot) : [];\n\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 return placements.map((placement) => {\n const order = items.findIndex((item) => item.id === placement.widgetId);\n return (\n <Box\n key={placement.widgetId}\n display={order < 0 ? \"none\" : \"flex\"}\n inert={order < 0}\n order={order}\n alignItems=\"center\"\n minW=\"0\"\n h=\"full\"\n >\n <WorkbenchWidgetHost workbench={workbench} region=\"status\" placement={placement} />\n </Box>\n );\n });\n};\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 useWorkbenchStore(workbench.statusBar.store, (state) => state.items);\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 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, 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 { useWorkbenchPanelHeaderVisible } from \"../region/region-tabs\";\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}\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);\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 sidePanelMode = useWorkbenchStore(workbench.sidePanel.store, (state) => state.mode);\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 floatingPanelsAllowed = useWorkbenchStore(workbench.modes.store, () => workbench.sidePanel.canFloat());\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 const activeSidePanelSlot = sidePanelMode === \"floating\" ? floatingSidePanelSlot : attachedSidePanelSlot;\n\n useLayoutEffect(() => {\n const host = sidePanelHostRef.current;\n if (!host) return;\n if (activeSidePanelSlot) {\n if (host.parentNode !== activeSidePanelSlot) activeSidePanelSlot.appendChild(host);\n }\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 py=\"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 {hasSidePanel && floatingPanelsAllowed ? (\n <WorkbenchFloatingSidePanel\n workbench={workbench}\n bubbleIcon={sidePanelBubbleIcon}\n onOpen={onOpenSidePanel}\n contentSlotRef={setFloatingSidePanelSlot}\n bottomOffset={hasStatusWidgets ? WORKBENCH_STATUS_BAR_HEIGHT : undefined}\n header={sideHeader}\n />\n ) : null}\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 >\n <WorkbenchContent key={projectId} {...props} />\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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"}
|