claude-flow
Version:
Enterprise-grade AI agent orchestration with ruv-swarm integration (Alpha Release)
62 lines (61 loc) • 2.19 kB
TypeScript
import { Event } from './common/Event.js';
import { ExecuteWrapper } from './common/Executor.js';
import { IPolicy } from './Policy.js';
export declare enum TimeoutStrategy {
/**
* Cooperative timeouts will simply revoke the inner cancellation token,
* assuming the caller handles cancellation and throws or returns appropriately.
*/
Cooperative = "optimistic",
/**
* Aggressive cancellation immediately throws
*/
Aggressive = "aggressive"
}
export interface ICancellationContext {
signal: AbortSignal;
}
export interface ITimeoutOptions {
/** Strategy for timeouts, "Cooperative", or "Accessive" */
strategy: TimeoutStrategy;
/**
* Whether the AbortSignal should be aborted when the
* function returns. Defaults to true.
*/
abortOnReturn?: boolean;
}
export declare class TimeoutPolicy implements IPolicy<ICancellationContext> {
private readonly duration;
private readonly options;
private readonly executor;
private readonly unref;
readonly _altReturn: never;
private readonly timeoutEmitter;
/**
* @inheritdoc
*/
readonly onTimeout: Event<void>;
/**
* @inheritdoc
*/
readonly onFailure: Event<import("./Policy").IFailureEvent>;
/**
* @inheritdoc
*/
readonly onSuccess: Event<import("./Policy").ISuccessEvent>;
constructor(duration: number, options: ITimeoutOptions, executor?: ExecuteWrapper, unref?: boolean);
/**
* When timing out, a referenced timer is created. This means the Node.js
* event loop is kept active while we're waiting for the timeout, as long as
* the function hasn't returned. Calling this method on the timeout builder
* will unreference the timer, allowing the process to exit even if a
* timeout might still be happening.
*/
constructor(): TimeoutPolicy;
/**
* Executes the given function.
* @param fn Function to execute. Takes in a nested cancellation token.
* @throws a {@link TaskCancelledError} if a timeout occurs
*/
execute<T>(fn: (context: ICancellationContext, signal: AbortSignal) => PromiseLike<T> | T, signal?: AbortSignal): Promise<T>;
}