@arizeai/phoenix-cli 0.0.4 → 0.2.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 +279 -16
- package/build/cli.d.ts.map +1 -0
- package/build/cli.js +25 -0
- package/build/cli.js.map +1 -0
- package/build/client.d.ts +49 -0
- package/build/client.d.ts.map +1 -0
- package/build/client.js +96 -0
- package/build/client.js.map +1 -0
- package/build/commands/dataset.d.ts +6 -0
- package/build/commands/dataset.d.ts.map +1 -0
- package/build/commands/dataset.js +153 -0
- package/build/commands/dataset.js.map +1 -0
- package/build/commands/datasets.d.ts +6 -0
- package/build/commands/datasets.d.ts.map +1 -0
- package/build/commands/datasets.js +97 -0
- package/build/commands/datasets.js.map +1 -0
- package/build/commands/experiment.d.ts +6 -0
- package/build/commands/experiment.d.ts.map +1 -0
- package/build/commands/experiment.js +106 -0
- package/build/commands/experiment.js.map +1 -0
- package/build/commands/experiments.d.ts +6 -0
- package/build/commands/experiments.d.ts.map +1 -0
- package/build/commands/experiments.js +201 -0
- package/build/commands/experiments.js.map +1 -0
- package/build/commands/formatDataset.d.ts +26 -0
- package/build/commands/formatDataset.d.ts.map +1 -0
- package/build/commands/formatDataset.js +60 -0
- package/build/commands/formatDataset.js.map +1 -0
- package/build/commands/formatDatasets.d.ts +27 -0
- package/build/commands/formatDatasets.d.ts.map +1 -0
- package/build/commands/formatDatasets.js +76 -0
- package/build/commands/formatDatasets.js.map +1 -0
- package/build/commands/formatExperiment.d.ts +35 -0
- package/build/commands/formatExperiment.d.ts.map +1 -0
- package/build/commands/formatExperiment.js +191 -0
- package/build/commands/formatExperiment.js.map +1 -0
- package/build/commands/formatExperiments.d.ts +16 -0
- package/build/commands/formatExperiments.d.ts.map +1 -0
- package/build/commands/formatExperiments.js +53 -0
- package/build/commands/formatExperiments.js.map +1 -0
- package/build/commands/formatProjects.d.ts +19 -0
- package/build/commands/formatProjects.d.ts.map +1 -0
- package/build/commands/formatProjects.js +21 -0
- package/build/commands/formatProjects.js.map +1 -0
- package/build/commands/formatTraces.d.ts +25 -0
- package/build/commands/formatTraces.d.ts.map +1 -0
- package/build/commands/formatTraces.js +165 -0
- package/build/commands/formatTraces.js.map +1 -0
- package/build/commands/index.d.ts +8 -0
- package/build/commands/index.d.ts.map +1 -0
- package/build/commands/index.js +8 -0
- package/build/commands/index.js.map +1 -0
- package/build/commands/projects.d.ts +6 -0
- package/build/commands/projects.d.ts.map +1 -0
- package/build/commands/projects.js +87 -0
- package/build/commands/projects.js.map +1 -0
- package/build/commands/trace.d.ts +6 -0
- package/build/commands/trace.d.ts.map +1 -0
- package/build/commands/trace.js +143 -0
- package/build/commands/trace.js.map +1 -0
- package/build/commands/traces.d.ts +6 -0
- package/build/commands/traces.d.ts.map +1 -0
- package/build/commands/traces.js +239 -0
- package/build/commands/traces.js.map +1 -0
- package/build/config.d.ts +70 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +77 -0
- package/build/config.js.map +1 -0
- package/{dist/src → build}/index.d.ts.map +1 -1
- package/{dist/esm → build}/index.js +0 -0
- package/build/index.js.map +1 -0
- package/build/io.d.ts +49 -0
- package/build/io.d.ts.map +1 -0
- package/build/io.js +29 -0
- package/build/io.js.map +1 -0
- package/build/trace.d.ts +41 -0
- package/build/trace.d.ts.map +1 -0
- package/build/trace.js +55 -0
- package/build/trace.js.map +1 -0
- package/package.json +19 -15
- package/dist/esm/cli.d.ts.map +0 -1
- package/dist/esm/cli.js +0 -17
- package/dist/esm/cli.js.map +0 -1
- package/dist/esm/commands/index.d.ts +0 -1
- package/dist/esm/commands/index.d.ts.map +0 -1
- package/dist/esm/commands/index.js +0 -8
- package/dist/esm/commands/index.js.map +0 -1
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/package.json +0 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
- package/dist/esm/utils/index.d.ts +0 -1
- package/dist/esm/utils/index.d.ts.map +0 -1
- package/dist/esm/utils/index.js +0 -8
- package/dist/esm/utils/index.js.map +0 -1
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -20
- package/dist/src/cli.js.map +0 -1
- package/dist/src/commands/index.d.ts +0 -2
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/commands/index.js +0 -9
- package/dist/src/commands/index.js.map +0 -1
- package/dist/src/index.d.ts +0 -3
- package/dist/src/index.js +0 -8
- package/dist/src/index.js.map +0 -1
- package/dist/src/utils/index.d.ts +0 -2
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js +0 -9
- package/dist/src/utils/index.js.map +0 -1
- package/dist/test/cli.test.d.ts +0 -2
- package/dist/test/cli.test.d.ts.map +0 -1
- package/dist/test/cli.test.js +0 -12
- package/dist/test/cli.test.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/cli.ts +0 -22
- package/src/commands/index.ts +0 -7
- package/src/index.ts +0 -7
- package/src/utils/index.ts +0 -7
- /package/{dist/esm → build}/cli.d.ts +0 -0
- /package/{dist/esm → build}/index.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset.js","sourceRoot":"","sources":["../../src/commands/dataset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasets.d.ts","sourceRoot":"","sources":["../../src/commands/datasets.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuGpC;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAiB/C"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { createPhoenixClient } from "../client.js";
|
|
2
|
+
import { getConfigErrorMessage, resolveConfig } from "../config.js";
|
|
3
|
+
import { writeError, writeOutput, writeProgress } from "../io.js";
|
|
4
|
+
import { formatDatasetsOutput } from "./formatDatasets.js";
|
|
5
|
+
import { Command } from "commander";
|
|
6
|
+
/**
|
|
7
|
+
* Fetch all datasets from Phoenix
|
|
8
|
+
*/
|
|
9
|
+
async function fetchDatasets(client, options = {}) {
|
|
10
|
+
const allDatasets = [];
|
|
11
|
+
let cursor;
|
|
12
|
+
const pageLimit = options.limit || 100;
|
|
13
|
+
do {
|
|
14
|
+
const response = await client.GET("/v1/datasets", {
|
|
15
|
+
params: {
|
|
16
|
+
query: {
|
|
17
|
+
cursor,
|
|
18
|
+
limit: pageLimit,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
if (response.error || !response.data) {
|
|
23
|
+
throw new Error(`Failed to fetch datasets: ${response.error}`);
|
|
24
|
+
}
|
|
25
|
+
allDatasets.push(...response.data.data);
|
|
26
|
+
cursor = response.data.next_cursor || undefined;
|
|
27
|
+
// If we've fetched enough for the requested limit, stop
|
|
28
|
+
if (options.limit && allDatasets.length >= options.limit) {
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
} while (cursor);
|
|
32
|
+
return allDatasets;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Datasets command handler
|
|
36
|
+
*/
|
|
37
|
+
async function datasetsHandler(options) {
|
|
38
|
+
try {
|
|
39
|
+
// Resolve configuration
|
|
40
|
+
const config = resolveConfig({
|
|
41
|
+
cliOptions: {
|
|
42
|
+
endpoint: options.endpoint,
|
|
43
|
+
apiKey: options.apiKey,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
// Validate that we have endpoint
|
|
47
|
+
if (!config.endpoint) {
|
|
48
|
+
const errors = [
|
|
49
|
+
"Phoenix endpoint not configured. Set PHOENIX_HOST environment variable or use --endpoint flag.",
|
|
50
|
+
];
|
|
51
|
+
writeError({ message: getConfigErrorMessage({ errors }) });
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
// Create client
|
|
55
|
+
const client = createPhoenixClient({ config });
|
|
56
|
+
writeProgress({
|
|
57
|
+
message: "Fetching datasets...",
|
|
58
|
+
noProgress: !options.progress,
|
|
59
|
+
});
|
|
60
|
+
// Fetch datasets
|
|
61
|
+
const datasets = await fetchDatasets(client, {
|
|
62
|
+
limit: options.limit,
|
|
63
|
+
});
|
|
64
|
+
writeProgress({
|
|
65
|
+
message: `Found ${datasets.length} dataset(s)`,
|
|
66
|
+
noProgress: !options.progress,
|
|
67
|
+
});
|
|
68
|
+
// Output datasets
|
|
69
|
+
const output = formatDatasetsOutput({
|
|
70
|
+
datasets,
|
|
71
|
+
format: options.format,
|
|
72
|
+
});
|
|
73
|
+
writeOutput({ message: output });
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
writeError({
|
|
77
|
+
message: `Error fetching datasets: ${error instanceof Error ? error.message : String(error)}`,
|
|
78
|
+
});
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create the datasets command
|
|
84
|
+
*/
|
|
85
|
+
export function createDatasetsCommand() {
|
|
86
|
+
const command = new Command("datasets");
|
|
87
|
+
command
|
|
88
|
+
.description("List all available Phoenix datasets")
|
|
89
|
+
.option("--endpoint <url>", "Phoenix API endpoint")
|
|
90
|
+
.option("--api-key <key>", "Phoenix API key for authentication")
|
|
91
|
+
.option("--format <format>", "Output format: pretty, json, or raw", "pretty")
|
|
92
|
+
.option("--no-progress", "Disable progress indicators")
|
|
93
|
+
.option("--limit <number>", "Maximum number of datasets to fetch", parseInt)
|
|
94
|
+
.action(datasetsHandler);
|
|
95
|
+
return command;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=datasets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasets.js","sourceRoot":"","sources":["../../src/commands/datasets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experiment.d.ts","sourceRoot":"","sources":["../../src/commands/experiment.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiHpC;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAkBjD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { createPhoenixClient } from "../client.js";
|
|
2
|
+
import { getConfigErrorMessage, resolveConfig } from "../config.js";
|
|
3
|
+
import { writeError, writeOutput, writeProgress } from "../io.js";
|
|
4
|
+
import { formatExperimentJsonOutput, } from "./formatExperiment.js";
|
|
5
|
+
import { Command } from "commander";
|
|
6
|
+
import * as fs from "fs";
|
|
7
|
+
/**
|
|
8
|
+
* Download experiment JSON data
|
|
9
|
+
*/
|
|
10
|
+
async function downloadExperimentJson(client, experimentId) {
|
|
11
|
+
const response = await client.GET("/v1/experiments/{experiment_id}/json", {
|
|
12
|
+
params: {
|
|
13
|
+
path: {
|
|
14
|
+
experiment_id: experimentId,
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
parseAs: "text",
|
|
18
|
+
});
|
|
19
|
+
if (response.error || response.data === undefined) {
|
|
20
|
+
throw new Error(`Failed to download experiment: ${response.error}`);
|
|
21
|
+
}
|
|
22
|
+
return response.data;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Experiment command handler
|
|
26
|
+
*/
|
|
27
|
+
async function experimentHandler(experimentId, options) {
|
|
28
|
+
try {
|
|
29
|
+
const userSpecifiedFormat = process.argv.includes("--format") ||
|
|
30
|
+
process.argv.some((arg) => arg.startsWith("--format="));
|
|
31
|
+
// Resolve configuration
|
|
32
|
+
const config = resolveConfig({
|
|
33
|
+
cliOptions: {
|
|
34
|
+
endpoint: options.endpoint,
|
|
35
|
+
apiKey: options.apiKey,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
// Validate that we have endpoint
|
|
39
|
+
if (!config.endpoint) {
|
|
40
|
+
const errors = [
|
|
41
|
+
"Phoenix endpoint not configured. Set PHOENIX_HOST environment variable or use --endpoint flag.",
|
|
42
|
+
];
|
|
43
|
+
writeError({ message: getConfigErrorMessage({ errors }) });
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
// Create client
|
|
47
|
+
const client = createPhoenixClient({ config });
|
|
48
|
+
writeProgress({
|
|
49
|
+
message: `Fetching experiment ${experimentId}...`,
|
|
50
|
+
noProgress: !options.progress,
|
|
51
|
+
});
|
|
52
|
+
// Download experiment JSON
|
|
53
|
+
const jsonData = await downloadExperimentJson(client, experimentId);
|
|
54
|
+
writeProgress({
|
|
55
|
+
message: `Downloaded experiment data`,
|
|
56
|
+
noProgress: !options.progress,
|
|
57
|
+
});
|
|
58
|
+
// Determine output format
|
|
59
|
+
const outputFormat = options.file
|
|
60
|
+
? "json"
|
|
61
|
+
: options.format || "pretty";
|
|
62
|
+
if (options.file && userSpecifiedFormat && options.format !== "json") {
|
|
63
|
+
writeError({
|
|
64
|
+
message: `Warning: --format is ignored when writing to a file; writing JSON to ${options.file}`,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
// Format output
|
|
68
|
+
const output = formatExperimentJsonOutput({
|
|
69
|
+
jsonData,
|
|
70
|
+
format: outputFormat,
|
|
71
|
+
});
|
|
72
|
+
if (options.file) {
|
|
73
|
+
fs.writeFileSync(options.file, output, "utf-8");
|
|
74
|
+
writeProgress({
|
|
75
|
+
message: `Wrote experiment to ${options.file}`,
|
|
76
|
+
noProgress: !options.progress,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
writeOutput({ message: output });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
writeError({
|
|
85
|
+
message: `Error fetching experiment: ${error instanceof Error ? error.message : String(error)}`,
|
|
86
|
+
});
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create the experiment command
|
|
92
|
+
*/
|
|
93
|
+
export function createExperimentCommand() {
|
|
94
|
+
const command = new Command("experiment");
|
|
95
|
+
command
|
|
96
|
+
.description("Fetch a specific experiment by ID with all run data")
|
|
97
|
+
.argument("<experiment-id>", "Experiment identifier")
|
|
98
|
+
.option("--endpoint <url>", "Phoenix API endpoint")
|
|
99
|
+
.option("--api-key <key>", "Phoenix API key for authentication")
|
|
100
|
+
.option("--format <format>", "Output format: pretty, json, or raw", "pretty")
|
|
101
|
+
.option("--no-progress", "Disable progress indicators")
|
|
102
|
+
.option("--file <path>", "Save experiment to file instead of stdout")
|
|
103
|
+
.action(experimentHandler);
|
|
104
|
+
return command;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=experiment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experiment.js","sourceRoot":"","sources":["../../src/commands/experiment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experiments.d.ts","sourceRoot":"","sources":["../../src/commands/experiments.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6OpC;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CA0BlD"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { createPhoenixClient, resolveDatasetId } from "../client.js";
|
|
2
|
+
import { getConfigErrorMessage, resolveConfig } from "../config.js";
|
|
3
|
+
import { writeError, writeOutput, writeProgress } from "../io.js";
|
|
4
|
+
import { formatExperimentsOutput, } from "./formatExperiments.js";
|
|
5
|
+
import { Command } from "commander";
|
|
6
|
+
import * as fs from "fs";
|
|
7
|
+
import * as path from "path";
|
|
8
|
+
/**
|
|
9
|
+
* Fetch experiments for a dataset from Phoenix
|
|
10
|
+
*/
|
|
11
|
+
async function fetchExperiments(client, datasetId, options = {}) {
|
|
12
|
+
const allExperiments = [];
|
|
13
|
+
let cursor;
|
|
14
|
+
const pageLimit = options.limit || 100;
|
|
15
|
+
do {
|
|
16
|
+
const response = await client.GET("/v1/datasets/{dataset_id}/experiments", {
|
|
17
|
+
params: {
|
|
18
|
+
path: {
|
|
19
|
+
dataset_id: datasetId,
|
|
20
|
+
},
|
|
21
|
+
query: {
|
|
22
|
+
cursor,
|
|
23
|
+
limit: pageLimit,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
if (response.error || !response.data) {
|
|
28
|
+
throw new Error(`Failed to fetch experiments: ${response.error}`);
|
|
29
|
+
}
|
|
30
|
+
allExperiments.push(...response.data.data);
|
|
31
|
+
cursor = response.data.next_cursor || undefined;
|
|
32
|
+
// If we've fetched enough for the requested limit, stop
|
|
33
|
+
if (options.limit && allExperiments.length >= options.limit) {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
} while (cursor);
|
|
37
|
+
return allExperiments;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Download experiment JSON data
|
|
41
|
+
*/
|
|
42
|
+
async function downloadExperimentJson(client, experimentId) {
|
|
43
|
+
const response = await client.GET("/v1/experiments/{experiment_id}/json", {
|
|
44
|
+
params: {
|
|
45
|
+
path: {
|
|
46
|
+
experiment_id: experimentId,
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
parseAs: "text",
|
|
50
|
+
});
|
|
51
|
+
if (response.error || response.data === undefined) {
|
|
52
|
+
throw new Error(`Failed to download experiment: ${response.error}`);
|
|
53
|
+
}
|
|
54
|
+
return response.data;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Write experiments to directory
|
|
58
|
+
*/
|
|
59
|
+
async function writeExperimentsToDirectory(client, experiments, directory, options = {}) {
|
|
60
|
+
// Create directory if it doesn't exist
|
|
61
|
+
if (!fs.existsSync(directory)) {
|
|
62
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
63
|
+
}
|
|
64
|
+
let completed = 0;
|
|
65
|
+
for (const experiment of experiments) {
|
|
66
|
+
try {
|
|
67
|
+
writeProgress({
|
|
68
|
+
message: `[${completed + 1}/${experiments.length}] Downloading experiment ${experiment.id}...`,
|
|
69
|
+
noProgress: options.noProgress,
|
|
70
|
+
});
|
|
71
|
+
const jsonData = await downloadExperimentJson(client, experiment.id);
|
|
72
|
+
const filename = `${experiment.id}.json`;
|
|
73
|
+
const filepath = path.join(directory, filename);
|
|
74
|
+
fs.writeFileSync(filepath, jsonData, "utf-8");
|
|
75
|
+
completed++;
|
|
76
|
+
writeProgress({
|
|
77
|
+
message: `[${completed}/${experiments.length}] Wrote ${filename}`,
|
|
78
|
+
noProgress: options.noProgress,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
writeProgress({
|
|
83
|
+
message: `Warning: Failed to download experiment ${experiment.id}: ${error instanceof Error ? error.message : String(error)}`,
|
|
84
|
+
noProgress: options.noProgress,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Experiments command handler
|
|
91
|
+
*/
|
|
92
|
+
async function experimentsHandler(directory, options) {
|
|
93
|
+
try {
|
|
94
|
+
const userSpecifiedFormat = process.argv.includes("--format") ||
|
|
95
|
+
process.argv.some((arg) => arg.startsWith("--format="));
|
|
96
|
+
// Resolve configuration
|
|
97
|
+
const config = resolveConfig({
|
|
98
|
+
cliOptions: {
|
|
99
|
+
endpoint: options.endpoint,
|
|
100
|
+
apiKey: options.apiKey,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
// Validate that we have endpoint
|
|
104
|
+
if (!config.endpoint) {
|
|
105
|
+
const errors = [
|
|
106
|
+
"Phoenix endpoint not configured. Set PHOENIX_HOST environment variable or use --endpoint flag.",
|
|
107
|
+
];
|
|
108
|
+
writeError({ message: getConfigErrorMessage({ errors }) });
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
// Validate that we have dataset
|
|
112
|
+
if (!options.dataset) {
|
|
113
|
+
writeError({
|
|
114
|
+
message: "Dataset not specified. Use --dataset <name-or-id> to specify a dataset.",
|
|
115
|
+
});
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
// Create client
|
|
119
|
+
const client = createPhoenixClient({ config });
|
|
120
|
+
writeProgress({
|
|
121
|
+
message: `Resolving dataset: ${options.dataset}`,
|
|
122
|
+
noProgress: !options.progress,
|
|
123
|
+
});
|
|
124
|
+
// Resolve dataset ID
|
|
125
|
+
const datasetId = await resolveDatasetId({
|
|
126
|
+
client,
|
|
127
|
+
datasetIdentifier: options.dataset,
|
|
128
|
+
});
|
|
129
|
+
writeProgress({
|
|
130
|
+
message: `Fetching experiments for dataset ${datasetId}...`,
|
|
131
|
+
noProgress: !options.progress,
|
|
132
|
+
});
|
|
133
|
+
// Fetch experiments
|
|
134
|
+
const experiments = await fetchExperiments(client, datasetId, {
|
|
135
|
+
limit: options.limit,
|
|
136
|
+
});
|
|
137
|
+
if (experiments.length === 0) {
|
|
138
|
+
writeProgress({
|
|
139
|
+
message: "No experiments found",
|
|
140
|
+
noProgress: !options.progress,
|
|
141
|
+
});
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
writeProgress({
|
|
145
|
+
message: `Found ${experiments.length} experiment(s)`,
|
|
146
|
+
noProgress: !options.progress,
|
|
147
|
+
});
|
|
148
|
+
// Output experiments
|
|
149
|
+
if (directory) {
|
|
150
|
+
if (userSpecifiedFormat && options.format && options.format !== "json") {
|
|
151
|
+
writeError({
|
|
152
|
+
message: `Warning: --format is ignored when writing experiments to a directory; writing JSON files to ${directory}`,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
// Write to directory
|
|
156
|
+
writeProgress({
|
|
157
|
+
message: `Writing experiments to ${directory}...`,
|
|
158
|
+
noProgress: !options.progress,
|
|
159
|
+
});
|
|
160
|
+
await writeExperimentsToDirectory(client, experiments, directory, {
|
|
161
|
+
noProgress: !options.progress,
|
|
162
|
+
});
|
|
163
|
+
writeProgress({
|
|
164
|
+
message: `Done! Wrote ${experiments.length} experiment(s) to ${directory}`,
|
|
165
|
+
noProgress: !options.progress,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
// Write to stdout
|
|
170
|
+
const output = formatExperimentsOutput({
|
|
171
|
+
experiments,
|
|
172
|
+
format: options.format,
|
|
173
|
+
});
|
|
174
|
+
writeOutput({ message: output });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
writeError({
|
|
179
|
+
message: `Error fetching experiments: ${error instanceof Error ? error.message : String(error)}`,
|
|
180
|
+
});
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Create the experiments command
|
|
186
|
+
*/
|
|
187
|
+
export function createExperimentsCommand() {
|
|
188
|
+
const command = new Command("experiments");
|
|
189
|
+
command
|
|
190
|
+
.description("List experiments for a dataset")
|
|
191
|
+
.argument("[directory]", "Directory to write experiment files (optional, downloads full JSON data)")
|
|
192
|
+
.requiredOption("--dataset <name-or-id>", "Dataset name or ID (required)")
|
|
193
|
+
.option("--endpoint <url>", "Phoenix API endpoint")
|
|
194
|
+
.option("--api-key <key>", "Phoenix API key for authentication")
|
|
195
|
+
.option("--format <format>", "Output format: pretty, json, or raw", "pretty")
|
|
196
|
+
.option("--no-progress", "Disable progress indicators")
|
|
197
|
+
.option("--limit <number>", "Maximum number of experiments to fetch", parseInt)
|
|
198
|
+
.action(experimentsHandler);
|
|
199
|
+
return command;
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=experiments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experiments.js","sourceRoot":"","sources":["../../src/commands/experiments.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,EACL,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAa7B;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,MAAqB,EACrB,SAAiB,EACjB,UAA8B,EAAE;IAEhC,MAAM,cAAc,GAAiB,EAAE,CAAC;IACxC,IAAI,MAA0B,CAAC;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;IAEvC,GAAG,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uCAAuC,EAAE;YACzE,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,UAAU,EAAE,SAAS;iBACtB;gBACD,KAAK,EAAE;oBACL,MAAM;oBACN,KAAK,EAAE,SAAS;iBACjB;aACF;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAEhD,wDAAwD;QACxD,IAAI,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5D,MAAM;QACR,CAAC;IACH,CAAC,QAAQ,MAAM,EAAE;IAEjB,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACnC,MAAqB,EACrB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,sCAAsC,EAAE;QACxE,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,aAAa,EAAE,YAAY;aAC5B;SACF;QACD,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,QAAQ,CAAC,IAAc,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,2BAA2B,CACxC,MAAqB,EACrB,WAAyB,EACzB,SAAiB,EACjB,UAEI,EAAE;IAEN,uCAAuC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,aAAa,CAAC;gBACZ,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,4BAA4B,UAAU,CAAC,EAAE,KAAK;gBAC9F,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YAErE,MAAM,QAAQ,GAAG,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE9C,SAAS,EAAE,CAAC;YACZ,aAAa,CAAC;gBACZ,OAAO,EAAE,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,WAAW,QAAQ,EAAE;gBACjE,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC;gBACZ,OAAO,EAAE,0CAA0C,UAAU,CAAC,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC7H,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,SAA6B,EAC7B,OAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,mBAAmB,GACvB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAE1D,wBAAwB;QACxB,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,UAAU,EAAE;gBACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB;SACF,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG;gBACb,gGAAgG;aACjG,CAAC;YACF,UAAU,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,UAAU,CAAC;gBACT,OAAO,EACL,yEAAyE;aAC5E,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,gBAAgB;QAChB,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAE/C,aAAa,CAAC;YACZ,OAAO,EAAE,sBAAsB,OAAO,CAAC,OAAO,EAAE;YAChD,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;SAC9B,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;YACvC,MAAM;YACN,iBAAiB,EAAE,OAAO,CAAC,OAAO;SACnC,CAAC,CAAC;QAEH,aAAa,CAAC;YACZ,OAAO,EAAE,oCAAoC,SAAS,KAAK;YAC3D,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;SAC9B,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE;YAC5D,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC;gBACZ,OAAO,EAAE,sBAAsB;gBAC/B,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;aAC9B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,aAAa,CAAC;YACZ,OAAO,EAAE,SAAS,WAAW,CAAC,MAAM,gBAAgB;YACpD,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;SAC9B,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,mBAAmB,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACvE,UAAU,CAAC;oBACT,OAAO,EAAE,+FAA+F,SAAS,EAAE;iBACpH,CAAC,CAAC;YACL,CAAC;YAED,qBAAqB;YACrB,aAAa,CAAC;gBACZ,OAAO,EAAE,0BAA0B,SAAS,KAAK;gBACjD,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;aAC9B,CAAC,CAAC;YAEH,MAAM,2BAA2B,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE;gBAChE,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;aAC9B,CAAC,CAAC;YAEH,aAAa,CAAC;gBACZ,OAAO,EAAE,eAAe,WAAW,CAAC,MAAM,qBAAqB,SAAS,EAAE;gBAC1E,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;aAC9B,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,MAAM,MAAM,GAAG,uBAAuB,CAAC;gBACrC,WAAW;gBACX,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YACH,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC;YACT,OAAO,EAAE,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACjG,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAE3C,OAAO;SACJ,WAAW,CAAC,gCAAgC,CAAC;SAC7C,QAAQ,CACP,aAAa,EACb,0EAA0E,CAC3E;SACA,cAAc,CAAC,wBAAwB,EAAE,+BAA+B,CAAC;SACzE,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;SAC/D,MAAM,CACL,mBAAmB,EACnB,qCAAqC,EACrC,QAAQ,CACT;SACA,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CACL,kBAAkB,EAClB,wCAAwC,EACxC,QAAQ,CACT;SACA,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { componentsV1 } from "@arizeai/phoenix-client";
|
|
2
|
+
export type OutputFormat = "pretty" | "json" | "raw";
|
|
3
|
+
type DatasetExample = componentsV1["schemas"]["DatasetExample"];
|
|
4
|
+
export interface DatasetExamplesData {
|
|
5
|
+
dataset_id: string;
|
|
6
|
+
version_id: string;
|
|
7
|
+
filtered_splits?: string[];
|
|
8
|
+
examples: DatasetExample[];
|
|
9
|
+
}
|
|
10
|
+
export interface FormatDatasetExamplesOutputOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Dataset examples data to format.
|
|
13
|
+
*/
|
|
14
|
+
data: DatasetExamplesData;
|
|
15
|
+
/**
|
|
16
|
+
* Dataset name (for display purposes).
|
|
17
|
+
*/
|
|
18
|
+
datasetName?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Output format. Defaults to `"pretty"`.
|
|
21
|
+
*/
|
|
22
|
+
format?: OutputFormat;
|
|
23
|
+
}
|
|
24
|
+
export declare function formatDatasetExamplesOutput({ data, datasetName, format, }: FormatDatasetExamplesOutputOptions): string;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=formatDataset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatDataset.d.ts","sourceRoot":"","sources":["../../src/commands/formatDataset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD,KAAK,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAkC;IACjD;;OAEG;IACH,IAAI,EAAE,mBAAmB,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,IAAI,EACJ,WAAW,EACX,MAAM,GACP,EAAE,kCAAkC,GAAG,MAAM,CAS7C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export function formatDatasetExamplesOutput({ data, datasetName, format, }) {
|
|
2
|
+
const selected = format || "pretty";
|
|
3
|
+
if (selected === "raw") {
|
|
4
|
+
return JSON.stringify(data);
|
|
5
|
+
}
|
|
6
|
+
if (selected === "json") {
|
|
7
|
+
return JSON.stringify(data, null, 2);
|
|
8
|
+
}
|
|
9
|
+
return formatDatasetExamplesPretty(data, datasetName);
|
|
10
|
+
}
|
|
11
|
+
function formatDatasetExamplesPretty(data, datasetName) {
|
|
12
|
+
const lines = [];
|
|
13
|
+
// Header
|
|
14
|
+
const displayName = datasetName || data.dataset_id;
|
|
15
|
+
lines.push(`Dataset: ${displayName} (${data.dataset_id})`);
|
|
16
|
+
lines.push(`Version: ${data.version_id}`);
|
|
17
|
+
if (data.filtered_splits && data.filtered_splits.length > 0) {
|
|
18
|
+
lines.push(`Splits: ${data.filtered_splits.join(", ")}`);
|
|
19
|
+
}
|
|
20
|
+
lines.push(`Examples: ${data.examples.length}`);
|
|
21
|
+
lines.push("");
|
|
22
|
+
if (data.examples.length === 0) {
|
|
23
|
+
lines.push("No examples found");
|
|
24
|
+
return lines.join("\n");
|
|
25
|
+
}
|
|
26
|
+
// Examples
|
|
27
|
+
for (const example of data.examples) {
|
|
28
|
+
lines.push(`┌─ Example: ${example.id}`);
|
|
29
|
+
const inputPreview = truncateJson(example.input, 150);
|
|
30
|
+
lines.push(`│ Input: ${inputPreview}`);
|
|
31
|
+
const outputPreview = truncateJson(example.output, 150);
|
|
32
|
+
lines.push(`│ Output: ${outputPreview}`);
|
|
33
|
+
if (example.metadata && Object.keys(example.metadata).length > 0) {
|
|
34
|
+
const metadataPreview = truncateJson(example.metadata, 100);
|
|
35
|
+
lines.push(`│ Metadata: ${metadataPreview}`);
|
|
36
|
+
}
|
|
37
|
+
lines.push(`└─`);
|
|
38
|
+
lines.push("");
|
|
39
|
+
}
|
|
40
|
+
return lines.join("\n").trimEnd();
|
|
41
|
+
}
|
|
42
|
+
function truncateJson(obj, maxLength) {
|
|
43
|
+
if (obj === null || obj === undefined) {
|
|
44
|
+
return "null";
|
|
45
|
+
}
|
|
46
|
+
let str;
|
|
47
|
+
try {
|
|
48
|
+
str = JSON.stringify(obj);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
str = String(obj);
|
|
52
|
+
}
|
|
53
|
+
// Clean up whitespace for display
|
|
54
|
+
str = str.replace(/\s+/g, " ").trim();
|
|
55
|
+
if (str.length <= maxLength) {
|
|
56
|
+
return str;
|
|
57
|
+
}
|
|
58
|
+
return `${str.slice(0, maxLength)}…`;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=formatDataset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatDataset.js","sourceRoot":"","sources":["../../src/commands/formatDataset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { componentsV1 } from "@arizeai/phoenix-client";
|
|
2
|
+
export type OutputFormat = "pretty" | "json" | "raw";
|
|
3
|
+
type Dataset = componentsV1["schemas"]["Dataset"];
|
|
4
|
+
export interface FormatDatasetsOutputOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Datasets to format.
|
|
7
|
+
*/
|
|
8
|
+
datasets: Dataset[];
|
|
9
|
+
/**
|
|
10
|
+
* Output format. Defaults to `"pretty"`.
|
|
11
|
+
*/
|
|
12
|
+
format?: OutputFormat;
|
|
13
|
+
}
|
|
14
|
+
export declare function formatDatasetsOutput({ datasets, format, }: FormatDatasetsOutputOptions): string;
|
|
15
|
+
export interface FormatDatasetOutputOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Dataset to format.
|
|
18
|
+
*/
|
|
19
|
+
dataset: Dataset;
|
|
20
|
+
/**
|
|
21
|
+
* Output format. Defaults to `"pretty"`.
|
|
22
|
+
*/
|
|
23
|
+
format?: OutputFormat;
|
|
24
|
+
}
|
|
25
|
+
export declare function formatDatasetOutput({ dataset, format, }: FormatDatasetOutputOptions): string;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=formatDatasets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatDatasets.d.ts","sourceRoot":"","sources":["../../src/commands/formatDatasets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD,KAAK,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;AAElD,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,MAAM,GACP,EAAE,2BAA2B,GAAG,MAAM,CAStC;AAiCD,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,MAAM,GACP,EAAE,0BAA0B,GAAG,MAAM,CASrC"}
|