code-provenance 0.1.5 → 0.1.7

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.
package/dist/github.d.ts CHANGED
@@ -4,6 +4,11 @@
4
4
  * Returns [commit_sha, is_exact_match] or null.
5
5
  */
6
6
  export declare function resolveTagToCommit(owner: string, repo: string, tag: string): Promise<[string, boolean] | null>;
7
+ /**
8
+ * Get the latest commit on a specific branch.
9
+ * Returns commit SHA or null if branch doesn't exist.
10
+ */
11
+ export declare function getBranchCommit(owner: string, repo: string, branch: string): Promise<string | null>;
7
12
  /**
8
13
  * Get the commit SHA of the latest GitHub release.
9
14
  * Returns [commit_sha, tag_name] or null.
@@ -30,6 +35,14 @@ export declare function resolveGhcrDigestViaPackages(owner: string, packageName:
30
35
  * Find the commit for a GHCR image's :latest tag.
31
36
  */
32
37
  export declare function resolveGhcrLatestViaPackages(owner: string, packageName: string): Promise<PackageVersionResult | null>;
38
+ /**
39
+ * Search GHCR package versions for a tag matching a prefix.
40
+ * e.g., tagPrefix='10.11' matches '10.11.16-jammy'.
41
+ */
42
+ export declare function findGhcrVersionByTagPrefix(owner: string, packageName: string, tagPrefix: string): Promise<{
43
+ repo: string;
44
+ versionTag: string;
45
+ } | null>;
33
46
  /**
34
47
  * Try to find the GitHub repo for a Docker Hub image.
35
48
  */
package/dist/github.js CHANGED
@@ -96,6 +96,23 @@ export async function resolveTagToCommit(owner, repo, tag) {
96
96
  }
97
97
  return null;
98
98
  }
99
+ /**
100
+ * Get the latest commit on a specific branch.
101
+ * Returns commit SHA or null if branch doesn't exist.
102
+ */
103
+ export async function getBranchCommit(owner, repo, branch) {
104
+ const headers = githubHeaders();
105
+ try {
106
+ const resp = await fetch(`https://api.github.com/repos/${owner}/${repo}/branches/${encodeURIComponent(branch)}`, { headers, signal: AbortSignal.timeout(10000) });
107
+ if (!resp.ok)
108
+ return null;
109
+ const data = (await resp.json());
110
+ return data.commit?.sha ?? null;
111
+ }
112
+ catch {
113
+ return null;
114
+ }
115
+ }
99
116
  /**
100
117
  * Get the commit SHA of the latest GitHub release.
101
118
  * Returns [commit_sha, tag_name] or null.
@@ -234,6 +251,76 @@ export async function resolveGhcrDigestViaPackages(owner, packageName, digest) {
234
251
  export async function resolveGhcrLatestViaPackages(owner, packageName) {
235
252
  return findGhcrPackageVersion(owner, packageName, { matchTag: "latest" });
236
253
  }
254
+ /**
255
+ * Search GHCR package versions for a tag matching a prefix.
256
+ * e.g., tagPrefix='10.11' matches '10.11.16-jammy'.
257
+ */
258
+ export async function findGhcrVersionByTagPrefix(owner, packageName, tagPrefix) {
259
+ const headers = githubHeaders();
260
+ if (!headers.Authorization)
261
+ return null;
262
+ for (const entityType of ["orgs", "users"]) {
263
+ const pkgBase = `https://api.github.com/${entityType}/${owner}/packages/container/${packageName}`;
264
+ let pkgResp;
265
+ try {
266
+ pkgResp = await fetch(pkgBase, {
267
+ headers,
268
+ signal: AbortSignal.timeout(10000),
269
+ });
270
+ if (pkgResp.status === 403)
271
+ return null;
272
+ if (!pkgResp.ok)
273
+ continue;
274
+ }
275
+ catch {
276
+ continue;
277
+ }
278
+ const pkgData = (await pkgResp.json());
279
+ const fullName = pkgData.repository?.full_name;
280
+ if (!fullName)
281
+ continue;
282
+ let url = `${pkgBase}/versions?per_page=100`;
283
+ let bestMatch = null;
284
+ let bestVersion = null;
285
+ try {
286
+ while (url) {
287
+ const resp = await fetch(url, {
288
+ headers,
289
+ signal: AbortSignal.timeout(10000),
290
+ });
291
+ if (!resp.ok)
292
+ break;
293
+ const versions = (await resp.json());
294
+ for (const version of versions) {
295
+ const tags = version.metadata?.container?.tags ?? [];
296
+ for (const tag of tags) {
297
+ if (!tag.startsWith(tagPrefix))
298
+ continue;
299
+ const rest = tag.slice(tagPrefix.length);
300
+ if (rest !== "" && rest[0] !== "." && rest[0] !== "-")
301
+ continue;
302
+ const verStr = tag.split("-")[0]; // strip OS suffix
303
+ const parts = verStr.split(".").map(Number);
304
+ if (parts.some(isNaN))
305
+ continue;
306
+ if (bestVersion === null ||
307
+ compareVersions(parts, bestVersion) > 0) {
308
+ bestVersion = parts;
309
+ bestMatch = { repo: fullName, versionTag: tag };
310
+ }
311
+ }
312
+ }
313
+ url = parseNextLink(resp.headers.get("link"));
314
+ }
315
+ }
316
+ catch {
317
+ // continue
318
+ }
319
+ if (bestMatch)
320
+ return bestMatch;
321
+ }
322
+ return null;
323
+ }
237
324
  /**
238
325
  * Try to find the GitHub repo for a Docker Hub image.
239
326
  */
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
package/dist/resolver.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { fetchOciLabels } from "./registry.js";
2
- import { resolveTagToCommit, inferRepoFromDockerhub, resolveGhcrDigestViaPackages, resolveGhcrLatestViaPackages, getLatestReleaseCommit, getLatestCommit, } from "./github.js";
2
+ import { resolveTagToCommit, inferRepoFromDockerhub, resolveGhcrDigestViaPackages, resolveGhcrLatestViaPackages, getLatestReleaseCommit, getLatestCommit, getBranchCommit, findGhcrVersionByTagPrefix, } from "./github.js";
3
3
  const COMMIT_SHA_RE = /^[0-9a-f]{40,}$/;
4
4
  const DIGEST_RE = /^sha256:[0-9a-f]{64}$/;
5
5
  function isResolvableTag(tag) {
@@ -93,6 +93,50 @@ export async function resolveImage(service, ref) {
93
93
  return result;
94
94
  }
95
95
  result.steps.push("[3/5] No matching git tag found");
96
+ // Try matching a branch with the same name as the tag
97
+ result.steps.push(`[3/5] Trying branch '${ref.tag}' in ${owner}/${repoName}`);
98
+ const branchSha = await getBranchCommit(owner, repoName, ref.tag);
99
+ if (branchSha) {
100
+ result.steps.push(`[3/5] Branch '${ref.tag}' found: ${branchSha.slice(0, 12)}`);
101
+ result.commit = branchSha;
102
+ result.commit_url = `${result.repo}/commit/${branchSha}`;
103
+ result.status = "resolved";
104
+ result.resolution_method = "branch_match";
105
+ result.confidence = "approximate";
106
+ return result;
107
+ }
108
+ result.steps.push(`[3/5] No branch '${ref.tag}' found`);
109
+ // Try GHCR cross-lookup: search for a matching package version tag
110
+ if (ref.registry === "docker.io" && process.env.GITHUB_TOKEN) {
111
+ const ghcrOwner = ref.namespace === "library" ? ref.name : ref.namespace;
112
+ result.steps.push(`[3/5] Trying GHCR package '${ghcrOwner}/${ref.name}' for tag prefix '${ref.tag}'`);
113
+ const ghcrMatch = await findGhcrVersionByTagPrefix(ghcrOwner, ref.name, ref.tag);
114
+ if (ghcrMatch) {
115
+ const matchedTag = ghcrMatch.versionTag;
116
+ result.repo = `https://github.com/${ghcrMatch.repo}`;
117
+ result.steps.push(`[3/5] GHCR prefix match: '${matchedTag}' in ${ghcrMatch.repo}`);
118
+ // Try OCI labels on the matched GHCR image for a commit
119
+ const ghcrRef = {
120
+ registry: "ghcr.io", namespace: ghcrOwner, name: ref.name,
121
+ tag: matchedTag, raw: `ghcr.io/${ghcrOwner}/${ref.name}:${matchedTag}`,
122
+ };
123
+ const ghcrLabels = await fetchOciLabels(ghcrRef);
124
+ const revision = ghcrLabels["org.opencontainers.image.revision"];
125
+ if (revision) {
126
+ result.steps.push(`[3/5] OCI labels on GHCR image: revision=${revision.slice(0, 12)}`);
127
+ result.commit = revision;
128
+ result.commit_url = `${result.repo}/commit/${revision}`;
129
+ }
130
+ else {
131
+ result.steps.push(`[3/5] No commit in OCI labels, matched version: ${matchedTag}`);
132
+ }
133
+ result.status = "resolved";
134
+ result.resolution_method = "ghcr_cross_lookup";
135
+ result.confidence = "approximate";
136
+ return result;
137
+ }
138
+ result.steps.push("[3/5] No GHCR package match found");
139
+ }
96
140
  result.status = "repo_found_tag_not_matched";
97
141
  return result;
98
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-provenance",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Resolve Docker images to their source code commits on GitHub",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/github.ts CHANGED
@@ -118,6 +118,29 @@ export async function resolveTagToCommit(
118
118
  return null;
119
119
  }
120
120
 
121
+ /**
122
+ * Get the latest commit on a specific branch.
123
+ * Returns commit SHA or null if branch doesn't exist.
124
+ */
125
+ export async function getBranchCommit(
126
+ owner: string,
127
+ repo: string,
128
+ branch: string
129
+ ): Promise<string | null> {
130
+ const headers = githubHeaders();
131
+ try {
132
+ const resp = await fetch(
133
+ `https://api.github.com/repos/${owner}/${repo}/branches/${encodeURIComponent(branch)}`,
134
+ { headers, signal: AbortSignal.timeout(10000) }
135
+ );
136
+ if (!resp.ok) return null;
137
+ const data = (await resp.json()) as { commit?: { sha?: string } };
138
+ return data.commit?.sha ?? null;
139
+ } catch {
140
+ return null;
141
+ }
142
+ }
143
+
121
144
  /**
122
145
  * Get the commit SHA of the latest GitHub release.
123
146
  * Returns [commit_sha, tag_name] or null.
@@ -292,6 +315,84 @@ export async function resolveGhcrLatestViaPackages(
292
315
  return findGhcrPackageVersion(owner, packageName, { matchTag: "latest" });
293
316
  }
294
317
 
318
+ /**
319
+ * Search GHCR package versions for a tag matching a prefix.
320
+ * e.g., tagPrefix='10.11' matches '10.11.16-jammy'.
321
+ */
322
+ export async function findGhcrVersionByTagPrefix(
323
+ owner: string,
324
+ packageName: string,
325
+ tagPrefix: string
326
+ ): Promise<{ repo: string; versionTag: string } | null> {
327
+ const headers = githubHeaders();
328
+ if (!headers.Authorization) return null;
329
+
330
+ for (const entityType of ["orgs", "users"]) {
331
+ const pkgBase = `https://api.github.com/${entityType}/${owner}/packages/container/${packageName}`;
332
+
333
+ let pkgResp: Response;
334
+ try {
335
+ pkgResp = await fetch(pkgBase, {
336
+ headers,
337
+ signal: AbortSignal.timeout(10000),
338
+ });
339
+ if (pkgResp.status === 403) return null;
340
+ if (!pkgResp.ok) continue;
341
+ } catch {
342
+ continue;
343
+ }
344
+
345
+ const pkgData = (await pkgResp.json()) as any;
346
+ const fullName: string | undefined = pkgData.repository?.full_name;
347
+ if (!fullName) continue;
348
+
349
+ let url: string | null = `${pkgBase}/versions?per_page=100`;
350
+ let bestMatch: { repo: string; versionTag: string } | null = null;
351
+ let bestVersion: number[] | null = null;
352
+
353
+ try {
354
+ while (url) {
355
+ const resp = await fetch(url, {
356
+ headers,
357
+ signal: AbortSignal.timeout(10000),
358
+ });
359
+ if (!resp.ok) break;
360
+
361
+ const versions = (await resp.json()) as any[];
362
+
363
+ for (const version of versions) {
364
+ const tags: string[] = version.metadata?.container?.tags ?? [];
365
+ for (const tag of tags) {
366
+ if (!tag.startsWith(tagPrefix)) continue;
367
+ const rest = tag.slice(tagPrefix.length);
368
+ if (rest !== "" && rest[0] !== "." && rest[0] !== "-") continue;
369
+
370
+ const verStr = tag.split("-")[0]; // strip OS suffix
371
+ const parts = verStr.split(".").map(Number);
372
+ if (parts.some(isNaN)) continue;
373
+
374
+ if (
375
+ bestVersion === null ||
376
+ compareVersions(parts, bestVersion) > 0
377
+ ) {
378
+ bestVersion = parts;
379
+ bestMatch = { repo: fullName, versionTag: tag };
380
+ }
381
+ }
382
+ }
383
+
384
+ url = parseNextLink(resp.headers.get("link"));
385
+ }
386
+ } catch {
387
+ // continue
388
+ }
389
+
390
+ if (bestMatch) return bestMatch;
391
+ }
392
+
393
+ return null;
394
+ }
395
+
295
396
  /**
296
397
  * Try to find the GitHub repo for a Docker Hub image.
297
398
  */
package/src/resolver.ts CHANGED
@@ -7,6 +7,8 @@ import {
7
7
  resolveGhcrLatestViaPackages,
8
8
  getLatestReleaseCommit,
9
9
  getLatestCommit,
10
+ getBranchCommit,
11
+ findGhcrVersionByTagPrefix,
10
12
  } from "./github.js";
11
13
 
12
14
  const COMMIT_SHA_RE = /^[0-9a-f]{40,}$/;
@@ -112,6 +114,49 @@ export async function resolveImage(
112
114
  return result;
113
115
  }
114
116
  result.steps.push("[3/5] No matching git tag found");
117
+ // Try matching a branch with the same name as the tag
118
+ result.steps.push(`[3/5] Trying branch '${ref.tag}' in ${owner}/${repoName}`);
119
+ const branchSha = await getBranchCommit(owner, repoName, ref.tag);
120
+ if (branchSha) {
121
+ result.steps.push(`[3/5] Branch '${ref.tag}' found: ${branchSha.slice(0, 12)}`);
122
+ result.commit = branchSha;
123
+ result.commit_url = `${result.repo}/commit/${branchSha}`;
124
+ result.status = "resolved";
125
+ result.resolution_method = "branch_match";
126
+ result.confidence = "approximate";
127
+ return result;
128
+ }
129
+ result.steps.push(`[3/5] No branch '${ref.tag}' found`);
130
+ // Try GHCR cross-lookup: search for a matching package version tag
131
+ if (ref.registry === "docker.io" && process.env.GITHUB_TOKEN) {
132
+ const ghcrOwner = ref.namespace === "library" ? ref.name : ref.namespace;
133
+ result.steps.push(`[3/5] Trying GHCR package '${ghcrOwner}/${ref.name}' for tag prefix '${ref.tag}'`);
134
+ const ghcrMatch = await findGhcrVersionByTagPrefix(ghcrOwner, ref.name, ref.tag);
135
+ if (ghcrMatch) {
136
+ const matchedTag = ghcrMatch.versionTag;
137
+ result.repo = `https://github.com/${ghcrMatch.repo}`;
138
+ result.steps.push(`[3/5] GHCR prefix match: '${matchedTag}' in ${ghcrMatch.repo}`);
139
+ // Try OCI labels on the matched GHCR image for a commit
140
+ const ghcrRef = {
141
+ registry: "ghcr.io", namespace: ghcrOwner, name: ref.name,
142
+ tag: matchedTag, raw: `ghcr.io/${ghcrOwner}/${ref.name}:${matchedTag}`,
143
+ };
144
+ const ghcrLabels = await fetchOciLabels(ghcrRef);
145
+ const revision = ghcrLabels["org.opencontainers.image.revision"];
146
+ if (revision) {
147
+ result.steps.push(`[3/5] OCI labels on GHCR image: revision=${revision.slice(0, 12)}`);
148
+ result.commit = revision;
149
+ result.commit_url = `${result.repo}/commit/${revision}`;
150
+ } else {
151
+ result.steps.push(`[3/5] No commit in OCI labels, matched version: ${matchedTag}`);
152
+ }
153
+ result.status = "resolved";
154
+ result.resolution_method = "ghcr_cross_lookup";
155
+ result.confidence = "approximate";
156
+ return result;
157
+ }
158
+ result.steps.push("[3/5] No GHCR package match found");
159
+ }
115
160
  result.status = "repo_found_tag_not_matched";
116
161
  return result;
117
162
  }