Skip to content

Submission

Submissions: durably admitted user inputs and passive entry writes. Conversation.submit admits one in a commit; this module reads, awaits and withdraws them.

import { Conversation, type Ids, Submission } from "@effective-harness/core"
import * as Effect from "effect/Effect"
declare const root: { readonly id: Ids.ConversationId }
const program = Effect.gen(function* () {
const id = yield* Conversation.submit(root.id, { type: "input", content: "hello" })
const settled = yield* Submission.wait(id)
})

Since v0.0.0


A submission that reached done or unanswered.

Signature

type Settled = Extract<SubmissionRecord, { readonly status: "done" | "unanswered" }>

Source

Since v0.0.0

Signature

declare const SubmissionDraft: SubmissionDraft

Source

Since v0.0.0

Waiters for settling submissions; the Harness provides it.

Signature

declare class Submissions

Source

Since v0.0.0

Withdraw a queued submission: it settles unanswered with aborted and leaves the inbox. A placed input is reported as already_placed (abort the conversation to stop its run), and a settled one as settled.

Signature

declare const abort: (
id: SubmissionId
) => Effect.Effect<"aborted" | "already_placed" | "settled", SubmissionNotFound | CommitError, Session>

Source

Since v0.0.0

Signature

declare const isSettled: (record: SubmissionRecord) => record is Settled

Source

Since v0.0.0

The committed record of a submission.

Signature

declare const status: (
id: SubmissionId
) => Effect.Effect<SubmissionRecord, SubmissionNotFound | StorageFailure | SessionPoisoned, Session>

Source

Since v0.0.0

Wait until the submission settles.

Signature

declare const wait: (
id: SubmissionId
) => Effect.Effect<Settled, SubmissionNotFound | StorageFailure | SessionPoisoned, Submissions>

Source

Since v0.0.0