import { CheckpointRef, IsoDateTime, NonNegativeInt, ThreadId, TurnId } from "@t3tools/contracts";import { Schema, ServiceMap } from "effect";import type { Effect, Stream } from "effect"; export const CheckpointBaselineCapturedReceipt = Schema.Struct({ type: Schema.Literal("checkpoint.baseline.captured"), threadId: ThreadId, checkpointTurnCount: NonNegativeInt, checkpointRef: CheckpointRef, createdAt: IsoDateTime,});export type CheckpointBaselineCapturedReceipt = typeof CheckpointBaselineCapturedReceipt.Type; export const CheckpointDiffFinalizedReceipt = Schema.Struct({ type: Schema.Literal("checkpoint.diff.finalized"), threadId: ThreadId, turnId: TurnId, checkpointTurnCount: NonNegativeInt, checkpointRef: CheckpointRef, status: Schema.Literals(["ready", "missing", "error"]), createdAt: IsoDateTime,});export type CheckpointDiffFinalizedReceipt = typeof CheckpointDiffFinalizedReceipt.Type; export const TurnProcessingQuiescedReceipt = Schema.Struct({ type: Schema.Literal("turn.processing.quiesced"), threadId: ThreadId, turnId: TurnId, checkpointTurnCount: NonNegativeInt, createdAt: IsoDateTime,});export type TurnProcessingQuiescedReceipt = typeof TurnProcessingQuiescedReceipt.Type; export const OrchestrationRuntimeReceipt = Schema.Union([ CheckpointBaselineCapturedReceipt, CheckpointDiffFinalizedReceipt, TurnProcessingQuiescedReceipt,]);export type OrchestrationRuntimeReceipt = typeof OrchestrationRuntimeReceipt.Type; export interface RuntimeReceiptBusShape { readonly publish: (receipt: OrchestrationRuntimeReceipt) => Effect.Effect<void>; readonly stream: Stream.Stream<OrchestrationRuntimeReceipt>;} export class RuntimeReceiptBus extends ServiceMap.Service< RuntimeReceiptBus, RuntimeReceiptBusShape>()("t3/orchestration/Services/RuntimeReceiptBus") {}
import { CheckpointRef, IsoDateTime, NonNegativeInt, ThreadId, TurnId } from "@t3tools/contracts";
import { Schema, ServiceMap } from "effect";
import type { Effect, Stream } from "effect";
export const CheckpointBaselineCapturedReceipt = Schema.Struct({
type: Schema.Literal("checkpoint.baseline.captured"),
threadId: ThreadId,
checkpointTurnCount: NonNegativeInt,
checkpointRef: CheckpointRef,
createdAt: IsoDateTime,
});
export type CheckpointBaselineCapturedReceipt = typeof CheckpointBaselineCapturedReceipt.Type;
export const CheckpointDiffFinalizedReceipt = Schema.Struct({
type: Schema.Literal("checkpoint.diff.finalized"),
threadId: ThreadId,
turnId: TurnId,
checkpointTurnCount: NonNegativeInt,
checkpointRef: CheckpointRef,
status: Schema.Literals(["ready", "missing", "error"]),
createdAt: IsoDateTime,
});
export type CheckpointDiffFinalizedReceipt = typeof CheckpointDiffFinalizedReceipt.Type;
export const TurnProcessingQuiescedReceipt = Schema.Struct({
type: Schema.Literal("turn.processing.quiesced"),
threadId: ThreadId,
turnId: TurnId,
checkpointTurnCount: NonNegativeInt,
createdAt: IsoDateTime,
});
export type TurnProcessingQuiescedReceipt = typeof TurnProcessingQuiescedReceipt.Type;
export const OrchestrationRuntimeReceipt = Schema.Union([
CheckpointBaselineCapturedReceipt,
CheckpointDiffFinalizedReceipt,
TurnProcessingQuiescedReceipt,
]);
export type OrchestrationRuntimeReceipt = typeof OrchestrationRuntimeReceipt.Type;
export interface RuntimeReceiptBusShape {
readonly publish: (receipt: OrchestrationRuntimeReceipt) => Effect.Effect<void>;
readonly stream: Stream.Stream<OrchestrationRuntimeReceipt>;
}
export class RuntimeReceiptBus extends ServiceMap.Service<
RuntimeReceiptBus,
RuntimeReceiptBusShape
>()("t3/orchestration/Services/RuntimeReceiptBus") {}