From c07ba9ea3ba99e27a90756ea98a531d68eb8b7a2 Mon Sep 17 00:00:00 2001 From: Chris Farhood Date: Sun, 31 May 2026 08:04:06 -0400 Subject: [PATCH] fix(merge): post-merge cleanup after upstream/master backport - restore server/src/services/github-fetch.ts (re-added by upstream; dev's history had deleted it via 80f7d827) - drop stale companySkillUpdateAuthSchema export from shared/index.ts (upstream removed the validator we took with --theirs) - regenerate pnpm-lock.yaml for the merged workspace Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/shared/src/index.ts | 1 - pnpm-lock.yaml | 2 ++ server/src/services/github-fetch.ts | 25 +++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 server/src/services/github-fetch.ts diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 5663c65e..d6c5d958 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -1087,7 +1087,6 @@ export { companySkillAuditFindingSchema, companySkillAuditResultSchema, companySkillImportSchema, - companySkillUpdateAuthSchema, companySkillProjectScanRequestSchema, companySkillProjectScanSkippedSchema, companySkillProjectScanConflictSchema, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 184d1623..f66c43d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -622,6 +622,8 @@ importers: specifier: ^5.7.3 version: 5.9.3 + packages/skills-catalog: {} + server: dependencies: '@aws-sdk/client-s3': diff --git a/server/src/services/github-fetch.ts b/server/src/services/github-fetch.ts new file mode 100644 index 00000000..787ae0ef --- /dev/null +++ b/server/src/services/github-fetch.ts @@ -0,0 +1,25 @@ +import { unprocessable } from "../errors.js"; + +function isGitHubDotCom(hostname: string) { + const h = hostname.toLowerCase(); + return h === "github.com" || h === "www.github.com"; +} + +export function gitHubApiBase(hostname: string) { + return isGitHubDotCom(hostname) ? "https://api.github.com" : `https://${hostname}/api/v3`; +} + +export function resolveRawGitHubUrl(hostname: string, owner: string, repo: string, ref: string, filePath: string) { + const p = filePath.replace(/^\/+/, ""); + return isGitHubDotCom(hostname) + ? `https://raw.githubusercontent.com/${owner}/${repo}/${ref}/${p}` + : `https://${hostname}/raw/${owner}/${repo}/${ref}/${p}`; +} + +export async function ghFetch(url: string, init?: RequestInit): Promise { + try { + return await fetch(url, init); + } catch { + throw unprocessable(`Could not connect to ${new URL(url).hostname} — ensure the URL points to a GitHub or GitHub Enterprise instance`); + } +}