























@@ -91,11 +91,13 @@ type GatewayRestartIntentPayload = {
9191kind: "gateway-restart";
9292pid: number;
9393createdAt: number;
94+reason?: string;
9495force?: boolean;
9596waitMs?: number;
9697};
97989899export type GatewayRestartIntent = {
100+reason?: string;
99101force?: boolean;
100102waitMs?: number;
101103};
@@ -125,6 +127,7 @@ export function writeGatewayRestartIntentSync(opts: {
125127env?: NodeJS.ProcessEnv;
126128targetPid?: number;
127129intent?: GatewayRestartIntent;
130+reason?: string;
128131}): boolean {
129132const targetPid = normalizeRestartIntentPid(opts.targetPid);
130133if (targetPid === null) {
@@ -133,10 +136,12 @@ export function writeGatewayRestartIntentSync(opts: {
133136const env = opts.env ?? process.env;
134137try {
135138const intentPath = resolveGatewayRestartIntentPath(env);
139+const reason = normalizeRestartIntentReason(opts.reason ?? opts.intent?.reason);
136140const payload: GatewayRestartIntentPayload = {
137141kind: "gateway-restart",
138142pid: targetPid,
139143createdAt: Date.now(),
144+ ...(reason ? { reason } : {}),
140145 ...(opts.intent?.force ? { force: true } : {}),
141146 ...(typeof opts.intent?.waitMs === "number" &&
142147Number.isFinite(opts.intent.waitMs) &&
@@ -170,14 +175,17 @@ function parseGatewayRestartIntent(raw: string): GatewayRestartIntentPayload | n
170175Number.isFinite(parsed.pid) &&
171176typeof parsed.createdAt === "number" &&
172177Number.isFinite(parsed.createdAt) &&
178+(parsed.reason === undefined || typeof parsed.reason === "string") &&
173179(parsed.force === undefined || typeof parsed.force === "boolean") &&
174180(parsed.waitMs === undefined ||
175181(typeof parsed.waitMs === "number" && Number.isFinite(parsed.waitMs) && parsed.waitMs >= 0))
176182) {
183+const reason = normalizeRestartIntentReason(parsed.reason);
177184return {
178185kind: "gateway-restart",
179186pid: parsed.pid,
180187createdAt: parsed.createdAt,
188+ ...(reason ? { reason } : {}),
181189 ...(parsed.force ? { force: true } : {}),
182190 ...(typeof parsed.waitMs === "number" ? { waitMs: Math.floor(parsed.waitMs) } : {}),
183191};
@@ -188,6 +196,11 @@ function parseGatewayRestartIntent(raw: string): GatewayRestartIntentPayload | n
188196return null;
189197}
190198199+function normalizeRestartIntentReason(reason: string | undefined): string | undefined {
200+const normalized = reason?.trim();
201+return normalized ? normalized.slice(0, 200) : undefined;
202+}
203+191204export function consumeGatewayRestartIntentPayloadSync(
192205env: NodeJS.ProcessEnv = process.env,
193206now = Date.now(),
@@ -217,6 +230,7 @@ export function consumeGatewayRestartIntentPayloadSync(
217230return null;
218231}
219232return {
233+ ...(payload.reason ? { reason: payload.reason } : {}),
220234 ...(payload.force ? { force: true } : {}),
221235 ...(typeof payload.waitMs === "number" ? { waitMs: payload.waitMs } : {}),
222236};
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。