import { ORCHESTRATION_PROTOCOL_QUERY_PARAM, ORCHESTRATION_PROTOCOL_VERSION, type ExecutionEnvironmentDescriptor,} from "@t3tools/contracts";import { ConnectionBlockedError } from "./model.ts";export function orchestrationProtocolCompatibilityError( descriptor: ExecutionEnvironmentDescriptor,): ConnectionBlockedError | null { if (descriptor.orchestrationProtocolVersion === ORCHESTRATION_PROTOCOL_VERSION) { return null; } const hostProtocol = descriptor.orchestrationProtocolVersion; const detail = hostProtocol === undefined ? `Update T3 Code on ${descriptor.label} before reconnecting. This host predates orchestration protocol ${ORCHESTRATION_PROTOCOL_VERSION}.` : `Update T3 Code on ${descriptor.label} and this client before reconnecting. The host uses orchestration protocol ${hostProtocol}, while this client requires ${ORCHESTRATION_PROTOCOL_VERSION}.`; return new ConnectionBlockedError({ reason: "unsupported", detail });}export function appendOrchestrationProtocol(socketUrl: string): string { const url = new URL(socketUrl); url.searchParams.set(ORCHESTRATION_PROTOCOL_QUERY_PARAM, String(ORCHESTRATION_PROTOCOL_VERSION)); return url.toString();}
import {
ORCHESTRATION_PROTOCOL_QUERY_PARAM,
ORCHESTRATION_PROTOCOL_VERSION,
type ExecutionEnvironmentDescriptor,
} from "@t3tools/contracts";
import { ConnectionBlockedError } from "./model.ts";
export function orchestrationProtocolCompatibilityError(
descriptor: ExecutionEnvironmentDescriptor,
): ConnectionBlockedError | null {
if (descriptor.orchestrationProtocolVersion === ORCHESTRATION_PROTOCOL_VERSION) {
return null;
}
const hostProtocol = descriptor.orchestrationProtocolVersion;
const detail =
hostProtocol === undefined
? `Update T3 Code on ${descriptor.label} before reconnecting. This host predates orchestration protocol ${ORCHESTRATION_PROTOCOL_VERSION}.`
: `Update T3 Code on ${descriptor.label} and this client before reconnecting. The host uses orchestration protocol ${hostProtocol}, while this client requires ${ORCHESTRATION_PROTOCOL_VERSION}.`;
return new ConnectionBlockedError({ reason: "unsupported", detail });
}
export function appendOrchestrationProtocol(socketUrl: string): string {
const url = new URL(socketUrl);
url.searchParams.set(ORCHESTRATION_PROTOCOL_QUERY_PARAM, String(ORCHESTRATION_PROTOCOL_VERSION));
return url.toString();
}