Skip to content

effect

@fungi.computer/shiitake


@fungi.computer/shiitake / effect

ShiitakeEffectHost = Readonly<{ agent: ShiitakeEffectAgent; acceptMail: (mail) => Effect.Effect<Accepted, ShiitakeError>>; }>

Effect-native host composition with addressed mail kept off Session.


ModelAcquisitionEffect = Readonly<{ model: Model<Api>>; stream?: MuleStreamFunction; release: Effect.Effect<void, ShiitakeError>>; }>

Effect-native acquired Pi model and finalizer.


ModelSourceEffect = Readonly<{ acquire: (input) => Effect.Effect<ModelAcquisitionEffect, ShiitakeError>>; }>

Effect-native model acquisition owner.


InstructionSourceEffect = Readonly<{ load: (input) => Effect.Effect<InstructionSnapshot, ShiitakeError>>; }>

Effect-native instruction snapshot owner.


ToolSourceEffect = Readonly<{ fileTools?: readonly MuleTool[]; modules: readonly ModuleRegistration[]; sources: readonly CapabilitySource[]; sandbox: Sandbox; }>

Effect-native Mycelium construction inputs.


RuntimeHostEffect = Readonly<{ bind: (input) => Effect.Effect<Readonly<{ commit: <A>>(mutation) => Effect.Effect<A, ShiitakeError>>; requestWake: Effect.Effect<void, ShiitakeError>>; close: Effect.Effect<void, ShiitakeError>>; }>, ShiitakeError>>; }>

Effect-native owner for scheduling the opaque durable reconciler.


ShiitakeEffectOptions = Readonly<{ store: SqliteOwner; model: ModelSourceEffect; instructions: InstructionSourceEffect; tools?: ToolSourceEffect; runtime: RuntimeHostEffect; extensions: ExtensionRosterV1; }>

Validated construction bag for owned Effect composition.


ShiitakeEffectWatch = Readonly<{ snapshot: SessionSnapshot; changes: Stream.Stream<SessionFrame, ShiitakeError>>; close: Effect.Effect<void, ShiitakeError>>; }>

Effect-native race-safe watch result.


ShiitakeEffectCommandHandler = {(input): Effect<Readonly<{ status: "accepted"; commandId: string; }>, ShiitakeError>>; (input): Effect<undefined, ShiitakeError>>; (input): Effect<Readonly<{ sessionId: string; }>, ShiitakeError>>; (input): Effect<Readonly<{ status: "accepted"; commandId: string; }> | Readonly<{ sessionId: string; }> | undefined, ShiitakeError>>; }

Effect-native addressable Session handle.

(input): Effect<Readonly<{ status: "accepted"; commandId: string; }>, ShiitakeError>>

Accept one durable prompt command.

{ delivery: "followUp" | "steer"; requestId: string; type: "prompt"; text: string; } | { commandId: string; onlyIfPending?: boolean; type: "cancel"; }

Effect<Readonly<{ status: "accepted"; commandId: string; }>, ShiitakeError>

(input): Effect<undefined, ShiitakeError>>

Abort the active run or select a complete Session lineage leaf.

{ type: "abort"; } | { type: "branch"; entryId: string; }

Effect<undefined, ShiitakeError>

(input): Effect<Readonly<{ sessionId: string; }>, ShiitakeError>>

Fork one complete entry lineage into a new Session.

"fork" = ...

string = boundedId

Effect<Readonly<{ sessionId: string; }>, ShiitakeError>

(input): Effect<Readonly<{ status: "accepted"; commandId: string; }> | Readonly<{ sessionId: string; }> | undefined, ShiitakeError>>

Execute an already-decoded command union.

{ delivery: "followUp" | "steer"; requestId: string; type: "prompt"; text: string; } | { type: "abort"; } | { commandId: string; onlyIfPending?: boolean; type: "cancel"; } | { type: "branch"; entryId: string; } | { type: "fork"; entryId: string; }

Effect<Readonly<{ status: "accepted"; commandId: string; }> | Readonly<{ sessionId: string; }> | undefined, ShiitakeError>


ShiitakeEffectSendOptions = Readonly<{ delivery?: PromptDelivery; requestId?: string; }>

Delivery intent and an optional private retry key for Effect-native sending.


ShiitakeEffectSession = Readonly<{ command: ShiitakeEffectCommandHandler; abort: Effect.Effect<void, ShiitakeError>>; send: (text, options?) => Effect.Effect<Accepted, ShiitakeError>>; cancel: (input) => Effect.Effect<Accepted, ShiitakeError>>; extension: (extensionId) => ShiitakeEffectSessionExtension; modelPreference: Readonly<{ read: Effect.Effect<ModelPreference | null, ShiitakeError>>; set: (preference) => Effect.Effect<void, ShiitakeError>>; }>; read: (input?) => Effect.Effect<SessionSnapshot, ShiitakeError>>; subscribe: (input) => Stream.Stream<SessionFrame, ShiitakeError>>; watch: (input?) => Effect.Effect<ShiitakeEffectWatch, ShiitakeError>>; }>

Effect-native addressable Session handle.


ShiitakeEffectSessionExtension = Readonly<{ call: (command, input) => Effect.Effect<Json, ShiitakeError>>; }>

Effect-native Session-scope extension commands.


ShiitakeEffectAgentExtensions = Readonly<{ list: Effect.Effect<readonly ExtensionStatusV1[], ShiitakeError>>; resume: (extensionId) => Effect.Effect<ExtensionStatusV1, ShiitakeError>>; call: (extensionId, command, input) => Effect.Effect<Json, ShiitakeError>>; }>

Effect-native Agent-scope extension controls.


ShiitakeEffectAgent = Readonly<{ createSession: (requestId) => Effect.Effect<string, ShiitakeError>>; listSessions: (after?) => Effect.Effect<SessionSummaryPage, ShiitakeError>>; extensions: ShiitakeEffectAgentExtensions; session: (sessionId) => ShiitakeEffectSession; close: Effect.Effect<void, ShiitakeError>>; }>

Effect-native durable harness.


StoredSessionSummary = Readonly<{ createdAt: number; updatedAt: number; title: string; }>

Persisted conversation facts; run status belongs to the Session’s owner.


StoredSessionSummaryRow = StoredSessionSummary & Readonly<{ kind: "session"; sessionId: string; }> | Readonly<{ kind: "unavailable"; sessionId: string; }>

One persisted conversation’s stored facts, or a row that could not be read.


StoredSessionSummaryPage = Readonly<{ sessions: readonly StoredSessionSummaryRow[]; next: string | undefined; }>

One page of stored conversation facts, in stable Session identity order.

make(options): Effect<Readonly<{ createSession: (requestId) => Effect<string, ShiitakeError>>; listSessions: (after?) => Effect<Readonly<{ sessions: readonly SessionSummaryRow[]; next: string | undefined; }>, ShiitakeError>>; extensions: ShiitakeEffectAgentExtensions; session: (sessionId) => ShiitakeEffectSession; close: Effect<void, ShiitakeError>>; }>, ShiitakeError>>

Construct the canonical Effect-native Shiitake scaffold.

ShiitakeEffectOptions

Effect<Readonly<{ createSession: (requestId) => Effect<string, ShiitakeError>; listSessions: (after?) => Effect<Readonly<{ sessions: readonly SessionSummaryRow[]; next: string | undefined; }>, ShiitakeError>; extensions: ShiitakeEffectAgentExtensions; session: (sessionId) => ShiitakeEffectSession; close: Effect<void, ShiitakeError>; }>, ShiitakeError>


openHost(options, mailRoom): Effect<Readonly<{ agent: ShiitakeEffectAgent; acceptMail: (mail) => Effect<Readonly<{ status: "accepted"; commandId: string; }>, ShiitakeError>>; }>, ShiitakeError>>

Open the Effect-native host composition with addressed mail.

ShiitakeEffectOptions

BirdDogEffect

Effect<Readonly<{ agent: ShiitakeEffectAgent; acceptMail: (mail) => Effect<Readonly<{ status: "accepted"; commandId: string; }>, ShiitakeError>; }>, ShiitakeError>


readSessionSummaries(owner, after?): Effect<Readonly<{ sessions: readonly StoredSessionSummaryRow[]; next: string | undefined; }>, ShiitakeError, never>>

Enumerate saved conversations’ stored facts in bounded pages, for readers that hold only the store. Run status is not stored; use the Agent’s listSessions for it. An unreadable Session is its own unavailable row.

SqliteOwner

string

Effect<Readonly<{ sessions: readonly StoredSessionSummaryRow[]; next: string | undefined; }>, ShiitakeError, never>

Re-exports AbortCommand


Re-exports BranchCommand


Re-exports CancelCommand


Re-exports Accepted


Re-exports ForkCommand


Re-exports ForkedSession


Re-exports PromptCommand


Re-exports PromptDelivery


Re-exports ReadOptions


Re-exports SessionCommand


Re-exports SessionCommandHandler


Re-exports SessionFrame


Re-exports SessionMessage


Re-exports SessionProgress


Re-exports SessionSnapshot


Re-exports SessionStatus


Re-exports SubscribeOptions


Re-exports WatchOptions


Re-exports InstructionSnapshot


Re-exports InstructionSource


Re-exports ModelAcquisition


Re-exports ModelSource


Re-exports RuntimeHost


Re-exports RuntimePendingWork


Re-exports SqliteCursor


Re-exports SqliteOwner


Re-exports SqliteValue


Re-exports ShiitakeOptions


Re-exports ToolSource


Re-exports SessionSummary


Re-exports BorrowedCompactionViewV1


Re-exports CompactionHandoffErrorV1


Re-exports CompactionHandoffResultV1


Re-exports CompactionHandoffV1


Re-exports ExtensionCapabilityV1


Re-exports ExtensionGrantV1


Re-exports ExtensionRosterV1


Re-exports ExtensionSlotV1


Re-exports ExtensionStatusV1


Re-exports RosteredExtensionV1


Re-exports ShiitakeError


Re-exports ModelPreference


Re-exports SessionSummaryPage


Re-exports SessionSummaryRow