d3b5340583
* fix: 9 unaddressed log-audit / run-audit findings Co-authored-by: Cursor <cursoragent@cursor.com> #815 entryPost stdlib-only imports; #823 MCP timeoutMs on checkout_pr/shell; #816 FREE_FALLBACK → opencode/big-pickle; #822 chunk GraphQL nodes ≤100; #817/#821 vip_audit 404 skip paths; #813 longer serializable retries; #818 run-context handler-entered log; #805 audit severity template. * fix: update footer test for big-pickle fallback slug Co-authored-by: Cursor <cursoragent@cursor.com> * fix: anneal round 1 — ghaCore getState casing, post-hook timeout Match @actions/core STATE_ key semantics (no uppercasing), cap postApiFetch at 30s, trim serializable retries to stay under GitHub's 10s webhook window, log Clerk failures in getUserTokenByGithubLogin. Co-authored-by: Cursor <cursoragent@cursor.com> * revert: drop run-context handler log (#818 deferred) The #692 client-side fix is already on main; residual SyntaxError hits are old action pins. Per-request log added noise without fixing anything. Co-authored-by: Cursor <cursoragent@cursor.com> * document per-issue Closes syntax for audit PRs GitHub only auto-closes the first issue when numbers are comma-separated; /audits and AGENTS.md now require Closes before each issue number. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: anneal round 2 — outreach privacy, alert resilience, vertex cleanup Filter private repos from VIP authority output, harden console alert lines against DB failures, drop spoofable changesets body check, and unset GOOGLE_APPLICATION_CREDENTIALS after vertex credential cleanup. Co-authored-by: Cursor <cursoragent@cursor.com> * refactor: drop codexHome re-export of detectCodexRefresh Import detectCodexRefresh directly from codexRefreshDetect.ts everywhere; rename the unit test file to match. codexHome.ts stays install-only. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: drop deprecated minimax-m2.5-free; add paid minimax-m2.5 Remove the deprecated free MiniMax promo from the catalog, docs, and tests. BYOK fallback and picker copy stay on opencode/big-pickle. Add opencode/minimax-m2.5 and openrouter/minimax-m2.5 for Zen BYOK and Router. Pin #816 regressions with freeFallbackCatalog and runErrorRenderer unit tests. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: hidden minimax-m2.5-free fallback for stored slugs Re-add opencode/minimax-m2.5-free as a hidden fallback alias to big-pickle so repos with the legacy slug still resolve as free. Drop live Zen API experiment tests in freeFallbackCatalog.test.ts. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
/** Convert an on-disk OpenCode auth.json back to the Codex CLI shape so the
|
|
* post-hook can write it to the Pullfrog secret store. Returns null when the
|
|
* file's `openai` entry is missing, has the wrong type, or hasn't actually
|
|
* refreshed (refresh token unchanged from `originalRefresh`). Lives in its
|
|
* own module so `entryPost.ts` can import it without pulling in `codexHome.ts`
|
|
* (which imports `./cli.ts` and node fs helpers). */
|
|
export function detectCodexRefresh(params: {
|
|
authFileContent: string;
|
|
originalRefresh: string;
|
|
}): string | null {
|
|
let parsed: unknown;
|
|
try {
|
|
parsed = JSON.parse(params.authFileContent);
|
|
} catch {
|
|
return null;
|
|
}
|
|
if (!parsed || typeof parsed !== "object") return null;
|
|
const oauth = (parsed as Record<string, unknown>).openai;
|
|
if (!oauth || typeof oauth !== "object") return null;
|
|
const o = oauth as Record<string, unknown>;
|
|
if (o.type !== "oauth") return null;
|
|
if (typeof o.refresh !== "string" || typeof o.access !== "string") return null;
|
|
if (o.refresh === params.originalRefresh) return null;
|
|
|
|
const codexShape = {
|
|
auth_mode: "chatgpt",
|
|
tokens: {
|
|
access_token: o.access,
|
|
refresh_token: o.refresh,
|
|
...(typeof o.accountId === "string" ? { account_id: o.accountId } : {}),
|
|
},
|
|
last_refresh: new Date().toISOString(),
|
|
};
|
|
return `${JSON.stringify(codexShape, null, 2)}\n`;
|
|
}
|