@arizeai/phoenix-cli 0.8.0 → 0.9.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
@@ -256,6 +256,29 @@ $ px api graphql '{ projectCount datasetCount promptCount evaluatorCount }'
256
256
 
257
257
  ---
258
258
 
259
+ ### `px docs fetch`
260
+
261
+ Download Phoenix documentation markdown files for use by coding agents. Fetches pages from the [llms.txt](https://arize.com/docs/phoenix/llms.txt) index, filtered by workflow category, and writes them to a local directory with auto-generated index files.
262
+
263
+ ```bash
264
+ px docs fetch # fetch default workflows
265
+ px docs fetch --workflow tracing # fetch only tracing docs
266
+ px docs fetch --workflow tracing --workflow evaluation
267
+ px docs fetch --dry-run # preview without downloading
268
+ px docs fetch --refresh # clear output dir and re-download
269
+ ```
270
+
271
+ | Option | Description | Default |
272
+ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
273
+ | `--workflow <name>` | Filter by workflow category (repeatable). Values: `tracing`, `evaluation`, `datasets`, `prompts`, `integrations`, `sdk`, `self-hosting`, `all` | `tracing`, `evaluation`, `datasets`, `prompts`, `integrations` |
274
+ | `--output-dir <dir>` | Output directory for downloaded docs | `.px/docs` |
275
+ | `--dry-run` | Discover links only; do not write files | `false` |
276
+ | `--refresh` | Clear output directory before downloading | `false` |
277
+ | `--strict` | Fail command if any page download fails | `false` |
278
+ | `--workers <n>` | Number of concurrent download workers | `10` |
279
+
280
+ ---
281
+
259
282
  ## JSON output shape
260
283
 
261
284
  All commands output JSON. Use `--format raw` for compact JSON and `--no-progress` to suppress stderr when piping:
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAuBA,wBAAgB,IAAI,SA4BnB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAwBA,wBAAgB,IAAI,SA8BnB"}
package/build/cli.js CHANGED
@@ -1,11 +1,12 @@
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, 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, createTraceCommand, createTracesCommand, } from "./commands/index.js";
5
5
  // Phoenix CLI Main Logic
6
6
  export function main() {
7
7
  const program = new Command();
8
8
  program.name("px");
9
+ program.enablePositionalOptions();
9
10
  // Register commands
10
11
  program.addCommand(createAnnotationConfigCommand());
11
12
  program.addCommand(createAuthCommand());
@@ -21,6 +22,7 @@ export function main() {
21
22
  program.addCommand(createPromptsCommand());
22
23
  program.addCommand(createPromptCommand());
23
24
  program.addCommand(createApiCommand());
25
+ program.addCommand(createDocsCommand());
24
26
  // Show banner and help if no command provided
25
27
  if (process.argv.length === 2) {
26
28
  printBanner();
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,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;IAEnB,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;IAEvC,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,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"}
@@ -0,0 +1,42 @@
1
+ import { Command } from "commander";
2
+ export interface DocEntry {
3
+ title: string;
4
+ url: string;
5
+ description: string;
6
+ section: string;
7
+ }
8
+ /**
9
+ * Parse an llms.txt file into doc entries.
10
+ *
11
+ * The Phoenix llms.txt follows the llmstxt.org standard format:
12
+ * ## Section — top-level sections
13
+ * ### Subsection — subsections (inherit parent ## section)
14
+ * - [Title](url): Description
15
+ */
16
+ export declare function parseLlmsTxt(content: string): DocEntry[];
17
+ /**
18
+ * Filter doc entries by workflow categories. Returns all entries if
19
+ * workflows is empty or contains ALL_WORKFLOWS.
20
+ */
21
+ export declare function filterByWorkflows(entries: DocEntry[], workflows: string[]): DocEntry[];
22
+ /**
23
+ * Convert a Phoenix docs URL to a local file path.
24
+ * Strips the common prefix and appends `.md`.
25
+ */
26
+ export declare function urlToFilePath(url: string, outputDir: string): string;
27
+ /**
28
+ * Group doc entries by their section name (lowercased).
29
+ */
30
+ export declare function groupBySection(entries: DocEntry[]): Map<string, DocEntry[]>;
31
+ /**
32
+ * Generate the content for the top-level README.md index file.
33
+ */
34
+ export declare function generateReadme(entries: DocEntry[], grouped?: Map<string, DocEntry[]>): string;
35
+ /**
36
+ * Generate the content for a section-level _index.md file.
37
+ * Uses paths relative to the section directory (derived from the first
38
+ * entry's file path) so that links work from the _index.md location.
39
+ */
40
+ export declare function generateSectionIndex(section: string, entries: DocEntry[]): string;
41
+ export declare function createDocsCommand(): Command;
42
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAyCD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CA6BxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,QAAQ,EAAE,EACnB,SAAS,EAAE,MAAM,EAAE,GAClB,QAAQ,EAAE,CAuBZ;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAY3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,QAAQ,EAAE,EACnB,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAChC,MAAM,CAmBR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,QAAQ,EAAE,GAClB,MAAM,CAkBR;AAwOD,wBAAgB,iBAAiB,IAAI,OAAO,CAqB3C"}
@@ -0,0 +1,337 @@
1
+ import * as fsPromises from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import { Command } from "commander";
4
+ import { ExitCode, getExitCodeForError } from "../exitCodes.js";
5
+ import { writeError, writeOutput } from "../io.js";
6
+ const LLMS_TXT_URL = "https://arize.com/docs/phoenix/llms.txt";
7
+ const PHOENIX_DOCS_PREFIX = "https://arize.com/docs/phoenix/";
8
+ const DEFAULT_OUTPUT_DIR = ".px/docs";
9
+ const DEFAULT_WORKERS = 10;
10
+ const ALL_WORKFLOWS = "all";
11
+ /**
12
+ * Maps user-facing workflow names to the top-level `##` section headings
13
+ * in the llms.txt index. Entries under `###` subsections inherit their
14
+ * parent `##` section.
15
+ */
16
+ const WORKFLOW_SECTION_MAP = {
17
+ tracing: ["tracing"],
18
+ evaluation: ["evaluation"],
19
+ datasets: ["datasets & experiments"],
20
+ prompts: ["prompt engineering"],
21
+ integrations: ["integrations"],
22
+ sdk: ["sdk & api reference"],
23
+ "self-hosting": ["self-hosting"],
24
+ };
25
+ const VALID_WORKFLOWS = Object.keys(WORKFLOW_SECTION_MAP);
26
+ /** The default set fetched when no --workflow is specified. */
27
+ const DEFAULT_WORKFLOWS = [
28
+ "tracing",
29
+ "evaluation",
30
+ "datasets",
31
+ "prompts",
32
+ "integrations",
33
+ ];
34
+ // ---------------------------------------------------------------------------
35
+ // Pure functions (exported for testing)
36
+ // ---------------------------------------------------------------------------
37
+ /**
38
+ * Parse an llms.txt file into doc entries.
39
+ *
40
+ * The Phoenix llms.txt follows the llmstxt.org standard format:
41
+ * ## Section — top-level sections
42
+ * ### Subsection — subsections (inherit parent ## section)
43
+ * - [Title](url): Description
44
+ */
45
+ export function parseLlmsTxt(content) {
46
+ const entries = [];
47
+ let currentSection = "";
48
+ for (const rawLine of content.split("\n")) {
49
+ const line = rawLine.trim();
50
+ // Track top-level ## section headings (subsections ### inherit the parent)
51
+ const topSectionMatch = line.match(/^##\s+(?!#)(.+)/);
52
+ if (topSectionMatch) {
53
+ currentSection = topSectionMatch[1].trim();
54
+ continue;
55
+ }
56
+ // Parse: - [Title](url): Description
57
+ const entryMatch = line.match(/^-\s+\[([^\]]+)\]\((https?:\/\/[^)]+)\)(?::\s+(.*))?$/);
58
+ if (entryMatch) {
59
+ entries.push({
60
+ title: entryMatch[1],
61
+ url: entryMatch[2],
62
+ description: entryMatch[3] ?? "",
63
+ section: currentSection,
64
+ });
65
+ }
66
+ }
67
+ return entries;
68
+ }
69
+ /**
70
+ * Filter doc entries by workflow categories. Returns all entries if
71
+ * workflows is empty or contains ALL_WORKFLOWS.
72
+ */
73
+ export function filterByWorkflows(entries, workflows) {
74
+ if (workflows.length === 0) {
75
+ return entries;
76
+ }
77
+ const normalized = workflows.map((workflow) => workflow.toLowerCase());
78
+ if (normalized.includes(ALL_WORKFLOWS)) {
79
+ return entries;
80
+ }
81
+ const allowedSections = new Set();
82
+ for (const key of normalized) {
83
+ const mapped = WORKFLOW_SECTION_MAP[key];
84
+ if (mapped) {
85
+ for (const section of mapped) {
86
+ allowedSections.add(section);
87
+ }
88
+ }
89
+ }
90
+ return entries.filter((entry) => allowedSections.has(entry.section.toLowerCase()));
91
+ }
92
+ /**
93
+ * Convert a Phoenix docs URL to a local file path.
94
+ * Strips the common prefix and appends `.md`.
95
+ */
96
+ export function urlToFilePath(url, outputDir) {
97
+ let relative = url.startsWith(PHOENIX_DOCS_PREFIX)
98
+ ? url.slice(PHOENIX_DOCS_PREFIX.length)
99
+ : url;
100
+ relative = relative.replace(/^\/+|\/+$/g, "");
101
+ return path.join(outputDir, `${relative}.md`);
102
+ }
103
+ /**
104
+ * Group doc entries by their section name (lowercased).
105
+ */
106
+ export function groupBySection(entries) {
107
+ const groups = new Map();
108
+ for (const entry of entries) {
109
+ const section = entry.section.toLowerCase();
110
+ const group = groups.get(section);
111
+ if (group) {
112
+ group.push(entry);
113
+ }
114
+ else {
115
+ groups.set(section, [entry]);
116
+ }
117
+ }
118
+ return groups;
119
+ }
120
+ /**
121
+ * Generate the content for the top-level README.md index file.
122
+ */
123
+ export function generateReadme(entries, grouped) {
124
+ const lines = [
125
+ "# Phoenix Docs",
126
+ "",
127
+ "Generated by `px docs fetch`.",
128
+ "",
129
+ ];
130
+ const sections = grouped ?? groupBySection(entries);
131
+ for (const [section, sectionEntries] of sections) {
132
+ lines.push(`## ${section}`);
133
+ for (const entry of sectionEntries) {
134
+ const filePath = urlToFilePath(entry.url, "").replace(/^\/+/, "");
135
+ lines.push(`- [${entry.title}](${filePath})`);
136
+ }
137
+ lines.push("");
138
+ }
139
+ return lines.join("\n");
140
+ }
141
+ /**
142
+ * Generate the content for a section-level _index.md file.
143
+ * Uses paths relative to the section directory (derived from the first
144
+ * entry's file path) so that links work from the _index.md location.
145
+ */
146
+ export function generateSectionIndex(section, entries) {
147
+ const lines = [`# ${section} Docs`, ""];
148
+ // Determine the section directory from the first entry
149
+ const firstFilePath = urlToFilePath(entries[0].url, "").replace(/^\/+/, "");
150
+ const sectionDir = firstFilePath.split(path.sep)[0];
151
+ for (const entry of entries) {
152
+ const filePath = urlToFilePath(entry.url, "").replace(/^\/+/, "");
153
+ // Strip the section directory prefix to get a relative path
154
+ const relativePath = filePath.startsWith(sectionDir + path.sep)
155
+ ? filePath.slice(sectionDir.length + 1)
156
+ : filePath;
157
+ lines.push(`- [${entry.title}](${relativePath})`);
158
+ lines.push(` source: \`${entry.url}.md\``);
159
+ }
160
+ return lines.join("\n") + "\n";
161
+ }
162
+ // ---------------------------------------------------------------------------
163
+ // Fetch helpers
164
+ // ---------------------------------------------------------------------------
165
+ async function fetchAndSave(entry, outputDir) {
166
+ const markdownUrl = entry.url.endsWith(".md") ? entry.url : `${entry.url}.md`;
167
+ const response = await fetch(markdownUrl);
168
+ if (!response.ok) {
169
+ throw new Error(`HTTP ${response.status} for ${markdownUrl}`);
170
+ }
171
+ const content = await response.text();
172
+ const filePath = urlToFilePath(entry.url, outputDir);
173
+ await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
174
+ await fsPromises.writeFile(filePath, content, "utf-8");
175
+ }
176
+ async function fetchWithConcurrency(entries, outputDir, workers) {
177
+ const succeeded = [];
178
+ const failed = [];
179
+ for (let offset = 0; offset < entries.length; offset += workers) {
180
+ const batch = entries.slice(offset, offset + workers);
181
+ const results = await Promise.allSettled(batch.map((entry) => fetchAndSave(entry, outputDir).then(() => entry)));
182
+ for (let index = 0; index < results.length; index++) {
183
+ const result = results[index];
184
+ if (result.status === "fulfilled") {
185
+ succeeded.push(result.value);
186
+ }
187
+ else {
188
+ failed.push({
189
+ entry: batch[index],
190
+ error: result.reason instanceof Error
191
+ ? result.reason.message
192
+ : String(result.reason),
193
+ });
194
+ }
195
+ }
196
+ }
197
+ return { succeeded, failed };
198
+ }
199
+ /**
200
+ * Write the README.md and per-section _index.md files.
201
+ */
202
+ async function writeIndexFiles(entries, outputDir) {
203
+ const grouped = groupBySection(entries);
204
+ // Top-level README.md
205
+ const readmeContent = generateReadme(entries, grouped);
206
+ await fsPromises.writeFile(path.join(outputDir, "README.md"), readmeContent, "utf-8");
207
+ // Per-section _index.md files
208
+ for (const [section, sectionEntries] of grouped) {
209
+ const indexContent = generateSectionIndex(section, sectionEntries);
210
+ // Derive the section directory from the first entry's file path
211
+ const firstFilePath = urlToFilePath(sectionEntries[0].url, outputDir);
212
+ const sectionDir = path.dirname(firstFilePath);
213
+ await fsPromises.mkdir(sectionDir, { recursive: true });
214
+ await fsPromises.writeFile(path.join(sectionDir, "_index.md"), indexContent, "utf-8");
215
+ }
216
+ }
217
+ // ---------------------------------------------------------------------------
218
+ // Handler
219
+ // ---------------------------------------------------------------------------
220
+ function formatEntryLine(entry, target) {
221
+ const section = entry.section.toLowerCase();
222
+ return ` - ${entry.title} [${section}] -> ${target}`;
223
+ }
224
+ async function docsFetchHandler(options) {
225
+ // Fetch llms.txt index
226
+ let response;
227
+ try {
228
+ response = await fetch(LLMS_TXT_URL);
229
+ }
230
+ catch (error) {
231
+ const message = error instanceof Error ? error.message : "Unknown error occurred";
232
+ writeError({ message: `Error fetching llms.txt: ${message}` });
233
+ process.exit(getExitCodeForError(error));
234
+ }
235
+ if (!response.ok) {
236
+ writeError({
237
+ message: `Failed to fetch llms.txt: HTTP ${response.status}`,
238
+ });
239
+ process.exit(ExitCode.NETWORK_ERROR);
240
+ }
241
+ writeOutput({ message: `Fetched docs index: ${LLMS_TXT_URL}` });
242
+ const indexContent = await response.text();
243
+ // Parse and filter
244
+ let entries = parseLlmsTxt(indexContent);
245
+ const workflows = options.workflow && options.workflow.length > 0
246
+ ? options.workflow
247
+ : DEFAULT_WORKFLOWS;
248
+ for (const workflow of workflows) {
249
+ const key = workflow.toLowerCase();
250
+ if (key !== ALL_WORKFLOWS && !VALID_WORKFLOWS.includes(key)) {
251
+ writeError({
252
+ message: `Warning: unknown workflow "${workflow}". Valid values: ${VALID_WORKFLOWS.join(", ")}, all`,
253
+ });
254
+ }
255
+ }
256
+ entries = filterByWorkflows(entries, workflows);
257
+ writeOutput({ message: `Workflows: ${workflows.join(", ")}` });
258
+ if (entries.length === 0) {
259
+ writeOutput({ message: "No matching pages found." });
260
+ return;
261
+ }
262
+ // Dry run — show what would be fetched
263
+ if (options.dryRun) {
264
+ writeOutput({
265
+ message: `Discovered ${entries.length} page(s), wrote 0 page(s) (dry-run)`,
266
+ });
267
+ for (const entry of entries) {
268
+ writeOutput({
269
+ message: formatEntryLine(entry, `${entry.url}.md`),
270
+ });
271
+ }
272
+ return;
273
+ }
274
+ // Refresh — clear output dir
275
+ if (options.refresh) {
276
+ await fsPromises.rm(options.outputDir, { recursive: true, force: true });
277
+ }
278
+ await fsPromises.mkdir(options.outputDir, { recursive: true });
279
+ // Fetch and save
280
+ const { succeeded, failed } = await fetchWithConcurrency(entries, options.outputDir, options.workers);
281
+ // Write index files for successfully fetched entries
282
+ if (succeeded.length > 0) {
283
+ await writeIndexFiles(succeeded, options.outputDir);
284
+ }
285
+ writeOutput({
286
+ message: `Discovered ${entries.length} page(s), wrote ${succeeded.length} page(s)`,
287
+ });
288
+ for (const entry of succeeded) {
289
+ writeOutput({
290
+ message: formatEntryLine(entry, urlToFilePath(entry.url, options.outputDir)),
291
+ });
292
+ }
293
+ if (failed.length > 0) {
294
+ for (const { entry, error } of failed) {
295
+ writeError({
296
+ message: ` - ${entry.title} [${entry.section.toLowerCase()}] FAILED: ${error}`,
297
+ });
298
+ }
299
+ if (options.strict) {
300
+ process.exit(ExitCode.FAILURE);
301
+ }
302
+ }
303
+ }
304
+ // ---------------------------------------------------------------------------
305
+ // Shared option helpers
306
+ // ---------------------------------------------------------------------------
307
+ /** Add all docs-specific options to a command. */
308
+ function addDocsOptions(command) {
309
+ return command
310
+ .option("--workflow <name>", `Filter by workflow category (repeatable) [possible values: ${VALID_WORKFLOWS.join(", ")}, all] [default: ${DEFAULT_WORKFLOWS.join(", ")}]`, (value, previous) => previous.concat([value]), [])
311
+ .option("--output-dir <dir>", "Output directory for downloaded docs", DEFAULT_OUTPUT_DIR)
312
+ .option("--dry-run", "Discover links only; do not write files", false)
313
+ .option("--refresh", "Refresh docs by clearing output directory before download", false)
314
+ .option("--strict", "Fail command if any page download fails", false)
315
+ .option("--workers <n>", "Number of concurrent workers for docs downloads", parseInt, DEFAULT_WORKERS);
316
+ }
317
+ // ---------------------------------------------------------------------------
318
+ // Command factories
319
+ // ---------------------------------------------------------------------------
320
+ export function createDocsCommand() {
321
+ const command = new Command("docs");
322
+ command.description("Manage workflow docs for coding agents");
323
+ command.enablePositionalOptions();
324
+ command.passThroughOptions();
325
+ // All options live on the parent so `px docs --help` shows them
326
+ addDocsOptions(command);
327
+ command.action(docsFetchHandler);
328
+ // `fetch` is a convenience alias — it re-parses its own argv so
329
+ // `px docs fetch --workflow X` works identically to `px docs --workflow X`.
330
+ const fetchCommand = new Command("fetch");
331
+ fetchCommand.description("Download workflow docs markdown from llms.txt index");
332
+ addDocsOptions(fetchCommand);
333
+ fetchCommand.action(docsFetchHandler);
334
+ command.addCommand(fetchCommand);
335
+ return command;
336
+ }
337
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,5 @@ export * from "./session.js";
12
12
  export * from "./prompts.js";
13
13
  export * from "./prompt.js";
14
14
  export * from "./api.js";
15
+ export * from "./docs.js";
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
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"}
@@ -12,4 +12,5 @@ export * from "./session.js";
12
12
  export * from "./prompts.js";
13
13
  export * from "./prompt.js";
14
14
  export * from "./api.js";
15
+ export * from "./docs.js";
15
16
  //# sourceMappingURL=index.js.map
@@ -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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-cli",
3
- "version": "0.8.0",
3
+ "version": "0.9.1",
4
4
  "description": "A command-line interface for Phoenix",
5
5
  "keywords": [
6
6
  "arize",