mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-14 19:22:32 +03:00
Remove the Puter provider (id `puter`, alias `pu`) entirely, at the request of Puter's owner, Nariman Jelveh: - registry entry (open-sse/config/providers/registry/puter/) and PuterExecutor (open-sse/executors/puter.ts), with their registrations - API-key preset card (gateways.ts), provider icon and public SVG asset - 33 free-model catalog entries (pool `puter`) - authHint i18n key across all 43 UI locales - credential-requirement frozen-list entry and related comments - docs: ARCHITECTURE, CODEBASE_DOCUMENTATION, FREE_TIERS (removal note), PROVIDER_REFERENCE regenerated (337 providers), translated doc mirrors, llm.txt + its 42 i18n mirrors, README/AGENTS/package.json counts (338→337 providers, 144→145 migrations) and the 5 canonical SVGs - migration 152 cleans up stored puter connections/keys/custom models; historical usage records are preserved (same principle as migration 151) - regression guard: tests/unit/puter-provider-removed.test.ts; puter fixtures in shared tests swapped for neutral providers; translate-path golden snapshot regenerated Historical CHANGELOG mentions are intentionally preserved; the removal carries its own CHANGELOG entry. Co-authored-by: backryun <bakryun0718@proton.me>
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
/**
|
|
* SessionFactory — Creates initialized Session instances
|
|
*
|
|
* For zero-auth providers (Pollinations): just assigns a fingerprint.
|
|
* For cookie-based providers (ChatGPT Web, DeepSeek Web): would launch
|
|
* headless Playwright, solve Turnstile, and extract cookies.
|
|
*
|
|
* Currently only zero-auth is implemented. Cookie-based provider support
|
|
* is planned for Phase 3.
|
|
*/
|
|
|
|
import { FingerprintRotator } from "./fingerprintRotator.ts";
|
|
import { Session } from "./session.ts";
|
|
import type { PoolConfig } from "./types.ts";
|
|
|
|
export class SessionFactory {
|
|
private rotator = new FingerprintRotator();
|
|
|
|
constructor(private config: PoolConfig) {}
|
|
|
|
/**
|
|
* Create a new session with the next available fingerprint.
|
|
* For zero-auth providers, this is a lightweight operation
|
|
* (just picks a fingerprint). For cookie-based providers this
|
|
* would involve Playwright browser automation.
|
|
*/
|
|
createSession(): Session {
|
|
// Round-robin so each session in a warm pool gets a distinct fingerprint
|
|
// (a pool of look-alike sessions defeats the purpose). The rotator still
|
|
// exposes random() for callers that want unpredictability over time.
|
|
const fingerprint = this.rotator.next();
|
|
return new Session(
|
|
fingerprint,
|
|
this.config.cooldownBase,
|
|
this.config.cooldownMax,
|
|
this.config.cooldownJitter
|
|
);
|
|
}
|
|
|
|
/** Reset the fingerprint rotator (e.g., after config change) */
|
|
resetRotator(): void {
|
|
this.rotator.reset();
|
|
}
|
|
|
|
/** Number of available fingerprint profiles */
|
|
get profileCount(): number {
|
|
return this.rotator.count;
|
|
}
|
|
|
|
/** Build headers from session fingerprint */
|
|
buildHeaders(session: Session, extra?: Record<string, string>): Record<string, string> {
|
|
return session.buildHeaders(extra);
|
|
}
|
|
}
|