Path: blob/main/extensions/copilot/src/extension/chatSessions/common/skillConfigLocations.ts
13399 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { IConfigurationService } from '../../../platform/configuration/common/configurationService';6import { SKILLS_LOCATION_KEY } from '../../../platform/customInstructions/common/promptTypes';7import { INativeEnvService } from '../../../platform/env/common/envService';8import { IWorkspaceService } from '../../../platform/workspace/common/workspaceService';9import { isAbsolute } from '../../../util/vs/base/common/path';10import { isObject } from '../../../util/vs/base/common/types';11import { URI } from '../../../util/vs/base/common/uri';1213/**14* Resolves skill directory locations from the `chat.agentSkillsLocations` config setting.15* Handles `~/` expansion, absolute paths, and relative paths (joined to each workspace folder).16*/17export function resolveSkillConfigLocations(18configurationService: IConfigurationService,19envService: INativeEnvService,20workspaceService: IWorkspaceService,21): URI[] {22const results: URI[] = [];23const locations = configurationService.getNonExtensionConfig<Record<string, boolean>>(SKILLS_LOCATION_KEY);24if (!isObject(locations)) {25return results;26}2728const userHome = envService.userHome;29const workspaceFolders = workspaceService.getWorkspaceFolders();30for (const key in locations) {31const location = key.trim();32if (locations[key] !== true) {33continue;34}35if (location.startsWith('~/')) {36results.push(URI.joinPath(userHome, location.substring(2)));37} else if (isAbsolute(location)) {38results.push(URI.file(location));39} else {40for (const workspaceFolder of workspaceFolders) {41results.push(URI.joinPath(workspaceFolder, location));42}43}44}4546return results;47}484950