import type { Config } from '../config/schema.js'; import { type WorkspaceSkillSourceStatus } from '../agent/skills/index.js'; import type { Skill, SkillDiagnostic, SkillMetadata, SkillToolConditions } from '../agent/skills/types.js'; import type { ProjectService } from './project-service.js'; export type ProjectSkillErrorCode = 'project_not_found' | 'project_workspace_required' | 'project_workspace_missing' | 'project_workspace_not_writable' | 'skill_not_found' | 'invalid_skill_id'; export declare class ProjectSkillError extends Error { readonly code: ProjectSkillErrorCode; readonly status: 400 | 403 | 404 | 409; constructor(code: ProjectSkillErrorCode, status: 400 | 403 | 404 | 409, message: string); } export interface ProjectSkillSummary { key: string; directoryId: string; name: string; description: string; category?: string; origin: Skill['origin']['id']; path: string; managed: boolean; writable: boolean; removable: boolean; effective: boolean; shadowedBy?: Skill['origin']['id']; disableModelInvocation: boolean; metadata: SkillMetadata; toolConditions?: SkillToolConditions; requiredEnvVarNames?: string[]; } export interface ProjectWorkspaceTrustState { workspacePath: string; required: boolean; decision: boolean | null; trusted: boolean; } export interface ProjectSkillListResult { workspaceRoot: string; sources: WorkspaceSkillSourceStatus[]; trust: ProjectWorkspaceTrustState; items: ProjectSkillSummary[]; inheritedItems: ProjectSkillSummary[]; diagnostics: SkillDiagnostic[]; } interface ProjectSkillServiceOptions { projects: ProjectService; getConfig: () => Config; getWorkspaceTrust: (workspaceRoot: string) => ProjectWorkspaceTrustState; setWorkspaceTrust: (workspaceRoot: string, trusted: boolean) => ProjectWorkspaceTrustState; refreshSkills: () => void | Promise; } export declare class ProjectSkillService { private readonly options; constructor(options: ProjectSkillServiceOptions); list(projectId: string): ProjectSkillListResult; getContent(projectId: string, skillKey: string): ProjectSkillSummary & { bodyMarkdown: string; }; getWorkspaceTrust(projectId: string): ProjectWorkspaceTrustState; setWorkspaceTrust(projectId: string, trusted: boolean): ProjectWorkspaceTrustState; installZip(projectId: string, buffer: Buffer, input?: { skillId?: string; overwrite?: boolean; }): Promise; installMarketplace(projectId: string, input: { name: string; version?: string; provider?: string; overwrite?: boolean; }): Promise; installSource(projectId: string, input: { source: string; skillId?: string; ref?: string; subpath?: string; force?: boolean; }): Promise; remove(projectId: string, skillId: string): Promise; private resolveLocation; private loadCatalog; private skillKey; private encodeSkillKey; private toSummary; } export {};