Fix capitalization issues

This commit is contained in:
Colin McDonnell
2026-01-16 16:54:42 +00:00
committed by pullfrog[bot]
parent 1f2f671be0
commit 101c666610
3 changed files with 95 additions and 0 deletions
+35
View File
@@ -119867,6 +119867,40 @@ ${encodedEvent}` : ""}
${runtimeContext}`;
}
// utils/normalizeEnv.ts
function normalizeEnv() {
const upperKeys = /* @__PURE__ */ new Map();
for (const key of Object.keys(process.env)) {
const upper2 = key.toUpperCase();
const existing = upperKeys.get(upper2) || [];
existing.push(key);
upperKeys.set(upper2, existing);
}
for (const [upperKey, keys] of upperKeys) {
if (keys.length === 1) {
const key = keys[0];
if (key !== upperKey) {
process.env[upperKey] = process.env[key];
delete process.env[key];
}
continue;
}
const values = keys.map((k) => process.env[k]);
const uniqueValues = new Set(values);
if (uniqueValues.size > 1) {
log.warning(
`env var conflict: ${keys.join(", ")} have different values. using uppercase ${upperKey}.`
);
}
const preferredKey = keys.find((k) => k === upperKey) || keys[0];
const preferredValue = process.env[preferredKey];
for (const key of keys) {
delete process.env[key];
}
process.env[upperKey] = preferredValue;
}
}
// utils/payload.ts
import { isAbsolute, resolve } from "node:path";
var ToolPermissionInput = type.enumerated("disabled", "enabled");
@@ -138455,6 +138489,7 @@ async function resolveRunId(repoData) {
async function main(core5) {
var _stack2 = [];
try {
normalizeEnv();
process.env.ORIGINAL_GITHUB_TOKEN = process.env.GITHUB_TOKEN;
const payload = resolvePayload(core5);
if (payload.cwd && process.cwd() !== payload.cwd) {
+4
View File
@@ -5,6 +5,7 @@ import { validateApiKey } from "./utils/apiKeys.ts";
import { log } from "./utils/cli.ts";
import { reportErrorToComment } from "./utils/errorReport.ts";
import { resolveInstructions } from "./utils/instructions.ts";
import { normalizeEnv } from "./utils/normalizeEnv.ts";
import { resolvePayload } from "./utils/payload.ts";
import { resolveRepoData } from "./utils/repoData.ts";
import { resolveAgent } from "./utils/resolveAgent.ts";
@@ -25,6 +26,9 @@ export interface MainResult {
export async function main(core: {
getInput: (name: string, options?: { required?: boolean }) => string;
}): Promise<MainResult> {
// normalize env var names to uppercase (handles case-insensitive workflow files)
normalizeEnv();
// store original GITHUB_TOKEN
process.env.ORIGINAL_GITHUB_TOKEN = process.env.GITHUB_TOKEN;
+56
View File
@@ -0,0 +1,56 @@
import { log } from "./cli.ts";
/**
* Normalize environment variables to uppercase.
* This handles case-insensitive env var names (e.g., `anthropic_api_key` -> `ANTHROPIC_API_KEY`).
*
* If there are conflicts (same key with different capitalizations but different values),
* logs a warning and keeps the uppercase version.
*/
export function normalizeEnv(): void {
const upperKeys = new Map<string, string[]>();
// group keys by their uppercase form
for (const key of Object.keys(process.env)) {
const upper = key.toUpperCase();
const existing = upperKeys.get(upper) || [];
existing.push(key);
upperKeys.set(upper, existing);
}
// process each group
for (const [upperKey, keys] of upperKeys) {
if (keys.length === 1) {
const key = keys[0];
if (key !== upperKey) {
// single key, just needs uppercasing
process.env[upperKey] = process.env[key];
delete process.env[key];
}
continue;
}
// multiple keys with different capitalizations
const values = keys.map((k) => process.env[k]);
const uniqueValues = new Set(values);
if (uniqueValues.size > 1) {
// conflict: different values for different capitalizations
log.warning(
`env var conflict: ${keys.join(", ")} have different values. using uppercase ${upperKey}.`
);
}
// prefer the uppercase version if it exists, otherwise use the first one
const preferredKey = keys.find((k) => k === upperKey) || keys[0];
const preferredValue = process.env[preferredKey];
// delete all variants
for (const key of keys) {
delete process.env[key];
}
// set the uppercase version
process.env[upperKey] = preferredValue;
}
}