From 2ceceb8c25a45075f4e72b66fcafe28ecab1f728 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 4 Jan 2026 21:56:16 +0100 Subject: [PATCH] style(ts): normalize type-only imports --- src/agents/clawdbot-tools.ts | 4 +-- src/agents/model-auth.ts | 2 +- src/agents/pi-embedded-runner.ts | 6 +---- src/agents/pi-tools.ts | 2 +- src/agents/tools/image-tool.ts | 42 ++++++++++++++++++++++++++------ src/cli/models-cli.ts | 6 ++++- 6 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/agents/clawdbot-tools.ts b/src/agents/clawdbot-tools.ts index 2884e657f..cd655ea36 100644 --- a/src/agents/clawdbot-tools.ts +++ b/src/agents/clawdbot-tools.ts @@ -1,16 +1,16 @@ +import type { ClawdbotConfig } from "../config/config.js"; import { createBrowserTool } from "./tools/browser-tool.js"; import { createCanvasTool } from "./tools/canvas-tool.js"; import type { AnyAgentTool } from "./tools/common.js"; import { createCronTool } from "./tools/cron-tool.js"; import { createDiscordTool } from "./tools/discord-tool.js"; import { createGatewayTool } from "./tools/gateway-tool.js"; +import { createImageTool } from "./tools/image-tool.js"; import { createNodesTool } from "./tools/nodes-tool.js"; import { createSessionsHistoryTool } from "./tools/sessions-history-tool.js"; import { createSessionsListTool } from "./tools/sessions-list-tool.js"; import { createSessionsSendTool } from "./tools/sessions-send-tool.js"; import { createSlackTool } from "./tools/slack-tool.js"; -import { createImageTool } from "./tools/image-tool.js"; -import type { ClawdbotConfig } from "../config/config.js"; export function createClawdbotTools(options?: { browserControlUrl?: string; diff --git a/src/agents/model-auth.ts b/src/agents/model-auth.ts index 9bb1d3ad5..85ce74c61 100644 --- a/src/agents/model-auth.ts +++ b/src/agents/model-auth.ts @@ -10,7 +10,7 @@ import { type OAuthCredentials, type OAuthProvider, } from "@mariozechner/pi-ai"; -import { discoverAuthStorage } from "@mariozechner/pi-coding-agent"; +import type { discoverAuthStorage } from "@mariozechner/pi-coding-agent"; import { CONFIG_DIR, resolveUserPath } from "../utils.js"; diff --git a/src/agents/pi-embedded-runner.ts b/src/agents/pi-embedded-runner.ts index 73adafc50..9184cbb86 100644 --- a/src/agents/pi-embedded-runner.ts +++ b/src/agents/pi-embedded-runner.ts @@ -2,11 +2,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import type { AgentMessage, ThinkingLevel } from "@mariozechner/pi-agent-core"; -import { - type Api, - type AssistantMessage, - type Model, -} from "@mariozechner/pi-ai"; +import type { Api, AssistantMessage, Model } from "@mariozechner/pi-ai"; import { buildSystemPrompt, createAgentSession, diff --git a/src/agents/pi-tools.ts b/src/agents/pi-tools.ts index 847a101bf..e0db78b9f 100644 --- a/src/agents/pi-tools.ts +++ b/src/agents/pi-tools.ts @@ -8,6 +8,7 @@ import { } from "@mariozechner/pi-coding-agent"; import { Type } from "@sinclair/typebox"; +import type { ClawdbotConfig } from "../config/config.js"; import { detectMime } from "../media/mime.js"; import { startWebLoginWithQr, waitForWebLogin } from "../web/login-qr.js"; import { @@ -17,7 +18,6 @@ import { type ProcessToolDefaults, } from "./bash-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; -import type { ClawdbotConfig } from "../config/config.js"; import type { SandboxContext, SandboxToolPolicy } from "./sandbox.js"; import { assertSandboxPath } from "./sandbox-paths.js"; import { sanitizeToolResultImages } from "./tool-images.js"; diff --git a/src/agents/tools/image-tool.ts b/src/agents/tools/image-tool.ts index 7b79ee125..0f3ebd500 100644 --- a/src/agents/tools/image-tool.ts +++ b/src/agents/tools/image-tool.ts @@ -1,15 +1,24 @@ -import { type Api, type AssistantMessage, complete, type Context, type Model } from "@mariozechner/pi-ai"; -import { discoverAuthStorage, discoverModels } from "@mariozechner/pi-coding-agent"; +import { + type Api, + type AssistantMessage, + type Context, + complete, + type Model, +} from "@mariozechner/pi-ai"; +import { + discoverAuthStorage, + discoverModels, +} from "@mariozechner/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ClawdbotConfig } from "../../config/config.js"; +import { resolveUserPath } from "../../utils.js"; import { loadWebMedia } from "../../web/media.js"; import { resolveClawdbotAgentDir } from "../agent-paths.js"; import { getApiKeyForModel } from "../model-auth.js"; import { runWithImageModelFallback } from "../model-fallback.js"; import { ensureClawdbotModelsJson } from "../models-config.js"; import { extractAssistantText } from "../pi-embedded-utils.js"; -import { resolveUserPath } from "../../utils.js"; import type { AnyAgentTool } from "./common.js"; const DEFAULT_PROMPT = "Describe the image."; @@ -20,18 +29,33 @@ function ensureImageToolConfigured(cfg?: ClawdbotConfig): boolean { return Boolean(primary || fallbacks.length > 0); } -function pickMaxBytes(cfg?: ClawdbotConfig, maxBytesMb?: number): number | undefined { - if (typeof maxBytesMb === "number" && Number.isFinite(maxBytesMb) && maxBytesMb > 0) { +function pickMaxBytes( + cfg?: ClawdbotConfig, + maxBytesMb?: number, +): number | undefined { + if ( + typeof maxBytesMb === "number" && + Number.isFinite(maxBytesMb) && + maxBytesMb > 0 + ) { return Math.floor(maxBytesMb * 1024 * 1024); } const configured = cfg?.agent?.mediaMaxMb; - if (typeof configured === "number" && Number.isFinite(configured) && configured > 0) { + if ( + typeof configured === "number" && + Number.isFinite(configured) && + configured > 0 + ) { return Math.floor(configured * 1024 * 1024); } return undefined; } -function buildImageContext(prompt: string, base64: string, mimeType: string): Context { +function buildImageContext( + prompt: string, + base64: string, + mimeType: string, +): Context { return { messages: [ { @@ -67,7 +91,9 @@ async function runImagePrompt(params: { throw new Error(`Unknown model: ${provider}/${modelId}`); } if (!model.input?.includes("image")) { - throw new Error(`Model does not support images: ${provider}/${modelId}`); + throw new Error( + `Model does not support images: ${provider}/${modelId}`, + ); } const apiKey = await getApiKeyForModel(model, authStorage); authStorage.setRuntimeApiKey(model.provider, apiKey); diff --git a/src/cli/models-cli.ts b/src/cli/models-cli.ts index 4d696d159..cc6adf9c3 100644 --- a/src/cli/models-cli.ts +++ b/src/cli/models-cli.ts @@ -249,7 +249,11 @@ export function registerModelsCli(program: Command) { .option("--yes", "Accept defaults without prompting", false) .option("--no-input", "Disable prompts (use defaults)") .option("--set-default", "Set agent.model to the first selection", false) - .option("--set-image", "Set agent.imageModel to the first image selection", false) + .option( + "--set-image", + "Set agent.imageModel to the first image selection", + false, + ) .option("--json", "Output JSON", false) .action(async (opts) => { try {