feat(gateway): support per-channel and per-session queue policy overrides

This commit is contained in:
William Valentin
2026-02-16 11:51:26 -08:00
parent f7284a4ef1
commit fbd24d4379
11 changed files with 181 additions and 9 deletions
+16 -1
View File
@@ -85,7 +85,12 @@ export interface GatewayServerConfig {
maxViolations?: number;
violationWindowMs?: number;
};
queue?: Partial<LaneQueueConfig>;
queue?: Partial<LaneQueueConfig> & {
overrides?: {
channels?: Record<string, Partial<LaneQueueConfig>>;
sessions?: Record<string, Partial<LaneQueueConfig>>;
};
};
/** Optional pairing manager for DM pairing code management via gateway. */
pairingManager?: PairingManager;
memoryStore?: MemoryStore;
@@ -199,6 +204,16 @@ export class GatewayServer {
const agentHandlers = createAgentHandlers({
sessionBridge: this.sessionBridge,
laneQueue: this.laneQueue,
resolveQueuePolicy: ({ sessionId, channel }) => {
const sessionPolicy = sessionId
? this.config.queue?.overrides?.sessions?.[sessionId]
: undefined;
if (sessionPolicy) {
return sessionPolicy;
}
return this.config.queue?.overrides?.channels?.[channel];
},
metrics: this.metrics,
sessionManager: this.config.sessionManager,
commandRegistry: this.config.commandRegistry,