@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 +115 -0
- package/build/cli.d.ts.map +1 -1
- package/build/cli.js +2 -1
- package/build/cli.js.map +1 -1
- package/build/commands/formatSpans.d.ts +8 -0
- package/build/commands/formatSpans.d.ts.map +1 -0
- package/build/commands/formatSpans.js +69 -0
- package/build/commands/formatSpans.js.map +1 -0
- package/build/commands/index.d.ts +1 -0
- package/build/commands/index.d.ts.map +1 -1
- package/build/commands/index.js +1 -0
- package/build/commands/index.js.map +1 -1
- package/build/commands/spans.d.ts +6 -0
- package/build/commands/spans.d.ts.map +1 -0
- package/build/commands/spans.js +203 -0
- package/build/commands/spans.js.map +1 -0
- package/package.json +2 -2
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.
|
package/build/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
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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"}
|
|
@@ -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"}
|
package/build/commands/index.js
CHANGED
|
@@ -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 @@
|
|
|
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.
|
|
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.
|
|
35
|
+
"@arizeai/phoenix-client": "6.5.2",
|
|
36
36
|
"@arizeai/phoenix-config": "0.1.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|