import type { CatalogSkill, CatalogSkillFileDetail, CatalogSkillKind, CompanySkill, CompanySkillCreateRequest, CompanySkillDetail, CompanySkillFileDetail, CompanySkillImportResult, CompanySkillInstallCatalogRequest, CompanySkillInstallCatalogResult, CompanySkillListItem, CompanySkillProjectScanRequest, CompanySkillProjectScanResult, CompanySkillUpdateStatus, } from "@paperclipai/shared"; import { api } from "./client"; export interface CatalogListQuery { kind?: CatalogSkillKind; category?: string; q?: string; } export const companySkillsApi = { list: (companyId: string) => api.get(`/companies/${encodeURIComponent(companyId)}/skills`), detail: (companyId: string, skillId: string) => api.get( `/companies/${encodeURIComponent(companyId)}/skills/${encodeURIComponent(skillId)}`, ), updateStatus: (companyId: string, skillId: string) => api.get( `/companies/${encodeURIComponent(companyId)}/skills/${encodeURIComponent(skillId)}/update-status`, ), file: (companyId: string, skillId: string, relativePath: string) => api.get( `/companies/${encodeURIComponent(companyId)}/skills/${encodeURIComponent(skillId)}/files?path=${encodeURIComponent(relativePath)}`, ), updateFile: (companyId: string, skillId: string, path: string, content: string) => api.patch( `/companies/${encodeURIComponent(companyId)}/skills/${encodeURIComponent(skillId)}/files`, { path, content }, ), create: (companyId: string, payload: CompanySkillCreateRequest) => api.post( `/companies/${encodeURIComponent(companyId)}/skills`, payload, ), importFromSource: (companyId: string, source: string) => api.post( `/companies/${encodeURIComponent(companyId)}/skills/import`, { source }, ), scanProjects: (companyId: string, payload: CompanySkillProjectScanRequest = {}) => api.post( `/companies/${encodeURIComponent(companyId)}/skills/scan-projects`, payload, ), installUpdate: (companyId: string, skillId: string) => api.post( `/companies/${encodeURIComponent(companyId)}/skills/${encodeURIComponent(skillId)}/install-update`, {}, ), delete: (companyId: string, skillId: string) => api.delete( `/companies/${encodeURIComponent(companyId)}/skills/${encodeURIComponent(skillId)}`, ), catalogList: (query: CatalogListQuery = {}) => { const params = new URLSearchParams(); if (query.kind) params.set("kind", query.kind); if (query.category) params.set("category", query.category); if (query.q) params.set("q", query.q); const search = params.toString(); return api.get(`/skills/catalog${search ? `?${search}` : ""}`); }, catalogDetail: (catalogRef: string) => api.get(`/skills/catalog/${encodeURIComponent(catalogRef)}`), catalogFile: (catalogRef: string, relativePath: string = "SKILL.md") => api.get( `/skills/catalog/${encodeURIComponent(catalogRef)}/files?path=${encodeURIComponent(relativePath)}`, ), installCatalog: (companyId: string, payload: CompanySkillInstallCatalogRequest) => api.post( `/companies/${encodeURIComponent(companyId)}/skills/install-catalog`, payload, ), };