Skip to content

Commit cb0a752

Browse files
committed
fix: preserve reset session behavior config
1 parent 99d052a commit cb0a752

File tree

2 files changed

+138
-0
lines changed

2 files changed

+138
-0
lines changed

src/gateway/server.sessions.gateway-server-sessions-a.test.ts

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,30 @@ describe("gateway server sessions", () => {
10191019
subagentRole: "orchestrator",
10201020
subagentControlScope: "children",
10211021
elevatedLevel: "on",
1022+
ttsAuto: "always",
1023+
providerOverride: "anthropic",
1024+
modelOverride: "claude-opus-4-1",
1025+
authProfileOverride: "work",
1026+
authProfileOverrideSource: "user",
1027+
authProfileOverrideCompactionCount: 7,
1028+
sendPolicy: "deny",
1029+
queueMode: "interrupt",
1030+
queueDebounceMs: 250,
1031+
queueCap: 9,
1032+
queueDrop: "old",
1033+
groupActivation: "always",
1034+
groupActivationNeedsSystemIntro: true,
1035+
execHost: "gateway",
1036+
execSecurity: "allowlist",
1037+
execAsk: "on-miss",
1038+
execNode: "mac-mini",
1039+
displayName: "Ops Child",
1040+
deliveryContext: {
1041+
channel: "discord",
1042+
to: "discord:child",
1043+
accountId: "acct-1",
1044+
threadId: "thread-1",
1045+
},
10221046
label: "owned child",
10231047
},
10241048
},
@@ -1037,6 +1061,30 @@ describe("gateway server sessions", () => {
10371061
subagentRole?: string;
10381062
subagentControlScope?: string;
10391063
elevatedLevel?: string;
1064+
ttsAuto?: string;
1065+
providerOverride?: string;
1066+
modelOverride?: string;
1067+
authProfileOverride?: string;
1068+
authProfileOverrideSource?: string;
1069+
authProfileOverrideCompactionCount?: number;
1070+
sendPolicy?: string;
1071+
queueMode?: string;
1072+
queueDebounceMs?: number;
1073+
queueCap?: number;
1074+
queueDrop?: string;
1075+
groupActivation?: string;
1076+
groupActivationNeedsSystemIntro?: boolean;
1077+
execHost?: string;
1078+
execSecurity?: string;
1079+
execAsk?: string;
1080+
execNode?: string;
1081+
displayName?: string;
1082+
deliveryContext?: {
1083+
channel?: string;
1084+
to?: string;
1085+
accountId?: string;
1086+
threadId?: string;
1087+
};
10401088
label?: string;
10411089
};
10421090
}>(ws, "sessions.reset", { key: "subagent:child" });
@@ -1050,6 +1098,30 @@ describe("gateway server sessions", () => {
10501098
expect(reset.payload?.entry.subagentRole).toBe("orchestrator");
10511099
expect(reset.payload?.entry.subagentControlScope).toBe("children");
10521100
expect(reset.payload?.entry.elevatedLevel).toBe("on");
1101+
expect(reset.payload?.entry.ttsAuto).toBe("always");
1102+
expect(reset.payload?.entry.providerOverride).toBe("anthropic");
1103+
expect(reset.payload?.entry.modelOverride).toBe("claude-opus-4-1");
1104+
expect(reset.payload?.entry.authProfileOverride).toBe("work");
1105+
expect(reset.payload?.entry.authProfileOverrideSource).toBe("user");
1106+
expect(reset.payload?.entry.authProfileOverrideCompactionCount).toBe(7);
1107+
expect(reset.payload?.entry.sendPolicy).toBe("deny");
1108+
expect(reset.payload?.entry.queueMode).toBe("interrupt");
1109+
expect(reset.payload?.entry.queueDebounceMs).toBe(250);
1110+
expect(reset.payload?.entry.queueCap).toBe(9);
1111+
expect(reset.payload?.entry.queueDrop).toBe("old");
1112+
expect(reset.payload?.entry.groupActivation).toBe("always");
1113+
expect(reset.payload?.entry.groupActivationNeedsSystemIntro).toBe(true);
1114+
expect(reset.payload?.entry.execHost).toBe("gateway");
1115+
expect(reset.payload?.entry.execSecurity).toBe("allowlist");
1116+
expect(reset.payload?.entry.execAsk).toBe("on-miss");
1117+
expect(reset.payload?.entry.execNode).toBe("mac-mini");
1118+
expect(reset.payload?.entry.displayName).toBe("Ops Child");
1119+
expect(reset.payload?.entry.deliveryContext).toEqual({
1120+
channel: "discord",
1121+
to: "discord:child",
1122+
accountId: "acct-1",
1123+
threadId: "thread-1",
1124+
});
10531125
expect(reset.payload?.entry.label).toBe("owned child");
10541126

10551127
const store = JSON.parse(await fs.readFile(storePath, "utf-8")) as Record<
@@ -1063,6 +1135,30 @@ describe("gateway server sessions", () => {
10631135
subagentRole?: string;
10641136
subagentControlScope?: string;
10651137
elevatedLevel?: string;
1138+
ttsAuto?: string;
1139+
providerOverride?: string;
1140+
modelOverride?: string;
1141+
authProfileOverride?: string;
1142+
authProfileOverrideSource?: string;
1143+
authProfileOverrideCompactionCount?: number;
1144+
sendPolicy?: string;
1145+
queueMode?: string;
1146+
queueDebounceMs?: number;
1147+
queueCap?: number;
1148+
queueDrop?: string;
1149+
groupActivation?: string;
1150+
groupActivationNeedsSystemIntro?: boolean;
1151+
execHost?: string;
1152+
execSecurity?: string;
1153+
execAsk?: string;
1154+
execNode?: string;
1155+
displayName?: string;
1156+
deliveryContext?: {
1157+
channel?: string;
1158+
to?: string;
1159+
accountId?: string;
1160+
threadId?: string;
1161+
};
10661162
label?: string;
10671163
}
10681164
>;
@@ -1074,6 +1170,30 @@ describe("gateway server sessions", () => {
10741170
expect(store["agent:main:subagent:child"]?.subagentRole).toBe("orchestrator");
10751171
expect(store["agent:main:subagent:child"]?.subagentControlScope).toBe("children");
10761172
expect(store["agent:main:subagent:child"]?.elevatedLevel).toBe("on");
1173+
expect(store["agent:main:subagent:child"]?.ttsAuto).toBe("always");
1174+
expect(store["agent:main:subagent:child"]?.providerOverride).toBe("anthropic");
1175+
expect(store["agent:main:subagent:child"]?.modelOverride).toBe("claude-opus-4-1");
1176+
expect(store["agent:main:subagent:child"]?.authProfileOverride).toBe("work");
1177+
expect(store["agent:main:subagent:child"]?.authProfileOverrideSource).toBe("user");
1178+
expect(store["agent:main:subagent:child"]?.authProfileOverrideCompactionCount).toBe(7);
1179+
expect(store["agent:main:subagent:child"]?.sendPolicy).toBe("deny");
1180+
expect(store["agent:main:subagent:child"]?.queueMode).toBe("interrupt");
1181+
expect(store["agent:main:subagent:child"]?.queueDebounceMs).toBe(250);
1182+
expect(store["agent:main:subagent:child"]?.queueCap).toBe(9);
1183+
expect(store["agent:main:subagent:child"]?.queueDrop).toBe("old");
1184+
expect(store["agent:main:subagent:child"]?.groupActivation).toBe("always");
1185+
expect(store["agent:main:subagent:child"]?.groupActivationNeedsSystemIntro).toBe(true);
1186+
expect(store["agent:main:subagent:child"]?.execHost).toBe("gateway");
1187+
expect(store["agent:main:subagent:child"]?.execSecurity).toBe("allowlist");
1188+
expect(store["agent:main:subagent:child"]?.execAsk).toBe("on-miss");
1189+
expect(store["agent:main:subagent:child"]?.execNode).toBe("mac-mini");
1190+
expect(store["agent:main:subagent:child"]?.displayName).toBe("Ops Child");
1191+
expect(store["agent:main:subagent:child"]?.deliveryContext).toEqual({
1192+
channel: "discord",
1193+
to: "discord:child",
1194+
accountId: "acct-1",
1195+
threadId: "thread-1",
1196+
});
10771197
expect(store["agent:main:subagent:child"]?.label).toBe("owned child");
10781198

10791199
ws.close();

src/gateway/session-reset-service.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,11 +316,27 @@ export async function performGatewaySessionReset(params: {
316316
verboseLevel: currentEntry?.verboseLevel,
317317
reasoningLevel: currentEntry?.reasoningLevel,
318318
elevatedLevel: currentEntry?.elevatedLevel,
319+
ttsAuto: currentEntry?.ttsAuto,
320+
execHost: currentEntry?.execHost,
321+
execSecurity: currentEntry?.execSecurity,
322+
execAsk: currentEntry?.execAsk,
323+
execNode: currentEntry?.execNode,
319324
responseUsage: currentEntry?.responseUsage,
325+
providerOverride: currentEntry?.providerOverride,
326+
modelOverride: currentEntry?.modelOverride,
327+
authProfileOverride: currentEntry?.authProfileOverride,
328+
authProfileOverrideSource: currentEntry?.authProfileOverrideSource,
329+
authProfileOverrideCompactionCount: currentEntry?.authProfileOverrideCompactionCount,
330+
groupActivation: currentEntry?.groupActivation,
331+
groupActivationNeedsSystemIntro: currentEntry?.groupActivationNeedsSystemIntro,
320332
model: resolvedModel.model,
321333
modelProvider: resolvedModel.provider,
322334
contextTokens: resetEntry?.contextTokens,
323335
sendPolicy: currentEntry?.sendPolicy,
336+
queueMode: currentEntry?.queueMode,
337+
queueDebounceMs: currentEntry?.queueDebounceMs,
338+
queueCap: currentEntry?.queueCap,
339+
queueDrop: currentEntry?.queueDrop,
324340
spawnedBy: currentEntry?.spawnedBy,
325341
spawnedWorkspaceDir: currentEntry?.spawnedWorkspaceDir,
326342
parentSessionKey: currentEntry?.parentSessionKey,
@@ -329,7 +345,9 @@ export async function performGatewaySessionReset(params: {
329345
subagentRole: currentEntry?.subagentRole,
330346
subagentControlScope: currentEntry?.subagentControlScope,
331347
label: currentEntry?.label,
348+
displayName: currentEntry?.displayName,
332349
origin: snapshotSessionOrigin(currentEntry),
350+
deliveryContext: currentEntry?.deliveryContext,
333351
lastChannel: currentEntry?.lastChannel,
334352
lastTo: currentEntry?.lastTo,
335353
lastAccountId: currentEntry?.lastAccountId,

0 commit comments

Comments
 (0)