250 lines · 8.4 KB · TypeScript
RawDownload
import * as Crypto from "effect/Crypto";import { Atom } from "effect/unstable/reactivity";import { WS_METHODS } from "@t3tools/contracts"; import {  createAtomCommandScheduler,  createEnvironmentCommand,  createEnvironmentRpcCommand,} from "./runtime.ts";import {  type ArchiveThreadInput,  type CreateThreadInput,  type DeleteThreadInput,  type InterruptThreadTurnInput,  type LinkThreadPullRequestInput,  type RespondToThreadApprovalInput,  type RespondToThreadUserInputInput,  type DismissThreadUserInputInput,  type RevertThreadCheckpointInput,  type SetThreadInteractionModeInput,  type SetThreadRuntimeModeInput,  type PinThreadInput,  type ReorderPinnedThreadInput,  type ReorderActiveThreadInput,  type SettleThreadInput,  type SnoozeThreadInput,  type StartThreadTurnInput,  type StopThreadSessionInput,  type UnarchiveThreadInput,  type UnlinkThreadPullRequestInput,  type UnpinThreadInput,  type UnsettleThreadInput,  type UnsnoozeThreadInput,  type UpdateThreadMetadataInput,  archiveThread,  createThread,  deleteThread,  interruptThreadTurn,  linkThreadPullRequest,  respondToThreadApproval,  respondToThreadUserInput,  dismissThreadUserInput,  revertThreadCheckpoint,  setThreadInteractionMode,  setThreadRuntimeMode,  pinThread,  reorderPinnedThread,  reorderActiveThread,  settleThread,  snoozeThread,  startThreadTurn,  stopThreadSession,  unarchiveThread,  unlinkThreadPullRequest,  unpinThread,  unsettleThread,  unsnoozeThread,  updateThreadMetadata,} from "../operations/commands.ts";import type { EnvironmentRegistry } from "../connection/registry.ts"; export type {  ArchiveThreadInput,  CreateThreadInput,  DeleteThreadInput,  InterruptThreadTurnInput,  LinkThreadPullRequestInput,  RespondToThreadApprovalInput,  RespondToThreadUserInputInput,  DismissThreadUserInputInput,  RevertThreadCheckpointInput,  SetThreadInteractionModeInput,  SetThreadRuntimeModeInput,  PinThreadInput,  ReorderPinnedThreadInput,  ReorderActiveThreadInput,  SettleThreadInput,  SnoozeThreadInput,  StartThreadTurnInput,  StopThreadSessionInput,  UnarchiveThreadInput,  UnlinkThreadPullRequestInput,  UnpinThreadInput,  UnsettleThreadInput,  UnsnoozeThreadInput,  UpdateThreadMetadataInput,} from "../operations/commands.ts"; export function createThreadEnvironmentAtoms<R, E>(  runtime: Atom.AtomRuntime<EnvironmentRegistry | Crypto.Crypto | R, E>,) {  const scheduler = createAtomCommandScheduler();  const concurrency = {    mode: "serial" as const,    key: ({ environmentId, input }: { environmentId: string; input: { threadId: string } }) =>      JSON.stringify([environmentId, input.threadId]),  };  return {    create: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:create",      execute: (input: CreateThreadInput) => createThread(input),      scheduler,      concurrency,    }),    delete: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:delete",      execute: (input: DeleteThreadInput) => deleteThread(input),      scheduler,      concurrency,    }),    archive: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:archive",      execute: (input: ArchiveThreadInput) => archiveThread(input),      scheduler,      concurrency,    }),    unarchive: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:unarchive",      execute: (input: UnarchiveThreadInput) => unarchiveThread(input),      scheduler,      concurrency,    }),    settle: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:settle",      execute: (input: SettleThreadInput) => settleThread(input),      scheduler,      concurrency,    }),    unsettle: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:unsettle",      execute: (input: UnsettleThreadInput) => unsettleThread(input),      scheduler,      concurrency,    }),    snooze: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:snooze",      execute: (input: SnoozeThreadInput) => snoozeThread(input),      scheduler,      concurrency,    }),    unsnooze: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:unsnooze",      execute: (input: UnsnoozeThreadInput) => unsnoozeThread(input),      scheduler,      concurrency,    }),    pin: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:pin",      execute: (input: PinThreadInput) => pinThread(input),      scheduler,      concurrency,    }),    unpin: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:unpin",      execute: (input: UnpinThreadInput) => unpinThread(input),      scheduler,      concurrency,    }),    reorderPin: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:reorder-pin",      execute: (input: ReorderPinnedThreadInput) => reorderPinnedThread(input),      scheduler,      concurrency,    }),    reorderActive: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:reorder-active",      execute: (input: ReorderActiveThreadInput) => reorderActiveThread(input),      scheduler,      concurrency,    }),    updateMetadata: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:update-metadata",      execute: (input: UpdateThreadMetadataInput) => updateThreadMetadata(input),      scheduler,      concurrency,    }),    linkPullRequest: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:link-pull-request",      execute: (input: LinkThreadPullRequestInput) => linkThreadPullRequest(input),      scheduler,      concurrency,    }),    unlinkPullRequest: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:unlink-pull-request",      execute: (input: UnlinkThreadPullRequestInput) => unlinkThreadPullRequest(input),      scheduler,      concurrency,    }),    setRuntimeMode: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:set-runtime-mode",      execute: (input: SetThreadRuntimeModeInput) => setThreadRuntimeMode(input),      scheduler,      concurrency,    }),    setInteractionMode: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:set-interaction-mode",      execute: (input: SetThreadInteractionModeInput) => setThreadInteractionMode(input),      scheduler,      concurrency,    }),    startTurn: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:start-turn",      execute: (input: StartThreadTurnInput) => startThreadTurn(input),      scheduler,      concurrency,    }),    interruptTurn: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:interrupt-turn",      execute: (input: InterruptThreadTurnInput) => interruptThreadTurn(input),      scheduler,      concurrency,    }),    respondToApproval: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:respond-to-approval",      execute: (input: RespondToThreadApprovalInput) => respondToThreadApproval(input),      scheduler,      concurrency,    }),    respondToUserInput: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:respond-to-user-input",      execute: (input: RespondToThreadUserInputInput) => respondToThreadUserInput(input),      scheduler,      concurrency,    }),    dismissUserInput: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:dismiss-user-input",      execute: (input: DismissThreadUserInputInput) => dismissThreadUserInput(input),      scheduler,      concurrency,    }),    revertCheckpoint: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:revert-checkpoint",      execute: (input: RevertThreadCheckpointInput) => revertThreadCheckpoint(input),      scheduler,      concurrency,    }),    stopSession: createEnvironmentCommand(runtime, {      label: "environment-data:commands:thread:stop-session",      execute: (input: StopThreadSessionInput) => stopThreadSession(input),      scheduler,      concurrency,    }),    uploadFeedback: createEnvironmentRpcCommand(runtime, {      label: "environment-data:commands:thread:upload-feedback",      tag: WS_METHODS.providerUploadFeedback,      scheduler,      concurrency,    }),  };}