From 87b2a6a16aa27eaaf8cffd826a5769326fdcd897 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Mon, 6 Apr 2026 16:52:39 +0100 Subject: [PATCH] refactor(lint): type tool factories and runtime helpers --- src/agents/bash-tools.exec.ts | 3 +-- src/agents/bash-tools.process.ts | 3 +-- src/gateway/client.ts | 14 +++++++------- src/hooks/bundled/session-memory/transcript.ts | 3 +-- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/agents/bash-tools.exec.ts b/src/agents/bash-tools.exec.ts index 3807ac13919..cff285ded05 100644 --- a/src/agents/bash-tools.exec.ts +++ b/src/agents/bash-tools.exec.ts @@ -1167,8 +1167,7 @@ export function describeExecTool(params?: { agentId?: string; hasCronTool?: bool } export function createExecTool( defaults?: ExecToolDefaults, - // oxlint-disable-next-line typescript/no-explicit-any -): AgentToolWithMeta { +): AgentToolWithMeta { const defaultBackgroundMs = clampWithDefault( defaults?.backgroundMs ?? readEnvInt("PI_BASH_YIELD_MS"), 10_000, diff --git a/src/agents/bash-tools.process.ts b/src/agents/bash-tools.process.ts index cd06c28fcdd..39e2d5a037f 100644 --- a/src/agents/bash-tools.process.ts +++ b/src/agents/bash-tools.process.ts @@ -133,8 +133,7 @@ export function describeProcessTool(params?: { hasCronTool?: boolean }): string export function createProcessTool( defaults?: ProcessToolDefaults, - // oxlint-disable-next-line typescript/no-explicit-any -): AgentToolWithMeta { +): AgentToolWithMeta { if (defaults?.cleanupMs !== undefined) { setJobTtlMs(defaults.cleanupMs); } diff --git a/src/gateway/client.ts b/src/gateway/client.ts index 7f3f5daa340..a42db797ad0 100644 --- a/src/gateway/client.ts +++ b/src/gateway/client.ts @@ -71,6 +71,10 @@ type StoredDeviceAuth = { scopes?: string[]; }; +type FingerprintCheckingClientOptions = Omit & { + checkServerIdentity?: (servername: string, cert: CertMeta) => Error | undefined; +}; + class GatewayClientRequestError extends Error { readonly gatewayCode: string; readonly details?: unknown; @@ -229,15 +233,12 @@ export class GatewayClient { return; } // Allow node screen snapshots and other large responses. - const wsOptions: ClientOptions = { + const wsOptions: FingerprintCheckingClientOptions = { maxPayload: 25 * 1024 * 1024, }; if (url.startsWith("wss://") && this.opts.tlsFingerprint) { wsOptions.rejectUnauthorized = false; - const checkServerIdentity: NonNullable = ( - _host: string, - cert: CertMeta, - ) => { + wsOptions.checkServerIdentity = (_host: string, cert: CertMeta) => { const fingerprintValue = typeof cert === "object" && cert && "fingerprint256" in cert ? ((cert as { fingerprint256?: string }).fingerprint256 ?? "") @@ -257,9 +258,8 @@ export class GatewayClient { } return undefined; }; - wsOptions.checkServerIdentity = checkServerIdentity; } - const ws = new WebSocket(url, wsOptions); + const ws = new WebSocket(url, wsOptions as ClientOptions); this.ws = ws; ws.on("open", () => { diff --git a/src/hooks/bundled/session-memory/transcript.ts b/src/hooks/bundled/session-memory/transcript.ts index 394f8253020..20e835b79c7 100644 --- a/src/hooks/bundled/session-memory/transcript.ts +++ b/src/hooks/bundled/session-memory/transcript.ts @@ -1,9 +1,8 @@ import fs from "node:fs/promises"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; import { hasInterSessionUserProvenance } from "../../../sessions/input-provenance.js"; -function extractTextMessageContent(content: AgentMessage["content"]): string | undefined { +function extractTextMessageContent(content: unknown): string | undefined { if (typeof content === "string") { return content; }