

























@@ -205,6 +205,18 @@ function requireRecord(value: unknown, label: string): Record<string, unknown> {
205205return value;
206206}
207207208+function getLastMockFirstArg(
209+mock: { mock: { calls: ReadonlyArray<ReadonlyArray<unknown>> } },
210+label: string,
211+): unknown {
212+const calls = mock.mock.calls;
213+const call = calls[calls.length - 1];
214+if (!call) {
215+throw new Error(`Expected ${label} mock to have at least one call`);
216+}
217+return call[0];
218+}
219+208220function readRecordField(record: Record<string, unknown>, key: string, label: string) {
209221const value = record[key];
210222if (!isRecord(value)) {
@@ -214,20 +226,27 @@ function readRecordField(record: Record<string, unknown>, key: string, label: st
214226}
215227216228function getLastPluginLoadOptions(): Record<string, unknown> {
217-return requireRecord(loadOpenClawPlugins.mock.calls.at(-1)?.[0], "plugin load options");
229+return requireRecord(
230+getLastMockFirstArg(loadOpenClawPlugins, "plugin load"),
231+"plugin load options",
232+);
218233}
219234220235function getLastPluginLoadOption(key: string) {
221236return getLastPluginLoadOptions()[key];
222237}
223238224239function getLastDispatchedContext(): GatewayRequestContext | undefined {
225-const call = handleGatewayRequest.mock.calls.at(-1)?.[0];
240+const call = getLastMockFirstArg(handleGatewayRequest, "gateway request") as
241+| HandleGatewayRequestOptions
242+| undefined;
226243return call?.context;
227244}
228245229246function getLastDispatchedParams(): Record<string, unknown> | undefined {
230-const call = handleGatewayRequest.mock.calls.at(-1)?.[0];
247+const call = getLastMockFirstArg(handleGatewayRequest, "gateway request") as
248+| HandleGatewayRequestOptions
249+| undefined;
231250return call?.req?.params as Record<string, unknown> | undefined;
232251}
233252@@ -236,13 +255,17 @@ function getRequiredLastDispatchedParams(): Record<string, unknown> {
236255}
237256238257function getLastDispatchedClientScopes(): string[] {
239-const call = handleGatewayRequest.mock.calls.at(-1)?.[0];
258+const call = getLastMockFirstArg(handleGatewayRequest, "gateway request") as
259+| HandleGatewayRequestOptions
260+| undefined;
240261const scopes = call?.client?.connect?.scopes;
241262return Array.isArray(scopes) ? scopes : [];
242263}
243264244265function getLastDispatchedClientInternal(): Record<string, unknown> {
245-const call = handleGatewayRequest.mock.calls.at(-1)?.[0];
266+const call = getLastMockFirstArg(handleGatewayRequest, "gateway request") as
267+| HandleGatewayRequestOptions
268+| undefined;
246269return (call?.client?.internal ?? {}) as Record<string, unknown>;
247270}
248271@@ -252,7 +275,7 @@ function getLastPluginLoadLogger(): {
252275error: (message: string) => void;
253276debug?: (message: string) => void;
254277} {
255-const call = loadOpenClawPlugins.mock.calls.at(-1)?.[0] as
278+const call = getLastMockFirstArg(loadOpenClawPlugins, "plugin load") as
256279| {
257280logger?: {
258281info: (message: string) => void;
@@ -292,7 +315,7 @@ async function createSubagentRuntime(
292315coreGatewayHandlers: {},
293316baseMethods: [],
294317});
295-const call = loadOpenClawPlugins.mock.calls.at(-1)?.[0] as
318+const call = getLastMockFirstArg(loadOpenClawPlugins, "plugin load") as
296319| { runtimeOptions?: { allowGatewaySubagentBinding?: boolean } }
297320| undefined;
298321if (call?.runtimeOptions?.allowGatewaySubagentBinding !== true) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。