@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.
- package/README.md +28 -0
- package/build/commands/formatSetup.d.ts +6 -0
- package/build/commands/formatSetup.d.ts.map +1 -1
- package/build/commands/formatSetup.js +22 -0
- package/build/commands/formatSetup.js.map +1 -1
- package/build/commands/setup.d.ts.map +1 -1
- package/build/commands/setup.js +10 -38
- package/build/commands/setup.js.map +1 -1
- package/build/commands/setupErrors.d.ts +10 -0
- package/build/commands/setupErrors.d.ts.map +1 -0
- package/build/commands/setupErrors.js +54 -0
- package/build/commands/setupErrors.js.map +1 -0
- package/build/commands/setupMcp.d.ts +15 -0
- package/build/commands/setupMcp.d.ts.map +1 -0
- package/build/commands/setupMcp.js +141 -0
- package/build/commands/setupMcp.js.map +1 -0
- package/build/setup/agents/registry.d.ts +4 -0
- package/build/setup/agents/registry.d.ts.map +1 -1
- package/build/setup/agents/registry.js +7 -3
- package/build/setup/agents/registry.js.map +1 -1
- package/build/setup/mcp/agents.d.ts +91 -0
- package/build/setup/mcp/agents.d.ts.map +1 -0
- package/build/setup/mcp/agents.js +265 -0
- package/build/setup/mcp/agents.js.map +1 -0
- package/build/setup/mcp/install.d.ts +34 -0
- package/build/setup/mcp/install.d.ts.map +1 -0
- package/build/setup/mcp/install.js +76 -0
- package/build/setup/mcp/install.js.map +1 -0
- package/build/setup/mcp/runSetupMcp.d.ts +68 -0
- package/build/setup/mcp/runSetupMcp.d.ts.map +1 -0
- package/build/setup/mcp/runSetupMcp.js +235 -0
- package/build/setup/mcp/runSetupMcp.js.map +1 -0
- package/build/setup/steps/offerDocsMcp.d.ts.map +1 -1
- package/build/setup/steps/offerDocsMcp.js +3 -2
- package/build/setup/steps/offerDocsMcp.js.map +1 -1
- package/build/setup/util/mcpConfig.d.ts +12 -5
- package/build/setup/util/mcpConfig.d.ts.map +1 -1
- package/build/setup/util/mcpConfig.js +6 -4
- package/build/setup/util/mcpConfig.js.map +1 -1
- 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":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;
|
|
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;
|
|
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"}
|
package/build/commands/setup.js
CHANGED
|
@@ -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
|
|
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":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,
|
|
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":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEvE,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,8CAA8C,CAAC;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,KAAK,CAAC;IACZ;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yDAAyD;IACzD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,iDAAiD;IACjD,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnD,CAAC;AAEN;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,aAAa,CAAC;IAClB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,CAAC;IACzD,kEAAkE;IAClE,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAkF/C,CAAC;AAEF,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAElE;AAED,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAEpD,CAAC;AAIF;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,EAAE,GAAG,EAAE,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC7C,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,CAAC,EAC9C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,6DAA6D;AAC7D,
|
|
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
|
|
151
|
-
|
|
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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"}
|