본문으로 건너뛰기

실행.시간여행()

그만큼.timeTravel()메서드는 저장된 스냅샷 데이터 또는 사용자가 제공하는 사용자 지정 컨텍스트를 사용하여 특정 단계부터 시작하는 Workflow를 다시 실행합니다. 이를 사용하여 실패한 Workflow를 디버깅하고 다양한 입력으로 개별 단계를 테스트하세요. 또한 전체 Workflow를 다시 실행하지 않고도 오류를 복구할 수 있습니다.

사용예
사용예에 대한 직접 링크

const run = await workflow.createRun()

const result = await run.timeTravel({
step: 'step2',
inputData: { value: 10 },
})

매개변수
매개변수에 대한 직접 링크

step:

Step<string, any, TInputSchema, any, any, any, TEngineType> | [...Step<string, any, any, any, any, any, TEngineType>[], Step<string, any, TInputSchema, any, any, any, TEngineType>] | string | string[]
실행을 시작할 대상 단계입니다. Step 인스턴스, Step 배열(중첩 Workflow용), 단계 ID 문자열 또는 단계 ID 문자열 배열을 사용할 수 있습니다. 중첩 Workflow 단계에는 점 표기법이나 배열을 사용하세요(예: 'nestedWorkflow.step3' 또는 ['nestedWorkflow', 'step3'])

inputData?:

z.infer<TInputSchema>
대상 단계의 입력 데이터입니다. 단계의 입력 스키마와 일치해야 합니다. 제공하지 않으면 Workflow 스냅샷의 데이터를 사용합니다

resumeData?:

any
Workflow가 이전에 일시 중지된 경우 제공할 재개 데이터입니다

initialState?:

z.infer<TState>
Workflow 실행에 설정할 초기 상태입니다. 실행 전에 Workflow 수준 상태를 설정하는 데 사용합니다

context?:

TimeTravelContext<any, any, any, any>
대상 단계 이전 단계들의 결과를 포함하는 실행 컨텍스트입니다. 각 키는 단계 ID이며, 값은 status, payload, output, startedAt, endedAt, suspendPayload, resumePayload를 포함하는 StepResult 객체입니다

nestedStepsContext?:

Record<string, TimeTravelContext<any, any, any, any>>
중첩 Workflow 단계의 컨텍스트입니다. 중첩 Workflow ID를 키로 사용하며, 각 항목에는 해당 중첩 Workflow의 단계 결과가 포함됩니다

requestContext?:

RequestContext
시간 이동 실행 중 사용할 Request Context 데이터입니다

outputWriter?:

(chunk: TOutput) => Promise<void>
출력 청크가 생성될 때 처리하는 선택적 비동기 함수입니다

tracingContext?:

TracingContext
자식 span을 생성하고 메타데이터를 추가하기 위한 Tracing 컨텍스트입니다. Mastra의 Tracing 시스템을 사용할 때 자동으로 주입됩니다.

currentSpan?:

Span
자식 span을 생성하고 메타데이터를 추가하기 위한 현재 span입니다. 실행 중 사용자 정의 자식 span을 생성하거나 span 속성을 업데이트하는 데 사용합니다.

tracingOptions?:

TracingOptions
Tracing 구성을 위한 옵션입니다.

metadata?:

Record<string, any>
루트 Trace span에 추가할 메타데이터입니다. 사용자 ID, 세션 ID 또는 기능 플래그와 같은 사용자 정의 속성을 추가할 때 유용합니다.

requestContextKeys?:

string[]
이 Trace의 메타데이터로 추출할 추가 RequestContext 키입니다. 중첩 값에는 점 표기법을 지원합니다(예: 'user.id').

traceId?:

string
이 실행에 사용할 Trace ID입니다(1~32자의 16진수). 제공하면 이 Trace가 지정된 Trace의 일부가 됩니다.

parentSpanId?:

string
이 실행에 사용할 부모 span ID입니다(1~16자의 16진수). 제공하면 루트 span이 이 span의 자식으로 생성됩니다.

tags?:

string[]
이 Trace에 적용할 태그입니다. Trace를 분류하고 필터링하는 문자열 레이블입니다.

outputOptions?:

OutputOptions
출력 구성을 위한 옵션입니다.

includeState?:

boolean
결과에 Workflow 실행 상태를 포함할지 여부입니다.

includeResumeLabels?:

boolean
결과에 재개 레이블을 포함할지 여부입니다.

보고
보고에 대한 직접 링크

result:

Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>
단계 출력과 상태가 포함된 Workflow 실행 결과로 이행되는 Promise입니다

traceId?:

string
Tracing이 활성화된 경우 이 실행과 연결된 Trace ID입니다. 로그를 연결하고 실행 흐름을 디버깅하는 데 사용합니다.

spanId?:

string
Tracing이 활성화된 경우 이 실행과 연결된 루트 span ID입니다. span 수준 조회와 연결에 사용합니다.

확장된 사용 예
확장된 사용 예에 대한 직접 링크

맞춤형 컨텍스트를 통한 시간 여행
맞춤형 컨텍스트를 통한 시간 여행에 대한 직접 링크

const result = await run.timeTravel({
step: 'step2',
context: {
step1: {
status: 'success',
payload: { value: 0 },
output: { step1Result: 2 },
startedAt: Date.now(),
endedAt: Date.now(),
},
},
})

중첩된 Workflow 단계로의 시간 이동
중첩된 Workflow 단계로의 시간 이동에 대한 직접 링크

// Using dot notation
const result = await run.timeTravel({
step: 'nestedWorkflow.step3',
inputData: { value: 10 },
})

// Using array of step IDs
const result = await run.timeTravel({
step: ['nestedWorkflow', 'step3'],
inputData: { value: 10 },
})

초기 상태의 시간 여행
초기 상태의 시간 여행에 대한 직접 링크

const result = await run.timeTravel({
step: 'step2',
inputData: { value: 10 },
initialState: {
counter: 5,
metadata: { source: 'time-travel' },
},
})

중첩된 Workflow 컨텍스트를 사용한 시간 여행
중첩된 Workflow 컨텍스트를 사용한 시간 여행에 대한 직접 링크

const result = await run.timeTravel({
step: 'nestedWorkflow.step3',
context: {
step1: {
status: 'success',
payload: { value: 0 },
output: { step1Result: 2 },
startedAt: Date.now(),
endedAt: Date.now(),
},
nestedWorkflow: {
status: 'running',
payload: { step1Result: 2 },
startedAt: Date.now(),
},
},
nestedStepsContext: {
nestedWorkflow: {
step2: {
status: 'success',
payload: { step1Result: 2 },
output: { step2Result: 3 },
startedAt: Date.now(),
endedAt: Date.now(),
},
},
},
})

메모
메모에 대한 직접 링크

  • 시간 여행은 지속적인 Workflow 스냅샷에 의존하므로 스토리지를 구성해야 합니다.
  • Workflow를 다시 실행할 때 Workflow는 스토리지에서 기존 스냅샷을 로드합니다(사용 가능한 경우).
  • 대상 단계 이전의 단계 결과는 스냅샷 또는 제공된 컨텍스트에서 재구성됩니다.
  • 제공된 또는 재구성된 입력 데이터를 사용하여 지정된 단계부터 실행이 시작됩니다.
  • Workflow는 해당 시점부터 계속 완료됩니다.
  • 시작하는 단계에 대한 사용자 정의 컨텍스트 또는 입력 데이터를 제공하여 아직 실행되지 않은 Workflow에서 시간 여행을 사용할 수 있습니다.