From 0dbe087ef8400ea08286eaf94bf0d0c363ca866f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 14 Feb 2026 14:47:37 +0000 Subject: [PATCH] refactor(pi-embedded-runner): dedupe attempt params --- src/agents/pi-embedded-runner/run/types.ts | 91 +++------------------- 1 file changed, 9 insertions(+), 82 deletions(-) diff --git a/src/agents/pi-embedded-runner/run/types.ts b/src/agents/pi-embedded-runner/run/types.ts index 5201492b12..a8f95a6883 100644 --- a/src/agents/pi-embedded-runner/run/types.ts +++ b/src/agents/pi-embedded-runner/run/types.ts @@ -1,97 +1,24 @@ import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { Api, AssistantMessage, ImageContent, Model } from "@mariozechner/pi-ai"; -import type { ReasoningLevel, ThinkLevel, VerboseLevel } from "../../../auto-reply/thinking.js"; -import type { AgentStreamParams } from "../../../commands/agent/types.js"; -import type { OpenClawConfig } from "../../../config/config.js"; +import type { Api, AssistantMessage, Model } from "@mariozechner/pi-ai"; +import type { ThinkLevel } from "../../../auto-reply/thinking.js"; import type { SessionSystemPromptReport } from "../../../config/sessions/types.js"; -import type { InputProvenance } from "../../../sessions/input-provenance.js"; -import type { ExecElevatedDefaults, ExecToolDefaults } from "../../bash-tools.js"; import type { MessagingToolSend } from "../../pi-embedded-messaging.js"; -import type { BlockReplyChunking, ToolResultFormat } from "../../pi-embedded-subscribe.js"; import type { AuthStorage, ModelRegistry } from "../../pi-model-discovery.js"; -import type { SkillSnapshot } from "../../skills.js"; import type { NormalizedUsage } from "../../usage.js"; -import type { ClientToolDefinition } from "./params.js"; +import type { RunEmbeddedPiAgentParams } from "./params.js"; -export type EmbeddedRunAttemptParams = { - sessionId: string; - sessionKey?: string; - agentId?: string; - messageChannel?: string; - messageProvider?: string; - agentAccountId?: string; - messageTo?: string; - messageThreadId?: string | number; - /** Group id for channel-level tool policy resolution. */ - groupId?: string | null; - /** Group channel label (e.g. #general) for channel-level tool policy resolution. */ - groupChannel?: string | null; - /** Group space label (e.g. guild/team id) for channel-level tool policy resolution. */ - groupSpace?: string | null; - /** Parent session key for subagent policy inheritance. */ - spawnedBy?: string | null; - senderId?: string | null; - senderName?: string | null; - senderUsername?: string | null; - senderE164?: string | null; - /** Whether the sender is an owner (required for owner-only tools). */ - senderIsOwner?: boolean; - currentChannelId?: string; - currentThreadTs?: string; - replyToMode?: "off" | "first" | "all"; - hasRepliedRef?: { value: boolean }; - sessionFile: string; - workspaceDir: string; - agentDir?: string; - config?: OpenClawConfig; - skillsSnapshot?: SkillSnapshot; - prompt: string; - images?: ImageContent[]; - /** Optional client-provided tools (OpenResponses hosted tools). */ - clientTools?: ClientToolDefinition[]; - /** Disable built-in tools for this run (LLM-only mode). */ - disableTools?: boolean; +type EmbeddedRunAttemptBase = Omit< + RunEmbeddedPiAgentParams, + "provider" | "model" | "authProfileId" | "authProfileIdSource" | "thinkLevel" | "lane" | "enqueue" +>; + +export type EmbeddedRunAttemptParams = EmbeddedRunAttemptBase & { provider: string; modelId: string; model: Model; authStorage: AuthStorage; modelRegistry: ModelRegistry; thinkLevel: ThinkLevel; - verboseLevel?: VerboseLevel; - reasoningLevel?: ReasoningLevel; - toolResultFormat?: ToolResultFormat; - execOverrides?: Pick; - bashElevated?: ExecElevatedDefaults; - timeoutMs: number; - runId: string; - abortSignal?: AbortSignal; - shouldEmitToolResult?: () => boolean; - shouldEmitToolOutput?: () => boolean; - onPartialReply?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise; - onAssistantMessageStart?: () => void | Promise; - onBlockReply?: (payload: { - text?: string; - mediaUrls?: string[]; - audioAsVoice?: boolean; - replyToId?: string; - replyToTag?: boolean; - replyToCurrent?: boolean; - }) => void | Promise; - onBlockReplyFlush?: () => void | Promise; - blockReplyBreak?: "text_end" | "message_end"; - blockReplyChunking?: BlockReplyChunking; - onReasoningStream?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise; - onToolResult?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise; - onAgentEvent?: (evt: { stream: string; data: Record }) => void; - /** Require explicit message tool targets (no implicit last-route sends). */ - requireExplicitMessageTarget?: boolean; - /** If true, omit the message tool from the tool list. */ - disableMessageTool?: boolean; - extraSystemPrompt?: string; - inputProvenance?: InputProvenance; - streamParams?: AgentStreamParams; - ownerNumbers?: string[]; - enforceFinalTag?: boolean; }; export type EmbeddedRunAttemptResult = {