-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathdataset-pipeline.ts
More file actions
101 lines (85 loc) · 2.74 KB
/
Copy pathdataset-pipeline.ts
File metadata and controls
101 lines (85 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import type { ObjectReferenceType as ObjectReference } from "./generated_types";
import type {
BaseMetadata,
Dataset,
DefaultMetadataType,
FullInitDatasetOptions,
} from "./logger";
import type { Trace } from "./trace";
export type DatasetPipelineScope = "span" | "trace";
export type DatasetPipelineSource = {
projectId?: string;
projectName?: string;
orgName?: string;
filter?: string;
scope?: DatasetPipelineScope;
};
type DatasetPipelineInitDatasetOptions = FullInitDatasetOptions<false>;
export type DatasetPipelineOrigin = ObjectReference;
export type DatasetPipelineTarget = {
projectId?: DatasetPipelineInitDatasetOptions["projectId"];
projectName?: DatasetPipelineInitDatasetOptions["project"];
orgName?: DatasetPipelineInitDatasetOptions["orgName"];
datasetName: NonNullable<DatasetPipelineInitDatasetOptions["dataset"]>;
description?: DatasetPipelineInitDatasetOptions["description"];
metadata?: DatasetPipelineInitDatasetOptions["metadata"];
};
export type DatasetPipelineRow = Parameters<Dataset["insert"]>[0];
export type DatasetPipelineTransformArgs<
Input = unknown,
Output = unknown,
Expected = unknown,
Metadata extends BaseMetadata = DefaultMetadataType,
> = {
input?: Input;
output?: Output;
expected?: Expected;
metadata?: Metadata extends void ? Record<string, unknown> : Metadata;
trace?: Trace;
};
export type DatasetPipelineTransformResult =
| DatasetPipelineRow
| DatasetPipelineRow[]
| null
| undefined;
export type DatasetPipelineTransform = (
args: DatasetPipelineTransformArgs,
) => DatasetPipelineTransformResult | Promise<DatasetPipelineTransformResult>;
export type DatasetPipelineDefinition = {
name?: string;
source: DatasetPipelineSource;
transform: DatasetPipelineTransform;
target: DatasetPipelineTarget;
};
const DATASET_PIPELINE_MARKER = "__braintrustDatasetPipeline";
declare global {
// eslint-disable-next-line no-var
var __braintrust_dataset_pipelines: DatasetPipelineDefinition[] | undefined;
}
function registry(): DatasetPipelineDefinition[] {
if (!globalThis.__braintrust_dataset_pipelines) {
globalThis.__braintrust_dataset_pipelines = [];
}
return globalThis.__braintrust_dataset_pipelines;
}
export function getRegisteredDatasetPipelines(): DatasetPipelineDefinition[] {
return [...registry()];
}
export function isDatasetPipelineDefinition(
value: unknown,
): value is DatasetPipelineDefinition {
return (
typeof value === "object" &&
value !== null &&
DATASET_PIPELINE_MARKER in value
);
}
export function DatasetPipeline(
definition: DatasetPipelineDefinition,
): DatasetPipelineDefinition {
const registered = Object.assign(definition, {
[DATASET_PIPELINE_MARKER]: true,
});
registry().push(registered);
return registered;
}