From 759db0d172a58342a0abbc54c02fb486841c8cfa Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Fri, 3 Jul 2026 14:09:58 -0400 Subject: [PATCH] refactor(core): use Predicate.isReadonlyObject for settings guard --- packages/core/src/session/runner/model.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/core/src/session/runner/model.ts b/packages/core/src/session/runner/model.ts index 57806781ca..ffc86a9312 100644 --- a/packages/core/src/session/runner/model.ts +++ b/packages/core/src/session/runner/model.ts @@ -2,7 +2,7 @@ export * as SessionRunnerModel from "./model" import { makeLocationNode } from "../../effect/app-node" import { Model } from "@opencode-ai/llm" -import { Context, Effect, Layer, Schema } from "effect" +import { Context, Effect, Layer, Predicate, Schema } from "effect" import { produce } from "immer" import { Catalog } from "../../catalog" import { Credential } from "../../credential" @@ -186,7 +186,7 @@ const stripApiKey = (body: ModelV2.Info["request"]["body"]) => { const requestSettings = (request: ModelV2.Info["request"]) => { if (!("settings" in request)) return undefined const settings = request.settings - if (!isRecord(settings)) return undefined + if (!Predicate.isReadonlyObject(settings)) return undefined if (Object.keys(settings).length === 0) return undefined return settings } @@ -197,10 +197,6 @@ const settingsString = (settings: ModelV2.Info["api"]["settings"], key: string) return undefined } -function isRecord(value: unknown): value is Readonly> { - return typeof value === "object" && value !== null && !Array.isArray(value) -} - /** Resolves models from the catalog belonging to the current Location runtime. */ export const locationLayer = Layer.effect( Service,