@arizeai/phoenix-cli 1.9.0 → 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 +82 -7
- package/build/authFetch.d.ts +24 -0
- package/build/authFetch.d.ts.map +1 -0
- package/build/authFetch.js +44 -0
- package/build/authFetch.js.map +1 -0
- package/build/client.d.ts.map +1 -1
- package/build/client.js +5 -1
- package/build/client.js.map +1 -1
- package/build/commands/api.d.ts.map +1 -1
- package/build/commands/api.js +12 -1
- package/build/commands/api.js.map +1 -1
- package/build/commands/auth.d.ts +4 -1
- package/build/commands/auth.d.ts.map +1 -1
- package/build/commands/auth.js +326 -13
- package/build/commands/auth.js.map +1 -1
- package/build/commands/formatSetup.d.ts +12 -0
- package/build/commands/formatSetup.d.ts.map +1 -1
- package/build/commands/formatSetup.js +32 -1
- package/build/commands/formatSetup.js.map +1 -1
- package/build/commands/setup.d.ts.map +1 -1
- package/build/commands/setup.js +14 -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/config.d.ts +15 -0
- package/build/config.d.ts.map +1 -1
- package/build/config.js +54 -7
- package/build/config.js.map +1 -1
- package/build/exitCodes.d.ts +6 -0
- package/build/exitCodes.d.ts.map +1 -1
- package/build/exitCodes.js +18 -0
- package/build/exitCodes.js.map +1 -1
- package/build/index.js +2 -1
- package/build/index.js.map +1 -1
- package/build/oauth.d.ts +138 -0
- package/build/oauth.d.ts.map +1 -0
- package/build/oauth.js +465 -0
- package/build/oauth.js.map +1 -0
- package/build/oauthCallbackPage.d.ts +9 -0
- package/build/oauthCallbackPage.d.ts.map +1 -0
- package/build/oauthCallbackPage.js +111 -0
- package/build/oauthCallbackPage.js.map +1 -0
- package/build/pxi/client.d.ts.map +1 -1
- package/build/pxi/client.js +11 -2
- package/build/pxi/client.js.map +1 -1
- package/build/settings.d.ts +19 -0
- package/build/settings.d.ts.map +1 -1
- package/build/settings.js +21 -0
- package/build/settings.js.map +1 -1
- package/build/setup/agents/registry.d.ts +61 -0
- package/build/setup/agents/registry.d.ts.map +1 -1
- package/build/setup/agents/registry.js +52 -3
- package/build/setup/agents/registry.js.map +1 -1
- package/build/setup/copy.d.ts +32 -0
- package/build/setup/copy.d.ts.map +1 -1
- package/build/setup/copy.js +44 -0
- package/build/setup/copy.js.map +1 -1
- package/build/setup/deps/buildDefaultDeps.d.ts.map +1 -1
- package/build/setup/deps/buildDefaultDeps.js +2 -0
- package/build/setup/deps/buildDefaultDeps.js.map +1 -1
- package/build/setup/deps/index.d.ts +4 -0
- package/build/setup/deps/index.d.ts.map +1 -1
- package/build/setup/deps/index.js.map +1 -1
- package/build/setup/deps/oauthLogin.d.ts +64 -0
- package/build/setup/deps/oauthLogin.d.ts.map +1 -0
- package/build/setup/deps/oauthLogin.js +82 -0
- package/build/setup/deps/oauthLogin.js.map +1 -0
- package/build/setup/deps/prompter.d.ts +7 -0
- package/build/setup/deps/prompter.d.ts.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/options.d.ts +11 -0
- package/build/setup/options.d.ts.map +1 -1
- package/build/setup/options.js +1 -0
- package/build/setup/options.js.map +1 -1
- package/build/setup/prompts/instrumentationPrompt.d.ts +7 -1
- package/build/setup/prompts/instrumentationPrompt.d.ts.map +1 -1
- package/build/setup/prompts/instrumentationPrompt.js +6 -2
- package/build/setup/prompts/instrumentationPrompt.js.map +1 -1
- package/build/setup/runSetup.d.ts +3 -0
- package/build/setup/runSetup.d.ts.map +1 -1
- package/build/setup/runSetup.js +13 -12
- package/build/setup/runSetup.js.map +1 -1
- package/build/setup/steps/establishConnection.d.ts +6 -3
- package/build/setup/steps/establishConnection.d.ts.map +1 -1
- package/build/setup/steps/establishConnection.js +120 -11
- package/build/setup/steps/establishConnection.js.map +1 -1
- package/build/setup/steps/instrumentApp.d.ts +23 -4
- package/build/setup/steps/instrumentApp.d.ts.map +1 -1
- package/build/setup/steps/instrumentApp.js +89 -41
- package/build/setup/steps/instrumentApp.js.map +1 -1
- package/build/setup/steps/offerDocsMcp.d.ts +48 -0
- package/build/setup/steps/offerDocsMcp.d.ts.map +1 -0
- package/build/setup/steps/offerDocsMcp.js +134 -0
- package/build/setup/steps/offerDocsMcp.js.map +1 -0
- package/build/setup/ui/clackPrompter.d.ts.map +1 -1
- package/build/setup/ui/clackPrompter.js +15 -0
- package/build/setup/ui/clackPrompter.js.map +1 -1
- package/build/setup/util/mcpConfig.d.ts +38 -0
- package/build/setup/util/mcpConfig.d.ts.map +1 -0
- package/build/setup/util/mcpConfig.js +64 -0
- package/build/setup/util/mcpConfig.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `px setup mcp` — register the Phoenix remote MCP server (`<base-url>/mcp`)
|
|
3
|
+
* with a coding agent's config. This module receives the already-resolved
|
|
4
|
+
* endpoint from the command layer.
|
|
5
|
+
*
|
|
6
|
+
* Auth defaults to OAuth (URL-only config; the agent handles browser login on
|
|
7
|
+
* first use). `--header` adds an API-key bearer fallback for headless clients,
|
|
8
|
+
* applied per agent (see {@link ./agents}).
|
|
9
|
+
*
|
|
10
|
+
* Without `--agent` the command prompts for scope then agent, after confirming
|
|
11
|
+
* the endpoint. A headless run requires `--agent` and defaults to global scope.
|
|
12
|
+
*/
|
|
13
|
+
import { ENDPOINT_REQUIREMENT, isEndpointUrl, normalizeEndpoint, } from "../../validation/endpoint.js";
|
|
14
|
+
import { detectAgents } from "../agents/registry.js";
|
|
15
|
+
import { HeadlessInputError, SetupFatalError } from "../errors.js";
|
|
16
|
+
import { getMcpAgent, MCP_AGENTS, MCP_AGENT_IDS, PHOENIX_MCP_SERVER_NAME, } from "./agents.js";
|
|
17
|
+
import { runMcpInstall } from "./install.js";
|
|
18
|
+
export const COPY = {
|
|
19
|
+
endpointPrompt: "Phoenix endpoint",
|
|
20
|
+
endpointInvalid: "Enter a full http:// or https:// URL (e.g. http://localhost:6006).",
|
|
21
|
+
endpointUnusable: (value) => `The resolved endpoint "${value}" ${ENDPOINT_REQUIREMENT}. ` +
|
|
22
|
+
"Fix PHOENIX_HOST or the active profile, or pass --endpoint <url>.",
|
|
23
|
+
usingEndpoint: (url) => `Registering the Phoenix MCP server at ${url}`,
|
|
24
|
+
scopePrompt: "Where should the MCP server be configured?",
|
|
25
|
+
scopeGlobalLabel: "Global",
|
|
26
|
+
scopeGlobalHint: "available across all your projects",
|
|
27
|
+
scopeLocalLabel: "This repo",
|
|
28
|
+
scopeLocalHint: "written into this project's config, checked in with it",
|
|
29
|
+
agentPrompt: "Which coding agent?",
|
|
30
|
+
detectedHint: "detected",
|
|
31
|
+
headlessNeedsAgent: `--agent is required with --no-input. Pass one of: ${MCP_AGENT_IDS.join(", ")}.`,
|
|
32
|
+
localNeedsRepo: "--local must run inside a git repository. Re-run from your project, or use --global.",
|
|
33
|
+
globalOnly: (agentLabel) => `${agentLabel} reads only a global config, so it is always configured globally.`,
|
|
34
|
+
globalOnlyHeadless: (agentLabel) => `${agentLabel} has no repo-scoped config. Drop --local (${agentLabel} is always global).`,
|
|
35
|
+
homeUnknown: (agentLabel) => `Could not find your home directory (HOME/USERPROFILE is unset), ` +
|
|
36
|
+
`where the global ${agentLabel} config lives. Set HOME, or use --local.`,
|
|
37
|
+
scopeUnsupported: (agentLabel, scope) => `${agentLabel} does not support ${scope} MCP configuration.`,
|
|
38
|
+
headersUnsupported: (agentLabel, dropped) => `${agentLabel} can't store this header (${dropped
|
|
39
|
+
.map((header) => header.name)
|
|
40
|
+
.join(", ")}) — it only accepts a bearer token via env var. Pass ` +
|
|
41
|
+
`--header "Authorization: Bearer \${VAR}", or omit --header to use OAuth.`,
|
|
42
|
+
configuredCli: (agentLabel) => `Registered the Phoenix MCP server with ${agentLabel}.`,
|
|
43
|
+
configuredFile: (agentLabel, file) => `Wrote the Phoenix MCP server to ${file} for ${agentLabel}.`,
|
|
44
|
+
installFailed: (agentLabel, reason) => `Could not configure ${agentLabel}: ${reason}`,
|
|
45
|
+
nextStepOAuth: (agentLabel) => `Open ${agentLabel} and run /mcp (or use the ${PHOENIX_MCP_SERVER_NAME} server) — it will open a browser to log in to Phoenix on first use.`,
|
|
46
|
+
nextStepHeader: "The server is configured with your bearer header — no browser login needed.",
|
|
47
|
+
};
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
// Entry
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
export async function runSetupMcp(deps, inputs) {
|
|
52
|
+
const endpoint = await resolveEndpoint(deps, inputs);
|
|
53
|
+
const url = `${endpoint}/mcp`;
|
|
54
|
+
const scope = await resolveScope(deps, inputs);
|
|
55
|
+
const agent = await resolveAgent(deps, inputs);
|
|
56
|
+
const effectiveScope = await reconcileScope(deps, agent, scope, inputs);
|
|
57
|
+
// A local install must land at the repo root — `px` may be running in a
|
|
58
|
+
// subdirectory, where a repo-scoped config would never be picked up.
|
|
59
|
+
const installCwd = effectiveScope === "local" ? await resolveRepoRoot(deps) : deps.context.cwd;
|
|
60
|
+
const action = agent.install[effectiveScope];
|
|
61
|
+
if (!action) {
|
|
62
|
+
// reconcileScope already handles codex; this covers any future scope gap.
|
|
63
|
+
throw new SetupFatalError(COPY.scopeUnsupported(agent.label, effectiveScope));
|
|
64
|
+
}
|
|
65
|
+
// Refuse headers the agent can't actually persist rather than writing a
|
|
66
|
+
// config that reports `auth: "header"` but carries no credential.
|
|
67
|
+
if (action.kind === "cli" && action.droppedHeaders) {
|
|
68
|
+
const dropped = action.droppedHeaders(inputs.headers);
|
|
69
|
+
if (dropped.length > 0) {
|
|
70
|
+
throw new HeadlessInputError(COPY.headersUnsupported(agent.label, dropped));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const installContext = {
|
|
74
|
+
home: resolveHome(deps),
|
|
75
|
+
cwd: installCwd,
|
|
76
|
+
};
|
|
77
|
+
// A global file install writes under the home directory; without one the
|
|
78
|
+
// path would be relative and the failure message an internal invariant.
|
|
79
|
+
if (action.kind === "file" &&
|
|
80
|
+
effectiveScope === "global" &&
|
|
81
|
+
!installContext.home) {
|
|
82
|
+
throw new SetupFatalError(COPY.homeUnknown(agent.label));
|
|
83
|
+
}
|
|
84
|
+
const result = await runMcpInstall(deps, {
|
|
85
|
+
action,
|
|
86
|
+
url,
|
|
87
|
+
headers: inputs.headers,
|
|
88
|
+
installContext,
|
|
89
|
+
});
|
|
90
|
+
if (result.outcome === "failed") {
|
|
91
|
+
throw new SetupFatalError(COPY.installFailed(agent.label, result.reason ?? "unknown error"));
|
|
92
|
+
}
|
|
93
|
+
const auth = inputs.headers.length > 0 ? "header" : "oauth";
|
|
94
|
+
if (!inputs.headless) {
|
|
95
|
+
deps.prompter.line(result.file
|
|
96
|
+
? COPY.configuredFile(agent.label, result.file)
|
|
97
|
+
: COPY.configuredCli(agent.label));
|
|
98
|
+
deps.prompter.line(auth === "oauth" ? COPY.nextStepOAuth(agent.label) : COPY.nextStepHeader);
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
endpoint,
|
|
102
|
+
url,
|
|
103
|
+
serverName: PHOENIX_MCP_SERVER_NAME,
|
|
104
|
+
agent: agent.id,
|
|
105
|
+
scope: effectiveScope,
|
|
106
|
+
auth,
|
|
107
|
+
...(result.file ? { file: result.file } : {}),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Endpoint
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
async function resolveEndpoint(deps, inputs) {
|
|
114
|
+
// Headless, or endpoint pinned by flag: take the resolved value as-is.
|
|
115
|
+
if (inputs.headless || inputs.endpointExplicit) {
|
|
116
|
+
// The value may come from PHOENIX_HOST or a profile, which nothing has
|
|
117
|
+
// validated yet — refuse it as bad input rather than let
|
|
118
|
+
// `normalizeEndpoint`'s TypeError get misreported as a network error.
|
|
119
|
+
if (!isEndpointUrl(inputs.endpoint)) {
|
|
120
|
+
throw new HeadlessInputError(COPY.endpointUnusable(inputs.endpoint));
|
|
121
|
+
}
|
|
122
|
+
return normalizeEndpoint(inputs.endpoint);
|
|
123
|
+
}
|
|
124
|
+
// Interactive: show the inferred endpoint as the default and let the user
|
|
125
|
+
// accept it (Enter) or point somewhere else.
|
|
126
|
+
const entered = await deps.prompter.textInput({
|
|
127
|
+
message: COPY.endpointPrompt,
|
|
128
|
+
defaultValue: inputs.endpoint,
|
|
129
|
+
validate: (value) => isEndpointUrl(value) ? undefined : COPY.endpointInvalid,
|
|
130
|
+
});
|
|
131
|
+
const endpoint = normalizeEndpoint(entered);
|
|
132
|
+
deps.prompter.line(COPY.usingEndpoint(`${endpoint}/mcp`));
|
|
133
|
+
return endpoint;
|
|
134
|
+
}
|
|
135
|
+
// ---------------------------------------------------------------------------
|
|
136
|
+
// Scope
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
async function resolveScope(deps, inputs) {
|
|
139
|
+
if (inputs.scope) {
|
|
140
|
+
return inputs.scope;
|
|
141
|
+
}
|
|
142
|
+
// Headless defaults to global — the safe, agent-agnostic choice, and the one
|
|
143
|
+
// scope every agent supports.
|
|
144
|
+
if (inputs.headless) {
|
|
145
|
+
return "global";
|
|
146
|
+
}
|
|
147
|
+
return deps.prompter.select({
|
|
148
|
+
message: COPY.scopePrompt,
|
|
149
|
+
options: [
|
|
150
|
+
{
|
|
151
|
+
value: "global",
|
|
152
|
+
label: COPY.scopeGlobalLabel,
|
|
153
|
+
hint: COPY.scopeGlobalHint,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
value: "local",
|
|
157
|
+
label: COPY.scopeLocalLabel,
|
|
158
|
+
hint: COPY.scopeLocalHint,
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Codex has no repo-scoped config. When `--local` names it, a headless run
|
|
165
|
+
* errors on the unsupported scope; an interactive run warns and falls back to
|
|
166
|
+
* global.
|
|
167
|
+
*/
|
|
168
|
+
async function reconcileScope(deps, agent, scope, inputs) {
|
|
169
|
+
if (agent.install[scope]) {
|
|
170
|
+
return scope;
|
|
171
|
+
}
|
|
172
|
+
if (scope === "local" && agent.install.global) {
|
|
173
|
+
if (inputs.headless) {
|
|
174
|
+
throw new HeadlessInputError(COPY.globalOnlyHeadless(agent.label));
|
|
175
|
+
}
|
|
176
|
+
deps.prompter.line(COPY.globalOnly(agent.label));
|
|
177
|
+
return "global";
|
|
178
|
+
}
|
|
179
|
+
throw new SetupFatalError(COPY.scopeUnsupported(agent.label, scope));
|
|
180
|
+
}
|
|
181
|
+
/** The repo root a local install writes into; errors outside a git repo. */
|
|
182
|
+
async function resolveRepoRoot(deps) {
|
|
183
|
+
const check = await deps.processes.exec({
|
|
184
|
+
command: "git",
|
|
185
|
+
args: ["rev-parse", "--show-toplevel"],
|
|
186
|
+
cwd: deps.context.cwd,
|
|
187
|
+
});
|
|
188
|
+
const root = check.stdout.trim();
|
|
189
|
+
if (check.exitCode !== 0 || !root) {
|
|
190
|
+
// Same class either mode: it's a bad invocation, not a runtime failure.
|
|
191
|
+
throw new HeadlessInputError(COPY.localNeedsRepo);
|
|
192
|
+
}
|
|
193
|
+
return root;
|
|
194
|
+
}
|
|
195
|
+
// ---------------------------------------------------------------------------
|
|
196
|
+
// Agent
|
|
197
|
+
// ---------------------------------------------------------------------------
|
|
198
|
+
async function resolveAgent(deps, inputs) {
|
|
199
|
+
if (inputs.agent) {
|
|
200
|
+
const agent = getMcpAgent(inputs.agent);
|
|
201
|
+
if (!agent) {
|
|
202
|
+
// Unreachable: the command layer validates --agent against MCP_AGENT_IDS.
|
|
203
|
+
throw new HeadlessInputError(COPY.headlessNeedsAgent);
|
|
204
|
+
}
|
|
205
|
+
return agent;
|
|
206
|
+
}
|
|
207
|
+
if (inputs.headless) {
|
|
208
|
+
throw new HeadlessInputError(COPY.headlessNeedsAgent);
|
|
209
|
+
}
|
|
210
|
+
const detected = await detectAgents(deps, MCP_AGENTS);
|
|
211
|
+
const detectedIds = new Set(detected.map((agent) => agent.id));
|
|
212
|
+
// Detected agents first (with a hint), then the rest — so a user can still
|
|
213
|
+
// configure an agent whose binary isn't on PATH (e.g. the VS Code app without
|
|
214
|
+
// the `code` shell command).
|
|
215
|
+
const ordered = [
|
|
216
|
+
...MCP_AGENTS.filter((agent) => detectedIds.has(agent.id)),
|
|
217
|
+
...MCP_AGENTS.filter((agent) => !detectedIds.has(agent.id)),
|
|
218
|
+
];
|
|
219
|
+
const chosen = await deps.prompter.select({
|
|
220
|
+
message: COPY.agentPrompt,
|
|
221
|
+
options: ordered.map((agent) => ({
|
|
222
|
+
value: agent.id,
|
|
223
|
+
label: agent.label,
|
|
224
|
+
...(detectedIds.has(agent.id) ? { hint: COPY.detectedHint } : {}),
|
|
225
|
+
})),
|
|
226
|
+
});
|
|
227
|
+
// `chosen` is one of MCP_AGENTS' ids by construction.
|
|
228
|
+
return getMcpAgent(chosen);
|
|
229
|
+
}
|
|
230
|
+
/** The user's home directory, read only through the run context's env copy. */
|
|
231
|
+
function resolveHome(deps) {
|
|
232
|
+
const { env } = deps.context;
|
|
233
|
+
return env.HOME ?? env.USERPROFILE ?? "";
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=runSetupMcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runSetupMcp.js","sourceRoot":"","sources":["../../../src/setup/mcp/runSetupMcp.ts"],"names":[],"mappings":"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"}
|
package/build/setup/options.d.ts
CHANGED
|
@@ -64,6 +64,12 @@ export interface SetupOptions {
|
|
|
64
64
|
background?: boolean;
|
|
65
65
|
/** Docs prefetch, so the agent instruments against local docs. */
|
|
66
66
|
docs?: DocsPrefetchOptions;
|
|
67
|
+
/**
|
|
68
|
+
* --docs-mcp / --no-docs-mcp: connect the Phoenix docs MCP server to the
|
|
69
|
+
* coding agent's project config (replaces the docs prefetch when taken).
|
|
70
|
+
* Undefined means ask interactively; headless skips unless the flag opts in.
|
|
71
|
+
*/
|
|
72
|
+
docsMcp?: boolean;
|
|
67
73
|
}
|
|
68
74
|
export interface SetupInputs {
|
|
69
75
|
/** Pre-answered endpoint (flag, else env), if any. */
|
|
@@ -92,6 +98,11 @@ export interface SetupInputs {
|
|
|
92
98
|
bypassPermissions: boolean;
|
|
93
99
|
/** Docs prefetch; only consulted when `instrument` is true. */
|
|
94
100
|
docs: DocsPrefetchOptions;
|
|
101
|
+
/**
|
|
102
|
+
* Docs MCP offer; only consulted when `instrument` is true. Undefined means
|
|
103
|
+
* ask interactively — an unattended run skips it unless `--docs-mcp` opts in.
|
|
104
|
+
*/
|
|
105
|
+
docsMcp?: boolean;
|
|
95
106
|
}
|
|
96
107
|
/**
|
|
97
108
|
* A headless run that instruments must name its agent: there is no prompt to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/setup/options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG9D;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,IAAI,CAAC,EAAE,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/setup/options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG9D;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,UAAU,EAAE,OAAO,CAAC;IACpB,mEAAmE;IACnE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,IAAI,EAAE,mBAAmB,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,EAC/C,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,GAAG,IAAI,CAIP;AAED,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC;CACjD,GAAG,WAAW,CAsCd"}
|
package/build/setup/options.js
CHANGED
|
@@ -58,6 +58,7 @@ export function resolveSetupInputs({ options, context, }) {
|
|
|
58
58
|
background: options.background ?? headless,
|
|
59
59
|
bypassPermissions: Boolean(options.bypassPermissions),
|
|
60
60
|
docs: options.docs ?? { enabled: true },
|
|
61
|
+
docsMcp: options.docsMcp,
|
|
61
62
|
};
|
|
62
63
|
}
|
|
63
64
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/setup/options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAsB,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/setup/options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAsB,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAgG9C;;;;;;;;GAQG;AACH,MAAM,UAAU,gCAAgC,CAAC,EAC/C,QAAQ,EACR,KAAK,GAIN;IACC,IAAI,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,OAAO,EACP,OAAO,GAIR;IACC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACxB,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;QAChB,GAAG,CAAC,YAAY;QAChB,GAAG,CAAC,0BAA0B;QAC9B,SAAS,CAAC;IACZ,MAAM,OAAO,GACX,OAAO,CAAC,OAAO;QACf,GAAG,CAAC,eAAe;QACnB,GAAG,CAAC,oBAAoB;QACxB,SAAS,CAAC;IACZ,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAEjE,qEAAqE;IACrE,uDAAuD;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC;IAEnD,IAAI,UAAU,EAAE,CAAC;QACf,gCAAgC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,SAAS;QACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,SAAS;QACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS;QACnC,QAAQ;QACR,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,UAAU;QACV,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,6DAA6D;QAC7D,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,QAAQ;QAC1C,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACrD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;QACvC,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -37,6 +37,12 @@ export interface InstrumentationPromptArgs {
|
|
|
37
37
|
* pages from disk instead of fetching the URLs mid-run.
|
|
38
38
|
*/
|
|
39
39
|
localDocsDir?: string;
|
|
40
|
+
/**
|
|
41
|
+
* True when the phoenix-docs MCP server was connected to the agent's
|
|
42
|
+
* project config. The agent then searches the docs on demand — cheaper
|
|
43
|
+
* than fetching whole pages — instead of reading a local prefetch.
|
|
44
|
+
*/
|
|
45
|
+
docsMcpConfigured?: boolean;
|
|
40
46
|
}
|
|
41
|
-
export declare function buildInstrumentationPrompt({ projectName, endpoint, isDefaultEndpoint, docs, tracesUrl, authEnabled, languages, localDocsDir, }: InstrumentationPromptArgs): string;
|
|
47
|
+
export declare function buildInstrumentationPrompt({ projectName, endpoint, isDefaultEndpoint, docs, tracesUrl, authEnabled, languages, localDocsDir, docsMcpConfigured, }: InstrumentationPromptArgs): string;
|
|
42
48
|
//# sourceMappingURL=instrumentationPrompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentationPrompt.d.ts","sourceRoot":"","sources":["../../../src/setup/prompts/instrumentationPrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"instrumentationPrompt.d.ts","sourceRoot":"","sources":["../../../src/setup/prompts/instrumentationPrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,WAAW,yBAAyB;IACxC,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,yBAAyB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,0BAA0B,CAAC,EACzC,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,WAAW,EACX,SAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,EAAE,yBAAyB,GAAG,MAAM,CAuDpC"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* agent finishes, so the agent's job ends with an emitted trace, not a
|
|
11
11
|
* self-report.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
import { DOCS_MCP_SERVER_NAME } from "../agents/registry.js";
|
|
14
|
+
export function buildInstrumentationPrompt({ projectName, endpoint, isDefaultEndpoint, docs, tracesUrl, authEnabled, languages = [], localDocsDir, docsMcpConfigured, }) {
|
|
14
15
|
const credentialVars = authEnabled
|
|
15
16
|
? "PHOENIX_COLLECTOR_ENDPOINT and PHOENIX_API_KEY"
|
|
16
17
|
: "PHOENIX_COLLECTOR_ENDPOINT";
|
|
@@ -23,6 +24,9 @@ export function buildInstrumentationPrompt({ projectName, endpoint, isDefaultEnd
|
|
|
23
24
|
const localDocsRule = localDocsDir
|
|
24
25
|
? `\nThese pages are already downloaded to ${localDocsDir} — read them from disk first, and only\nfetch a URL if the page you need is missing there.`
|
|
25
26
|
: "";
|
|
27
|
+
const docsMcpRule = docsMcpConfigured
|
|
28
|
+
? `\nThe "${DOCS_MCP_SERVER_NAME}" MCP server is connected in this project — search it for Phoenix docs\nfirst; it returns just the relevant sections. Fetch the URLs above only if its tools are\nunavailable.`
|
|
29
|
+
: "";
|
|
26
30
|
return `You are running as part of the Phoenix setup script. Your ONLY task is to add Phoenix
|
|
27
31
|
tracing to the application in the current working directory and emit one verification
|
|
28
32
|
trace. Do not run setup tools, onboarding scripts, or "px setup" again.
|
|
@@ -31,7 +35,7 @@ Work from the official docs — do not guess package names or APIs from memory:
|
|
|
31
35
|
- Python quickstart (arize-phoenix-otel): ${docs.quickstartPython}
|
|
32
36
|
- TypeScript quickstart (@arizeai/phoenix-otel): ${docs.quickstartTypeScript}
|
|
33
37
|
- register() reference: ${docs.phoenixOtelSetup}
|
|
34
|
-
- Auto-instrumentation guides by framework/provider: ${docs.integrationsIndex}${localDocsRule}
|
|
38
|
+
- Auto-instrumentation guides by framework/provider: ${docs.integrationsIndex}${localDocsRule}${docsMcpRule}
|
|
35
39
|
${languageRule}
|
|
36
40
|
|
|
37
41
|
Rules:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentationPrompt.js","sourceRoot":"","sources":["../../../src/setup/prompts/instrumentationPrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"instrumentationPrompt.js","sourceRoot":"","sources":["../../../src/setup/prompts/instrumentationPrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAsC1D,MAAM,UAAU,0BAA0B,CAAC,EACzC,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,WAAW,EACX,SAAS,GAAG,EAAE,EACd,YAAY,EACZ,iBAAiB,GACS;IAC1B,MAAM,cAAc,GAAG,WAAW;QAChC,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,4BAA4B,CAAC;IACjC,MAAM,YAAY,GAAG,iBAAiB;QACpC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,sFAAsF,QAAQ,GAAG,CAAC;IACtG,MAAM,YAAY,GAChB,SAAS,CAAC,MAAM,GAAG,CAAC;QAClB,CAAC,CAAC,yBAAyB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC;QACtF,CAAC,CAAC,oIAAoI,CAAC;IAC3I,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,2CAA2C,YAAY,4FAA4F;QACrJ,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,WAAW,GAAG,iBAAiB;QACnC,CAAC,CAAC,UAAU,oBAAoB,gLAAgL;QAChN,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;4CAKmC,IAAI,CAAC,gBAAgB;mDACd,IAAI,CAAC,oBAAoB;0BAClD,IAAI,CAAC,gBAAgB;uDACQ,IAAI,CAAC,iBAAiB,GAAG,aAAa,GAAG,WAAW;EACzG,YAAY;;;;yDAI2C,cAAc;;;;;;mBAMpD,WAAW,KAAK,YAAY;;;;;;;;;;;;;;qCAcV,SAAS;;;CAG7C,CAAC;AACF,CAAC"}
|
|
@@ -16,6 +16,7 @@ import type { SetupInputs } from "./options.js";
|
|
|
16
16
|
import type { Connection } from "./steps/establishConnection.js";
|
|
17
17
|
import { type ToolingResult } from "./steps/installTooling.js";
|
|
18
18
|
import { type InstrumentationLane } from "./steps/instrumentApp.js";
|
|
19
|
+
import type { DocsMcpResult } from "./steps/offerDocsMcp.js";
|
|
19
20
|
/** Everything a run did, in the shape the summary and `--format json` print. */
|
|
20
21
|
export interface SetupReport {
|
|
21
22
|
connection: Connection;
|
|
@@ -26,6 +27,8 @@ export interface SetupReport {
|
|
|
26
27
|
/** Paths appended to a .gitignore. */
|
|
27
28
|
gitignored: string[];
|
|
28
29
|
docs?: DocsPrefetchResult;
|
|
30
|
+
/** The docs MCP offer, when it was made (configured replaces `docs`). */
|
|
31
|
+
docsMcp?: DocsMcpResult;
|
|
29
32
|
instrumentation?: InstrumentationLane;
|
|
30
33
|
/** True once the API confirmed a trace arrived after this run started. */
|
|
31
34
|
tracesVerified?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSetup.d.ts","sourceRoot":"","sources":["../../src/setup/runSetup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"runSetup.d.ts","sourceRoot":"","sources":["../../src/setup/runSetup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1D,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sCAAsC;IACtC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,yEAAyE;IACzE,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAeD,mCAAmC;AACnC,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,CAAC,CA8CtB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,WAAW,CAAC,CAetB;AAED,4EAA4E;AAC5E,wBAAsB,SAAS,CAC7B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,aAAa,CAAC,CAexB"}
|
package/build/setup/runSetup.js
CHANGED
|
@@ -21,7 +21,6 @@ import { establishConnection } from "./steps/establishConnection.js";
|
|
|
21
21
|
import { offerToolingInstalls, } from "./steps/installTooling.js";
|
|
22
22
|
import { instrumentApp } from "./steps/instrumentApp.js";
|
|
23
23
|
import { offerPxProfile } from "./steps/offerPxProfile.js";
|
|
24
|
-
import { prefetchDocs } from "./steps/prefetchDocs.js";
|
|
25
24
|
import { hasSpansInSkewWindow, waitForFirstTrace, tracesUrl, } from "./steps/verifyTraces.js";
|
|
26
25
|
import { ENV_FILE_NAME, writeEnvFile } from "./steps/writeEnvFile.js";
|
|
27
26
|
/**
|
|
@@ -126,13 +125,6 @@ async function registerAndInstrument(deps, inputs, { agentDetection }) {
|
|
|
126
125
|
if (!inputs.instrument) {
|
|
127
126
|
return base;
|
|
128
127
|
}
|
|
129
|
-
// Only after registration's git-safety gate: the docs fetch writes into
|
|
130
|
-
// `.px/`, which an earlier download can make look like a pre-existing dirty
|
|
131
|
-
// tree in a fast or cached headless run.
|
|
132
|
-
const docs = await prefetchDocs(deps, {
|
|
133
|
-
docs: inputs.docs,
|
|
134
|
-
isGitRepository: registration.isGitRepository,
|
|
135
|
-
});
|
|
136
128
|
const startedAt = deps.clock.now();
|
|
137
129
|
// Any span already visible inside the clock-skew window predates this run —
|
|
138
130
|
// verification must then require spans strictly after the start time, or a
|
|
@@ -140,7 +132,11 @@ async function registerAndInstrument(deps, inputs, { agentDetection }) {
|
|
|
140
132
|
const hadRecentSpans = await hasSpansInSkewWindow(deps, connection, {
|
|
141
133
|
sinceMs: startedAt,
|
|
142
134
|
});
|
|
143
|
-
|
|
135
|
+
// The docs steps live inside instrumentApp, after its lane choice: the docs
|
|
136
|
+
// MCP offer targets exactly the agent doing the hand-off, and taking it
|
|
137
|
+
// replaces the `.px/docs` download outright. Both still run behind
|
|
138
|
+
// registration's git-safety gate, which this call comes after.
|
|
139
|
+
const { lane: instrumentation, docs, docsMcp, } = await instrumentApp(deps, connection, {
|
|
144
140
|
authEnabled,
|
|
145
141
|
agentDetection,
|
|
146
142
|
agent: inputs.agent,
|
|
@@ -149,7 +145,10 @@ async function registerAndInstrument(deps, inputs, { agentDetection }) {
|
|
|
149
145
|
background: inputs.background,
|
|
150
146
|
bypassPermissions: inputs.bypassPermissions,
|
|
151
147
|
},
|
|
152
|
-
|
|
148
|
+
docs: inputs.docs,
|
|
149
|
+
docsMcp: inputs.docsMcp,
|
|
150
|
+
headless: inputs.headless,
|
|
151
|
+
isGitRepository: registration.isGitRepository,
|
|
153
152
|
});
|
|
154
153
|
// The return value is setup's definition of done — a trace the API confirmed
|
|
155
154
|
// arriving, not the agent's own claim that it finished. It is reported, not
|
|
@@ -163,8 +162,10 @@ async function registerAndInstrument(deps, inputs, { agentDetection }) {
|
|
|
163
162
|
return {
|
|
164
163
|
...base,
|
|
165
164
|
...(docs ? { docs } : {}),
|
|
166
|
-
|
|
167
|
-
//
|
|
165
|
+
...(docsMcp && docsMcp.outcome !== "skipped" ? { docsMcp } : {}),
|
|
166
|
+
// The MCP config files and the docs step's own gitignore appends have to
|
|
167
|
+
// fold into the report, or it under-states what setup touched.
|
|
168
|
+
files: [...base.files, ...(docsMcp?.files ?? [])],
|
|
168
169
|
gitignored: [...base.gitignored, ...(docs?.gitignoreAppended ?? [])],
|
|
169
170
|
instrumentation,
|
|
170
171
|
tracesVerified,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSetup.js","sourceRoot":"","sources":["../../src/setup/runSetup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,gCAAgC,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,oBAAoB,GAErB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAA4B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"runSetup.js","sourceRoot":"","sources":["../../src/setup/runSetup.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
* first ingestion, so setup only needs to settle on a *name* and hand it
|
|
6
6
|
* to the app via `PHOENIX_PROJECT_NAME`. What remains is credential
|
|
7
7
|
* acquisition: the auth-on lanes verify the key with a read-only probe so a
|
|
8
|
-
* bad paste is caught here rather than at first trace.
|
|
9
|
-
*
|
|
8
|
+
* bad paste is caught here rather than at first trace. When the instance runs
|
|
9
|
+
* the OAuth2 authorization server, the interactive lane offers a streamlined
|
|
10
|
+
* path first — log in with the browser, mint an API key over REST, revoke the
|
|
11
|
+
* grant that login created — and every failure along it falls back to the
|
|
12
|
+
* paste prompt rather than aborting setup.
|
|
10
13
|
*/
|
|
11
14
|
import type { SetupDeps } from "../deps/index.js";
|
|
12
15
|
import type { SetupInputs } from "../options.js";
|
|
@@ -25,5 +28,5 @@ export interface EstablishConnectionArgs {
|
|
|
25
28
|
authEnabled: boolean;
|
|
26
29
|
inputs: SetupInputs;
|
|
27
30
|
}
|
|
28
|
-
export declare function establishConnection(deps: Pick<SetupDeps, "context" | "createClient" | "prompter">, { endpoint, authEnabled, inputs }: EstablishConnectionArgs): Promise<Connection>;
|
|
31
|
+
export declare function establishConnection(deps: Pick<SetupDeps, "context" | "createClient" | "prompter" | "oauthLogin">, { endpoint, authEnabled, inputs }: EstablishConnectionArgs): Promise<Connection>;
|
|
29
32
|
//# sourceMappingURL=establishConnection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"establishConnection.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/establishConnection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"establishConnection.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/establishConnection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMrE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGtD;AA6QD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC,EAC7E,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,uBAAuB,GACzD,OAAO,CAAC,UAAU,CAAC,CAgBrB"}
|