@arizeai/phoenix-cli 0.12.0 → 1.0.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.
Files changed (69) hide show
  1. package/README.md +70 -55
  2. package/build/cli.d.ts.map +1 -1
  3. package/build/cli.js +3 -8
  4. package/build/cli.js.map +1 -1
  5. package/build/commands/auth.d.ts +16 -0
  6. package/build/commands/auth.d.ts.map +1 -1
  7. package/build/commands/auth.js +94 -9
  8. package/build/commands/auth.js.map +1 -1
  9. package/build/commands/dataset.d.ts +6 -1
  10. package/build/commands/dataset.d.ts.map +1 -1
  11. package/build/commands/dataset.js +93 -4
  12. package/build/commands/dataset.js.map +1 -1
  13. package/build/commands/experiment.d.ts +3 -1
  14. package/build/commands/experiment.d.ts.map +1 -1
  15. package/build/commands/experiment.js +175 -8
  16. package/build/commands/experiment.js.map +1 -1
  17. package/build/commands/index.d.ts +2 -7
  18. package/build/commands/index.d.ts.map +1 -1
  19. package/build/commands/index.js +2 -7
  20. package/build/commands/index.js.map +1 -1
  21. package/build/commands/project.d.ts +7 -0
  22. package/build/commands/project.d.ts.map +1 -0
  23. package/build/commands/{projects.js → project.js} +15 -16
  24. package/build/commands/project.js.map +1 -0
  25. package/build/commands/prompt.d.ts +3 -1
  26. package/build/commands/prompt.d.ts.map +1 -1
  27. package/build/commands/prompt.js +90 -4
  28. package/build/commands/prompt.js.map +1 -1
  29. package/build/commands/session.d.ts +3 -1
  30. package/build/commands/session.d.ts.map +1 -1
  31. package/build/commands/session.js +124 -10
  32. package/build/commands/session.js.map +1 -1
  33. package/build/commands/span.d.ts +10 -0
  34. package/build/commands/span.d.ts.map +1 -0
  35. package/build/commands/{spans.js → span.js} +15 -8
  36. package/build/commands/span.js.map +1 -0
  37. package/build/commands/trace.d.ts +3 -1
  38. package/build/commands/trace.d.ts.map +1 -1
  39. package/build/commands/trace.js +259 -8
  40. package/build/commands/trace.js.map +1 -1
  41. package/build/config.js +1 -1
  42. package/build/config.js.map +1 -1
  43. package/package.json +6 -6
  44. package/build/commands/datasets.d.ts +0 -6
  45. package/build/commands/datasets.d.ts.map +0 -1
  46. package/build/commands/datasets.js +0 -98
  47. package/build/commands/datasets.js.map +0 -1
  48. package/build/commands/experiments.d.ts +0 -6
  49. package/build/commands/experiments.d.ts.map +0 -1
  50. package/build/commands/experiments.js +0 -202
  51. package/build/commands/experiments.js.map +0 -1
  52. package/build/commands/projects.d.ts +0 -6
  53. package/build/commands/projects.d.ts.map +0 -1
  54. package/build/commands/projects.js.map +0 -1
  55. package/build/commands/prompts.d.ts +0 -6
  56. package/build/commands/prompts.d.ts.map +0 -1
  57. package/build/commands/prompts.js +0 -98
  58. package/build/commands/prompts.js.map +0 -1
  59. package/build/commands/sessions.d.ts +0 -6
  60. package/build/commands/sessions.d.ts.map +0 -1
  61. package/build/commands/sessions.js +0 -127
  62. package/build/commands/sessions.js.map +0 -1
  63. package/build/commands/spans.d.ts +0 -6
  64. package/build/commands/spans.d.ts.map +0 -1
  65. package/build/commands/spans.js.map +0 -1
  66. package/build/commands/traces.d.ts +0 -6
  67. package/build/commands/traces.d.ts.map +0 -1
  68. package/build/commands/traces.js +0 -278
  69. package/build/commands/traces.js.map +0 -1
@@ -1,6 +0,0 @@
1
- import { Command } from "commander";
2
- /**
3
- * Create the spans command
4
- */
5
- export declare function createSpansCommand(): Command;
6
- //# sourceMappingURL=spans.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/commands/spans.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0PpC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA6C5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"spans.js","sourceRoot":"","sources":["../../src/commands/spans.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { Command } from "commander";
2
- /**
3
- * Create the traces command
4
- */
5
- export declare function createTracesCommand(): Command;
6
- //# sourceMappingURL=traces.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traces.d.ts","sourceRoot":"","sources":["../../src/commands/traces.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuVpC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAwC7C"}
@@ -1,278 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- import { Command } from "commander";
4
- import { createPhoenixClient, resolveProjectId } from "../client.js";
5
- import { getConfigErrorMessage, resolveConfig, validateConfig, } from "../config.js";
6
- import { ExitCode, getExitCodeForError } from "../exitCodes.js";
7
- import { writeError, writeOutput, writeProgress } from "../io.js";
8
- import { buildTrace, groupSpansByTrace } from "../trace.js";
9
- import { formatTracesOutput } from "./formatTraces.js";
10
- import { fetchSpanAnnotations } from "./spanAnnotations.js";
11
- /**
12
- * Fetch spans for a project within a time range
13
- */
14
- async function fetchSpans(client, projectIdentifier, options = {}) {
15
- const allSpans = [];
16
- let cursor;
17
- const pageLimit = 1000; // Max per page
18
- do {
19
- const response = await client.GET("/v1/projects/{project_identifier}/spans", {
20
- params: {
21
- path: {
22
- project_identifier: projectIdentifier,
23
- },
24
- query: {
25
- cursor,
26
- limit: pageLimit,
27
- start_time: options.startTime,
28
- end_time: options.endTime,
29
- trace_id: options.traceIds,
30
- },
31
- },
32
- });
33
- if (response.error || !response.data) {
34
- throw new Error(`Failed to fetch spans: ${response.error}`);
35
- }
36
- allSpans.push(...response.data.data);
37
- cursor = response.data.next_cursor || undefined;
38
- // Stop if we have enough spans for the requested number of traces
39
- if (options.limit && allSpans.length >= options.limit * 10) {
40
- break;
41
- }
42
- } while (cursor);
43
- return allSpans;
44
- }
45
- /**
46
- * Get the last N traces
47
- */
48
- async function getLastNTraces(client, projectIdentifier, limit, options = {}) {
49
- // Calculate time range
50
- let startTime;
51
- if (options.since) {
52
- startTime = options.since;
53
- }
54
- else if (options.lastNMinutes) {
55
- const now = new Date();
56
- const start = new Date(now.getTime() - options.lastNMinutes * 60 * 1000);
57
- startTime = start.toISOString();
58
- }
59
- // Fetch spans
60
- const spans = await fetchSpans(client, projectIdentifier, {
61
- startTime,
62
- limit,
63
- });
64
- // Group spans by trace
65
- const traceGroups = groupSpansByTrace({ spans });
66
- // Build trace objects
67
- const traces = [];
68
- for (const [traceId, traceSpans] of traceGroups.entries()) {
69
- try {
70
- const trace = buildTrace({ spans: traceSpans });
71
- traces.push(trace);
72
- }
73
- catch (error) {
74
- writeProgress({
75
- message: `Warning: Failed to build trace ${traceId}: ${error instanceof Error ? error.message : String(error)}`,
76
- noProgress: false,
77
- });
78
- }
79
- }
80
- // Sort by start time (newest first)
81
- traces.sort((a, b) => {
82
- if (!a.startTime || !b.startTime)
83
- return 0;
84
- return new Date(b.startTime).getTime() - new Date(a.startTime).getTime();
85
- });
86
- // Return last N traces
87
- return traces.slice(0, limit);
88
- }
89
- /**
90
- * Write traces to directory
91
- */
92
- async function writeTracesToDirectory(traces, directory, options = {}) {
93
- // Create directory if it doesn't exist
94
- if (!fs.existsSync(directory)) {
95
- fs.mkdirSync(directory, { recursive: true });
96
- }
97
- const maxConcurrent = options.maxConcurrent || 10;
98
- const chunks = [];
99
- // Split into chunks for concurrent processing
100
- for (let i = 0; i < traces.length; i += maxConcurrent) {
101
- chunks.push(traces.slice(i, i + maxConcurrent));
102
- }
103
- let completed = 0;
104
- for (const chunk of chunks) {
105
- await Promise.all(chunk.map(async (trace) => {
106
- try {
107
- // Write to file
108
- const filename = `${trace.traceId}.json`;
109
- const filepath = path.join(directory, filename);
110
- // Always write JSON when writing to files.
111
- const content = JSON.stringify(trace, null, 2);
112
- fs.writeFileSync(filepath, content, "utf-8");
113
- completed++;
114
- writeProgress({
115
- message: `[${completed}/${traces.length}] Wrote ${filename}`,
116
- noProgress: options.noProgress,
117
- });
118
- }
119
- catch (error) {
120
- writeProgress({
121
- message: `Warning: Failed to write trace ${trace.traceId}: ${error instanceof Error ? error.message : String(error)}`,
122
- noProgress: options.noProgress,
123
- });
124
- }
125
- }));
126
- }
127
- }
128
- /**
129
- * Traces command handler
130
- */
131
- async function tracesHandler(directory, options) {
132
- try {
133
- const userSpecifiedFormat = process.argv.includes("--format") ||
134
- process.argv.some((arg) => arg.startsWith("--format="));
135
- // Resolve configuration
136
- const config = resolveConfig({
137
- cliOptions: {
138
- endpoint: options.endpoint,
139
- project: options.project,
140
- apiKey: options.apiKey,
141
- },
142
- });
143
- // Validate configuration
144
- const validation = validateConfig({ config });
145
- if (!validation.valid) {
146
- writeError({
147
- message: getConfigErrorMessage({ errors: validation.errors }),
148
- });
149
- process.exit(ExitCode.INVALID_ARGUMENT);
150
- }
151
- // Create client
152
- const client = createPhoenixClient({ config });
153
- // Resolve project ID
154
- const projectIdentifier = config.project;
155
- if (!projectIdentifier) {
156
- writeError({ message: "Project not configured" });
157
- process.exit(ExitCode.INVALID_ARGUMENT);
158
- }
159
- writeProgress({
160
- message: `Resolving project: ${projectIdentifier}`,
161
- noProgress: !options.progress,
162
- });
163
- const projectId = await resolveProjectId({
164
- client,
165
- projectIdentifier,
166
- });
167
- // Fetch traces
168
- const limit = options.limit || 10;
169
- writeProgress({
170
- message: `Fetching last ${limit} trace(s)...`,
171
- noProgress: !options.progress,
172
- });
173
- const traces = await getLastNTraces(client, projectId, limit, {
174
- lastNMinutes: options.lastNMinutes,
175
- since: options.since,
176
- });
177
- if (traces.length === 0) {
178
- writeProgress({
179
- message: "No traces found",
180
- noProgress: !options.progress,
181
- });
182
- return;
183
- }
184
- writeProgress({
185
- message: `Found ${traces.length} trace(s)`,
186
- noProgress: !options.progress,
187
- });
188
- if (options.includeAnnotations) {
189
- writeProgress({
190
- message: "Fetching span annotations...",
191
- noProgress: !options.progress,
192
- });
193
- const spanIds = traces
194
- .flatMap((trace) => trace.spans)
195
- .map((span) => span.context?.span_id)
196
- .filter((spanId) => Boolean(spanId));
197
- const annotations = await fetchSpanAnnotations({
198
- client,
199
- projectIdentifier: projectId,
200
- spanIds,
201
- maxConcurrent: options.maxConcurrent,
202
- });
203
- const annotationsBySpanId = new Map();
204
- for (const annotation of annotations) {
205
- const spanId = annotation.span_id;
206
- if (!annotationsBySpanId.has(spanId)) {
207
- annotationsBySpanId.set(spanId, []);
208
- }
209
- annotationsBySpanId.get(spanId).push(annotation);
210
- }
211
- for (const trace of traces) {
212
- for (const span of trace.spans) {
213
- const spanId = span.context?.span_id;
214
- if (!spanId)
215
- continue;
216
- const spanAnnotations = annotationsBySpanId.get(spanId);
217
- if (spanAnnotations) {
218
- span.annotations = spanAnnotations;
219
- }
220
- }
221
- }
222
- }
223
- // Output traces
224
- if (directory) {
225
- if (userSpecifiedFormat && options.format && options.format !== "json") {
226
- writeError({
227
- message: `Warning: --format is ignored when writing traces to a directory; writing JSON files to ${directory}`,
228
- });
229
- }
230
- // Write to directory
231
- writeProgress({
232
- message: `Writing traces to ${directory}...`,
233
- noProgress: !options.progress,
234
- });
235
- await writeTracesToDirectory(traces, directory, {
236
- noProgress: !options.progress,
237
- maxConcurrent: options.maxConcurrent,
238
- });
239
- writeProgress({
240
- message: `Done! Wrote ${traces.length} trace(s) to ${directory}`,
241
- noProgress: !options.progress,
242
- });
243
- }
244
- else {
245
- // Write to stdout
246
- const output = formatTracesOutput({ traces, format: options.format });
247
- writeOutput({ message: output });
248
- }
249
- }
250
- catch (error) {
251
- writeError({
252
- message: `Error fetching traces: ${error instanceof Error ? error.message : String(error)}`,
253
- });
254
- process.exit(getExitCodeForError(error));
255
- }
256
- }
257
- /**
258
- * Create the traces command
259
- */
260
- export function createTracesCommand() {
261
- const command = new Command("traces");
262
- command
263
- .description("Fetch recent traces for the configured project")
264
- .argument("[directory]", "Directory to write trace files (optional)")
265
- .option("--endpoint <url>", "Phoenix API endpoint")
266
- .option("--project <name>", "Project name or ID")
267
- .option("--api-key <key>", "Phoenix API key for authentication")
268
- .option("--format <format>", "Output format: pretty, json, or raw", "pretty")
269
- .option("--no-progress", "Disable progress indicators")
270
- .option("-n, --limit <number>", "Fetch the last N traces (newest first)", parseInt, 10)
271
- .option("--last-n-minutes <number>", "Only fetch traces from the last N minutes", parseInt)
272
- .option("--since <timestamp>", "Fetch traces since this ISO timestamp")
273
- .option("--max-concurrent <number>", "Maximum concurrent fetches for bulk operations", parseInt, 10)
274
- .option("--include-annotations", "Include span annotations in the trace export")
275
- .action(tracesHandler);
276
- return command;
277
- }
278
- //# sourceMappingURL=traces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traces.js","sourceRoot":"","sources":["../../src/commands/traces.ts"],"names":[],"mappings":"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"}