@arizeai/phoenix-cli 0.9.2 → 0.10.1

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 CHANGED
@@ -99,6 +99,49 @@ px trace abc123def456 --file trace.json
99
99
 
100
100
  ---
101
101
 
102
+ ### `px spans [file]`
103
+
104
+ Fetch spans for the configured project with filtering options. Output is JSON.
105
+
106
+ ```bash
107
+ px spans --limit 50 # stdout (pretty)
108
+ px spans --span-kind LLM --limit 20 # only LLM spans
109
+ px spans --status-code ERROR --format raw --no-progress # pipe-friendly error spans
110
+ px spans --name chat_completion --trace-id abc123 # filter by name and trace
111
+ px spans --parent-id null # root spans only
112
+ px spans spans.json --limit 100 --include-annotations # save to file with annotations
113
+ px spans --last-n-minutes 30 --span-kind TOOL RETRIEVER # multiple span kinds
114
+ ```
115
+
116
+ | Option | Description | Default |
117
+ | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------- |
118
+ | `[file]` | Save spans as JSON to file | stdout |
119
+ | `-n, --limit <number>` | Maximum number of spans (newest first) | `100` |
120
+ | `--last-n-minutes <number>` | Only spans from the last N minutes | — |
121
+ | `--since <timestamp>` | Spans since ISO timestamp | — |
122
+ | `--span-kind <kinds...>` | Filter by span kind (`LLM`, `CHAIN`, `TOOL`, `RETRIEVER`, `EMBEDDING`, `AGENT`, `RERANKER`, `GUARDRAIL`, `EVALUATOR`, `UNKNOWN`) | — |
123
+ | `--status-code <codes...>` | Filter by status code (`OK`, `ERROR`, `UNSET`) | — |
124
+ | `--name <names...>` | Filter by span name(s) | — |
125
+ | `--trace-id <ids...>` | Filter by trace ID(s) | — |
126
+ | `--parent-id <id>` | Filter by parent span ID (use `"null"` for root spans only) | — |
127
+ | `--include-annotations` | Include span annotations in the output | — |
128
+ | `--format <format>` | `pretty`, `json`, or `raw` | `pretty` |
129
+ | `--no-progress` | Suppress progress output | — |
130
+
131
+ ```bash
132
+ # Find all ERROR spans
133
+ px spans --status-code ERROR --format raw --no-progress | jq '.[] | {name, status_code}'
134
+
135
+ # Get LLM spans with token counts
136
+ px spans --span-kind LLM --format raw --no-progress | \
137
+ jq '.[] | {name, model: .attributes["llm.model_name"], tokens: (.attributes["llm.token_count.prompt"] + .attributes["llm.token_count.completion"])}'
138
+
139
+ # Root spans only, sorted by name
140
+ px spans --parent-id null --format raw --no-progress | jq 'sort_by(.name)'
141
+ ```
142
+
143
+ ---
144
+
102
145
  ### `px datasets`
103
146
 
104
147
  List all datasets.
@@ -176,6 +219,78 @@ px prompt my-evaluator --tag production --format json | jq '.template'
176
219
 
177
220
  ---
178
221
 
222
+ ### `px projects`
223
+
224
+ List all available Phoenix projects.
225
+
226
+ ```bash
227
+ px projects # pretty output
228
+ px projects --format raw --no-progress | jq '.[].name'
229
+ px projects --limit 5
230
+ ```
231
+
232
+ | Option | Description | Default |
233
+ | ------------------- | ----------------------------------- | -------- |
234
+ | `--limit <number>` | Maximum number of projects per page | — |
235
+ | `--format <format>` | `pretty`, `json`, or `raw` | `pretty` |
236
+ | `--no-progress` | Suppress progress output | — |
237
+
238
+ ---
239
+
240
+ ### `px sessions`
241
+
242
+ List sessions for a project.
243
+
244
+ ```bash
245
+ px sessions # latest 10 sessions
246
+ px sessions --limit 20 --order asc # oldest first
247
+ px sessions --format raw --no-progress | jq '.[].session_id'
248
+ ```
249
+
250
+ | Option | Description | Default |
251
+ | ---------------------- | --------------------------- | -------- |
252
+ | `-n, --limit <number>` | Maximum number of sessions | `10` |
253
+ | `--order <order>` | Sort order: `asc` or `desc` | `desc` |
254
+ | `--format <format>` | `pretty`, `json`, or `raw` | `pretty` |
255
+ | `--no-progress` | Suppress progress output | — |
256
+
257
+ ---
258
+
259
+ ### `px session <session-id>`
260
+
261
+ View a session's conversation flow.
262
+
263
+ ```bash
264
+ px session my-session-id
265
+ px session my-session-id --file session.json
266
+ px session my-session-id --include-annotations --format raw | jq '.traces'
267
+ ```
268
+
269
+ | Option | Description | Default |
270
+ | ----------------------- | -------------------------------------- | -------- |
271
+ | `--file <path>` | Save session to file instead of stdout | — |
272
+ | `--include-annotations` | Include session annotations | — |
273
+ | `--format <format>` | `pretty`, `json`, or `raw` | `pretty` |
274
+ | `--no-progress` | Suppress progress output | — |
275
+
276
+ ---
277
+
278
+ ### `px auth status`
279
+
280
+ Show current Phoenix authentication status, including the configured endpoint, whether you are authenticated or anonymous, and an obscured API key.
281
+
282
+ ```bash
283
+ px auth status
284
+ px auth status --endpoint http://localhost:6006
285
+ ```
286
+
287
+ | Option | Description | Default |
288
+ | ------------------ | -------------------- | ------- |
289
+ | `--endpoint <url>` | Phoenix API endpoint | — |
290
+ | `--api-key <key>` | Phoenix API key | — |
291
+
292
+ ---
293
+
179
294
  ### `px api graphql <query>`
180
295
 
181
296
  Make authenticated GraphQL queries against the Phoenix API. Output is `{"data": {...}}` JSON — pipe with `jq '.data.<field>'` to extract values. Only queries are permitted; mutations and subscriptions are rejected.
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAwBA,wBAAgB,IAAI,SA8BnB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAyBA,wBAAgB,IAAI,SA+BnB"}
package/build/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from "commander";
3
3
  import { printBanner } from "./banner.js";
4
- import { createAnnotationConfigCommand, createApiCommand, createAuthCommand, createDatasetCommand, createDatasetsCommand, createDocsCommand, createExperimentCommand, createExperimentsCommand, createProjectsCommand, createPromptCommand, createPromptsCommand, createSessionCommand, createSessionsCommand, createTraceCommand, createTracesCommand, } from "./commands/index.js";
4
+ import { createAnnotationConfigCommand, createApiCommand, createAuthCommand, createDatasetCommand, createDatasetsCommand, createDocsCommand, createExperimentCommand, createExperimentsCommand, createProjectsCommand, createPromptCommand, createPromptsCommand, createSessionCommand, createSessionsCommand, createSpansCommand, createTraceCommand, createTracesCommand, } from "./commands/index.js";
5
5
  // Phoenix CLI Main Logic
6
6
  export function main() {
7
7
  const program = new Command();
@@ -13,6 +13,7 @@ export function main() {
13
13
  program.addCommand(createProjectsCommand());
14
14
  program.addCommand(createTracesCommand());
15
15
  program.addCommand(createTraceCommand());
16
+ program.addCommand(createSpansCommand());
16
17
  program.addCommand(createDatasetsCommand());
17
18
  program.addCommand(createDatasetCommand());
18
19
  program.addCommand(createSessionsCommand());
package/build/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,yBAAyB;AACzB,MAAM,UAAU,IAAI;IAClB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAElC,oBAAoB;IACpB,OAAO,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,8CAA8C;IAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,yBAAyB;AACzB,MAAM,UAAU,IAAI;IAClB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAElC,oBAAoB;IACpB,OAAO,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,8CAA8C;IAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SpanWithAnnotations } from "../trace.js";
2
+ export type OutputFormat = "pretty" | "json" | "raw";
3
+ export interface FormatSpansOutputOptions {
4
+ spans: SpanWithAnnotations[];
5
+ format?: OutputFormat;
6
+ }
7
+ export declare function formatSpansOutput({ spans, format, }: FormatSpansOutputOptions): string;
8
+ //# sourceMappingURL=formatSpans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatSpans.d.ts","sourceRoot":"","sources":["../../src/commands/formatSpans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,MAAM,GACP,EAAE,wBAAwB,GAAG,MAAM,CAYnC"}
@@ -0,0 +1,69 @@
1
+ import { formatTable } from "./formatTable.js";
2
+ export function formatSpansOutput({ spans, format, }) {
3
+ const selected = format || "pretty";
4
+ if (selected === "raw") {
5
+ return JSON.stringify(spans);
6
+ }
7
+ if (selected === "json") {
8
+ return JSON.stringify(spans, null, 2);
9
+ }
10
+ if (spans.length === 0) {
11
+ return "No spans found";
12
+ }
13
+ return formatSpansPretty(spans);
14
+ }
15
+ function formatSpansPretty(spans) {
16
+ const hasAnnotations = spans.some((s) => s.annotations && s.annotations.length > 0);
17
+ const rows = spans.map((span) => {
18
+ const statusCode = span.status_code || "UNSET";
19
+ const statusIcon = statusCode === "ERROR" ? "✗" : "✓";
20
+ const row = {
21
+ status: `${statusIcon} ${statusCode}`,
22
+ name: span.name,
23
+ kind: span.span_kind || "UNKNOWN",
24
+ duration: formatDurationMs(span.start_time, span.end_time),
25
+ span_id: span.context?.span_id || "n/a",
26
+ trace_id: span.context?.trace_id || "n/a",
27
+ time: formatTimestamp(span.start_time),
28
+ };
29
+ if (hasAnnotations) {
30
+ row.annotations = formatAnnotations(span.annotations);
31
+ }
32
+ return row;
33
+ });
34
+ const header = `Showing ${spans.length} span(s)`;
35
+ const table = formatTable(rows);
36
+ return `${header}\n${table}`;
37
+ }
38
+ function formatDurationMs(startTime, endTime) {
39
+ const startMs = Date.parse(startTime);
40
+ const endMs = Date.parse(endTime);
41
+ if (Number.isNaN(startMs) || Number.isNaN(endMs)) {
42
+ return "n/a";
43
+ }
44
+ return `${Math.max(0, endMs - startMs)}ms`;
45
+ }
46
+ function formatTimestamp(isoString) {
47
+ const d = new Date(isoString);
48
+ if (isNaN(d.getTime()))
49
+ return isoString;
50
+ return d
51
+ .toISOString()
52
+ .replace("T", " ")
53
+ .replace(/\.\d{3}Z$/, " UTC");
54
+ }
55
+ function formatAnnotations(annotations) {
56
+ if (!annotations || annotations.length === 0)
57
+ return "";
58
+ return annotations
59
+ .map((a) => {
60
+ const pieces = [a.name];
61
+ if (a.result?.score != null)
62
+ pieces.push(`=${a.result.score}`);
63
+ if (a.result?.label)
64
+ pieces.push(`(${a.result.label})`);
65
+ return pieces.join("");
66
+ })
67
+ .join(", ");
68
+ }
69
+ //# sourceMappingURL=formatSpans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatSpans.js","sourceRoot":"","sources":["../../src/commands/formatSpans.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export * from "./auth.js";
3
3
  export * from "./projects.js";
4
4
  export * from "./traces.js";
5
5
  export * from "./trace.js";
6
+ export * from "./spans.js";
6
7
  export * from "./datasets.js";
7
8
  export * from "./dataset.js";
8
9
  export * from "./experiments.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
@@ -3,6 +3,7 @@ export * from "./auth.js";
3
3
  export * from "./projects.js";
4
4
  export * from "./traces.js";
5
5
  export * from "./trace.js";
6
+ export * from "./spans.js";
6
7
  export * from "./datasets.js";
7
8
  export * from "./dataset.js";
8
9
  export * from "./experiments.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * Create the spans command
4
+ */
5
+ export declare function createSpansCommand(): Command;
6
+ //# sourceMappingURL=spans.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,203 @@
1
+ import * as fs from "fs";
2
+ import { Command } from "commander";
3
+ import { createPhoenixClient, resolveProjectId } from "../client.js";
4
+ import { getConfigErrorMessage, resolveConfig, validateConfig, } from "../config.js";
5
+ import { ExitCode, getExitCodeForError } from "../exitCodes.js";
6
+ import { writeError, writeOutput, writeProgress } from "../io.js";
7
+ import { formatSpansOutput } from "./formatSpans.js";
8
+ import { fetchSpanAnnotations } from "./spanAnnotations.js";
9
+ /**
10
+ * Fetch spans for a project with optional filters
11
+ */
12
+ async function fetchSpansForProject(client, projectIdentifier, options) {
13
+ const allSpans = [];
14
+ let cursor;
15
+ const pageLimit = Math.min(options.limit, 1000);
16
+ do {
17
+ const response = await client.GET("/v1/projects/{project_identifier}/spans", {
18
+ params: {
19
+ path: {
20
+ project_identifier: projectIdentifier,
21
+ },
22
+ query: {
23
+ cursor,
24
+ limit: pageLimit,
25
+ start_time: options.startTime,
26
+ end_time: options.endTime,
27
+ trace_id: options.traceIds,
28
+ parent_id: options.parentId,
29
+ name: options.names,
30
+ span_kind: options.spanKinds,
31
+ status_code: options.statusCodes,
32
+ },
33
+ },
34
+ });
35
+ if (response.error || !response.data) {
36
+ throw new Error(`Failed to fetch spans: ${response.error}`);
37
+ }
38
+ allSpans.push(...response.data.data);
39
+ cursor = response.data.next_cursor || undefined;
40
+ if (allSpans.length >= options.limit) {
41
+ break;
42
+ }
43
+ } while (cursor);
44
+ return allSpans.slice(0, options.limit);
45
+ }
46
+ /**
47
+ * Spans command handler
48
+ */
49
+ async function spansHandler(file, options) {
50
+ try {
51
+ const userSpecifiedFormat = process.argv.includes("--format") ||
52
+ process.argv.some((arg) => arg.startsWith("--format="));
53
+ // Resolve configuration
54
+ const config = resolveConfig({
55
+ cliOptions: {
56
+ endpoint: options.endpoint,
57
+ project: options.project,
58
+ apiKey: options.apiKey,
59
+ },
60
+ });
61
+ // Validate configuration
62
+ const validation = validateConfig({ config });
63
+ if (!validation.valid) {
64
+ writeError({
65
+ message: getConfigErrorMessage({ errors: validation.errors }),
66
+ });
67
+ process.exit(ExitCode.INVALID_ARGUMENT);
68
+ }
69
+ // Create client
70
+ const client = createPhoenixClient({ config });
71
+ // Resolve project ID
72
+ const projectIdentifier = config.project;
73
+ if (!projectIdentifier) {
74
+ writeError({ message: "Project not configured" });
75
+ process.exit(ExitCode.INVALID_ARGUMENT);
76
+ }
77
+ writeProgress({
78
+ message: `Resolving project: ${projectIdentifier}`,
79
+ noProgress: !options.progress,
80
+ });
81
+ const projectId = await resolveProjectId({
82
+ client,
83
+ projectIdentifier,
84
+ });
85
+ // Calculate time range
86
+ let startTime;
87
+ if (options.since) {
88
+ startTime = options.since;
89
+ }
90
+ else if (options.lastNMinutes) {
91
+ const now = new Date();
92
+ const start = new Date(now.getTime() - options.lastNMinutes * 60 * 1000);
93
+ startTime = start.toISOString();
94
+ }
95
+ const limit = options.limit || 100;
96
+ writeProgress({
97
+ message: `Fetching up to ${limit} span(s)...`,
98
+ noProgress: !options.progress,
99
+ });
100
+ const spans = await fetchSpansForProject(client, projectId, {
101
+ startTime,
102
+ limit,
103
+ traceIds: options.traceId,
104
+ parentId: options.parentId,
105
+ names: options.name,
106
+ spanKinds: options.spanKind,
107
+ statusCodes: options.statusCode,
108
+ });
109
+ if (spans.length === 0) {
110
+ writeProgress({
111
+ message: "No spans found",
112
+ noProgress: !options.progress,
113
+ });
114
+ return;
115
+ }
116
+ writeProgress({
117
+ message: `Found ${spans.length} span(s)`,
118
+ noProgress: !options.progress,
119
+ });
120
+ // Fetch annotations if requested
121
+ if (options.includeAnnotations) {
122
+ writeProgress({
123
+ message: "Fetching span annotations...",
124
+ noProgress: !options.progress,
125
+ });
126
+ const spanIds = spans
127
+ .map((span) => span.context?.span_id)
128
+ .filter((spanId) => Boolean(spanId));
129
+ const annotations = await fetchSpanAnnotations({
130
+ client,
131
+ projectIdentifier: projectId,
132
+ spanIds,
133
+ });
134
+ const annotationsBySpanId = new Map();
135
+ for (const annotation of annotations) {
136
+ const spanId = annotation.span_id;
137
+ if (!annotationsBySpanId.has(spanId)) {
138
+ annotationsBySpanId.set(spanId, []);
139
+ }
140
+ annotationsBySpanId.get(spanId).push(annotation);
141
+ }
142
+ for (const span of spans) {
143
+ const spanId = span.context?.span_id;
144
+ if (!spanId)
145
+ continue;
146
+ const spanAnnotations = annotationsBySpanId.get(spanId);
147
+ if (spanAnnotations) {
148
+ span.annotations = spanAnnotations;
149
+ }
150
+ }
151
+ }
152
+ // Output spans
153
+ if (file) {
154
+ if (userSpecifiedFormat && options.format && options.format !== "json") {
155
+ writeError({
156
+ message: `Warning: --format is ignored when writing to a file; writing JSON to ${file}`,
157
+ });
158
+ }
159
+ const content = JSON.stringify(spans, null, 2);
160
+ fs.writeFileSync(file, content, "utf-8");
161
+ writeProgress({
162
+ message: `Done! Wrote ${spans.length} span(s) to ${file}`,
163
+ noProgress: !options.progress,
164
+ });
165
+ }
166
+ else {
167
+ const output = formatSpansOutput({ spans, format: options.format });
168
+ writeOutput({ message: output });
169
+ }
170
+ }
171
+ catch (error) {
172
+ writeError({
173
+ message: `Error fetching spans: ${error instanceof Error ? error.message : String(error)}`,
174
+ });
175
+ process.exit(getExitCodeForError(error));
176
+ }
177
+ }
178
+ /**
179
+ * Create the spans command
180
+ */
181
+ export function createSpansCommand() {
182
+ const command = new Command("spans");
183
+ command
184
+ .description("Fetch spans for the configured project with filtering")
185
+ .argument("[file]", "File path to write span data as JSON (optional)")
186
+ .option("--endpoint <url>", "Phoenix API endpoint")
187
+ .option("--project <name>", "Project name or ID")
188
+ .option("--api-key <key>", "Phoenix API key for authentication")
189
+ .option("--format <format>", "Output format: pretty, json, or raw", "pretty")
190
+ .option("--no-progress", "Disable progress indicators")
191
+ .option("-n, --limit <number>", "Maximum number of spans to fetch (newest first)", parseInt, 100)
192
+ .option("--last-n-minutes <number>", "Only fetch spans from the last N minutes", parseInt)
193
+ .option("--since <timestamp>", "Fetch spans since this ISO timestamp")
194
+ .option("--span-kind <kinds...>", "Filter by span kind (LLM, CHAIN, TOOL, RETRIEVER, EMBEDDING, AGENT, RERANKER, GUARDRAIL, EVALUATOR, UNKNOWN)")
195
+ .option("--status-code <codes...>", "Filter by status code (OK, ERROR, UNSET)")
196
+ .option("--name <names...>", "Filter by span name(s)")
197
+ .option("--trace-id <ids...>", "Filter by trace ID(s)")
198
+ .option("--parent-id <id>", 'Filter by parent span ID (use "null" for root spans only)')
199
+ .option("--include-annotations", "Include span annotations in the output")
200
+ .action(spansHandler);
201
+ return command;
202
+ }
203
+ //# sourceMappingURL=spans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spans.js","sourceRoot":"","sources":["../../src/commands/spans.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-cli",
3
- "version": "0.9.2",
3
+ "version": "0.10.1",
4
4
  "description": "A command-line interface for Phoenix",
5
5
  "keywords": [
6
6
  "arize",
@@ -32,7 +32,7 @@
32
32
  "dependencies": {
33
33
  "@arizeai/openinference-semantic-conventions": "^1.1.0",
34
34
  "commander": "^12.1.0",
35
- "@arizeai/phoenix-client": "6.5.1",
35
+ "@arizeai/phoenix-client": "6.5.2",
36
36
  "@arizeai/phoenix-config": "0.1.1"
37
37
  },
38
38
  "devDependencies": {