Skip to content

@codesoul-co/hypha-core / modules/runtime/session-command-worker

模块用法

用于执行该边界的运行时行为。Session command worker 模块公开 1 类、3 接口、3 类型。

从包入口导入

ts
import {
  DurableSessionCommandWorker,
} from '@codesoul-co/hypha-core';

import type {
  DurableSessionCommandWorkerOptions,
  SessionCommandHandlerContext,
  SessionCommandWorkerResult,
  SessionCommandHandler,
  SessionCommandHandlerResult,
  SessionCommandWorkerDisposition,
} from '@codesoul-co/hypha-core';

使用要点

  • 6 个类型/接口用于应用代码、Adapter 或测试中的静态契约;请使用 import type,运行时不应依赖它们。
  • 1 个类提供可实例化的运行时实现;构造参数与公开方法在各自条目中完整列出。

公共导出

Symbol种类签名说明
DurableSessionCommandWorkernew DurableSessionCommandWorker(options: DurableSessionCommandWorkerOptions): DurableSessionCommandWorkerClaims and resolves one durable Session command without owning a polling loop. Command handlers must explicitly classify expected retry and failure outcomes.
DurableSessionCommandWorkerOptions接口interface DurableSessionCommandWorkerOptionsDurable Session Command Worker Options 接口,共包含 11 个公开字段或方法。
SessionCommandHandlerContext接口interface SessionCommandHandlerContextSession Command Handler Context 接口,共包含 4 个公开字段或方法。
SessionCommandWorkerResult接口interface SessionCommandWorkerResultSession Command Worker Result 接口,共包含 5 个公开字段或方法。
SessionCommandHandler类型type SessionCommandHandler = (context: Readonly<SessionCommandHandlerContext>) => Promise<SessionCommandHandlerResult>Session Command Handler 公共类型别名;完整类型表达式见声明。
SessionCommandHandlerResult类型type SessionCommandHandlerResult = { disposition: 'applied'; resultRunId?: string; resultEventIds?: string[]; } | { disposition: 'retry'; availableAt?: string; } | { disposition: 'failed'; rejectionCode: string; deadLetter?: boolean; }Session Command Handler Result 公共类型别名;完整类型表达式见声明。
SessionCommandWorkerDisposition类型type SessionCommandWorkerDisposition = 'idle' | 'applied' | 'retry_scheduled' | 'failed' | 'dead_lettered' | 'lease_lost' | 'aborted'Session Command Worker Disposition 公共类型别名;完整类型表达式见声明。

DurableSessionCommandWorker

Claims and resolves one durable Session command without owning a polling loop. Command handlers must explicitly classify expected retry and failure outcomes.

声明

text
export declare class DurableSessionCommandWorker {
    constructor(options: DurableSessionCommandWorkerOptions);
    processNext(scope?: SessionQueueScope, signal?: AbortSignal): Promise<SessionCommandWorkerResult>;
}

公开成员

成员种类签名说明
constructor构造函数(options: DurableSessionCommandWorkerOptions): DurableSessionCommandWorker创建该类的实例。
processNext方法processNext(scope?: SessionQueueScope, signal?: AbortSignal): Promise<SessionCommandWorkerResult>公开方法;参数与返回类型以签名列为准。

DurableSessionCommandWorkerOptions

Durable Session Command Worker Options 接口,共包含 11 个公开字段或方法。

声明

text
export interface DurableSessionCommandWorkerOptions {
    queue: SessionQueue;
    workerId: string;
    leaseMs: number;
    handlers: Partial<Record<SessionCommandType, SessionCommandHandler>>;
    now?: () => string;
    renewalIntervalMs?: number;
    maxHandlerDurationMs?: number;
    wait?: (delayMs: number, signal: AbortSignal) => Promise<void>;
    onLeaseRenewalFailure?: (error: unknown, claim: Readonly<SessionCommandClaim>) => void;
    operationalTelemetry?: RuntimeOperationalTelemetry;
    monotonicNow?: () => number;
}

契约成员

成员种类签名说明
handlers属性handlers: Partial<Record<"user_input" | "cancel" | "signal" | "start_run" | "resume" | "transition" | "continue_react" | "close_session", SessionCommandHandler>>公开属性;类型、只读和可选状态以签名列为准。
leaseMs属性leaseMs: number公开属性;类型、只读和可选状态以签名列为准。
maxHandlerDurationMs属性maxHandlerDurationMs?: number公开属性;类型、只读和可选状态以签名列为准。
monotonicNow方法monotonicNow?(): number公开方法;参数与返回类型以签名列为准。
now方法now?(): string公开方法;参数与返回类型以签名列为准。
onLeaseRenewalFailure方法onLeaseRenewalFailure?(error: unknown, claim: Readonly<SessionCommandClaim>): void公开方法;参数与返回类型以签名列为准。
operationalTelemetry属性operationalTelemetry?: RuntimeOperationalTelemetry公开属性;类型、只读和可选状态以签名列为准。
queue属性queue: SessionQueue公开属性;类型、只读和可选状态以签名列为准。
renewalIntervalMs属性renewalIntervalMs?: number公开属性;类型、只读和可选状态以签名列为准。
wait方法wait?(delayMs: number, signal: AbortSignal): Promise<void>公开方法;参数与返回类型以签名列为准。
workerId属性workerId: string公开属性;类型、只读和可选状态以签名列为准。

SessionCommandHandlerContext

Session Command Handler Context 接口,共包含 4 个公开字段或方法。

声明

text
export interface SessionCommandHandlerContext {
    command: Readonly<SessionCommandRecord>;
    signal: AbortSignal;
    claimToken: string;
    leaseEpoch: number;
}

契约成员

成员种类签名说明
claimToken属性claimToken: string公开属性;类型、只读和可选状态以签名列为准。
command属性command: Readonly<SessionCommandRecord>公开属性;类型、只读和可选状态以签名列为准。
leaseEpoch属性leaseEpoch: number公开属性;类型、只读和可选状态以签名列为准。
signal属性signal: AbortSignal公开属性;类型、只读和可选状态以签名列为准。

SessionCommandWorkerResult

Session Command Worker Result 接口,共包含 5 个公开字段或方法。

声明

text
export interface SessionCommandWorkerResult {
    disposition: SessionCommandWorkerDisposition;
    commandId?: string;
    commandType?: SessionCommandType;
    attempts?: number;
    rejectionCode?: string;
}

契约成员

成员种类签名说明
attempts属性attempts?: number公开属性;类型、只读和可选状态以签名列为准。
commandId属性commandId?: string公开属性;类型、只读和可选状态以签名列为准。
commandType属性commandType?: "user_input" | "cancel" | "signal" | "start_run" | "resume" | "transition" | "continue_react" | "close_session"公开属性;类型、只读和可选状态以签名列为准。
disposition属性disposition: SessionCommandWorkerDisposition公开属性;类型、只读和可选状态以签名列为准。
rejectionCode属性rejectionCode?: string公开属性;类型、只读和可选状态以签名列为准。

SessionCommandHandler

Session Command Handler 公共类型别名;完整类型表达式见声明。

声明

text
export type SessionCommandHandler = (context: Readonly<SessionCommandHandlerContext>) => Promise<SessionCommandHandlerResult>;

SessionCommandHandlerResult

Session Command Handler Result 公共类型别名;完整类型表达式见声明。

声明

text
export type SessionCommandHandlerResult = {
    disposition: 'applied';
    resultRunId?: string;
    resultEventIds?: string[];
} | {
    disposition: 'retry';
    availableAt?: string;
} | {
    disposition: 'failed';
    rejectionCode: string;
    deadLetter?: boolean;
};

SessionCommandWorkerDisposition

Session Command Worker Disposition 公共类型别名;完整类型表达式见声明。

声明

text
export type SessionCommandWorkerDisposition = 'idle' | 'applied' | 'retry_scheduled' | 'failed' | 'dead_lettered' | 'lease_lost' | 'aborted';