Files
OmniRoute/tests/unit/chatgpt-web-source-retirement.test.ts
backryun 7ed8ada432 feat(providers): restore ChatGPT Web via clean-room browser transport (#12239)
Restores ChatGPT Web on a clean-room browser transport, merged on the operator's explicit decision.

Worth stating precisely, because this touches a provenance decision: the PR does not revert #11754. It narrows RETIRED_COMMON_CHATGPT_WEB_PROVIDER_IDS to the single GPL-derived alias cgpt-web and registers chatgpt-web as a separate clean-room id. The old implementation stays retired and blocked; the retirement machinery, its error code and its 410 contract are untouched. All four retirement suites agree with that distinction and pass unchanged.

The 44 protected agent-instruction surfaces this PR touches (AGENTS.md, llm.txt and its 42 mirrors, README) were verified rather than trusted: masking digits and comparing the removed and added line sets gives 264 lines on each side, identical — every change is a provider-count substitution, with no sentence added, removed or reworded.

Reconciled on merge: clean against the tip, with the two chat chokepoints this PR grows (src/sse/handlers/chat.ts +40, open-sse/handlers/chatCore.ts +30) recorded in the file-size baseline under an annotation. Verified that exactly those two caps move and nothing else, so the #12411 ratchet holds. The rebaseline is carried on this branch rather than left in a validation worktree — the propagation mistake that put the 2026-09-02 merge waves base-red in #12434.

Verified: 504/504 across the PR's 44 test files plus all four chatgpt-web retirement suites, check:provider-consistency OK (272 REGISTRY entries, 355 canonical providers), check-file-size OK, and every changed TypeScript file parses.

Thanks @backryun — separating the clean-room id from the retired alias, instead of reopening the old one, is what made this reviewable.
2026-09-02 10:31:41 -03:00

41 lines
1.4 KiB
TypeScript

import assert from "node:assert/strict";
import fs from "node:fs";
import path from "node:path";
import test from "node:test";
test("legacy common ChatGPT Web derived implementation files remain absent", () => {
const removedPaths = [
"open-sse/executors/chatgpt-web/citations.ts",
"open-sse/executors/chatgpt-web/handoff.ts",
"open-sse/executors/chatgpt-web/models.ts",
"open-sse/executors/chatgptWebErrors.ts",
"open-sse/handlers/imageGeneration/providers/chatgptWeb.ts",
"open-sse/services/chatgptImageCache.ts",
"open-sse/services/chatgptTlsClient.ts",
"open-sse/utils/sha3-512.ts",
"src/app/api/v1/chatgpt-web/image/[id]/route.ts",
];
for (const relativePath of removedPaths) {
assert.equal(
fs.existsSync(path.join(process.cwd(), relativePath)),
false,
`${relativePath} must not ship`
);
}
for (const relativePath of [
"open-sse/config/providers/registry/chatgpt-web/index.ts",
"open-sse/executors/chatgpt-web.ts",
"open-sse/utils/chatgptWebBrowserSession.ts",
"open-sse/utils/chatgptWebDeltaV1.ts",
"open-sse/utils/chatgptWebExecutorAdapter.ts",
"open-sse/utils/chatgptWebTransport.ts",
]) {
assert.equal(fs.existsSync(relativePath), true, `${relativePath} must ship`);
}
assert.equal(fs.existsSync("open-sse/executors/chatgpt-web-codex.ts"), true);
assert.equal(fs.existsSync("open-sse/vendor/codex-chatgpt-web/bridge.ts"), true);
});