refactor(gateway-tool): share write metadata parsing

This commit is contained in:
Peter Steinberger
2026-02-16 02:35:59 +00:00
parent ddcc7a1a5d
commit 0c8bb361ca

View File

@@ -138,6 +138,24 @@ export function createGatewayTool(opts?: {
: undefined;
const gatewayOpts = { gatewayUrl, gatewayToken, timeoutMs };
const resolveGatewayWriteMeta = (): {
sessionKey: string | undefined;
note: string | undefined;
restartDelayMs: number | undefined;
} => {
const sessionKey =
typeof params.sessionKey === "string" && params.sessionKey.trim()
? params.sessionKey.trim()
: opts?.agentSessionKey?.trim() || undefined;
const note =
typeof params.note === "string" && params.note.trim() ? params.note.trim() : undefined;
const restartDelayMs =
typeof params.restartDelayMs === "number" && Number.isFinite(params.restartDelayMs)
? Math.floor(params.restartDelayMs)
: undefined;
return { sessionKey, note, restartDelayMs };
};
const resolveConfigWriteParams = async (): Promise<{
raw: string;
baseHash: string;
@@ -154,17 +172,7 @@ export function createGatewayTool(opts?: {
if (!baseHash) {
throw new Error("Missing baseHash from config snapshot.");
}
const sessionKey =
typeof params.sessionKey === "string" && params.sessionKey.trim()
? params.sessionKey.trim()
: opts?.agentSessionKey?.trim() || undefined;
const note =
typeof params.note === "string" && params.note.trim() ? params.note.trim() : undefined;
const restartDelayMs =
typeof params.restartDelayMs === "number" && Number.isFinite(params.restartDelayMs)
? Math.floor(params.restartDelayMs)
: undefined;
return { raw, baseHash, sessionKey, note, restartDelayMs };
return { raw, baseHash, ...resolveGatewayWriteMeta() };
};
if (action === "config.get") {
@@ -200,16 +208,7 @@ export function createGatewayTool(opts?: {
return jsonResult({ ok: true, result });
}
if (action === "update.run") {
const sessionKey =
typeof params.sessionKey === "string" && params.sessionKey.trim()
? params.sessionKey.trim()
: opts?.agentSessionKey?.trim() || undefined;
const note =
typeof params.note === "string" && params.note.trim() ? params.note.trim() : undefined;
const restartDelayMs =
typeof params.restartDelayMs === "number" && Number.isFinite(params.restartDelayMs)
? Math.floor(params.restartDelayMs)
: undefined;
const { sessionKey, note, restartDelayMs } = resolveGatewayWriteMeta();
const updateGatewayOpts = {
...gatewayOpts,
timeoutMs: timeoutMs ?? DEFAULT_UPDATE_TIMEOUT_MS,