@arizeai/phoenix-cli 1.9.1 → 1.10.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 (40) hide show
  1. package/README.md +28 -0
  2. package/build/commands/formatSetup.d.ts +6 -0
  3. package/build/commands/formatSetup.d.ts.map +1 -1
  4. package/build/commands/formatSetup.js +22 -0
  5. package/build/commands/formatSetup.js.map +1 -1
  6. package/build/commands/setup.d.ts.map +1 -1
  7. package/build/commands/setup.js +10 -38
  8. package/build/commands/setup.js.map +1 -1
  9. package/build/commands/setupErrors.d.ts +10 -0
  10. package/build/commands/setupErrors.d.ts.map +1 -0
  11. package/build/commands/setupErrors.js +54 -0
  12. package/build/commands/setupErrors.js.map +1 -0
  13. package/build/commands/setupMcp.d.ts +15 -0
  14. package/build/commands/setupMcp.d.ts.map +1 -0
  15. package/build/commands/setupMcp.js +141 -0
  16. package/build/commands/setupMcp.js.map +1 -0
  17. package/build/setup/agents/registry.d.ts +4 -0
  18. package/build/setup/agents/registry.d.ts.map +1 -1
  19. package/build/setup/agents/registry.js +7 -3
  20. package/build/setup/agents/registry.js.map +1 -1
  21. package/build/setup/mcp/agents.d.ts +91 -0
  22. package/build/setup/mcp/agents.d.ts.map +1 -0
  23. package/build/setup/mcp/agents.js +265 -0
  24. package/build/setup/mcp/agents.js.map +1 -0
  25. package/build/setup/mcp/install.d.ts +34 -0
  26. package/build/setup/mcp/install.d.ts.map +1 -0
  27. package/build/setup/mcp/install.js +76 -0
  28. package/build/setup/mcp/install.js.map +1 -0
  29. package/build/setup/mcp/runSetupMcp.d.ts +68 -0
  30. package/build/setup/mcp/runSetupMcp.d.ts.map +1 -0
  31. package/build/setup/mcp/runSetupMcp.js +235 -0
  32. package/build/setup/mcp/runSetupMcp.js.map +1 -0
  33. package/build/setup/steps/offerDocsMcp.d.ts.map +1 -1
  34. package/build/setup/steps/offerDocsMcp.js +3 -2
  35. package/build/setup/steps/offerDocsMcp.js.map +1 -1
  36. package/build/setup/util/mcpConfig.d.ts +12 -5
  37. package/build/setup/util/mcpConfig.d.ts.map +1 -1
  38. package/build/setup/util/mcpConfig.js +6 -4
  39. package/build/setup/util/mcpConfig.js.map +1 -1
  40. package/package.json +1 -1
package/README.md CHANGED
@@ -176,6 +176,34 @@ px setup instrument --agent codex # instrument and verify again
176
176
  px setup skills # install coding-agent skills only
177
177
  ```
178
178
 
179
+ #### `px setup mcp`
180
+
181
+ Register the Phoenix **remote MCP server** (`<endpoint>/mcp`) with a coding
182
+ agent, so the agent can search, query, and operate on your Phoenix data. The
183
+ endpoint is inferred from `--endpoint`, the active profile, or `PHOENIX_HOST` —
184
+ you never re-type it.
185
+
186
+ ```bash
187
+ px setup mcp # pick scope (global default) + agent, interactively
188
+ px setup mcp --agent codex # configure one agent
189
+ px setup mcp --agent claude --local # write this repo's config (.mcp.json)
190
+ ```
191
+
192
+ Supported agents: `claude`, `codex`, `gemini`, `cursor`, `opencode`, `vscode`.
193
+ Where an agent ships an `mcp add` (Claude, Codex, Gemini, VS Code global) the
194
+ CLI drives it; the rest get a merge into their config file (`~/.cursor/mcp.json`,
195
+ `~/.config/opencode/opencode.json`, `.vscode/mcp.json`). Scope is `--global`
196
+ (user-wide, the default) or `--local` (this repo — Codex is global-only).
197
+
198
+ Auth defaults to **OAuth**: the config is URL-only and the agent opens Phoenix's
199
+ browser login on first use. For headless clients, pass an API-key bearer header
200
+ with `--header` (repeatable):
201
+
202
+ ```bash
203
+ px setup mcp --agent codex --no-input --format raw
204
+ px setup mcp --agent claude --header 'Authorization: Bearer ${PHOENIX_API_KEY}'
205
+ ```
206
+
179
207
  ---
180
208
 
181
209
  ### `px self update`
@@ -5,6 +5,7 @@
5
5
  * agent reads to learn where it connected, what was written, and — the field
6
6
  * that actually matters — whether traces were verified arriving.
7
7
  */
8
+ import type { McpSetupReport } from "../setup/mcp/runSetupMcp.js";
8
9
  import type { SetupReport } from "../setup/runSetup.js";
9
10
  import type { ToolingResult } from "../setup/steps/installTooling.js";
10
11
  export type OutputFormat = "pretty" | "json" | "raw";
@@ -47,6 +48,11 @@ export interface FormatSetupOutputOptions {
47
48
  format?: OutputFormat;
48
49
  }
49
50
  export declare function formatSetupOutput({ report, format, }: FormatSetupOutputOptions): string;
51
+ export interface FormatMcpSetupOutputOptions {
52
+ report: McpSetupReport;
53
+ format?: OutputFormat;
54
+ }
55
+ export declare function formatMcpSetupOutput({ report, format, }: FormatMcpSetupOutputOptions): string;
50
56
  export interface FormatToolingOutputOptions {
51
57
  tooling: ToolingResult;
52
58
  format?: OutputFormat;
@@ -1 +1 @@
1
- {"version":3,"file":"formatSetup.d.ts","sourceRoot":"","sources":["../../src/commands/formatSetup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,yEAAyE;QACzE,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,6EAA6E;IAC7E,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;QAC9C,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;QACvC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,2EAA2E;QAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,0EAA0E;IAC1E,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAqC9D;AAaD,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAQ3D;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,MAAiB,GAClB,EAAE,wBAAwB,GAAG,MAAM,CAEnC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,MAAiB,GAClB,EAAE,0BAA0B,GAAG,MAAM,CAKrC"}
1
+ {"version":3,"file":"formatSetup.d.ts","sourceRoot":"","sources":["../../src/commands/formatSetup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,yEAAyE;QACzE,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,6EAA6E;IAC7E,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;QAC9C,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;QACvC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,2EAA2E;QAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,0EAA0E;IAC1E,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAqC9D;AAaD,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAQ3D;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,MAAiB,GAClB,EAAE,wBAAwB,GAAG,MAAM,CAEnC;AAuBD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,MAAiB,GAClB,EAAE,2BAA2B,GAAG,MAAM,CAEtC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,MAAiB,GAClB,EAAE,0BAA0B,GAAG,MAAM,CAKrC"}
@@ -65,6 +65,28 @@ export function headlessSummary(report) {
65
65
  export function formatSetupOutput({ report, format = "pretty", }) {
66
66
  return renderJson(toSetupOutput(report), format) ?? headlessSummary(report);
67
67
  }
68
+ // ---------------------------------------------------------------------------
69
+ // `px setup mcp`
70
+ // ---------------------------------------------------------------------------
71
+ /**
72
+ * The pretty rendering — what a headless `px setup mcp` prints on stdout. The
73
+ * `json`/`raw` renderings serialize the {@link McpSetupReport} verbatim, so the
74
+ * report interface itself is the documented JSON envelope.
75
+ */
76
+ function mcpHeadlessSummary(report) {
77
+ const lines = [
78
+ `Configured the "${report.serverName}" MCP server with ${report.agent} (${report.scope}).`,
79
+ `url: ${report.url}`,
80
+ `auth: ${report.auth}`,
81
+ ];
82
+ if (report.file) {
83
+ lines.push(`config: ${report.file}`);
84
+ }
85
+ return lines.join("\n");
86
+ }
87
+ export function formatMcpSetupOutput({ report, format = "pretty", }) {
88
+ return renderJson(report, format) ?? mcpHeadlessSummary(report);
89
+ }
68
90
  /** `px setup skills` reports only what the installs did. */
69
91
  export function formatToolingOutput({ tooling, format = "pretty", }) {
70
92
  return (renderJson({ tooling }, format) ??
@@ -1 +1 @@
1
- {"version":3,"file":"formatSetup.js","sourceRoot":"","sources":["../../src/commands/formatSetup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatSetup.js","sourceRoot":"","sources":["../../src/commands/formatSetup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0apC,wBAAgB,kBAAkB,IAAI,OAAO,CAqC5C"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkYpC,wBAAgB,kBAAkB,IAAI,OAAO,CA4C5C"}
@@ -15,19 +15,19 @@
15
15
  * px setup skills # the coding-agent skills install alone
16
16
  */
17
17
  import { Command } from "commander";
18
- import { ExitCode, getExitCodeForError } from "../exitCodes.js";
18
+ import { ExitCode } from "../exitCodes.js";
19
19
  import { writeOutput } from "../io.js";
20
20
  import { collectString, parsePositiveIntOption } from "../optionParsers.js";
21
21
  import { CODING_AGENT_IDS } from "../setup/agents/registry.js";
22
- import * as COPY from "../setup/copy.js";
23
22
  import { buildDefaultDeps } from "../setup/deps/buildDefaultDeps.js";
24
- import { HeadlessInputError, SetupCancelledError, SetupFatalError, } from "../setup/errors.js";
25
23
  import { resolveSetupInputs, } from "../setup/options.js";
26
24
  import { runInstrument, runSetup, runSkills } from "../setup/runSetup.js";
27
25
  import { writeStructuredError } from "../structuredError.js";
28
26
  import { ENDPOINT_REQUIREMENT, isEndpointUrl } from "../validation/endpoint.js";
29
27
  import { WORKERS_REQUIREMENT } from "./docs.js";
30
28
  import { formatSetupOutput, formatToolingOutput, } from "./formatSetup.js";
29
+ import { exitWithError } from "./setupErrors.js";
30
+ import { createSetupMcpCommand } from "./setupMcp.js";
31
31
  /** Reject bad flag values before any side effect runs. */
32
32
  function toSetupOptions(options) {
33
33
  const format = options.format ?? "pretty";
@@ -79,41 +79,6 @@ function toSetupOptions(options) {
79
79
  docsMcp: options.docsMcp,
80
80
  };
81
81
  }
82
- /**
83
- * Every lane funnels its failures through here, so a cancelled prompt, a bad
84
- * headless invocation, and a fatal step keep their distinct exit codes — and so
85
- * a `--format json|raw` caller gets the same `{error, code, hint}` envelope
86
- * every other px command gives it, instead of a bare line on stderr.
87
- */
88
- function exitWithError(error, format) {
89
- if (error instanceof SetupCancelledError) {
90
- writeStructuredError({
91
- format,
92
- message: COPY.CANCEL_OUTRO,
93
- code: "CANCELLED",
94
- });
95
- process.exit(ExitCode.CANCELLED);
96
- }
97
- if (error instanceof HeadlessInputError) {
98
- writeStructuredError({
99
- format,
100
- message: error.message,
101
- code: "INVALID_ARGUMENT",
102
- });
103
- process.exit(ExitCode.INVALID_ARGUMENT);
104
- }
105
- if (error instanceof SetupFatalError) {
106
- writeStructuredError({ format, message: error.message, code: "FAILURE" });
107
- process.exit(ExitCode.FAILURE);
108
- }
109
- const exitCode = getExitCodeForError(error);
110
- writeStructuredError({
111
- format,
112
- message: String(error),
113
- code: exitCode === ExitCode.NETWORK_ERROR ? "NETWORK_ERROR" : "FAILURE",
114
- });
115
- process.exit(exitCode);
116
- }
117
82
  /**
118
83
  * Run one of the setup lanes, then print what it did in the requested format.
119
84
  *
@@ -219,6 +184,11 @@ Examples:
219
184
  }
220
185
  export function createSetupCommand() {
221
186
  const command = new Command("setup");
187
+ // The program enables positional options; `setup` must too, or it greedily
188
+ // consumes a subcommand's flags that share a name with its own (`--agent`,
189
+ // `--format`, `--no-input`), leaving `px setup mcp --agent codex` and
190
+ // `px setup instrument --agent claude` unable to see their agent.
191
+ command.enablePositionalOptions();
222
192
  command.description("Interactive setup: connect this app to Phoenix and get traces flowing.\n" +
223
193
  "(A top-level command, unlike the CLI's usual noun-verb layout — onboarding is a flow, not a resource.)");
224
194
  addConnectionOptions(command);
@@ -241,9 +211,11 @@ Examples:
241
211
  Subcommands:
242
212
  px setup instrument Instrument and verify, without redoing the questions
243
213
  px setup skills Install the coding-agent skills alone
214
+ px setup mcp Register the Phoenix MCP server with a coding agent
244
215
  `);
245
216
  command.addCommand(createSetupInstrumentCommand());
246
217
  command.addCommand(createSetupSkillsCommand());
218
+ command.addCommand(createSetupMcpCommand());
247
219
  return command;
248
220
  }
249
221
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The setup commands' shared failure funnel. Every `px setup` lane and
3
+ * subcommand exits through here, so a cancelled prompt, a bad headless
4
+ * invocation, and a fatal step keep their distinct exit codes — and a
5
+ * `--format json|raw` caller gets the same `{error, code, hint}` envelope
6
+ * every other px command gives it, instead of a bare line on stderr.
7
+ */
8
+ import type { OutputFormat } from "./formatSetup.js";
9
+ export declare function exitWithError(error: unknown, format: OutputFormat): never;
10
+ //# sourceMappingURL=setupErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupErrors.d.ts","sourceRoot":"","sources":["../../src/commands/setupErrors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAgBlD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK,CA4BzE"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * The setup commands' shared failure funnel. Every `px setup` lane and
3
+ * subcommand exits through here, so a cancelled prompt, a bad headless
4
+ * invocation, and a fatal step keep their distinct exit codes — and a
5
+ * `--format json|raw` caller gets the same `{error, code, hint}` envelope
6
+ * every other px command gives it, instead of a bare line on stderr.
7
+ */
8
+ import { ExitCode, getExitCodeForError } from "../exitCodes.js";
9
+ import * as COPY from "../setup/copy.js";
10
+ import { HeadlessInputError, SetupCancelledError, SetupFatalError, } from "../setup/errors.js";
11
+ import { writeStructuredError } from "../structuredError.js";
12
+ /** The envelope `code` is the ExitCode constant *name* the number maps to. */
13
+ function exitCodeName(code) {
14
+ switch (code) {
15
+ case ExitCode.INVALID_ARGUMENT:
16
+ return "INVALID_ARGUMENT";
17
+ case ExitCode.AUTH_REQUIRED:
18
+ return "AUTH_REQUIRED";
19
+ case ExitCode.NETWORK_ERROR:
20
+ return "NETWORK_ERROR";
21
+ default:
22
+ return "FAILURE";
23
+ }
24
+ }
25
+ export function exitWithError(error, format) {
26
+ if (error instanceof SetupCancelledError) {
27
+ writeStructuredError({
28
+ format,
29
+ message: COPY.CANCEL_OUTRO,
30
+ code: "CANCELLED",
31
+ });
32
+ process.exit(ExitCode.CANCELLED);
33
+ }
34
+ if (error instanceof HeadlessInputError) {
35
+ writeStructuredError({
36
+ format,
37
+ message: error.message,
38
+ code: "INVALID_ARGUMENT",
39
+ });
40
+ process.exit(ExitCode.INVALID_ARGUMENT);
41
+ }
42
+ if (error instanceof SetupFatalError) {
43
+ writeStructuredError({ format, message: error.message, code: "FAILURE" });
44
+ process.exit(ExitCode.FAILURE);
45
+ }
46
+ const exitCode = getExitCodeForError(error);
47
+ writeStructuredError({
48
+ format,
49
+ message: String(error),
50
+ code: exitCodeName(exitCode),
51
+ });
52
+ process.exit(exitCode);
53
+ }
54
+ //# sourceMappingURL=setupErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupErrors.js","sourceRoot":"","sources":["../../src/commands/setupErrors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,8EAA8E;AAC9E,SAAS,YAAY,CAAC,IAAc;IAClC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC,gBAAgB;YAC5B,OAAO,kBAAkB,CAAC;QAC5B,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,eAAe,CAAC;QACzB,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,MAAoB;IAChE,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;QACzC,oBAAoB,CAAC;YACnB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,oBAAoB,CAAC;YACnB,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,oBAAoB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC5C,oBAAoB,CAAC;QACnB,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QACtB,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `px setup mcp` — register the Phoenix remote MCP server (`<endpoint>/mcp`)
3
+ * with a coding agent. A subcommand of the `px setup` flow, like
4
+ * `px setup instrument`.
5
+ *
6
+ * The endpoint is inferred through `resolveConfig` (the flag → env → profile →
7
+ * default merge every `px` command uses). Auth defaults to OAuth; `--header`
8
+ * adds the API-key bearer fallback for headless clients.
9
+ *
10
+ * This layer only parses flags, resolves the endpoint, and renders the report;
11
+ * the behavior lives in `runSetupMcp` (`../setup/mcp/runSetupMcp.ts`).
12
+ */
13
+ import { Command } from "commander";
14
+ export declare function createSetupMcpCommand(): Command;
15
+ //# sourceMappingURL=setupMcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupMcp.d.ts","sourceRoot":"","sources":["../../src/commands/setupMcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6MpC,wBAAgB,qBAAqB,IAAI,OAAO,CAyC/C"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * `px setup mcp` — register the Phoenix remote MCP server (`<endpoint>/mcp`)
3
+ * with a coding agent. A subcommand of the `px setup` flow, like
4
+ * `px setup instrument`.
5
+ *
6
+ * The endpoint is inferred through `resolveConfig` (the flag → env → profile →
7
+ * default merge every `px` command uses). Auth defaults to OAuth; `--header`
8
+ * adds the API-key bearer fallback for headless clients.
9
+ *
10
+ * This layer only parses flags, resolves the endpoint, and renders the report;
11
+ * the behavior lives in `runSetupMcp` (`../setup/mcp/runSetupMcp.ts`).
12
+ */
13
+ import { Command } from "commander";
14
+ import { DEFAULT_PHOENIX_ENDPOINT, resolveConfig } from "../config.js";
15
+ import { ExitCode } from "../exitCodes.js";
16
+ import { writeOutput } from "../io.js";
17
+ import { collectString } from "../optionParsers.js";
18
+ import { buildDefaultDeps } from "../setup/deps/buildDefaultDeps.js";
19
+ import { HeadlessInputError } from "../setup/errors.js";
20
+ import { MCP_AGENT_IDS, } from "../setup/mcp/agents.js";
21
+ import { runSetupMcp } from "../setup/mcp/runSetupMcp.js";
22
+ import { writeStructuredError } from "../structuredError.js";
23
+ import { ENDPOINT_REQUIREMENT, isEndpointUrl } from "../validation/endpoint.js";
24
+ import { formatMcpSetupOutput } from "./formatSetup.js";
25
+ import { exitWithError } from "./setupErrors.js";
26
+ const OUTPUT_FORMATS = ["pretty", "json", "raw"];
27
+ /** Parse `Name: value` into a header, or throw with the offending input. */
28
+ function parseHeader(raw) {
29
+ const index = raw.indexOf(":");
30
+ const name = index === -1 ? "" : raw.slice(0, index).trim();
31
+ const value = index === -1 ? "" : raw.slice(index + 1).trim();
32
+ if (!name || !value) {
33
+ throw new HeadlessInputError(`Invalid --header "${raw}". Use the form "Name: value".`);
34
+ }
35
+ return { name, value };
36
+ }
37
+ /** Reject bad flag values before any side effect runs. */
38
+ function toMcpInputs(options) {
39
+ const format = options.format ?? "pretty";
40
+ if (!OUTPUT_FORMATS.includes(format)) {
41
+ fail(format, `Invalid --format: ${options.format}.`, "px setup mcp --format pretty|json|raw");
42
+ }
43
+ if (options.agent !== undefined &&
44
+ !MCP_AGENT_IDS.includes(options.agent)) {
45
+ fail(format, `Invalid --agent: ${options.agent}.`, `px setup mcp --agent <${MCP_AGENT_IDS.join("|")}>`);
46
+ }
47
+ if (options.global && options.local) {
48
+ fail(format, "Pass only one of --global or --local.", "px setup mcp --global");
49
+ }
50
+ if (options.endpoint !== undefined && !isEndpointUrl(options.endpoint)) {
51
+ fail(format, `--endpoint ${ENDPOINT_REQUIREMENT}.`, undefined);
52
+ }
53
+ let headers;
54
+ try {
55
+ headers = (options.header ?? []).map(parseHeader);
56
+ }
57
+ catch (error) {
58
+ fail(format, error instanceof Error ? error.message : String(error), `px setup mcp --header 'Authorization: Bearer \${PHOENIX_API_KEY}'`);
59
+ }
60
+ return {
61
+ agent: options.agent,
62
+ scope: options.local ? "local" : options.global ? "global" : undefined,
63
+ headers,
64
+ endpointExplicit: options.endpoint !== undefined,
65
+ headless: options.input === false,
66
+ format,
67
+ };
68
+ }
69
+ /** Emit a structured INVALID_ARGUMENT and exit — the one bad-flag exit path. */
70
+ function fail(format, message, hint) {
71
+ writeStructuredError({
72
+ format,
73
+ message,
74
+ code: "INVALID_ARGUMENT",
75
+ ...(hint ? { hint } : {}),
76
+ });
77
+ process.exit(ExitCode.INVALID_ARGUMENT);
78
+ }
79
+ async function setupMcpHandler(options) {
80
+ const parsed = toMcpInputs(options);
81
+ const format = parsed.format;
82
+ const deps = buildDefaultDeps();
83
+ try {
84
+ // The endpoint is resolved the same way every command resolves it: flags
85
+ // over the active profile, then env vars, then the built-in default. A bad
86
+ // --profile (or an unreadable stored config) throws here, so it must run
87
+ // inside the funnel — otherwise --format json|raw would get a bare stderr
88
+ // line and the wrong exit code instead of the {error,code,hint} envelope.
89
+ const config = resolveConfig({
90
+ cliOptions: { endpoint: options.endpoint },
91
+ profileName: options.profile,
92
+ });
93
+ // `--no-input` OR a non-TTY stdin opts into headless, matching px convention.
94
+ const headless = parsed.headless || !deps.context.stdinIsTTY;
95
+ const report = await runSetupMcp(deps, {
96
+ // `resolveConfig` always fills `endpoint`; the fallback only satisfies
97
+ // the optional type, and uses the shared default so it can't drift.
98
+ endpoint: config.endpoint ?? DEFAULT_PHOENIX_ENDPOINT,
99
+ endpointExplicit: parsed.endpointExplicit,
100
+ agent: parsed.agent,
101
+ scope: parsed.scope,
102
+ headers: parsed.headers,
103
+ headless,
104
+ });
105
+ // An interactive run already narrated the result through the prompter; only
106
+ // a headless run (or an explicit --format) needs the printed report.
107
+ if (headless || format !== "pretty") {
108
+ writeOutput({ message: formatMcpSetupOutput({ report, format }) });
109
+ }
110
+ process.exit(ExitCode.SUCCESS);
111
+ }
112
+ catch (error) {
113
+ exitWithError(error, format);
114
+ }
115
+ }
116
+ export function createSetupMcpCommand() {
117
+ const command = new Command("mcp");
118
+ command
119
+ .description("Register the Phoenix remote MCP server with a coding agent.\n" +
120
+ "The endpoint is inferred from --endpoint, the active profile, or PHOENIX_HOST.")
121
+ .option("--agent <agent>", `Coding agent to configure (${MCP_AGENT_IDS.join("|")})`)
122
+ .option("--global", "Configure the agent's user-wide config (default)")
123
+ .option("--local", "Configure this repo's config (requires a git repo)")
124
+ .option("--endpoint <url>", "Phoenix base URL (skips inference)")
125
+ .option("--profile <name>", "Profile to infer the endpoint from")
126
+ .option("--header <header>", 'Header for the API-key fallback, "Name: value" (repeatable)', collectString, [])
127
+ .option("--no-input", "Headless mode: no prompts (requires --agent)")
128
+ .option("--format <format>", "Output format: pretty, json, or raw", "pretty")
129
+ .action(setupMcpHandler)
130
+ .addHelpText("after", `
131
+ Examples:
132
+ px setup mcp
133
+ px setup mcp --agent codex
134
+ px setup mcp --agent claude --local
135
+ px setup mcp --agent cursor --global --endpoint https://phoenix.example.com
136
+ px setup mcp --agent codex --no-input --format raw
137
+ px setup mcp --agent claude --header 'Authorization: Bearer \${PHOENIX_API_KEY}'
138
+ `);
139
+ return command;
140
+ }
141
+ //# sourceMappingURL=setupMcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupMcp.js","sourceRoot":"","sources":["../../src/commands/setupMcp.ts"],"names":[],"mappings":"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"}
@@ -119,6 +119,10 @@ export declare function pathWithoutPackageBins(pathValue: string): string;
119
119
  * setup itself runs under `npx @arizeai/phoenix-cli`.
120
120
  */
121
121
  export declare function probeGlobalBinary(deps: Pick<SetupDeps, "context" | "processes">, binary: string): Promise<boolean>;
122
+ /** The agents whose binary probe succeeds, in the given order. */
123
+ export declare function detectAgents<TAgent extends {
124
+ binary: string;
125
+ }>(deps: Pick<SetupDeps, "processes">, agents: readonly TAgent[]): Promise<TAgent[]>;
122
126
  /** Agents whose binary probe succeeds, in registry order. */
123
127
  export declare function detectCodingAgents(deps: Pick<SetupDeps, "processes">): Promise<CodingAgent[]>;
124
128
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/setup/agents/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/setup/agents/registry.ts"],"names":[],"mappings":"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"}
@@ -146,10 +146,14 @@ export function probeGlobalBinary(deps, binary) {
146
146
  ? {}
147
147
  : { env: { [pathKey]: pathWithoutPackageBins(pathValue) } });
148
148
  }
149
+ /** The agents whose binary probe succeeds, in the given order. */
150
+ export async function detectAgents(deps, agents) {
151
+ const probes = await Promise.all(agents.map((agent) => probeBinary(deps, agent.binary)));
152
+ return agents.filter((_, index) => probes[index]);
153
+ }
149
154
  /** Agents whose binary probe succeeds, in registry order. */
150
- export async function detectCodingAgents(deps) {
151
- const probes = await Promise.all(CODING_AGENTS.map((agent) => probeBinary(deps, agent.binary)));
152
- return CODING_AGENTS.filter((_, index) => probes[index]);
155
+ export function detectCodingAgents(deps) {
156
+ return detectAgents(deps, CODING_AGENTS);
153
157
  }
154
158
  /**
155
159
  * Env vars the launched agent's shell inherits so the app under test can
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/setup/agents/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/setup/agents/registry.ts"],"names":[],"mappings":"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"}