feat(gateway): support per-channel and per-session queue policy overrides
This commit is contained in:
+16
-1
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user