stageflow 0.8.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -14
- package/dist/agent/activity.d.ts +9 -0
- package/dist/agent/agentBackend.d.ts +32 -0
- package/dist/agent/agentBackend.js +38 -0
- package/dist/agent/claudeActivity.d.ts +15 -0
- package/dist/agent/claudeActivity.js +58 -0
- package/dist/agent/claudeAdapter.d.ts +5 -0
- package/dist/agent/claudeAdapter.js +301 -0
- package/dist/agent/claudeSession.d.ts +18 -0
- package/dist/agent/claudeSession.js +54 -0
- package/dist/agent/claudeTools.d.ts +89 -0
- package/dist/agent/claudeTools.js +135 -0
- package/dist/agent/fakeAgent.js +24 -4
- package/dist/agent/piAdapter.d.ts +6 -3
- package/dist/agent/piAdapter.js +129 -21
- package/dist/agent/port.d.ts +50 -1
- package/dist/agent/resolveAgentPort.d.ts +26 -0
- package/dist/agent/resolveAgentPort.js +39 -0
- package/dist/cli/runCommand.js +2 -2
- package/dist/cli/runsCommand.d.ts +22 -0
- package/dist/cli/runsCommand.js +773 -0
- package/dist/cli/validateOutput.d.ts +2 -2
- package/dist/cli/validateOutput.js +2 -2
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +43 -5
- package/dist/config/browseCatalog.js +1 -1
- package/dist/config/createPipeline.d.ts +2 -1
- package/dist/config/createPipeline.js +34 -9
- package/dist/config/createStage.js +14 -9
- package/dist/config/loadPipeline.js +10 -1
- package/dist/config/loadStage.js +138 -2
- package/dist/config/loadStageflowManifest.js +14 -1
- package/dist/config/mergePipelineIncludes.d.ts +1 -0
- package/dist/config/mergePipelineIncludes.js +14 -1
- package/dist/config/normalizePipelineStageEntry.d.ts +7 -2
- package/dist/config/normalizePipelineStageEntry.js +49 -6
- package/dist/config/parseCompletionContract.d.ts +8 -0
- package/dist/config/parseCompletionContract.js +218 -0
- package/dist/config/parsePreEmitChecks.d.ts +3 -0
- package/dist/config/parsePreEmitChecks.js +65 -0
- package/dist/config/pipelineNeeds.d.ts +19 -0
- package/dist/config/pipelineNeeds.js +151 -0
- package/dist/config/pipelineStageKeys.js +16 -1
- package/dist/config/resolveForkEmitContext.d.ts +6 -2
- package/dist/config/resolveForkEmitContext.js +9 -2
- package/dist/config/resolvePipelineDag.d.ts +2 -1
- package/dist/config/resolvePipelineDag.js +182 -39
- package/dist/config/validateCatalog.d.ts +1 -1
- package/dist/config/validateCompletionContract.d.ts +4 -0
- package/dist/config/validateCompletionContract.js +52 -0
- package/dist/envelope/check.d.ts +1 -1
- package/dist/envelope/check.js +86 -13
- package/dist/envelope/cloneForks.d.ts +1 -1
- package/dist/envelope/cloneForks.js +24 -9
- package/dist/envelope/feedbackLoop.d.ts +4 -0
- package/dist/envelope/feedbackLoop.js +31 -0
- package/dist/envelope/payloadSchema.d.ts +7 -1
- package/dist/envelope/payloadSchema.js +170 -13
- package/dist/envelope/preEmitChecks.d.ts +29 -0
- package/dist/envelope/preEmitChecks.js +57 -0
- package/dist/hitl/qaTrail.d.ts +25 -0
- package/dist/hitl/qaTrail.js +51 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/mcp/catalogTools.js +4 -2
- package/dist/mcp/controlTools.js +72 -0
- package/dist/mcp/waitingGates.d.ts +2 -1
- package/dist/mcp/waitingGates.js +17 -1
- package/dist/package-meta.d.ts +1 -0
- package/dist/package-meta.js +1 -0
- package/dist/projection/projectRun.d.ts +4 -1
- package/dist/projection/projectRun.js +7 -0
- package/dist/prompt/feedbackLoopContext.d.ts +2 -0
- package/dist/prompt/feedbackLoopContext.js +17 -0
- package/dist/prompt/priorEnvelope.d.ts +2 -2
- package/dist/prompt/priorEnvelope.js +4 -1
- package/dist/runstore/pipelineDagSnapshot.d.ts +1 -0
- package/dist/runstore/pipelineDagSnapshot.js +51 -11
- package/dist/runstore/port.d.ts +185 -3
- package/dist/runstore/port.js +42 -3
- package/dist/runstore/runProjection.d.ts +7 -3
- package/dist/runstore/runProjection.js +30 -15
- package/dist/runstore/sqlite/SqliteRunStore.d.ts +25 -1
- package/dist/runstore/sqlite/SqliteRunStore.js +626 -8
- package/dist/runstore/sqlite/schema.d.ts +1 -1
- package/dist/runstore/sqlite/schema.js +99 -0
- package/dist/runstore/stageInstanceId.d.ts +1 -1
- package/dist/runstore/stageInstanceId.js +3 -2
- package/dist/runstore/trackProjection.js +59 -27
- package/dist/runstore/verificationHistory.d.ts +19 -0
- package/dist/runstore/verificationHistory.js +30 -0
- package/dist/runtime/cloneSchedule.d.ts +40 -4
- package/dist/runtime/cloneSchedule.js +212 -28
- package/dist/runtime/completionCheckRunner.d.ts +137 -0
- package/dist/runtime/completionCheckRunner.js +365 -0
- package/dist/runtime/completionCheckoutBaseline.d.ts +3 -0
- package/dist/runtime/completionCheckoutBaseline.js +44 -0
- package/dist/runtime/envelopeRouting.d.ts +10 -3
- package/dist/runtime/envelopeRouting.js +146 -5
- package/dist/runtime/feedbackLoopCoordinator.d.ts +74 -0
- package/dist/runtime/feedbackLoopCoordinator.js +446 -0
- package/dist/runtime/feedbackLoopDecision.d.ts +44 -0
- package/dist/runtime/feedbackLoopDecision.js +207 -0
- package/dist/runtime/feedbackLoopRoute.d.ts +5 -0
- package/dist/runtime/feedbackLoopRoute.js +13 -0
- package/dist/runtime/feedbackLoopSchedule.d.ts +38 -0
- package/dist/runtime/feedbackLoopSchedule.js +72 -0
- package/dist/runtime/forkGeneration.d.ts +72 -0
- package/dist/runtime/forkGeneration.js +295 -0
- package/dist/runtime/gitCheckoutCapability.d.ts +7 -0
- package/dist/runtime/gitCheckoutCapability.js +97 -0
- package/dist/runtime/manualRecoveryState.d.ts +40 -0
- package/dist/runtime/manualRecoveryState.js +73 -0
- package/dist/runtime/pipelineScheduler.d.ts +13 -1
- package/dist/runtime/pipelineScheduler.js +328 -45
- package/dist/runtime/replayLifecycle.d.ts +107 -0
- package/dist/runtime/replayLifecycle.js +168 -0
- package/dist/runtime/runManager.d.ts +61 -1
- package/dist/runtime/runManager.js +501 -7
- package/dist/runtime/runRetryCoordinator.d.ts +8 -1
- package/dist/runtime/runRetryCoordinator.js +47 -10
- package/dist/runtime/stageAttemptBootstrap.d.ts +3 -1
- package/dist/runtime/stageAttemptBootstrap.js +79 -1
- package/dist/runtime/stageProcessLauncher.d.ts +1 -1
- package/dist/runtime/stageRecovery.js +1 -1
- package/dist/runtime/stageRunner.d.ts +4 -1
- package/dist/runtime/stageRunner.js +29 -3
- package/dist/runtime/stageWorker.js +69 -2
- package/dist/runtime/stageWorkerProtocol.d.ts +1 -1
- package/dist/runtime/verifiedStageExecution.d.ts +29 -0
- package/dist/runtime/verifiedStageExecution.js +119 -0
- package/dist/server/bootstrap.js +1 -0
- package/dist/server/http.js +114 -0
- package/dist/server/operatorResults.js +2 -0
- package/dist/tools/askOperator.d.ts +161 -5
- package/dist/tools/askOperator.js +58 -25
- package/dist/tools/emitStageEnvelope.d.ts +12 -12
- package/dist/tools/emitStageEnvelope.js +112 -24
- package/dist/types/completion.d.ts +43 -0
- package/dist/types/completion.js +1 -0
- package/dist/types/envelope.d.ts +18 -0
- package/dist/types/forkChoice.d.ts +9 -4
- package/dist/types/forkChoice.js +1 -1
- package/dist/types/pipeline.d.ts +39 -2
- package/dist/types/preEmitCheck.d.ts +18 -0
- package/dist/types/preEmitCheck.js +1 -0
- package/dist/types/stage.d.ts +13 -0
- package/dist/types/stageflowManifest.d.ts +2 -0
- package/dist/ui/assets/index-CXGz4nL7.js +118 -0
- package/dist/ui/assets/{index-C3N7MXAC.css → index-uVHiae8s.css} +1 -1
- package/dist/ui/index.html +2 -2
- package/package.json +2 -1
- package/skills/stageflow/references/control-surface.md +4 -2
- package/skills/stageflow-author/references/catalog-mapping.md +26 -2
- package/skills/stageflow-author/references/catalog-write-conventions.md +1 -1
- package/skills/stageflow-run/SKILL.md +56 -25
- package/skills/stageflow-run/references/mcp-call.md +2 -2
- package/skills/stageflow-run/references/native-question-ui.md +78 -0
- package/dist/ui/assets/index-CSoGDA3A.js +0 -118
package/dist/runstore/port.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { predecessorEdges } from "../config/pipelineNeeds.js";
|
|
1
2
|
export function stageStatusFromEvents(events) {
|
|
2
3
|
let status = "pending";
|
|
3
4
|
for (const ev of events) {
|
|
@@ -14,12 +15,50 @@ export function stageStatusFromEvents(events) {
|
|
|
14
15
|
}
|
|
15
16
|
return status;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
+
function definitionIdForStage(dag, stageId, snapshotsById) {
|
|
19
|
+
const snap = snapshotsById.get(stageId);
|
|
20
|
+
if (snap?.definition_id)
|
|
21
|
+
return snap.definition_id;
|
|
22
|
+
const node = dag.nodes.find((n) => n.id === stageId);
|
|
23
|
+
return node?.definition_id ?? stageId;
|
|
24
|
+
}
|
|
25
|
+
function failureAcceptedByJoin(dag, failedId, snapshotsById) {
|
|
26
|
+
const defId = definitionIdForStage(dag, failedId, snapshotsById);
|
|
27
|
+
for (const node of dag.nodes) {
|
|
28
|
+
const edge = predecessorEdges(node).find((item) => item.id === failedId || item.id === defId);
|
|
29
|
+
if (!edge?.on.includes("failed"))
|
|
30
|
+
continue;
|
|
31
|
+
const join = snapshotsById.get(node.id);
|
|
32
|
+
if (join && join.status !== "skipped")
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
export function findUnhandledFailedStage(stages, dag) {
|
|
38
|
+
const byId = new Map(stages.map((s) => [s.stage_id, s]));
|
|
39
|
+
return stages.find((stage) => {
|
|
40
|
+
if (stage.status !== "failed")
|
|
41
|
+
return false;
|
|
42
|
+
if (!dag)
|
|
43
|
+
return true;
|
|
44
|
+
return !failureAcceptedByJoin(dag, stage.stage_id, byId);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function stageResolvedForSuccess(stage, dag, byId) {
|
|
48
|
+
if (stage.status === "succeeded" || stage.status === "skipped")
|
|
49
|
+
return true;
|
|
50
|
+
if (stage.status === "failed" && dag) {
|
|
51
|
+
return failureAcceptedByJoin(dag, stage.stage_id, byId);
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
export function deriveStatusFromStages(stages, dag) {
|
|
18
56
|
if (stages.length === 0)
|
|
19
57
|
return "created";
|
|
20
|
-
if (stages
|
|
58
|
+
if (findUnhandledFailedStage(stages, dag))
|
|
21
59
|
return "failed";
|
|
22
|
-
|
|
60
|
+
const byId = new Map(stages.map((s) => [s.stage_id, s]));
|
|
61
|
+
if (stages.every((s) => stageResolvedForSuccess(s, dag, byId))) {
|
|
23
62
|
return "succeeded";
|
|
24
63
|
}
|
|
25
64
|
if (stages.some((s) => s.status === "running" ||
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import type { RunDetail, RunMeta, RunPipelineDagSnapshot, RunSummary, StageSnapshot } from "./port.js";
|
|
1
|
+
import type { FeedbackLoopHistory, FeedbackLoopRecord, RunDetail, RunMeta, RunPipelineDagSnapshot, RunSummary, StageSnapshot } from "./port.js";
|
|
2
2
|
export { syntheticPendingSnapshot } from "./syntheticStageSnapshot.js";
|
|
3
|
+
export type FeedbackProjectionInput = {
|
|
4
|
+
feedback_loops?: FeedbackLoopHistory[];
|
|
5
|
+
active_feedback_loop?: FeedbackLoopRecord;
|
|
6
|
+
};
|
|
3
7
|
export declare function overlayPlannedStages(stageIds: string[], snapshots: StageSnapshot[], dag?: Pick<RunPipelineDagSnapshot, "nodes"> | null): StageSnapshot[];
|
|
4
8
|
export declare function orderStageSnapshots(stageIds: string[], snapshots: StageSnapshot[]): StageSnapshot[];
|
|
5
|
-
export declare function projectRunSummary(meta: RunMeta, stages: StageSnapshot[]): RunSummary;
|
|
6
|
-
export declare function projectRunDetail(meta: RunMeta, stages: StageSnapshot[], task_yaml: string, dagSnapshot?: RunPipelineDagSnapshot | null): RunDetail;
|
|
9
|
+
export declare function projectRunSummary(meta: RunMeta, stages: StageSnapshot[], feedback?: Pick<FeedbackProjectionInput, "active_feedback_loop">): RunSummary;
|
|
10
|
+
export declare function projectRunDetail(meta: RunMeta, stages: StageSnapshot[], task_yaml: string, dagSnapshot?: RunPipelineDagSnapshot | null, feedback?: FeedbackProjectionInput): RunDetail;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { deriveStatusFromStages } from "./port.js";
|
|
1
|
+
import { deriveStatusFromStages, findUnhandledFailedStage } from "./port.js";
|
|
2
2
|
import { linearCompatDagSnapshot } from "./pipelineDagSnapshot.js";
|
|
3
3
|
import { syntheticPendingSnapshot } from "./syntheticStageSnapshot.js";
|
|
4
4
|
import { buildPipelineTrack } from "./trackProjection.js";
|
|
@@ -61,8 +61,8 @@ function waitingFieldsFromStages(stages) {
|
|
|
61
61
|
}
|
|
62
62
|
return fields;
|
|
63
63
|
}
|
|
64
|
-
function failedFieldsFromStages(stages) {
|
|
65
|
-
const failed = stages
|
|
64
|
+
function failedFieldsFromStages(stages, dag) {
|
|
65
|
+
const failed = findUnhandledFailedStage(stages, dag);
|
|
66
66
|
if (!failed)
|
|
67
67
|
return {};
|
|
68
68
|
let failed_reason;
|
|
@@ -75,10 +75,10 @@ function failedFieldsFromStages(stages) {
|
|
|
75
75
|
...(failed_reason !== undefined ? { failed_reason } : {}),
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
|
-
function resolveListedStatus(stages, meta) {
|
|
78
|
+
function resolveListedStatus(stages, meta, dag) {
|
|
79
79
|
if (stages.length === 0)
|
|
80
80
|
return meta.status ?? "created";
|
|
81
|
-
const derived = deriveStatusFromStages(stages);
|
|
81
|
+
const derived = deriveStatusFromStages(stages, dag);
|
|
82
82
|
if (meta.status === "succeeded" && derived === "running") {
|
|
83
83
|
const hasActiveStage = stages.some((s) => s.status === "running" || s.status === "waiting_for_input");
|
|
84
84
|
if (!hasActiveStage)
|
|
@@ -86,7 +86,18 @@ function resolveListedStatus(stages, meta) {
|
|
|
86
86
|
}
|
|
87
87
|
return derived;
|
|
88
88
|
}
|
|
89
|
-
export function projectRunSummary(meta, stages) {
|
|
89
|
+
export function projectRunSummary(meta, stages, feedback) {
|
|
90
|
+
const dag = meta.pipeline_dag;
|
|
91
|
+
const waiting = waitingFieldsFromStages(stages);
|
|
92
|
+
if (feedback?.active_feedback_loop?.state === "waiting_for_human" &&
|
|
93
|
+
waiting.waiting_stage_id !== undefined &&
|
|
94
|
+
waiting.waiting_kind === undefined) {
|
|
95
|
+
waiting.waiting_kind = "feedback_loop_decision";
|
|
96
|
+
if (waiting.waiting_summary === undefined || waiting.waiting_summary === "Waiting for input") {
|
|
97
|
+
waiting.waiting_summary =
|
|
98
|
+
"Feedback loop limit reached — extend, continue, or abandon";
|
|
99
|
+
}
|
|
100
|
+
}
|
|
90
101
|
return {
|
|
91
102
|
run_id: meta.run_id,
|
|
92
103
|
pipeline_id: meta.pipeline_id,
|
|
@@ -94,21 +105,24 @@ export function projectRunSummary(meta, stages) {
|
|
|
94
105
|
...(meta.pipeline_path !== undefined ? { pipeline_path: meta.pipeline_path } : {}),
|
|
95
106
|
...(meta.task_path !== undefined ? { task_path: meta.task_path } : {}),
|
|
96
107
|
...(meta.project_root !== undefined ? { project_root: meta.project_root } : {}),
|
|
97
|
-
status: resolveListedStatus(stages, meta),
|
|
108
|
+
status: resolveListedStatus(stages, meta, dag),
|
|
98
109
|
created_at: meta.created_at,
|
|
99
110
|
updated_at: meta.updated_at,
|
|
100
111
|
stages: compactStages(stages),
|
|
101
|
-
...
|
|
102
|
-
...failedFieldsFromStages(stages),
|
|
112
|
+
...waiting,
|
|
113
|
+
...failedFieldsFromStages(stages, dag),
|
|
114
|
+
...(feedback?.active_feedback_loop !== undefined
|
|
115
|
+
? { active_feedback_loop: feedback.active_feedback_loop }
|
|
116
|
+
: {}),
|
|
103
117
|
};
|
|
104
118
|
}
|
|
105
|
-
export function projectRunDetail(meta, stages, task_yaml, dagSnapshot) {
|
|
106
|
-
const
|
|
107
|
-
|
|
119
|
+
export function projectRunDetail(meta, stages, task_yaml, dagSnapshot, feedback) {
|
|
120
|
+
const dag = dagSnapshot ?? meta.pipeline_dag ?? null;
|
|
121
|
+
const ordered = dag
|
|
122
|
+
? overlayPlannedStages(dag.stage_ids, stages, dag)
|
|
108
123
|
: stages;
|
|
109
|
-
const summary = projectRunSummary(meta, ordered);
|
|
110
|
-
const snapshot =
|
|
111
|
-
linearCompatDagSnapshot(ordered.map((s) => s.stage_id));
|
|
124
|
+
const summary = projectRunSummary(dag ? { ...meta, pipeline_dag: dag } : meta, ordered, { active_feedback_loop: feedback?.active_feedback_loop });
|
|
125
|
+
const snapshot = dag ?? linearCompatDagSnapshot(ordered.map((s) => s.stage_id));
|
|
112
126
|
const pipeline_track = buildPipelineTrack({
|
|
113
127
|
dagSnapshot: snapshot,
|
|
114
128
|
stages: ordered,
|
|
@@ -119,5 +133,6 @@ export function projectRunDetail(meta, stages, task_yaml, dagSnapshot) {
|
|
|
119
133
|
task_yaml,
|
|
120
134
|
stages: ordered,
|
|
121
135
|
pipeline_track,
|
|
136
|
+
feedback_loops: feedback?.feedback_loops ?? [],
|
|
122
137
|
};
|
|
123
138
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { StageEnvelope } from "../../types/envelope.js";
|
|
2
2
|
import type { StageLogLine } from "../../agent/activity.js";
|
|
3
|
-
import { type CreateRunInput, type CreatedRun, type ListRunsFilter, type RunDetail, type RunMeta, type RunPipelineDagSnapshot, type RunStatus, type RunStore, type RunSummary, type StageExecution, type StageExecutionPatch, type StageLogEvent } from "../port.js";
|
|
3
|
+
import { type CreateFeedbackLoopInput, type CreateFeedbackReplayInput, type CreateFeedbackReplayStagePassInput, type CreateForkGenerationInput, type CreateRunInput, type CreatedRun, type FeedbackLoopPatch, type FeedbackLoopRecord, type FeedbackLoopState, type FeedbackReplayPatch, type FeedbackReplayRecord, type FeedbackReplayStagePassPatch, type FeedbackReplayStagePassRecord, type ForkGenerationPatch, type ForkGenerationRecord, type ListRunsFilter, type RunDetail, type RunMeta, type RunPipelineDagSnapshot, type RunStatus, type RunStore, type RunSummary, type StageExecution, type StageExecutionPatch, type StageLogEvent, type VerificationCheckResult, type VerificationCheckResultPatch } from "../port.js";
|
|
4
4
|
export declare class SqliteRunStore implements RunStore {
|
|
5
5
|
private readonly storeRoot;
|
|
6
6
|
private readonly db;
|
|
@@ -22,6 +22,10 @@ export declare class SqliteRunStore implements RunStore {
|
|
|
22
22
|
countStageAttempts(runId: string, stageId: string): Promise<number>;
|
|
23
23
|
getStageExecution(runId: string, stageId: string, attempt: number): Promise<StageExecution>;
|
|
24
24
|
updateStageExecution(runId: string, stageId: string, attempt: number, patch: StageExecutionPatch): Promise<void>;
|
|
25
|
+
upsertVerificationCheckResult(runId: string, stageId: string, result: VerificationCheckResultPatch, options?: {
|
|
26
|
+
attempt?: number;
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
listVerificationCheckResults(runId: string, stageId: string, attempt?: number): Promise<VerificationCheckResult[]>;
|
|
25
29
|
writeEnvelope(runId: string, stageId: string, envelope: StageEnvelope, options?: {
|
|
26
30
|
attempt?: number;
|
|
27
31
|
}): Promise<void>;
|
|
@@ -40,6 +44,26 @@ export declare class SqliteRunStore implements RunStore {
|
|
|
40
44
|
listStageEvents(runId: string, stageId: string, attempt?: number): Promise<StageLogEvent[]>;
|
|
41
45
|
listRuns(filter?: ListRunsFilter): Promise<RunSummary[]>;
|
|
42
46
|
readRun(runId: string): Promise<RunDetail>;
|
|
47
|
+
createFeedbackLoop(runId: string, input: CreateFeedbackLoopInput): Promise<FeedbackLoopRecord>;
|
|
48
|
+
getFeedbackLoop(runId: string, loopId: string): Promise<FeedbackLoopRecord>;
|
|
49
|
+
listFeedbackLoops(runId: string): Promise<FeedbackLoopRecord[]>;
|
|
50
|
+
updateFeedbackLoop(runId: string, loopId: string, patch: FeedbackLoopPatch, options?: {
|
|
51
|
+
expectedState?: FeedbackLoopState;
|
|
52
|
+
}): Promise<boolean>;
|
|
53
|
+
createFeedbackReplay(runId: string, input: CreateFeedbackReplayInput): Promise<FeedbackReplayRecord>;
|
|
54
|
+
getFeedbackReplay(runId: string, replayId: string): Promise<FeedbackReplayRecord>;
|
|
55
|
+
listFeedbackReplays(runId: string, loopId: string): Promise<FeedbackReplayRecord[]>;
|
|
56
|
+
updateFeedbackReplay(runId: string, replayId: string, patch: FeedbackReplayPatch): Promise<void>;
|
|
57
|
+
createFeedbackReplayStagePass(runId: string, input: CreateFeedbackReplayStagePassInput): Promise<FeedbackReplayStagePassRecord>;
|
|
58
|
+
listFeedbackReplayStagePasses(runId: string, replayId: string): Promise<FeedbackReplayStagePassRecord[]>;
|
|
59
|
+
updateFeedbackReplayStagePass(runId: string, replayId: string, stageId: string, patch: FeedbackReplayStagePassPatch): Promise<void>;
|
|
60
|
+
createForkGeneration(runId: string, input: CreateForkGenerationInput): Promise<ForkGenerationRecord>;
|
|
61
|
+
listForkGenerations(runId: string, options?: {
|
|
62
|
+
replayId?: string;
|
|
63
|
+
forkParentStageId?: string;
|
|
64
|
+
}): Promise<ForkGenerationRecord[]>;
|
|
65
|
+
updateForkGeneration(runId: string, generationId: string, patch: ForkGenerationPatch): Promise<void>;
|
|
66
|
+
private loadFeedbackLoopHistory;
|
|
43
67
|
private readPipelineDagSnapshotFromRow;
|
|
44
68
|
private runMetaFromRow;
|
|
45
69
|
private getRunRow;
|