Skip to content

effect

MuleRetryObservation = { type: "retry_scheduled"; run: MuleIdentity; turn: MuleIdentity; attempt: number; maxAttempts: number; delayMs: number; errorMessage: string; } | { type: "retry_attempt_started"; run: MuleIdentity; turn: MuleIdentity; attempt: number; } | { type: "retry_finished"; run: MuleIdentity; turn: MuleIdentity; attempt: number; success: boolean; finalError?: string; }

One observed Pi-retry event around a single assistant call.


MulePreparedTool = object

A decoded, authorized invocation ready to execute.

readonly execute: () => Stream.Stream<MuleToolExecutionPart, MuleError>>

Run the already-decoded and authorized tool call.

Stream.Stream<MuleToolExecutionPart, MuleError>


MuleTool = object

Pi tool declaration paired with its Effect-native preparation door.

readonly descriptor: Tool

readonly optional replay?: "safe" | "unsafe"

Only read-only or explicitly idempotent tools may opt into crash replay.

readonly optional executionMode?: "parallel" | "sequential"

readonly prepare: (call) => Effect.Effect<MulePreparedTool, MuleToolRejection>>

Decode and authorize one exact Pi tool call before it can execute.

ToolCall

Effect.Effect<MulePreparedTool, MuleToolRejection>


MuleListener = (event) => Effect.Effect<void, MuleError>>

Effect-native listener. Completion is part of run settlement.

MuleEvent

Effect.Effect<void, MuleError>


MuleRunInput = MuleRunSettings & object

Inputs for one complete Pi model/tool loop. Cancel a run by interrupting its fiber; the run then ends with a cancelled run_end.

readonly optional prepareSystemPrompt?: () => Effect.Effect<string, MuleError>>

Rebuild the model system prompt immediately before each provider request.

Effect.Effect<string, MuleError>

readonly optional tools?: readonly MuleTool[]

readonly optional resolveApiKey?: (provider) => Effect.Effect<string | undefined, MuleError>>

Resolve a fresh provider credential immediately before each Pi call.

string

Effect.Effect<string | undefined, MuleError>

readonly optional getSteeringMessages?: () => Effect.Effect<readonly Message[], MuleError>>

Pull messages that should steer the active run at Pi’s safe point.

Effect.Effect<readonly Message[], MuleError>

readonly optional getFollowUpMessages?: () => Effect.Effect<readonly Message[], MuleError>>

Pull messages queued until the run would otherwise finish.

Effect.Effect<readonly Message[], MuleError>

readonly optional shouldStopAfterTurn?: (turn) => Effect.Effect<boolean, MuleError>>

Request a graceful stop after the current Pi turn has fully settled.

MuleCompletedTurn

Effect.Effect<boolean, MuleError>

readonly optional onRetry?: (event) => Effect.Effect<void, MuleError>>

Effect-native observation sink for Pi’s retry policy (retry), one call per scheduled or finished retry.

MuleRetryObservation

Effect.Effect<void, MuleError>


MuleEffect = object

Canonical Effect-native Mule interface.

readonly run: (input, listener?) => Effect.Effect<MuleRunOutcome, MuleError>>

Run one complete Pi model/tool loop.

MuleRunInput

MuleListener

Effect.Effect<MuleRunOutcome, MuleError>

const piCodingAgentRetryDefaults: RetryPolicy

Pi coding-agent’s retry defaults (settings-manager.js getRetrySettings(), @earendil-works/pi-ai 0.99.0, the version pinned in the lockfile). Pi-ai’s own RetryPolicy has no default — an undefined policy means no retry — so a host that wants Pi coding-agent’s numbers passes this explicitly.


const piHttpIdleTimeoutMs: 300000 = 300_000

Pi coding-agent’s default stream idle timeout (DEFAULT_HTTP_IDLE_TIMEOUT_MS, settings-manager.js). A host that wants Pi’s number for modelStreamIdleTimeoutMs passes this explicitly.


const muleEffect: MuleEffect

Canonical Effect-native Mule value.

isContextOverflow(message, contextWindow?): boolean

Apply Pi’s maintained context-overflow semantics to an exact Pi message.

AssistantMessage

number

boolean


run(input, listener?): Effect<MuleRunOutcome, MuleError>>

Run Pi’s model/tool loop inside Effect without changing Pi’s values.

MuleRunInput

MuleListener = noListener

Effect<MuleRunOutcome, MuleError>

Re-exports MuleCompletedTurn


Re-exports MuleResume


Re-exports MuleToolCheckpoint


Re-exports MuleError


Re-exports MuleEvent


Re-exports MuleIdentity


Re-exports MuleIdentityKind


Re-exports MuleRunOutcome


Re-exports MuleRunSettings


Re-exports MuleStreamFunction


Re-exports MuleToolExecutionPart


Re-exports MuleToolRejection


Re-exports MuleToolResult