@pstdio/workbench 0.44.0 → 0.45.0-nightly.20261020145025

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"workbench-renderers-Bz_dLyHW.js","names":["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","eventType","optional","from","to","cursor","limit","coerce","number","int","listProjectActivityInputSchema","extend","listActivityResponseSchema","events","array","next_cursor","ActivityResourceType","ActivityActorType","infer","ActivitySource","ActivityEvent","ListActivityInput","ListProjectActivityInput","ListActivityResponse","activityEntrySchema","projectId","resourceType","resourceId","sourceExtensionId","actorType","actorId","payloadJson","createdAt","activityPageSchema","items","nextCursor","ActivityEntry","ActivityPage","WorkspaceExecutionTarget","SessionMessage","JsonPatch","op","path","value","EventStore","push","patch","getHistory","subscribe","AsyncIterable","historyPlusStream","snapshotAndSubscribe","history","stream","AGENT_CAPABILITIES","const","AgentCapability","QuestionResponse","answers","callId","HarnessQuestionReplyError","Error","questionRejected","HarnessQuestionOption","label","description","HarnessQuestion","question","options","multiple","HarnessQuestionRequest","id","toolUseId","questions","HarnessQuestionChannel","ask","request","Promise","QuestionService","answer","response","hasPending","dispose","ApprovalRequest","toolName","toolInput","ApprovalResponse","decision","ApprovalService","requestApproval","handleResponse","TimeoutStrategy","HarnessEventSink","getMessages","HarnessAttachment","fileId","fileName","mimeType","sizeBytes","localPath","url","HarnessApprovalChannel","HarnessParamValue","HarnessParams","Record","HarnessWorkspaceContext","workspaceId","executionTarget","HarnessExitStatus","HarnessExit","status","HarnessSession","agentSessionId","done","stop","replyQuestion","steer","input","HarnessSteeringInput","HarnessSteeringResult","timeoutStrategy","pid","HarnessStartInput","prompt","sessionId","cwd","workspace","model","params","attachments","events","signal","AbortSignal","HarnessResumeInput","messageOffset","questionResponse","approvals","HarnessReattachInput","HarnessMessagesInput","HarnessRecoveryInput","knownMessages","nativeMessages","HarnessRecoveryResult","kind","messages","category","deliveryId","reason","z","AGENT_CAPABILITIES","agentAvailabilityTypeSchema","enum","agentSkillsLayoutSchema","object","dir","string","global_dir","localizableSchema","union","$l10n","default","optional","harnessParamBaseSchema","control","literal","label","description","required","boolean","metadata","record","unknown","harnessParamOptionSchema","value","icon","harnessSelectParamSchema","extend","type","defaultValue","options","array","harnessBooleanParamSchema","harnessParamDescriptorSchema","harnessParamsSchema","agentInfoSchema","id","name","availability","reason","skills","params","capabilities","supportsModels","agentModelSchema","isDefault","paramOverrides","nullable","AgentAvailabilityType","infer","AgentInfo","AgentModel","AgentSkillsLayout","HarnessParamDescriptorInfo","HarnessParamsInfo","findAgentModel","resolveAgentModelParams","harnessLocalId","slice","lastIndexOf","agentDetailsSchema","globalDir","AgentDetails","z","peerSchema","strictObject","release","string","min","protocolVersions","array","number","int","positive","supportedFeatures","requiredFeatures","Peer","infer","protocolPeer","negotiate","client","relay","common","includes","features","every","feature","status","const","protocolVersion","recoverable","action","z","Json","key","isJson","value","JSON","stringify","queue","visited","Set","length","item","pop","Number","isFinite","has","add","Array","isArray","push","prototype","Object","getPrototypeOf","values","jsonSchema","custom","dictionarySchema","ZodType","valueSchema","T","Record","infer","every","entry","safeParse","success","z","jsonSchema","Json","identitySchema","string","min","revisionSchema","number","int","nonnegative","fingerprintSchema","regex","scopeSchema","strictObject","accountId","workbenchId","extensionId","assetSchema","sha256","byteLength","mediaType","sharedSchema","discriminatedUnion","kind","literal","update","entries","array","key","expected","next","value","changeSchema","recordId","expectedRevision","baseDeleted","boolean","shared","optional","asset","base","nullable","deleted","resolutionSchema","conflictId","expectedConflicts","revision","capturedOperationIds","expectedInputs","handler","publishedRevision","handlerId","mutationBodySchema","protocolVersion","scope","environmentId","operationId","parents","changes","resolution","localOperationSchema","omit","superRefine","checkGroup","mutationSchema","extend","fingerprint","Scope","infer","Asset","Change","MutationBody","Mutation","Pick","ctx","RefinementCtx","unique","values","Set","size","length","records","map","change","includes","addIssue","code","message","undefined","entry","inputs","input","some","id","Json","MutationBody","mutationSchema","canonicalJson","value","Array","isArray","map","join","Object","keys","filter","key","undefined","sort","JSON","stringify","fingerprint","bytes","TextEncoder","encode","digest","crypto","subtle","from","Uint8Array","byte","toString","padStart","sealMutation","body","parsed","parse","repeat","_ignored","normalized","validateMutation","input","mutation","supplied","Error","z","identitySchema","environmentIdentitySchema","strictObject","environmentId","environmentTargetSchema","extend","workbenchId","workspaceId","EnvironmentIdentity","infer","EnvironmentTarget","dataOwnership","workbenchContent","assets","publishedExtensions","automationDefinitions","sessions","processes","workspaces","terminals","credentials","caches","developmentOverrides","const","z","dictionarySchema","assetSchema","fingerprintSchema","identitySchema","jsonSchema","mutationSchema","revisionSchema","scopeSchema","checkpointSchema","strictObject","epoch","sequence","recordSchema","recordId","revision","deleted","boolean","primitive","enum","nullable","shared","kind","update","string","optional","map","value","asset","conflictSchema","conflictId","recordIds","array","min","alternativeOperationIds","resolvedBy","receiptSchema","order","operationId","fingerprint","mutation","status","reason","checkpoint","recoveryProof","superRefine","receipt","ctx","identityMatches","accepted","addIssue","code","message","snapshotSchema","protocolVersion","literal","scope","journalSequence","records","receipts","conflicts","publishedRevision","syncOutcomeSchema","discriminatedUnion","conflictRevision","StoredRecord","infer","Receipt","Snapshot","Checkpoint","SyncOutcome","replayBoundary","after","current","retainedFrom","safeParse","success","const","through","z","canonicalJson","checkpointSchema","receiptSchema","scopeSchema","replaySchema","strictObject","protocolVersion","literal","scope","after","through","groups","array","superRefine","batch","ctx","sameEpoch","epoch","complete","sequence","length","validGroups","every","group","index","status","checkpoint","mutation","unique","Set","map","operationId","size","addIssue","code","message","Replay","infer","z","replaySchema","checkpointSchema","assetSchema","fingerprintSchema","identitySchema","mutationSchema","relayOperationSchema","enum","relayRecoverySchema","strictObject","mutation","proof","targetSchema","workbenchId","extensionId","RelayTarget","infer","RelayOperation","relayPath","target","operation","parse","encodeURIComponent","relayRoute","pathname","match","exec","decodeURIComponent","relayReplayResultSchema","discriminatedUnion","status","literal","batch","checkpoint","byteLengthSchema","number","int","nonnegative","max","Number","MAX_SAFE_INTEGER","relayAssetBeginSchema","uploadId","asset","relayAssetUploadSchema","relayAssetPartSchema","min","sha256","byteLength","relayAssetReadSchema","offset","refine","relayAssetStatusSchema","partSize","positive","completed","boolean","parts","array","relayEventSchema","protocolVersion","type","relayInitializeSchema","publishedRevision","assetSchema","identitySchema","revisionSchema","z","assetReferenceSchema","AssetReference","infer","assetOwnerSchema","strictObject","workbenchId","extensionId","AssetOwner","assetTransferSchema","discriminatedUnion","status","literal","operationId","expected","uploadedByteLength","asset","AssetTransfer","z","JsonObject","jsonObjectSchema","record","string","unknown","serializableJsonObjectSchema","ZodType","json","meta","type","additionalProperties","localizedStringSchema","object","$l10n","default","optional","localizableStringSchema","union","extensionSettingScopeSchema","enum","extensionSettingValueTypeSchema","extensionSettingSourceSchema","extensionDiagnosticSeveritySchema","extensionDiagnosticSchema","code","severity","message","extensionId","commandId","sourcePath","metadata","extensionRecordSchema","id","name","displayName","extensionInstanceId","installedExtensionId","installName","version","description","packageAssetDescriptorSchema","kind","literal","path","baseUrl","extensionPlacementSchema","extensionSlotKindSchema","commandSourceSchema","extensionWhenExpressionSchema","mode","array","source","viewId","resourceType","extensionWebviewContributionSchema","entry","title","capabilities","workbenchExtensionWebviewSchema","extend","runtimeUrl","moduleUrl","styles","ExtensionDiagnostic","infer","LocalizableString","ExtensionRecord","z","jsonObjectSchema","localizableStringSchema","packageAssetDescriptorSchema","extensionThemeRecordSchema","object","id","string","extensionId","title","description","optional","format","literal","mode","enum","source","tokens","record","monacoTheme","base","inherit","rules","array","unknown","colors","extensionFileIconThemeRecordSchema","definitions","fileExtensions","fileNames","defaults","file","folder","default","fonts","fontFamily","src","url","weight","style","extensionTranslationRecordSchema","defaultLocale","bundles","ExtensionThemeRecord","infer","ExtensionFileIconThemeRecord","ExtensionTranslationRecord","z","localizableStringSchema","extensionArtifactMountSchema","object","id","string","extensionId","relativePath","fullPath","label","watch","boolean","ExtensionArtifactMount","infer","workbenchMenuTargets","const","workbenchTreeTargets","workbenchRegions","workbenchViewTargets","workbenchSettingsTargets","workbenchSettingsScopes","workbenchModeLayoutTargets","WorkbenchMenuTarget","WorkbenchTreeTarget","WorkbenchViewTarget","WorkbenchSettingsTarget","WorkbenchAttachmentTarget","workbenchRegions","z","workbenchMenuTargets","workbenchModeLayoutTargets","workbenchRegions","workbenchSettingsScopes","workbenchSettingsTargets","workbenchTreeTargets","workbenchViewTargets","workbenchMenuTargetSchema","enum","workbenchTreeTargetSchema","workbenchRegionSchema","workbenchViewTargetSchema","workbenchSettingsTargetSchema","workbenchModeLayoutTargetSchema","workbenchAttachmentTargetSchema","union","workbenchSettingsScopeSchema","workbenchRegions","z","extensionPlacementSchema","extensionWhenExpressionSchema","jsonObjectSchema","localizableStringSchema","workbenchMenuTargetSchema","commandParamDescriptorSchema","object","type","string","description","optional","catchall","unknown","extensionCommandRecordSchema","id","extensionId","title","cliPath","cliAliases","array","examples","automation","boolean","mutating","resourceMutation","discriminatedUnion","kind","literal","resourceType","idParam","labelParam","params","record","extensionParamObjectSchema","extensionMiddlewareRecordSchema","commandId","extensionHookRecordSchema","eventId","extensionScheduleRecordSchema","cron","workbenchExtensionAutomationRecordSchema","localId","extensionInstanceId","enabled","extensionMenuContributionSchema","slotId","target","label","group","placement","icon","presentation","enum","when","disabledWhen","disabledReason","extensionCommandPaletteContributionSchema","ExtensionCommandRecord","infer","ExtensionMiddlewareRecord","ExtensionHookRecord","ExtensionScheduleRecord","WorkbenchExtensionAutomationRecord","ExtensionMenuContribution","ExtensionCommandPaletteContribution","z","extensionDiagnosticSchema","extensionHostCapabilitySchema","object","version","number","int","positive","since","string","optional","extensionHostCapabilitiesSchema","host","literal","hostVersion","capabilities","record","extensionHostCompatibilitySchema","status","enum","diagnostics","array","ExtensionHostCapability","infer","ExtensionHostCapabilities","ExtensionHostCompatibility","Localizable","CommandRef","ExtensionContextBase","ContributionDefinition","ResourceKindRef","MaybePromise","ResourceRef","ViewHierarchyParent","dockedWorkbenchRegions","const","DockedWorkbenchRegion","extensionPanelRegions","ExtensionPanelRegion","RegionSize","defaultPx","minPx","maxPx","ResourceMenuSlotDefinition","id","placement","label","access","order","ResourceKindDefinition","prefix","$prefix","icon","menuSlots","resolve","resolveMany","paths","validateAnchors","relatedOpenings","ResourceHierarchyProvider","resourceKind","parent","ctx","resource","dockedWorkbenchRegions","z","localizableStringSchema","workbenchExtensionConnectionRecordSchema","object","id","string","localId","extensionId","label","authType","enum","supportsCheck","boolean","extensionConnectionRecordSchema","connectionId","baseUrl","configured","lastCheck","ok","status","number","int","nullable","error","checkedAt","updatedAt","configureExtensionConnectionSchema","url","secret","optional","listExtensionConnectionsResponseSchema","connections","array","ExtensionConnectionRecord","infer","ConfigureExtensionConnectionInput","ListExtensionConnectionsResponse","isNavigationHref","href","protocol","URL","FileSourcePosition","isFileSourcePosition","value","Array","isArray","position","positive","number","Number","isSafeInteger","line","key","const","undefined","endColumn","endLine","column","isFileSourcePosition","PageParamDefinition","PageParams","PageParamValue","PageParamDefinitions","Readonly","Record","reserved","Set","invalid","name","Error","equal","left","right","JSON","stringify","isPageParamValue","definition","value","type","Array","isArray","every","item","values","includes","Number","isFinite","validatePageParamDefinitions","definitions","Object","keys","length","entries","test","has","default","undefined","validateNames","hasOwn","normalizePageParams","strict","result","freeze","params","pageParamsQuery","toString","resolvePageParams","query","URLSearchParams","append","String","parsePageParams","items","getAll","raw","z","validatePageParamDefinitions","pageParamValueSchema","union","string","number","boolean","array","pageParamDefinitionsSchema","record","discriminatedUnion","object","type","literal","default","optional","values","readonly","strict","superRefine","value","ctx","error","addIssue","code","message","String","z","serializableJsonObjectSchema","extensionResourceRefSchema","object","shorthand","string","optional","type","id","projectId","label","icon","extensionId","metadata","z","serializableJsonObjectSchema","contributionRefSchema","kind","Kind","object","extensionId","string","literal","id","pageRefSchema","placementRefSchema","modeRefSchema","viewRefSchema","resourceKindRefSchema","pageSlotRefSchema","page","panelRefSchema","union","commandTargetSchema","command","params","optional","contributionRefSchema","pageRefSchema","modeRefSchema","viewRefSchema","resourceKindRefSchema","z","isNavigationHref","isFileSourcePosition","FileSourcePosition","PageParams","pageParamValueSchema","extensionResourceRefSchema","commandTargetSchema","pageRefSchema","panelRefSchema","sourcePositionSchema","object","line","number","int","positive","column","optional","endLine","endColumn","refine","sectionSchema","anchors","array","id","string","heading","occurrence","nonnegative","MetadataPageTarget","kind","page","infer","resource","open","section","position","params","parent","pageTargetSchema","ZodType","lazy","literal","enum","record","value","meta","navigationOperationSchema","union","panel","navigationTargetSchema","target","href","targets","min","isFileSourcePosition","pageRefSchema","z","CommandOutcome","JsonValue","NavigationTarget","serializableJsonObjectSchema","navigationTargetSchema","notice","object","type","enum","title","string","optional","message","metadata","diagnostic","code","severity","extensionId","commandId","createCommandOutcomeSchema","jsonValue","ZodType","error","name","stack","cause","annotations","notices","array","diagnostics","failure","ok","literal","reason","data","navigation","outcome","discriminatedUnion","status","value","unknown","navigationRequests","transform","validatedCommandOutcomeSchema","json","z","JsonValue","NavigationTarget","Struct","createCommandOutcomeSchema","validatedCommandOutcomeSchema","commandSourceSchema","extensionSlotKindSchema","jsonObjectSchema","navigationTargetSchema","pageParamValueSchema","extensionResourceRefSchema","workbenchAttachmentTargetSchema","extensionSlotInvocationSchema","object","id","string","kind","context","extensionAttachmentInvocationSchema","target","mode","optional","projectId","resource","extensionRendererContextSchema","rendererId","pageParams","record","modeId","invocation","placement","enum","commandExecuteRequestSchema","min","workspaceId","params","attachment","slot","source","metadata","commandExecuteBodySchema","dispatchExtensionEventBodySchema","eventId","payload","strict","responseNavigationTargetSchema","ZodType","commandOutcomeSchema","ok","boolean","status","value","unknown","navigationRequests","array","code","reason","data","error","name","message","stack","notices","type","title","diagnostics","severity","extensionId","commandId","responseFields","eventIds","commandExecuteResponseSchema","outcome","createCommandExecutionResultSchema","jsonValue","commandExecutionResultSchema","json","CommandExecuteRequest","infer","CommandExecuteBody","CommandExecuteResponse","CommandExecutionResult","ExtensionRendererContext","DispatchExtensionEventInput","z","ControlParam","ControlsQueryResult","extensionResourceRefSchema","base","id","string","name","description","optional","readOnly","boolean","numeric","min","number","max","step","vector","strictObject","x","y","range","tuple","harness","harnessId","model","params","record","union","selectionValue","array","selectionOption","icon","color","disabled","selection","placeholder","searchable","searchPlaceholder","emptyText","image","src","alt","primitive","null","readOnlyContent","extend","type","literal","images","controlValueSchema","controlValuesSchema","controlParamSchema","discriminatedUnion","defaultValue","singleLine","allowCustomValues","options","multiSelect","clearable","group","value","href","ref","copyText","editable","unit","markerCount","variant","enum","indicatorColor","coordinateMode","xLabel","yLabel","ZodType","controlGroupSchema","title","collapsible","defaultCollapsed","controlsQueryResultSchema","groups","values","z","localizableStringSchema","extensionRendererRecordBaseSchema","object","id","string","extensionId","title","icon","optional","resourceKind","refreshEventIds","array","min","emptyTitle","emptyDescription","extensionTreeRendererRecordSchema","extend","searchable","boolean","searchPlaceholder","headerHandlerId","bodyHandlerId","childrenHandlerId","moveHandlerId","footerHandlerId","defaultExpandedSectionIds","defaultExpandedNodeIds","extensionFileRendererRecordSchema","loadHandlerId","saveHandlerId","ExtensionTreeRendererRecord","infer","ExtensionFileRendererRecord","WorkbenchExtensionFileRendererRecord","WorkbenchExtensionTreeRendererRecord","z","controlValuesSchema","extensionRendererRecordBaseSchema","extensionControlsRendererRecordSchema","extend","queryHandlerId","string","valueChangeHandlerId","optional","applyHandlerId","resetHandlerId","defaultValues","ExtensionControlsRendererRecord","infer","WorkbenchExtensionControlsRendererRecord","ViewFilterCondition","ViewFilterRule","attributeId","condition","value","ViewFilterGroup","conjunction","rules","groups","ViewSortDirection","ViewSort","direction","ViewFieldKind","optionConditions","VIEW_FILTER_CONDITIONS","Record","boolean","string","number","date","enum","status","user","z","VIEW_FILTER_CONDITIONS","ViewFieldKind","ViewFilterCondition","ViewFilterGroup","ViewFilterRule","ViewSort","EMPTY_VIEW_FILTER","conjunction","rules","VIEW_DAY_PATTERN","conditionIds","Set","Object","values","flat","viewFilterConditionSchema","enum","viewFilterRuleSchema","object","attributeId","string","min","condition","value","union","boolean","number","array","optional","advancedFilterGroupSchema","strictObject","viewFilterGroupSchema","extend","groups","refine","filter","length","message","viewSortSchema","direction","viewSortsSchema","max","viewFilterValueKind","kind","const","valueNeeds","none","day","text","options","valueFits","ReturnType","undefined","Number","isFinite","test","Array","isArray","ViewRuleField","id","filterable","sortable","canSortViewField","field","Pick","ruleProblem","rule","fields","find","map","join","conditions","legacyList","includes","valueKind","unknown","some","option","findViewFilterProblem","flatMap","group","problem","findViewSortsProblem","sorts","sort","z","extensionParamObjectSchema","jsonObjectSchema","localizableStringSchema","viewToolbarActionSchema","object","id","string","label","icon","optional","presentation","enum","params","input","submitLabel","when","disabled","boolean","viewToolbarActionRecordSchema","extend","commandId","z","viewFilterGroupSchema","viewSortsSchema","localizableStringSchema","extensionRendererRecordBaseSchema","viewToolbarActionRecordSchema","themeColorSchema","object","light","string","dark","foreground","optional","columnStatSchema","discriminatedUnion","type","literal","bins","number","int","positive","limit","columnRendererSchema","stops","array","value","color","categories","union","boolean","null","dataTableRendererColumnSchema","id","label","enum","groupable","filterable","description","icon","hidden","stat","renderer","dataTableRendererSettingsSchema","grouping","rowNumbers","wrapRows","showStats","hiddenColumns","columnOrder","dataTableRendererSavedViewSchema","title","settings","partial","filter","sorts","rowActionSchema","destructive","commandId","selectionActionSchema","extensionDataTableRendererRecordSchema","extend","toolbarActions","columns","queryHandlerId","selectionMode","selectionActions","rowActions","rowActivationHandlerId","initialPageSize","pageSizeOptions","defaultSettings","defaultFilter","defaultSorts","defaultViews","defaultActiveViewId","ExtensionDataTableRendererRecord","infer","WorkbenchExtensionDataTableRendererRecord","z","viewFilterGroupSchema","viewSortsSchema","extensionParamObjectSchema","localizableStringSchema","extensionRendererRecordBaseSchema","viewToolbarActionRecordSchema","kanbanRendererEnumOptionSchema","object","value","string","label","color","optional","icon","nullable","kanbanRendererAttributeTypeSchema","discriminatedUnion","kind","literal","options","array","legacyValues","record","boolean","kanbanRendererAttributeDisplaySchema","union","itemsAttributeId","passthrough","refine","display","kanbanRendererAttributeSchema","id","type","filterable","groupable","sortable","displayable","editable","kanbanViewSettingsSchema","viewMode","enum","columnGrouping","rowGrouping","displayProperties","kanbanRendererSavedViewSchema","title","settings","filter","sorts","extensionKanbanRendererCreateRowSchema","commandId","submitLabel","columnParam","params","attributesParam","attachments","resourceParam","fileParam","labels","cancel","properties","submitError","removeFile","extensionKanbanRendererRowActionSchema","destructive","extensionKanbanRendererRecordSchema","extend","toolbarActions","extensionInstanceId","attributes","queryHandlerId","attributeChangeHandlerId","moveHandlerId","schemaRefreshEventIds","columnActionHandlerId","createRow","rowActions","rowActivationHandlerId","defaultSettings","partial","defaultFilter","defaultSorts","defaultViews","defaultActiveViewId","hideToolbar","extensionCommandPaletteResourceRecordSchema","extensionId","resourceKind","refreshEventIds","min","ExtensionKanbanRendererRecord","infer","ExtensionCommandPaletteResourceRecord","WorkbenchExtensionKanbanRendererRecord","WorkbenchExtensionCommandPaletteResourceRecord","z","extensionWhenExpressionSchema","navigationTargetSchema","parsedKeybindingChordSchema","object","key","string","ctrl","boolean","shift","alt","meta","modifiers","array","extensionKeybindingRecordSchema","id","extensionId","action","canonicalChord","parsed","platformOverrides","mac","optional","linux","win","when","ExtensionKeybindingRecord","infer","z","workbenchPlacementPresentationSchema","object","mountStrategy","enum","optional","hiddenByDefault","boolean","headerBorderBottom","tab","queryHandlerId","string","refreshEventIds","array","WorkbenchPlacementPresentationRecord","infer","placementPresenceSchema","regionSizeSchema","defaultPx","number","minPx","maxPx","regionSettingsSchema","showHeader","size","collapsible","alwaysShowTabs","z","navigationTargetSchema","placementPresenceSchema","resourceKindRefSchema","viewRefSchema","resourceConstraintSchema","object","kinds","array","min","strict","resourceBindingSchema","extend","view","cardinality","enum","add","optional","placementItemSchema","discriminatedUnion","kind","literal","presence","binding","resourceKindRefSchema","viewRefSchema","z","localizableStringSchema","pageParamDefinitionsSchema","workbenchPlacementPresentationSchema","placementItemSchema","resourceConstraintSchema","modeRefSchema","pageRefSchema","viewRefSchema","pageSlotRefSchema","panelRefSchema","placementRefSchema","mainSchema","discriminatedUnion","extend","kind","literal","view","cardinality","enum","strict","object","empty","slotSchema","id","string","region","order","number","optional","item","openOn","workbenchExtensionPageRecordSchema","localId","extensionId","title","icon","path","params","document","metadataKey","refine","key","trim","length","mode","parent","resource","main","slots","array","viewRefSchema","modeRefSchema","pageRefSchema","z","extensionSettingScopeSchema","extensionSettingSourceSchema","extensionSettingValueTypeSchema","extensionWebviewContributionSchema","localizableStringSchema","workbenchExtensionWebviewSchema","workbenchSettingsScopeSchema","workbenchSettingsTargetSchema","extensionSettingsPanelRecordSchema","object","id","string","extensionId","extensionInstanceId","optional","installedExtensionId","installName","slotId","target","scope","title","icon","section","webview","extensionSettingOptionSourceSchema","commandId","valueField","labelField","params","record","unknown","extensionSettingDefinitionRecordSchema","key","type","default","enum","array","options","description","extensionSettingValueRecordSchema","extend","value","source","listExtensionSettingsResponseSchema","settings","updateExtensionSettingRequestSchema","workbenchExtensionSettingsPanelRecordSchema","extensionSettingsSectionRecordSchema","order","number","ExtensionSettingsPanelRecord","infer","ExtensionSettingDefinitionRecord","ExtensionSettingValueRecord","ListExtensionSettingsResponse","UpdateExtensionSettingRequest","WorkbenchExtensionSettingsPanelRecord","ExtensionSettingsSectionRecord","workbenchExtensionSettingsPanelRecordSchema","z","dockedWorkbenchRegions","extensionPanelRegions","extensionCommandPaletteContributionSchema","extensionCommandRecordSchema","extensionMenuContributionSchema","workbenchExtensionAutomationRecordSchema","extensionDiagnosticSchema","extensionRecordSchema","jsonObjectSchema","localizableStringSchema","workbenchExtensionWebviewSchema","workbenchExtensionConnectionRecordSchema","extensionControlsRendererRecordSchema","extensionDataTableRendererRecordSchema","extensionCommandPaletteResourceRecordSchema","extensionKanbanRendererRecordSchema","extensionKeybindingRecordSchema","navigationTargetSchema","workbenchExtensionPageRecordSchema","regionSettingsSchema","workbenchPlacementPresentationSchema","extensionFileRendererRecordSchema","extensionTreeRendererRecordSchema","placementItemSchema","extensionSettingDefinitionRecordSchema","extensionSettingsSectionRecordSchema","viewToolbarActionSchema","contributionRefSchema","kind","Kind","object","extensionId","string","literal","id","commandRefSchema","modeRefSchema","pageRefSchema","resourceKindRefSchema","settingsSectionRefSchema","viewRefSchema","normalizedWhenSchema","mode","union","array","optional","source","enum","view","resourceType","metadata","rendererBaseOmissions","title","icon","const","commandActionSchema","label","destructive","boolean","command","kanbanCreateRowSchema","submitLabel","columnParam","params","record","unknown","attributesParam","attachments","resourceParam","fileParam","labels","cancel","properties","submitError","removeFile","webviewBodySchema","webview","treeBodySchema","omit","extend","fileBodySchema","controlsBodySchema","kanbanBodySchema","createRow","rowActions","toolbarActions","dataTableBodySchema","selectionActions","workbenchExtensionViewBodySchema","discriminatedUnion","workbenchExtensionViewRecordSchema","localId","body","workbenchExtensionModeRecordSchema","regions","floatingPanels","regionSettings","partialRecord","defaultTheme","chrome","workbenchExtensionPlacementRecordSchema","item","region","order","number","movableTo","workbenchExtensionViewMenuRecordSchema","owner","side","group","placement","hostTreeHeader","hostTreeFooter","workbenchExtensionNavigationItemRecordSchema","slot","when","action","workbenchExtensionNavigationTreeRecordSchema","resourceScope","workbenchExtensionResourceKindRecordSchema","resolveCommand","resolveManyCommand","relatedOpeningsCommand","paths","prefix","menuSlots","access","workbenchExtensionSettingsPanelRecordSchema","section","workbenchExtensionStatusBarItemRecordSchema","workbenchExtensionMetadataSchema","extensions","commands","menuContributions","commandPaletteContributions","modes","pages","views","viewMenus","placements","resourceKinds","resourceHierarchyProviders","resourceKind","navigationItems","navigationTrees","statusBarItems","activityItems","settingsSections","settingsPanels","commandPaletteResources","keybindings","settingsDefinitions","automations","connections","harnesses","skills","templates","templateTypes","description","list","read","save","delete","themes","diagnostics","WorkbenchExtensionMetadata","infer","WorkbenchExtensionViewRecord","WorkbenchExtensionViewBody","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","activityItems","settingsSections","settingsPanels","commandPaletteResources","keybindings","settingsDefinitions","diagnostics","extensionsCheckResponseSchema","extend","extensionsRoot","extensionsRootExists","boolean","errorCount","number","int","nonnegative","warningCount","middlewares","array","hooks","schedules","artifactMounts","themes","fileIconThemes","templates","skills","hostCompatibility","listExtensionCommandsResponseSchema","shape","translations","optional","listExtensionAppearanceResponseSchema","ExtensionsCheckResponse","infer","ListExtensionCommandsResponse","ListExtensionAppearanceResponse","Localizable","ViewFilterGroup","ViewSort","CommandRef","RendererCallback","JsonValue","Struct","RendererContributionBase","RendererContext","ResourceRef","ViewToolbarAction","DataTableRendererResourceRef","DataTableRendererSettings","grouping","rowNumbers","wrapRows","showStats","hiddenColumns","columnOrder","DEFAULT_DATA_TABLE_SETTINGS","DataTableRendererSavedView","id","title","settings","Partial","filter","sorts","DataTableRendererQueryParams","renderer","DataTableRendererThemeColor","light","dark","foreground","DataTableRendererColumnStat","type","bins","limit","DataTableRendererColumnRenderer","stops","Array","value","color","categories","DataTableRendererColumn","label","groupable","filterable","description","icon","hidden","stat","DataTableRendererRow","values","Record","resource","DataTableRendererQueryResult","rows","columns","DataTableRendererRowAction","destructive","command","TParams","DataTableRendererSelectionAction","DataTableRendererRowActivationHandler","row","DataTableRendererContribution","toolbarActions","query","selectionMode","selectionActions","rowActions","onRowActivate","initialPageSize","pageSizeOptions","defaultSettings","defaultFilter","defaultSorts","defaultViews","defaultActiveViewId","Localizable","DataTableRendererSettings","KanbanRendererViewSettings","ViewFilterGroup","ViewSort","DEFAULT_DATA_TABLE_SETTINGS","EMPTY_VIEW_FILTER","KanbanViewSettings","DEFAULT_KANBAN_VIEW_SETTINGS","viewMode","columnGrouping","rowGrouping","displayProperties","DeclaredView","id","title","settings","Partial","TSettings","filter","sorts","DeclaredViews","defaultSettings","defaultFilter","defaultSorts","defaultViews","builtInViews","base","record","length","views","builtIn","map","view","kanbanBuiltInViews","attributes","type","kind","dataTableBuiltInViews","z","jsonObjectSchema","enableInstalledExtensionRequestSchema","object","displayName","string","extensionId","manifest","name","sourceHash","nullable","optional","sourceKind","enum","sourcePath","sourceRef","version","enableInstalledExtensionResponseSchema","enabled","literal","installName","installedExtensionId","instanceId","projectId","projectExtensionInstanceSchema","id","description","scope","status","lastLoadedAt","lastError","boolean","config","record","unknown","canUpgrade","updateAvailable","marketplaceExtensionSchema","installed","origin","kind","url","path","ref","publisher","listProjectExtensionsResponseSchema","extensions","array","marketplace","setProjectExtensionEnabledRequestSchema","setExtensionAutomationEnabledRequestSchema","upgradeProjectExtensionResponseSchema","changed","extension","installMarketplaceExtensionResponseSchema","addLocalExtensionFolderRequestSchema","min","files","preprocess","value","Array","isArray","instanceof","File","meta","type","format","addLocalExtensionFolderResponseSchema","setupProjectExtensionResponseSchema","installedSkills","skillKey","installedAgents","EnableInstalledExtensionRequest","infer","EnableInstalledExtensionResponse","ProjectExtensionInstance","MarketplaceExtension","ListProjectExtensionsResponse","SetProjectExtensionEnabledRequest","SetExtensionAutomationEnabledRequest","UpgradeProjectExtensionResponse","InstallMarketplaceExtensionResponse","AddLocalExtensionFolderResponse","SetupProjectExtensionResponse","z","extensionsCheckResponseSchema","projectExtensionInstanceSchema","installNameSchema","string","min","refine","name","test","trim","length","installExtensionRequestSchema","object","source","discriminatedUnion","kind","literal","ref","optional","strict","path","development","boolean","installName","force","skipInstall","formBoolean","enum","transform","value","uploadExtensionRequestSchema","folderName","files","preprocess","Array","isArray","array","instanceof","File","meta","type","format","installedExtensionSourceSchema","check","manifest","record","unknown","metadata","id","displayName","version","description","enginesPstdio","sourceHash","targetPath","installExtensionResponseSchema","extension","extensionDiagnosticsResponseSchema","roots","scope","InstallExtensionRequest","infer","UploadExtensionRequest","InstallExtensionResponse","InstalledExtensionSource","ExtensionDiagnosticsResponse","z","extensionPanelRegions","extensionResourceRefSchema","relatedResourceOpeningSchema","object","resource","autoOpen","boolean","optional","region","enum","open","z","extensionResourceRefSchema","jsonObjectSchema","automationRunStatusSchema","enum","issueAutomationTokenInputSchema","object","name","string","trim","min","max","projectId","principalId","uuid","optional","commandScopes","array","expiresInSeconds","number","int","positive","strict","automationTokenRecordSchema","id","tokenPrefix","expiresAt","lastUsedAt","nullable","revokedAt","createdAt","issueAutomationTokenResponseSchema","extend","token","listAutomationTokensResponseSchema","tokens","createAutomationRunInputSchema","commandId","input","workspaceId","params","resource","metadata","automationRunErrorSchema","code","message","retryable","boolean","automationRunSchema","status","startedAt","finishedAt","result","unknown","error","automationRunEventSchema","cursor","nonnegative","runId","type","payload","listAutomationRunEventsResponseSchema","events","AutomationRunStatus","infer","IssueAutomationTokenInput","AutomationTokenRecord","IssueAutomationTokenResponse","ListAutomationTokensResponse","CreateAutomationRunInput","AutomationRunError","AutomationRun","AutomationRunEvent","ListAutomationRunEventsResponse","z","viewFilterConditionSchema","viewFilterGroupSchema","viewSortsSchema","dataTableRendererSettingsSchema","kanbanViewSettingsSchema","boardFieldSchema","object","id","string","label","kind","enum","conditions","array","filterable","boolean","groupable","sortable","displayable","legacyValues","record","optional","options","value","boardSummarySchema","title","extensionId","nullable","fields","boardViewSettingsSchema","union","boardViewSchema","boardId","settings","filter","sorts","builtIn","boardViewsSchema","views","defaultViewId","boardViewUpdateSchema","trim","min","partial","strict","boardViewCreateSchema","extend","copyFrom","BoardSummary","infer","BoardField","BoardView","BoardViews","BoardViewSettings","BoardViewCreate","BoardViewUpdate","boardDefaultSyncRow","project_id","extension_instance_id","board_id","row","T","JSON","stringify","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","projectDetailsSchema","defaultAgentId","defaultAgentModel","startupScript","createdAt","updatedAt","deletedAt","extensionWarnings","ProjectDetails","initialWorkspaceRequestSchema","providerId","projectCreateRequestSchema","omit","extend","initialWorkspace","projectUpdateRequestSchema","strict","InitialWorkspaceRequest","ProjectCreateRequest","input","ProjectUpdateRequest","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","delete","workspaceProviderErrorSchema","code","string","message","retryable","occurred_at","extensionWorkspaceFields","projectId","isDefault","shorthand","rootPath","nullable","providerId","providerState","executionKind","displayPath","capabilities","setupError","createdAt","updatedAt","workspaceAnchorSchema","extend","role","optional","workspaceSchema","id","project_id","name","branch","root_path","provider_id","provider_params_json","provider_ref_json","provider_state","execution_kind","provider_operation_id","provider_operation_kind","describe","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","extensionWorkspaceCreateInputSchema","shorthandBase","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","workspaceEntryMoveInputSchema","destinationPath","WorkspaceEntryMoveInput","environmentIdentitySchema","z","initialWorkspaceSchema","workspaceSchema","EnvironmentIdentity","EnvironmentTarget","environmentTargetSchema","bindEnvironmentInputSchema","extend","name","string","trim","min","initial_workspace","environmentBindingSchema","workbenchId","workspace","BindEnvironmentInput","infer","EnvironmentBinding","numericIdentifier","caretTerm","RegExp","parseExtensionApiDeclaration","declaration","minimums","split","map","term","exec","trim","every","minimum","undefined","supportsExtensionApiVersion","hostVersion","Bun","semver","satisfies","join","dockedWorkbenchRegions","ResourceKindDefinition","ContributionKind","hostRef","kind","Kind","id","extensionId","workbenchModes","project","sessions","settings","workbenchModeDefinitions","ref","regions","const","hostResourceKind","label","menuSlots","headerMenuSlots","placement","access","workbenchResourceKindDefinitions","session","workspace","workbenchResourceKinds","workbenchPages","start","workspaces","workbenchPageDefinitions","mode","path","primary","cardinality","resourceKinds","workbenchPanels","projectSession","workbenchPanelDefinitions","workbenchSlots","projectSettings","extensionSettings","statusBarLeading","statusBarTrailing","dockedWorkbenchRegions","workbenchPages","CommandRef","EventRef","Struct","ExternalRefInput","extensionId","id","ExtensionOwner","publisher","name","CommandRefFactory","input","TParams","TResult","forExtension","owner","createCommandRef","kind","commandRef","Object","assign","eventRef","TPayload","Struct","SlotOptions","SlotRef","UiSlotKind","defineSlot","id","options","TKind","TContext","kind","label","description","metadata","workbenchResourceKinds","eventRef","defineSlot","Struct","ResourceAnchor","ExtensionWorkspace","hostEventRef","id","TPayload","extensionId","resourceMenuSlotRef","resourceKind","kind","WorkspaceType","WorkspaceProvisionPayload","projectId","workspaceId","workspace","workspaceDir","projectDir","providerId","SessionLifecyclePayload","sessionId","sessionStatus","originalSessionId","branch","anchors","WorktreeRemovedPayload","repoPath","worktreePath","CommitPayload","commitSha","RebasePayload","MergePayload","ConflictPayload","operation","projectSlots","sidenav","headerPrimary","project","headerOverflow","settingsPanels","sessionSlots","session","workspaceSlots","projectEvents","opened","viewDataEvents","boardViewsChanged","resourceAnchorsChanged","sessionsChanged","workspacesChanged","repositoriesChanged","sessionEvents","started","resumed","awaitingInput","succeeded","failed","completed","workspaceEvents","created","provision","ready","deleted","worktreeEvents","removed","gitEvents","committed","rebased","merged","conflicted","FileRendererSectionTarget","FileSourcePosition","PageDocumentDeclaration","PageLocation","PageParamDefinition","PageParams","PageRef","ResourceRef","isFileSourcePosition","normalizePageParams","pageParamsQuery","parsePageParams","defaultPageResourceCodec","PageUrlDefinition","id","ref","path","document","params","Readonly","Record","PageResourceCodec","normalize","resource","toUri","fromUri","uri","hostExtensionId","pageRefKey","extensionId","pageForRef","pages","find","page","encodePath","split","filter","Boolean","map","segment","encodeURIComponent","join","routePath","projectId","project","Error","normalizedSection","value","Array","isArray","anchors","undefined","some","anchor","heading","occurrence","Number","isInteger","serializeSection","section","normalized","JSON","stringify","parseSection","parse","serializeWorkbenchPageUrl","input","location","resources","query","URLSearchParams","set","metadata","metadataKey","position","key","const","String","name","append","encoded","toString","decodedSegments","pathname","decodeURIComponent","isWorkbenchProjectUrl","urlValue","url","URL","segments","pageForRoute","parseResource","parseSourcePosition","coordinates","Object","fromEntries","searchParams","has","raw","get","test","NaN","keys","length","ParsedWorkbenchPageUrl","pageId","pageForUrl","route","slice","extensionRoute","parseWorkbenchPageUrl","getAll","resourceValue","sectionValue","serializePageUrl","parsePageUrl","startsWith","pageForRef","isFileSourcePosition","TerminalSessionOperation","TerminalSessionResult","CreateNotificationInput","Notification","NotificationStatus","CommandNotice","CommandOutcome","ExtensionBlobRef","JsonObject","JsonValue","NavigationTarget","PageLocation","PageParamValue","ResourceRef","WEBVIEW_HOST_CAPABILITY_VERSION","WEBVIEW_DECLARABLE_CAPABILITIES","const","WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES","ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES","WEBVIEW_HOST_CAPABILITIES","filter","capability","WebviewHostCapability","WebviewDeclarableCapability","WebviewScopedDeclarableCapability","VersionedWebviewCapabilityDeclaration","WebviewCapabilityDeclaration","WebviewCommandsExecuteParams","commandId","params","workspaceId","resource","metadata","WebviewCommandsStreamParams","operation","streamId","bytes","WebviewCommandStreamEvent","type","data","outcome","WebviewNavigationOpenParams","target","WebviewNotificationShowParams","level","title","message","WebviewNotificationActionParams","Omit","WebviewNotificationResolveParams","id","dedupeKey","status","Extract","WebviewNotificationDismissParams","Pick","WebviewPreferencesGetParams","name","scope","scopeId","WebviewPreferencesSetParams","value","Record","WebviewPageParamsUpdateParams","Readonly","WebviewExtensionSettingKeyParams","key","WebviewExtensionSettingSetParams","WebviewFileScope","WebviewFilesUploadParams","Uint8Array","ArrayBuffer","mimeType","WebviewFilesListParams","WebviewFilesDeleteParams","WebviewArtifactsReadParams","op","mount","prefix","path","WebviewArtifactFile","size","mediaType","WebviewKeyboardEventParams","code","ctrlKey","metaKey","altKey","shiftKey","repeat","WebviewHostCapabilityParams","WebviewHostCapabilityResults","accepted","location","resolved","notifications","files","WebviewHostCapabilityResult","Capability","Params","Exclude","z","fileRecordSchema","object","id","string","project_id","file_name","file_kind","storage_path","mime_type","nullable","size_bytes","number","hash","created_at","updated_at","FileRecord","infer","z","HarnessApprovalChannel","HarnessEventSink","HarnessParams","HarnessQuestionChannel","HarnessSession","HarnessWorkspaceContext","harnessCommandSchema","object","name","string","description","argumentHelp","optional","composer","label","modeId","reservedArguments","array","disabledReason","harnessModeActionSchema","id","icon","argument","value","harnessModeSchema","state","indicator","tone","enum","tagText","closeActionId","confirmation","title","actionId","cancelLabel","model","actions","harnessCommandStateSchema","commands","modes","slashCommands","boolean","harnessOperationSchema","discriminatedUnion","kind","literal","text","min","strict","HarnessCommandState","infer","HarnessOperation","HarnessCommandContext","sessionId","agentSessionId","cwd","workspace","params","HarnessCommandDiscoveryContext","Omit","draftHarnessCommandInputSchema","project_id","agent","workspace_id","record","union","DraftHarnessCommandInput","harnessOperationResponseSchema","status","message","HarnessOperationResponse","HarnessOperationResult","session","PreparedHarnessOperation","execution","invoke","input","events","approvals","questions","signal","AbortSignal","Promise","z","pageQuerySchema","object","cursor","string","optional","limit","coerce","number","PageQuery","infer","Page","items","T","nextCursor","z","harnessParamValueSchema","union","string","boolean","harnessParamsInputSchema","record","sessionAttachmentRefSchema","object","file_id","min","z","harnessParamsInputSchema","sessionAttachmentRefSchema","queuedFollowUpSchema","object","queuePosition","number","int","positive","revision","string","min","prompt","steeringUnavailableReason","nullable","optional","steeringDelivery","id","runStartedAt","model","params","attachments","array","updateQueuedFollowUpInputSchema","trim","expectedRevision","combineQueuedFollowUpsInputSchema","sourcePosition","sourceRevision","targetRevision","queuedFollowUpUpdateResponseSchema","ok","literal","request","pendingQueuedFollowUpsResponseSchema","requests","activeRunStartedAt","steeringAvailable","boolean","QueuedFollowUpRequest","infer","UpdateQueuedFollowUpInput","CombineQueuedFollowUpsInput","QueuedFollowUpUpdateResponse","PendingQueuedFollowUpsResponse","steerQueuedFollowUpInputSchema","expectedRunStartedAt","queuedSteeringResultSchema","discriminatedUnion","status","deliveryId","reason","enum","message","SteerQueuedFollowUpInput","QueuedSteeringResult","z","extensionResourceRefSchema","resourceLinkRefSchema","extend","type","string","min","id","projectId","optional","extensionId","resourceAnchorSchema","role","enum","addResourceAnchorsSchema","object","resource","anchors","array","max","removeResourceAnchorsSchema","refs","resourceAnchorQuerySchema","direction","cursor","limit","number","int","resourceAnchorPageSchema","items","source","target","nextCursor","resourceAnchorQueryPageSchema","nullable","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","SessionExit","extensionResourceRefSchema","harnessOperationResponseSchema","harnessOperationSchema","pendingQueuedFollowUpsResponseSchema","sessionMessageSchema","sessionStatusSchema","enum","harnessParamsInputSchema","harnessParamValueSchema","sessionAttachmentRefSchema","sessionUsageSchema","object","input_tokens","number","output_tokens","cache_read_tokens","cache_write_tokens","sessionExitSchema","ZodType","cause","startedAt","string","nullable","endedAt","extensionSessionSchema","id","title","status","archived","boolean","agent","cwd","lastSelectedModel","workspaceId","originalSessionId","createdAt","updatedAt","lastRequestStarted","lastRequestEnded","lastExit","optional","usage","inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","sessionSchema","project_id","last_request_started","last_request_ended","last_selected_model","agent_session_id","session_file_id","original_session_id","params_json","usage_json","workspace_id","anchors_json","array","created_at","updated_at","sessionDetailsSchema","extend","projectId","agentSessionId","sessionFileId","params","SessionDetails","infer","createSessionResponseSchema","shape","operation_result","CreateSessionResponse","sessionCreateResponseSchema","operationResult","SessionCreateResponse","sessionAttachmentSchema","file_id","name","mime_type","size_bytes","hash","url","createSessionInputSchema","min","prompt","operation","anchors","attachments","model","questionResponseSchema","answers","callId","followUpInputSchema","question_response","summary_from_session_id","summary_format","default","summary_role","approvalInputSchema","decision","followUpDecisionSchema","union","literal","queue_position","int","followUpResponseSchema","follow_up","sessionQueuedMessagesResponseSchema","messages","queue","SessionQueuedMessagesResponse","sessionConversationSourcesSchema","checkpoint","native","checkpointError","nativeError","SessionConversationSources","sessionConversationResponseSchema","session","resolveSessionIdInputSchema","resolveSessionIdResponseSchema","session_id","listSessionActivityInputSchema","listSessionActivityResponseSchema","SessionStatus","Session","ResolveSessionIdInput","ResolveSessionIdResponse","CreateSessionInput","FollowUpInput","HarnessParamsInput","SessionAttachment","SessionAttachmentRef","ApprovalInput","SessionConversationResponse","ListSessionActivityInput","ListSessionActivityResponse","FollowUpDecision","FollowUpResponse","sessionCreateRequestSchema","omit","fileId","SessionCreateRequest","sessionAttachmentDetailsSchema","mimeType","sizeBytes","SessionAttachmentDetails","sessionFollowUpRequestSchema","questionResponse","summaryFromSessionId","summaryFormat","summaryRole","SessionFollowUpRequest","sessionFollowUpDecisionSchema","queuePosition","SessionFollowUpDecision","sessionFollowUpResponseSchema","followUp","SessionFollowUpResponse","z","settingsSchema","object","notifications_enabled","boolean","machine_tokens_enabled","max_concurrent_sessions","number","int","min","nullable","updateSettingsInputSchema","optional","strict","refine","value","Object","keys","length","message","Settings","infer","UpdateSettingsInput","z","packageAssetDescriptorSchema","skillFileSchema","object","path","string","content","encoding","literal","skillSourceKindSchema","enum","skillAgentInstallationSchema","agent_id","agent_name","installed_version","nullable","skillSchema","id","project_id","name","title","description","source_kind","files","array","editable","boolean","extension_instance_id","optional","extension_id","installed_extension_id","install_name","key","source","enabled","created_at","updated_at","deleted_at","skillWithContentSchema","extend","installed_agents","agent_installations","updateSkillInputSchema","min","Skill","infer","SkillAgentInstallation","SkillWithContent","SkillFile","SkillSourceKind","UpdateSkillInput","skillDetailsSchema","omit","projectId","sourceKind","extensionInstanceId","extensionId","installedExtensionId","installName","createdAt","updatedAt","deletedAt","skillAgentInstallationDetailsSchema","agentId","agentName","installedVersion","skillWithContentDetailsSchema","installedAgents","agentInstallations","SkillDetails","SkillWithContentDetails","z","fileDiffSchema","object","filePath","string","change","enum","additions","number","deletions","oldContent","newContent","oldPath","optional","newPath","fileDiffSummarySchema","omit","workspaceDiffResponseSchema","workspace_id","base_ref","head_ref","files","array","totals","file_count","workspaceDiffFilesResponseSchema","extend","WorkspaceDiffFile","infer","WorkspaceDiffFiles","workspaceDiffSummarySchema","WorkspaceDiffSummary","Disposable","dispose","createDisposable","onDispose","disposed","runWorkbenchEffect","owner","effect","Result","error","console","undefined","runWorkbenchEffect","depth","pending","Map","notifyWorkbenchChange","owner","notify","has","set","batchWorkbenchChanges","commit","Result","size","entries","next","value","delete","devtools","NamedSet","createStore","StoreApi","notifyWorkbenchChange","WorkbenchStoreSelector","state","TState","TValue","WorkbenchStoreListener","previousState","WorkbenchStoreSelectorListener","value","previousValue","WorkbenchStore","getState","getInitialState","subscribe","listener","subscribeSelector","selector","options","equalityFn","left","right","fireImmediately","InternalWorkbenchStore","setState","api","CreateWorkbenchStoreInput","name","initialState","defaultEquality","Object","is","createWorkbenchStore","input","owner","_state","previous","nextValue","workbenchRegions","const","WorkbenchRegion","workbenchPanelRegions","WorkbenchPanelRegion","WorkbenchPanelMenuSide","workbenchPanelMenuRegions","main","left","right","secondary","side","Record","WorkbenchPanelMenuRegion","workbenchPanelByMenuRegion","getWorkbenchPanelForMenuRegion","region","WorkbenchTabPosition","WorkbenchWidgetPlacement","planTrayTabs","widgets","preferredWidgetId","previews","filter","widget","tabRetention","preview","find","widgetId","replaced","planTrayPlacement","placement","position","remaining","index","length","before","target","beforeWidgetId","afterWidgetId","found","findIndex","splice","undefined","planTrayDrop","pinned","resolveUniqueWidgetId","widgetIds","ReadonlySet","contributionId","preferredId","has","suffix","buildUpdatedPlacement","createPlacement","WorkbenchLayout","WorkbenchPanelRegion","WorkbenchRegion","WorkbenchRegionState","WorkbenchWidgetPlacement","workbenchPanelRegions","resolveUniqueWidgetId","findPlacement","layout","contributionId","region","Object","values","regions","index","widgets","findIndex","candidate","regionId","id","placement","undefined","findResourcePlacement","resourceKey","findPlacementByWidgetId","widgetId","createUniqueWidgetId","widgetIds","Set","flatMap","map","getActivePlacement","find","activeWidgetId","isLocationPlacement","role","locationWorkspaceKey","setLocationSubPanelSelection","location","key","current","locationSubPanelSelections","next","removeLocationSubPanelSelection","fromEntries","entries","selections","filter","selectedId","getActiveLocationPlacement","locations","activeLocationWidgetId","at","ReplaceRegionWidgetsOptions","clearActiveWidget","replaceRegionWidgets","update","options","some","p","r","removePlacementsForContribution","nextLayout","removed","filtered","length","hasActiveWidget","startsWith","activeResourceKey","closeWidgetInLayout","found","closingEffectiveActive","fallbackSubPanel","ownerResourceKey","nextActivePlacement","nextRegion","visible","includes","closedPlacement","activePlacement","activateInLayout","panelRegion","panel","selected","withSelection","selectRegionActiveWidget","Error","followsRegion","resourceKey","ResourceRef","getActiveLocationPlacement","RegisteredWidgetContribution","WorkbenchLayout","WorkbenchPanelRegion","WorkbenchWidgetPlacement","supportsResource","widget","resource","resourceKinds","length","includes","type","canOpen","getActiveWorkbenchSubPanel","layout","region","options","ignoreOwnerResourceKey","panel","regions","widgets","find","placement","widgetId","activeWidgetId","role","ownerResourceKey","getActiveWorkbenchLocationPanel","matchesLocationEligibility","modeId","location","eligibleLocations","matchesWorkbenchModeEligibility","resourceIds","id","canOpenLocation","viewId","eligibleModeIds","modeIds","undefined","isWorkbenchPanelPlacementVisible","ignoreResourceLocation","matchesWorkbenchPanelMenuOwner","context","locationPanel","subPanel","owner","panelMenuOwner","level","contributionId","activeOwner","ContributionSource","ContributionMetadata","source","ownerId","priority","RegisteredContributionMetadata","defaultContributionOwnerId","normalizeContributionMetadata","metadata","byContributionPriority","left","right","localeCompare","OpenWidgetInput","OpenWorkbenchPanelInput","RegisteredWidgetContribution","WorkbenchPanelContribution","WorkbenchPanelInstance","WorkbenchTabRetention","WorkbenchWidgetPlacement","toOpenWidgetInput","input","defaultTabRetention","strategy","shared","normalized","resource","viewId","undefined","tabRetention","kind","tabPosition","position","replaceActive","replaceWidgetId","instanceId","retention","toPanelInstance","placement","widgetId","panelId","contributionId","placementIdentity","ownerId","source","section","resourceKey","ownerResourceKey","title","pinned","closable","mountStrategy","hiddenByDefault","tab","toPanelContribution","widget","_closable","ownedPanelMenuIds","_ownedPanelMenuIds","panel","Disposable","runWorkbenchEffect","WorkbenchLayout","WorkbenchPanelRegion","WorkbenchRegion","WorkbenchWidgetPlacement","workbenchPanelRegions","WorkbenchModeActivationContext","WorkbenchModeContribution","modePanelRegions","main","secondary","side","const","Record","allModeRegions","Object","values","flat","panelsForMode","mode","panels","getWorkbenchModePanelForRegion","region","keys","find","panel","some","candidate","isWorkbenchModePanelAvailable","includes","placementById","layout","widgetId","undefined","regions","flatMap","widgets","placement","withActivePlacement","candidates","active","activeWidgetId","activeResourceKey","resourceKey","clearRegions","regionIds","length","clearedPanels","Set","filter","regionsNeedClearing","regionId","visible","selectionsNeedClearing","locationSubPanelSelections","selections","has","fromEntries","entries","map","next","activeLocationWidgetId","applyModePanelAvailability","available","unavailableRegions","restoreUnscopedModeLayout","current","saved","defaults","cleared","merged","savedActive","currentActive","disposeReverse","disposables","index","dispose","restoreModeLayout","context","getLayout","restoreLayout","FileRendererSectionTarget","FileSourcePosition","NavigationTargetPage","PageLocation","PageParams","PageRef","ResourceRef","isFileSourcePosition","normalizePageParams","WorkbenchPageContribution","WorkbenchPageResourceCodec","workbenchPageRefKey","ref","extensionId","id","pageForRef","pages","find","page","pageForId","pageId","canonicalSection","section","undefined","anchors","map","anchor","Object","freeze","heading","occurrence","cloneMetadata","metadata","JSON","parse","stringify","NonNullable","canonicalResource","resource","resources","normalized","normalize","type","Error","canonical","projectId","label","icon","canonicalPageRef","kind","const","sectionKey","resourceKey","location","toUri","sharesPageResource","left","right","workbenchPageLocationRouteKey","declaration","document","metadataKey","position","line","column","endLine","endColumn","workbenchPageLocationKey","own","parent","workbenchPageLocationsEqual","a","b","params","canonicalPosition","isFrozen","createLocation","input","key","declaredParent","seen","Set","parentId","normalizeResolvedLocation","locationFields","Pick","candidate","routeKey","has","add","inheritedParent","active","normalizePageTarget","target","open","contextualParent","normalizeWorkbenchPageTarget","normalizeWorkbenchPageLocation","nextSeen","explicitParent","normalizeDirectWorkbenchPageLocation","resourceKey","PlacementIdentity","WorkbenchRegion","workbenchRegions","PlacementDestination","identity","region","ResolvedOwnedPlacement","order","value","Value","ComposeOwnedPlacementsInput","shell","mode","page","closed","ComposedOwnedPlacements","placements","regions","Record","visibleRegions","ReadonlySet","OwnedPlacementUpdate","current","desired","OwnedPlacementReconciliation","destinations","add","retain","update","activate","remove","ReconcileOwnedPlacementsInput","valuesEqual","compareText","left","right","placementOwnerSortKey","kind","placementId","modeId","pageId","slotId","placementIdentityKey","JSON","stringify","instanceKey","comparePlacementIdentity","owner","compareRegionPlacement","assertOwner","placement","label","toUpperCase","slice","Error","collectPlacements","input","seen","Set","candidates","candidate","Number","isFinite","key","has","push","modeIds","map","size","emptyRegions","reduce","composeOwnedPlacements","declared","closedKeys","sort","flatMap","filter","length","indexPlacements","indexed","Map","set","placementShapeEqual","reconcileOwnedPlacements","desiredPlacement","currentPlacement","get","activationKeys","Array","from","ResourceBinding","WorkbenchPageContribution","WorkbenchPageSlot","PAGE_MAIN_SLOT_ID","ResolvedPageSlot","role","isPageSlotClosable","slot","item","kind","presence","binding","cardinality","primarySlot","page","main","undefined","_kind","view","presentation","resource","id","region","pageSlots","slots","map","const","requirePageSlot","slotId","find","candidate","Error","emptyMainSlot","empty","pagePlacementDeclarations","PageLocation","ResourceRef","workbenchPageLocationKey","WorkbenchPageContribution","WorkbenchPageResourceCodec","pageStateOwnerKey","page","resource","resources","id","JSON","stringify","toUri","normalize","document","metadata","metadataKey","staticPageInstanceKey","ownsStaticPageInstance","key","pageId","instanceKey","owner","startsWith","pageStateKey","location","main","kind","position","undefined","removePageStates","states","Readonly","Record","State","Object","fromEntries","entries","filter","Disposable","createWorkbenchStore","WorkbenchStore","ContextKeyValue","ContextKeyStoreState","values","Record","ContextKeyScope","ownerId","set","key","value","get","delete","ContextKeyService","store","createScope","deleteOwner","snapshot","matches","expression","readComparisonValue","replace","matchesTerm","term","trimmed","trim","length","comparison","match","operator","rawValue","actual","expected","String","startsWith","slice","Boolean","matchesContextExpression","split","some","orClause","every","createContextKeyService","name","initialState","globalValues","ownerValues","Map","buildValues","scopedValues","Object","assign","publish","action","setState","getState","_removed","rest","disposed","assertActive","Error","dispose","ResourceRef","resourceKey","createDisposable","createWorkbenchStore","ResourceChange","label","removed","ResourcePreviewChanges","ReadonlyMap","resource","change","resolveResourcePreview","changes","result","intent","values","undefined","createResourcePreview","store","name","initialState","Map","writes","Promise","refreshers","Set","remove","token","getState","delete","setState","resolve","persist","save","T","key","pending","get","catch","then","set","finally","subscribeRefresh","refresh","add","begin","Symbol","rollback","commit","allSettled","map","resourceKey","ResourceRef","WorkbenchViewHierarchyNode","type","viewId","label","icon","WorkbenchHierarchyNode","isWorkbenchViewHierarchyNode","node","ResourceHierarchyProvider","id","priority","canResolve","resource","getParent","ResolvedResourceHierarchyProvider","Required","resourceHierarchyCycleCode","ResourceHierarchyCycle","code","path","repeatedUri","sortHierarchyProviders","providers","sort","left","right","localeCompare","walkResourceHierarchy","notifyCycle","cycle","sorted","visitedKeys","Set","current","provider","find","candidate","parent","parentKey","has","unshift","add","PlacementIdentity","RelatedResourceOpenings","ResourceRef","NavigationTarget","createResourcePreview","resourceKey","ContextKeyValue","byContributionPriority","ContributionMetadata","normalizeContributionMetadata","RegisteredContributionMetadata","createDisposable","Disposable","createWorkbenchStore","WorkbenchStore","isWorkbenchViewHierarchyNode","ResolvedResourceHierarchyProvider","ResourceHierarchyCycle","ResourceHierarchyProvider","sortHierarchyProviders","WorkbenchHierarchyNode","walkResourceHierarchy","WorkbenchViewHierarchyNode","resourceHierarchyCycleCode","workbenchResourceTypeContextKey","workbenchResourceOwnerContextKey","workbenchResourceIdContextKey","workbenchResourceMetadataContextKey","key","workbenchSelectionResourceKeyMetadataKey","isContextPrimitive","value","Exclude","createWorkbenchResourceContextValues","resource","values","Record","type","id","extensionId","Object","entries","metadata","isWorkbenchResourceContextKey","startsWith","scopeWorkbenchResourceContextValues","scoped","createWorkbenchSelectionResourceMetadata","getWorkbenchSelectionResourceKeys","selectionResourceKey","ResourceKindContribution","kind","relatedOpenings","signal","AbortSignal","Promise","label","icon","resolve","subscribe","listener","RegisteredResourceKind","ResourceBrowseEntry","indicator","color","target","searchText","description","group","order","activate","ResourceListContext","primary","ResourceProvider","list","query","context","related","ResourceRegistryStoreState","kinds","providers","hierarchyProviders","ResourceRegistry","preview","ReturnType","removed","onWillRemove","store","registerKind","getKind","listKinds","registerProvider","provider","listProviders","listResources","listRelatedResources","registerHierarchyProvider","listHierarchyProviders","walkHierarchy","onDidDetectHierarchyCycle","cycle","CreateResourceRegistryInput","remove","retained","getPrimary","resolveView","viewId","createResourceRegistry","input","removalListeners","Set","cycleListeners","name","initialState","flatMap","add","delete","snapshot","getState","Error","record","setState","current","_removed","rest","find","candidate","sort","push","priority","path","map","node","view","ContextKeyService","byContributionPriority","ContributionMetadata","normalizeContributionMetadata","RegisteredContributionMetadata","createDisposable","Disposable","createWorkbenchStore","WorkbenchStore","CommandRegistry","NavigationTarget","Keybinding","sourceExtensionId","action","keybinding","KeybindingSequence","when","RegisteredKeybinding","KeybindingRegistryDeps","commands","context","KeybindingRegistryStoreState","keybindings","KeybindingRegistry","store","registerKeybinding","metadata","listKeybindings","listActiveKeybindings","listCommandKeybindings","commandId","getKeybindingSteps","Array","isArray","trim","split","filter","Boolean","normalizeKeybindingSequence","steps","length","createKeybindingRegistry","deps","name","initialState","kind","getCommand","Error","record","snapshot","getState","setState","current","next","candidate","sort","matches","flatMap","WorkbenchRegion","workbenchRegions","AnchorId","AnchorPersistence","AnchorCandidates","AnchorReadId","AnchorSurface","role","anchor","persistence","candidates","ProjectionSurface","reads","navigator","ChromeSurface","TransientSurface","SurfaceDescriptor","projection","chrome","transient","surfaceMap","Record","nav","activity","sidenav","main","secondary","status","overlay","side","getSurface","region","listAnchorRegions","filter","listProjectionRegions","listProjectionsReading","anchorId","surface","includes","resolveAnchorRegion","find","candidate","Error","ResourceRef","getActiveLocationPlacement","getActivePlacement","WorkbenchLayout","WorkbenchRegion","AnchorId","getSurface","listAnchorRegions","resolveAnchorRegion","getAnchorResource","layout","anchorId","active","regions","resource","location","role","undefined","AnchorReconcileAction","region","widgetId","action","ReconcileAnchorsInput","primary","isInScope","reconcileAnchors","actions","surface","persistence","placement","widgets","retained","Boolean","ownerResourceKey","placementIdentity","kind","keep","push","MenuPath","headerLeadingMenuPath","region","headerTrailingMenuPath","workbenchRegionTabLeadingMenuPath","workbenchRegionTabAddMenuPath","workbenchCommandPaletteMenuPath","const","workbenchTopHeaderLeadingMenuPath","workbenchTopHeaderTrailingMenuPath","workbenchBreadcrumbLocationMenuPath","resourceContextMenuPath","resourceKind","ResourceConstraint","ResourceRef","resourceMatchesConstraint","constraint","resource","kinds","some","kind","id","type","extensionId","NavigationTarget","stableValue","value","Array","isArray","map","Object","fromEntries","entries","sort","a","b","localeCompare","key","item","getNavigationTargetKey","action","kind","args","keys","length","_args","target","JSON","stringify","TreeNode","ResourceRef","NavigationTreeContribution","sources","WeakMap","contribution","registryToken","node","resource","setNavigationTreeNodeSource","source","NonNullable","ReturnType","getNavigationTreeNodeSource","set","get","undefined","ResourceRef","resourceKey","resourceMatchesConstraint","WorkbenchPageContribution","WorkbenchPageResourceCodec","pageStateOwnerKey","pageResourceContextKey","page","resource","JSON","stringify","document","metadata","metadataKey","pageResourceInstanceKey","resources","normalized","normalize","toUri","standardResourceIcons","project","workspace","worktree","settings","kanbanRenderer","const","StandardResourceIcon","WorkbenchPanelInstance","placementIdentityKey","rendererReadKey","placement","lane","JSON","stringify","placementIdentity","instanceId","settleReadBatch","tasks","signal","AbortSignal","Promise","T","controller","AbortController","abort","reason","aborted","addEventListener","once","firstError","results","allSettled","map","load","throwIfAborted","error","undefined","result","status","value","removeEventListener","NotificationRegistry","reportUserActionError","workbench","notifications","Pick","label","error","show","level","title","message","Error","String","runUserAction","run","PlacementIdentity","WorkbenchPageRuntimeState","ownsStaticPageInstance","PagePlacementEdit","kind","open","editPagePlacementStates","states","Readonly","Record","identity","Extract","edit","Object","fromEntries","entries","map","key","current","pageId","startsWith","instances","resourceInstances","slotId","remaining","flatMap","instance","instanceKey","openStaticSlotIds","filter","id","activePrimaryInstanceKey","at","dockedWorkbenchRegions","PlacementIdentity","activateInLayout","findPlacementByWidgetId","getActiveLocationPlacement","removeLocationSubPanelSelection","WorkbenchLayout","WorkbenchRegion","WorkbenchWidgetPlacement","workbenchRegions","composeOwnedPlacements","PlacementDestination","placementIdentityKey","ResolvedOwnedPlacement","planTrayTabs","WorkbenchOwnedWidgetPlacement","ReconcileOwnedWidgetLayoutInput","layout","modeLayout","placements","activate","destinations","ApplyOwnedWidgetLayoutReconciliationInput","remove","RenderedOwnedPlacement","identity","region","placement","transferredFromKey","bindsToLocation","value","role","kind","resolveOwnerResourceKey","desired","exact","transfer","ownerResourceKey","indexCurrentOwnedPlacements","indexed","Map","Object","values","regions","widgets","placementIdentity","key","has","Error","set","id","findModePlacementTransfer","input","current","ReturnType","desiredKeys","ReadonlySet","transferredCurrentKeys","undefined","desiredIdentity","entries","find","currentKey","candidate","modeId","placementId","contributionId","viewId","indexCurrentWidgetOwners","owners","widgetId","restoreModeWidgets","saved","ReadonlyMap","order","currentIds","Set","map","widget","restored","filter","positions","index","ordered","sort","a","b","get","length","sharedPositions","shared","sharedIndex","renderDesiredPlacements","rendered","identities","currentWidgetOwners","desiredWidgetIds","destination","shell","mode","page","add","currentOwner","push","reconcileRegions","removedKeys","docked","desiredByKey","flatMap","regionId","pageOwnsPrimaryLocation","some","entry","placedKeys","savedWidgetOrder","replacement","tray","tabRetention","activeWidgetId","selected","opensPreviouslyEmptyRegion","hiddenByDefault","closesEmptyPanel","visible","normalizeRemovedState","activeLocation","activeLocationWidgetId","fallbackLocation","active","fallbackActive","activeResourceKey","resourceKey","bindOwnedSubPanelsToLocation","fromEntries","desiredPlacement","updateOwnedWidgetLayout","size","desiredByIdentity","reconcileOwnedWidgetLayout","keys","applyOwnedWidgetLayoutReconciliation","resourceKey","RegisteredWidgetContribution","WorkbenchLayout","WorkbenchWidgetPlacement","placementIdentityKey","reconcileOwnedPlacements","pagePlacementDeclarations","WorkbenchPageRegistryStoreState","pageResourceContextKey","ownsStaticPageInstance","resourceMatchesConstraint","State","pagePlacementClosed","widget","next","previous","identity","placementIdentity","kind","contains","key","state","pageId","instanceKey","openStaticSlotIds","includes","slotId","resourceInstances","some","instance","Object","entries","pageStates","startsWith","pageLayoutContext","projectId","modeId","activeModeId","activePageId","resource","location","pageContextChanged","pages","sharedKeys","layout","main","Set","values","regions","flatMap","region","widgets","id","PageTabsInput","pageLayout","modeLayout","getWidget","contributionId","mainTabNeedsCache","changingPage","page","slot","find","constraint","item","binding","Boolean","restoreMainTabs","input","current","shared","ReadonlySet","activated","reconciliation","activate","map","entry","placements","order","has","existing","filter","push","value","refreshSharedPageTab","title","label","sharedPageTabValue","explicit","widgetId","canRestoreSharedPageTab","leavingPage","tabRetention","restoreSharedPageTabs","sharedLayout","scopePageMainTabs","sameMode","departing","retained","desired","destinations","candidate","valuesEqual","left","right","JSON","stringify","WorkbenchLayout","WorkbenchWidgetPlacement","indexCurrentOwnedPlacements","renderDesiredPlacements","placementIdentityKey","reconcileOwnedPlacements","planTrayTabs","editPagePlacementStates","WorkbenchPageRegistryStoreState","State","retainTrayPreviews","state","previous","current","modeLayout","rendered","layout","placements","destinations","reconciliation","incoming","activate","add","update","map","entry","desired","preferred","filter","value","tabRetention","identity","removed","Set","region","Object","values","regions","candidates","id","preferredEntry","key","find","Boolean","plan","placement","widgetId","activeWidgetId","widget","replaced","placementIdentity","removeTrayPreviews","ReadonlySet","size","has","pageStates","kind","valuesEqual","left","right","JSON","stringify","resourceKey","WorkbenchLayout","WorkbenchWidgetPlacement","placementIdentityKey","editPagePlacementStates","WorkbenchPageRegistryStoreState","pageContextChanged","removeTrayPreviews","State","departingPagePreviews","next","previous","layout","activePageId","projectId","activeModeId","Object","values","regions","flatMap","region","widgets","filter","widget","tabRetention","closeDepartingPagePreviews","state","previews","removed","Set","placementIdentity","key","incoming","placements","find","entry","identity","value","resource","pageStates","kind","length","WorkbenchCore","WorkbenchRenderers","renderersByWorkbench","WeakMap","setWorkbenchRenderers","workbench","renderers","set","getWorkbenchRenderers","get","Error","activityResourceTypeSchema","z","activityActorTypeSchema","activitySourceSchema","activityEventSchema","activityEntrySchema","AGENT_CAPABILITIES","agentAvailabilityTypeSchema","agentSkillsLayoutSchema","localizableSchema","harnessParamBaseSchema","harnessParamOptionSchema","harnessSelectParamSchema","harnessBooleanParamSchema","harnessParamDescriptorSchema","harnessParamsSchema","agentInfoSchema","isJson","value","queue","visited","item","prototype","jsonSchema","dictionarySchema","valueSchema","entry","identitySchema","revisionSchema","fingerprintSchema","scopeSchema","assetSchema","sharedSchema","changeSchema","resolutionSchema","mutationBodySchema","checkGroup","mutationSchema","unique","values","records","change","ctx","resolution","inputs","input","id","canonicalJson","key","environmentIdentitySchema","checkpointSchema","recordSchema","conflictSchema","receiptSchema","identityMatches","receipt","accepted","replaySchema","sameEpoch","batch","complete","validGroups","group","index","byteLengthSchema","offset","asset","assetReferenceSchema","jsonObjectSchema","serializableJsonObjectSchema","localizedStringSchema","localizableStringSchema","extensionSettingScopeSchema","extensionSettingValueTypeSchema","extensionSettingSourceSchema","extensionDiagnosticSeveritySchema","extensionDiagnosticSchema","extensionRecordSchema","packageAssetDescriptorSchema","extensionPlacementSchema","extensionSlotKindSchema","commandSourceSchema","extensionWhenExpressionSchema","extensionWebviewContributionSchema","workbenchExtensionWebviewSchema","extensionThemeRecordSchema","extensionFileIconThemeRecordSchema","extensionTranslationRecordSchema","extensionArtifactMountSchema","workbenchMenuTargets","workbenchTreeTargets","workbenchRegions$1","workbenchViewTargets","workbenchSettingsTargets","workbenchSettingsScopes","workbenchModeLayoutTargets","workbenchMenuTargetSchema","workbenchTreeTargetSchema","workbenchViewTargetSchema","workbenchSettingsTargetSchema","workbenchAttachmentTargetSchema","workbenchSettingsScopeSchema","commandParamDescriptorSchema","extensionCommandRecordSchema","extensionParamObjectSchema","extensionMiddlewareRecordSchema","extensionHookRecordSchema","extensionScheduleRecordSchema","workbenchExtensionAutomationRecordSchema","extensionMenuContributionSchema","extensionCommandPaletteContributionSchema","extensionHostCapabilitySchema","extensionHostCapabilitiesSchema","extensionHostCompatibilitySchema","dockedWorkbenchRegions$1","extensionPanelRegions","workbenchExtensionConnectionRecordSchema","extensionConnectionRecordSchema","isNavigationHref","href","protocol","isFileSourcePosition$1","position","positive","number","reserved","invalid","name","equal","left","right","isPageParamValue","definition","validatePageParamDefinitions","definitions","validateNames","normalizePageParams","result","strict","params","pageParamsQuery","resolvePageParams","query","parsePageParams","items","raw","pageParamValueSchema","pageParamDefinitionsSchema","error","extensionResourceRefSchema","contributionRefSchema$1","kind","pageRefSchema$1","placementRefSchema","modeRefSchema$1","viewRefSchema$1","resourceKindRefSchema$1","pageSlotRefSchema","panelRefSchema","commandTargetSchema","sourcePositionSchema","sectionSchema","pageTargetSchema","navigationOperationSchema","navigationTargetSchema","notice","diagnostic","createCommandOutcomeSchema","jsonValue","annotations","failure","navigation","outcome","validatedCommandOutcomeSchema","extensionSlotInvocationSchema","extensionAttachmentInvocationSchema","responseNavigationTargetSchema","commandOutcomeSchema","responseFields","commandExecutionResultSchema","base","numeric","vector","range","harness","selectionValue","selectionOption","selection","image","primitive","readOnlyContent","controlValueSchema","controlValuesSchema","controlParamSchema","controlGroupSchema","controlsQueryResultSchema","extensionRendererRecordBaseSchema","extensionTreeRendererRecordSchema","extensionFileRendererRecordSchema","extensionControlsRendererRecordSchema","optionConditions","VIEW_FILTER_CONDITIONS","EMPTY_VIEW_FILTER","conditionIds","viewFilterConditionSchema","viewFilterRuleSchema","advancedFilterGroupSchema","viewFilterGroupSchema","filter","viewSortSchema","viewSortsSchema","viewToolbarActionSchema","viewToolbarActionRecordSchema","themeColorSchema","columnStatSchema","columnRendererSchema","dataTableRendererColumnSchema","dataTableRendererSettingsSchema","dataTableRendererSavedViewSchema","rowActionSchema","selectionActionSchema","extensionDataTableRendererRecordSchema","kanbanRendererEnumOptionSchema","kanbanRendererAttributeTypeSchema","kanbanRendererAttributeDisplaySchema","display","kanbanRendererAttributeSchema","kanbanViewSettingsSchema","kanbanRendererSavedViewSchema","extensionKanbanRendererCreateRowSchema","extensionKanbanRendererRowActionSchema","extensionKanbanRendererRecordSchema","extensionCommandPaletteResourceRecordSchema","parsedKeybindingChordSchema","extensionKeybindingRecordSchema","workbenchPlacementPresentationSchema","placementPresenceSchema","regionSizeSchema","regionSettingsSchema","resourceConstraintSchema","resourceBindingSchema","placementItemSchema","mainSchema","slotSchema","workbenchExtensionPageRecordSchema","extensionSettingsPanelRecordSchema","extensionSettingOptionSourceSchema","extensionSettingDefinitionRecordSchema","extensionSettingValueRecordSchema","extensionSettingsSectionRecordSchema","contributionRefSchema","commandRefSchema","modeRefSchema","pageRefSchema","resourceKindRefSchema","settingsSectionRefSchema","viewRefSchema","normalizedWhenSchema","rendererBaseOmissions","commandActionSchema","kanbanCreateRowSchema","webviewBodySchema","treeBodySchema","fileBodySchema","controlsBodySchema","kanbanBodySchema","dataTableBodySchema","workbenchExtensionViewBodySchema","workbenchExtensionViewRecordSchema","workbenchExtensionModeRecordSchema","workbenchExtensionPlacementRecordSchema","workbenchExtensionViewMenuRecordSchema","workbenchExtensionNavigationItemRecordSchema","workbenchExtensionNavigationTreeRecordSchema","workbenchExtensionResourceKindRecordSchema","workbenchExtensionSettingsPanelRecordSchema","workbenchExtensionStatusBarItemRecordSchema","workbenchExtensionMetadataSchema","extensionViewLikeSchema","extensionsCheckResponseSchema","DEFAULT_DATA_TABLE_SETTINGS","DEFAULT_KANBAN_VIEW_SETTINGS","builtInViews","settings","record","view","kanbanBuiltInViews","dataTableBuiltInViews","projectExtensionInstanceSchema","marketplaceExtensionSchema","installNameSchema","formBoolean","installedExtensionSourceSchema","relatedResourceOpeningSchema","automationRunStatusSchema","automationTokenRecordSchema","automationRunErrorSchema","automationRunEventSchema","boardFieldSchema","boardViewSettingsSchema","boardViewSchema","initialWorkspaceSchema","extensionSetupWarningSchema","createProjectInputSchema","initialWorkspaceRequestSchema","workspaceProviderRefShape","workspaceProviderRefSchema","workspaceProviderStateSchema","workspaceExecutionKindSchema","workspaceCapabilitiesSchema","workspaceProviderErrorSchema","workspaceAnchorSchema","workspaceSchema","workspaceFileEntrySchema","numericIdentifier","hostRef","workbenchModes","hostResourceKind","headerMenuSlots","workbenchResourceKindDefinitions","workbenchResourceKinds","workbenchPages$1","createCommandRef","owner","eventRef","defineSlot","options","hostEventRef","resourceMenuSlotRef","resourceKind","hostExtensionId","pageRefKey","ref","pageForRef$1","pages","page","encodePath","path","segment","routePath","project","projectId","normalizedSection","anchors","anchor","serializeSection","normalized","section","parseSection","serializeWorkbenchPageUrl","document","encoded","decodedSegments","pathname","isWorkbenchProjectUrl","segments","urlValue","pageForRoute","extensionId","parseResource","resource","resources","uri","parseSourcePosition","coordinates","url","pageForUrl","route","extensionRoute","parseWorkbenchPageUrl","resourceValue","sectionValue","WEBVIEW_DECLARABLE_CAPABILITIES","WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES","WEBVIEW_HOST_CAPABILITIES","capability","harnessCommandSchema","harnessModeActionSchema","harnessModeSchema","harnessOperationSchema","harnessOperationResponseSchema","harnessParamValueSchema","harnessParamsInputSchema","sessionAttachmentRefSchema","queuedFollowUpSchema","pendingQueuedFollowUpsResponseSchema","resourceLinkRefSchema","resourceAnchorSchema","extension","textPartSchema","reasoningPartSchema","toolPartActionTypeSchema","toolPartStatusSchema","toolPartSchema","stepStartPartSchema","stepFinishPartSchema","patchPartSchema","filePartSchema","loadingPartSchema","errorPartSchema","tokenUsagePartSchema","sessionMessagePartSchema","sessionMessageRoleSchema","sessionMessageSchema","sessionStatusSchema","sessionUsageSchema","sessionExitSchema","extensionSessionSchema","sessionSchema","sessionDetailsSchema","sessionAttachmentSchema","createSessionInputSchema","questionResponseSchema","followUpInputSchema","followUpDecisionSchema","followUpResponseSchema","sessionFollowUpDecisionSchema","skillFileSchema","skillSourceKindSchema","skillAgentInstallationSchema","skillSchema","skillDetailsSchema","skillAgentInstallationDetailsSchema","fileDiffSchema","fileDiffSummarySchema","createDisposable","disposed","onDispose","runWorkbenchEffect","effect","depth","pending","notifyWorkbenchChange","notify","batchWorkbenchChanges","commit","defaultEquality","createWorkbenchStore","api","createStore","devtools","subscribe","listener","previous","equalityFn","previousValue","selector","nextValue","state","workbenchRegions","workbenchPanelRegions","workbenchPanelMenuRegions","workbenchPanelByMenuRegion","getWorkbenchPanelForMenuRegion","region","planTrayTabs","previews","widgets","widget","preview","preferredWidgetId","planTrayPlacement","remaining","placement","before","target","found","planTrayDrop","resolveUniqueWidgetId","contributionId","widgetIds","preferredId","suffix","findPlacement","layout","candidate","findResourcePlacement","resourceKey","findPlacementByWidgetId","widgetId","createUniqueWidgetId","getActivePlacement","isLocationPlacement","locationWorkspaceKey","setLocationSubPanelSelection","location","next","removeLocationSubPanelSelection","locationSubPanelSelections","selections","selectedId","getActiveLocationPlacement","locations","replaceRegionWidgets","regionId","update","activeWidgetId","p","r","removePlacementsForContribution","nextLayout","removed","filtered","hasActiveWidget","closeWidgetInLayout","closingEffectiveActive","nextActivePlacement","nextRegion","activeLocationWidgetId","activateInLayout","regions","panelRegion","panel","selected","withSelection","selectRegionActiveWidget","followsRegion","supportsResource","getActiveWorkbenchSubPanel","getActiveWorkbenchLocationPanel","matchesLocationEligibility","eligibleLocations","matchesWorkbenchModeEligibility","modeId","eligibleModeIds","isWorkbenchPanelPlacementVisible","matchesWorkbenchPanelMenuOwner","context","defaultContributionOwnerId","normalizeContributionMetadata","metadata","byContributionPriority","toOpenWidgetInput","shared","strategy","defaultTabRetention","toPanelInstance","toPanelContribution","_closable","_ownedPanelMenuIds","modePanelRegions","allModeRegions","panelsForMode","mode","getWorkbenchModePanelForRegion","isWorkbenchModePanelAvailable","placementById","withActivePlacement","active","candidates","clearRegions","regionIds","clearedPanels","regionsNeedClearing","selectionsNeedClearing","applyModePanelAvailability","available","panels","restoreUnscopedModeLayout","saved","cleared","current","defaults","merged","disposeReverse","disposables","restoreModeLayout","workbenchPageRefKey","pageForRef","pageForId","pageId","canonicalSection","cloneMetadata","canonicalResource","canonical","canonicalPageRef","sectionKey","resourceKey$1","sharesPageResource","workbenchPageLocationRouteKey","declaration","workbenchPageLocationKey","own","workbenchPageLocationsEqual","a","b","canonicalPosition","createLocation","isFileSourcePosition","declaredParent","parent","normalizeResolvedLocation","locationFields","routeKey","seen","inheritedParent","normalizePageTarget","contextualParent","normalizeWorkbenchPageTarget","normalizeWorkbenchPageLocation","normalize","nextSeen","explicitParent","normalizeDirectWorkbenchPageLocation","compareText","placementOwnerSortKey","identity","placementIdentityKey","comparePlacementIdentity","compareRegionPlacement","assertOwner","label","collectPlacements","placements","add","emptyRegions","composeOwnedPlacements","declared","closedKeys","closed","indexPlacements","indexed","placementShapeEqual","desired","valuesEqual","reconcileOwnedPlacements","retain","remove","desiredPlacement","currentPlacement","activationKeys","activate","PAGE_MAIN_SLOT_ID","isPageSlotClosable","slot","primarySlot","_kind","presentation","binding","pageSlots","main","requirePageSlot","slotId","emptyMainSlot","pagePlacementDeclarations","empty","pageStateOwnerKey","staticPageInstanceKey","ownsStaticPageInstance","instanceKey","pageStateKey","removePageStates","states","readComparisonValue","matchesTerm","trimmed","term","comparison","operator","rawValue","actual","expected","matchesContextExpression","expression","orClause","createContextKeyService","store","globalValues","ownerValues","buildValues","scopedValues","publish","action","_removed","rest","ownerId","assertActive","resolveResourcePreview","intent","changes","createResourcePreview","writes","refreshers","token","save","refresh","isWorkbenchViewHierarchyNode","node","resourceHierarchyCycleCode","sortHierarchyProviders","providers","walkResourceHierarchy","sorted","visitedKeys","parentKey","workbenchResourceTypeContextKey","workbenchResourceOwnerContextKey","workbenchResourceIdContextKey","workbenchResourceMetadataContextKey","workbenchSelectionResourceKeyMetadataKey","isContextPrimitive","createWorkbenchResourceContextValues","isWorkbenchResourceContextKey","scopeWorkbenchResourceContextValues","scoped","createWorkbenchSelectionResourceMetadata","getWorkbenchSelectionResourceKeys","selectionResourceKey","createResourceRegistry","removalListeners","cycleListeners","snapshot","kinds","provider","entries","cycle","getKeybindingSteps","keybinding","normalizeKeybindingSequence","steps","createKeybindingRegistry","deps","projection","navigator","surfaceMap","getSurface","listAnchorRegions","resolveAnchorRegion","surface","anchorId","getAnchorResource","reconcileAnchors","actions","keep","isInScope","primary","headerLeadingMenuPath","headerTrailingMenuPath","workbenchRegionTabLeadingMenuPath","workbenchRegionTabAddMenuPath","workbenchCommandPaletteMenuPath","workbenchTopHeaderLeadingMenuPath","workbenchTopHeaderTrailingMenuPath","workbenchBreadcrumbLocationMenuPath","resourceContextMenuPath","resourceMatchesConstraint","constraint","stableValue","getNavigationTargetKey","_args","sources","setNavigationTreeNodeSource","source","getNavigationTreeNodeSource","registryToken","pageResourceContextKey","pageResourceInstanceKey","standardResourceIcons","rendererReadKey","lane","settleReadBatch","controller","abort","signal","firstError","results","tasks","load","reportUserActionError","runUserAction","run","workbench","editPagePlacementStates","instance","edit","bindsToLocation","resolveOwnerResourceKey","exact","transfer","indexCurrentOwnedPlacements","findModePlacementTransfer","desiredIdentity","currentKey","indexCurrentWidgetOwners","owners","restoreModeWidgets","currentIds","restored","order","positions","ordered","sharedPositions","sharedIndex","renderDesiredPlacements","rendered","identities","currentWidgetOwners","desiredWidgetIds","destinations","destination","desiredKeys","transferredCurrentKeys","transferredFromKey","currentOwner","ownerResourceKey","reconcileRegions","docked","dockedWorkbenchRegions","desiredByKey","pageOwnsPrimaryLocation","placedKeys","modeLayout","replacement","removedKeys","tray","opensPreviouslyEmptyRegion","closesEmptyPanel","normalizeRemovedState","activeLocation","fallbackLocation","fallbackActive","bindOwnedSubPanelsToLocation","updateOwnedWidgetLayout","desiredByIdentity","reconcileOwnedWidgetLayout","applyOwnedWidgetLayoutReconciliation","pagePlacementClosed","contains","pageLayoutContext","pageContextChanged","sharedKeys","mainTabNeedsCache","changingPage","restoreMainTabs","activated","pageLayout","existing","refreshSharedPageTab","sharedPageTabValue","explicit","canRestoreSharedPageTab","leavingPage","restoreSharedPageTabs","sharedLayout","scopePageMainTabs","departing","retainTrayPreviews","preferred","preferredEntry","plan","removeTrayPreviews","pageStates","departingPagePreviews","closeDepartingPagePreviews","incoming","renderersByWorkbench","setWorkbenchRenderers","renderers","getWorkbenchRenderers"],"sources":["../../pstdio-api-contracts/src/activity.ts","../../pstdio-api-contracts/src/harness.ts","../../pstdio-api-contracts/src/agents.ts","../../pstdio-sync-contracts/src/compatibility.ts","../../pstdio-sync-contracts/src/json.ts","../../pstdio-sync-contracts/src/wire.ts","../../pstdio-sync-contracts/src/fingerprint.ts","../../pstdio-sync-contracts/src/identity.ts","../../pstdio-sync-contracts/src/state.ts","../../pstdio-sync-contracts/src/replay.ts","../../pstdio-sync-contracts/src/transport.ts","../../pstdio-api-contracts/src/assets.ts","../../pstdio-api-contracts/src/extensions/common.ts","../../pstdio-api-contracts/src/extensions/appearance.ts","../../pstdio-api-contracts/src/extensions/artifacts.ts","../../pstdio-api-contracts/src/extension-kernel/workbench-targets.ts","../../pstdio-api-contracts/src/extensions/targets.ts","../../pstdio-api-contracts/src/extensions/commands.ts","../../pstdio-api-contracts/src/extensions/host-capabilities.ts","../../pstdio-api-contracts/src/extension-kernel/types/composition.ts","../../pstdio-api-contracts/src/extensions/connections.ts","../../pstdio-api-contracts/src/extension-kernel/navigation-href.ts","../../pstdio-api-contracts/src/extension-kernel/source-position.ts","../../pstdio-api-contracts/src/extension-kernel/page-params.ts","../../pstdio-api-contracts/src/extensions/page-params-schema.ts","../../pstdio-api-contracts/src/extensions/resource-ref.ts","../../pstdio-api-contracts/src/extensions/workbench-refs-metadata.ts","../../pstdio-api-contracts/src/extensions/navigation-target-metadata.ts","../../pstdio-api-contracts/src/extensions/command-outcome.ts","../../pstdio-api-contracts/src/extensions/execute.ts","../../pstdio-api-contracts/src/extensions/control-declarations.ts","../../pstdio-api-contracts/src/extensions/renderers.ts","../../pstdio-api-contracts/src/extensions/controls-renderer.ts","../../pstdio-api-contracts/src/extension-kernel/types/collection-view.ts","../../pstdio-api-contracts/src/extensions/collection-view.ts","../../pstdio-api-contracts/src/extensions/view-toolbar-action.ts","../../pstdio-api-contracts/src/extensions/data-table-renderer.ts","../../pstdio-api-contracts/src/extensions/kanban-renderer.ts","../../pstdio-api-contracts/src/extensions/keybindings.ts","../../pstdio-api-contracts/src/extensions/placement-metadata.ts","../../pstdio-api-contracts/src/extensions/resource-binding-metadata.ts","../../pstdio-api-contracts/src/extensions/page-metadata.ts","../../pstdio-api-contracts/src/extensions/settings.ts","../../pstdio-api-contracts/src/extensions/workbench-metadata.ts","../../pstdio-api-contracts/src/extensions/check.ts","../../pstdio-api-contracts/src/extension-kernel/types/data-table-renderer.ts","../../pstdio-api-contracts/src/extensions/collection-view-builtins.ts","../../pstdio-api-contracts/src/extensions/install.ts","../../pstdio-api-contracts/src/extensions/installation.ts","../../pstdio-api-contracts/src/extensions/related-resource-opening.ts","../../pstdio-api-contracts/src/automation.ts","../../pstdio-api-contracts/src/board-views.ts","../../pstdio-api-contracts/src/projects.ts","../../pstdio-api-contracts/src/workspaces.ts","../../pstdio-api-contracts/src/environment.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/page-url.ts","../../pstdio-api-contracts/src/extension-kernel/types/webview-capabilities.ts","../../pstdio-api-contracts/src/files.ts","../../pstdio-api-contracts/src/harness-commands.ts","../../pstdio-api-contracts/src/pagination.ts","../../pstdio-api-contracts/src/session-request-values.ts","../../pstdio-api-contracts/src/queued-follow-ups.ts","../../pstdio-api-contracts/src/resource-anchors.ts","../../pstdio-api-contracts/src/session-attachment-types.ts","../../pstdio-api-contracts/src/session-messages.ts","../../pstdio-api-contracts/src/sessions.ts","../../pstdio-api-contracts/src/settings.ts","../../pstdio-api-contracts/src/skills.ts","../../pstdio-api-contracts/src/workspace-diffs.ts","../src/core/shared/disposable.ts","../src/core/shared/workbench-effect.ts","../src/core/shared/store/workbench-batch.ts","../src/core/shared/store/workbench-store.ts","../src/core/registries/layout/layout-regions.ts","../src/core/registries/layout/tray-tabs.ts","../src/core/registries/layout/widget-id.ts","../src/core/registries/layout/layout-operations.ts","../src/core/registries/layout/panel-widget-eligibility.ts","../src/core/shared/contributions/metadata.ts","../src/core/registries/layout/panel-api.ts","../src/core/registries/modes/mode-layout.ts","../src/core/controllers/page-location/page-location-normalization.ts","../src/core/registries/layout/placement-reconciliation.ts","../src/core/registries/pages/page-main.ts","../src/core/registries/pages/page-state-key.ts","../src/core/shared/context/context-key-service.ts","../src/core/registries/resources/resource-preview.ts","../src/core/registries/resources/resource-hierarchy.ts","../src/core/registries/resources/resource-registry.ts","../src/core/registries/keybindings/keybinding-registry.ts","../src/core/registries/layout/surface-map.ts","../src/core/registries/layout/surface-reconcile.ts","../src/core/registries/menus/workbench-menu-paths.ts","../src/core/shared/contributions/reference-id.ts","../src/core/registries/navigation/navigation-target-key.ts","../src/core/registries/navigation/navigation-tree-node-source.ts","../src/core/registries/pages/page-resource-context.ts","../src/core/registries/resources/resource-icons.ts","../src/core/registries/views/renderer-read-key.ts","../src/core/registries/views/settle-read-batch.ts","../src/core/shared/run-user-action.ts","../src/core/registries/pages/page-placement-state.ts","../src/core/registries/layout/owned-placement-layout.ts","../src/core/controllers/page-runtime/page-main-tabs.ts","../src/core/controllers/page-runtime/tray-preview-retention.ts","../src/core/controllers/page-runtime/page-preview-lifetime.ts","../src/core/workbench-renderers.ts"],"sourcesContent":["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 eventType: z.string().optional(),\n /** @deprecated Use eventType. */\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>;\n/** @deprecated Use ActivityEntry. Legacy fields stay available through 0.44. */\nexport type ActivityEvent = z.infer<typeof activityEventSchema>;\nexport type ListActivityInput = z.infer<typeof listActivityInputSchema>;\nexport type ListProjectActivityInput = z.infer<typeof listProjectActivityInputSchema>;\n/** @deprecated Use ActivityPage. Legacy fields stay available through 0.44. */\nexport type ListActivityResponse = z.infer<typeof listActivityResponseSchema>;\n\nexport const activityEntrySchema = z.object({\n id: z.string(),\n projectId: z.string(),\n resourceType: z.string(),\n resourceId: z.string(),\n sourceExtensionId: z.string().nullable(),\n eventType: z.string(),\n actorType: activityActorTypeSchema,\n actorId: z.string().nullable(),\n source: activitySourceSchema,\n summary: z.string(),\n payloadJson: z.record(z.string(), z.unknown()),\n createdAt: z.string(),\n});\nexport const activityPageSchema = z.object({ items: z.array(activityEntrySchema), nextCursor: z.string().nullable() });\nexport type ActivityEntry = z.infer<typeof activityEntrySchema>;\nexport type ActivityPage = z.infer<typeof activityPageSchema>;\n","// Transport-neutral harness contract: the host injects an event sink (and, for\n// providers with the Approvals capability, an approval channel) and consumes a\n// neutral HarnessSession handle. Providers never control persistence or status;\n// they emit JSON patches and settle `done`.\n\nimport type { WorkspaceExecutionTarget } from \"./extension-kernel/types/extension\";\nimport type { SessionMessage } from \"./session-messages\";\n\nexport type JsonPatch = {\n op: \"add\" | \"replace\" | \"remove\";\n path: string;\n value?: unknown;\n};\n\nexport type EventStore = {\n push(patch: JsonPatch): void;\n getHistory(): JsonPatch[];\n subscribe(): AsyncIterable<JsonPatch>;\n historyPlusStream(): AsyncIterable<JsonPatch>;\n snapshotAndSubscribe(): { history: JsonPatch[]; stream: AsyncIterable<JsonPatch> };\n};\n\n/** Features a harness opts into. `Attachments` means the harness accepts `attachments` on start, resume and steering. */\nexport const AGENT_CAPABILITIES = [\n \"SessionFork\",\n \"ContextUsage\",\n \"Approvals\",\n \"SessionReattach\",\n \"Attachments\",\n] as const;\n\nexport type AgentCapability = (typeof AGENT_CAPABILITIES)[number];\n\nexport type QuestionResponse = {\n /**\n * One list of chosen labels per question, in the order the questions were asked. A label the\n * agent did not offer is the person's own typed answer, so a harness that validates answers\n * against its offered options has to add it to them before replying.\n *\n * An empty list means the person skipped the question rather than answering it. An answered\n * form always carries one entry per question, so the two can never be confused.\n */\n answers: string[][];\n /** Shared question tool call being answered, when the caller has its identity. */\n callId?: string;\n};\n\n/** A stale or declined answer. Other harness failures remain server errors. */\nexport type HarnessQuestionReplyError = Error & { readonly questionRejected: true };\n\nexport type HarnessQuestionOption = {\n label: string;\n description?: string;\n};\n\nexport type HarnessQuestion = {\n question: string;\n options?: HarnessQuestionOption[];\n /** The person may pick more than one option. */\n multiple?: boolean;\n};\n\nexport type HarnessQuestionRequest = {\n id: string;\n toolUseId: string;\n questions: HarnessQuestion[];\n};\n\n/**\n * Host channel a harness uses to ask the person something. The host sets the session to\n * `awaiting_input` while an ask is open, and resolves the ask with the answer. An ask has no\n * timeout; it rejects when the session ends.\n */\nexport type HarnessQuestionChannel = {\n ask(request: HarnessQuestionRequest): Promise<QuestionResponse>;\n};\n\n/** Host side of the question channel. Plain text answers all open asks; a call ID selects its tool use. */\nexport type QuestionService = HarnessQuestionChannel & {\n answer(response: QuestionResponse | string): boolean;\n hasPending(callId?: string): boolean;\n dispose(): void;\n};\n\nexport type ApprovalRequest = {\n id: string;\n toolName: string;\n toolInput: unknown;\n toolUseId: string;\n};\n\nexport type ApprovalResponse = {\n id: string;\n decision: \"approve\" | \"deny\" | \"timeout\";\n};\n\nexport type ApprovalService = {\n requestApproval(request: ApprovalRequest): Promise<ApprovalResponse>;\n handleResponse(response: ApprovalResponse): void;\n dispose(): void;\n};\n\n/** \"activity\": the host kills the session when no events arrive for a while; \"provider\": the provider self-terminates. */\nexport type TimeoutStrategy = \"activity\" | \"provider\";\n\nexport type HarnessEventSink = {\n push(patch: JsonPatch): void;\n getMessages(): readonly SessionMessage[];\n};\n\nexport type HarnessAttachment = {\n fileId: string;\n fileName: string;\n mimeType: string | null;\n sizeBytes: number;\n localPath: string;\n url: string;\n};\n\nexport type HarnessApprovalChannel = {\n requestApproval(request: ApprovalRequest): Promise<ApprovalResponse>;\n};\n\nexport type HarnessParamValue = string | boolean;\nexport type HarnessParams = Record<string, HarnessParamValue>;\n\nexport type HarnessWorkspaceContext = {\n workspaceId: string;\n executionTarget: WorkspaceExecutionTarget;\n};\n\nexport type HarnessExitStatus = \"completed\" | \"failed\" | \"cancelled\" | \"disconnected\";\n\nexport type HarnessExit = {\n status: HarnessExitStatus;\n};\n\nexport type HarnessSession = {\n /** Provider-side session id, used to resume/reattach later. */\n agentSessionId?: string;\n /** Settles exactly once; the host keys status transitions and persistence off it. */\n done: Promise<HarnessExit>;\n /** Called by the host on cancel or on its own activity timeout. */\n stop(): void | Promise<void>;\n /** Replies in place. Reject invalid answers with HarnessQuestionReplyError. */\n replyQuestion?(response: QuestionResponse): Promise<void>;\n /** Accept live input without starting a new run. Emit one user message with deliveryId before returning accepted. Native history must preserve that identity for recovery. A thrown transport error is uncertain, never a definite rejection. */\n steer?(input: HarnessSteeringInput): Promise<HarnessSteeringResult>;\n timeoutStrategy?: TimeoutStrategy;\n /** Observability only. */\n pid?: number;\n};\n\nexport type HarnessStartInput = {\n prompt: string;\n /** Host session id (correlation / env injection). */\n sessionId: string;\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n model?: string | null;\n params?: HarnessParams;\n attachments?: HarnessAttachment[];\n events: HarnessEventSink;\n /** Channel for asking the person something. Present on start and on resume. */\n questions?: HarnessQuestionChannel;\n /** Aborted when the host cancels the request that started or resumed this session. */\n signal?: AbortSignal;\n};\n\nexport type HarnessResumeInput = HarnessStartInput & {\n agentSessionId: string;\n /** Index offset so resumed streams align message patches with existing history. */\n messageOffset?: number;\n questionResponse?: QuestionResponse;\n approvals?: HarnessApprovalChannel;\n};\n\nexport type HarnessReattachInput = {\n sessionId: string;\n agentSessionId: string;\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n events: HarnessEventSink;\n /** Aborted when the host stops orphan recovery, including during shutdown. */\n signal?: AbortSignal;\n};\n\nexport type HarnessMessagesInput = {\n agentSessionId: string;\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n};\n\nexport type HarnessRecoveryInput = {\n knownMessages: readonly SessionMessage[];\n nativeMessages: readonly SessionMessage[];\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n};\n\nexport type HarnessRecoveryResult =\n | { kind: \"recovered\"; messages: SessionMessage[] }\n | { kind: \"conflict\"; category: string };\n\n/** Input to the captured running owner. Its saved model and params must already match that run. */\nexport interface HarnessSteeringInput {\n deliveryId: string;\n prompt: string;\n attachments: HarnessAttachment[];\n signal?: AbortSignal;\n}\n\nexport type HarnessSteeringResult =\n | { status: \"accepted\" }\n | { status: \"rejected\"; reason: string }\n | { status: \"uncertain\"; reason: string };\n","import { z } from \"zod\";\nimport { AGENT_CAPABILITIES } from \"./harness\";\n\nexport const agentAvailabilityTypeSchema = z.enum([\"INSTALLED\", \"NOT_FOUND\"]);\n\nexport const agentSkillsLayoutSchema = z.object({\n dir: z.string(),\n global_dir: z.string(),\n});\n\n// Mirrors ParamDescriptor: labels are Localizable so a harness can ship\n// translated copy for its run params.\nconst localizableSchema = z.union([z.string(), z.object({ $l10n: z.string(), default: z.string().optional() })]);\n\nconst harnessParamBaseSchema = z.object({\n control: z.literal(\"command\").optional(),\n label: localizableSchema.optional(),\n description: localizableSchema.optional(),\n required: z.boolean().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst harnessParamOptionSchema = z.object({ label: z.string(), value: z.string(), icon: z.string().optional() });\n\nexport const harnessSelectParamSchema = harnessParamBaseSchema.extend({\n type: z.literal(\"select\"),\n defaultValue: z.string().optional(),\n options: z.array(harnessParamOptionSchema),\n});\n\nexport const harnessBooleanParamSchema = harnessParamBaseSchema.extend({\n type: z.literal(\"boolean\"),\n defaultValue: z.boolean().optional(),\n});\n\nexport const harnessParamDescriptorSchema = z.union([harnessSelectParamSchema, harnessBooleanParamSchema]);\nexport const harnessParamsSchema = z.record(z.string(), harnessParamDescriptorSchema);\n\nexport const agentInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n availability: z.object({\n type: agentAvailabilityTypeSchema,\n /** Why the harness cannot run, such as a missing or too-old CLI. */\n reason: z.string().optional(),\n }),\n /** Present when the harness declares skill directories. */\n skills: agentSkillsLayoutSchema.optional(),\n /** Present when the harness declares discrete run params. */\n params: harnessParamsSchema.optional(),\n capabilities: z.array(z.enum(AGENT_CAPABILITIES)),\n /** The harness offers a model choice. A harness without one, such as a remote machine, picks its own model. */\n supportsModels: z.boolean(),\n});\n\nexport const agentModelSchema = z.object({\n id: z.string(),\n label: z.string().optional(),\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n paramOverrides: z.record(z.string(), harnessParamDescriptorSchema.nullable()).optional(),\n});\n\nexport type AgentAvailabilityType = z.infer<typeof agentAvailabilityTypeSchema>;\nexport type AgentInfo = z.infer<typeof agentInfoSchema>;\nexport type AgentModel = z.infer<typeof agentModelSchema>;\nexport type AgentSkillsLayout = z.infer<typeof agentSkillsLayoutSchema>;\nexport type HarnessParamDescriptorInfo = z.infer<typeof harnessParamDescriptorSchema>;\nexport type HarnessParamsInfo = z.infer<typeof harnessParamsSchema>;\n\nexport { findAgentModel, resolveAgentModelParams } from \"./agent-model-params\";\n\n/** Bare provider id of a (possibly namespaced) harness id, e.g. \"pstdio.harness-claude-code.harness.claude-code\" -> \"claude-code\". */\nexport const harnessLocalId = (id: string) => id.slice(id.lastIndexOf(\".\") + 1);\n\nexport const agentDetailsSchema = agentInfoSchema.extend({\n skills: agentSkillsLayoutSchema.extend({ globalDir: z.string() }).optional(),\n});\nexport type AgentDetails = z.infer<typeof agentDetailsSchema>;\n","import { z } from \"zod\";\n\nexport const peerSchema = z.strictObject({\n release: z.string().min(1),\n protocolVersions: z.array(z.number().int().positive()).min(1),\n supportedFeatures: z.array(z.string().min(1)),\n requiredFeatures: z.array(z.string().min(1)),\n});\nexport type Peer = z.infer<typeof peerSchema>;\nexport const protocolPeer: Peer = {\n release: \"contracts-v1\",\n protocolVersions: [1],\n supportedFeatures: [\"atomic-groups\", \"retained-recovery\", \"revisioned-resolution\"],\n requiredFeatures: [\"atomic-groups\", \"retained-recovery\", \"revisioned-resolution\"],\n};\n\nexport function negotiate(client: Peer, relay: Peer) {\n const common = client.protocolVersions.includes(1) && relay.protocolVersions.includes(1);\n const features =\n client.requiredFeatures.every((feature) => relay.supportedFeatures.includes(feature)) &&\n relay.requiredFeatures.every((feature) => client.supportedFeatures.includes(feature));\n if (common && features) return { status: \"compatible\" as const, protocolVersion: 1 as const };\n return {\n status: \"unsupported-protocol\" as const,\n recoverable: true as const,\n action:\n \"Update the local runtime or relay to a common protocol and required feature set. Local work remains saved; retry after updating.\",\n };\n}\n","import { z } from \"zod\";\n\nexport type Json = string | number | boolean | null | Json[] | { [key: string]: Json };\n\nfunction isJson(value: unknown) {\n try {\n JSON.stringify(value);\n } catch {\n return false;\n }\n const queue = [value];\n const visited = new Set<object>();\n while (queue.length) {\n const item = queue.pop();\n if (item === null || typeof item === \"string\" || typeof item === \"boolean\") continue;\n if (typeof item === \"number\" && Number.isFinite(item)) continue;\n if (typeof item !== \"object\" || item === null) return false;\n if (visited.has(item)) continue;\n visited.add(item);\n if (Array.isArray(item)) queue.push(...item);\n else {\n const prototype = Object.getPrototypeOf(item);\n if (prototype !== Object.prototype && prototype !== null) return false;\n queue.push(...Object.values(item));\n }\n }\n return true;\n}\n\n// Zod's object/record parsers discard special keys. JSON values must retain them.\nexport const jsonSchema = z.custom<Json>(isJson, \"Expected a JSON value without loss of object keys\");\nexport function dictionarySchema<T extends z.ZodType>(valueSchema: T) {\n return z.custom<Record<string, z.infer<T>>>(\n (value) =>\n value !== null &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n Object.values(value).every((entry) => valueSchema.safeParse(entry).success),\n \"Invalid dictionary\",\n );\n}\n","import { z } from \"zod\";\nimport { jsonSchema } from \"./json\";\n\nexport type { Json } from \"./json\";\nexport { jsonSchema } from \"./json\";\n\nexport const identitySchema = z.string().min(1);\nexport const revisionSchema = z.number().int().nonnegative();\nexport const fingerprintSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const scopeSchema = z.strictObject({\n accountId: identitySchema,\n workbenchId: identitySchema,\n extensionId: identitySchema,\n});\nexport const assetSchema = z.strictObject({\n sha256: fingerprintSchema,\n byteLength: revisionSchema,\n mediaType: identitySchema,\n});\nexport const sharedSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"text\"), update: z.string().min(1) }),\n z.strictObject({ kind: z.literal(\"list\"), update: z.string().min(1) }),\n z.strictObject({\n kind: z.literal(\"map\"),\n entries: z\n .array(\n z.strictObject({\n key: z.string(),\n expected: fingerprintSchema,\n next: z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"set\"), value: jsonSchema }),\n z.strictObject({ kind: z.literal(\"delete\") }),\n ]),\n }),\n )\n .min(1),\n }),\n]);\nexport const changeSchema = z.strictObject({\n recordId: identitySchema,\n expectedRevision: revisionSchema,\n baseDeleted: z.boolean(),\n shared: sharedSchema.optional(),\n value: z.strictObject({ expected: fingerprintSchema, next: jsonSchema }).optional(),\n asset: z.strictObject({ base: assetSchema.nullable(), next: assetSchema.nullable() }).optional(),\n deleted: z.boolean().optional(),\n});\nexport const resolutionSchema = z.strictObject({\n conflictId: identitySchema,\n expectedConflicts: z.array(z.strictObject({ conflictId: identitySchema, revision: revisionSchema })).min(1),\n capturedOperationIds: z.array(identitySchema).min(1),\n expectedInputs: z.array(z.strictObject({ recordId: identitySchema, revision: revisionSchema })).min(1),\n handler: z.strictObject({ publishedRevision: identitySchema, handlerId: identitySchema }).optional(),\n});\nexport const mutationBodySchema = z.strictObject({\n protocolVersion: z.literal(1),\n scope: scopeSchema,\n environmentId: identitySchema,\n operationId: identitySchema,\n parents: z.array(identitySchema),\n changes: z.array(changeSchema).min(1),\n resolution: resolutionSchema.optional(),\n});\nexport const localOperationSchema = mutationBodySchema\n .omit({ protocolVersion: true, scope: true })\n .superRefine(checkGroup);\nexport const mutationSchema = mutationBodySchema.extend({ fingerprint: fingerprintSchema }).superRefine(checkGroup);\nexport type Scope = z.infer<typeof scopeSchema>;\nexport type Asset = z.infer<typeof assetSchema>;\nexport type Change = z.infer<typeof changeSchema>;\nexport type MutationBody = z.infer<typeof mutationBodySchema>;\nexport type Mutation = z.infer<typeof mutationSchema>;\n\nfunction checkGroup(\n value: Pick<MutationBody, \"operationId\" | \"parents\" | \"changes\" | \"resolution\">,\n ctx: z.RefinementCtx,\n) {\n const unique = (values: string[]) => new Set(values).size === values.length;\n const records = value.changes.map((change) => change.recordId);\n if (!unique(records) || !unique(value.parents) || value.parents.includes(value.operationId)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Records and parents must be unique; operations cannot depend on themselves\",\n });\n }\n for (const change of value.changes) {\n if (!change.shared && !change.value && !change.asset && change.deleted === undefined) {\n ctx.addIssue({ code: \"custom\", message: \"A record change must contain an edit\" });\n }\n if (change.shared?.kind === \"map\" && !unique(change.shared.entries.map((entry) => entry.key))) {\n ctx.addIssue({ code: \"custom\", message: \"Map keys must be unique within a change\" });\n }\n }\n const resolution = value.resolution;\n if (!resolution) return;\n const inputs = resolution.expectedInputs.map((input) => input.recordId);\n if (\n !unique(resolution.expectedConflicts.map((input) => input.conflictId)) ||\n !resolution.expectedConflicts.some((input) => input.conflictId === resolution.conflictId) ||\n !unique(inputs) ||\n inputs.length !== records.length ||\n records.some((id) => !inputs.includes(id)) ||\n !unique(resolution.capturedOperationIds) ||\n resolution.capturedOperationIds.some((id) => !value.parents.includes(id))\n ) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Resolution inputs must cover the whole group and captured operations must be parents\",\n });\n }\n}\n","import type { Json, MutationBody } from \"./wire\";\nimport { mutationSchema } from \"./wire\";\n\n// Canonical JSON: sorted object keys, JSON scalar encoding, preserved array order.\nexport function canonicalJson(value: Json): string {\n if (Array.isArray(value)) return `[${value.map(canonicalJson).join(\",\")}]`;\n if (value !== null && typeof value === \"object\") {\n return `{${Object.keys(value)\n .filter((key) => value[key] !== undefined)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${canonicalJson(value[key])}`)\n .join(\",\")}}`;\n }\n return JSON.stringify(value);\n}\n\nexport async function fingerprint(value: Json) {\n const bytes = new TextEncoder().encode(canonicalJson(value));\n const digest = await crypto.subtle.digest(\"SHA-256\", bytes);\n return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nexport async function sealMutation(body: MutationBody) {\n const parsed = mutationSchema.parse({ ...body, fingerprint: \"0\".repeat(64) });\n const { fingerprint: _ignored, ...normalized } = parsed;\n return { ...normalized, fingerprint: await fingerprint(normalized) };\n}\n\nexport async function validateMutation(input: unknown) {\n const mutation = mutationSchema.parse(input);\n const { fingerprint: supplied, ...body } = mutation;\n if ((await fingerprint(body)) !== supplied) throw new Error(\"Payload fingerprint does not match\");\n return mutation;\n}\n","import { z } from \"zod\";\nimport { identitySchema } from \"./wire\";\n\nexport const environmentIdentitySchema = z.strictObject({ environmentId: identitySchema });\nexport const environmentTargetSchema = environmentIdentitySchema.extend({\n workbenchId: identitySchema,\n workspaceId: identitySchema,\n});\nexport type EnvironmentIdentity = z.infer<typeof environmentIdentitySchema>;\nexport type EnvironmentTarget = z.infer<typeof environmentTargetSchema>;\n\n// This is the relay ownership boundary, not the local dashboard's SSE table list.\n// Publication and replication implementations must select workbench contributions\n// explicitly; they must never copy arbitrary local database rows.\nexport const dataOwnership = {\n workbenchContent: \"workbench\",\n assets: \"workbench\",\n publishedExtensions: \"workbench\",\n automationDefinitions: \"workbench\",\n sessions: \"environment\",\n processes: \"environment\",\n workspaces: \"environment\",\n terminals: \"environment\",\n credentials: \"environment\",\n caches: \"environment\",\n developmentOverrides: \"environment\",\n} as const;\n","import { z } from \"zod\";\nimport { dictionarySchema } from \"./json\";\nimport {\n assetSchema,\n fingerprintSchema,\n identitySchema,\n jsonSchema,\n mutationSchema,\n revisionSchema,\n scopeSchema,\n} from \"./wire\";\n\nexport const checkpointSchema = z.strictObject({ epoch: identitySchema, sequence: revisionSchema });\nexport const recordSchema = z.strictObject({\n recordId: identitySchema,\n revision: revisionSchema,\n deleted: z.boolean(),\n primitive: z.enum([\"text\", \"list\", \"map\"]).nullable(),\n shared: z.strictObject({ kind: z.enum([\"text\", \"list\"]), update: z.string() }).optional(),\n map: dictionarySchema(jsonSchema),\n value: jsonSchema,\n asset: assetSchema.nullable(),\n});\nexport const conflictSchema = z.strictObject({\n conflictId: identitySchema,\n revision: revisionSchema,\n recordIds: z.array(identitySchema).min(1),\n alternativeOperationIds: z.array(identitySchema).min(1),\n resolvedBy: identitySchema.optional(),\n});\nexport const receiptSchema = z\n .strictObject({\n order: revisionSchema,\n operationId: identitySchema,\n fingerprint: fingerprintSchema,\n mutation: mutationSchema,\n status: z.enum([\"accepted\", \"conflict\", \"pending\"]),\n reason: z.string().optional(),\n checkpoint: checkpointSchema.nullable(),\n conflictId: identitySchema.optional(),\n recoveryProof: fingerprintSchema.optional(),\n })\n .superRefine((receipt, ctx) => {\n const identityMatches =\n receipt.operationId === receipt.mutation.operationId && receipt.fingerprint === receipt.mutation.fingerprint;\n const accepted = receipt.status === \"accepted\";\n if (\n !identityMatches ||\n accepted !== (receipt.checkpoint !== null) ||\n (receipt.status === \"conflict\" && !receipt.conflictId)\n ) {\n ctx.addIssue({ code: \"custom\", message: \"Receipt identity, fingerprint, outcome and checkpoint must agree\" });\n }\n });\nexport const snapshotSchema = z.strictObject({\n protocolVersion: z.literal(1),\n scope: scopeSchema,\n journalSequence: revisionSchema,\n checkpoint: checkpointSchema,\n records: dictionarySchema(recordSchema),\n receipts: dictionarySchema(receiptSchema),\n conflicts: dictionarySchema(conflictSchema),\n publishedRevision: identitySchema,\n});\nexport const syncOutcomeSchema = z.discriminatedUnion(\"status\", [\n z.strictObject({ status: z.literal(\"saved-locally\"), operationId: identitySchema }),\n z.strictObject({ status: z.literal(\"pending\"), operationId: identitySchema, reason: z.string() }),\n z.strictObject({ status: z.literal(\"synchronized\"), operationId: identitySchema, checkpoint: checkpointSchema }),\n z.strictObject({\n status: z.literal(\"conflict\"),\n operationId: identitySchema,\n conflictId: identitySchema,\n conflictRevision: revisionSchema,\n }),\n]);\nexport type StoredRecord = z.infer<typeof recordSchema>;\nexport type Receipt = z.infer<typeof receiptSchema>;\nexport type Snapshot = z.infer<typeof snapshotSchema>;\nexport type Checkpoint = z.infer<typeof checkpointSchema>;\nexport type SyncOutcome = z.infer<typeof syncOutcomeSchema>;\n\nexport function replayBoundary(after: Checkpoint, current: Checkpoint, retainedFrom: number) {\n if (\n !checkpointSchema.safeParse(after).success ||\n after.epoch !== current.epoch ||\n after.sequence < retainedFrom ||\n after.sequence > current.sequence\n ) {\n return { status: \"snapshot-required\" as const, checkpoint: current };\n }\n return { status: \"replay\" as const, after, through: current };\n}\n","import { z } from \"zod\";\nimport { canonicalJson } from \"./fingerprint\";\nimport { checkpointSchema, receiptSchema } from \"./state\";\nimport { scopeSchema } from \"./wire\";\n\nexport const replaySchema = z\n .strictObject({\n protocolVersion: z.literal(1),\n scope: scopeSchema,\n after: checkpointSchema,\n through: checkpointSchema,\n groups: z.array(receiptSchema),\n })\n .superRefine((batch, ctx) => {\n const sameEpoch = batch.after.epoch === batch.through.epoch;\n const complete = batch.through.sequence - batch.after.sequence === batch.groups.length;\n const validGroups = batch.groups.every(\n (group, index) =>\n group.status === \"accepted\" &&\n group.checkpoint?.epoch === batch.through.epoch &&\n group.checkpoint.sequence === batch.after.sequence + index + 1 &&\n canonicalJson(group.mutation.scope) === canonicalJson(batch.scope),\n );\n const unique = new Set(batch.groups.map((group) => group.operationId)).size === batch.groups.length;\n if (!sameEpoch || !complete || !validGroups || !unique)\n ctx.addIssue({\n code: \"custom\",\n message: \"Replay must contain contiguous complete accepted groups in one scope and epoch\",\n });\n });\nexport type Replay = z.infer<typeof replaySchema>;\n","import { z } from \"zod\";\nimport { replaySchema } from \"./replay\";\nimport { checkpointSchema } from \"./state\";\nimport { assetSchema, fingerprintSchema, identitySchema, mutationSchema } from \"./wire\";\n\nexport const relayOperationSchema = z.enum([\n \"initialize\",\n \"snapshot\",\n \"replay\",\n \"submit\",\n \"recover\",\n \"changes\",\n \"assets/begin\",\n \"assets/part\",\n \"assets/finish\",\n \"assets/cancel\",\n \"assets/read\",\n]);\nexport const relayRecoverySchema = z.strictObject({ mutation: mutationSchema, proof: fingerprintSchema });\nconst targetSchema = z.strictObject({ workbenchId: identitySchema, extensionId: identitySchema });\nexport type RelayTarget = z.infer<typeof targetSchema>;\nexport type RelayOperation = z.infer<typeof relayOperationSchema>;\n\n// A prefix keeps even opaque '.' and '..' identities from becoming URL traversal segments.\nexport const relayPath = (target: RelayTarget, operation: RelayOperation) => {\n const { workbenchId, extensionId } = targetSchema.parse({\n workbenchId: target.workbenchId,\n extensionId: target.extensionId,\n });\n return `/v1/workbenches/~${encodeURIComponent(workbenchId)}/extensions/~${encodeURIComponent(extensionId)}/${relayOperationSchema.parse(operation)}`;\n};\nexport const relayRoute = (pathname: string) => {\n const match = /^\\/v1\\/workbenches\\/~([^/]+)\\/extensions\\/~([^/]+)\\/(.+)$/.exec(pathname);\n if (!match) return null;\n try {\n return {\n ...targetSchema.parse({ workbenchId: decodeURIComponent(match[1]!), extensionId: decodeURIComponent(match[2]!) }),\n operation: relayOperationSchema.parse(match[3]),\n };\n } catch {\n return null;\n }\n};\nexport const relayReplayResultSchema = z.discriminatedUnion(\"status\", [\n z.strictObject({ status: z.literal(\"replay\"), batch: replaySchema }),\n z.strictObject({ status: z.literal(\"snapshot-required\"), checkpoint: checkpointSchema }),\n]);\nconst byteLengthSchema = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);\nexport const relayAssetBeginSchema = z.strictObject({ uploadId: identitySchema, asset: assetSchema });\nexport const relayAssetUploadSchema = z.strictObject({ uploadId: identitySchema });\nexport const relayAssetPartSchema = z.strictObject({\n uploadId: identitySchema,\n number: z.number().int().min(1).max(10_000),\n sha256: fingerprintSchema,\n byteLength: byteLengthSchema,\n});\nexport const relayAssetReadSchema = z\n .strictObject({ asset: assetSchema, offset: byteLengthSchema })\n .refine(({ asset, offset }) => offset <= asset.byteLength, \"Offset exceeds the asset\");\nexport const relayAssetStatusSchema = z.strictObject({\n asset: assetSchema,\n partSize: z.number().int().positive(),\n completed: z.boolean(),\n parts: z.array(\n z.strictObject({ number: z.number().int().positive(), sha256: fingerprintSchema, byteLength: byteLengthSchema }),\n ),\n});\nexport const relayEventSchema = z.strictObject({ protocolVersion: z.literal(1), type: z.enum([\"ready\", \"changed\"]) });\n\nexport const relayInitializeSchema = z.strictObject({ publishedRevision: identitySchema });\n","import { assetSchema, identitySchema, revisionSchema } from \"pstdio-sync-contracts\";\nimport { z } from \"zod\";\n\nexport const assetReferenceSchema = assetSchema;\nexport type AssetReference = z.infer<typeof assetReferenceSchema>;\nexport const assetOwnerSchema = z.strictObject({ workbenchId: identitySchema, extensionId: identitySchema });\nexport type AssetOwner = z.infer<typeof assetOwnerSchema>;\n\nexport const assetTransferSchema = z.discriminatedUnion(\"status\", [\n z.strictObject({\n status: z.literal(\"staging\"),\n operationId: identitySchema,\n expected: assetReferenceSchema,\n uploadedByteLength: revisionSchema,\n }),\n z.strictObject({ status: z.literal(\"complete\"), operationId: identitySchema, asset: assetReferenceSchema }),\n z.strictObject({ status: z.literal(\"cancelled\"), operationId: identitySchema, expected: assetReferenceSchema }),\n]);\nexport type AssetTransfer = z.infer<typeof assetTransferSchema>;\n","import { z } from \"zod\";\nimport type { JsonObject } from \"../extension-kernel/types/json\";\n\nexport const jsonObjectSchema = z.record(z.string(), z.unknown());\nexport const serializableJsonObjectSchema: z.ZodType<JsonObject> = z.record(z.string(), z.json()).meta({\n type: \"object\",\n additionalProperties: true,\n});\nexport const localizedStringSchema = z.object({ $l10n: z.string(), default: z.string().optional() });\nexport const localizableStringSchema = z.union([z.string(), localizedStringSchema]);\n\nexport const extensionSettingScopeSchema = z.enum([\"global\", \"project\"]);\nexport const extensionSettingValueTypeSchema = z.enum([\"boolean\", \"number\", \"string\", \"array\", \"object\"]);\nexport const extensionSettingSourceSchema = z.enum([\"stored\", \"default\"]);\n\nexport const extensionDiagnosticSeveritySchema = z.enum([\"info\", \"warning\", \"error\"]);\n\nexport const extensionDiagnosticSchema = z.object({\n code: z.string(),\n severity: extensionDiagnosticSeveritySchema,\n message: z.string(),\n extensionId: z.string().optional(),\n commandId: z.string().optional(),\n sourcePath: z.string().optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nexport const extensionRecordSchema = z.object({\n id: z.string(),\n name: z.string(),\n displayName: z.string(),\n extensionInstanceId: z.string().optional(),\n installedExtensionId: z.string().optional(),\n installName: z.string().optional(),\n version: z.string().optional(),\n description: z.string().optional(),\n sourcePath: z.string(),\n});\n\nexport const packageAssetDescriptorSchema = z.object({\n kind: z.literal(\"package-asset\"),\n path: z.string(),\n baseUrl: z.string(),\n});\n\nexport const extensionPlacementSchema = z.enum([\"first\", \"default\", \"last\"]);\nexport const extensionSlotKindSchema = z.enum([\n \"menu\",\n \"panel\",\n \"settings\",\n \"renderer\",\n \"kanbanRenderer\",\n \"dataTableRenderer\",\n]);\n\nexport const commandSourceSchema = z.enum([\n \"cli\",\n \"dashboard\",\n \"api\",\n \"schedule\",\n \"event\",\n \"automation\",\n \"command-panel\",\n]);\n\nexport const extensionWhenExpressionSchema = z.object({\n mode: z.union([z.string(), z.array(z.string())]).optional(),\n source: z.array(commandSourceSchema).optional(),\n viewId: z.union([z.string(), z.array(z.string())]).optional(),\n resourceType: z.array(z.string()).optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nexport const extensionWebviewContributionSchema = z.object({\n entry: packageAssetDescriptorSchema,\n title: localizableStringSchema.optional(),\n /** Host capabilities the webview is allowed to invoke through the bridge. */\n capabilities: z.array(z.string()).optional(),\n});\n\nexport const workbenchExtensionWebviewSchema = extensionWebviewContributionSchema.extend({\n /** API-served URL of the bridge runtime HTML the dashboard mounts in the iframe. */\n runtimeUrl: z.string(),\n /** API-served URL of the bundled extension module the bridge runtime dynamically imports. */\n moduleUrl: z.string(),\n /** API-served URLs of CSS files the bridge runtime should inject before mounting the module. */\n styles: z.array(z.string()).optional(),\n});\n\nexport type ExtensionDiagnostic = z.infer<typeof extensionDiagnosticSchema>;\nexport type LocalizableString = z.infer<typeof localizableStringSchema>;\nexport type ExtensionRecord = z.infer<typeof extensionRecordSchema>;\n","import { z } from \"zod\";\nimport { jsonObjectSchema, localizableStringSchema, packageAssetDescriptorSchema } from \"./common\";\n\nexport const extensionThemeRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n description: localizableStringSchema.optional(),\n format: z.literal(\"vscode-color-theme\"),\n mode: z.enum([\"light\", \"dark\"]),\n source: packageAssetDescriptorSchema,\n tokens: z.record(z.string(), z.string()),\n monacoTheme: z.object({\n base: z.enum([\"vs\", \"vs-dark\"]),\n inherit: z.literal(true),\n rules: z.array(z.record(z.string(), z.unknown())),\n colors: z.record(z.string(), z.string()),\n }),\n});\n\nexport const extensionFileIconThemeRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n description: localizableStringSchema.optional(),\n format: z.literal(\"vscode-file-icon-theme\"),\n source: packageAssetDescriptorSchema,\n definitions: jsonObjectSchema,\n fileExtensions: z.record(z.string(), z.string()),\n fileNames: z.record(z.string(), z.string()),\n defaults: z.object({ file: z.string().optional(), folder: z.string().optional() }).default({}),\n fonts: z\n .array(\n z.object({\n fontFamily: z.string(),\n src: z.array(z.object({ url: z.string(), format: z.string().optional() })),\n weight: z.string().optional(),\n style: z.string().optional(),\n }),\n )\n .default([]),\n});\n\nexport const extensionTranslationRecordSchema = z.object({\n extensionId: z.string(),\n defaultLocale: z.string(),\n bundles: z.record(z.string(), z.record(z.string(), z.string())),\n});\n\nexport type ExtensionThemeRecord = z.infer<typeof extensionThemeRecordSchema>;\nexport type ExtensionFileIconThemeRecord = z.infer<typeof extensionFileIconThemeRecordSchema>;\nexport type ExtensionTranslationRecord = z.infer<typeof extensionTranslationRecordSchema>;\n","import { z } from \"zod\";\nimport { localizableStringSchema } from \"./common\";\n\nexport const extensionArtifactMountSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n relativePath: z.string(),\n fullPath: z.string(),\n label: localizableStringSchema,\n watch: z.boolean(),\n});\n\nexport type ExtensionArtifactMount = z.infer<typeof extensionArtifactMountSchema>;\n","export const workbenchMenuTargets = [\"workbench.nav.actions\", \"workbench.nav.overflow\"] as const;\n\nexport const workbenchTreeTargets = [\n \"workbench.left.tree\",\n \"workbench.main.left.tree\",\n \"workbench.main.right.tree\",\n] as const;\n\nexport const workbenchRegions = [\n \"nav\",\n \"activity\",\n \"sidenav\",\n \"main-header\",\n \"main\",\n \"secondary-header\",\n \"secondary\",\n \"side-header\",\n \"side\",\n \"status\",\n \"overlay\",\n] as const;\n\nexport const workbenchViewTargets = [\n \"workbench.main\",\n \"workbench.main.left\",\n \"workbench.main.right\",\n \"workbench.secondary\",\n] as const;\n\nexport const workbenchSettingsTargets = [\"workbench.settings\"] as const;\n\nexport const workbenchSettingsScopes = [\"project\", \"global\"] as const;\n\nexport const workbenchModeLayoutTargets = [\n \"workbench.left\",\n \"workbench.main.left\",\n \"workbench.main\",\n \"workbench.main.right\",\n \"workbench.secondary\",\n] as const;\n\nexport type WorkbenchMenuTarget = (typeof workbenchMenuTargets)[number];\nexport type WorkbenchTreeTarget = (typeof workbenchTreeTargets)[number];\nexport type WorkbenchViewTarget = (typeof workbenchViewTargets)[number];\nexport type WorkbenchSettingsTarget = (typeof workbenchSettingsTargets)[number];\n\nexport type WorkbenchAttachmentTarget =\n | WorkbenchMenuTarget\n | WorkbenchTreeTarget\n | WorkbenchViewTarget\n | WorkbenchSettingsTarget;\n","import { z } from \"zod\";\nimport {\n workbenchMenuTargets,\n workbenchModeLayoutTargets,\n workbenchRegions,\n workbenchSettingsScopes,\n workbenchSettingsTargets,\n workbenchTreeTargets,\n workbenchViewTargets,\n} from \"../extension-kernel/workbench-targets\";\n\nexport const workbenchMenuTargetSchema = z.enum(workbenchMenuTargets);\nexport const workbenchTreeTargetSchema = z.enum(workbenchTreeTargets);\nexport const workbenchRegionSchema = z.enum(workbenchRegions);\nexport const workbenchViewTargetSchema = z.enum(workbenchViewTargets);\nexport const workbenchSettingsTargetSchema = z.enum(workbenchSettingsTargets);\nexport const workbenchModeLayoutTargetSchema = z.enum(workbenchModeLayoutTargets);\nexport const workbenchAttachmentTargetSchema = z.union([\n workbenchMenuTargetSchema,\n workbenchTreeTargetSchema,\n workbenchViewTargetSchema,\n workbenchSettingsTargetSchema,\n]);\nexport const workbenchSettingsScopeSchema = z.enum(workbenchSettingsScopes);\n","import { z } from \"zod\";\nimport {\n extensionPlacementSchema,\n extensionWhenExpressionSchema,\n jsonObjectSchema,\n localizableStringSchema,\n} from \"./common\";\nimport { workbenchMenuTargetSchema } from \"./targets\";\n\nconst commandParamDescriptorSchema = z\n .object({ type: z.string(), description: localizableStringSchema.optional() })\n .catchall(z.unknown());\n\nexport const extensionCommandRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n description: localizableStringSchema.optional(),\n cliPath: z.string().optional(),\n cliAliases: z.array(z.string()).optional(),\n examples: z.array(z.string()).optional(),\n automation: z.boolean().optional(),\n mutating: z.boolean().optional(),\n resourceMutation: z\n .discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"rename\"), resourceType: z.string(), idParam: z.string(), labelParam: z.string() }),\n z.object({ kind: z.literal(\"remove\"), resourceType: z.string(), idParam: z.string() }),\n ])\n .optional(),\n params: z.record(z.string(), commandParamDescriptorSchema).optional(),\n});\n\nexport const extensionParamObjectSchema = z.record(z.string(), commandParamDescriptorSchema);\n\nexport const extensionMiddlewareRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n commandId: z.string(),\n});\n\nexport const extensionHookRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n eventId: z.string(),\n});\n\nexport const extensionScheduleRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n cron: z.string(),\n commandId: z.string(),\n});\n\nexport const workbenchExtensionAutomationRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n extensionInstanceId: z.string().optional(),\n title: localizableStringSchema,\n cron: z.string(),\n commandId: z.string(),\n enabled: z.boolean(),\n});\n\nexport const extensionMenuContributionSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n commandId: z.string(),\n slotId: z.string(),\n target: workbenchMenuTargetSchema.optional(),\n label: localizableStringSchema,\n group: z.string().optional(),\n placement: extensionPlacementSchema.optional(),\n icon: z.string().optional(),\n presentation: z.enum([\"menu-item\", \"button\", \"icon-button\"]).optional(),\n params: jsonObjectSchema.optional(),\n when: extensionWhenExpressionSchema.optional(),\n disabledWhen: extensionWhenExpressionSchema.optional(),\n disabledReason: localizableStringSchema.optional(),\n});\n\nexport const extensionCommandPaletteContributionSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n commandId: z.string(),\n label: localizableStringSchema,\n group: z.string().optional(),\n placement: extensionPlacementSchema.optional(),\n icon: z.string().optional(),\n params: jsonObjectSchema.optional(),\n when: extensionWhenExpressionSchema.optional(),\n});\n\nexport type ExtensionCommandRecord = z.infer<typeof extensionCommandRecordSchema>;\nexport type ExtensionMiddlewareRecord = z.infer<typeof extensionMiddlewareRecordSchema>;\nexport type ExtensionHookRecord = z.infer<typeof extensionHookRecordSchema>;\nexport type ExtensionScheduleRecord = z.infer<typeof extensionScheduleRecordSchema>;\nexport type WorkbenchExtensionAutomationRecord = z.infer<typeof workbenchExtensionAutomationRecordSchema>;\nexport type ExtensionMenuContribution = z.infer<typeof extensionMenuContributionSchema>;\nexport type ExtensionCommandPaletteContribution = z.infer<typeof extensionCommandPaletteContributionSchema>;\n","import { z } from \"zod\";\nimport { extensionDiagnosticSchema } from \"./common\";\n\nexport const extensionHostCapabilitySchema = z.object({\n version: z.number().int().positive(),\n since: z.string().optional(),\n});\n\nexport const extensionHostCapabilitiesSchema = z.object({\n host: z.literal(\"dashboard\"),\n hostVersion: z.string(),\n capabilities: z.record(z.string(), extensionHostCapabilitySchema),\n});\n\nexport const extensionHostCompatibilitySchema = z.object({\n status: z.enum([\"verified\", \"unverified\"]),\n host: extensionHostCapabilitiesSchema.optional(),\n diagnostics: z.array(extensionDiagnosticSchema),\n});\n\nexport type ExtensionHostCapability = z.infer<typeof extensionHostCapabilitySchema>;\nexport type ExtensionHostCapabilities = z.infer<typeof extensionHostCapabilitiesSchema>;\nexport type ExtensionHostCompatibility = z.infer<typeof extensionHostCompatibilitySchema>;\n","import type { Localizable } from \"../l10n\";\nimport type { CommandRef } from \"./commands\";\nimport type { ExtensionContextBase } from \"./context\";\nimport type { ContributionDefinition, ResourceKindRef } from \"./contribution-identity\";\nimport type { MaybePromise } from \"./json\";\nimport type { ResourceRef, ViewHierarchyParent } from \"./resources\";\n\nexport const dockedWorkbenchRegions = [\"sidenav\", \"main\", \"secondary\", \"side\"] as const;\nexport type DockedWorkbenchRegion = (typeof dockedWorkbenchRegions)[number];\nexport const extensionPanelRegions = [\"main\", \"secondary\", \"side\"] as const;\nexport type ExtensionPanelRegion = (typeof extensionPanelRegions)[number];\n\nexport interface RegionSize {\n readonly defaultPx?: number;\n readonly minPx?: number;\n readonly maxPx?: number;\n}\n\nexport interface ResourceMenuSlotDefinition {\n readonly id: string;\n readonly placement: \"header-primary\" | \"header-overflow\" | \"context-menu\";\n readonly label?: Localizable<string>;\n readonly access: \"owner\" | \"public\";\n readonly order?: number;\n}\n\nexport interface ResourceKindDefinition extends ContributionDefinition<\"resource-kind\"> {\n readonly prefix?: string | { readonly $prefix: \"project\" };\n readonly label?: Localizable<string>;\n readonly icon?: string;\n readonly menuSlots?: readonly ResourceMenuSlotDefinition[];\n /**\n * A command of this extension that returns the current reference for an open\n * resource, or null. The host runs it with `ctx.resource` set to the open\n * resource when the page opens and after the extension emits an event, and\n * shows the returned label, icon, and metadata. Keep metadata the page owns,\n * such as a selected document, from `ctx.resource`.\n */\n readonly resolve?: CommandRef;\n /** Resolve params.resources as a bounded ResourceRef[] batch. Return ResourceResolution[] with owner navigation; omit missing resources. */\n readonly resolveMany?: CommandRef;\n /** Claim workspace-relative path prefixes. The owner command receives params.path and params.workspaceId and returns ResourceResolution or null. Longest matching prefix wins. */\n readonly paths?: readonly { readonly prefix: string; readonly resolve: CommandRef }[];\n /** Validate an explicit anchor change. Return ResourceAnchorValidationResult. Must not mutate links. */\n readonly validateAnchors?: CommandRef;\n /** Select related resources for an explicit source open. Return RelatedResourceOpenings using ctx.resource. */\n readonly relatedOpenings?: CommandRef;\n}\n\nexport interface ResourceHierarchyProvider extends ContributionDefinition<\"resource-hierarchy-provider\"> {\n resourceKind: ResourceKindRef;\n parent(ctx: ExtensionContextBase, resource: ResourceRef): MaybePromise<ResourceRef | ViewHierarchyParent | null>;\n}\n","import { z } from \"zod\";\nimport { localizableStringSchema } from \"./common\";\n\nexport const workbenchExtensionConnectionRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n label: localizableStringSchema,\n authType: z.enum([\"bearer\", \"header\"]),\n supportsCheck: z.boolean(),\n});\n\nexport const extensionConnectionRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n connectionId: z.string(),\n baseUrl: z.string(),\n authType: z.enum([\"bearer\", \"header\"]),\n configured: z.boolean(),\n lastCheck: z\n .object({\n ok: z.boolean(),\n status: z.number().int().nullable(),\n error: z.string().nullable(),\n checkedAt: z.string(),\n })\n .nullable(),\n updatedAt: z.string(),\n});\n\nexport const configureExtensionConnectionSchema = z.object({\n baseUrl: z.url(),\n secret: z.string().optional(),\n});\n\nexport const listExtensionConnectionsResponseSchema = z.object({\n connections: z.array(extensionConnectionRecordSchema),\n});\n\nexport type ExtensionConnectionRecord = z.infer<typeof extensionConnectionRecordSchema>;\nexport type ConfigureExtensionConnectionInput = z.infer<typeof configureExtensionConnectionSchema>;\nexport type ListExtensionConnectionsResponse = z.infer<typeof listExtensionConnectionsResponseSchema>;\n","export const isNavigationHref = (href: unknown) => {\n if (typeof href !== \"string\") return false;\n try {\n const { protocol } = new URL(href);\n return protocol === \"https:\" || protocol === \"http:\";\n } catch {\n return false;\n }\n};\n","import type { FileSourcePosition } from \"./types/pages\";\n\nexport const isFileSourcePosition = (value: unknown): value is FileSourcePosition => {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const position = value as FileSourcePosition;\n const positive = (number: unknown) => typeof number === \"number\" && Number.isSafeInteger(number) && number > 0;\n if (!positive(position.line)) return false;\n for (const key of [\"column\", \"endLine\", \"endColumn\"] as const) {\n if (position[key] !== undefined && !positive(position[key])) return false;\n }\n if (position.endColumn !== undefined && position.endLine === undefined) return false;\n if (position.endLine !== undefined) {\n if (position.endLine < position.line) return false;\n if (position.endLine === position.line && (position.endColumn ?? 1) < (position.column ?? 1)) return false;\n }\n return true;\n};\n","import type { PageParamDefinition, PageParams, PageParamValue } from \"./types/pages\";\n\nexport type PageParamDefinitions = Readonly<Record<string, PageParamDefinition>>;\n\n// Existing host selectors keep their meaning. Future host keys must start with `_`.\nconst reserved = new Set([\"resource\", \"section\", \"document\", \"line\", \"column\", \"endLine\", \"endColumn\"]);\nconst invalid = (name: string) => new Error(`page_param_invalid: ${name}`);\nconst equal = (left: unknown, right: unknown) => JSON.stringify(left) === JSON.stringify(right);\n\nexport const isPageParamValue = (definition: PageParamDefinition, value: unknown): value is PageParamValue => {\n if (definition.type === \"string[]\") return Array.isArray(value) && value.every((item) => typeof item === \"string\");\n if (definition.type === \"string\")\n return typeof value === \"string\" && (!definition.values || definition.values.includes(value));\n if (definition.type === \"number\") return typeof value === \"number\" && Number.isFinite(value);\n return typeof value === \"boolean\";\n};\n\nexport const validatePageParamDefinitions = (definitions: PageParamDefinitions = {}) => {\n if (Object.keys(definitions).length > 32) throw invalid(\"at most 32 params\");\n for (const [name, definition] of Object.entries(definitions)) {\n if (name.length > 64 || !/^[a-z][a-z0-9-]*$/.test(name) || reserved.has(name))\n throw new Error(`page_param_reserved: ${name}`);\n if (definition.default !== undefined && !isPageParamValue(definition, definition.default)) throw invalid(name);\n }\n};\n\nconst validateNames = (definitions: PageParamDefinitions, values: Readonly<Record<string, unknown>>) => {\n for (const name of Object.keys(values)) if (!Object.hasOwn(definitions, name)) throw invalid(name);\n};\n\nexport const normalizePageParams = (\n definitions: PageParamDefinitions = {},\n values: Readonly<Record<string, unknown>> = {},\n strict = true,\n) => {\n const result: Record<string, PageParamValue> = {};\n if (strict) validateNames(definitions, values);\n for (const name of Object.keys(definitions)) {\n if (!Object.hasOwn(values, name)) continue;\n const value = values[name];\n const definition = definitions[name]!;\n if (!isPageParamValue(definition, value)) {\n if (strict) throw invalid(name);\n continue;\n }\n if (equal(value, definition.default) || (Array.isArray(value) && !value.length)) continue;\n result[name] = Array.isArray(value) ? Object.freeze([...value]) : value;\n }\n const params = Object.keys(result).length ? Object.freeze(result) : undefined;\n if (pageParamsQuery(definitions, params).toString().length > 2048) {\n if (strict) throw invalid(\"query exceeds 2048 characters\");\n return undefined;\n }\n return params;\n};\n\nexport const resolvePageParams = (definitions: PageParamDefinitions = {}, params?: PageParams) => {\n const result: Record<string, PageParamValue> = {};\n for (const [name, definition] of Object.entries(definitions)) {\n if (definition.default !== undefined)\n result[name] = Array.isArray(definition.default) ? Object.freeze([...definition.default]) : definition.default;\n }\n return Object.freeze({ ...result, ...params });\n};\n\nexport const pageParamsQuery = (definitions: PageParamDefinitions = {}, params?: PageParams) => {\n const query = new URLSearchParams();\n for (const name of Object.keys(definitions)) {\n const value = params?.[name];\n if (value === undefined) continue;\n for (const item of Array.isArray(value) ? value : [value]) query.append(name, String(item));\n }\n return query;\n};\n\nexport const parsePageParams = (definitions: PageParamDefinitions = {}, query: URLSearchParams) => {\n const values: Record<string, unknown> = {};\n for (const [name, definition] of Object.entries(definitions)) {\n const items = query.getAll(name);\n if (!items.length || (definition.type !== \"string[]\" && items.length !== 1)) continue;\n const raw = items[0]!;\n if (definition.type === \"string[]\") values[name] = items;\n else if (definition.type === \"number\") {\n if (String(Number(raw)) === raw) values[name] = Number(raw);\n } else if (definition.type === \"boolean\") {\n if (raw === \"true\" || raw === \"false\") values[name] = raw === \"true\";\n } else values[name] = raw;\n }\n const params = normalizePageParams(definitions, values, false);\n return pageParamsQuery(definitions, params).toString().length <= 2048 ? params : undefined;\n};\n","import { z } from \"zod\";\nimport { validatePageParamDefinitions } from \"../extension-kernel/page-params\";\n\nexport const pageParamValueSchema = z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]);\nexport const pageParamDefinitionsSchema = z\n .record(\n z.string(),\n z.discriminatedUnion(\"type\", [\n z\n .object({\n type: z.literal(\"string\"),\n default: z.string().optional(),\n values: z.array(z.string()).readonly().optional(),\n })\n .strict(),\n z.object({ type: z.literal(\"number\"), default: z.number().optional() }).strict(),\n z.object({ type: z.literal(\"boolean\"), default: z.boolean().optional() }).strict(),\n z.object({ type: z.literal(\"string[]\"), default: z.array(z.string()).readonly().optional() }).strict(),\n ]),\n )\n .superRefine((value, ctx) => {\n try {\n validatePageParamDefinitions(value);\n } catch (error) {\n ctx.addIssue({ code: \"custom\", message: String(error) });\n }\n });\n","import { z } from \"zod\";\nimport { serializableJsonObjectSchema } from \"./common\";\n\nexport const extensionResourceRefSchema = z.object({\n shorthand: z.string().optional(),\n type: z.string(),\n id: z.string(),\n projectId: z.string().optional(),\n label: z.string().optional(),\n icon: z.string().optional(),\n extensionId: z.string().optional(),\n metadata: serializableJsonObjectSchema.optional(),\n});\n","import { z } from \"zod\";\nimport { serializableJsonObjectSchema } from \"./common\";\n\nexport const contributionRefSchema = <Kind extends string>(kind: Kind) =>\n z.object({ extensionId: z.string(), kind: z.literal(kind), id: z.string() });\n\nexport const pageRefSchema = contributionRefSchema(\"page\");\nexport const placementRefSchema = contributionRefSchema(\"placement\");\nexport const modeRefSchema = contributionRefSchema(\"mode\");\nexport const viewRefSchema = contributionRefSchema(\"view\");\nexport const resourceKindRefSchema = contributionRefSchema(\"resource-kind\");\n\nexport const pageSlotRefSchema = z.object({\n kind: z.literal(\"page-slot\"),\n page: pageRefSchema,\n id: z.string(),\n});\n\nexport const panelRefSchema = z.union([placementRefSchema, pageSlotRefSchema]);\n\nexport const commandTargetSchema = z.object({\n command: contributionRefSchema(\"command\"),\n params: serializableJsonObjectSchema.optional(),\n});\n","import { z } from \"zod\";\nimport { isNavigationHref } from \"../extension-kernel/navigation-href\";\nimport { isFileSourcePosition } from \"../extension-kernel/source-position\";\nimport type { FileSourcePosition, PageParams } from \"../extension-kernel/types/pages\";\nimport { pageParamValueSchema } from \"./page-params-schema\";\nimport { extensionResourceRefSchema } from \"./resource-ref\";\nimport { commandTargetSchema, pageRefSchema, panelRefSchema } from \"./workbench-refs-metadata\";\n\nconst sourcePositionSchema = z\n .object({\n line: z.number().int().positive(),\n column: z.number().int().positive().optional(),\n endLine: z.number().int().positive().optional(),\n endColumn: z.number().int().positive().optional(),\n })\n .refine(isFileSourcePosition, \"Expected ordered source coordinates\");\n\nconst sectionSchema = z.object({\n anchors: z.array(\n z.object({ id: z.string(), heading: z.string(), occurrence: z.number().int().nonnegative().optional() }),\n ),\n});\n\nexport interface MetadataPageTarget {\n kind: \"page\";\n page: z.infer<typeof pageRefSchema>;\n resource?: z.infer<typeof extensionResourceRefSchema>;\n open?: \"preview\" | \"pin\";\n section?: z.infer<typeof sectionSchema>;\n position?: FileSourcePosition;\n params?: PageParams;\n parent?: MetadataPageTarget;\n}\n\nconst pageTargetSchema: z.ZodType<MetadataPageTarget> = z\n .lazy(() =>\n z\n .object({\n kind: z.literal(\"page\"),\n page: pageRefSchema,\n resource: extensionResourceRefSchema.optional(),\n open: z.enum([\"preview\", \"pin\"]).optional(),\n section: sectionSchema.optional(),\n position: sourcePositionSchema.optional(),\n params: z.record(z.string(), pageParamValueSchema).optional(),\n parent: pageTargetSchema.optional(),\n })\n .refine((value) => !(value.position && value.section), \"Choose a source position or a heading section\"),\n )\n .meta({ id: \"WorkbenchMetadataPageTarget\" });\n\nconst navigationOperationSchema = z.union([\n pageTargetSchema,\n z.object({\n kind: z.literal(\"panel\"),\n panel: panelRefSchema,\n resource: extensionResourceRefSchema.optional(),\n open: z.enum([\"preview\", \"pin\"]).optional(),\n }),\n]);\n\nexport const navigationTargetSchema = z.union([\n navigationOperationSchema,\n z.object({ kind: z.literal(\"command\"), target: commandTargetSchema }),\n z.object({ kind: z.literal(\"href\"), href: z.string().refine(isNavigationHref, \"Expected an HTTP or HTTPS URL\") }),\n z.object({ kind: z.literal(\"compound\"), targets: z.array(navigationOperationSchema).min(1) }),\n]);\n","import { z } from \"zod\";\nimport type { CommandOutcome, JsonValue, NavigationTarget } from \"../extension-kernel\";\nimport { serializableJsonObjectSchema } from \"./common\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\n\nconst notice = z.object({\n type: z.enum([\"info\", \"success\", \"warning\", \"error\"]),\n title: z.string().optional(),\n message: z.string(),\n metadata: serializableJsonObjectSchema.optional(),\n});\nconst diagnostic = 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: serializableJsonObjectSchema.optional(),\n});\nexport const createCommandOutcomeSchema = (jsonValue: z.ZodType<JsonValue>) => {\n const error = z.object({\n name: z.string().optional(),\n message: z.string(),\n stack: z.string().optional(),\n cause: jsonValue.optional(),\n });\n const annotations = {\n notices: z.array(notice).optional(),\n diagnostics: z.array(diagnostic).optional(),\n };\n const failure = {\n ...annotations,\n ok: z.literal(false),\n code: z.string().optional(),\n reason: z.string(),\n data: serializableJsonObjectSchema.optional(),\n cause: jsonValue.optional(),\n error: error.optional(),\n };\n const navigation: z.ZodType<NavigationTarget> = navigationTargetSchema;\n\n const outcome: z.ZodType<CommandOutcome> = z.discriminatedUnion(\"status\", [\n z\n .object({\n ...annotations,\n ok: z.literal(true),\n status: z.literal(\"success\"),\n value: z.unknown().optional(),\n navigationRequests: z.array(navigation).optional(),\n })\n .transform((outcome) => ({ ...outcome, value: outcome.value })),\n z.object({ ...failure, status: z.literal(\"rejected\") }),\n z.object({ ...failure, status: z.literal(\"error\") }),\n ]);\n\n return outcome;\n};\n\nexport const validatedCommandOutcomeSchema = createCommandOutcomeSchema(z.json());\n","import { z } from \"zod\";\nimport type { JsonValue, NavigationTarget, Struct } from \"../extension-kernel\";\nimport { createCommandOutcomeSchema, validatedCommandOutcomeSchema } from \"./command-outcome\";\nimport { commandSourceSchema, extensionSlotKindSchema, jsonObjectSchema } from \"./common\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\nimport { pageParamValueSchema } from \"./page-params-schema\";\nimport { extensionResourceRefSchema } from \"./resource-ref\";\nimport { workbenchAttachmentTargetSchema } from \"./targets\";\n\nexport { extensionResourceRefSchema } from \"./resource-ref\";\n\nexport const extensionSlotInvocationSchema = z.object({\n id: z.string(),\n kind: extensionSlotKindSchema,\n context: jsonObjectSchema,\n});\n\nexport const extensionAttachmentInvocationSchema = z.object({\n target: workbenchAttachmentTargetSchema,\n mode: z.string().optional(),\n projectId: z.string().optional(),\n resource: extensionResourceRefSchema.optional(),\n});\n\nexport const extensionRendererContextSchema = z.object({\n rendererId: z.string(),\n pageParams: z.record(z.string(), pageParamValueSchema).optional(),\n projectId: z.string().optional(),\n modeId: z.string().optional(),\n resource: extensionResourceRefSchema.optional(),\n invocation: z.object({ placement: z.enum([\"visible\", \"background\"]) }).optional(),\n});\n\nexport const commandExecuteRequestSchema = z.object({\n projectId: z.string().min(1),\n workspaceId: z.string().optional(),\n params: jsonObjectSchema.optional(),\n resource: extensionResourceRefSchema.optional(),\n attachment: extensionAttachmentInvocationSchema.optional(),\n slot: extensionSlotInvocationSchema.optional(),\n source: commandSourceSchema.optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nexport const commandExecuteBodySchema = z.object({\n workspaceId: z.string().optional(),\n params: jsonObjectSchema.optional(),\n resource: extensionResourceRefSchema.optional(),\n attachment: extensionAttachmentInvocationSchema.optional(),\n slot: extensionSlotInvocationSchema.optional(),\n source: commandSourceSchema.optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nexport const dispatchExtensionEventBodySchema = z\n .object({\n eventId: z.string().min(1),\n payload: jsonObjectSchema,\n })\n .strict();\n\nexport { validatedCommandOutcomeSchema };\n\nconst responseNavigationTargetSchema: z.ZodType<NavigationTarget> = navigationTargetSchema;\n/** @deprecated Use validatedCommandOutcomeSchema. */\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: z.object({ name: z.string().optional(), message: z.string(), stack: z.string().optional() }).optional(),\n notices: z\n .array(\n 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 )\n .optional(),\n diagnostics: z\n .array(\n 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 )\n .optional(),\n});\n\nconst responseFields = {\n commandId: z.string(),\n extensionId: z.string(),\n eventIds: z.array(z.string()).optional(),\n};\n/** @deprecated Use commandExecutionResultSchema. */\nexport const commandExecuteResponseSchema = z.object({\n ...responseFields,\n outcome: commandOutcomeSchema,\n});\nexport const createCommandExecutionResultSchema = (jsonValue: z.ZodType<JsonValue>) =>\n z.object({ ...responseFields, outcome: createCommandOutcomeSchema(jsonValue) });\n\nexport const commandExecutionResultSchema = createCommandExecutionResultSchema(z.json());\n\nexport type CommandExecuteRequest = z.infer<typeof commandExecuteRequestSchema>;\nexport type CommandExecuteBody = z.infer<typeof commandExecuteBodySchema>;\n/** @deprecated Use CommandExecutionResult. */\nexport type CommandExecuteResponse = z.infer<typeof commandExecuteResponseSchema>;\nexport type CommandExecutionResult = z.infer<typeof commandExecutionResultSchema>;\nexport type ExtensionRendererContext = z.infer<typeof extensionRendererContextSchema>;\nexport type DispatchExtensionEventInput = {\n eventId: string;\n payload: Struct;\n};\n","import { z } from \"zod\";\nimport type { ControlParam, ControlsQueryResult } from \"../extension-kernel\";\nimport { extensionResourceRefSchema } from \"./execute\";\n\nconst base = { id: z.string(), name: z.string(), description: z.string().optional(), readOnly: z.boolean().optional() };\nconst numeric = { min: z.number().optional(), max: z.number().optional(), step: z.number().optional() };\nconst vector = z.strictObject({ x: z.number(), y: z.number() });\nconst range = z.tuple([z.number(), z.number()]);\nconst harness = z.strictObject({\n harnessId: z.string().min(1),\n model: z.string().optional(),\n params: z.record(z.string(), z.union([z.string(), z.boolean()])).optional(),\n});\nconst selectionValue = z.union([z.string(), z.array(z.string())]);\nconst selectionOption = z.strictObject({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional(),\n color: z.string().optional(),\n description: z.string().optional(),\n disabled: z.boolean().optional(),\n});\nconst selection = {\n placeholder: z.string().optional(),\n searchable: z.boolean().optional(),\n searchPlaceholder: z.string().optional(),\n emptyText: z.string().optional(),\n disabled: z.boolean().optional(),\n};\nconst image = z.strictObject({ src: z.string(), alt: z.string() });\nconst primitive = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst readOnlyContent = z.union([\n primitive,\n z.array(primitive),\n image.extend({ type: z.literal(\"image\") }),\n z.strictObject({ type: z.literal(\"image-gallery\"), images: z.array(image) }),\n]);\n\nexport const controlValueSchema = z.union([primitive, z.array(z.string()), range, vector, harness]);\nexport const controlValuesSchema = z.record(z.string(), controlValueSchema);\nexport const controlParamSchema = z.discriminatedUnion(\"type\", [\n z.strictObject({ ...base, type: z.literal(\"harness\"), defaultValue: harness }),\n z.strictObject({ ...base, ...numeric, type: z.literal(\"number\"), defaultValue: z.number() }),\n z.strictObject({ ...base, type: z.literal(\"boolean\"), defaultValue: z.boolean() }),\n z.strictObject({ ...base, type: z.literal(\"text\"), defaultValue: z.string(), singleLine: z.boolean().optional() }),\n z.strictObject({\n ...base,\n type: z.literal(\"markdown\"),\n defaultValue: z.string(),\n placeholder: z.string().optional(),\n }),\n z.strictObject({\n ...base,\n ...selection,\n type: z.literal(\"selection\"),\n allowCustomValues: z.boolean().optional(),\n defaultValue: selectionValue,\n options: z.array(selectionOption),\n multiSelect: z.boolean().optional(),\n clearable: z.boolean().optional(),\n group: z\n .strictObject({\n id: z.string(),\n name: z.string(),\n defaultValue: z.string(),\n options: z.array(selectionOption),\n ...selection,\n })\n .optional(),\n }),\n z.strictObject({\n ...base,\n type: z.literal(\"date\"),\n defaultValue: z.string(),\n min: z.string().optional(),\n max: z.string().optional(),\n }),\n z.strictObject({ ...base, type: z.literal(\"color\"), defaultValue: z.string() }),\n z.strictObject({ ...base, type: z.literal(\"readOnly\"), value: readOnlyContent }),\n z.strictObject({\n ...base,\n type: z.literal(\"resource\"),\n defaultValue: selectionValue,\n options: z.array(\n z.strictObject({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional(),\n color: z.string().optional(),\n description: z.string().optional(),\n href: z.string().optional(),\n ref: extensionResourceRefSchema.optional(),\n copyText: z.string().optional(),\n }),\n ),\n multiSelect: z.boolean().optional(),\n editable: z.boolean().optional(),\n placeholder: z.string().optional(),\n emptyText: z.string().optional(),\n }),\n z.strictObject({\n ...base,\n ...numeric,\n type: z.literal(\"range\"),\n defaultValue: range,\n min: z.number(),\n max: z.number(),\n unit: z.string().optional(),\n markerCount: z.number().optional(),\n }),\n z.strictObject({\n ...base,\n type: z.literal(\"segmented\"),\n defaultValue: z.string(),\n variant: z.enum([\"default\", \"dots\"]).optional(),\n options: z.array(\n z.strictObject({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional(),\n indicatorColor: z.string().optional(),\n }),\n ),\n }),\n z.strictObject({\n ...base,\n type: z.literal(\"actions\"),\n defaultValue: z.string().optional(),\n options: z.array(\n z.strictObject({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional(),\n disabled: z.boolean().optional(),\n }),\n ),\n }),\n z.strictObject({\n ...base,\n type: z.literal(\"anchorGrid\"),\n defaultValue: z.enum([\n \"top-left\",\n \"top\",\n \"top-right\",\n \"left\",\n \"center\",\n \"right\",\n \"bottom-left\",\n \"bottom\",\n \"bottom-right\",\n ]),\n }),\n z.strictObject({\n ...base,\n ...numeric,\n type: z.literal(\"vector\"),\n defaultValue: vector,\n coordinateMode: z.enum([\"cartesian\", \"screen\"]).optional(),\n xLabel: z.string().optional(),\n yLabel: z.string().optional(),\n }),\n]) satisfies z.ZodType<ControlParam>;\n\nexport const controlGroupSchema = z.strictObject({\n id: z.string(),\n title: z.string(),\n description: z.string().optional(),\n params: z.array(controlParamSchema),\n collapsible: z.boolean().optional(),\n defaultCollapsed: z.boolean().optional(),\n});\nexport const controlsQueryResultSchema = z.strictObject({\n params: z.array(controlParamSchema).optional(),\n groups: z.array(controlGroupSchema).optional(),\n values: controlValuesSchema.optional(),\n readOnly: z.boolean().optional(),\n}) satisfies z.ZodType<ControlsQueryResult>;\n","import { z } from \"zod\";\nimport { localizableStringSchema } from \"./common\";\n\nexport const extensionRendererRecordBaseSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n icon: z.string().optional(),\n resourceKind: z.string().optional(),\n refreshEventIds: z.array(z.string().min(1)).optional(),\n emptyTitle: localizableStringSchema.optional(),\n emptyDescription: localizableStringSchema.optional(),\n});\n\nexport const extensionTreeRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n searchable: z.boolean().optional(),\n searchPlaceholder: localizableStringSchema.optional(),\n headerHandlerId: z.string().optional(),\n bodyHandlerId: z.string(),\n childrenHandlerId: z.string().optional(),\n moveHandlerId: z.string().optional(),\n footerHandlerId: z.string().optional(),\n defaultExpandedSectionIds: z.array(z.string()).optional(),\n defaultExpandedNodeIds: z.array(z.string()).optional(),\n});\n\nexport const extensionFileRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n loadHandlerId: z.string(),\n saveHandlerId: z.string().optional(),\n});\n\nexport type ExtensionTreeRendererRecord = z.infer<typeof extensionTreeRendererRecordSchema>;\nexport type ExtensionFileRendererRecord = z.infer<typeof extensionFileRendererRecordSchema>;\nexport type WorkbenchExtensionFileRendererRecord = z.infer<typeof extensionFileRendererRecordSchema>;\nexport type WorkbenchExtensionTreeRendererRecord = z.infer<typeof extensionTreeRendererRecordSchema>;\n","import { z } from \"zod\";\nimport { controlValuesSchema } from \"./control-declarations\";\nimport { extensionRendererRecordBaseSchema } from \"./renderers\";\n\nexport const extensionControlsRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n queryHandlerId: z.string(),\n valueChangeHandlerId: z.string().optional(),\n applyHandlerId: z.string().optional(),\n resetHandlerId: z.string().optional(),\n defaultValues: controlValuesSchema.optional(),\n});\n\nexport type ExtensionControlsRendererRecord = z.infer<typeof extensionControlsRendererRecordSchema>;\nexport type WorkbenchExtensionControlsRendererRecord = z.infer<typeof extensionControlsRendererRecordSchema>;\n","/** A condition that a filter rule applies to one field. Each field kind accepts a fixed list. */\nexport type ViewFilterCondition =\n | \"contains\"\n | \"does-not-contain\"\n | \"is\"\n | \"is-not\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"is-before\"\n | \"is-after\"\n | \"is-on-or-before\"\n | \"is-on-or-after\"\n | \"is-any-of\"\n | \"is-none-of\"\n | \"has-any-of\"\n | \"has-all-of\"\n | \"has-none-of\"\n | \"is-empty\"\n | \"is-not-empty\";\n\n// Views travel through command params, so these are type aliases: they stay assignable to JSON values.\nexport type ViewFilterRule = {\n attributeId: string;\n condition: ViewFilterCondition;\n /**\n * Text, a number, a day (\"2026-10-02\", \"today\", \"today-7\", \"today+7\"),\n * or option values. Absent for is-empty and is-not-empty.\n */\n value?: boolean | string | number | string[];\n};\n\nexport type ViewFilterGroup = {\n conjunction: \"and\" | \"or\";\n /** Normal rules share this conjunction. */\n rules: ViewFilterRule[];\n /** Advanced groups have one level and combine with the normal rules using AND. */\n groups?: { conjunction: \"and\" | \"or\"; rules: ViewFilterRule[] }[];\n};\n\nexport type ViewSortDirection = \"asc\" | \"desc\";\n\nexport type ViewSort = {\n attributeId: string;\n direction: ViewSortDirection;\n};\n\nexport type ViewFieldKind = \"string\" | \"number\" | \"boolean\" | \"date\" | \"enum\" | \"status\" | \"enum-multi\" | \"user\";\n\nconst optionConditions: readonly ViewFilterCondition[] = [\"is-any-of\", \"is-none-of\", \"is-empty\", \"is-not-empty\"];\n\n/** The only list of conditions. The UI, the views API, and the CLI all read it. */\nexport const VIEW_FILTER_CONDITIONS: Record<ViewFieldKind, readonly ViewFilterCondition[]> = {\n boolean: [\"is\", \"is-not\", \"is-empty\", \"is-not-empty\"],\n string: [\"contains\", \"does-not-contain\", \"is\", \"is-not\", \"is-empty\", \"is-not-empty\"],\n number: [\"is\", \"is-not\", \"gt\", \"gte\", \"lt\", \"lte\", \"is-empty\", \"is-not-empty\"],\n date: [\"is\", \"is-before\", \"is-after\", \"is-on-or-before\", \"is-on-or-after\", \"is-empty\", \"is-not-empty\"],\n enum: optionConditions,\n status: optionConditions,\n user: optionConditions,\n \"enum-multi\": [\"has-any-of\", \"has-all-of\", \"has-none-of\", \"is-empty\", \"is-not-empty\"],\n};\n","import { z } from \"zod\";\nimport {\n VIEW_FILTER_CONDITIONS,\n type ViewFieldKind,\n type ViewFilterCondition,\n type ViewFilterGroup,\n type ViewFilterRule,\n type ViewSort,\n} from \"../extension-kernel/types/collection-view\";\n\nexport const EMPTY_VIEW_FILTER: ViewFilterGroup = { conjunction: \"and\", rules: [] };\nexport const VIEW_DAY_PATTERN = /^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d+)?)$/;\n\nconst conditionIds = [...new Set(Object.values(VIEW_FILTER_CONDITIONS).flat())] as [\n ViewFilterCondition,\n ...ViewFilterCondition[],\n];\n\nexport const viewFilterConditionSchema = z.enum(conditionIds);\n\nexport const viewFilterRuleSchema = z.object({\n attributeId: z.string().min(1),\n condition: viewFilterConditionSchema,\n value: z.union([z.boolean(), z.string(), z.number(), z.array(z.string())]).optional(),\n});\nconst advancedFilterGroupSchema = z.strictObject({\n conjunction: z.enum([\"and\", \"or\"]),\n rules: z.array(viewFilterRuleSchema),\n});\nexport const viewFilterGroupSchema = advancedFilterGroupSchema\n .extend({\n groups: z.array(advancedFilterGroupSchema).optional(),\n })\n .refine((filter) => !filter.groups?.length || filter.conjunction === \"and\", {\n message: \"Normal rules and advanced groups combine using AND\",\n });\n\nconst viewSortSchema = z.object({ attributeId: z.string().min(1), direction: z.enum([\"asc\", \"desc\"]) });\nexport const viewSortsSchema = z.array(viewSortSchema).max(1, \"A view allows only one sort\");\n\n/** What a rule's value must be for a condition the field kind accepts. */\nexport const viewFilterValueKind = (kind: ViewFieldKind, condition: ViewFilterCondition) => {\n if (condition === \"is-empty\" || condition === \"is-not-empty\") return \"none\" as const;\n if (condition === \"is-any-of\" || condition === \"is-none-of\") return \"options\" as const;\n if (kind === \"boolean\") return \"boolean\" as const;\n if (kind === \"number\") return \"number\" as const;\n if (kind === \"date\") return \"day\" as const;\n if (kind === \"string\") return \"text\" as const;\n return \"options\" as const;\n};\n\nconst valueNeeds = {\n none: \"takes no value\",\n boolean: \"needs a boolean\",\n number: \"needs a number\",\n day: \"needs a day such as 2026-10-02, today, or today-7\",\n text: \"needs text\",\n options: \"needs a list of option values\",\n};\n\n/** A missing value marks a rule that is still being built. The renderer ignores it. */\nconst valueFits = (value: ViewFilterRule[\"value\"], kind: ReturnType<typeof viewFilterValueKind>) => {\n if (value === undefined) return true;\n if (kind === \"none\") return false;\n if (kind === \"boolean\") return typeof value === \"boolean\";\n if (kind === \"number\") return typeof value === \"number\" && Number.isFinite(value);\n if (kind === \"day\") return typeof value === \"string\" && VIEW_DAY_PATTERN.test(value);\n if (kind === \"text\") return typeof value === \"string\";\n return Array.isArray(value);\n};\n\nexport interface ViewRuleField {\n id: string;\n kind: ViewFieldKind;\n filterable: boolean;\n sortable: boolean;\n options?: { value: string }[];\n}\n\n/** enum-multi fields hold several values, so one order does not exist. */\nexport const canSortViewField = (field: Pick<ViewRuleField, \"kind\" | \"sortable\">) =>\n field.sortable && field.kind !== \"enum-multi\";\n\nconst ruleProblem = (rule: ViewFilterRule, fields: ViewRuleField[]) => {\n const filterable = fields.filter((field) => field.filterable);\n const field = filterable.find((field) => field.id === rule.attributeId);\n if (!field)\n return `Invalid filter field \"${rule.attributeId}\". Valid IDs: ${filterable.map((field) => field.id).join(\", \")}`;\n const conditions = VIEW_FILTER_CONDITIONS[field.kind];\n // Deprecated filter maps used exact value lists on scalar fields too. Keep them editable.\n const legacyList =\n [\"is-any-of\", \"is-none-of\"].includes(rule.condition) && [\"string\", \"number\", \"date\"].includes(field.kind);\n if (!conditions.includes(rule.condition) && !legacyList)\n return `Field \"${field.id}\" does not accept \"${rule.condition}\". Valid conditions: ${conditions.join(\", \")}`;\n const valueKind = viewFilterValueKind(field.kind, rule.condition);\n if (!valueFits(rule.value, valueKind))\n return `Condition \"${rule.condition}\" on \"${field.id}\" ${valueNeeds[valueKind]}`;\n const options = field.options;\n const values = Array.isArray(rule.value) ? rule.value : [];\n const unknown = options ? values.find((value) => !options.some((option) => option.value === value)) : undefined;\n if (options && unknown !== undefined)\n return `Invalid filter value \"${unknown}\" for \"${field.id}\". Valid values: ${options.map((option) => option.value).join(\", \")}`;\n return undefined;\n};\n\n/** The first reason the filter does not fit the fields, or undefined. */\nexport const findViewFilterProblem = (filter: ViewFilterGroup, fields: ViewRuleField[]) => {\n for (const rule of [...filter.rules, ...(filter.groups ?? []).flatMap((group) => group.rules)]) {\n const problem = ruleProblem(rule, fields);\n if (problem) return problem;\n }\n return undefined;\n};\n\n/** The first reason the sorts do not fit the fields, or undefined. */\nexport const findViewSortsProblem = (sorts: ViewSort[], fields: ViewRuleField[]) => {\n if (sorts.length > 1) return \"A view allows only one sort\";\n const sortable = fields.filter(canSortViewField).map((field) => field.id);\n for (const sort of sorts) {\n if (!sortable.includes(sort.attributeId))\n return `Invalid sort field \"${sort.attributeId}\". Valid IDs: ${sortable.join(\", \")}`;\n }\n return undefined;\n};\n","import { z } from \"zod\";\nimport { extensionParamObjectSchema } from \"./commands\";\nimport { jsonObjectSchema, localizableStringSchema } from \"./common\";\n\nexport const viewToolbarActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n presentation: z.enum([\"primary\", \"secondary\"]).optional(),\n params: jsonObjectSchema.optional(),\n input: extensionParamObjectSchema.optional(),\n submitLabel: z.string().optional(),\n when: z.string().optional(),\n disabled: z.boolean().optional(),\n});\nexport const viewToolbarActionRecordSchema = viewToolbarActionSchema.extend({ commandId: z.string() });\n","import { z } from \"zod\";\nimport { viewFilterGroupSchema, viewSortsSchema } from \"./collection-view\";\nimport { localizableStringSchema } from \"./common\";\nimport { extensionRendererRecordBaseSchema } from \"./renderers\";\nimport { viewToolbarActionRecordSchema } from \"./view-toolbar-action\";\n\nconst themeColorSchema = z.object({\n light: z.string(),\n dark: z.string(),\n foreground: z.object({ light: z.string(), dark: z.string() }).optional(),\n});\n\nconst columnStatSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"unique\") }),\n z.object({ type: z.literal(\"histogram\"), bins: z.number().int().positive().optional() }),\n z.object({ type: z.literal(\"top-values\"), limit: z.number().int().positive().optional() }),\n]);\n\nconst columnRendererSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\") }),\n z.object({\n type: z.literal(\"color-scale\"),\n stops: z.array(z.object({ value: z.number(), color: themeColorSchema })),\n }),\n z.object({\n type: z.literal(\"categorical-color\"),\n categories: z.array(\n z.object({ value: z.union([z.string(), z.number(), z.boolean(), z.null()]), color: themeColorSchema }),\n ),\n }),\n]);\n\nexport const dataTableRendererColumnSchema = z.object({\n id: z.string(),\n label: localizableStringSchema.optional(),\n type: z.enum([\"string\", \"number\", \"boolean\", \"date\"]).optional(),\n groupable: z.boolean().optional(),\n filterable: z.boolean().optional(),\n description: localizableStringSchema.optional(),\n icon: z.string().optional(),\n hidden: z.boolean().optional(),\n stat: columnStatSchema.optional(),\n renderer: columnRendererSchema.optional(),\n});\n\nexport const dataTableRendererSettingsSchema = z.object({\n grouping: z.string(),\n rowNumbers: z.boolean(),\n wrapRows: z.boolean(),\n showStats: z.boolean(),\n hiddenColumns: z.array(z.string()),\n columnOrder: z.array(z.string()),\n});\n\nconst dataTableRendererSavedViewSchema = z.object({\n id: z.string(),\n title: localizableStringSchema,\n settings: dataTableRendererSettingsSchema.partial().optional(),\n filter: viewFilterGroupSchema.optional(),\n sorts: viewSortsSchema.optional(),\n});\n\nconst rowActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n destructive: z.boolean().optional(),\n commandId: z.string(),\n});\n\nconst selectionActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n destructive: z.boolean().optional(),\n commandId: z.string(),\n});\n\nexport const extensionDataTableRendererRecordSchema = extensionRendererRecordBaseSchema.extend({\n toolbarActions: z.array(viewToolbarActionRecordSchema).optional(),\n columns: z.array(dataTableRendererColumnSchema).optional(),\n queryHandlerId: z.string(),\n selectionMode: z.enum([\"none\", \"multiple\"]).optional(),\n selectionActions: z.array(selectionActionSchema).optional(),\n rowActions: z.array(rowActionSchema).optional(),\n rowActivationHandlerId: z.string().optional(),\n initialPageSize: z.number().int().positive().optional(),\n pageSizeOptions: z.array(z.number().int().positive()).optional(),\n defaultSettings: dataTableRendererSettingsSchema.partial().optional(),\n defaultFilter: viewFilterGroupSchema.optional(),\n defaultSorts: viewSortsSchema.optional(),\n defaultViews: z.array(dataTableRendererSavedViewSchema).optional(),\n defaultActiveViewId: z.string().optional(),\n});\n\nexport type ExtensionDataTableRendererRecord = z.infer<typeof extensionDataTableRendererRecordSchema>;\nexport type WorkbenchExtensionDataTableRendererRecord = ExtensionDataTableRendererRecord;\n","import { z } from \"zod\";\nimport { viewFilterGroupSchema, viewSortsSchema } from \"./collection-view\";\nimport { extensionParamObjectSchema } from \"./commands\";\nimport { localizableStringSchema } from \"./common\";\nimport { extensionRendererRecordBaseSchema } from \"./renderers\";\nimport { viewToolbarActionRecordSchema } from \"./view-toolbar-action\";\n\nconst kanbanRendererEnumOptionSchema = z.object({\n value: z.string(),\n label: localizableStringSchema,\n color: z.string().optional(),\n icon: z.string().nullable().optional(),\n});\n\nconst kanbanRendererAttributeTypeSchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"enum\"), options: z.array(kanbanRendererEnumOptionSchema) }),\n z.object({ kind: z.literal(\"enum-multi\"), options: z.array(kanbanRendererEnumOptionSchema) }),\n z.object({ kind: z.literal(\"boolean\"), legacyValues: z.record(z.string(), z.boolean()).optional() }),\n z.object({ kind: z.literal(\"string\") }),\n z.object({ kind: z.literal(\"date\") }),\n z.object({ kind: z.literal(\"number\") }),\n z.object({ kind: z.literal(\"user\") }),\n]);\n\nconst kanbanRendererAttributeDisplaySchema = z.union([\n z.object({ kind: z.literal(\"badge-list\"), itemsAttributeId: z.string() }),\n z\n .object({ kind: z.string() })\n .passthrough()\n .refine((display) => display.kind !== \"badge-list\"),\n]);\n\nconst kanbanRendererAttributeSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n type: kanbanRendererAttributeTypeSchema,\n filterable: z.boolean().optional(),\n groupable: z.boolean().optional(),\n sortable: z.boolean().optional(),\n displayable: z.boolean().optional(),\n editable: z.boolean().optional(),\n display: kanbanRendererAttributeDisplaySchema.optional(),\n});\n\n/** Board display settings stored in a view. Order lives in the view's sorts. */\nexport const kanbanViewSettingsSchema = z.object({\n viewMode: z.enum([\"board\", \"list\"]),\n columnGrouping: z.string(),\n rowGrouping: z.string(),\n displayProperties: z.array(z.string()),\n});\n\nexport const kanbanRendererSavedViewSchema = z.object({\n id: z.string(),\n title: localizableStringSchema,\n settings: kanbanViewSettingsSchema,\n filter: viewFilterGroupSchema,\n sorts: viewSortsSchema,\n});\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 moveHandlerId: z.string().optional(),\n schemaRefreshEventIds: z.array(z.string()).optional(),\n columnActionHandlerId: z.string().optional(),\n createRow: extensionKanbanRendererCreateRowSchema.optional(),\n rowActions: z.array(extensionKanbanRendererRowActionSchema).optional(),\n rowActivationHandlerId: z.string().optional(),\n defaultSettings: kanbanViewSettingsSchema.partial().optional(),\n defaultFilter: viewFilterGroupSchema.optional(),\n defaultSorts: viewSortsSchema.optional(),\n defaultViews: z.array(kanbanRendererSavedViewSchema).optional(),\n defaultActiveViewId: z.string().optional(),\n hideToolbar: z.boolean().optional(),\n});\n\nexport const extensionCommandPaletteResourceRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n resourceKind: z.string().optional(),\n queryHandlerId: z.string(),\n refreshEventIds: z.array(z.string().min(1)).optional(),\n});\n\nexport type ExtensionKanbanRendererRecord = z.infer<typeof extensionKanbanRendererRecordSchema>;\nexport type ExtensionCommandPaletteResourceRecord = z.infer<typeof extensionCommandPaletteResourceRecordSchema>;\nexport type WorkbenchExtensionKanbanRendererRecord = z.infer<typeof extensionKanbanRendererRecordSchema>;\nexport type WorkbenchExtensionCommandPaletteResourceRecord = z.infer<\n typeof extensionCommandPaletteResourceRecordSchema\n>;\n","import { z } from \"zod\";\nimport { extensionWhenExpressionSchema } from \"./common\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\n\nconst parsedKeybindingChordSchema = z.object({\n key: z.string(),\n ctrl: z.boolean(),\n shift: z.boolean(),\n alt: z.boolean(),\n meta: z.boolean(),\n modifiers: z.array(z.string()),\n});\n\nexport const extensionKeybindingRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n action: navigationTargetSchema,\n /** Original chord string as authored, e.g. \"mod+shift+p\". */\n key: z.string(),\n /**\n * Platform-independent canonical chord string produced by TanStack's\n * `normalizeHotkey(input, \"mac\")`. Inputs like `cmd+P` and `mod+P`\n * collapse to the same value so they can be deduped at extension-check\n * time, matching what would happen at dispatch on macOS.\n */\n canonicalChord: z.string(),\n /** Result of TanStack's `parseHotkey(key, \"mac\")`. */\n parsed: parsedKeybindingChordSchema,\n platformOverrides: z\n .object({\n mac: z.string().optional(),\n linux: z.string().optional(),\n win: z.string().optional(),\n })\n .optional(),\n when: extensionWhenExpressionSchema.optional(),\n});\n\nexport type ExtensionKeybindingRecord = z.infer<typeof extensionKeybindingRecordSchema>;\n","import { z } from \"zod\";\n\nexport const workbenchPlacementPresentationSchema = z.object({\n mountStrategy: z.enum([\"active\", \"keep-mounted\"]).optional(),\n hiddenByDefault: z.boolean().optional(),\n headerBorderBottom: z.boolean().optional(),\n tab: z\n .object({\n queryHandlerId: z.string(),\n refreshEventIds: z.array(z.string()).optional(),\n })\n .optional(),\n});\n\nexport type WorkbenchPlacementPresentationRecord = z.infer<typeof workbenchPlacementPresentationSchema>;\n\nexport const placementPresenceSchema = z.enum([\"fixed\", \"open\", \"closed\"]);\n\nexport const regionSizeSchema = z.object({\n defaultPx: z.number().optional(),\n minPx: z.number().optional(),\n maxPx: z.number().optional(),\n});\n\nexport const regionSettingsSchema = z.object({\n showHeader: z.boolean().optional(),\n size: regionSizeSchema.optional(),\n collapsible: z.boolean().optional(),\n alwaysShowTabs: z.boolean().optional(),\n});\n","import { z } from \"zod\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\nimport { placementPresenceSchema } from \"./placement-metadata\";\nimport { resourceKindRefSchema, viewRefSchema } from \"./workbench-refs-metadata\";\n\nexport const resourceConstraintSchema = z.object({ kinds: z.array(resourceKindRefSchema).min(1) }).strict();\nexport const resourceBindingSchema = resourceConstraintSchema.extend({\n view: viewRefSchema,\n cardinality: z.enum([\"one\", \"many\"]),\n add: navigationTargetSchema.optional(),\n});\nexport const placementItemSchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"view\"), view: viewRefSchema, presence: placementPresenceSchema }).strict(),\n z.object({ kind: z.literal(\"binding\"), binding: resourceBindingSchema }).strict(),\n]);\n","import { z } from \"zod\";\nimport { localizableStringSchema } from \"./common\";\nimport { pageParamDefinitionsSchema } from \"./page-params-schema\";\nimport { workbenchPlacementPresentationSchema } from \"./placement-metadata\";\nimport { placementItemSchema, resourceConstraintSchema } from \"./resource-binding-metadata\";\nimport { modeRefSchema, pageRefSchema, viewRefSchema } from \"./workbench-refs-metadata\";\n\nexport { pageRefSchema, pageSlotRefSchema, panelRefSchema, placementRefSchema } from \"./workbench-refs-metadata\";\n\nconst mainSchema = z.discriminatedUnion(\"kind\", [\n workbenchPlacementPresentationSchema\n .extend({\n kind: z.literal(\"view\"),\n view: viewRefSchema,\n cardinality: z.enum([\"one\", \"many\"]),\n })\n .strict(),\n z.object({ kind: z.literal(\"panels\"), empty: viewRefSchema }).strict(),\n]);\nconst slotSchema = workbenchPlacementPresentationSchema\n .extend({\n id: z.string(),\n region: z.enum([\"main\", \"secondary\", \"side\"]),\n order: z.number().optional(),\n item: placementItemSchema,\n openOn: z.literal(\"page-resource\").optional(),\n })\n .strict();\n\nexport const workbenchExtensionPageRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n icon: z.string().optional(),\n path: z.string(),\n params: pageParamDefinitionsSchema.optional(),\n document: z.object({ metadataKey: z.string().refine((key) => key.trim().length > 0) }).optional(),\n mode: modeRefSchema,\n parent: pageRefSchema.optional(),\n resource: resourceConstraintSchema.optional(),\n main: mainSchema,\n slots: z.array(slotSchema),\n});\n","import { z } from \"zod\";\nimport {\n extensionSettingScopeSchema,\n extensionSettingSourceSchema,\n extensionSettingValueTypeSchema,\n extensionWebviewContributionSchema,\n localizableStringSchema,\n workbenchExtensionWebviewSchema,\n} from \"./common\";\nimport { workbenchSettingsScopeSchema, workbenchSettingsTargetSchema } from \"./targets\";\n\nexport const extensionSettingsPanelRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n extensionInstanceId: z.string().optional(),\n installedExtensionId: z.string().optional(),\n installName: z.string().optional(),\n slotId: z.string(),\n target: workbenchSettingsTargetSchema.optional(),\n scope: workbenchSettingsScopeSchema.optional(),\n title: localizableStringSchema,\n icon: z.string().optional(),\n section: z.string().optional(),\n webview: extensionWebviewContributionSchema,\n});\n\n// The declared command ref is resolved to its full command id, so clients can run it directly.\nexport const extensionSettingOptionSourceSchema = z.object({\n commandId: z.string(),\n valueField: z.string(),\n labelField: z.string(),\n params: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const extensionSettingDefinitionRecordSchema = z.object({\n key: z.string(),\n extensionId: z.string(),\n type: extensionSettingValueTypeSchema,\n scope: extensionSettingScopeSchema,\n default: z.unknown().optional(),\n enum: z.array(z.unknown()).optional(),\n options: extensionSettingOptionSourceSchema.optional(),\n title: localizableStringSchema.optional(),\n description: localizableStringSchema.optional(),\n});\n\nexport const extensionSettingValueRecordSchema = extensionSettingDefinitionRecordSchema.extend({\n value: z.unknown().optional(),\n source: extensionSettingSourceSchema,\n});\n\nexport const listExtensionSettingsResponseSchema = z.object({\n settings: z.array(extensionSettingValueRecordSchema),\n});\n\nexport const updateExtensionSettingRequestSchema = z.object({\n value: z.unknown(),\n});\n\nexport const workbenchExtensionSettingsPanelRecordSchema = extensionSettingsPanelRecordSchema.extend({\n webview: workbenchExtensionWebviewSchema,\n});\n\nexport const extensionSettingsSectionRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n scope: workbenchSettingsScopeSchema.optional(),\n order: z.number().optional(),\n});\n\nexport type ExtensionSettingsPanelRecord = z.infer<typeof extensionSettingsPanelRecordSchema>;\nexport type ExtensionSettingDefinitionRecord = z.infer<typeof extensionSettingDefinitionRecordSchema>;\nexport type ExtensionSettingValueRecord = z.infer<typeof extensionSettingValueRecordSchema>;\nexport type ListExtensionSettingsResponse = z.infer<typeof listExtensionSettingsResponseSchema>;\nexport type UpdateExtensionSettingRequest = z.infer<typeof updateExtensionSettingRequestSchema>;\nexport type WorkbenchExtensionSettingsPanelRecord = z.infer<typeof workbenchExtensionSettingsPanelRecordSchema>;\nexport type ExtensionSettingsSectionRecord = z.infer<typeof extensionSettingsSectionRecordSchema>;\n","import { z } from \"zod\";\nimport { dockedWorkbenchRegions, extensionPanelRegions } from \"../extension-kernel/types/composition\";\nimport {\n extensionCommandPaletteContributionSchema,\n extensionCommandRecordSchema,\n extensionMenuContributionSchema,\n workbenchExtensionAutomationRecordSchema,\n} from \"./commands\";\nimport {\n extensionDiagnosticSchema,\n extensionRecordSchema,\n jsonObjectSchema,\n localizableStringSchema,\n workbenchExtensionWebviewSchema,\n} from \"./common\";\nimport { workbenchExtensionConnectionRecordSchema } from \"./connections\";\nimport { extensionControlsRendererRecordSchema } from \"./controls-renderer\";\nimport { extensionDataTableRendererRecordSchema } from \"./data-table-renderer\";\nimport { extensionCommandPaletteResourceRecordSchema, extensionKanbanRendererRecordSchema } from \"./kanban-renderer\";\nimport { extensionKeybindingRecordSchema } from \"./keybindings\";\nimport { navigationTargetSchema } from \"./navigation-target-metadata\";\nimport { workbenchExtensionPageRecordSchema } from \"./page-metadata\";\nimport { regionSettingsSchema, workbenchPlacementPresentationSchema } from \"./placement-metadata\";\nimport { extensionFileRendererRecordSchema, extensionTreeRendererRecordSchema } from \"./renderers\";\nimport { placementItemSchema } from \"./resource-binding-metadata\";\nimport { extensionSettingDefinitionRecordSchema, extensionSettingsSectionRecordSchema } from \"./settings\";\nimport { viewToolbarActionSchema } from \"./view-toolbar-action\";\n\nconst contributionRefSchema = <Kind extends string>(kind: Kind) =>\n z.object({ extensionId: z.string(), kind: z.literal(kind), id: z.string() });\n\nconst commandRefSchema = contributionRefSchema(\"command\");\nconst modeRefSchema = contributionRefSchema(\"mode\");\nconst pageRefSchema = contributionRefSchema(\"page\");\nconst resourceKindRefSchema = contributionRefSchema(\"resource-kind\");\nconst settingsSectionRefSchema = contributionRefSchema(\"settings-section\");\nconst viewRefSchema = contributionRefSchema(\"view\");\n\nconst normalizedWhenSchema = z.object({\n mode: z.union([modeRefSchema, z.array(modeRefSchema)]).optional(),\n source: z.array(z.enum([\"cli\", \"dashboard\", \"api\", \"schedule\", \"event\", \"automation\", \"command-panel\"])).optional(),\n view: z.union([viewRefSchema, z.array(viewRefSchema)]).optional(),\n resourceType: z.array(resourceKindRefSchema).optional(),\n metadata: jsonObjectSchema.optional(),\n});\n\nconst rendererBaseOmissions = {\n id: true,\n extensionId: true,\n title: true,\n icon: true,\n} as const;\n\nconst commandActionSchema = z.object({\n id: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n destructive: z.boolean().optional(),\n command: commandRefSchema,\n});\n\nconst kanbanCreateRowSchema = z.object({\n command: commandRefSchema,\n title: localizableStringSchema.optional(),\n submitLabel: localizableStringSchema.optional(),\n columnParam: z.string().optional(),\n params: z.record(z.string(), z.unknown()).optional(),\n attributesParam: z.string().optional(),\n attachments: z.object({ command: commandRefSchema, resourceParam: z.string(), fileParam: z.string() }).optional(),\n labels: z\n .object({\n cancel: localizableStringSchema.optional(),\n properties: localizableStringSchema.optional(),\n submitError: localizableStringSchema.optional(),\n removeFile: localizableStringSchema.optional(),\n })\n .optional(),\n});\n\nconst webviewBodySchema = z.object({ kind: z.literal(\"webview\"), webview: workbenchExtensionWebviewSchema });\nconst treeBodySchema = extensionTreeRendererRecordSchema\n .omit(rendererBaseOmissions)\n .extend({ kind: z.literal(\"tree\") });\nconst fileBodySchema = extensionFileRendererRecordSchema\n .omit(rendererBaseOmissions)\n .extend({ kind: z.literal(\"file\") });\nconst controlsBodySchema = extensionControlsRendererRecordSchema\n .omit(rendererBaseOmissions)\n .extend({ kind: z.literal(\"controls\") });\nconst kanbanBodySchema = extensionKanbanRendererRecordSchema\n .omit({ ...rendererBaseOmissions, createRow: true, rowActions: true, toolbarActions: true })\n .extend({\n kind: z.literal(\"kanban\"),\n createRow: kanbanCreateRowSchema.optional(),\n rowActions: z.array(commandActionSchema).optional(),\n toolbarActions: z.array(viewToolbarActionSchema.extend({ command: commandRefSchema })).optional(),\n });\nconst dataTableBodySchema = extensionDataTableRendererRecordSchema\n .omit({ ...rendererBaseOmissions, selectionActions: true, rowActions: true, toolbarActions: true })\n .extend({\n kind: z.literal(\"dataTable\"),\n selectionActions: z.array(commandActionSchema).optional(),\n rowActions: z.array(commandActionSchema).optional(),\n toolbarActions: z.array(viewToolbarActionSchema.extend({ command: commandRefSchema })).optional(),\n });\n\nexport const workbenchExtensionViewBodySchema = z.discriminatedUnion(\"kind\", [\n webviewBodySchema,\n treeBodySchema,\n fileBodySchema,\n controlsBodySchema,\n kanbanBodySchema,\n dataTableBodySchema,\n]);\n\nexport const workbenchExtensionViewRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n title: localizableStringSchema,\n icon: z.string().optional(),\n body: workbenchExtensionViewBodySchema,\n});\n\nconst workbenchExtensionModeRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n label: localizableStringSchema,\n icon: z.string().optional(),\n regions: z.array(z.enum(extensionPanelRegions)),\n floatingPanels: z.enum([\"visible\", \"hidden\"]).optional(),\n regionSettings: z.partialRecord(z.enum(dockedWorkbenchRegions), regionSettingsSchema).optional(),\n defaultTheme: contributionRefSchema(\"theme\").optional(),\n chrome: z\n .partialRecord(z.enum([\"nav\", \"sidenav\", \"activity\", \"status\"]), z.union([viewRefSchema, z.literal(false)]))\n .optional(),\n});\n\nconst workbenchExtensionPlacementRecordSchema = workbenchPlacementPresentationSchema.extend({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n mode: modeRefSchema,\n item: placementItemSchema,\n region: z.enum(extensionPanelRegions),\n order: z.number().optional(),\n movableTo: z.array(z.enum(extensionPanelRegions)).optional(),\n});\n\nconst workbenchExtensionViewMenuRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n owner: viewRefSchema,\n view: viewRefSchema,\n side: z.enum([\"left\", \"right\"]),\n group: z.string().optional(),\n placement: z.enum([\"first\", \"default\", \"last\"]).optional(),\n hostTreeHeader: z.enum([\"default\", \"none\"]).optional(),\n hostTreeFooter: z.enum([\"default\", \"none\"]).optional(),\n});\n\nconst workbenchExtensionNavigationItemRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n owner: z.union([modeRefSchema, pageRefSchema]),\n slot: z.enum([\"header\", \"content\", \"footer\"]),\n label: localizableStringSchema,\n icon: z.string().optional(),\n group: z.string().optional(),\n when: normalizedWhenSchema.optional(),\n action: navigationTargetSchema,\n});\n\nconst workbenchExtensionNavigationTreeRecordSchema = z.object({\n id: z.string(),\n extensionId: z.string(),\n owner: z.union([modeRefSchema, pageRefSchema]),\n slot: z.enum([\"header\", \"content\", \"footer\"]),\n view: viewRefSchema,\n resourceScope: z.enum([\"project\", \"selection\"]).optional(),\n});\n\nconst workbenchExtensionResourceKindRecordSchema = z.object({\n id: z.string(),\n localId: z.string(),\n extensionId: z.string(),\n label: localizableStringSchema.optional(),\n icon: z.string().optional(),\n resolveCommand: z.string().optional(),\n resolveManyCommand: z.string().optional(),\n relatedOpeningsCommand: z.string().optional(),\n paths: z.array(z.object({ prefix: z.string(), 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\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 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 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 activityItems: true,\n settingsSections: true,\n settingsPanels: true,\n commandPaletteResources: true,\n keybindings: true,\n settingsDefinitions: true,\n diagnostics: true,\n});\n\nexport const extensionsCheckResponseSchema = checkWorkbenchMetadataSchema.extend({\n extensionsRoot: z.string(),\n extensionsRootExists: z.boolean(),\n errorCount: z.number().int().nonnegative(),\n warningCount: z.number().int().nonnegative(),\n middlewares: z.array(extensionMiddlewareRecordSchema),\n hooks: z.array(extensionHookRecordSchema),\n schedules: z.array(extensionScheduleRecordSchema),\n artifactMounts: z.array(extensionArtifactMountSchema),\n themes: z.array(extensionThemeRecordSchema),\n fileIconThemes: z.array(extensionFileIconThemeRecordSchema),\n templates: z.array(extensionViewLikeSchema),\n skills: z.array(extensionViewLikeSchema),\n hostCompatibility: extensionHostCompatibilitySchema,\n});\n\nexport const listExtensionCommandsResponseSchema = z.object({\n commands: workbenchExtensionMetadataSchema.shape.commands,\n translations: z.array(extensionTranslationRecordSchema).optional(),\n diagnostics: workbenchExtensionMetadataSchema.shape.diagnostics,\n});\n\nexport const listExtensionAppearanceResponseSchema = z.object({\n themes: z.array(extensionThemeRecordSchema),\n fileIconThemes: z.array(extensionFileIconThemeRecordSchema),\n translations: z.array(extensionTranslationRecordSchema),\n diagnostics: workbenchExtensionMetadataSchema.shape.diagnostics,\n});\n\nexport type ExtensionsCheckResponse = z.infer<typeof extensionsCheckResponseSchema>;\nexport type ListExtensionCommandsResponse = z.infer<typeof listExtensionCommandsResponseSchema>;\nexport type ListExtensionAppearanceResponse = z.infer<typeof listExtensionAppearanceResponseSchema>;\n","import type { Localizable } from \"../l10n\";\nimport type { ViewFilterGroup, ViewSort } from \"./collection-view\";\nimport type { CommandRef } from \"./commands\";\nimport type { RendererCallback } from \"./context\";\nimport type { JsonValue, Struct } from \"./json\";\nimport type { RendererContributionBase } from \"./renderer-base\";\nimport type { RendererContext, ResourceRef } from \"./resources\";\nimport type { ViewToolbarAction } from \"./view-toolbar-action\";\n\nexport type DataTableRendererResourceRef = ResourceRef;\n\n/** Display settings stored in a data table view. */\nexport interface DataTableRendererSettings {\n /** A groupable column id, or \"none\". */\n grouping: string;\n rowNumbers: boolean;\n wrapRows: boolean;\n showStats: boolean;\n hiddenColumns: string[];\n /** Column ids in display order. An empty list means the declared order. */\n columnOrder: string[];\n}\n\n/** What a data table view shows until a contribution or a saved view says otherwise. */\nexport const DEFAULT_DATA_TABLE_SETTINGS: DataTableRendererSettings = {\n grouping: \"none\",\n rowNumbers: true,\n wrapRows: false,\n showStats: true,\n hiddenColumns: [],\n columnOrder: [],\n};\n\nexport interface DataTableRendererSavedView {\n id: string;\n title: Localizable<string>;\n settings?: Partial<DataTableRendererSettings>;\n filter?: ViewFilterGroup;\n sorts?: ViewSort[];\n}\n\nexport interface DataTableRendererQueryParams {\n renderer: RendererContext;\n /** The view's full filter. Use it only to narrow what you load; the renderer applies it to the rows you return. */\n filter: ViewFilterGroup;\n /** The view's sorts, first level first. The renderer applies them to the rows you return. */\n sorts: ViewSort[];\n settings: DataTableRendererSettings;\n}\n\nexport interface DataTableRendererThemeColor {\n light: string;\n dark: string;\n foreground?: { light: string; dark: string };\n}\n\nexport type DataTableRendererColumnStat =\n | { type: \"unique\" }\n | { type: \"histogram\"; bins?: number }\n | { type: \"top-values\"; limit?: number };\n\nexport type DataTableRendererColumnRenderer =\n | { type: \"json\" }\n | { type: \"color-scale\"; stops: Array<{ value: number; color: DataTableRendererThemeColor }> }\n | {\n type: \"categorical-color\";\n categories: Array<{\n value: string | number | boolean | null;\n color: DataTableRendererThemeColor;\n }>;\n };\n\nexport interface DataTableRendererColumn {\n id: string;\n label?: Localizable<string>;\n /** How filters and sorts compare the column. Without it, the type is inferred from the values. */\n type?: \"string\" | \"number\" | \"boolean\" | \"date\";\n /** Offers the column under Grouping in the table's Display menu. */\n groupable?: boolean;\n /** Whether this column can be filtered. Defaults to true. */\n filterable?: boolean;\n description?: Localizable<string>;\n icon?: string;\n hidden?: boolean;\n stat?: DataTableRendererColumnStat;\n renderer?: DataTableRendererColumnRenderer;\n}\n\nexport interface DataTableRendererRow {\n id: string;\n values: Record<string, JsonValue>;\n resource?: DataTableRendererResourceRef;\n}\n\nexport interface DataTableRendererQueryResult {\n rows: DataTableRendererRow[];\n columns?: DataTableRendererColumn[];\n}\n\nexport interface DataTableRendererRowAction<TParams extends Struct = Struct> {\n id: string;\n label: Localizable<string>;\n icon?: string;\n destructive?: boolean;\n command: CommandRef<TParams, unknown>;\n}\n\nexport interface DataTableRendererSelectionAction<TParams extends Struct = Struct> {\n id: string;\n label: Localizable<string>;\n icon?: string;\n destructive?: boolean;\n command: CommandRef<TParams, unknown>;\n}\n\nexport type DataTableRendererRowActivationHandler = RendererCallback<{ row: DataTableRendererRow }, void>;\n\nexport interface DataTableRendererContribution extends RendererContributionBase {\n toolbarActions?: ViewToolbarAction[];\n columns?: DataTableRendererColumn[];\n query: RendererCallback<DataTableRendererQueryParams, DataTableRendererQueryResult>;\n selectionMode?: \"none\" | \"multiple\";\n selectionActions?: DataTableRendererSelectionAction[];\n rowActions?: DataTableRendererRowAction[];\n onRowActivate?: DataTableRendererRowActivationHandler;\n initialPageSize?: number;\n pageSizeOptions?: number[];\n defaultSettings?: Partial<DataTableRendererSettings>;\n defaultFilter?: ViewFilterGroup;\n defaultSorts?: ViewSort[];\n defaultViews?: DataTableRendererSavedView[];\n defaultActiveViewId?: string;\n}\n","import type { Localizable } from \"../extension-kernel/l10n\";\nimport type {\n DataTableRendererSettings,\n KanbanRendererViewSettings,\n ViewFilterGroup,\n ViewSort,\n} from \"../extension-kernel/types\";\nimport { DEFAULT_DATA_TABLE_SETTINGS } from \"../extension-kernel/types/data-table-renderer\";\nimport { EMPTY_VIEW_FILTER } from \"./collection-view\";\n\nexport type KanbanViewSettings = KanbanRendererViewSettings;\n\nexport const DEFAULT_KANBAN_VIEW_SETTINGS: KanbanViewSettings = {\n viewMode: \"board\",\n columnGrouping: \"none\",\n rowGrouping: \"none\",\n displayProperties: [],\n};\n\ninterface DeclaredView<TSettings> {\n id: string;\n title: Localizable<string>;\n settings?: Partial<TSettings>;\n filter?: ViewFilterGroup;\n sorts?: ViewSort[];\n}\n\ninterface DeclaredViews<TSettings> {\n defaultSettings?: Partial<TSettings>;\n defaultFilter?: ViewFilterGroup;\n defaultSorts?: ViewSort[];\n defaultViews?: DeclaredView<TSettings>[];\n}\n\nconst builtInViews = <TSettings>(base: TSettings, record: DeclaredViews<TSettings>) => {\n const settings: TSettings = { ...base, ...record.defaultSettings };\n if (!record.defaultViews?.length)\n return {\n settings,\n views: [\n {\n id: \"default\",\n title: \"All\" as Localizable<string>,\n settings,\n filter: record.defaultFilter ?? EMPTY_VIEW_FILTER,\n sorts: record.defaultSorts ?? [],\n builtIn: true,\n },\n ],\n };\n return {\n settings,\n views: record.defaultViews.map((view) => ({\n ...view,\n settings: { ...settings, ...view.settings } as TSettings,\n filter: view.filter ?? EMPTY_VIEW_FILTER,\n sorts: view.sorts ?? [],\n builtIn: true,\n })),\n };\n};\n\n/** The views a board offers before anyone saves one. Titles are returned unlocalized. */\nexport const kanbanBuiltInViews = (\n record: DeclaredViews<KanbanViewSettings> & { attributes?: { id: string; type: { kind: string } }[] },\n) => {\n return builtInViews(DEFAULT_KANBAN_VIEW_SETTINGS, record);\n};\n\n/** The views a data table offers before anyone saves one. Titles are returned unlocalized. */\nexport const dataTableBuiltInViews = (record: DeclaredViews<DataTableRendererSettings>) =>\n builtInViews(DEFAULT_DATA_TABLE_SETTINGS, record);\n","import { z } from \"zod\";\nimport { jsonObjectSchema } from \"./common\";\n\nexport const enableInstalledExtensionRequestSchema = z.object({\n displayName: z.string(),\n extensionId: z.string(),\n manifest: jsonObjectSchema,\n name: z.string(),\n sourceHash: z.string().nullable().optional(),\n sourceKind: z.enum([\"local_path\", \"git\", \"registry\"]),\n sourcePath: z.string(),\n sourceRef: z.string().nullable().optional(),\n version: z.string().nullable().optional(),\n});\n\nexport const enableInstalledExtensionResponseSchema = z.object({\n enabled: z.literal(true),\n installName: z.string(),\n installedExtensionId: z.string(),\n instanceId: z.string(),\n name: z.string(),\n projectId: z.string(),\n});\n\nexport const projectExtensionInstanceSchema = z.object({\n id: z.string(),\n projectId: z.string(),\n extensionId: z.string(),\n installedExtensionId: z.string(),\n installName: z.string(),\n name: z.string(),\n displayName: z.string(),\n version: z.string().nullable().optional(),\n description: z.string().optional(),\n sourcePath: z.string(),\n scope: z.enum([\"repo\", \"global\"]),\n status: z.enum([\"pending\", \"loaded\", \"error\", \"missing\", \"disabled\"]),\n lastLoadedAt: z.string().nullable().optional(),\n lastError: jsonObjectSchema.nullable().optional(),\n enabled: z.boolean(),\n config: z.record(z.string(), z.unknown()),\n /** A newer pinned release is available for this extension's source. */\n canUpgrade: z.boolean(),\n /** New source is waiting in the extensions root. The project keeps running the adopted version until a person takes it. */\n updateAvailable: z.boolean(),\n});\n\nexport const marketplaceExtensionSchema = z.object({\n installName: z.string(),\n displayName: z.string(),\n description: z.string(),\n installed: z.boolean(),\n origin: z.object({\n kind: z.literal(\"git\"),\n url: z.string(),\n path: z.string(),\n ref: z.string(),\n }),\n publisher: z.string().optional(),\n});\n\nexport const listProjectExtensionsResponseSchema = z.object({\n extensions: z.array(projectExtensionInstanceSchema),\n marketplace: z.array(marketplaceExtensionSchema),\n});\n\nexport const setProjectExtensionEnabledRequestSchema = z.object({\n enabled: z.boolean(),\n});\n\nexport const setExtensionAutomationEnabledRequestSchema = z.object({\n enabled: z.boolean(),\n});\n\nexport const upgradeProjectExtensionResponseSchema = z.object({\n changed: z.boolean(),\n extension: projectExtensionInstanceSchema,\n});\n\nexport const installMarketplaceExtensionResponseSchema = z.object({\n extension: projectExtensionInstanceSchema,\n});\n\n/**\n * A folder dropped on the extension panel. Each file's name is its path relative to the folder\n * root, so one field carries both the content and where it goes.\n */\nexport const addLocalExtensionFolderRequestSchema = z.object({\n name: z.string().min(1),\n // A form with one file sends a single value, not a list.\n files: z.preprocess(\n (value) => (Array.isArray(value) ? value : [value]),\n z.array(z.instanceof(File).meta({ type: \"string\", format: \"binary\" })).min(1),\n ),\n});\n\nexport const addLocalExtensionFolderResponseSchema = z.object({\n extension: projectExtensionInstanceSchema,\n});\n\nexport const setupProjectExtensionResponseSchema = z.object({\n extensionId: z.string(),\n name: z.string(),\n installName: z.string(),\n installedSkills: z.array(\n z.object({\n id: z.string(),\n extensionId: z.string(),\n skillKey: z.string(),\n installedAgents: z.array(z.string()),\n }),\n ),\n});\n\nexport type EnableInstalledExtensionRequest = z.infer<typeof enableInstalledExtensionRequestSchema>;\nexport type EnableInstalledExtensionResponse = z.infer<typeof enableInstalledExtensionResponseSchema>;\nexport type ProjectExtensionInstance = z.infer<typeof projectExtensionInstanceSchema>;\nexport type MarketplaceExtension = z.infer<typeof marketplaceExtensionSchema>;\nexport type ListProjectExtensionsResponse = z.infer<typeof listProjectExtensionsResponseSchema>;\nexport type SetProjectExtensionEnabledRequest = z.infer<typeof setProjectExtensionEnabledRequestSchema>;\nexport type SetExtensionAutomationEnabledRequest = z.infer<typeof setExtensionAutomationEnabledRequestSchema>;\nexport type UpgradeProjectExtensionResponse = z.infer<typeof upgradeProjectExtensionResponseSchema>;\nexport type InstallMarketplaceExtensionResponse = z.infer<typeof installMarketplaceExtensionResponseSchema>;\nexport type AddLocalExtensionFolderResponse = z.infer<typeof addLocalExtensionFolderResponseSchema>;\nexport type SetupProjectExtensionResponse = z.infer<typeof setupProjectExtensionResponseSchema>;\n","import { z } from \"zod\";\nimport { extensionsCheckResponseSchema } from \"./check\";\nimport { projectExtensionInstanceSchema } from \"./install\";\n\nconst installNameSchema = z\n .string()\n .min(1)\n .refine(\n (name) => name !== \".\" && name !== \"..\" && !/[\\\\/:]/.test(name) && name.trim().length > 0,\n \"Install name must be one folder name.\",\n );\n\nexport const installExtensionRequestSchema = z\n .object({\n source: z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"catalog\"), name: z.string().min(1), ref: z.string().min(1).optional() }).strict(),\n z\n .object({ kind: z.literal(\"project-folder\"), path: z.string().min(1), development: z.boolean().optional() })\n .strict(),\n ]),\n installName: installNameSchema.optional(),\n force: z.boolean().optional(),\n skipInstall: z.boolean().optional(),\n })\n .strict();\n\nconst formBoolean = z\n .enum([\"true\", \"false\"])\n .optional()\n .transform((value) => value === \"true\");\n\nexport const uploadExtensionRequestSchema = z\n .object({\n kind: z.literal(\"upload\"),\n installName: installNameSchema.optional(),\n folderName: installNameSchema,\n files: z.preprocess(\n (value) => (Array.isArray(value) ? value : [value]),\n z.array(z.instanceof(File).meta({ type: \"string\", format: \"binary\" })).min(1),\n ),\n force: formBoolean,\n skipInstall: formBoolean,\n development: formBoolean,\n })\n .strict();\n\nexport const installedExtensionSourceSchema = z.object({\n check: extensionsCheckResponseSchema,\n installName: z.string(),\n manifest: z.record(z.string(), z.unknown()),\n metadata: z.object({\n id: z.string(),\n name: z.string(),\n displayName: z.string(),\n version: z.string(),\n description: z.string().optional(),\n enginesPstdio: z.string(),\n }),\n source: z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"local\"), path: z.string(), ref: z.string().optional() }),\n z.object({ kind: z.literal(\"named\"), name: z.string(), ref: z.string() }),\n ]),\n sourceHash: z.string(),\n targetPath: z.string(),\n});\nexport const installExtensionResponseSchema = z.object({\n source: installedExtensionSourceSchema,\n extension: projectExtensionInstanceSchema,\n});\nexport const extensionDiagnosticsResponseSchema = z.object({\n roots: z.array(\n z.object({\n scope: z.enum([\"repo\", \"user\"]),\n path: z.string(),\n check: extensionsCheckResponseSchema,\n }),\n ),\n});\nexport type InstallExtensionRequest = z.infer<typeof installExtensionRequestSchema>;\nexport type UploadExtensionRequest = z.infer<typeof uploadExtensionRequestSchema>;\nexport type InstallExtensionResponse = z.infer<typeof installExtensionResponseSchema>;\nexport type InstalledExtensionSource = z.infer<typeof installedExtensionSourceSchema>;\nexport type ExtensionDiagnosticsResponse = z.infer<typeof extensionDiagnosticsResponseSchema>;\n","import { z } from \"zod\";\nimport { extensionPanelRegions } from \"../extension-kernel/types/composition\";\nimport { extensionResourceRefSchema } from \"./resource-ref\";\n\nexport const relatedResourceOpeningSchema = z.object({\n resource: extensionResourceRefSchema,\n autoOpen: z.boolean().optional(),\n region: z.enum(extensionPanelRegions),\n open: z.enum([\"preview\", \"pin\"]).optional(),\n});\n","import { z } from \"zod\";\nimport { extensionResourceRefSchema } from \"./extensions\";\nimport { jsonObjectSchema } from \"./extensions/common\";\n\nexport const automationRunStatusSchema = z.enum([\"queued\", \"running\", \"succeeded\", \"failed\", \"cancelled\", \"rejected\"]);\n\nexport const issueAutomationTokenInputSchema = z\n .object({\n name: z.string().trim().min(1).max(120),\n projectId: z.string().min(1),\n principalId: z.string().uuid().optional(),\n commandScopes: z.array(z.string().min(1)).min(1),\n expiresInSeconds: z\n .number()\n .int()\n .positive()\n .max(365 * 24 * 60 * 60),\n })\n .strict();\n\nexport const automationTokenRecordSchema = z.object({\n id: z.string(),\n principalId: z.string(),\n name: z.string(),\n tokenPrefix: z.string(),\n projectId: z.string(),\n commandScopes: z.array(z.string()),\n expiresAt: z.string(),\n lastUsedAt: z.string().nullable(),\n revokedAt: z.string().nullable(),\n createdAt: z.string(),\n});\n\nexport const issueAutomationTokenResponseSchema = automationTokenRecordSchema.extend({ token: z.string() });\nexport const listAutomationTokensResponseSchema = z.object({ tokens: z.array(automationTokenRecordSchema) });\n\nexport const createAutomationRunInputSchema = z\n .object({\n commandId: z.string().min(1),\n input: z\n .object({\n workspaceId: z.string().optional(),\n params: jsonObjectSchema.optional(),\n resource: extensionResourceRefSchema.optional(),\n metadata: jsonObjectSchema.optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const automationRunErrorSchema = z.object({\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n});\n\nexport const automationRunSchema = z.object({\n id: z.string(),\n projectId: z.string(),\n commandId: z.string(),\n status: automationRunStatusSchema,\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n finishedAt: z.string().nullable(),\n result: z.unknown().nullable(),\n error: automationRunErrorSchema.nullable(),\n});\n\nexport const automationRunEventSchema = z.object({\n cursor: z.number().int().nonnegative(),\n runId: z.string(),\n type: z.string(),\n payload: jsonObjectSchema,\n createdAt: z.string(),\n});\n\nexport const listAutomationRunEventsResponseSchema = z.object({ events: z.array(automationRunEventSchema) });\n\nexport type AutomationRunStatus = z.infer<typeof automationRunStatusSchema>;\nexport type IssueAutomationTokenInput = z.infer<typeof issueAutomationTokenInputSchema>;\nexport type AutomationTokenRecord = z.infer<typeof automationTokenRecordSchema>;\nexport type IssueAutomationTokenResponse = z.infer<typeof issueAutomationTokenResponseSchema>;\nexport type ListAutomationTokensResponse = z.infer<typeof listAutomationTokensResponseSchema>;\nexport type CreateAutomationRunInput = z.infer<typeof createAutomationRunInputSchema>;\nexport type AutomationRunError = z.infer<typeof automationRunErrorSchema>;\nexport type AutomationRun = z.infer<typeof automationRunSchema>;\nexport type AutomationRunEvent = z.infer<typeof automationRunEventSchema>;\nexport type ListAutomationRunEventsResponse = z.infer<typeof listAutomationRunEventsResponseSchema>;\n","import { z } from \"zod\";\nimport { viewFilterConditionSchema, viewFilterGroupSchema, viewSortsSchema } from \"./extensions/collection-view\";\nimport { dataTableRendererSettingsSchema } from \"./extensions/data-table-renderer\";\nimport { kanbanViewSettingsSchema } from \"./extensions/kanban-renderer\";\n\nexport const boardFieldSchema = z.object({\n id: z.string(),\n label: z.string(),\n kind: z.enum([\"enum\", \"enum-multi\", \"status\", \"string\", \"date\", \"number\", \"boolean\", \"user\"]),\n /** Derived from `kind`. Never stored. */\n conditions: z.array(viewFilterConditionSchema),\n filterable: z.boolean(),\n groupable: z.boolean(),\n sortable: z.boolean(),\n displayable: z.boolean(),\n legacyValues: z.record(z.string(), z.boolean()).optional(),\n options: z.array(z.object({ value: z.string(), label: z.string() })).optional(),\n});\nexport const boardSummarySchema = z.object({\n id: z.string(),\n title: z.string(),\n kind: z.enum([\"kanban\", \"dataTable\"]),\n extensionId: z.string().nullable(),\n fields: z.array(boardFieldSchema),\n});\nexport const boardViewSettingsSchema = z.union([kanbanViewSettingsSchema, dataTableRendererSettingsSchema]);\nexport const boardViewSchema = z.object({\n id: z.string(),\n boardId: z.string(),\n title: z.string(),\n settings: boardViewSettingsSchema,\n filter: viewFilterGroupSchema,\n sorts: viewSortsSchema,\n builtIn: z.boolean(),\n});\nexport const boardViewsSchema = z.object({ views: z.array(boardViewSchema), defaultViewId: z.string() });\nexport const boardViewUpdateSchema = z\n .object({\n title: z.string().trim().min(1).optional(),\n // Strict, so a table setting never matches the board shape and loses its keys.\n settings: z\n .union([kanbanViewSettingsSchema.partial().strict(), dataTableRendererSettingsSchema.partial().strict()])\n .optional(),\n filter: viewFilterGroupSchema.optional(),\n sorts: viewSortsSchema.optional(),\n })\n .strict();\nexport const boardViewCreateSchema = boardViewUpdateSchema.extend({\n title: z.string().trim().min(1),\n copyFrom: z.string().optional(),\n});\nexport type BoardSummary = z.infer<typeof boardSummarySchema>;\nexport type BoardField = z.infer<typeof boardFieldSchema>;\nexport type BoardView = z.infer<typeof boardViewSchema>;\nexport type BoardViews = z.infer<typeof boardViewsSchema>;\nexport type BoardViewSettings = z.infer<typeof boardViewSettingsSchema>;\nexport type BoardViewCreate = z.infer<typeof boardViewCreateSchema>;\nexport type BoardViewUpdate = z.infer<typeof boardViewUpdateSchema>;\n\n// The sync key is derived from the database's unique collection scope, never stored twice.\nexport const boardDefaultSyncRow = <\n T extends { project_id: string; extension_instance_id: string | null; board_id: string },\n>(\n row: T,\n) => ({ ...row, id: JSON.stringify([row.project_id, row.extension_instance_id, row.board_id]) });\n","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\n/** @deprecated Use ProjectDetails. Legacy fields stay available through 0.44. */\nexport type Project = z.infer<typeof projectSchema>;\nexport type ExtensionSetupWarning = z.infer<typeof extensionSetupWarningSchema>;\n/** @deprecated Use ProjectCreateRequest. Legacy fields stay available through 0.44. */\nexport type CreateProjectInput = z.infer<typeof createProjectInputSchema>;\n/** @deprecated Use ProjectUpdateRequest. Legacy fields stay available through 0.44. */\nexport type UpdateProjectInput = z.infer<typeof updateProjectInputSchema>;\n\n/** Canonical project JSON. Snake-case fields remain available through 0.44. */\nexport const projectDetailsSchema = z.object({\n id: z.string(),\n name: z.string(),\n shorthand: z.string(),\n defaultAgentId: z.string().nullable(),\n defaultAgentModel: z.string().nullable(),\n startupScript: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n deletedAt: z.string().nullable(),\n extensionWarnings: z.array(extensionSetupWarningSchema).optional(),\n});\nexport type ProjectDetails = z.infer<typeof projectDetailsSchema>;\n\nexport const initialWorkspaceRequestSchema = z.object({\n providerId: z.string().min(1),\n params: serializableJsonObjectSchema.default({}),\n});\nexport const projectCreateRequestSchema = createProjectInputSchema\n .omit({ initial_workspace: true })\n .extend({ initialWorkspace: initialWorkspaceRequestSchema });\nexport const projectUpdateRequestSchema = z\n .object({\n name: z.string().trim().min(1).optional(),\n defaultAgentId: z.string().min(1).nullable().optional(),\n defaultAgentModel: z.string().min(1).nullable().optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).length > 0, { message: \"At least one field must be provided\" });\nexport type InitialWorkspaceRequest = z.infer<typeof initialWorkspaceRequestSchema>;\nexport type ProjectCreateRequest = z.input<typeof projectCreateRequestSchema>;\nexport type ProjectUpdateRequest = z.infer<typeof projectUpdateRequestSchema>;\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 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\nexport const extensionWorkspaceFields = {\n projectId: z.string(),\n isDefault: z.boolean(),\n shorthand: z.string(),\n rootPath: z.string().nullable(),\n providerId: z.string(),\n providerState: workspaceProviderStateSchema,\n executionKind: workspaceExecutionKindSchema,\n displayPath: z.string().nullable(),\n capabilities: workspaceCapabilitiesSchema,\n setupError: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: 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 /** The archive value is deprecated. New operations use delete; historical rows remain readable until 0.45. */\n provider_operation_kind: z\n .enum([\"create\", \"cancel\", \"archive\", \"delete\"])\n .describe(\n 'The \"archive\" value is deprecated; use \"delete\". Historical archive operations remain readable until 0.45.',\n )\n .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 extensionWorkspaceCreateInputSchema = z.object({\n projectId: z.string().min(1),\n providerId: z.string().min(1),\n shorthandBase: z.string().trim().min(1).optional(),\n params: jsonObjectSchema.optional(),\n anchors: z.array(workspaceAnchorSchema).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\n/** @deprecated Use ExtensionWorkspace. Legacy fields stay available through 0.44. */\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>;\n/** @deprecated Use ExtensionWorkspace. Legacy fields stay available through 0.44. */\nexport type WorkspaceListItem = z.infer<typeof workspaceListItemSchema>;\n/** @deprecated Use ExtensionWorkspaceCreateInput with projectId first. Legacy fields stay available through 0.44. */\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>;\n/** @deprecated Use WorkspaceEntryMoveInput. Legacy fields stay available through 0.44. */\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\nexport const workspaceEntryMoveInputSchema = z.object({ destinationPath: z.string().min(1) });\nexport type WorkspaceEntryMoveInput = z.infer<typeof workspaceEntryMoveInputSchema>;\n","import { environmentIdentitySchema } from \"pstdio-sync-contracts\";\nimport { z } from \"zod\";\nimport { initialWorkspaceSchema } from \"./projects\";\nimport { workspaceSchema } from \"./workspaces\";\n\nexport type { EnvironmentIdentity, EnvironmentTarget } from \"pstdio-sync-contracts\";\nexport { environmentIdentitySchema, environmentTargetSchema } from \"pstdio-sync-contracts\";\n\nexport const bindEnvironmentInputSchema = environmentIdentitySchema.extend({\n name: z.string().trim().min(1),\n initial_workspace: initialWorkspaceSchema,\n});\nexport const environmentBindingSchema = environmentIdentitySchema.extend({\n workbenchId: z.string().min(1),\n workspace: workspaceSchema,\n});\nexport type BindEnvironmentInput = z.infer<typeof bindEnvironmentInputSchema>;\nexport type EnvironmentBinding = z.infer<typeof environmentBindingSchema>;\n","const numericIdentifier = \"(?:0|[1-9]\\\\d*)\";\nconst caretTerm = new RegExp(`^\\\\^(${numericIdentifier}\\\\.${numericIdentifier}\\\\.${numericIdentifier})$`);\n\n/**\n * Only caret terms are accepted because each one stops below the next breaking version, so a\n * declaration can never claim support for a breaking API that did not exist when it was written.\n * Returns the minimum API version of each term.\n */\nexport const parseExtensionApiDeclaration = (declaration: string) => {\n const minimums = declaration.split(\"||\").map((term) => caretTerm.exec(term.trim())?.[1]);\n return minimums.every((minimum): minimum is string => minimum !== undefined) ? minimums : null;\n};\n\nexport const supportsExtensionApiVersion = (declaration: string, hostVersion: string) => {\n const minimums = parseExtensionApiDeclaration(declaration);\n // Rebuilt from the parsed terms because semver range syntax does not accept every whitespace `trim` removes.\n return minimums !== null && Bun.semver.satisfies(hostVersion, minimums.map((minimum) => `^${minimum}`).join(\" || \"));\n};\n","import { dockedWorkbenchRegions, type ResourceKindDefinition } from \"./types/composition\";\nimport type { ContributionKind } from \"./types/contribution-identity\";\n\nconst hostRef = <Kind extends ContributionKind>(kind: Kind, id: string) => ({ extensionId: \"pstdio\", kind, id });\n\nexport const workbenchModes = {\n project: hostRef(\"mode\", \"project\"),\n sessions: hostRef(\"mode\", \"sessions\"),\n settings: hostRef(\"mode\", \"settings\"),\n};\n\nexport const workbenchModeDefinitions = {\n project: { ref: workbenchModes.project, regions: dockedWorkbenchRegions },\n sessions: { ref: workbenchModes.sessions, regions: dockedWorkbenchRegions },\n settings: { ref: workbenchModes.settings, regions: dockedWorkbenchRegions },\n} as const;\n\nconst hostResourceKind = (\n id: string,\n label: string,\n menuSlots: ResourceKindDefinition[\"menuSlots\"],\n): ResourceKindDefinition => ({\n id,\n ref: hostRef(\"resource-kind\", id),\n label,\n menuSlots,\n});\n\nconst headerMenuSlots = [\n { id: \"headerPrimary\", placement: \"header-primary\", access: \"public\" },\n { id: \"headerOverflow\", placement: \"header-overflow\", access: \"public\" },\n] as const;\n\nexport const workbenchResourceKindDefinitions = {\n project: hostResourceKind(\"project\", \"Extension\", headerMenuSlots),\n session: hostResourceKind(\"session\", \"Session\", headerMenuSlots),\n workspace: hostResourceKind(\"workspace\", \"Workspace\", headerMenuSlots),\n};\n\nexport const workbenchResourceKinds = {\n project: workbenchResourceKindDefinitions.project.ref,\n session: workbenchResourceKindDefinitions.session.ref,\n workspace: workbenchResourceKindDefinitions.workspace.ref,\n};\n\nexport const workbenchPages = {\n start: hostRef(\"page\", \"start\"),\n sessions: hostRef(\"page\", \"sessions\"),\n session: hostRef(\"page\", \"session\"),\n workspaces: hostRef(\"page\", \"workspaces\"),\n workspace: hostRef(\"page\", \"workspace\"),\n};\n\nexport const workbenchPageDefinitions = {\n start: {\n ref: workbenchPages.start,\n mode: workbenchModes.project,\n path: \"\",\n primary: { cardinality: \"one\", resourceKinds: [] },\n },\n sessions: {\n ref: workbenchPages.sessions,\n mode: workbenchModes.sessions,\n path: \"sessions\",\n primary: { cardinality: \"one\", resourceKinds: [] },\n },\n session: {\n ref: workbenchPages.session,\n mode: workbenchModes.sessions,\n path: \"session\",\n primary: { cardinality: \"one\", resourceKinds: [\"session\", \"session-draft\"] },\n },\n workspaces: {\n ref: workbenchPages.workspaces,\n mode: workbenchModes.project,\n path: \"workspaces\",\n primary: { cardinality: \"one\", resourceKinds: [] },\n },\n workspace: {\n ref: workbenchPages.workspace,\n mode: workbenchModes.project,\n path: \"workspace\",\n primary: { cardinality: \"many\", resourceKinds: [\"workspace\"] },\n },\n} as const;\n\nexport const workbenchPanels = {\n projectSession: hostRef(\"placement\", \"project-session\"),\n};\n\nexport const workbenchPanelDefinitions = {\n projectSession: {\n ref: workbenchPanels.projectSession,\n mode: workbenchModes.project,\n cardinality: \"many\",\n resourceKinds: [\"session\", \"session-draft\"],\n },\n} as const;\n\nexport const workbenchSlots = {\n projectSettings: hostRef(\"settings-panel\", \"project.settings\"),\n /** Custom controls shown in the owner's extension detail Settings tab. */\n extensionSettings: hostRef(\"settings-panel\", \"extension.settings\"),\n statusBarLeading: hostRef(\"status-bar-item\", \"status-bar.leading\"),\n statusBarTrailing: hostRef(\"status-bar-item\", \"status-bar.trailing\"),\n};\n","import type { CommandRef } from \"./types/commands\";\nimport type { EventRef } from \"./types/events\";\nimport type { Struct } from \"./types/json\";\n\ninterface ExternalRefInput {\n extensionId: string;\n id: string;\n}\n\ninterface ExtensionOwner {\n publisher: string;\n name: string;\n}\n\ninterface CommandRefFactory {\n <TParams extends Struct = Struct, TResult = unknown>(input: ExternalRefInput): CommandRef<TParams, TResult>;\n forExtension(\n owner: ExtensionOwner,\n ): <TParams extends Struct = Struct, TResult = unknown>(id: string) => CommandRef<TParams, TResult>;\n}\n\nconst createCommandRef = <TParams extends Struct = Struct, TResult = unknown>(\n input: ExternalRefInput,\n): CommandRef<TParams, TResult> => ({ ...input, kind: \"command\" });\n\n/** Build a typed cross-extension command reference. */\nexport const commandRef: CommandRefFactory = Object.assign(createCommandRef, {\n forExtension:\n (owner: ExtensionOwner) =>\n <TParams extends Struct = Struct, TResult = unknown>(id: string): CommandRef<TParams, TResult> =>\n createCommandRef({ extensionId: `${owner.publisher}.${owner.name}`, id }),\n});\n\n/** Build a typed event reference from separate ownership and local identity. */\nexport const eventRef = <TPayload extends Struct = Struct>(input: ExternalRefInput): EventRef<TPayload> => ({\n ...input,\n kind: \"event\",\n});\n","import type { Struct } from \"./types/json\";\nimport type { SlotOptions, SlotRef, UiSlotKind } from \"./types/slots\";\n\n/**\n * Define a host-owned UI slot that extension contributions can target.\n */\nexport const defineSlot = <TContext extends Struct = Struct, TKind extends UiSlotKind = UiSlotKind>(\n id: string,\n options: SlotOptions<TKind>,\n): SlotRef<TContext, TKind> => ({\n id,\n kind: options.kind,\n label: options.label,\n description: options.description,\n metadata: options.metadata,\n});\n","import { workbenchResourceKinds } from \"./builtin-refs\";\nimport { eventRef } from \"./refs\";\nimport { defineSlot } from \"./slots\";\nimport type { Struct } from \"./types/json\";\nimport type { ResourceAnchor } from \"./types/resources\";\nimport type { ExtensionWorkspace } from \"./types/workspaces\";\n\nconst hostEventRef = <TPayload extends Struct>(id: string) => eventRef<TPayload>({ extensionId: \"pstdio\", id });\n\nconst resourceMenuSlotRef = (resourceKind: { id: string }, id: string) =>\n defineSlot<Struct, \"menu\">(`${resourceKind.id}.${id}`, { kind: \"menu\" });\n\n/** Provider that owns the workspace location and lifecycle. */\nexport type WorkspaceType = string;\n\nexport interface WorkspaceProvisionPayload {\n projectId: string;\n workspaceId: string;\n workspace: ExtensionWorkspace;\n /** Absolute local workspace directory to materialize files into. */\n workspaceDir: string;\n /** Local home directory of the project, absent when its default workspace has no local target. */\n projectDir?: string;\n providerId: string;\n}\n\nexport interface SessionLifecyclePayload {\n projectId: string;\n sessionId: string;\n sessionStatus?: string;\n originalSessionId?: string;\n workspace?: ExtensionWorkspace;\n workspaceId?: string;\n workspaceDir?: string;\n branch?: string;\n anchors?: ResourceAnchor[];\n}\n\nexport interface WorktreeRemovedPayload {\n projectId: string;\n repoPath?: string;\n worktreePath: string;\n workspace?: ExtensionWorkspace;\n workspaceId?: string;\n anchors?: ResourceAnchor[];\n}\n\nexport interface CommitPayload {\n projectId: string;\n repoPath?: string;\n worktreePath?: string;\n branch?: string;\n commitSha?: string;\n workspace?: ExtensionWorkspace;\n anchors?: ResourceAnchor[];\n}\n\nexport interface RebasePayload {\n projectId: string;\n repoPath?: string;\n worktreePath?: string;\n branch?: string;\n workspace?: ExtensionWorkspace;\n anchors?: ResourceAnchor[];\n}\n\nexport interface MergePayload extends CommitPayload {}\n\nexport interface ConflictPayload {\n projectId: string;\n operation: \"rebase\" | \"merge\";\n repoPath?: string;\n worktreePath?: string;\n branch?: string;\n workspace?: ExtensionWorkspace;\n anchors?: ResourceAnchor[];\n}\n\nexport const projectSlots = {\n sidenav: defineSlot<Struct, \"panel\">(\"project.sidenav\", { kind: \"panel\" }),\n headerPrimary: resourceMenuSlotRef(workbenchResourceKinds.project, \"headerPrimary\"),\n headerOverflow: resourceMenuSlotRef(workbenchResourceKinds.project, \"headerOverflow\"),\n settingsPanels: defineSlot<Struct, \"settings\">(\"project.settings\", { kind: \"settings\" }),\n};\n\nexport const sessionSlots = {\n headerPrimary: resourceMenuSlotRef(workbenchResourceKinds.session, \"headerPrimary\"),\n headerOverflow: resourceMenuSlotRef(workbenchResourceKinds.session, \"headerOverflow\"),\n};\n\nexport const workspaceSlots = {\n headerPrimary: resourceMenuSlotRef(workbenchResourceKinds.workspace, \"headerPrimary\"),\n headerOverflow: resourceMenuSlotRef(workbenchResourceKinds.workspace, \"headerOverflow\"),\n sidenav: defineSlot<Struct, \"panel\">(\"workspace.sidenav\", { kind: \"panel\" }),\n};\n\nexport const projectEvents = {\n opened: hostEventRef<{ projectId: string }>(\"project.opened\"),\n};\n\n/** View dependencies delivered by the host when synced project data changes. */\nexport const viewDataEvents = {\n boardViewsChanged: hostEventRef<{ projectId: string }>(\"view.board-views.changed\"),\n resourceAnchorsChanged: hostEventRef<{ projectId: string }>(\"view.resource-anchors.changed\"),\n sessionsChanged: hostEventRef<{ projectId: string }>(\"view.sessions.changed\"),\n workspacesChanged: hostEventRef<{ projectId: string }>(\"view.workspaces.changed\"),\n repositoriesChanged: hostEventRef<{ projectId: string }>(\"view.repositories.changed\"),\n};\n\nexport const sessionEvents = {\n started: hostEventRef<SessionLifecyclePayload & { anchors?: ResourceAnchor[] }>(\"session.started\"),\n resumed: hostEventRef<SessionLifecyclePayload>(\"session.resumed\"),\n /** The session asked the person a question and waits for the answer. */\n awaitingInput: hostEventRef<SessionLifecyclePayload>(\"session.awaitingInput\"),\n /** The run ended with status `completed`. */\n succeeded: hostEventRef<SessionLifecyclePayload>(\"session.succeeded\"),\n /** The run ended with status `failed`. */\n failed: hostEventRef<SessionLifecyclePayload>(\"session.failed\"),\n /**\n * The run ended with any terminal status: `completed`, `failed`, `cancelled`, or `disconnected`.\n * Read `sessionStatus` to tell them apart.\n */\n completed: hostEventRef<SessionLifecyclePayload & { anchors?: ResourceAnchor[] }>(\"session.completed\"),\n};\n\nexport const workspaceEvents = {\n created: hostEventRef<{ workspace: ExtensionWorkspace }>(\"workspace.created\"),\n /** Awaited: harness extensions sync their agent dir into the working tree. Gates workspace readiness. */\n provision: hostEventRef<WorkspaceProvisionPayload>(\"workspace.provision\"),\n /** Fire-and-forget after the workspace is ready: background setup (deps install, builds). */\n ready: hostEventRef<WorkspaceProvisionPayload>(\"workspace.ready\"),\n 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 {\n FileRendererSectionTarget,\n FileSourcePosition,\n PageDocumentDeclaration,\n PageLocation,\n PageParamDefinition,\n PageParams,\n PageRef,\n ResourceRef,\n} from \"./index\";\nimport { isFileSourcePosition, normalizePageParams, pageParamsQuery, parsePageParams } from \"./index\";\nimport { defaultPageResourceCodec } from \"./page-resource-codec\";\n\nexport interface PageUrlDefinition {\n id: string;\n ref: PageRef;\n path: string;\n document?: PageDocumentDeclaration;\n params?: Readonly<Record<string, PageParamDefinition>>;\n}\nexport interface PageResourceCodec {\n normalize(resource: ResourceRef): ResourceRef;\n toUri(resource: ResourceRef): string;\n fromUri(uri: string): ResourceRef | undefined;\n}\n\nconst hostExtensionId = \"pstdio\";\n\nconst pageRefKey = (ref: PageRef) => `${ref.extensionId ?? \"\"}:page:${ref.id}`;\n\nconst pageForRef = (pages: readonly PageUrlDefinition[], ref: PageRef) =>\n pages.find((page) => pageRefKey(page.ref) === pageRefKey(ref));\n\nconst encodePath = (path: string) =>\n path\n .split(\"/\")\n .filter(Boolean)\n .map((segment) => encodeURIComponent(segment))\n .join(\"/\");\n\nconst routePath = (projectId: string, page: PageUrlDefinition) => {\n const project = `/projects/${encodeURIComponent(projectId)}`;\n const path = encodePath(page.path);\n if (page.ref.extensionId === hostExtensionId) return path ? `${project}/${path}` : project;\n if (!page.ref.extensionId) throw new Error(`Page \"${page.id}\" has no extension id`);\n return `${project}/extensions/${encodeURIComponent(page.ref.extensionId)}/${path}`;\n};\n\nconst normalizedSection = (value: unknown): FileRendererSectionTarget | undefined => {\n if (!value || typeof value !== \"object\" || !Array.isArray((value as { anchors?: unknown }).anchors)) return undefined;\n const anchors = (value as { anchors: unknown[] }).anchors;\n if (\n anchors.some(\n (anchor) =>\n !anchor ||\n typeof anchor !== \"object\" ||\n typeof (anchor as { id?: unknown }).id !== \"string\" ||\n typeof (anchor as { heading?: unknown }).heading !== \"string\" ||\n ((anchor as { occurrence?: unknown }).occurrence !== undefined &&\n (!Number.isInteger((anchor as { occurrence?: unknown }).occurrence) ||\n Number((anchor as { occurrence?: unknown }).occurrence) < 0)),\n )\n ) {\n return undefined;\n }\n return {\n anchors: anchors.map((anchor) => {\n const value = anchor as { id: string; heading: string; occurrence?: number };\n return {\n id: value.id,\n heading: value.heading,\n ...(value.occurrence !== undefined ? { occurrence: value.occurrence } : {}),\n };\n }),\n };\n};\n\nconst serializeSection = (section: FileRendererSectionTarget) => {\n const normalized = normalizedSection(section);\n if (!normalized) throw new Error(\"Page location has an invalid section\");\n return JSON.stringify(normalized);\n};\n\nconst parseSection = (value: string) => {\n try {\n return normalizedSection(JSON.parse(value));\n } catch {\n return undefined;\n }\n};\n\nexport const serializeWorkbenchPageUrl = (input: {\n projectId: string;\n location: PageLocation;\n pages: readonly PageUrlDefinition[];\n resources: PageResourceCodec;\n}) => {\n const page = pageForRef(input.pages, input.location.page);\n if (!page) throw new Error(`Unknown page ref: ${pageRefKey(input.location.page)}`);\n const query = new URLSearchParams();\n if (input.location.resource) {\n query.set(\"resource\", input.resources.toUri(input.resources.normalize(input.location.resource)));\n }\n const document = page.document && input.location.resource?.metadata?.[page.document.metadataKey];\n if (document !== undefined) {\n if (typeof document !== \"string\" || !document) throw new Error(\"Page location has an invalid document\");\n query.set(\"document\", document);\n }\n if (input.location.position) {\n if (\n !page.document ||\n typeof document !== \"string\" ||\n !document ||\n input.location.section ||\n !isFileSourcePosition(input.location.position)\n )\n throw new Error(\"Page location has an invalid source position\");\n for (const key of [\"line\", \"column\", \"endLine\", \"endColumn\"] as const) {\n const value = input.location.position[key];\n if (value !== undefined) query.set(key, String(value));\n }\n }\n if (input.location.section) query.set(\"section\", serializeSection(input.location.section));\n const params = normalizePageParams(page.params, input.location.params);\n for (const [name, value] of pageParamsQuery(page.params, params)) query.append(name, value);\n const encoded = query.toString();\n const path = routePath(input.projectId, page);\n return encoded ? `${path}?${encoded}` : path;\n};\n\nconst decodedSegments = (pathname: string) => {\n try {\n return pathname\n .split(\"/\")\n .filter(Boolean)\n .map((segment) => decodeURIComponent(segment));\n } catch {\n return undefined;\n }\n};\n\nexport const isWorkbenchProjectUrl = (urlValue: string, projectId: string) => {\n try {\n const url = new URL(urlValue, \"http://workbench.local\");\n const segments = decodedSegments(url.pathname);\n return Boolean(segments && segments[0] === \"projects\" && segments[1] === projectId);\n } catch {\n return false;\n }\n};\n\nconst pageForRoute = (pages: readonly PageUrlDefinition[], extensionId: string, path: string) =>\n pages.find((page) => page.ref.extensionId === extensionId && page.path === path);\n\nconst parseResource = (uri: string, resources: PageResourceCodec): ResourceRef | undefined => {\n try {\n const resource = resources.fromUri(uri);\n return resource ? resources.normalize(resource) : undefined;\n } catch {\n return undefined;\n }\n};\n\nconst parseSourcePosition = (\n url: URL,\n page: PageUrlDefinition,\n document: string | null,\n section?: FileRendererSectionTarget,\n) => {\n const coordinates = Object.fromEntries(\n [\"line\", \"column\", \"endLine\", \"endColumn\"]\n .filter((key) => url.searchParams.has(key))\n .map((key) => {\n const raw = url.searchParams.get(key)!;\n return [key, /^[1-9]\\d*$/.test(raw) ? Number(raw) : NaN];\n }),\n );\n let position: FileSourcePosition | undefined;\n if (Object.keys(coordinates).length) {\n if (!page.document || document === null || section || !isFileSourcePosition(coordinates)) return false;\n position = coordinates;\n }\n return position;\n};\n\nexport interface ParsedWorkbenchPageUrl {\n pageId: string;\n params?: PageParams;\n resource?: ResourceRef;\n section?: FileRendererSectionTarget;\n position?: FileSourcePosition;\n}\n\nconst pageForUrl = (url: URL, projectId: string, pages: readonly PageUrlDefinition[]) => {\n const segments = decodedSegments(url.pathname);\n if (!segments || segments[0] !== \"projects\" || segments[1] !== projectId) return undefined;\n const route = segments.slice(2);\n const extensionRoute = route[0] === \"extensions\";\n const extensionId = extensionRoute ? route[1] : hostExtensionId;\n const path = (extensionRoute ? route.slice(2) : route).join(\"/\");\n if (!extensionId || (extensionRoute && !path)) return undefined;\n const page = pageForRoute(pages, extensionId, path);\n return page;\n};\n\nexport const parseWorkbenchPageUrl = (input: {\n url: string;\n projectId: string;\n pages: readonly PageUrlDefinition[];\n resources: PageResourceCodec;\n}): ParsedWorkbenchPageUrl | undefined => {\n let url: URL;\n try {\n url = new URL(input.url, \"http://workbench.local\");\n } catch {\n return undefined;\n }\n const page = pageForUrl(url, input.projectId, input.pages);\n if (!page) return undefined;\n\n for (const key of [\"resource\", \"document\", \"section\", \"line\", \"column\", \"endLine\", \"endColumn\"]) {\n if (url.searchParams.getAll(key).length > 1) return undefined;\n }\n const resourceValue = url.searchParams.get(\"resource\");\n let resource = resourceValue ? parseResource(resourceValue, input.resources) : undefined;\n if (resourceValue !== null && !resource) return undefined;\n const document = url.searchParams.get(\"document\");\n if (document !== null) {\n if (!document || !page.document || !resource) return undefined;\n resource = { ...resource, metadata: { [page.document.metadataKey]: document } };\n }\n const sectionValue = url.searchParams.get(\"section\");\n const section = sectionValue ? parseSection(sectionValue) : undefined;\n if (sectionValue !== null && !section) return undefined;\n const position = parseSourcePosition(url, page, document, section);\n if (position === false) return undefined;\n const params = parsePageParams(page.params, url.searchParams);\n return {\n pageId: page.id,\n ...(params ? { params } : {}),\n ...(resource ? { resource } : {}),\n ...(section ? { section } : {}),\n ...(position ? { position } : {}),\n };\n};\n\n/** Serialize a project page using the same resource encoding as the dashboard. */\nexport const serializePageUrl = (input: {\n projectId: string;\n page: PageUrlDefinition;\n params?: PageParams;\n resource?: ResourceRef;\n position?: FileSourcePosition;\n}) =>\n serializeWorkbenchPageUrl({\n projectId: input.projectId,\n location: { page: input.page.ref, resource: input.resource, position: input.position, params: input.params },\n pages: [input.page],\n resources: defaultPageResourceCodec,\n });\n\n/** Resolve a dashboard URL against the caller's declared pages and project. */\nexport const parsePageUrl = (input: { url: string; projectId: string; pages: readonly PageUrlDefinition[] }) => {\n if (!input.url.startsWith(\"/\") || input.url.startsWith(\"//\")) return undefined;\n return parseWorkbenchPageUrl({ ...input, resources: defaultPageResourceCodec });\n};\n","import type { TerminalSessionOperation, TerminalSessionResult } from \"../../extensions.terminal\";\nimport type { CreateNotificationInput, Notification, NotificationStatus } from \"../../notifications/types\";\nimport type { CommandNotice, CommandOutcome } from \"./commands\";\nimport type { ExtensionBlobRef } from \"./context\";\nimport type { JsonObject, JsonValue } from \"./json\";\nimport type { NavigationTarget } from \"./navigation-target\";\nimport type { PageLocation, PageParamValue } from \"./pages\";\nimport type { ResourceRef } from \"./resources\";\n\nexport type { ExtensionBlobRef } from \"./context\";\n\nexport const WEBVIEW_HOST_CAPABILITY_VERSION = 1;\n\n// Capabilities a webview must declare in its manifest before the bridge will route them.\nexport const WEBVIEW_DECLARABLE_CAPABILITIES = [\n \"clipboard.write\",\n \"commands.execute\",\n \"commands.stream\",\n \"navigation.open\",\n \"page.params.update\",\n \"placement.close\",\n \"notification.show\",\n \"notification.action\",\n \"notification.resolve\",\n \"notification.dismiss\",\n \"preferences.get\",\n \"preferences.set\",\n \"extension.settings.all\",\n \"extension.settings.get\",\n \"extension.settings.set\",\n \"extension.settings.delete\",\n \"terminal.session\",\n \"files.upload\",\n \"files.list\",\n \"files.delete\",\n] as const;\n\n// Capabilities that must be declared with a scope suffix (`name:scope`). Each\n// declaration grants one scope; a bare declaration is invalid.\nexport const WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES = [\"artifacts.read\"] as const;\n\n// Runtime plumbing the guest invokes on its own (e.g. keyboard forwarding). Enabled\n// wherever the host implements them, with no manifest declaration required.\nexport const ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES = [\"host.dispatchKeyboardEvent\"] as const;\n\nexport const WEBVIEW_HOST_CAPABILITIES = [\n ...WEBVIEW_DECLARABLE_CAPABILITIES.filter((capability) => capability !== \"clipboard.write\"),\n ...WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES,\n] 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];\n/** @deprecated Use bare capability names. Versions will be removed in 0.45. */\nexport type VersionedWebviewCapabilityDeclaration =\n `${WebviewDeclarableCapability}@${typeof WEBVIEW_HOST_CAPABILITY_VERSION}`;\n\nexport type WebviewCapabilityDeclaration =\n | WebviewDeclarableCapability\n | VersionedWebviewCapabilityDeclaration\n | `${WebviewScopedDeclarableCapability}:${string}`;\n\nexport interface WebviewCommandsExecuteParams {\n commandId: string;\n params?: JsonObject;\n workspaceId?: string;\n resource?: ResourceRef;\n metadata?: JsonObject;\n}\n\nexport type WebviewCommandsStreamParams =\n | ({ operation: \"start\"; streamId: string } & WebviewCommandsExecuteParams)\n | { operation: \"cancel\"; streamId: string }\n | { operation: \"ack\"; streamId: string; bytes: number };\n\nexport type WebviewCommandStreamEvent =\n | { streamId: string; type: \"data\"; data: JsonValue }\n | { streamId: string; type: \"end\"; outcome: CommandOutcome };\n\nexport interface WebviewNavigationOpenParams {\n target: NavigationTarget;\n}\n\n/** @deprecated Use CommandNotice with type and message. */\nexport interface WebviewNotificationShowParams {\n level: \"info\" | \"success\" | \"warning\" | \"error\";\n title: string;\n message?: string;\n}\n\n/** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\nexport type WebviewNotificationActionParams = Omit<CreateNotificationInput, \"projectId\">;\n/** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\nexport interface WebviewNotificationResolveParams {\n id?: string;\n dedupeKey?: string;\n status?: Extract<NotificationStatus, \"done\" | \"dismissed\" | \"expired\">;\n}\n/** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\nexport type WebviewNotificationDismissParams = Pick<WebviewNotificationResolveParams, \"id\" | \"dedupeKey\">;\n\nexport interface WebviewPreferencesGetParams {\n /** Access to another extension's registered names is deprecated. Use names owned by the caller. */\n name: string;\n scope?: {\n scope: \"default\" | \"user\" | \"project\" | \"workspace\" | \"extension\" | \"session\";\n scopeId?: string;\n };\n}\n\nexport interface WebviewPreferencesSetParams extends WebviewPreferencesGetParams {\n value: boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;\n}\n\nexport interface WebviewPageParamsUpdateParams {\n /** Merge overrides into the active page. Null resets a name to its declared default. */\n params: Readonly<Record<string, PageParamValue | null>>;\n}\n\nexport interface WebviewExtensionSettingKeyParams {\n key: string;\n}\n\nexport interface WebviewExtensionSettingSetParams extends WebviewExtensionSettingKeyParams {\n value: unknown;\n}\n\nexport type WebviewFileScope = { type: \"project\" } | { type: \"resource\"; id: string } | { type: string; id?: string };\n\nexport interface WebviewFilesUploadParams {\n name: string;\n data: Uint8Array | ArrayBuffer;\n mimeType?: string;\n scope?: WebviewFileScope;\n}\n\nexport interface WebviewFilesListParams {\n scope?: WebviewFileScope;\n}\n\nexport interface WebviewFilesDeleteParams {\n id: string;\n}\n\n// One bridge method covers every artifact read; the operation is in the params,\n// mirroring terminal.session. The mount is always the mount's local id.\nexport type WebviewArtifactsReadParams =\n | { op: \"list\"; mount: string; prefix?: string }\n | { op: \"readText\"; mount: string; path: string }\n | { op: \"imageUrl\"; mount: string; path: string };\n\nexport interface WebviewArtifactFile {\n path: string;\n size: number;\n mediaType: string;\n}\n\nexport interface WebviewKeyboardEventParams {\n key?: string;\n code?: string;\n ctrlKey?: boolean;\n metaKey?: boolean;\n altKey?: boolean;\n shiftKey?: boolean;\n repeat?: boolean;\n}\n\nexport interface WebviewHostCapabilityParams {\n \"commands.execute\": WebviewCommandsExecuteParams;\n \"commands.stream\": WebviewCommandsStreamParams;\n \"page.params.update\": WebviewPageParamsUpdateParams;\n \"navigation.open\": WebviewNavigationOpenParams;\n \"placement.close\": Record<string, never>;\n \"notification.show\": CommandNotice | WebviewNotificationShowParams;\n /** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\n \"notification.action\": WebviewNotificationActionParams;\n /** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\n \"notification.resolve\": WebviewNotificationResolveParams;\n /** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\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 /** @deprecated Use the host terminal surface. */\n \"terminal.session\": TerminalSessionOperation;\n \"files.upload\": WebviewFilesUploadParams;\n /** @deprecated Use extension commands and owned storage. */\n \"files.list\": WebviewFilesListParams;\n /** @deprecated Use extension commands and owned storage. */\n \"files.delete\": WebviewFilesDeleteParams;\n \"artifacts.read\": WebviewArtifactsReadParams;\n \"host.dispatchKeyboardEvent\": WebviewKeyboardEventParams;\n}\n\nexport interface WebviewHostCapabilityResults {\n \"commands.execute\": { outcome: CommandOutcome };\n \"commands.stream\": { operation: \"start\" | \"cancel\" | \"ack\"; accepted: true };\n \"page.params.update\": { location: PageLocation };\n \"navigation.open\": void;\n \"placement.close\": void;\n \"notification.show\": void;\n /** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\n \"notification.action\": Notification;\n /** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\n \"notification.resolve\": Notification | { resolved: number; notifications: Notification[] };\n /** @deprecated Invoke a command using ctx.notify.setStatus or setStatusByKey. */\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\": { key: string; value: unknown };\n \"extension.settings.delete\": void;\n /** @deprecated Use the host terminal surface. */\n \"terminal.session\": TerminalSessionResult;\n \"files.upload\": ExtensionBlobRef;\n /** @deprecated Use extension commands and owned storage. */\n \"files.list\": { files: ExtensionBlobRef[] };\n /** @deprecated Use extension commands and owned storage. */\n \"files.delete\": void;\n \"artifacts.read\": WebviewArtifactFile[] | string;\n \"host.dispatchKeyboardEvent\": void;\n}\n\nexport type WebviewHostCapabilityResult<\n Capability extends WebviewHostCapability,\n Params extends WebviewHostCapabilityParams[Capability] = WebviewHostCapabilityParams[Capability],\n> = Capability extends \"artifacts.read\"\n ? Params extends { op: \"list\" }\n ? WebviewArtifactFile[]\n : Params extends { op: \"readText\" | \"imageUrl\" }\n ? string\n : WebviewHostCapabilityResults[Capability]\n : Capability extends \"terminal.session\"\n ? Params extends { operation: \"open\" }\n ? Extract<TerminalSessionResult, { operation: \"open\" }>\n : Params extends { operation: \"write\" | \"resize\" | \"kill\" | \"subscribe\" }\n ? Exclude<TerminalSessionResult, { operation: \"open\" }>\n : TerminalSessionResult\n : WebviewHostCapabilityResults[Capability];\n","import { z } from \"zod\";\n\nexport const fileRecordSchema = z.object({\n id: z.string(),\n project_id: z.string(),\n file_name: z.string(),\n file_kind: z.string(),\n storage_path: z.string(),\n mime_type: z.string().nullable(),\n size_bytes: z.number(),\n hash: z.string().nullable(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport type FileRecord = z.infer<typeof fileRecordSchema>;\n","import { z } from \"zod\";\nimport type {\n HarnessApprovalChannel,\n HarnessEventSink,\n HarnessParams,\n HarnessQuestionChannel,\n HarnessSession,\n HarnessWorkspaceContext,\n} from \"./harness\";\n\nexport const harnessCommandSchema = z.object({\n name: z.string(),\n description: z.string(),\n argumentHelp: z.string().optional(),\n /** Selecting this command tags the draft instead of inserting command text. */\n composer: z\n .object({\n label: z.string(),\n /** Native mode that can confirm this input after submission. */\n modeId: z.string().optional(),\n /** Native action words that cannot be submitted as an objective through this command. */\n reservedArguments: z.array(z.string()).optional(),\n })\n .optional(),\n /** Native availability or combination limit for the current session. */\n disabledReason: z.string().optional(),\n});\nexport const harnessModeActionSchema = z.object({\n id: z.string(),\n label: z.string(),\n /** Shared UI icon name. Omit when no icon represents the native action. */\n icon: z.string().optional(),\n /** A single native text argument. This is not a general form language. */\n argument: z.object({ label: z.string(), value: z.string().optional() }).optional(),\n});\nexport const harnessModeSchema = z.object({\n id: z.string(),\n label: z.string(),\n description: z.string(),\n state: z.string(),\n /** Provider-owned status presentation; the host must not infer it from command names or prose. */\n indicator: z\n .object({ label: z.string(), tone: z.enum([\"neutral\", \"info\", \"success\", \"warning\", \"error\"]) })\n .optional(),\n /** Short native summary displayed in the composer tag. */\n tagText: z.string().optional(),\n /** An advertised native action to invoke when the person closes the tag. */\n closeActionId: z.string().optional(),\n /** An explicit native decision that takes over the composer. */\n confirmation: z\n .object({\n /** Native revision identity. Pass it as the advertised action's argument. */\n id: z.string(),\n title: z.string(),\n actionId: z.string(),\n cancelLabel: z.string().optional(),\n /** Model reported by the native provider for this decision. Omit when unknown. */\n model: z.string().optional(),\n })\n .optional(),\n actions: z.array(harnessModeActionSchema),\n});\nexport const harnessCommandStateSchema = z.object({\n commands: z.array(harnessCommandSchema),\n modes: z.array(harnessModeSchema),\n /** Whether input beginning with a slash name is a native command. */\n slashCommands: z.boolean(),\n});\nexport const harnessOperationSchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"command\"), text: z.string().min(1) }).strict(),\n z\n .object({\n kind: z.literal(\"mode-action\"),\n modeId: z.string(),\n actionId: z.string(),\n argument: z.string().optional(),\n })\n .strict(),\n]);\nexport type HarnessCommandState = z.infer<typeof harnessCommandStateSchema>;\nexport type HarnessOperation = z.infer<typeof harnessOperationSchema>;\nexport type HarnessCommandContext = {\n sessionId: string;\n agentSessionId?: string;\n cwd?: string;\n workspace?: HarnessWorkspaceContext;\n model?: string | null;\n params?: HarnessParams;\n};\n/** Discovery also runs before a conversation has a host or native session. */\nexport type HarnessCommandDiscoveryContext = Omit<HarnessCommandContext, \"sessionId\"> & { sessionId?: string };\nexport const draftHarnessCommandInputSchema = z\n .object({\n project_id: z.string().min(1),\n agent: z.string().min(1),\n workspace_id: z.string().optional(),\n model: z.string().optional(),\n params: z.record(z.string(), z.union([z.string(), z.boolean()])).optional(),\n })\n .strict();\nexport type DraftHarnessCommandInput = z.infer<typeof draftHarnessCommandInputSchema>;\nexport const harnessOperationResponseSchema = z.object({\n status: z.enum([\"completed\", \"started\"]),\n message: z.string().optional(),\n});\nexport type HarnessOperationResponse = z.infer<typeof harnessOperationResponseSchema>;\nexport type HarnessOperationResult =\n | { kind: \"completed\"; message?: string; params?: HarnessParams }\n | { kind: \"started\"; session: HarnessSession; params?: HarnessParams };\nexport type PreparedHarnessOperation = {\n /** Controls may run during a turn. Exclusive work acquires the host execution slot. */\n execution: \"control\" | \"exclusive\";\n invoke(input: {\n events: HarnessEventSink;\n approvals?: HarnessApprovalChannel;\n questions?: HarnessQuestionChannel;\n signal?: AbortSignal;\n }): Promise<HarnessOperationResult>;\n};\n","import { z } from \"zod\";\n\nexport const pageQuerySchema = z.object({ cursor: z.string().optional(), limit: z.coerce.number().optional() });\nexport type PageQuery = z.infer<typeof pageQuerySchema>;\nexport interface Page<T> {\n items: T[];\n nextCursor: string | null;\n}\n","import { z } from \"zod\";\n\nexport const harnessParamValueSchema = z.union([z.string(), z.boolean()]);\nexport const harnessParamsInputSchema = z.record(z.string(), harnessParamValueSchema);\nexport const sessionAttachmentRefSchema = z.object({ file_id: z.string().min(1) });\n","import { z } from \"zod\";\nimport { harnessParamsInputSchema, sessionAttachmentRefSchema } from \"./session-request-values\";\n\nexport const queuedFollowUpSchema = z.object({\n queuePosition: z.number().int().positive(),\n revision: z.string().min(1),\n prompt: z.string(),\n steeringUnavailableReason: z.string().nullable().optional(),\n steeringDelivery: z.object({ id: z.string(), runStartedAt: z.string() }).nullable(),\n model: z.string().nullable(),\n params: harnessParamsInputSchema,\n attachments: z.array(sessionAttachmentRefSchema),\n});\n\nexport const updateQueuedFollowUpInputSchema = z.object({\n prompt: z.string().trim().min(1),\n expectedRevision: z.string().min(1).optional(),\n model: z.string().min(1).nullable().optional(),\n params: harnessParamsInputSchema.nullable().optional(),\n attachments: z.array(sessionAttachmentRefSchema).optional(),\n});\n\nexport const combineQueuedFollowUpsInputSchema = z.object({\n sourcePosition: z.number().int().positive(),\n sourceRevision: z.string().min(1),\n targetRevision: z.string().min(1),\n});\n\nexport const queuedFollowUpUpdateResponseSchema = z.object({ ok: z.literal(true), request: queuedFollowUpSchema });\nexport const pendingQueuedFollowUpsResponseSchema = z.object({\n requests: z.array(queuedFollowUpSchema),\n activeRunStartedAt: z.string().nullable(),\n steeringAvailable: z.boolean(),\n steeringUnavailableReason: z.string().nullable(),\n});\nexport type QueuedFollowUpRequest = z.infer<typeof queuedFollowUpSchema>;\nexport type UpdateQueuedFollowUpInput = z.infer<typeof updateQueuedFollowUpInputSchema>;\nexport type CombineQueuedFollowUpsInput = z.infer<typeof combineQueuedFollowUpsInputSchema>;\nexport type QueuedFollowUpUpdateResponse = z.infer<typeof queuedFollowUpUpdateResponseSchema>;\nexport type PendingQueuedFollowUpsResponse = z.infer<typeof pendingQueuedFollowUpsResponseSchema>;\n\nexport const steerQueuedFollowUpInputSchema = z.object({\n expectedRevision: z.string().min(1),\n expectedRunStartedAt: z.string().min(1),\n});\nexport const queuedSteeringResultSchema = z.discriminatedUnion(\"status\", [\n z.object({ status: z.literal(\"accepted\"), deliveryId: z.string() }),\n z.object({\n status: z.literal(\"rejected\"),\n reason: z.enum([\n \"unsupported\",\n \"inactive\",\n \"stale_run\",\n \"blocking_input\",\n \"missing\",\n \"stale_revision\",\n \"different_settings\",\n \"delivery_failed\",\n \"invalid_attachments\",\n ]),\n message: z.string(),\n }),\n z.object({ status: z.literal(\"uncertain\"), deliveryId: z.string(), message: z.string() }),\n]);\nexport type SteerQueuedFollowUpInput = z.infer<typeof steerQueuedFollowUpInputSchema>;\nexport type QueuedSteeringResult = z.infer<typeof queuedSteeringResultSchema>;\n","import { z } from \"zod\";\nimport { extensionResourceRefSchema } from \"./extensions/resource-ref\";\n\nexport const resourceLinkRefSchema = extensionResourceRefSchema.extend({\n type: z.string().min(1),\n id: z.string().min(1),\n projectId: z.string().min(1).optional(),\n extensionId: z.string().min(1).optional(),\n});\nexport const resourceAnchorSchema = resourceLinkRefSchema.extend({\n role: z.enum([\"primary\", \"context\", \"source\", \"result\"]).optional(),\n});\nexport const addResourceAnchorsSchema = z.object({\n resource: resourceLinkRefSchema,\n anchors: z.array(resourceAnchorSchema).max(100),\n});\nexport const removeResourceAnchorsSchema = z.object({\n resource: resourceLinkRefSchema,\n refs: z.array(resourceLinkRefSchema).max(100),\n});\nexport const resourceAnchorQuerySchema = z.object({\n resource: resourceLinkRefSchema,\n direction: z.enum([\"outgoing\", \"incoming\", \"both\"]).optional(),\n role: z.enum([\"primary\", \"context\", \"source\", \"result\"]).optional(),\n cursor: z.string().optional(),\n limit: z.number().int().min(1).max(100).optional(),\n});\nexport const resourceAnchorPageSchema = z.object({\n items: z.array(z.object({ source: resourceLinkRefSchema, target: resourceAnchorSchema })),\n nextCursor: z.string().optional(),\n});\n\nexport const resourceAnchorQueryPageSchema = resourceAnchorPageSchema.extend({ nextCursor: z.string().nullable() });\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 type { SessionExit } from \"./extension-kernel/types/sessions\";\nimport { extensionResourceRefSchema } from \"./extensions\";\nimport { harnessOperationResponseSchema, harnessOperationSchema } from \"./harness-commands\";\nimport { pendingQueuedFollowUpsResponseSchema } from \"./queued-follow-ups\";\nimport { sessionMessageSchema } from \"./session-messages\";\n\nexport const sessionStatusSchema = z.enum([\n \"in_progress\",\n \"awaiting_input\",\n \"queued\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n \"disconnected\",\n]);\n\nexport {\n harnessParamsInputSchema,\n harnessParamValueSchema,\n sessionAttachmentRefSchema,\n} from \"./session-request-values\";\n\nimport { harnessParamsInputSchema, sessionAttachmentRefSchema } from \"./session-request-values\";\n\nexport const sessionUsageSchema = z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n cache_read_tokens: z.number(),\n cache_write_tokens: z.number(),\n});\n\nexport const sessionExitSchema: z.ZodType<SessionExit> = z.object({\n cause: z.enum([\n \"completed\",\n \"user_stop\",\n \"request_aborted\",\n \"worker_lost\",\n \"host_shutdown\",\n \"timeout\",\n \"failed\",\n \"unknown\",\n ]),\n startedAt: z.string().nullable(),\n endedAt: z.string(),\n});\n\nexport const extensionSessionSchema = z.object({\n id: z.string(),\n title: z.string(),\n status: sessionStatusSchema,\n archived: z.boolean(),\n agent: z.string().nullable(),\n cwd: z.string().nullable(),\n lastSelectedModel: z.string().nullable(),\n workspaceId: z.string().nullable(),\n originalSessionId: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n lastRequestStarted: z.string().nullable(),\n lastRequestEnded: z.string().nullable(),\n lastExit: sessionExitSchema.nullable().optional(),\n usage: z\n .object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n cacheReadTokens: z.number(),\n cacheWriteTokens: z.number(),\n })\n .nullable(),\n});\n\nexport const sessionSchema = z.object({\n id: z.string(),\n project_id: z.string().nullable(),\n title: z.string(),\n status: sessionStatusSchema,\n archived: z.boolean(),\n last_request_started: z.string().nullable(),\n last_request_ended: z.string().nullable(),\n agent: z.string().nullable(),\n last_selected_model: z.string().nullable(),\n agent_session_id: z.string().nullable(),\n session_file_id: z.string().nullable(),\n original_session_id: z.string().nullable(),\n cwd: z.string().nullable(),\n params_json: harnessParamsInputSchema.nullable(),\n usage_json: sessionUsageSchema.nullable().optional(),\n workspace_id: z.string().nullable().optional(),\n anchors_json: z.array(extensionResourceRefSchema),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const sessionDetailsSchema = extensionSessionSchema.extend({\n projectId: z.string().nullable(),\n agentSessionId: z.string().nullable(),\n sessionFileId: z.string().nullable(),\n params: harnessParamsInputSchema.nullable(),\n});\nexport type SessionDetails = z.infer<typeof sessionDetailsSchema>;\n\nexport const createSessionResponseSchema = sessionSchema.extend(extensionSessionSchema.shape).extend({\n operation_result: harnessOperationResponseSchema.optional(),\n});\n/** @deprecated Use SessionCreateResponse for canonical response fields. */\nexport type CreateSessionResponse = z.infer<typeof createSessionResponseSchema>;\nexport const sessionCreateResponseSchema = createSessionResponseSchema.extend(sessionDetailsSchema.shape).extend({\n operationResult: harnessOperationResponseSchema.optional(),\n});\nexport type SessionCreateResponse = z.infer<typeof sessionCreateResponseSchema>;\n\nexport const sessionAttachmentSchema = z.object({\n file_id: z.string(),\n name: z.string(),\n mime_type: z.string().nullable(),\n size_bytes: z.number(),\n hash: z.string().nullable(),\n url: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const createSessionInputSchema = z.object({\n project_id: z.string().min(1),\n title: z.string().min(1),\n prompt: z.string().optional(),\n operation: harnessOperationSchema.optional(),\n agent: z.string().min(1).optional(),\n workspace_id: z.string().optional(),\n anchors: z.array(extensionResourceRefSchema).optional(),\n attachments: z.array(sessionAttachmentRefSchema).optional(),\n model: z.string().optional(),\n params: harnessParamsInputSchema.optional(),\n original_session_id: z.string().optional(),\n});\n\nexport const questionResponseSchema = z.object({\n answers: z.array(z.array(z.string())),\n callId: z.string().min(1).optional(),\n});\n\nexport const followUpInputSchema = z.object({\n prompt: z.string().min(1).optional(),\n agent: z.string().optional(),\n model: z.string().optional(),\n question_response: questionResponseSchema.optional(),\n params: harnessParamsInputSchema.optional(),\n summary_from_session_id: z.string().optional(),\n summary_format: z.enum([\"brief\", \"detailed\"]).default(\"brief\").optional(),\n summary_role: z.enum([\"assistant\", \"all\"]).default(\"assistant\").optional(),\n attachments: z.array(sessionAttachmentRefSchema).optional(),\n});\n\nexport const approvalInputSchema = z.object({\n id: z.string().min(1),\n decision: z.enum([\"approve\", \"deny\"]),\n});\n\nexport const followUpDecisionSchema = z.union([\n z.object({ status: z.literal(\"dispatched\") }),\n z.object({ status: z.literal(\"queued\"), queue_position: z.number().int() }),\n]);\n\nexport const followUpResponseSchema = sessionSchema.extend({\n follow_up: followUpDecisionSchema,\n});\n\nexport const sessionQueuedMessagesResponseSchema = z.object({\n messages: z.array(sessionMessageSchema),\n queue: pendingQueuedFollowUpsResponseSchema.optional(),\n});\nexport type SessionQueuedMessagesResponse = z.infer<typeof sessionQueuedMessagesResponseSchema>;\n\nexport const sessionConversationSourcesSchema = z.object({\n checkpoint: z.array(sessionMessageSchema).nullable(),\n native: z.array(sessionMessageSchema).nullable(),\n checkpointError: z.string().nullable(),\n nativeError: z.string().nullable(),\n});\n\nexport type SessionConversationSources = z.infer<typeof sessionConversationSourcesSchema>;\n\nexport const sessionConversationResponseSchema = z.object({\n session: sessionSchema,\n messages: z.array(sessionMessageSchema),\n});\n\nexport const resolveSessionIdInputSchema = z.object({\n agent: z.string(),\n agent_session_id: z.string(),\n cwd: z.string().optional(),\n});\n\nexport const resolveSessionIdResponseSchema = z.object({\n session_id: z.string().nullable(),\n});\n\nexport const listSessionActivityInputSchema = listActivityInputSchema;\nexport const listSessionActivityResponseSchema = listActivityResponseSchema;\n\nexport type SessionStatus = z.infer<typeof sessionStatusSchema>;\n/** @deprecated Use SessionDetails or ExtensionSession. Legacy fields stay available through 0.44. */\nexport type Session = z.infer<typeof sessionSchema>;\nexport type ResolveSessionIdInput = z.infer<typeof resolveSessionIdInputSchema>;\nexport type ResolveSessionIdResponse = z.infer<typeof resolveSessionIdResponseSchema>;\n/** @deprecated Use SessionCreateRequest with projectId first. Legacy fields stay available through 0.44. */\nexport type CreateSessionInput = z.infer<typeof createSessionInputSchema>;\n/** @deprecated Use SessionFollowUpRequest. Legacy fields stay available through 0.44. */\nexport type FollowUpInput = z.infer<typeof followUpInputSchema>;\nexport type HarnessParamsInput = z.infer<typeof harnessParamsInputSchema>;\n/** @deprecated Use SessionAttachmentDetails. Legacy fields stay available through 0.44. */\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>;\n/** @deprecated Use SessionFollowUpDecision for canonical fields. */\nexport type FollowUpDecision = z.infer<typeof followUpDecisionSchema>;\n/** @deprecated Use SessionFollowUpResponse for canonical fields. */\nexport type FollowUpResponse = z.infer<typeof followUpResponseSchema>;\n\nexport const sessionCreateRequestSchema = createSessionInputSchema\n .omit({ project_id: true, workspace_id: true, original_session_id: true, attachments: true })\n .extend({\n attachments: z.array(z.object({ fileId: z.string().min(1) })).optional(),\n projectId: z.string().min(1),\n workspaceId: z.string().optional(),\n originalSessionId: z.string().optional(),\n });\nexport type SessionCreateRequest = z.infer<typeof sessionCreateRequestSchema>;\n\nexport const sessionAttachmentDetailsSchema = sessionAttachmentSchema\n .omit({ file_id: true, mime_type: true, size_bytes: true, created_at: true, updated_at: true })\n .extend({\n fileId: z.string(),\n mimeType: z.string().nullable(),\n sizeBytes: z.number(),\n createdAt: z.string(),\n updatedAt: z.string(),\n });\nexport type SessionAttachmentDetails = z.infer<typeof sessionAttachmentDetailsSchema>;\nexport const sessionFollowUpRequestSchema = followUpInputSchema\n .omit({\n question_response: true,\n summary_from_session_id: true,\n summary_format: true,\n summary_role: true,\n attachments: true,\n })\n .extend({\n questionResponse: questionResponseSchema.optional(),\n summaryFromSessionId: z.string().optional(),\n summaryFormat: z.enum([\"brief\", \"detailed\"]).optional(),\n summaryRole: z.enum([\"assistant\", \"all\"]).optional(),\n attachments: z.array(z.object({ fileId: z.string().min(1) })).optional(),\n });\nexport type SessionFollowUpRequest = z.infer<typeof sessionFollowUpRequestSchema>;\nexport const sessionFollowUpDecisionSchema = z.union([\n z.object({ status: z.literal(\"dispatched\") }),\n z.object({ status: z.literal(\"queued\"), queuePosition: z.number().int() }),\n]);\nexport type SessionFollowUpDecision = z.infer<typeof sessionFollowUpDecisionSchema>;\nexport const sessionFollowUpResponseSchema = followUpResponseSchema\n .extend(sessionDetailsSchema.shape)\n .extend({ followUp: sessionFollowUpDecisionSchema });\nexport type SessionFollowUpResponse = z.infer<typeof sessionFollowUpResponseSchema>;\n","import { z } from \"zod\";\n\nexport const settingsSchema = z.object({\n notifications_enabled: z.boolean(),\n machine_tokens_enabled: z.boolean(),\n max_concurrent_sessions: z.number().int().min(1).nullable(),\n});\n\nexport const updateSettingsInputSchema = z\n .object({\n notifications_enabled: z.boolean().optional(),\n machine_tokens_enabled: z.boolean().optional(),\n max_concurrent_sessions: z.number().int().min(1).nullable().optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).length > 0, { message: \"Expected at least one setting\" });\n\nexport type Settings = z.infer<typeof settingsSchema>;\nexport type UpdateSettingsInput = z.infer<typeof updateSettingsInputSchema>;\n","import { z } from \"zod\";\nimport { packageAssetDescriptorSchema } from \"./extensions\";\n\nexport const skillFileSchema = z.object({\n path: z.string(),\n content: z.string(),\n encoding: z.literal(\"utf8\"),\n});\n\nexport const skillSourceKindSchema = z.enum([\"project\", \"extension\"]);\n\nexport const skillAgentInstallationSchema = z.object({\n agent_id: z.string(),\n agent_name: z.string(),\n installed_version: z.string().nullable(),\n});\n\nexport const skillSchema = z.object({\n id: z.string(),\n project_id: z.string(),\n name: z.string(),\n title: z.string(),\n description: z.string(),\n source_kind: skillSourceKindSchema,\n files: z.array(skillFileSchema),\n editable: z.boolean(),\n extension_instance_id: z.string().optional(),\n extension_id: z.string().optional(),\n installed_extension_id: z.string().optional(),\n install_name: z.string().optional(),\n key: z.string().optional(),\n source: packageAssetDescriptorSchema.optional(),\n enabled: z.boolean().optional(),\n created_at: z.string(),\n updated_at: z.string(),\n deleted_at: z.string().nullable(),\n});\n\nexport const skillWithContentSchema = skillSchema.extend({\n installed_agents: z.array(z.string()),\n agent_installations: z.array(skillAgentInstallationSchema),\n});\n\nexport const updateSkillInputSchema = z.object({\n enabled: z.boolean().optional(),\n title: z.string().min(1).optional(),\n description: z.string().optional(),\n});\n\n/** @deprecated Use SkillDetails. Legacy fields stay available through 0.44. */\nexport type Skill = z.infer<typeof skillSchema>;\nexport type SkillAgentInstallation = z.infer<typeof skillAgentInstallationSchema>;\n/** @deprecated Use SkillWithContentDetails. Legacy fields stay available through 0.44. */\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\nexport const skillDetailsSchema = skillSchema\n .omit({\n project_id: true,\n source_kind: true,\n extension_instance_id: true,\n extension_id: true,\n installed_extension_id: true,\n install_name: true,\n created_at: true,\n updated_at: true,\n deleted_at: true,\n })\n .extend({\n projectId: z.string(),\n sourceKind: skillSourceKindSchema,\n extensionInstanceId: z.string().optional(),\n extensionId: z.string().optional(),\n installedExtensionId: z.string().optional(),\n installName: z.string().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n deletedAt: z.string().nullable(),\n });\nexport const skillAgentInstallationDetailsSchema = z.object({\n agentId: z.string(),\n agentName: z.string(),\n installedVersion: z.string().nullable(),\n});\nexport const skillWithContentDetailsSchema = skillDetailsSchema.extend({\n installedAgents: z.array(z.string()),\n agentInstallations: z.array(skillAgentInstallationDetailsSchema),\n});\nexport type SkillDetails = z.infer<typeof skillDetailsSchema>;\nexport type SkillWithContentDetails = z.infer<typeof skillWithContentDetailsSchema>;\n","import { z } from \"zod\";\n\nexport const fileDiffSchema = z.object({\n filePath: z.string(),\n change: z.enum([\"added\", \"deleted\", \"modified\", \"renamed\", \"copied\", \"permissionChange\"]),\n additions: z.number(),\n deletions: z.number(),\n oldContent: z.string(),\n newContent: z.string(),\n oldPath: z.string().optional(),\n newPath: z.string().optional(),\n});\n\nexport const fileDiffSummarySchema = fileDiffSchema.omit({ oldContent: true, newContent: true });\n\nexport const workspaceDiffResponseSchema = z.object({\n workspace_id: z.string(),\n base_ref: z.string(),\n head_ref: z.string(),\n files: z.array(fileDiffSchema),\n totals: z.object({\n additions: z.number(),\n deletions: z.number(),\n file_count: z.number(),\n }),\n});\n\nexport const workspaceDiffFilesResponseSchema = workspaceDiffResponseSchema.extend({\n files: z.array(fileDiffSummarySchema),\n});\n\nexport type WorkspaceDiffFile = z.infer<typeof fileDiffSchema>;\nexport type WorkspaceDiffFiles = z.infer<typeof workspaceDiffFilesResponseSchema>;\n\nexport const workspaceDiffSummarySchema = z.object({\n workspace_id: z.string(),\n additions: z.number(),\n deletions: z.number(),\n file_count: z.number(),\n});\n\nexport type WorkspaceDiffSummary = z.infer<typeof workspaceDiffSummarySchema>;\n","export interface Disposable {\n dispose(): void;\n}\n\nexport const createDisposable = (onDispose: () => void): Disposable => {\n let disposed = false;\n\n return {\n dispose() {\n if (disposed) return;\n disposed = true;\n onDispose();\n },\n };\n};\n","/** Host effects run after state commits. A failed effect must not interrupt other owners. */\nexport function runWorkbenchEffect<Result>(owner: string, effect: () => Result) {\n try {\n return effect();\n } catch (error) {\n console.error(`Workbench effect failed (${owner})`, error);\n return undefined;\n }\n}\n","import { runWorkbenchEffect } from \"../workbench-effect\";\n\nlet depth = 0;\nconst pending = new Map<object, () => void>();\n\nexport const notifyWorkbenchChange = (owner: object, notify: () => void) => {\n if (depth === 0) {\n runWorkbenchEffect(\"store subscriber\", notify);\n return;\n }\n if (!pending.has(owner)) pending.set(owner, notify);\n};\n\n/** Commit related stores before their subscribers read the resulting workbench state. */\nexport const batchWorkbenchChanges = <Result>(commit: () => Result) => {\n depth++;\n try {\n return commit();\n } finally {\n depth--;\n if (depth === 0) {\n depth++;\n try {\n while (pending.size) {\n const [owner, notify] = pending.entries().next().value!;\n pending.delete(owner);\n runWorkbenchEffect(\"store subscriber\", notify);\n }\n } finally {\n depth--;\n }\n }\n }\n};\n","import { devtools, type NamedSet } from \"zustand/middleware\";\nimport { createStore, type StoreApi } from \"zustand/vanilla\";\nimport { notifyWorkbenchChange } from \"./workbench-batch\";\n\nexport type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;\n\nexport type WorkbenchStoreListener<TState> = (state: TState, previousState: TState) => void;\n\nexport type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;\n\nexport interface WorkbenchStore<TState> {\n getState(): TState;\n getInitialState(): TState;\n subscribe(listener: WorkbenchStoreListener<TState>): () => void;\n subscribeSelector<TValue>(\n selector: WorkbenchStoreSelector<TState, TValue>,\n listener: WorkbenchStoreSelectorListener<TValue>,\n options?: { equalityFn?: (left: TValue, right: TValue) => boolean; fireImmediately?: boolean },\n ): () => void;\n}\n\nexport interface InternalWorkbenchStore<TState> extends WorkbenchStore<TState> {\n setState: NamedSet<TState>;\n api: StoreApi<TState>;\n}\n\nexport interface CreateWorkbenchStoreInput<TState> {\n name?: string;\n initialState: TState;\n}\n\nconst defaultEquality = <TValue>(left: TValue, right: TValue) => Object.is(left, right);\n\nexport const createWorkbenchStore = <TState>(\n input: CreateWorkbenchStoreInput<TState>,\n): InternalWorkbenchStore<TState> => {\n const api = createStore<TState>()(devtools(() => input.initialState, { name: input.name ?? \"workbench.store\" }));\n\n const subscribe: WorkbenchStore<TState>[\"subscribe\"] = (listener) => {\n const owner = {};\n return api.subscribe((_state, previous) => notifyWorkbenchChange(owner, () => listener(api.getState(), previous)));\n };\n\n const subscribeSelector: WorkbenchStore<TState>[\"subscribeSelector\"] = (selector, listener, options = {}) => {\n const equalityFn = options.equalityFn ?? defaultEquality;\n let previousValue = selector(api.getState());\n\n if (options.fireImmediately) listener(previousValue, previousValue);\n\n return subscribe((state) => {\n const nextValue = selector(state);\n if (equalityFn(previousValue, nextValue)) return;\n const previous = previousValue;\n previousValue = nextValue;\n listener(nextValue, previous);\n });\n };\n\n return {\n getState: api.getState,\n getInitialState: api.getInitialState,\n subscribe,\n subscribeSelector,\n setState: api.setState,\n api,\n };\n};\n","export const workbenchRegions = [\n \"nav\",\n \"activity\",\n \"sidenav\",\n \"main-header\",\n \"main-left-menu\",\n \"main\",\n \"main-right-menu\",\n \"secondary-header\",\n \"secondary-left-menu\",\n \"secondary\",\n \"secondary-right-menu\",\n \"side-header\",\n \"side-left-menu\",\n \"side\",\n \"side-right-menu\",\n \"status\",\n \"overlay\",\n] as const;\n\nexport type WorkbenchRegion = (typeof workbenchRegions)[number];\n\nexport const workbenchPanelRegions = [\"main\", \"secondary\", \"side\"] as const satisfies readonly WorkbenchRegion[];\n\nexport type WorkbenchPanelRegion = (typeof workbenchPanelRegions)[number];\n\nexport type WorkbenchPanelMenuSide = \"left\" | \"right\";\n\nexport const workbenchPanelMenuRegions = {\n main: { left: \"main-left-menu\", right: \"main-right-menu\" },\n secondary: { left: \"secondary-left-menu\", right: \"secondary-right-menu\" },\n side: { left: \"side-left-menu\", right: \"side-right-menu\" },\n} as const satisfies Record<WorkbenchPanelRegion, Record<WorkbenchPanelMenuSide, WorkbenchRegion>>;\n\nexport type WorkbenchPanelMenuRegion = (typeof workbenchPanelMenuRegions)[WorkbenchPanelRegion][WorkbenchPanelMenuSide];\n\nconst workbenchPanelByMenuRegion = {\n \"main-left-menu\": \"main\",\n \"main-right-menu\": \"main\",\n \"secondary-left-menu\": \"secondary\",\n \"secondary-right-menu\": \"secondary\",\n \"side-left-menu\": \"side\",\n \"side-right-menu\": \"side\",\n} as const satisfies Record<WorkbenchPanelMenuRegion, WorkbenchPanelRegion>;\n\nexport const getWorkbenchPanelForMenuRegion = (region: WorkbenchPanelMenuRegion) => workbenchPanelByMenuRegion[region];\n","import type { WorkbenchTabPosition, WorkbenchWidgetPlacement } from \"./layout-types\";\n\n// The incoming preview wins. Restored trays keep their selected preview, or the first one.\nexport const planTrayTabs = (widgets: readonly WorkbenchWidgetPlacement[], preferredWidgetId?: string) => {\n const previews = widgets.filter((widget) => widget.tabRetention === \"preview\");\n const preview = previews.find((widget) => widget.widgetId === preferredWidgetId) ?? previews[0];\n return {\n widgets: [...(preview ? [preview] : []), ...widgets.filter((widget) => widget.tabRetention !== \"preview\")],\n replaced: previews.filter((widget) => widget !== preview),\n };\n};\n\nexport const planTrayPlacement = (\n widgets: readonly WorkbenchWidgetPlacement[],\n placement: WorkbenchWidgetPlacement,\n position: WorkbenchTabPosition = \"end\",\n) => {\n const remaining = widgets.filter((widget) => widget.widgetId !== placement.widgetId);\n let index = position === \"start\" ? 0 : remaining.length;\n if (typeof position === \"object\") {\n const before = \"beforeWidgetId\" in position;\n const target = before ? position.beforeWidgetId : position.afterWidgetId;\n const found = remaining.findIndex((widget) => widget.widgetId === target);\n if (found >= 0) index = found + (before ? 0 : 1);\n }\n remaining.splice(index, 0, placement);\n return planTrayTabs(remaining, placement.tabRetention === \"preview\" ? placement.widgetId : undefined);\n};\n\nexport const planTrayDrop = (\n widgets: readonly WorkbenchWidgetPlacement[],\n placement: WorkbenchWidgetPlacement,\n position: WorkbenchTabPosition = \"end\",\n) =>\n planTrayPlacement(\n widgets,\n placement.tabRetention === \"preview\" ? { ...placement, pinned: true, tabRetention: \"persistent\" } : placement,\n position,\n );\n","export const resolveUniqueWidgetId = (\n widgetIds: ReadonlySet<string>,\n contributionId: string,\n preferredId = contributionId,\n) => {\n if (!widgetIds.has(preferredId)) return preferredId;\n\n let suffix = 1;\n while (widgetIds.has(`${contributionId}:${suffix}`)) suffix += 1;\n return `${contributionId}:${suffix}`;\n};\n","export { buildUpdatedPlacement, createPlacement } from \"./widget-placement\";\n\nimport type {\n WorkbenchLayout,\n WorkbenchPanelRegion,\n WorkbenchRegion,\n WorkbenchRegionState,\n WorkbenchWidgetPlacement,\n} from \"./layout-types\";\nimport { workbenchPanelRegions } from \"./layout-types\";\nimport { resolveUniqueWidgetId } from \"./widget-id\";\nexport const findPlacement = (layout: WorkbenchLayout, contributionId: string) => {\n for (const region of Object.values(layout.regions)) {\n const index = region.widgets.findIndex((candidate) => candidate.contributionId === contributionId);\n if (index >= 0) return { regionId: region.id, index, placement: region.widgets[index] };\n }\n return undefined;\n};\nexport const findResourcePlacement = (layout: WorkbenchLayout, contributionId: string, resourceKey: string) => {\n for (const region of Object.values(layout.regions)) {\n const index = region.widgets.findIndex(\n (candidate) => candidate.contributionId === contributionId && candidate.resourceKey === resourceKey,\n );\n if (index >= 0) return { regionId: region.id, index, placement: region.widgets[index] };\n }\n return undefined;\n};\nexport const findPlacementByWidgetId = (layout: WorkbenchLayout, widgetId: string) => {\n for (const region of Object.values(layout.regions)) {\n const index = region.widgets.findIndex((candidate) => candidate.widgetId === widgetId);\n if (index >= 0) return { regionId: region.id, index, placement: region.widgets[index] };\n }\n return undefined;\n};\nexport const createUniqueWidgetId = (layout: WorkbenchLayout, contributionId: string) => {\n const widgetIds = new Set(\n Object.values(layout.regions).flatMap((region) => region.widgets.map((placement) => placement.widgetId)),\n );\n return resolveUniqueWidgetId(widgetIds, contributionId);\n};\nexport const getActivePlacement = (region: WorkbenchRegionState) =>\n region.widgets.find((placement) => placement.widgetId === region.activeWidgetId) ?? region.widgets[0];\nconst isLocationPlacement = (placement: WorkbenchWidgetPlacement) => placement.role === \"location\";\nexport const locationWorkspaceKey = (placement: WorkbenchWidgetPlacement) =>\n placement.resourceKey ?? `${placement.contributionId}:${placement.widgetId}`;\nexport const setLocationSubPanelSelection = (\n layout: WorkbenchLayout,\n location: WorkbenchWidgetPlacement | undefined,\n region: WorkbenchPanelRegion,\n widgetId: string | undefined,\n) => {\n if (!location) return layout;\n const key = locationWorkspaceKey(location);\n const current = layout.locationSubPanelSelections?.[key] ?? {};\n const next = { ...current };\n if (widgetId) next[region] = widgetId;\n else delete next[region];\n return {\n ...layout,\n locationSubPanelSelections: {\n ...layout.locationSubPanelSelections,\n [key]: next,\n },\n };\n};\nexport const removeLocationSubPanelSelection = (layout: WorkbenchLayout, widgetId: string) => {\n if (!layout.locationSubPanelSelections) return layout;\n const locationSubPanelSelections = Object.fromEntries(\n Object.entries(layout.locationSubPanelSelections).map(([key, selections]) => [\n key,\n Object.fromEntries(Object.entries(selections).filter(([, selectedId]) => selectedId !== widgetId)),\n ]),\n ) as WorkbenchLayout[\"locationSubPanelSelections\"];\n return { ...layout, locationSubPanelSelections };\n};\nexport const getActiveLocationPlacement = (layout: WorkbenchLayout) => {\n const locations = Object.values(layout.regions)\n .flatMap((region) => region.widgets)\n .filter(isLocationPlacement);\n return locations.find((placement) => placement.widgetId === layout.activeLocationWidgetId) ?? locations.at(-1);\n};\ninterface ReplaceRegionWidgetsOptions {\n activeWidgetId?: string;\n clearActiveWidget?: boolean;\n}\nexport const replaceRegionWidgets = (\n layout: WorkbenchLayout,\n regionId: WorkbenchRegion,\n update: (widgets: WorkbenchWidgetPlacement[]) => WorkbenchWidgetPlacement[],\n options: ReplaceRegionWidgetsOptions = {},\n): WorkbenchLayout => {\n const region = layout.regions[regionId];\n const widgets = update(region.widgets);\n const activeWidgetId = options.activeWidgetId ?? (options.clearActiveWidget ? undefined : region.activeWidgetId);\n return {\n ...layout,\n activeLocationWidgetId:\n region.widgets.some((p) => p.widgetId === layout.activeLocationWidgetId) &&\n !widgets.some((placement) => placement.widgetId === layout.activeLocationWidgetId)\n ? Object.values(layout.regions)\n .flatMap((r) => (r.id === regionId ? widgets : r.widgets))\n .filter(isLocationPlacement)\n .at(-1)?.widgetId\n : layout.activeLocationWidgetId,\n regions: {\n ...layout.regions,\n [regionId]: { ...region, widgets, activeWidgetId },\n },\n };\n};\nexport const removePlacementsForContribution = (layout: WorkbenchLayout, contributionId: string): WorkbenchLayout => {\n let nextLayout = layout;\n for (const region of Object.values(layout.regions)) {\n const removed = region.widgets.filter((placement) => placement.contributionId === contributionId);\n const filtered = region.widgets.filter((placement) => placement.contributionId !== contributionId);\n if (filtered.length === region.widgets.length) continue;\n const activeWidgetId =\n region.activeWidgetId && !filtered.some((placement) => placement.widgetId === region.activeWidgetId)\n ? undefined\n : region.activeWidgetId;\n nextLayout = {\n ...nextLayout,\n regions: {\n ...nextLayout.regions,\n [region.id]: { ...region, widgets: filtered, activeWidgetId },\n },\n };\n for (const placement of removed) {\n nextLayout = removeLocationSubPanelSelection(nextLayout, placement.widgetId);\n }\n }\n const hasActiveWidget = Object.values(nextLayout.regions).some((region) =>\n region.widgets.some((placement) => placement.widgetId === nextLayout.activeWidgetId),\n );\n if (\n nextLayout.activeWidgetId &&\n (!hasActiveWidget ||\n nextLayout.activeWidgetId.startsWith(`${contributionId}:`) ||\n nextLayout.activeWidgetId === contributionId)\n ) {\n nextLayout = { ...nextLayout, activeWidgetId: undefined, activeResourceKey: undefined };\n }\n if (nextLayout.activeLocationWidgetId && !findPlacementByWidgetId(nextLayout, nextLayout.activeLocationWidgetId)) {\n nextLayout = {\n ...nextLayout,\n activeLocationWidgetId: getActiveLocationPlacement(nextLayout)?.widgetId,\n };\n }\n return nextLayout;\n};\nexport const closeWidgetInLayout = (layout: WorkbenchLayout, widgetId: string) => {\n const found = findPlacementByWidgetId(layout, widgetId);\n if (!found) return undefined;\n const region = layout.regions[found.regionId];\n const widgets = region.widgets.filter((placement) => placement.widgetId !== widgetId);\n const closingEffectiveActive = region.activeWidgetId === widgetId || (!region.activeWidgetId && found.index === 0);\n const fallbackSubPanel =\n found.placement.role === \"sub-panel\"\n ? widgets.find(\n (placement) =>\n placement.role === \"sub-panel\" && placement.ownerResourceKey === found.placement.ownerResourceKey,\n )\n : undefined;\n const nextActivePlacement =\n fallbackSubPanel ??\n (found.placement.role === \"sub-panel\" ? widgets.find(isLocationPlacement) : undefined) ??\n widgets[found.index] ??\n widgets[found.index - 1];\n const activeWidgetId = closingEffectiveActive ? nextActivePlacement?.widgetId : region.activeWidgetId;\n const nextRegion = {\n ...region,\n widgets,\n activeWidgetId,\n visible: widgets.length === 0 && (region.id === \"side\" || region.id === \"secondary\") ? false : region.visible,\n };\n let activeLocationWidgetId = layout.activeLocationWidgetId;\n if (layout.activeWidgetId === widgetId && nextActivePlacement?.role === \"location\") {\n activeLocationWidgetId = nextActivePlacement.widgetId;\n } else if (activeLocationWidgetId === widgetId) {\n activeLocationWidgetId = Object.values(layout.regions)\n .flatMap((r) => r.widgets)\n .filter((placement) => placement.widgetId !== widgetId && isLocationPlacement(placement))\n .at(-1)?.widgetId;\n }\n let nextLayout: WorkbenchLayout = removeLocationSubPanelSelection(\n {\n ...layout,\n activeLocationWidgetId,\n regions: {\n ...layout.regions,\n [region.id]: nextRegion,\n },\n },\n widgetId,\n );\n if (\n closingEffectiveActive &&\n found.regionId !== \"side\" &&\n workbenchPanelRegions.includes(found.regionId as WorkbenchPanelRegion)\n ) {\n nextLayout = setLocationSubPanelSelection(\n nextLayout,\n getActiveLocationPlacement(nextLayout),\n found.regionId as WorkbenchPanelRegion,\n nextActivePlacement?.role === \"sub-panel\" ? nextActivePlacement.widgetId : undefined,\n );\n }\n if (layout.activeWidgetId === widgetId) {\n nextLayout = {\n ...nextLayout,\n activeWidgetId: nextActivePlacement?.widgetId,\n activeResourceKey: nextActivePlacement?.resourceKey,\n };\n }\n return {\n regionId: found.regionId,\n closedPlacement: found.placement,\n activePlacement: getActivePlacement(nextRegion),\n layout: nextLayout,\n };\n};\nexport const activateInLayout = (\n layout: WorkbenchLayout,\n regionId: WorkbenchRegion,\n placement: WorkbenchWidgetPlacement,\n): WorkbenchLayout => {\n const region = layout.regions[regionId];\n if (isLocationPlacement(placement)) {\n const selections = layout.locationSubPanelSelections?.[locationWorkspaceKey(placement)] ?? {};\n const regions = { ...layout.regions };\n for (const panelRegion of workbenchPanelRegions) {\n const panel = regions[panelRegion];\n const selectedId = selections[panelRegion];\n const selected = panel.widgets.find(\n (candidate) =>\n candidate.widgetId === selectedId &&\n candidate.role === \"sub-panel\" &&\n (!candidate.ownerResourceKey || candidate.ownerResourceKey === placement.resourceKey),\n );\n regions[panelRegion] = {\n ...panel,\n activeWidgetId:\n (panelRegion === \"side\" || panelRegion === \"secondary\") && panelRegion !== regionId\n ? panel.activeWidgetId\n : (selected?.widgetId ?? (panelRegion === regionId ? placement.widgetId : undefined)),\n };\n }\n return {\n ...layout,\n activeWidgetId: placement.widgetId,\n activeLocationWidgetId: placement.widgetId,\n activeResourceKey: placement.resourceKey,\n regions,\n };\n }\n const withSelection =\n placement.role === \"sub-panel\" && regionId === \"main\"\n ? setLocationSubPanelSelection(\n layout,\n getActiveLocationPlacement(layout),\n regionId as WorkbenchPanelRegion,\n placement.widgetId,\n )\n : layout;\n return {\n ...withSelection,\n activeWidgetId: placement.widgetId,\n activeLocationWidgetId: layout.activeLocationWidgetId,\n activeResourceKey: placement.resourceKey,\n regions: {\n ...withSelection.regions,\n [regionId]: { ...region, activeWidgetId: placement.widgetId },\n },\n };\n};\n// Selects one widget as a region's active tab. In main the selected Location tab is the\n// active Location: panel menus, Sub Panel selections, and the primary resource all\n// follow it, so selecting a Location without moving it would leave them on the old\n// panel. Returns undefined when the selection is already current.\nexport const selectRegionActiveWidget = (\n layout: WorkbenchLayout,\n regionId: WorkbenchRegion,\n widgetId: string | undefined,\n) => {\n const region = layout.regions[regionId];\n const placement = widgetId ? region.widgets.find((candidate) => candidate.widgetId === widgetId) : undefined;\n if (widgetId && !placement) throw new Error(`Widget placement not found in ${regionId}: ${widgetId}`);\n if (region.activeWidgetId === widgetId) return undefined;\n const followsRegion = layout.activeWidgetId === region.activeWidgetId;\n const nextLayout: WorkbenchLayout = {\n ...layout,\n activeWidgetId: followsRegion ? placement?.widgetId : layout.activeWidgetId,\n activeResourceKey: followsRegion ? placement?.resourceKey : layout.activeResourceKey,\n activeLocationWidgetId: placement?.role === \"location\" ? placement.widgetId : layout.activeLocationWidgetId,\n regions: { ...layout.regions, [regionId]: { ...region, activeWidgetId: placement?.widgetId } },\n };\n if (regionId === \"side\" || !workbenchPanelRegions.includes(regionId as WorkbenchPanelRegion)) return nextLayout;\n return setLocationSubPanelSelection(\n nextLayout,\n getActiveLocationPlacement(nextLayout),\n regionId as WorkbenchPanelRegion,\n placement?.role === \"sub-panel\" ? placement.widgetId : undefined,\n );\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type { ResourceRef } from \"../resources/resource-registry\";\nimport { getActiveLocationPlacement } from \"./layout-operations\";\nimport type {\n RegisteredWidgetContribution,\n WorkbenchLayout,\n WorkbenchPanelRegion,\n WorkbenchWidgetPlacement,\n} from \"./layout-types\";\n\nconst supportsResource = (widget: RegisteredWidgetContribution, resource: ResourceRef | undefined) => {\n if (widget.resourceKinds?.length && (!resource || !widget.resourceKinds.includes(resource.type))) return false;\n if (widget.canOpen && (!resource || !widget.canOpen(resource))) return false;\n return true;\n};\nexport const getActiveWorkbenchSubPanel = (\n layout: WorkbenchLayout,\n region: WorkbenchPanelRegion,\n resource: ResourceRef | undefined,\n options: {\n ignoreOwnerResourceKey?: boolean;\n } = {},\n) => {\n const panel = layout.regions[region];\n return panel.widgets.find(\n (placement) =>\n placement.widgetId === panel.activeWidgetId &&\n placement.role === \"sub-panel\" &&\n (options.ignoreOwnerResourceKey ||\n !placement.ownerResourceKey ||\n placement.ownerResourceKey === resourceKey(resource)),\n );\n};\nexport const getActiveWorkbenchLocationPanel = (layout: WorkbenchLayout) => getActiveLocationPlacement(layout);\nconst matchesLocationEligibility = (\n widget: RegisteredWidgetContribution,\n resource: ResourceRef | undefined,\n modeId: string | undefined,\n placement?: WorkbenchWidgetPlacement,\n location?: WorkbenchWidgetPlacement,\n) => {\n const eligibleLocations = widget.eligibleLocations;\n if (!matchesWorkbenchModeEligibility(widget, modeId)) return false;\n if (\n eligibleLocations?.resourceKinds?.length &&\n (!resource || !eligibleLocations.resourceKinds.includes(resource.type))\n ) {\n return false;\n }\n if (\n eligibleLocations?.resourceIds?.length &&\n (!resource?.id || !eligibleLocations.resourceIds.includes(resource.id))\n ) {\n return false;\n }\n if (eligibleLocations?.canOpen && (!resource || !eligibleLocations.canOpen(resource))) return false;\n if (\n eligibleLocations?.canOpenLocation &&\n !eligibleLocations.canOpenLocation({ resource, viewId: location?.viewId })\n ) {\n return false;\n }\n if (placement?.ownerResourceKey && placement.ownerResourceKey !== resourceKey(resource)) return false;\n return true;\n};\nexport const matchesWorkbenchModeEligibility = (widget: RegisteredWidgetContribution, modeId: string | undefined) => {\n const eligibleModeIds = widget.eligibleLocations?.modeIds;\n return !eligibleModeIds?.length || (modeId !== undefined && eligibleModeIds.includes(modeId));\n};\nexport const isWorkbenchPanelPlacementVisible = (\n widget: RegisteredWidgetContribution,\n resource: ResourceRef | undefined,\n modeId: string | undefined,\n placement?: WorkbenchWidgetPlacement,\n options: {\n ignoreResourceLocation?: boolean;\n location?: WorkbenchWidgetPlacement;\n } = {},\n) => {\n if (!supportsResource(widget, placement?.resource ?? resource)) return false;\n if (options.ignoreResourceLocation) return matchesWorkbenchModeEligibility(widget, modeId);\n return matchesLocationEligibility(widget, resource, modeId, placement, options.location);\n};\nexport const matchesWorkbenchPanelMenuOwner = (\n widget: RegisteredWidgetContribution,\n context: {\n locationPanel?: WorkbenchWidgetPlacement;\n subPanel?: WorkbenchWidgetPlacement;\n },\n) => {\n const owner = widget.panelMenuOwner ?? { level: \"panel\" };\n if (owner.contributionId) {\n const activeOwner = context.subPanel ?? context.locationPanel;\n return activeOwner?.contributionId === owner.contributionId;\n }\n if (context.subPanel) {\n return owner.level === \"sub-panel\";\n }\n if (owner.level === \"panel\") {\n return true;\n }\n return false;\n};\n","export type ContributionSource = \"module\" | \"extension\";\n\nexport interface ContributionMetadata {\n source?: ContributionSource;\n ownerId?: string;\n priority?: number;\n}\n\nexport interface RegisteredContributionMetadata {\n source: ContributionSource;\n ownerId: string;\n priority: number;\n}\n\nconst defaultContributionOwnerId = \"workbench.core\";\n\nexport const normalizeContributionMetadata = (metadata: ContributionMetadata = {}) => ({\n source: metadata.source ?? \"module\",\n ownerId: metadata.ownerId ?? defaultContributionOwnerId,\n priority: metadata.priority ?? 0,\n});\n\nexport const byContributionPriority = (left: RegisteredContributionMetadata, right: RegisteredContributionMetadata) =>\n right.priority - left.priority || left.ownerId.localeCompare(right.ownerId);\n","import type {\n OpenWidgetInput,\n OpenWorkbenchPanelInput,\n RegisteredWidgetContribution,\n WorkbenchPanelContribution,\n WorkbenchPanelInstance,\n WorkbenchTabRetention,\n WorkbenchWidgetPlacement,\n} from \"./layout-types\";\n\n// Without a `defaultTabRetention` the retention of an existing placement is left alone,\n// so updating a panel's title never promotes a preview tab.\nexport const toOpenWidgetInput = (\n input: OpenWorkbenchPanelInput = {},\n defaultTabRetention?: WorkbenchTabRetention,\n): OpenWidgetInput => {\n const { strategy, ...shared } = input;\n const normalized = shared.resource && shared.viewId === undefined ? { ...shared, viewId: null } : shared;\n if (!strategy) return { ...normalized, tabRetention: defaultTabRetention };\n if (strategy.kind === \"persistent\") {\n return { ...normalized, tabPosition: strategy.position, tabRetention: \"persistent\" };\n }\n if (strategy.kind === \"replace-active\") return { ...normalized, replaceActive: true };\n if (strategy.kind === \"replace-panel\") {\n return { ...normalized, replaceWidgetId: strategy.instanceId, tabRetention: strategy.retention };\n }\n return { ...normalized, tabRetention: \"preview\", tabPosition: strategy.position };\n};\n\nexport const toPanelInstance = (placement: WorkbenchWidgetPlacement): WorkbenchPanelInstance => ({\n instanceId: placement.widgetId,\n panelId: placement.contributionId,\n placementIdentity: placement.placementIdentity,\n viewId: placement.viewId,\n ownerId: placement.ownerId,\n source: placement.source,\n resource: placement.resource,\n section: placement.section,\n resourceKey: placement.resourceKey,\n ownerResourceKey: placement.ownerResourceKey,\n title: placement.title,\n pinned: placement.pinned,\n closable: placement.closable === true,\n mountStrategy: placement.mountStrategy,\n hiddenByDefault: placement.hiddenByDefault,\n tabRetention: placement.tabRetention,\n tab: placement.tab,\n});\n\nexport const toPanelContribution = (widget: RegisteredWidgetContribution): WorkbenchPanelContribution => {\n const { closable: _closable, ownedPanelMenuIds: _ownedPanelMenuIds, ...panel } = widget;\n return panel;\n};\n","import type { Disposable } from \"../../shared/disposable\";\nimport { runWorkbenchEffect } from \"../../shared/workbench-effect\";\nimport {\n type WorkbenchLayout,\n type WorkbenchPanelRegion,\n type WorkbenchRegion,\n type WorkbenchWidgetPlacement,\n workbenchPanelRegions,\n} from \"../layout/layout-model\";\nimport type { WorkbenchModeActivationContext, WorkbenchModeContribution } from \"./mode-registry-types\";\n\nconst modePanelRegions = {\n main: [\"main-header\", \"main-left-menu\", \"main\", \"main-right-menu\"],\n secondary: [\"secondary-header\", \"secondary-left-menu\", \"secondary\", \"secondary-right-menu\"],\n side: [\"side-header\", \"side-left-menu\", \"side\", \"side-right-menu\"],\n} as const satisfies Record<WorkbenchPanelRegion, readonly WorkbenchRegion[]>;\n\nconst allModeRegions = Object.values(modePanelRegions).flat();\n\nexport const panelsForMode = (mode: WorkbenchModeContribution) => mode.panels ?? workbenchPanelRegions;\n\nexport const getWorkbenchModePanelForRegion = (region: WorkbenchRegion) =>\n (Object.keys(modePanelRegions) as WorkbenchPanelRegion[]).find((panel) =>\n modePanelRegions[panel].some((candidate) => candidate === region),\n );\n\nexport const isWorkbenchModePanelAvailable = (\n mode: WorkbenchModeContribution | undefined,\n panel: WorkbenchPanelRegion,\n) => !mode || panelsForMode(mode).includes(panel);\n\nconst placementById = (layout: WorkbenchLayout, widgetId: string | undefined) => {\n if (!widgetId) return undefined;\n return Object.values(layout.regions)\n .flatMap((region) => region.widgets)\n .find((placement) => placement.widgetId === widgetId);\n};\n\nconst withActivePlacement = (\n layout: WorkbenchLayout,\n candidates: readonly (WorkbenchWidgetPlacement | undefined)[],\n) => {\n const active = candidates.find((placement) => placement && placementById(layout, placement.widgetId));\n return {\n ...layout,\n activeWidgetId: active?.widgetId,\n activeResourceKey: active?.resourceKey,\n };\n};\n\nconst clearRegions = (layout: WorkbenchLayout, regionIds: readonly WorkbenchRegion[]) => {\n if (regionIds.length === 0) return layout;\n const clearedPanels = new Set(\n (Object.keys(modePanelRegions) as WorkbenchPanelRegion[]).filter((panel) =>\n modePanelRegions[panel].some((region) => regionIds.includes(region)),\n ),\n );\n const regionsNeedClearing = regionIds.some((regionId) => {\n const region = layout.regions[regionId];\n return region.widgets.length > 0 || region.activeWidgetId !== undefined || region.visible;\n });\n const selectionsNeedClearing = Object.values(layout.locationSubPanelSelections ?? {}).some((selections) =>\n Object.keys(selections).some((panel) => clearedPanels.has(panel as WorkbenchPanelRegion)),\n );\n if (!regionsNeedClearing && !selectionsNeedClearing) return layout;\n\n const regions = { ...layout.regions };\n for (const regionId of regionIds) {\n regions[regionId] = { ...regions[regionId], widgets: [], activeWidgetId: undefined, visible: false };\n }\n const locationSubPanelSelections = Object.fromEntries(\n Object.entries(layout.locationSubPanelSelections ?? {}).map(([resourceKey, selections]) => [\n resourceKey,\n Object.fromEntries(\n Object.entries(selections).filter(([panel]) => !clearedPanels.has(panel as WorkbenchPanelRegion)),\n ),\n ]),\n );\n const next = { ...layout, regions };\n return {\n ...withActivePlacement(next, [placementById(next, layout.activeWidgetId)]),\n activeLocationWidgetId: placementById(next, layout.activeLocationWidgetId)?.widgetId,\n locationSubPanelSelections,\n };\n};\n\nexport const applyModePanelAvailability = (layout: WorkbenchLayout, panels: readonly WorkbenchPanelRegion[]) => {\n const available = new Set(panels);\n const unavailableRegions = (Object.keys(modePanelRegions) as WorkbenchPanelRegion[])\n .filter((panel) => !available.has(panel))\n .flatMap((panel) => modePanelRegions[panel]);\n return clearRegions(layout, unavailableRegions);\n};\n\nexport const restoreUnscopedModeLayout = (\n current: WorkbenchLayout,\n saved: WorkbenchLayout | undefined,\n panels: readonly WorkbenchPanelRegion[],\n defaults: WorkbenchLayout,\n) => {\n if (!saved) {\n const cleared = clearRegions(current, allModeRegions);\n const regions = { ...cleared.regions };\n for (const regionId of allModeRegions) regions[regionId] = defaults.regions[regionId];\n return applyModePanelAvailability({ ...cleared, regions }, panels);\n }\n\n const regions = { ...current.regions };\n for (const regionId of allModeRegions) regions[regionId] = saved.regions[regionId];\n const merged = applyModePanelAvailability({ ...current, regions }, panels);\n const savedActive = placementById(merged, saved.activeWidgetId);\n const currentActive = placementById(merged, current.activeWidgetId);\n return {\n ...withActivePlacement(merged, [savedActive, currentActive]),\n activeLocationWidgetId:\n placementById(merged, saved.activeLocationWidgetId)?.widgetId ??\n placementById(merged, current.activeLocationWidgetId)?.widgetId,\n locationSubPanelSelections: saved.locationSubPanelSelections,\n };\n};\n\nexport const disposeReverse = (disposables: readonly Disposable[]) => {\n for (let index = disposables.length - 1; index >= 0; index -= 1) {\n runWorkbenchEffect(\"mode disposal\", () => disposables[index]?.dispose());\n }\n};\n\nexport const restoreModeLayout = (context: WorkbenchModeActivationContext, layout: WorkbenchLayout) => {\n if (layout !== context.layout.getLayout()) context.layout.restoreLayout(layout);\n};\n","import type {\n FileRendererSectionTarget,\n FileSourcePosition,\n NavigationTargetPage,\n PageLocation,\n PageParams,\n PageRef,\n ResourceRef,\n} from \"@pstdio/sdk/extensions\";\nimport { isFileSourcePosition } from \"@pstdio/sdk/extensions\";\nimport { normalizePageParams } from \"pstdio-api-contracts\";\nimport type { WorkbenchPageContribution, WorkbenchPageResourceCodec } from \"../../registries/pages/page-registry\";\n\nexport const workbenchPageRefKey = (ref: PageRef) => `${ref.extensionId ?? \"\"}:page:${ref.id}`;\n\nconst pageForRef = (pages: readonly WorkbenchPageContribution[], ref: PageRef) =>\n pages.find((page) => workbenchPageRefKey(page.ref) === workbenchPageRefKey(ref));\n\nconst pageForId = (pages: readonly WorkbenchPageContribution[], pageId: string) =>\n pages.find((page) => page.id === pageId);\n\nconst canonicalSection = (section: FileRendererSectionTarget | undefined) => {\n if (!section) return undefined;\n const anchors = section.anchors.map((anchor) =>\n Object.freeze({\n id: anchor.id,\n heading: anchor.heading,\n ...(anchor.occurrence !== undefined ? { occurrence: anchor.occurrence } : {}),\n }),\n );\n return Object.freeze({ anchors: Object.freeze(anchors) }) as FileRendererSectionTarget;\n};\n\nconst cloneMetadata = (metadata: ResourceRef[\"metadata\"]) => {\n if (!metadata) return undefined;\n return JSON.parse(JSON.stringify(metadata)) as NonNullable<ResourceRef[\"metadata\"]>;\n};\n\nconst canonicalResource = (resource: ResourceRef | undefined, resources: WorkbenchPageResourceCodec) => {\n if (!resource) return undefined;\n const normalized = resources.normalize(resource);\n if (!normalized.type || !normalized.id) throw new Error(\"Page resource has no canonical type or id\");\n const canonical = {\n type: normalized.type,\n id: normalized.id,\n ...(normalized.projectId ? { projectId: normalized.projectId } : {}),\n ...(normalized.label ? { label: normalized.label } : {}),\n ...(normalized.icon ? { icon: normalized.icon } : {}),\n ...(normalized.extensionId ? { extensionId: normalized.extensionId } : {}),\n ...(normalized.metadata ? { metadata: cloneMetadata(normalized.metadata) } : {}),\n };\n return Object.freeze(canonical) as ResourceRef;\n};\n\nconst canonicalPageRef = (page: WorkbenchPageContribution) =>\n Object.freeze({ extensionId: page.ref.extensionId, kind: \"page\" as const, id: page.ref.id });\n\nconst sectionKey = (section: FileRendererSectionTarget | undefined) => (section ? JSON.stringify(section) : \"\");\n\nconst resourceKey = (location: PageLocation, resources: WorkbenchPageResourceCodec) =>\n location.resource ? resources.toUri(resources.normalize(location.resource)) : \"\";\n\n// Same page and resource identity. The section is a position inside that resource.\nconst sharesPageResource = (left: PageLocation, right: PageLocation, resources: WorkbenchPageResourceCodec) =>\n workbenchPageRefKey(left.page) === workbenchPageRefKey(right.page) &&\n resourceKey(left, resources) === resourceKey(right, resources);\n\nexport const workbenchPageLocationRouteKey = (\n location: PageLocation,\n resources: WorkbenchPageResourceCodec,\n pages: readonly WorkbenchPageContribution[] = [],\n) => {\n const declaration = pageForRef(pages, location.page)?.document;\n const document = declaration ? location.resource?.metadata?.[declaration.metadataKey] : undefined;\n return JSON.stringify([\n workbenchPageRefKey(location.page),\n resourceKey(location, resources),\n document ?? null,\n location.position\n ? [\n location.position.line,\n location.position.column ?? 1,\n location.position.endLine ?? null,\n location.position.endColumn ?? null,\n ]\n : null,\n sectionKey(location.section),\n ]);\n};\n\nexport const workbenchPageLocationKey = (\n location: PageLocation,\n resources: WorkbenchPageResourceCodec,\n pages: readonly WorkbenchPageContribution[] = [],\n): string => {\n const own = workbenchPageLocationRouteKey(location, resources, pages);\n return location.parent ? `${own}>${workbenchPageLocationKey(location.parent, resources, pages)}` : own;\n};\n\nexport const workbenchPageLocationsEqual = (\n left: PageLocation | undefined,\n right: PageLocation | undefined,\n resources: WorkbenchPageResourceCodec,\n pages: readonly WorkbenchPageContribution[] = [],\n) => {\n let a = left;\n let b = right;\n while (a && b) {\n if (\n workbenchPageLocationRouteKey(a, resources, pages) !== workbenchPageLocationRouteKey(b, resources, pages) ||\n JSON.stringify(a.params ?? {}) !== JSON.stringify(b.params ?? {})\n )\n return false;\n a = a.parent;\n b = b.parent;\n }\n return a === b;\n};\n\nconst canonicalPosition = (position: FileSourcePosition) =>\n Object.isFrozen(position)\n ? position\n : Object.freeze({\n line: position.line,\n ...(position.column !== undefined ? { column: position.column } : {}),\n ...(position.endLine !== undefined ? { endLine: position.endLine } : {}),\n ...(position.endColumn !== undefined ? { endColumn: position.endColumn } : {}),\n });\n\nconst createLocation = (input: {\n page: WorkbenchPageContribution;\n resource?: ResourceRef;\n section?: FileRendererSectionTarget;\n position?: FileSourcePosition;\n params?: PageParams;\n parent?: PageLocation;\n resources: WorkbenchPageResourceCodec;\n}) => {\n const key = input.page.document?.metadataKey;\n const document = key ? input.resource?.metadata?.[key] : undefined;\n if (document !== undefined && (typeof document !== \"string\" || !document))\n throw new Error(\"Page location has an invalid document\");\n if (input.position && (!key || !document || input.section || !isFileSourcePosition(input.position)))\n throw new Error(\"Page location has an invalid source position\");\n return Object.freeze({\n page: canonicalPageRef(input.page),\n ...(input.params ? { params: input.params } : {}),\n ...(input.resource ? { resource: canonicalResource(input.resource, input.resources) } : {}),\n ...(input.section ? { section: canonicalSection(input.section) } : {}),\n ...(input.position\n ? {\n position: canonicalPosition(input.position),\n }\n : {}),\n ...(input.parent ? { parent: input.parent } : {}),\n }) as PageLocation;\n};\n\nconst declaredParent = (input: {\n page: WorkbenchPageContribution;\n pages: readonly WorkbenchPageContribution[];\n resources: WorkbenchPageResourceCodec;\n seen: Set<string>;\n}): PageLocation | undefined => {\n if (!input.page.parentId) return undefined;\n const parent = pageForId(input.pages, input.page.parentId);\n if (!parent) throw new Error(`Unknown parent page: ${input.page.parentId}`);\n return normalizeResolvedLocation({\n page: parent,\n pages: input.pages,\n resources: input.resources,\n seen: input.seen,\n });\n};\n\nconst locationFields = (location: Pick<PageLocation, \"resource\" | \"section\" | \"position\" | \"params\">) => ({\n resource: location.resource,\n section: location.section,\n position: location.position,\n params: location.params,\n});\n\nconst normalizeResolvedLocation = (input: {\n page: WorkbenchPageContribution;\n pages: readonly WorkbenchPageContribution[];\n resources: WorkbenchPageResourceCodec;\n seen: Set<string>;\n resource?: ResourceRef;\n section?: FileRendererSectionTarget;\n position?: FileSourcePosition;\n params?: PageParams;\n parent?: PageLocation;\n}): PageLocation => {\n const candidate = createLocation({\n page: input.page,\n resources: input.resources,\n ...(input.resource ? { resource: input.resource } : {}),\n ...(input.section ? { section: input.section } : {}),\n ...(input.position ? { position: input.position } : {}),\n ...(input.params ? { params: input.params } : {}),\n });\n const routeKey = workbenchPageLocationRouteKey(candidate, input.resources, input.pages);\n if (input.seen.has(routeKey)) throw new Error(`Page location parent cycle reaches ${input.page.id}`);\n const seen = new Set(input.seen).add(routeKey);\n const parent =\n input.parent ?? declaredParent({ page: input.page, pages: input.pages, resources: input.resources, seen });\n return createLocation({\n page: input.page,\n resources: input.resources,\n ...(candidate.resource ? { resource: candidate.resource } : {}),\n ...(candidate.section ? { section: candidate.section } : {}),\n ...(candidate.position ? { position: candidate.position } : {}),\n ...(candidate.params ? { params: candidate.params } : {}),\n ...(parent ? { parent } : {}),\n });\n};\n\n// A page that re-targets its own resource, such as selecting another file in the open\n// workspace, keeps its place in the hierarchy instead of falling back to its declared parent.\nconst inheritedParent = (\n candidate: PageLocation,\n active: PageLocation | undefined,\n resources: WorkbenchPageResourceCodec,\n) => (active?.parent && sharesPageResource(candidate, active, resources) ? active.parent : undefined);\n\nconst normalizePageTarget = (input: {\n target: NavigationTargetPage;\n pages: readonly WorkbenchPageContribution[];\n resources: WorkbenchPageResourceCodec;\n seen: Set<string>;\n active?: PageLocation;\n}): { pageId: string; location: PageLocation; open?: NavigationTargetPage[\"open\"] } => {\n const page = pageForRef(input.pages, input.target.page);\n if (!page) throw new Error(`Unknown page: ${workbenchPageRefKey(input.target.page)}`);\n const candidate = createLocation({\n page,\n resources: input.resources,\n ...(input.target.resource ? { resource: input.target.resource } : {}),\n ...(input.target.section ? { section: input.target.section } : {}),\n ...(input.target.position ? { position: { ...input.target.position } } : {}),\n params: normalizePageParams(page.params, input.target.params),\n });\n const routeKey = workbenchPageLocationRouteKey(candidate, input.resources, input.pages);\n if (input.seen.has(routeKey)) throw new Error(`Page location parent cycle reaches ${page.id}`);\n const seen = new Set(input.seen).add(routeKey);\n const contextualParent = input.target.parent\n ? normalizePageTarget({ target: input.target.parent, pages: input.pages, resources: input.resources, seen })\n .location\n : inheritedParent(candidate, input.active, input.resources);\n const location = normalizeResolvedLocation({\n page,\n pages: input.pages,\n resources: input.resources,\n seen: input.seen,\n ...(candidate.resource ? { resource: candidate.resource } : {}),\n ...(candidate.section ? { section: candidate.section } : {}),\n ...(candidate.position ? { position: candidate.position } : {}),\n ...(candidate.params ? { params: candidate.params } : {}),\n ...(contextualParent ? { parent: contextualParent } : {}),\n });\n return { pageId: page.id, location, ...(input.target.open ? { open: input.target.open } : {}) };\n};\n\nexport const normalizeWorkbenchPageTarget = (input: {\n target: NavigationTargetPage;\n pages: readonly WorkbenchPageContribution[];\n resources: WorkbenchPageResourceCodec;\n active?: PageLocation;\n}) => normalizePageTarget({ ...input, seen: new Set() });\n\nexport const normalizeWorkbenchPageLocation = (input: {\n location: PageLocation;\n pages: readonly WorkbenchPageContribution[];\n resources: WorkbenchPageResourceCodec;\n}) => {\n const normalize = (location: PageLocation, seen: Set<string>): { pageId: string; location: PageLocation } => {\n const page = pageForRef(input.pages, location.page);\n if (!page) throw new Error(`Unknown page: ${workbenchPageRefKey(location.page)}`);\n const candidate = createLocation({\n page,\n resources: input.resources,\n ...(location.resource ? { resource: location.resource } : {}),\n ...(location.section ? { section: location.section } : {}),\n ...(location.position ? { position: location.position } : {}),\n params: normalizePageParams(page.params, location.params, false),\n });\n const routeKey = workbenchPageLocationRouteKey(candidate, input.resources, input.pages);\n if (seen.has(routeKey)) throw new Error(`Page location parent cycle reaches ${page.id}`);\n const nextSeen = new Set(seen).add(routeKey);\n const explicitParent = location.parent ? normalize(location.parent, nextSeen).location : undefined;\n return {\n pageId: page.id,\n location: normalizeResolvedLocation({\n page,\n pages: input.pages,\n resources: input.resources,\n seen,\n ...locationFields(candidate),\n ...(explicitParent ? { parent: explicitParent } : {}),\n }),\n };\n };\n return normalize(input.location, new Set());\n};\n\nexport const normalizeDirectWorkbenchPageLocation = (input: {\n pageId: string;\n pages: readonly WorkbenchPageContribution[];\n resources: WorkbenchPageResourceCodec;\n resource?: ResourceRef;\n section?: FileRendererSectionTarget;\n position?: FileSourcePosition;\n params?: PageParams;\n}) => {\n const page = pageForId(input.pages, input.pageId);\n if (!page) throw new Error(`Unknown page: ${input.pageId}`);\n return {\n pageId: page.id,\n location: normalizeResolvedLocation({\n page,\n pages: input.pages,\n resources: input.resources,\n seen: new Set(),\n ...(input.resource ? { resource: input.resource } : {}),\n ...(input.section ? { section: input.section } : {}),\n ...(input.position ? { position: input.position } : {}),\n ...(input.params ? { params: input.params } : {}),\n }),\n };\n};\n","import type { PlacementIdentity } from \"@pstdio/sdk/extensions\";\nimport { type WorkbenchRegion, workbenchRegions } from \"./layout-types\";\n\nexport interface PlacementDestination {\n identity: PlacementIdentity;\n region: WorkbenchRegion;\n}\n\nexport interface ResolvedOwnedPlacement<Value = unknown> {\n identity: PlacementIdentity;\n region: WorkbenchRegion;\n order: number;\n value: Value;\n}\n\nexport interface ComposeOwnedPlacementsInput<Value> {\n shell: readonly ResolvedOwnedPlacement<Value>[];\n mode?: readonly ResolvedOwnedPlacement<Value>[];\n page?: readonly ResolvedOwnedPlacement<Value>[];\n closed?: readonly PlacementIdentity[];\n}\n\nexport interface ComposedOwnedPlacements<Value> {\n placements: readonly ResolvedOwnedPlacement<Value>[];\n closed: readonly ResolvedOwnedPlacement<Value>[];\n regions: Record<WorkbenchRegion, readonly ResolvedOwnedPlacement<Value>[]>;\n visibleRegions: ReadonlySet<WorkbenchRegion>;\n}\n\nexport interface OwnedPlacementUpdate<Value> {\n current: ResolvedOwnedPlacement<Value>;\n desired: ResolvedOwnedPlacement<Value>;\n}\n\nexport interface OwnedPlacementReconciliation<Value> {\n destinations?: readonly PlacementDestination[];\n add: readonly ResolvedOwnedPlacement<Value>[];\n retain: readonly ResolvedOwnedPlacement<Value>[];\n update: readonly OwnedPlacementUpdate<Value>[];\n activate: readonly ResolvedOwnedPlacement<Value>[];\n remove: readonly ResolvedOwnedPlacement<Value>[];\n}\n\nexport interface ReconcileOwnedPlacementsInput<Value> {\n destinations?: readonly PlacementDestination[];\n current: readonly ResolvedOwnedPlacement<Value>[];\n desired: readonly ResolvedOwnedPlacement<Value>[];\n activate?: readonly PlacementIdentity[];\n valuesEqual: (current: Value, desired: Value) => boolean;\n}\n\nconst compareText = (left: string, right: string) => {\n if (left < right) return -1;\n return left > right ? 1 : 0;\n};\n\nconst placementOwnerSortKey = (identity: PlacementIdentity) => {\n if (identity.kind === \"shell\") return `shell\\0${identity.placementId}`;\n if (identity.kind === \"mode\") return `mode\\0${identity.modeId}\\0${identity.placementId}`;\n return `page\\0${identity.pageId}\\0${identity.slotId}`;\n};\n\nexport const placementIdentityKey = (identity: PlacementIdentity) => {\n if (identity.kind === \"shell\") return JSON.stringify([\"shell\", identity.placementId, identity.instanceKey]);\n if (identity.kind === \"mode\") {\n return JSON.stringify([\"mode\", identity.modeId, identity.placementId, identity.instanceKey]);\n }\n return JSON.stringify([\"page\", identity.pageId, identity.slotId, identity.instanceKey]);\n};\n\nconst comparePlacementIdentity = (left: ResolvedOwnedPlacement<unknown>, right: ResolvedOwnedPlacement<unknown>) => {\n const owner = compareText(placementOwnerSortKey(left.identity), placementOwnerSortKey(right.identity));\n if (owner !== 0) return owner;\n return compareText(left.identity.instanceKey, right.identity.instanceKey);\n};\n\nconst compareRegionPlacement = (left: ResolvedOwnedPlacement<unknown>, right: ResolvedOwnedPlacement<unknown>) =>\n left.order - right.order || comparePlacementIdentity(left, right);\n\nconst assertOwner = (owner: PlacementIdentity[\"kind\"], placement: ResolvedOwnedPlacement<unknown>) => {\n if (placement.identity.kind === owner) return;\n const label = `${owner[0]?.toUpperCase()}${owner.slice(1)}`;\n throw new Error(`${label} placement must have a ${owner} owner`);\n};\n\nconst collectPlacements = <Value>(input: ComposeOwnedPlacementsInput<Value>) => {\n const placements: ResolvedOwnedPlacement<Value>[] = [];\n const seen = new Set<string>();\n const add = (owner: PlacementIdentity[\"kind\"], candidates: readonly ResolvedOwnedPlacement<Value>[]) => {\n for (const candidate of candidates) {\n assertOwner(owner, candidate);\n if (!Number.isFinite(candidate.order)) throw new Error(\"Placement order must be a finite number\");\n const key = placementIdentityKey(candidate.identity);\n if (seen.has(key)) throw new Error(`Duplicate placement identity: ${key}`);\n seen.add(key);\n placements.push(candidate);\n }\n };\n\n add(\"shell\", input.shell);\n add(\"mode\", input.mode ?? []);\n add(\"page\", input.page ?? []);\n const modeIds = new Set(\n (input.mode ?? []).map((placement) =>\n placement.identity.kind === \"mode\" ? placement.identity.modeId : \"invalid-mode-owner\",\n ),\n );\n if (modeIds.size > 1) throw new Error(\"Mode placements must belong to one active mode\");\n return placements;\n};\n\nconst emptyRegions = <Value>() =>\n workbenchRegions.reduce(\n (regions, region) => {\n regions[region] = [];\n return regions;\n },\n {} as Record<WorkbenchRegion, ResolvedOwnedPlacement<Value>[]>,\n );\n\nexport const composeOwnedPlacements = <Value>(\n input: ComposeOwnedPlacementsInput<Value>,\n): ComposedOwnedPlacements<Value> => {\n const declared = collectPlacements(input);\n const closedKeys = new Set((input.closed ?? []).map(placementIdentityKey));\n const closed: ResolvedOwnedPlacement<Value>[] = [];\n const regions = emptyRegions<Value>();\n\n for (const placement of declared) {\n if (closedKeys.has(placementIdentityKey(placement.identity))) {\n closed.push(placement);\n continue;\n }\n regions[placement.region].push(placement);\n }\n\n for (const region of workbenchRegions) regions[region].sort(compareRegionPlacement);\n closed.sort(comparePlacementIdentity);\n const placements = workbenchRegions.flatMap((region) => regions[region]);\n const visibleRegions = new Set(workbenchRegions.filter((region) => regions[region].length > 0));\n return { placements, closed, regions, visibleRegions };\n};\n\nconst indexPlacements = <Value>(placements: readonly ResolvedOwnedPlacement<Value>[]) => {\n const indexed = new Map<string, ResolvedOwnedPlacement<Value>>();\n for (const placement of placements) {\n const key = placementIdentityKey(placement.identity);\n if (indexed.has(key)) throw new Error(`Duplicate placement identity: ${key}`);\n indexed.set(key, placement);\n }\n return indexed;\n};\n\nconst placementShapeEqual = <Value>(\n current: ResolvedOwnedPlacement<Value>,\n desired: ResolvedOwnedPlacement<Value>,\n valuesEqual: (current: Value, desired: Value) => boolean,\n) => current.region === desired.region && current.order === desired.order && valuesEqual(current.value, desired.value);\n\nexport const reconcileOwnedPlacements = <Value>(\n input: ReconcileOwnedPlacementsInput<Value>,\n): OwnedPlacementReconciliation<Value> => {\n const current = indexPlacements(input.current);\n const desired = indexPlacements(input.desired);\n const add: ResolvedOwnedPlacement<Value>[] = [];\n const retain: ResolvedOwnedPlacement<Value>[] = [];\n const update: OwnedPlacementUpdate<Value>[] = [];\n const remove: ResolvedOwnedPlacement<Value>[] = [];\n\n for (const [key, desiredPlacement] of desired) {\n const currentPlacement = current.get(key);\n if (!currentPlacement) {\n add.push(desiredPlacement);\n } else if (placementShapeEqual(currentPlacement, desiredPlacement, input.valuesEqual)) {\n retain.push(desiredPlacement);\n } else {\n update.push({ current: currentPlacement, desired: desiredPlacement });\n }\n }\n for (const [key, currentPlacement] of current) if (!desired.has(key)) remove.push(currentPlacement);\n\n const activationKeys = new Set((input.activate ?? []).map(placementIdentityKey));\n const activate = Array.from(activationKeys, (key) => {\n const placement = desired.get(key);\n if (!placement) throw new Error(`Cannot activate missing placement: ${key}`);\n return placement;\n });\n\n add.sort(comparePlacementIdentity);\n retain.sort(comparePlacementIdentity);\n update.sort((left, right) => comparePlacementIdentity(left.desired, right.desired));\n activate.sort(comparePlacementIdentity);\n remove.sort(comparePlacementIdentity);\n return {\n add,\n retain,\n update,\n activate,\n remove,\n ...(input.destinations?.length ? { destinations: input.destinations } : {}),\n };\n};\n","import type { ResourceBinding } from \"@pstdio/sdk/extensions\";\nimport type { WorkbenchPageContribution, WorkbenchPageSlot } from \"./page-registry-types\";\n\nexport const PAGE_MAIN_SLOT_ID = \"$main\";\n\nexport interface ResolvedPageSlot extends WorkbenchPageSlot {\n readonly role: \"primary\" | \"auxiliary\";\n}\n\nexport const isPageSlotClosable = (slot: ResolvedPageSlot) => {\n if (slot.item.kind === \"view\") return slot.item.presence !== \"fixed\";\n // A single-resource Main is the page itself, not a dismissible resource tab.\n return slot.role !== \"primary\" || slot.item.binding.cardinality === \"many\";\n};\n\nexport const primarySlot = (page: WorkbenchPageContribution): ResolvedPageSlot | undefined => {\n if (page.main.kind !== \"view\") return undefined;\n const { kind: _kind, view, cardinality, ...presentation } = page.main;\n const binding: ResourceBinding | undefined = page.resource ? { ...page.resource, view, cardinality } : undefined;\n return {\n ...presentation,\n id: PAGE_MAIN_SLOT_ID,\n role: \"primary\",\n region: \"main\",\n item: binding ? { kind: \"binding\", binding } : { kind: \"view\", view, presence: \"fixed\" },\n };\n};\n\nexport const pageSlots = (page: WorkbenchPageContribution): ResolvedPageSlot[] => {\n const main = primarySlot(page);\n return [...(main ? [main] : []), ...page.slots.map((slot) => ({ ...slot, role: \"auxiliary\" as const }))];\n};\n\nexport const requirePageSlot = (page: WorkbenchPageContribution, slotId: string) => {\n const slot = pageSlots(page).find((candidate) => candidate.id === slotId);\n if (!slot) throw new Error(`Unknown page slot: ${page.id}.${slotId}`);\n return slot;\n};\n\nexport const emptyMainSlot = (page: WorkbenchPageContribution): ResolvedPageSlot | undefined => {\n if (page.main.kind !== \"panels\") return undefined;\n return {\n id: PAGE_MAIN_SLOT_ID,\n role: \"primary\",\n region: \"main\",\n item: { kind: \"view\", view: page.main.empty, presence: \"fixed\" },\n };\n};\nexport const pagePlacementDeclarations = (page: WorkbenchPageContribution) => {\n const empty = emptyMainSlot(page);\n return [...pageSlots(page), ...(empty ? [empty] : [])];\n};\n","import type { PageLocation, ResourceRef } from \"@pstdio/sdk/extensions\";\nimport { workbenchPageLocationKey } from \"../../controllers/page-location/page-location-normalization\";\nimport type { WorkbenchPageContribution, WorkbenchPageResourceCodec } from \"./page-registry-types\";\n\nexport const pageStateOwnerKey = (\n page: WorkbenchPageContribution,\n resource: ResourceRef | undefined,\n resources: WorkbenchPageResourceCodec,\n) =>\n page.resource && resource\n ? `${page.id}|${JSON.stringify([\n resources.toUri(resources.normalize(resource)),\n page.document ? resource.metadata?.[page.document.metadataKey] : null,\n ])}`\n : page.id;\n\nexport const staticPageInstanceKey = (\n page: WorkbenchPageContribution,\n resource: ResourceRef | undefined,\n resources: WorkbenchPageResourceCodec,\n) => (page.resource && resource ? pageStateOwnerKey(page, resource, resources) : \"default\");\n\nexport const ownsStaticPageInstance = (key: string, pageId: string, instanceKey: string) => {\n const owner = instanceKey === \"default\" ? pageId : instanceKey;\n return key === owner || key.startsWith(`${owner}|`);\n};\n\nexport const pageStateKey = (\n page: WorkbenchPageContribution,\n location: PageLocation | undefined,\n resources: WorkbenchPageResourceCodec,\n) => {\n if (page.resource) return pageStateOwnerKey(page, location?.resource, resources);\n return page.main.kind === \"panels\" && location\n ? `${page.id}|${workbenchPageLocationKey({ ...location, position: undefined }, resources)}`\n : page.id;\n};\n\nexport const removePageStates = <State>(states: Readonly<Record<string, State>>, pageId: string) =>\n Object.fromEntries(Object.entries(states).filter(([key]) => key !== pageId && !key.startsWith(`${pageId}|`)));\n","import type { Disposable } from \"../disposable\";\nimport { createWorkbenchStore, type WorkbenchStore } from \"../store/workbench-store\";\n\nexport type ContextKeyValue = boolean | number | string | undefined;\n\nexport interface ContextKeyStoreState {\n values: Record<string, ContextKeyValue>;\n}\n\nexport interface ContextKeyScope extends Disposable {\n ownerId: string;\n set(key: string, value: ContextKeyValue): void;\n get(key: string): ContextKeyValue;\n delete(key: string): void;\n}\n\nexport interface ContextKeyService {\n store: WorkbenchStore<ContextKeyStoreState>;\n set(key: string, value: ContextKeyValue): void;\n get(key: string): ContextKeyValue;\n delete(key: string): void;\n createScope(ownerId: string): ContextKeyScope;\n deleteOwner(ownerId: string): void;\n snapshot(): Record<string, ContextKeyValue>;\n matches(expression?: string): boolean;\n}\n\nconst readComparisonValue = (value: string) => value.replace(/^['\"]|['\"]$/g, \"\");\n\nconst matchesTerm = (values: Record<string, ContextKeyValue>, term: string) => {\n const trimmed = term.trim();\n if (trimmed.length === 0) return true;\n\n const comparison = trimmed.match(/^([A-Za-z0-9_.-]+)\\s*(==|!=)\\s*(.+)$/);\n if (comparison) {\n const [, key, operator, rawValue] = comparison;\n const actual = values[key ?? \"\"];\n const expected = readComparisonValue(rawValue ?? \"\");\n return operator === \"==\" ? String(actual) === expected : String(actual) !== expected;\n }\n\n if (trimmed.startsWith(\"!\")) return !values[trimmed.slice(1)];\n\n return Boolean(values[trimmed]);\n};\n\nexport const matchesContextExpression = (values: Record<string, ContextKeyValue>, expression?: string) => {\n if (!expression) return true;\n return expression.split(\"||\").some((orClause) => orClause.split(\"&&\").every((term) => matchesTerm(values, term)));\n};\n\nexport const createContextKeyService = (): ContextKeyService => {\n const store = createWorkbenchStore<ContextKeyStoreState>({\n name: \"workbench.context\",\n initialState: { values: {} },\n });\n\n let globalValues: Record<string, ContextKeyValue> = {};\n const ownerValues = new Map<string, Record<string, ContextKeyValue>>();\n\n const buildValues = () => {\n const values = { ...globalValues };\n for (const scopedValues of ownerValues.values()) Object.assign(values, scopedValues);\n return values;\n };\n\n const publish = (action: string) => {\n store.setState({ values: buildValues() }, false, action);\n };\n\n return {\n store,\n\n set(key, value) {\n if (globalValues[key] === value) return;\n globalValues = { ...globalValues, [key]: value };\n publish(\"setContextKey\");\n },\n\n get(key) {\n return store.getState().values[key];\n },\n\n delete(key) {\n if (!(key in globalValues)) return;\n const { [key]: _removed, ...rest } = globalValues;\n globalValues = rest;\n publish(\"deleteContextKey\");\n },\n\n createScope(ownerId) {\n ownerValues.set(ownerId, ownerValues.get(ownerId) ?? {});\n let disposed = false;\n\n const assertActive = () => {\n if (disposed) throw new Error(`Context key scope disposed: ${ownerId}`);\n };\n\n return {\n ownerId,\n\n set(key, value) {\n assertActive();\n const values = ownerValues.get(ownerId) ?? {};\n if (values[key] === value) return;\n ownerValues.set(ownerId, { ...values, [key]: value });\n publish(\"setScopedContextKey\");\n },\n\n get(key) {\n assertActive();\n return ownerValues.get(ownerId)?.[key];\n },\n\n delete(key) {\n assertActive();\n const values = ownerValues.get(ownerId);\n if (!values || !(key in values)) return;\n const { [key]: _removed, ...rest } = values;\n ownerValues.set(ownerId, rest);\n publish(\"deleteScopedContextKey\");\n },\n\n dispose() {\n if (disposed) return;\n disposed = true;\n if (!ownerValues.delete(ownerId)) return;\n publish(\"disposeContextKeyScope\");\n },\n };\n },\n\n deleteOwner(ownerId) {\n if (!ownerValues.delete(ownerId)) return;\n publish(\"deleteContextKeyOwner\");\n },\n\n snapshot() {\n return { ...store.getState().values };\n },\n\n matches(expression) {\n return matchesContextExpression(store.getState().values, expression);\n },\n };\n};\n","import { type ResourceRef, resourceKey } from \"@pstdio/sdk/extensions\";\nimport { createDisposable } from \"../../shared/disposable\";\nimport { createWorkbenchStore } from \"../../shared/store/workbench-store\";\n\ntype ResourceChange = { label: string } | { removed: true };\n\nexport type ResourcePreviewChanges = ReadonlyMap<symbol, { resource: ResourceRef; change: ResourceChange }>;\n\nexport const resolveResourcePreview = (resource: ResourceRef, changes: ResourcePreviewChanges) => {\n let result: ResourceRef | undefined = resource;\n for (const intent of changes.values()) {\n if (resourceKey(intent.resource) !== resourceKey(resource)) continue;\n result = \"removed\" in intent.change ? undefined : { ...resource, label: intent.change.label };\n }\n return result;\n};\n\nexport const createResourcePreview = () => {\n const store = createWorkbenchStore<{ changes: ResourcePreviewChanges }>({\n name: \"workbench.resource-preview\",\n initialState: { changes: new Map() },\n });\n const writes = new Map<string, Promise<unknown>>();\n const refreshers = new Set<(resource: ResourceRef) => Promise<void>>();\n const remove = (token: symbol) => {\n const changes = new Map(store.getState().changes);\n changes.delete(token);\n store.setState({ changes });\n };\n return {\n store,\n resolve(resource: ResourceRef) {\n return resolveResourcePreview(resource, store.getState().changes);\n },\n persist<T>(resource: ResourceRef, save: () => Promise<T>): Promise<T> {\n const key = resourceKey(resource);\n const pending = (writes.get(key) ?? Promise.resolve()).catch(() => undefined).then(save);\n writes.set(key, pending);\n void pending\n .finally(() => {\n if (writes.get(key) === pending) writes.delete(key);\n })\n .catch(() => undefined);\n return pending;\n },\n subscribeRefresh(refresh: (resource: ResourceRef) => Promise<void>) {\n refreshers.add(refresh);\n return createDisposable(() => refreshers.delete(refresh));\n },\n begin(resource: ResourceRef, change: ResourceChange) {\n const token = Symbol(\"resource mutation\");\n store.setState({ changes: new Map([...store.getState().changes, [token, { resource, change }]]) });\n return {\n rollback: () => remove(token),\n async commit() {\n // Keep the preview through the authoritative reads, so old snapshots cannot flash back.\n await Promise.allSettled([...refreshers].map((refresh) => refresh(resource)));\n remove(token);\n },\n };\n },\n };\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type { ResourceRef } from \"./resource-registry\";\nexport interface WorkbenchViewHierarchyNode {\n type: \"view\";\n viewId: string;\n label?: string;\n icon?: string;\n}\nexport type WorkbenchHierarchyNode = ResourceRef | WorkbenchViewHierarchyNode;\nexport const isWorkbenchViewHierarchyNode = (node: WorkbenchHierarchyNode): node is WorkbenchViewHierarchyNode =>\n \"viewId\" in node && node.type === \"view\";\n// Hierarchy comes from resource identity: providers resolve a resource's parent,\n// and the walk below turns those edges into the root-to-leaf breadcrumb path.\nexport interface ResourceHierarchyProvider {\n id: string;\n priority?: number;\n canResolve(resource: ResourceRef): boolean;\n getParent(resource: ResourceRef): WorkbenchHierarchyNode | undefined;\n}\nexport type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;\nexport const resourceHierarchyCycleCode = \"resource_hierarchy_cycle\";\n// Emitted when parent resolution repeats a resource URI. Traversal keeps the\n// acyclic root-to-leaf prefix, so consumers such as breadcrumbs stay usable\n// while the faulty provider is diagnosed.\nexport interface ResourceHierarchyCycle {\n code: typeof resourceHierarchyCycleCode;\n path: WorkbenchHierarchyNode[];\n repeatedUri: string;\n}\nexport const sortHierarchyProviders = (providers: ResolvedResourceHierarchyProvider[]) =>\n [...providers].sort((left, right) => right.priority - left.priority || left.id.localeCompare(right.id));\nexport const walkResourceHierarchy = (\n providers: ResolvedResourceHierarchyProvider[],\n resource: ResourceRef,\n notifyCycle: (cycle: ResourceHierarchyCycle) => void,\n) => {\n const sorted = sortHierarchyProviders(providers);\n const path: WorkbenchHierarchyNode[] = [resource];\n const visitedKeys = new Set([`resource:${resourceKey(resource)}`]);\n let current = resource;\n while (true) {\n const provider = sorted.find((candidate) => candidate.canResolve(current));\n const parent = provider?.getParent(current);\n if (!parent) break;\n const parentKey = isWorkbenchViewHierarchyNode(parent)\n ? `view:${parent.viewId}`\n : `resource:${resourceKey(parent)}`;\n if (visitedKeys.has(parentKey)) {\n // A repeated URI means the providers formed a cycle. Keep the acyclic\n // prefix and surface the fault instead of looping or dropping the path.\n notifyCycle({\n code: resourceHierarchyCycleCode,\n path: [...path],\n repeatedUri: isWorkbenchViewHierarchyNode(parent) ? parentKey : resourceKey(parent),\n });\n break;\n }\n path.unshift(parent);\n visitedKeys.add(parentKey);\n if (isWorkbenchViewHierarchyNode(parent)) break;\n current = parent;\n }\n return path;\n};\n","import type { PlacementIdentity, RelatedResourceOpenings, ResourceRef } from \"@pstdio/sdk/extensions\";\nimport type { NavigationTarget } from \"../navigation/navigation-registry\";\nimport { createResourcePreview } from \"./resource-preview\";\n\nexport type { ResourceRef } from \"@pstdio/sdk/extensions\";\n\nimport { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type { ContextKeyValue } from \"../../shared/context/context-key-service\";\nimport {\n byContributionPriority,\n type ContributionMetadata,\n normalizeContributionMetadata,\n type RegisteredContributionMetadata,\n} from \"../../shared/contributions/metadata\";\nimport { createDisposable, type Disposable } from \"../../shared/disposable\";\nimport { createWorkbenchStore, type WorkbenchStore } from \"../../shared/store/workbench-store\";\nimport {\n isWorkbenchViewHierarchyNode,\n type ResolvedResourceHierarchyProvider,\n type ResourceHierarchyCycle,\n type ResourceHierarchyProvider,\n sortHierarchyProviders,\n type WorkbenchHierarchyNode,\n walkResourceHierarchy,\n} from \"./resource-hierarchy\";\n\nexport type {\n ResolvedResourceHierarchyProvider,\n ResourceHierarchyCycle,\n ResourceHierarchyProvider,\n WorkbenchHierarchyNode,\n WorkbenchViewHierarchyNode,\n} from \"./resource-hierarchy\";\nexport { isWorkbenchViewHierarchyNode, resourceHierarchyCycleCode } from \"./resource-hierarchy\";\n\nexport const workbenchResourceTypeContextKey = \"workbench.resource.type\";\nexport const workbenchResourceOwnerContextKey = \"workbench.resource.extensionId\";\nexport const workbenchResourceIdContextKey = \"workbench.resource.id\";\nexport const workbenchResourceMetadataContextKey = (key: string) => `workbench.resource.metadata.${key}`;\nexport const workbenchSelectionResourceKeyMetadataKey = \"workbench.selectionResourceKey\";\nconst isContextPrimitive = (value: unknown): value is Exclude<ContextKeyValue, undefined> =>\n typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\";\nexport const createWorkbenchResourceContextValues = (resource: ResourceRef | undefined) => {\n if (!resource) return {};\n const values: Record<string, ContextKeyValue> = {\n [workbenchResourceTypeContextKey]: resource.type,\n [workbenchResourceIdContextKey]: resource.id,\n [workbenchResourceOwnerContextKey]: resource.extensionId,\n };\n for (const [key, value] of Object.entries(resource.metadata ?? {})) {\n if (isContextPrimitive(value)) values[workbenchResourceMetadataContextKey(key)] = value;\n }\n return values;\n};\nconst isWorkbenchResourceContextKey = (key: string) =>\n key === workbenchResourceTypeContextKey ||\n key === workbenchResourceOwnerContextKey ||\n key === workbenchResourceIdContextKey ||\n key.startsWith(workbenchResourceMetadataContextKey(\"\"));\n// A menu for one resource must not see the open page's resource keys. Otherwise a key\n// the resource leaves out would silently take the page's value.\nexport const scopeWorkbenchResourceContextValues = (\n values: Record<string, ContextKeyValue>,\n resource: ResourceRef | undefined,\n) => {\n const scoped: Record<string, ContextKeyValue> = {};\n for (const [key, value] of Object.entries(values)) {\n if (!isWorkbenchResourceContextKey(key)) scoped[key] = value;\n }\n return { ...scoped, ...createWorkbenchResourceContextValues(resource) };\n};\nexport const createWorkbenchSelectionResourceMetadata = (resource: ResourceRef) => ({\n [workbenchSelectionResourceKeyMetadataKey]: resourceKey(resource),\n});\nexport const getWorkbenchSelectionResourceKeys = (resource: ResourceRef | undefined) => {\n if (!resource) return [];\n const selectionResourceKey = resource.metadata?.[workbenchSelectionResourceKeyMetadataKey];\n if (typeof selectionResourceKey !== \"string\" || selectionResourceKey === resourceKey(resource))\n return [resourceKey(resource)];\n return [resourceKey(resource), selectionResourceKey];\n};\nexport interface ResourceKindContribution {\n kind: string;\n extensionId?: string;\n relatedOpenings?(\n resource: ResourceRef,\n signal: AbortSignal,\n ): RelatedResourceOpenings | Promise<RelatedResourceOpenings>;\n label: string;\n icon?: string;\n /** Read current owner data without storing a second copy in the workbench. */\n resolve?(resource: ResourceRef): ResourceRef | undefined;\n subscribe?(listener: () => void): Disposable | (() => void);\n}\nexport interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {}\nexport interface ResourceBrowseEntry {\n resource: ResourceRef;\n indicator?: { icon: string; color?: string; label?: string };\n target?: NavigationTarget;\n searchText?: string;\n description?: string;\n group?: string;\n order?: number;\n activate?: (resource: ResourceRef) => unknown | Promise<unknown>;\n}\n// Context handed to providers so candidate lists can be scoped to the current surface\n// hierarchy — e.g. only the sessions/terminals belonging to the active primary resource.\nexport interface ResourceListContext {\n primary?: ResourceRef;\n}\nexport interface ResourceProvider {\n id: string;\n kind: string;\n list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];\n /** Direct relationships in the owner's recent-first order. */\n related?(resource: ResourceRef): readonly ResourceBrowseEntry[];\n}\nexport interface ResourceRegistryStoreState {\n kinds: Record<string, RegisteredResourceKind>;\n providers: Record<string, ResourceProvider>;\n hierarchyProviders: Record<string, ResolvedResourceHierarchyProvider>;\n}\nexport interface ResourceRegistry {\n preview: ReturnType<typeof createResourcePreview>;\n removed(resource: ResourceRef): void;\n onWillRemove(listener: (resource: ResourceRef) => readonly PlacementIdentity[]): Disposable;\n store: WorkbenchStore<ResourceRegistryStoreState>;\n registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable;\n getKind(kind: string, extensionId?: string): RegisteredResourceKind | undefined;\n listKinds(): RegisteredResourceKind[];\n registerProvider(provider: ResourceProvider): Disposable;\n listProviders(): ResourceProvider[];\n listResources(query: string): readonly ResourceBrowseEntry[];\n listRelatedResources(resource: ResourceRef): readonly ResourceBrowseEntry[];\n registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable;\n listHierarchyProviders(): ResolvedResourceHierarchyProvider[];\n walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];\n onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable;\n}\nexport interface CreateResourceRegistryInput {\n remove?(resource: ResourceRef, retained: readonly PlacementIdentity[]): void;\n // Resolves the active primary resource so listResources can scope provider candidates.\n getPrimary?: () => ResourceRef | undefined;\n resolveView?: (viewId: string) =>\n | {\n label?: string;\n icon?: string;\n }\n | undefined;\n}\nexport const createResourceRegistry = (input: CreateResourceRegistryInput = {}): ResourceRegistry => {\n const removalListeners = new Set<(resource: ResourceRef) => readonly PlacementIdentity[]>();\n const cycleListeners = new Set<(cycle: ResourceHierarchyCycle) => void>();\n const store = createWorkbenchStore<ResourceRegistryStoreState>({\n name: \"workbench.resources\",\n initialState: { kinds: {}, providers: {}, hierarchyProviders: {} },\n });\n return {\n store,\n preview: createResourcePreview(),\n removed(resource) {\n input.remove?.(\n resource,\n [...removalListeners].flatMap((listener) => listener(resource)),\n );\n },\n onWillRemove(listener) {\n removalListeners.add(listener);\n return createDisposable(() => removalListeners.delete(listener));\n },\n registerKind(kind, metadata) {\n const snapshot = store.getState();\n const key = kind.extensionId ? `${kind.extensionId}:${kind.kind}` : kind.kind;\n if (snapshot.kinds[key]) throw new Error(`Resource kind already registered: ${key}`);\n const record: RegisteredResourceKind = {\n ...normalizeContributionMetadata(metadata),\n ...kind,\n };\n store.setState({ ...snapshot, kinds: { ...snapshot.kinds, [key]: record } }, false, \"registerKind\");\n return createDisposable(() => {\n const current = store.getState();\n if (current.kinds[key] !== record) return;\n const { [key]: _removed, ...rest } = current.kinds;\n store.setState({ ...current, kinds: rest }, false, \"unregisterKind\");\n });\n },\n getKind(kind, extensionId) {\n const kinds = store.getState().kinds;\n if (extensionId) return kinds[`${extensionId}:${kind}`] ?? kinds[kind];\n return kinds[kind] ?? Object.values(kinds).find((candidate) => candidate.kind === kind);\n },\n listKinds() {\n return Object.values(store.getState().kinds).sort(byContributionPriority);\n },\n registerProvider(provider) {\n const snapshot = store.getState();\n if (snapshot.providers[provider.id]) throw new Error(`Resource provider already registered: ${provider.id}`);\n store.setState(\n { ...snapshot, providers: { ...snapshot.providers, [provider.id]: provider } },\n false,\n \"registerProvider\",\n );\n return createDisposable(() => {\n const current = store.getState();\n if (current.providers[provider.id] !== provider) return;\n const { [provider.id]: _removed, ...rest } = current.providers;\n store.setState({ ...current, providers: rest }, false, \"unregisterProvider\");\n });\n },\n listProviders() {\n return Object.values(store.getState().providers);\n },\n listResources(query) {\n const context: ResourceListContext = { primary: input.getPrimary?.() };\n const entries: ResourceBrowseEntry[] = [];\n for (const provider of Object.values(store.getState().providers)) {\n entries.push(...provider.list(query, context));\n }\n return entries;\n },\n listRelatedResources(resource) {\n return Object.values(store.getState().providers).flatMap((provider) => provider.related?.(resource) ?? []);\n },\n registerHierarchyProvider(provider) {\n const snapshot = store.getState();\n if (snapshot.hierarchyProviders[provider.id]) {\n throw new Error(`Resource hierarchy provider already registered: ${provider.id}`);\n }\n const record: ResolvedResourceHierarchyProvider = { ...provider, priority: provider.priority ?? 0 };\n store.setState(\n {\n ...snapshot,\n hierarchyProviders: { ...snapshot.hierarchyProviders, [provider.id]: record },\n },\n false,\n \"registerHierarchyProvider\",\n );\n return createDisposable(() => {\n const current = store.getState();\n if (current.hierarchyProviders[provider.id] !== record) return;\n const { [provider.id]: _removed, ...rest } = current.hierarchyProviders;\n store.setState({ ...current, hierarchyProviders: rest }, false, \"unregisterHierarchyProvider\");\n });\n },\n listHierarchyProviders() {\n return sortHierarchyProviders(Object.values(store.getState().hierarchyProviders));\n },\n walkHierarchy(resource) {\n if (!resource) return [];\n const path = walkResourceHierarchy(Object.values(store.getState().hierarchyProviders), resource, (cycle) => {\n for (const listener of cycleListeners) listener(cycle);\n });\n return path.map((node) => {\n if (!isWorkbenchViewHierarchyNode(node)) return node;\n const view = input.resolveView?.(node.viewId);\n return view ? { ...node, label: view.label, icon: view.icon } : node;\n });\n },\n onDidDetectHierarchyCycle(listener) {\n cycleListeners.add(listener);\n return createDisposable(() => {\n cycleListeners.delete(listener);\n });\n },\n };\n};\n","import type { ContextKeyService } from \"../../shared/context/context-key-service\";\nimport {\n byContributionPriority,\n type ContributionMetadata,\n normalizeContributionMetadata,\n type RegisteredContributionMetadata,\n} from \"../../shared/contributions/metadata\";\nimport { createDisposable, type Disposable } from \"../../shared/disposable\";\nimport { createWorkbenchStore, type WorkbenchStore } from \"../../shared/store/workbench-store\";\nimport type { CommandRegistry } from \"../commands/command-registry\";\nimport type { NavigationTarget } from \"../navigation/navigation-registry\";\n\nexport interface Keybinding {\n /** Extension that authored this binding, when registered by an extension host. */\n sourceExtensionId?: string;\n /** Action the chord executes through the shared navigation executor. */\n action: NavigationTarget;\n keybinding: KeybindingSequence;\n when?: string;\n}\n\nexport type KeybindingSequence = string | string[];\n\nexport interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {}\n\ninterface KeybindingRegistryDeps {\n commands: CommandRegistry;\n context: ContextKeyService;\n}\n\nexport interface KeybindingRegistryStoreState {\n keybindings: RegisteredKeybinding[];\n}\n\nexport interface KeybindingRegistry {\n store: WorkbenchStore<KeybindingRegistryStoreState>;\n registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable;\n listKeybindings(): RegisteredKeybinding[];\n listActiveKeybindings(): RegisteredKeybinding[];\n /** Chords bound to plain command actions, for rendering shortcut hints beside commands. */\n listCommandKeybindings(): { commandId: string; keybinding: KeybindingSequence }[];\n}\n\nexport const getKeybindingSteps = (keybinding: KeybindingSequence) => {\n if (Array.isArray(keybinding)) return keybinding;\n\n return keybinding.trim().split(/\\s+/).filter(Boolean);\n};\n\nconst normalizeKeybindingSequence = (keybinding: KeybindingSequence): KeybindingSequence => {\n const steps = getKeybindingSteps(keybinding);\n return steps.length === 1 ? (steps[0] ?? \"\") : steps;\n};\n\nexport const createKeybindingRegistry = (deps: KeybindingRegistryDeps): KeybindingRegistry => {\n const store = createWorkbenchStore<KeybindingRegistryStoreState>({\n name: \"workbench.keybindings\",\n initialState: { keybindings: [] },\n });\n\n return {\n store,\n\n registerKeybinding(keybinding, metadata) {\n if (keybinding.action.kind === \"command\" && !deps.commands.getCommand(keybinding.action.commandId)) {\n throw new Error(`Keybinding command not registered: ${keybinding.action.commandId}`);\n }\n\n const record: RegisteredKeybinding = {\n ...normalizeContributionMetadata(metadata),\n ...keybinding,\n keybinding: normalizeKeybindingSequence(keybinding.keybinding),\n };\n\n const snapshot = store.getState();\n store.setState({ keybindings: [...snapshot.keybindings, record] }, false, \"registerKeybinding\");\n\n return createDisposable(() => {\n const current = store.getState();\n const next = current.keybindings.filter((candidate) => candidate !== record);\n if (next.length === current.keybindings.length) return;\n store.setState({ keybindings: next }, false, \"unregisterKeybinding\");\n });\n },\n\n listKeybindings() {\n return [...store.getState().keybindings].sort(byContributionPriority);\n },\n\n listActiveKeybindings() {\n return store\n .getState()\n .keybindings.filter((keybinding) => deps.context.matches(keybinding.when))\n .sort(byContributionPriority);\n },\n\n listCommandKeybindings() {\n return [...store.getState().keybindings]\n .sort(byContributionPriority)\n .flatMap((record) =>\n record.action.kind === \"command\"\n ? [{ commandId: record.action.commandId, keybinding: record.keybinding }]\n : [],\n );\n },\n };\n};\n","import { type WorkbenchRegion, workbenchRegions } from \"./layout-types\";\n\n// The surface map describes the *behavioural* role of each workbench region: which\n// regions host a resource (anchors), which render an anchor's resource (projections),\n// and which are frame chrome or the transient overlay layer. The project scope root is\n// not a surface; it is handled by the layout persistence scope.\n\n// Logical anchor identity, independent of the region id that currently hosts it.\nexport type AnchorId = \"primary\" | \"secondary\" | \"attached\";\n\n// Does an anchor's active selection survive a primary change?\n// - primary: the subject itself.\n// - derived: re-scopes/clears on primary change (terminals follow the workspace).\n// - detached: persists across primary navigation, but disconnects when the new\n// primary's scoped candidates no longer list it (scope wins).\nexport type AnchorPersistence = \"primary\" | \"derived\" | \"detached\";\n\n// What the anchor's quick-pick offers: everything, or filtered by primary.\nexport type AnchorCandidates = \"global\" | \"scoped\";\n\n// Which anchor(s) a projection renders.\nexport type AnchorReadId = AnchorId;\n\nexport interface AnchorSurface {\n role: \"anchor\";\n anchor: AnchorId;\n persistence: AnchorPersistence;\n candidates: AnchorCandidates;\n}\n\nexport interface ProjectionSurface {\n role: \"projection\";\n reads: AnchorReadId[];\n // The sidenav navigator both reads primary (highlight) and selects it (the picker).\n navigator?: boolean;\n}\n\nexport interface ChromeSurface {\n role: \"chrome\";\n}\n\nexport interface TransientSurface {\n role: \"transient\";\n}\n\nexport type SurfaceDescriptor = AnchorSurface | ProjectionSurface | ChromeSurface | TransientSurface;\n\nconst anchor = (anchor: AnchorId, persistence: AnchorPersistence, candidates: AnchorCandidates): AnchorSurface => ({\n role: \"anchor\",\n anchor,\n persistence,\n candidates,\n});\n\nconst projection = (reads: AnchorReadId[], navigator = false): ProjectionSurface =>\n navigator ? { role: \"projection\", reads, navigator } : { role: \"projection\", reads };\n\nconst chrome: ChromeSurface = { role: \"chrome\" };\nconst transient: TransientSurface = { role: \"transient\" };\n\nexport const surfaceMap: Record<WorkbenchRegion, SurfaceDescriptor> = {\n // The top bar hosts breadcrumbs (primary trail) and session status (attached), so it\n // reads both anchors — it is a projection, not inert chrome.\n nav: projection([\"primary\", \"attached\"]),\n activity: chrome,\n sidenav: projection([\"primary\"], true),\n \"main-header\": projection([\"primary\"]),\n \"main-left-menu\": projection([\"primary\"]),\n main: anchor(\"primary\", \"primary\", \"global\"),\n \"main-right-menu\": projection([\"primary\"]),\n \"secondary-header\": projection([\"primary\"]),\n \"secondary-left-menu\": projection([\"secondary\"]),\n secondary: anchor(\"secondary\", \"derived\", \"scoped\"),\n \"secondary-right-menu\": projection([\"secondary\"]),\n status: projection([\"primary\", \"attached\"]),\n overlay: transient,\n \"side-header\": projection([\"attached\"]),\n \"side-left-menu\": projection([\"attached\"]),\n side: anchor(\"attached\", \"detached\", \"scoped\"),\n \"side-right-menu\": projection([\"attached\"]),\n};\n\nexport const getSurface = (region: WorkbenchRegion) => surfaceMap[region];\n\nexport const listAnchorRegions = () =>\n workbenchRegions.filter((region): region is WorkbenchRegion => surfaceMap[region].role === \"anchor\");\n\nexport const listProjectionRegions = () =>\n workbenchRegions.filter((region): region is WorkbenchRegion => surfaceMap[region].role === \"projection\");\n\nexport const listProjectionsReading = (anchorId: AnchorReadId) =>\n workbenchRegions.filter((region) => {\n const surface = surfaceMap[region];\n return surface.role === \"projection\" && surface.reads.includes(anchorId);\n });\n\n// Reverse lookup: which region currently hosts a given logical anchor.\nexport const resolveAnchorRegion = (anchorId: AnchorId) => {\n const region = workbenchRegions.find((candidate) => {\n const surface = surfaceMap[candidate];\n return surface.role === \"anchor\" && surface.anchor === anchorId;\n });\n if (!region) throw new Error(`No region hosts anchor: ${anchorId}`);\n return region;\n};\n","import type { ResourceRef } from \"../resources/resource-registry\";\nimport { getActiveLocationPlacement, getActivePlacement } from \"./layout-operations\";\nimport type { WorkbenchLayout, WorkbenchRegion } from \"./layout-types\";\nimport { type AnchorId, getSurface, listAnchorRegions, resolveAnchorRegion } from \"./surface-map\";\n\n// The resource an anchor currently hosts, read from its region's active placement. This\n// is the primary-scoped signal the coordinator keys off — `getAnchorResource(layout,\n// \"primary\")` is the main resource, free of the global active-resource pollution that\n// any side-region activation otherwise introduces.\nexport const getAnchorResource = (layout: WorkbenchLayout, anchorId: AnchorId) => {\n const active = getActivePlacement(layout.regions[resolveAnchorRegion(anchorId)]);\n if (anchorId !== \"primary\") return active?.resource;\n const location = getActiveLocationPlacement(layout);\n if (location) return location.resource;\n // Low-level host panels can establish a primary without an explicit role.\n // An auxiliary panel moved into Main cannot become that primary.\n return active?.role === \"sub-panel\" ? undefined : active?.resource;\n};\n\n// What the coordinator should do with a secondary anchor when the primary resource\n// changes. Projections re-render off their anchor (a render concern), so the reconciler\n// only decides the lifecycle of the derived/detached anchor placements.\nexport type AnchorReconcileAction = { region: WorkbenchRegion; widgetId: string; action: \"keep\" | \"clear\" };\n\nexport interface ReconcileAnchorsInput {\n layout: WorkbenchLayout;\n primary: ResourceRef | undefined;\n // Whether a detached anchor's current resource still belongs to the new primary's\n // scoped candidates. Backed by scoped resource providers once wired.\n isInScope: (resource: ResourceRef, primary: ResourceRef | undefined) => boolean;\n}\n\n// On a primary change: derived anchors re-scope (clear, then repopulate from the new\n// scope); detached anchors stay while their resource is still in scope, else disconnect\n// (scope wins). The primary anchor is the subject and is never reconciled.\nexport const reconcileAnchors = ({ layout, primary, isInScope }: ReconcileAnchorsInput): AnchorReconcileAction[] => {\n const actions: AnchorReconcileAction[] = [];\n\n for (const region of listAnchorRegions()) {\n const surface = getSurface(region);\n if (surface.role !== \"anchor\" || surface.persistence === \"primary\") continue;\n\n // Only resource-bearing anchor placements are scoped content. A plain (resourceless)\n // widget parked in a side anchor is not a scoped resource and is left untouched.\n for (const placement of layout.regions[region].widgets) {\n if (!placement.resource) continue;\n // A moved Location and its owned Sub Panels retain their owner lifecycle.\n // Sharing a region with derived content cannot change that ownership.\n const retained =\n placement.role === \"location\" ||\n (placement.role === \"sub-panel\" &&\n (Boolean(placement.ownerResourceKey) ||\n placement.placementIdentity?.kind === \"shell\" ||\n placement.placementIdentity?.kind === \"mode\"));\n const keep = retained || (surface.persistence !== \"derived\" && isInScope(placement.resource, primary));\n actions.push({ region, widgetId: placement.widgetId, action: keep ? \"keep\" : \"clear\" });\n }\n }\n\n return actions;\n};\n","import type { MenuPath } from \"./menu-registry\";\n\nexport const headerLeadingMenuPath = (region: string): MenuPath => [\"workbench\", \"header\", region, \"leading\"];\n\nexport const headerTrailingMenuPath = (region: string): MenuPath => [\"workbench\", \"header\", region, \"trailing\"];\n\nexport const workbenchRegionTabLeadingMenuPath = (region: string): MenuPath => [\n \"workbench\",\n \"regionTabs\",\n region,\n \"leading\",\n];\n\nexport const workbenchRegionTabAddMenuPath = (region: string): MenuPath => [\"workbench\", \"regionTabs\", region, \"add\"];\n\nexport const workbenchCommandPaletteMenuPath = [\"workbench\", \"commandPalette\"] as const satisfies MenuPath;\n\nexport const workbenchTopHeaderLeadingMenuPath = headerLeadingMenuPath(\"nav\");\n\nexport const workbenchTopHeaderTrailingMenuPath = headerTrailingMenuPath(\"nav\");\n\n// Actions on the current location, such as copying its link. Resource row menus never show them,\n// because a row's location is not the current page.\nexport const workbenchBreadcrumbLocationMenuPath = [\"workbench\", \"breadcrumb\", \"location\"] as const satisfies MenuPath;\n\nexport const resourceContextMenuPath = (resourceKind: string): MenuPath => [\n \"workbench\",\n \"resource\",\n resourceKind,\n \"context\",\n];\n","import type { ResourceConstraint, ResourceRef } from \"@pstdio/sdk/extensions\";\n\nexport const resourceMatchesConstraint = (constraint: ResourceConstraint, resource: ResourceRef) =>\n constraint.kinds.some(\n (kind) =>\n kind.id === resource.type &&\n (!resource.extensionId || !kind.extensionId || resource.extensionId === kind.extensionId),\n );\n","import type { NavigationTarget } from \"./navigation-registry\";\n\n// Parameter order does not change the action, while array order changes compound navigation.\nconst stableValue = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(stableValue);\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, item]) => [key, stableValue(item)]),\n );\n }\n return value;\n};\n\nexport const getNavigationTargetKey = (action: NavigationTarget) => {\n if (\n action.kind === \"command\" &&\n action.args &&\n typeof action.args === \"object\" &&\n !Array.isArray(action.args) &&\n Object.keys(action.args).length === 0\n ) {\n const { args: _args, ...target } = action;\n return JSON.stringify(stableValue(target));\n }\n return JSON.stringify(stableValue(action));\n};\n","import type { TreeNode } from \"../renderers/tree-renderer-types\";\nimport type { ResourceRef } from \"../resources/resource-registry\";\nimport type { NavigationTreeContribution } from \"./navigation-tree-registry\";\n\nconst sources = new WeakMap<\n TreeNode,\n {\n contribution: NavigationTreeContribution;\n registryToken: object;\n node: TreeNode;\n resource?: ResourceRef;\n }\n>();\n\nexport const setNavigationTreeNodeSource = (\n node: TreeNode,\n source: NonNullable<ReturnType<typeof getNavigationTreeNodeSource>>,\n) => {\n sources.set(node, source);\n};\nexport const getNavigationTreeNodeSource = (node: TreeNode, registryToken?: object) => {\n const source = sources.get(node);\n return registryToken && source?.registryToken !== registryToken ? undefined : source;\n};\n","import { type ResourceRef, resourceKey } from \"@pstdio/sdk/extensions\";\nimport { resourceMatchesConstraint } from \"../../shared/contributions/reference-id\";\nimport type { WorkbenchPageContribution, WorkbenchPageResourceCodec } from \"./page-registry-types\";\nimport { pageStateOwnerKey } from \"./page-state-key\";\n\nexport const pageResourceContextKey = (\n page: WorkbenchPageContribution | undefined,\n resource: ResourceRef | undefined,\n) =>\n JSON.stringify([\n resourceKey(resource),\n page?.document ? (resource?.metadata?.[page.document.metadataKey] ?? null) : null,\n ]);\n\nexport const pageResourceInstanceKey = (\n page: WorkbenchPageContribution,\n resource: ResourceRef,\n resources: WorkbenchPageResourceCodec,\n) => {\n const normalized = resources.normalize(resource);\n if (page.document && page.resource && resourceMatchesConstraint(page.resource, normalized))\n return pageStateOwnerKey(page, normalized, resources);\n return resources.toUri(normalized);\n};\n","export const standardResourceIcons = {\n project: \"folder-root\",\n workspace: \"computer\",\n worktree: \"git-pull-request-draft\",\n settings: \"settings\",\n kanbanRenderer: \"table-properties\",\n} as const;\n\nexport type StandardResourceIcon = (typeof standardResourceIcons)[keyof typeof standardResourceIcons];\n","import type { WorkbenchPanelInstance } from \"../layout/layout-types\";\nimport { placementIdentityKey } from \"../layout/placement-reconciliation\";\n\nexport const rendererReadKey = (placement: WorkbenchPanelInstance, lane = \"view\") =>\n JSON.stringify([\n lane,\n placement.placementIdentity ? placementIdentityKey(placement.placementIdentity) : placement.instanceId,\n ]);\n","// Every issued child must settle before its parent's counted read slot is free.\nexport const settleReadBatch = async <T>(tasks: ((signal: AbortSignal) => Promise<T> | T)[], signal?: AbortSignal) => {\n const controller = new AbortController();\n const abort = () => controller.abort(signal?.reason);\n if (signal?.aborted) abort();\n else signal?.addEventListener(\"abort\", abort, { once: true });\n let firstError: unknown;\n try {\n const results = await Promise.allSettled(\n tasks.map(async (load) => {\n try {\n controller.signal.throwIfAborted();\n return await load(controller.signal);\n } catch (error) {\n firstError ??= error;\n controller.abort(error);\n throw error;\n }\n }),\n );\n if (firstError !== undefined) throw firstError;\n signal?.throwIfAborted();\n return results.map((result) => {\n if (result.status === \"rejected\") throw result.reason;\n return result.value;\n });\n } finally {\n signal?.removeEventListener(\"abort\", abort);\n }\n};\n","import type { NotificationRegistry } from \"../registries/notifications/notification-registry\";\n\nexport const reportUserActionError = (\n workbench: { notifications: Pick<NotificationRegistry, \"show\"> },\n label: string,\n error: unknown,\n) => {\n workbench.notifications.show({\n level: \"error\",\n title: `${label} failed`,\n message: error instanceof Error ? error.message : String(error),\n });\n};\n\n// Use at UI entry points without an inline error display. Dialogs and reads\n// retain the rejected promise so their own error display remains the owner.\nexport const runUserAction = async (\n workbench: { notifications: Pick<NotificationRegistry, \"show\"> },\n label: string,\n run: () => unknown,\n) => {\n try {\n await run();\n } catch (error) {\n reportUserActionError(workbench, label, error);\n }\n};\n","import type { PlacementIdentity } from \"@pstdio/sdk/extensions\";\nimport type { WorkbenchPageRuntimeState } from \"./page-registry-types\";\nimport { ownsStaticPageInstance } from \"./page-state-key\";\n\nexport type PagePlacementEdit = { kind: \"close\" } | { kind: \"retention\"; open: \"pin\" | \"preview\" };\n\n// A shared tab can outlive its source location. Edit its owner instances without\n// assuming that the current route still belongs to that owner.\nexport const editPagePlacementStates = (\n states: Readonly<Record<string, WorkbenchPageRuntimeState>>,\n identity: Extract<PlacementIdentity, { kind: \"page\" }>,\n edit: PagePlacementEdit,\n) =>\n Object.fromEntries(\n Object.entries(states).map(([key, current]) => {\n if (key !== identity.pageId && !key.startsWith(`${identity.pageId}|`)) return [key, current];\n const instances = current.resourceInstances[identity.slotId] ?? [];\n const remaining = instances.flatMap((instance) => {\n if (instance.instanceKey !== identity.instanceKey) return [instance];\n return edit.kind === \"close\" ? [] : [{ ...instance, open: edit.open }];\n });\n return [\n key,\n {\n ...current,\n openStaticSlotIds:\n edit.kind === \"close\" && ownsStaticPageInstance(key, identity.pageId, identity.instanceKey)\n ? current.openStaticSlotIds.filter((id) => id !== identity.slotId)\n : current.openStaticSlotIds,\n resourceInstances: { ...current.resourceInstances, [identity.slotId]: remaining },\n activePrimaryInstanceKey:\n edit.kind === \"close\" && current.activePrimaryInstanceKey === identity.instanceKey\n ? remaining.at(-1)?.instanceKey\n : current.activePrimaryInstanceKey,\n },\n ];\n }),\n );\n","import { dockedWorkbenchRegions, type PlacementIdentity } from \"@pstdio/sdk/extensions\";\nimport {\n activateInLayout,\n findPlacementByWidgetId,\n getActiveLocationPlacement,\n removeLocationSubPanelSelection,\n} from \"./layout-operations\";\nimport {\n type WorkbenchLayout,\n type WorkbenchRegion,\n type WorkbenchWidgetPlacement,\n workbenchRegions,\n} from \"./layout-types\";\nimport {\n composeOwnedPlacements,\n type PlacementDestination,\n placementIdentityKey,\n type ResolvedOwnedPlacement,\n} from \"./placement-reconciliation\";\nimport { planTrayTabs } from \"./tray-tabs\";\n\nexport type WorkbenchOwnedWidgetPlacement = ResolvedOwnedPlacement<WorkbenchWidgetPlacement>;\n\nexport interface ReconcileOwnedWidgetLayoutInput {\n layout: WorkbenchLayout;\n modeLayout?: WorkbenchLayout;\n placements: readonly WorkbenchOwnedWidgetPlacement[];\n activate?: readonly PlacementIdentity[];\n destinations?: readonly PlacementDestination[];\n}\n\nexport interface ApplyOwnedWidgetLayoutReconciliationInput extends ReconcileOwnedWidgetLayoutInput {\n remove: readonly PlacementIdentity[];\n}\n\ninterface RenderedOwnedPlacement {\n identity: PlacementIdentity;\n region: WorkbenchOwnedWidgetPlacement[\"region\"];\n placement: WorkbenchWidgetPlacement;\n transferredFromKey?: string;\n}\n\nconst bindsToLocation = (placement: WorkbenchOwnedWidgetPlacement) =>\n placement.value.role === \"sub-panel\" && placement.identity.kind === \"page\";\n\nconst resolveOwnerResourceKey = (\n desired: WorkbenchOwnedWidgetPlacement,\n exact?: WorkbenchWidgetPlacement,\n transfer?: WorkbenchWidgetPlacement,\n) =>\n bindsToLocation(desired)\n ? (desired.value.ownerResourceKey ?? exact?.ownerResourceKey ?? transfer?.ownerResourceKey)\n : desired.value.ownerResourceKey;\n\nexport const indexCurrentOwnedPlacements = (layout: WorkbenchLayout) => {\n const indexed = new Map<string, { region: WorkbenchRegion; placement: WorkbenchWidgetPlacement }>();\n for (const region of Object.values(layout.regions)) {\n for (const placement of region.widgets) {\n if (!placement.placementIdentity) continue;\n const key = placementIdentityKey(placement.placementIdentity);\n if (indexed.has(key)) throw new Error(`Duplicate rendered placement identity: ${key}`);\n indexed.set(key, { region: region.id, placement });\n }\n }\n return indexed;\n};\n\nconst findModePlacementTransfer = (input: {\n current: ReturnType<typeof indexCurrentOwnedPlacements>;\n desired: WorkbenchOwnedWidgetPlacement;\n desiredKeys: ReadonlySet<string>;\n transferredCurrentKeys: ReadonlySet<string>;\n}) => {\n if (input.desired.identity.kind !== \"mode\") return undefined;\n const desiredIdentity = input.desired.identity;\n return [...input.current.entries()].find(\n ([currentKey, candidate]) =>\n !input.desiredKeys.has(currentKey) &&\n !input.transferredCurrentKeys.has(currentKey) &&\n candidate.placement.placementIdentity?.kind === \"mode\" &&\n (candidate.placement.placementIdentity.modeId !== desiredIdentity.modeId ||\n candidate.placement.placementIdentity.placementId !== desiredIdentity.placementId) &&\n candidate.region === input.desired.region &&\n candidate.placement.contributionId === input.desired.value.contributionId &&\n candidate.placement.viewId === input.desired.value.viewId,\n );\n};\n\nconst indexCurrentWidgetOwners = (layout: WorkbenchLayout) => {\n const owners = new Map<string, string | null>();\n for (const region of Object.values(layout.regions)) {\n for (const placement of region.widgets) {\n if (owners.has(placement.widgetId)) throw new Error(`Duplicate rendered widget ID: ${placement.widgetId}`);\n owners.set(\n placement.widgetId,\n placement.placementIdentity ? placementIdentityKey(placement.placementIdentity) : null,\n );\n }\n }\n return owners;\n};\n\nconst restoreModeWidgets = (\n widgets: readonly WorkbenchWidgetPlacement[],\n saved: readonly WorkbenchWidgetPlacement[],\n desired: ReadonlyMap<string, RenderedOwnedPlacement>,\n order?: readonly string[],\n) => {\n const currentIds = new Set(widgets.map((widget) => widget.widgetId));\n const restored = [\n ...widgets,\n ...saved.filter(\n (widget) =>\n !currentIds.has(widget.widgetId) &&\n widget.placementIdentity &&\n desired.has(placementIdentityKey(widget.placementIdentity)),\n ),\n ];\n if (!order) return restored;\n const positions = new Map(order.map((id, index) => [id, index]));\n const ordered = restored.sort(\n (a, b) => (positions.get(a.widgetId) ?? order.length) - (positions.get(b.widgetId) ?? order.length),\n );\n // Page snapshots own the mixed slots. Mode snapshots own the order of\n // shared tabs occupying those slots, including edits made on another page.\n const sharedPositions = new Map(saved.map((widget, index) => [widget.widgetId, index]));\n const shared = ordered\n .filter((widget) => widget.placementIdentity?.kind !== \"page\")\n .sort(\n (a, b) => (sharedPositions.get(a.widgetId) ?? saved.length) - (sharedPositions.get(b.widgetId) ?? saved.length),\n );\n let sharedIndex = 0;\n return ordered.map((widget) => (widget.placementIdentity?.kind !== \"page\" ? shared[sharedIndex++]! : widget));\n};\n\nexport const renderDesiredPlacements = (\n input: ReconcileOwnedWidgetLayoutInput,\n current: ReturnType<typeof indexCurrentOwnedPlacements>,\n) => {\n const rendered: RenderedOwnedPlacement[] = [];\n const identities = new Set<string>();\n const currentWidgetOwners = indexCurrentWidgetOwners(input.layout);\n const saved = input.modeLayout ? indexCurrentOwnedPlacements(input.modeLayout) : new Map();\n const desiredWidgetIds = new Set<string>();\n const destinations = new Map(\n input.destinations?.map((destination) => [placementIdentityKey(destination.identity), destination.region]),\n );\n\n const ordered = composeOwnedPlacements({\n shell: input.placements.filter((placement) => placement.identity.kind === \"shell\"),\n mode: input.placements.filter((placement) => placement.identity.kind === \"mode\"),\n page: input.placements.filter((placement) => placement.identity.kind === \"page\"),\n }).placements;\n const desiredKeys = new Set(ordered.map((placement) => placementIdentityKey(placement.identity)));\n const transferredCurrentKeys = new Set<string>();\n for (const desired of ordered) {\n const key = placementIdentityKey(desired.identity);\n if (identities.has(key)) throw new Error(`Duplicate desired placement identity: ${key}`);\n identities.add(key);\n const exact = current.get(key) ?? saved.get(key);\n const transfer = exact\n ? undefined\n : findModePlacementTransfer({ current, desired, desiredKeys, transferredCurrentKeys });\n const transferredFromKey = transfer?.[0];\n if (transferredFromKey) transferredCurrentKeys.add(transferredFromKey);\n const widgetId = exact?.placement.widgetId ?? transfer?.[1].placement.widgetId ?? desired.value.widgetId;\n const currentOwner = currentWidgetOwners.get(widgetId);\n if (currentOwner !== undefined && currentOwner !== key && currentOwner !== transferredFromKey) {\n throw new Error(`Rendered widget ID belongs to another placement: ${widgetId}`);\n }\n if (desiredWidgetIds.has(widgetId)) throw new Error(`Duplicate desired widget ID: ${widgetId}`);\n desiredWidgetIds.add(widgetId);\n const ownerResourceKey = resolveOwnerResourceKey(desired, exact?.placement, transfer?.[1].placement);\n rendered.push({\n identity: desired.identity,\n region: destinations.get(key) ?? exact?.region ?? desired.region,\n placement: {\n ...desired.value,\n widgetId,\n placementIdentity: desired.identity,\n ...(ownerResourceKey ? { ownerResourceKey } : {}),\n },\n ...(transferredFromKey ? { transferredFromKey } : {}),\n });\n }\n return rendered;\n};\n\nconst reconcileRegions = (\n layout: WorkbenchLayout,\n desired: readonly RenderedOwnedPlacement[],\n removedKeys: ReadonlySet<string>,\n modeLayout?: WorkbenchLayout,\n) => {\n // Content opens an empty docked region, except the Side Panel: it opens only\n // when the user chooses it or a navigation reveals it.\n const docked = new Set<WorkbenchRegion>(dockedWorkbenchRegions.filter((region) => region !== \"side\"));\n const regions = { ...layout.regions };\n const desiredByKey = new Map(desired.map((placement) => [placementIdentityKey(placement.identity), placement]));\n const transferredCurrentKeys = new Set(desired.flatMap((placement) => placement.transferredFromKey ?? []));\n for (const regionId of workbenchRegions) {\n const region = layout.regions[regionId];\n const pageOwnsPrimaryLocation = desired.some(\n (entry) => entry.region === regionId && entry.identity.kind === \"page\" && entry.placement.role === \"location\",\n );\n // A routed page owns the primary Location. An unowned Location cannot coexist\n // with it because that would turn page replacement into tab accumulation.\n // Other unowned host panels remain additive.\n const placedKeys = new Set<string>();\n // Keep the visible order while updating existing placements in place. Any\n // desired placement left afterward is a new tab and belongs at the end.\n const restored = restoreModeWidgets(\n region.widgets,\n modeLayout?.regions[regionId].widgets ?? [],\n desiredByKey,\n region.savedWidgetOrder,\n );\n const widgets = restored.flatMap((placement) => {\n if (!placement.placementIdentity) {\n return regionId === \"main\" && pageOwnsPrimaryLocation && placement.role === \"location\" ? [] : [placement];\n }\n const key = placementIdentityKey(placement.placementIdentity);\n const replacement = desiredByKey.get(key);\n if (replacement) {\n if (replacement.region !== regionId) return [];\n placedKeys.add(key);\n return [replacement.placement];\n }\n return removedKeys.has(key) || transferredCurrentKeys.has(key) ? [] : [placement];\n });\n for (const entry of desired) {\n const key = placementIdentityKey(entry.identity);\n if (entry.region === regionId && !placedKeys.has(key)) widgets.push(entry.placement);\n }\n const tray = planTrayTabs(\n widgets,\n desired.find((entry) => entry.region === regionId && entry.placement.tabRetention === \"preview\")?.placement\n .widgetId ?? region.activeWidgetId,\n );\n const selected = region.widgets.find((widget) => widget.widgetId === region.activeWidgetId);\n // A selected preview keeps its slot when replaced; other selections stay put.\n // Page caches omit mode tabs, so recover their shared selection from the mode's cache.\n const activeWidgetId =\n [\n region.activeWidgetId,\n selected?.tabRetention === \"preview\"\n ? tray.widgets.find((widget) => widget.tabRetention === \"preview\")?.widgetId\n : undefined,\n modeLayout?.regions[regionId].activeWidgetId,\n ].find((id) => tray.widgets.some((placement) => placement.widgetId === id)) ?? tray.widgets[0]?.widgetId;\n const opensPreviouslyEmptyRegion =\n region.widgets.length === 0 && widgets.some((placement) => !placement.hiddenByDefault);\n const closesEmptyPanel =\n (regionId === \"side\" || regionId === \"secondary\") && region.widgets.length > 0 && widgets.length === 0;\n regions[regionId] = {\n ...region,\n widgets: tray.widgets,\n savedWidgetOrder: undefined,\n activeWidgetId,\n ...(docked.has(regionId) ? { visible: region.visible || opensPreviouslyEmptyRegion } : {}),\n ...(closesEmptyPanel ? { visible: false } : {}),\n };\n }\n return { ...layout, regions };\n};\n\nconst normalizeRemovedState = (input: {\n current: ReturnType<typeof indexCurrentOwnedPlacements>;\n desired: readonly RenderedOwnedPlacement[];\n removedKeys: ReadonlySet<string>;\n layout: WorkbenchLayout;\n}) => {\n const transferredCurrentKeys = new Set(input.desired.flatMap((placement) => placement.transferredFromKey ?? []));\n let layout = input.layout;\n for (const [key, current] of input.current) {\n if (input.removedKeys.has(key) && !transferredCurrentKeys.has(key)) {\n layout = removeLocationSubPanelSelection(layout, current.placement.widgetId);\n }\n }\n\n const activeLocation = layout.activeLocationWidgetId\n ? findPlacementByWidgetId(layout, layout.activeLocationWidgetId)?.placement\n : undefined;\n const fallbackLocation = getActiveLocationPlacement(layout);\n const activeLocationWidgetId = activeLocation?.widgetId ?? fallbackLocation?.widgetId;\n const active = layout.activeWidgetId ? findPlacementByWidgetId(layout, layout.activeWidgetId)?.placement : undefined;\n const fallbackActive = activeLocationWidgetId\n ? findPlacementByWidgetId(layout, activeLocationWidgetId)?.placement\n : Object.values(layout.regions).flatMap((region) => region.widgets)[0];\n\n return {\n ...layout,\n activeWidgetId: active?.widgetId ?? fallbackActive?.widgetId,\n activeLocationWidgetId,\n activeResourceKey: active?.resourceKey ?? fallbackActive?.resourceKey,\n };\n};\n\nconst bindOwnedSubPanelsToLocation = (layout: WorkbenchLayout, desired: readonly RenderedOwnedPlacement[]) => {\n const ownerResourceKey = getActiveLocationPlacement(layout)?.resourceKey;\n if (!ownerResourceKey) return layout;\n const desiredByKey = new Map(desired.map((entry) => [placementIdentityKey(entry.identity), entry]));\n const regions = Object.fromEntries(\n Object.entries(layout.regions).map(([regionId, region]) => [\n regionId,\n {\n ...region,\n widgets: region.widgets.map((placement) => {\n if (placement.role !== \"sub-panel\" || !placement.placementIdentity) return placement;\n const desiredPlacement = desiredByKey.get(placementIdentityKey(placement.placementIdentity));\n if (!desiredPlacement) return placement;\n // Shared resources own their content; visiting a page does not make it their owner.\n if (desiredPlacement.identity.kind !== \"page\") return placement;\n return { ...placement, ownerResourceKey };\n }),\n },\n ]),\n ) as WorkbenchLayout[\"regions\"];\n return { ...layout, regions };\n};\n\nconst updateOwnedWidgetLayout = (input: ReconcileOwnedWidgetLayoutInput, removedKeys: ReadonlySet<string>) => {\n if (input.placements.length === 0 && removedKeys.size === 0 && (input.activate?.length ?? 0) === 0) {\n return input.layout;\n }\n const current = indexCurrentOwnedPlacements(input.layout);\n const desired = renderDesiredPlacements(input, current);\n let layout: WorkbenchLayout = normalizeRemovedState({\n current,\n desired,\n removedKeys,\n layout: reconcileRegions(input.layout, desired, removedKeys, input.modeLayout),\n });\n const desiredByIdentity = new Map(desired.map((entry) => [placementIdentityKey(entry.identity), entry]));\n\n for (const identity of input.activate ?? []) {\n const entry = desiredByIdentity.get(placementIdentityKey(identity));\n if (!entry) throw new Error(`Cannot activate missing rendered placement: ${placementIdentityKey(identity)}`);\n layout = activateInLayout(layout, entry.region, entry.placement);\n }\n return bindOwnedSubPanelsToLocation(layout, desired);\n};\n\nexport const reconcileOwnedWidgetLayout = (input: ReconcileOwnedWidgetLayoutInput) => {\n const desiredKeys = new Set(input.placements.map((placement) => placementIdentityKey(placement.identity)));\n const current = indexCurrentOwnedPlacements(input.layout);\n const removedKeys = new Set([...current.keys()].filter((key) => !desiredKeys.has(key)));\n return updateOwnedWidgetLayout(input, removedKeys);\n};\n\nexport const applyOwnedWidgetLayoutReconciliation = (input: ApplyOwnedWidgetLayoutReconciliationInput) =>\n updateOwnedWidgetLayout(input, new Set(input.remove.map(placementIdentityKey)));\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type {\n RegisteredWidgetContribution,\n WorkbenchLayout,\n WorkbenchWidgetPlacement,\n} from \"../../registries/layout/layout-types\";\nimport { placementIdentityKey, reconcileOwnedPlacements } from \"../../registries/layout/placement-reconciliation\";\nimport { pagePlacementDeclarations } from \"../../registries/pages/page-main\";\nimport type { WorkbenchPageRegistryStoreState } from \"../../registries/pages/page-registry\";\nimport { pageResourceContextKey } from \"../../registries/pages/page-resource-context\";\nimport { ownsStaticPageInstance } from \"../../registries/pages/page-state-key\";\nimport { resourceMatchesConstraint } from \"../../shared/contributions/reference-id\";\n\ntype State = WorkbenchPageRegistryStoreState<WorkbenchWidgetPlacement>;\n\nconst pagePlacementClosed = (widget: WorkbenchWidgetPlacement, next: State, previous: State) => {\n const identity = widget.placementIdentity;\n if (identity?.kind !== \"page\") return false;\n const contains = (key: string, state: State[\"pageStates\"][string] | undefined) =>\n (ownsStaticPageInstance(key, identity.pageId, identity.instanceKey) &&\n state?.openStaticSlotIds.includes(identity.slotId)) ||\n state?.resourceInstances[identity.slotId]?.some((instance) => instance.instanceKey === identity.instanceKey);\n return Object.entries(previous.pageStates).some(\n ([key, state]) =>\n (key === identity.pageId || key.startsWith(`${identity.pageId}|`)) &&\n contains(key, state) &&\n !contains(key, next.pageStates[key]),\n );\n};\n\nexport const pageLayoutContext = (state: State) => ({\n projectId: state.projectId,\n modeId: state.activeModeId,\n pageId: state.activePageId,\n resource: state.location?.resource,\n});\n\nexport const pageContextChanged = (next: State, previous: State) =>\n next.projectId !== previous.projectId ||\n next.activeModeId !== previous.activeModeId ||\n next.activePageId !== previous.activePageId ||\n pageResourceContextKey(next.pages[next.activePageId ?? \"\"], next.location?.resource) !==\n pageResourceContextKey(previous.pages[previous.activePageId ?? \"\"], previous.location?.resource);\n\nconst sharedKeys = (layout: WorkbenchLayout | undefined, main: boolean) =>\n new Set(\n Object.values(layout?.regions ?? {}).flatMap((region) =>\n region.widgets.flatMap((widget) =>\n (region.id === \"main\") === main && widget.placementIdentity\n ? [placementIdentityKey(widget.placementIdentity)]\n : [],\n ),\n ),\n );\n\ninterface PageTabsInput {\n state: State;\n previous: State;\n layout: WorkbenchLayout;\n pageLayout?: WorkbenchLayout;\n modeLayout?: WorkbenchLayout;\n getWidget(contributionId: string): RegisteredWidgetContribution | undefined;\n}\n\nconst mainTabNeedsCache = (widget: WorkbenchWidgetPlacement, state: State, changingPage: boolean) => {\n const identity = widget.placementIdentity;\n if (!identity) return false;\n if (identity.kind !== \"page\") return changingPage;\n if (identity.pageId !== state.activePageId) return true;\n const page = state.pages[identity.pageId];\n const slot = page && pagePlacementDeclarations(page).find((slot) => slot.id === identity.slotId);\n const constraint = slot?.item.kind === \"binding\" ? slot.item.binding : page?.resource;\n // A changed declaration must not restore a resource that its slot no longer accepts.\n if (constraint && (!widget.resource || !resourceMatchesConstraint(constraint, widget.resource))) return false;\n return Boolean(\n page?.resource &&\n pageResourceContextKey(page, widget.resource) !== pageResourceContextKey(page, state.location?.resource),\n );\n};\n\nconst restoreMainTabs = (input: PageTabsInput, current: State[\"placements\"], shared: ReadonlySet<string>) => {\n const { state, previous, layout, pageLayout } = input;\n const changingPage = pageContextChanged(state, previous);\n const activated = new Set(state.reconciliation.activate.map((entry) => placementIdentityKey(entry.identity)));\n let placements = [...current];\n const main = changingPage ? pageLayout?.regions.main.widgets : layout.regions.main.widgets;\n for (const [order, widget] of (main ?? []).entries()) {\n const identity = widget.placementIdentity;\n if (!identity || !input.getWidget(widget.contributionId) || pagePlacementClosed(widget, state, previous)) continue;\n if (!mainTabNeedsCache(widget, state, changingPage)) continue;\n const key = placementIdentityKey(identity);\n if (shared.has(key)) continue;\n const existing = placements.find((entry) => placementIdentityKey(entry.identity) === key);\n placements = placements.filter((entry) => placementIdentityKey(entry.identity) !== key);\n placements.push({\n identity,\n region: \"main\",\n order,\n value: activated.has(key) && existing ? existing.value : widget,\n });\n }\n return placements;\n};\n\nconst refreshSharedPageTab = (input: PageTabsInput, widget: WorkbenchWidgetPlacement) => {\n const identity = widget.placementIdentity;\n if (identity?.kind !== \"page\" || !widget.resource) return widget;\n const instance = Object.entries(input.state.pageStates)\n .filter(([key]) => key === identity.pageId || key.startsWith(`${identity.pageId}|`))\n .flatMap(([, page]) => page.resourceInstances[identity.slotId] ?? [])\n .find(\n (entry) =>\n entry.instanceKey === identity.instanceKey && resourceKey(entry.resource) === resourceKey(widget.resource),\n );\n if (!instance) return widget;\n return {\n ...widget,\n resource: instance.resource,\n title: instance.resource.label ?? input.getWidget(widget.contributionId)?.title ?? widget.title,\n };\n};\n\nconst sharedPageTabValue = (input: PageTabsInput, widget: WorkbenchWidgetPlacement) => {\n const key = placementIdentityKey(widget.placementIdentity!);\n const explicit = input.state.reconciliation.activate.find((entry) => placementIdentityKey(entry.identity) === key);\n return explicit ? { ...explicit.value, widgetId: widget.widgetId } : refreshSharedPageTab(input, widget);\n};\n\nconst canRestoreSharedPageTab = (input: PageTabsInput, widget: WorkbenchWidgetPlacement, leavingPage: boolean) => {\n const identity = widget.placementIdentity;\n return (\n identity?.kind === \"page\" &&\n Boolean(input.getWidget(widget.contributionId)) &&\n input.state.pages[identity.pageId]?.modeId === input.state.activeModeId &&\n !(leavingPage && widget.tabRetention === \"preview\") &&\n !pagePlacementClosed(widget, input.state, input.previous)\n );\n};\n\nconst restoreSharedPageTabs = (input: PageTabsInput, current: State[\"placements\"], sharedLayout?: WorkbenchLayout) => {\n const { state, previous } = input;\n const leavingPage =\n pageContextChanged(state, previous) &&\n state.projectId === previous.projectId &&\n state.activeModeId === previous.activeModeId;\n let placements = [...current];\n // A placement's owner creates its content; its actual tray determines its\n // navigation lifetime. Page-created tabs in Side/Bottom share the mode too.\n for (const region of Object.values(sharedLayout?.regions ?? {})) {\n if (region.id !== \"side\" && region.id !== \"secondary\") continue;\n for (const [order, widget] of region.widgets.entries()) {\n const identity = widget.placementIdentity;\n if (!identity || !canRestoreSharedPageTab(input, widget, leavingPage)) continue;\n const key = placementIdentityKey(identity);\n placements = placements.filter((entry) => placementIdentityKey(entry.identity) !== key);\n placements.push({ identity, region: region.id, order, value: sharedPageTabValue(input, widget) });\n }\n }\n return placements;\n};\n\nexport const scopePageMainTabs = (input: PageTabsInput) => {\n const { state, previous, layout, modeLayout } = input;\n if (!state.activePageId) return state;\n const changingPage = pageContextChanged(state, previous);\n const sameMode = state.projectId === previous.projectId && state.activeModeId === previous.activeModeId;\n const sharedLayout = sameMode ? layout : modeLayout;\n const departing = previous.activePageId ? sharedKeys(layout, true) : new Set<string>();\n const shared = sharedKeys(sharedLayout, false);\n const activated = new Set(state.reconciliation.activate.map((entry) => placementIdentityKey(entry.identity)));\n const retained = state.placements.filter((entry) => {\n const key = placementIdentityKey(entry.identity);\n return !changingPage || !departing.has(key) || shared.has(key) || activated.has(key);\n });\n const placements = restoreSharedPageTabs(input, restoreMainTabs(input, retained, shared), sharedLayout);\n return {\n ...state,\n placements,\n reconciliation: reconcileOwnedPlacements({\n current: previous.placements,\n desired: placements,\n destinations: state.reconciliation.destinations,\n activate: state.reconciliation.activate\n .filter((entry) =>\n placements.some(\n (candidate) => placementIdentityKey(candidate.identity) === placementIdentityKey(entry.identity),\n ),\n )\n .map((entry) => entry.identity),\n valuesEqual: (left, right) => JSON.stringify(left) === JSON.stringify(right),\n }),\n };\n};\n","import type { WorkbenchLayout, WorkbenchWidgetPlacement } from \"../../registries/layout/layout-types\";\nimport { indexCurrentOwnedPlacements, renderDesiredPlacements } from \"../../registries/layout/owned-placement-layout\";\nimport { placementIdentityKey, reconcileOwnedPlacements } from \"../../registries/layout/placement-reconciliation\";\nimport { planTrayTabs } from \"../../registries/layout/tray-tabs\";\nimport { editPagePlacementStates } from \"../../registries/pages/page-placement-state\";\nimport type { WorkbenchPageRegistryStoreState } from \"../../registries/pages/page-registry\";\n\ntype State = WorkbenchPageRegistryStoreState<WorkbenchWidgetPlacement>;\nexport const retainTrayPreviews = (\n state: State,\n previous: State,\n current: WorkbenchLayout,\n modeLayout?: WorkbenchLayout,\n) => {\n const rendered = renderDesiredPlacements(\n { layout: current, modeLayout, placements: state.placements, destinations: state.reconciliation.destinations },\n indexCurrentOwnedPlacements(current),\n );\n const incoming = [\n ...state.reconciliation.activate,\n ...state.reconciliation.add,\n ...state.reconciliation.update.map((entry) => entry.desired),\n ];\n const preferred = incoming\n .filter((entry) => entry.value.tabRetention === \"preview\")\n .map((entry) => placementIdentityKey(entry.identity));\n const removed = new Set<string>();\n for (const region of Object.values(current.regions)) {\n const candidates = rendered.filter((entry) => entry.region === region.id);\n const preferredEntry = preferred\n .map((key) => candidates.find((entry) => placementIdentityKey(entry.identity) === key))\n .find(Boolean);\n const plan = planTrayTabs(\n candidates.map((entry) => entry.placement),\n preferredEntry?.placement.widgetId ?? region.activeWidgetId,\n );\n for (const widget of plan.replaced)\n if (widget.placementIdentity) removed.add(placementIdentityKey(widget.placementIdentity));\n }\n return removeTrayPreviews(state, previous, removed);\n};\n\nexport const removeTrayPreviews = (state: State, previous: State, removed: ReadonlySet<string>) => {\n if (!removed.size) return state;\n const placements = state.placements.filter((entry) => !removed.has(placementIdentityKey(entry.identity)));\n let pageStates = state.pageStates;\n for (const entry of state.placements) {\n const identity = entry.identity;\n if (identity.kind !== \"page\" || !removed.has(placementIdentityKey(identity))) continue;\n pageStates = editPagePlacementStates(pageStates, identity, { kind: \"close\" });\n }\n return {\n ...state,\n placements,\n pageStates,\n reconciliation: reconcileOwnedPlacements({\n current: previous.placements,\n desired: placements,\n destinations: state.reconciliation.destinations,\n activate: state.reconciliation.activate\n .filter((entry) => !removed.has(placementIdentityKey(entry.identity)))\n .map((entry) => entry.identity),\n valuesEqual: (left, right) => JSON.stringify(left) === JSON.stringify(right),\n }),\n };\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type { WorkbenchLayout, WorkbenchWidgetPlacement } from \"../../registries/layout/layout-types\";\nimport { placementIdentityKey } from \"../../registries/layout/placement-reconciliation\";\nimport { editPagePlacementStates } from \"../../registries/pages/page-placement-state\";\nimport type { WorkbenchPageRegistryStoreState } from \"../../registries/pages/page-registry\";\nimport { pageContextChanged } from \"./page-main-tabs\";\nimport { removeTrayPreviews } from \"./tray-preview-retention\";\n\ntype State = WorkbenchPageRegistryStoreState<WorkbenchWidgetPlacement>;\n\nexport const departingPagePreviews = (next: State, previous: State, layout: WorkbenchLayout) => {\n if (\n !previous.activePageId ||\n previous.projectId !== next.projectId ||\n previous.activeModeId !== next.activeModeId ||\n !pageContextChanged(next, previous)\n )\n return [];\n return Object.values(layout.regions).flatMap((region) =>\n region.widgets.filter((widget) => widget.tabRetention === \"preview\"),\n );\n};\n\nexport const closeDepartingPagePreviews = (state: State, previous: State, layout: WorkbenchLayout) => {\n const previews = departingPagePreviews(state, previous, layout);\n const removed = new Set(\n previews.flatMap((widget) => {\n if (!widget.placementIdentity) return [];\n const key = placementIdentityKey(widget.placementIdentity);\n const incoming = state.placements.find((entry) => placementIdentityKey(entry.identity) === key);\n return incoming?.value.tabRetention === \"preview\" &&\n resourceKey(incoming.value.resource) === resourceKey(widget.resource)\n ? [key]\n : [];\n }),\n );\n const next = removeTrayPreviews(state, previous, removed);\n let pageStates = next.pageStates;\n for (const widget of previews) {\n const identity = widget.placementIdentity;\n if (identity?.kind !== \"page\") continue;\n pageStates = editPagePlacementStates(pageStates, identity, { kind: \"close\" });\n }\n return previews.length ? { ...next, pageStates } : next;\n};\n","import type { WorkbenchCore, WorkbenchRenderers } from \"./workbench-core-types\";\n\nconst renderersByWorkbench = new WeakMap<WorkbenchCore, WorkbenchRenderers>();\n\nexport const setWorkbenchRenderers = (workbench: WorkbenchCore, renderers: WorkbenchRenderers) => {\n renderersByWorkbench.set(workbench, renderers);\n};\n\nexport const getWorkbenchRenderers = (workbench: WorkbenchCore) => {\n const renderers = renderersByWorkbench.get(workbench);\n if (!renderers) throw new Error(\"Workbench renderers are not initialized\");\n return renderers;\n};\n"],"mappings":"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"}