@arizeai/phoenix-cli 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -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 +6 -0
- package/build/commands/formatSetup.d.ts.map +1 -1
- package/build/commands/formatSetup.js +10 -1
- package/build/commands/formatSetup.js.map +1 -1
- package/build/commands/setup.d.ts.map +1 -1
- package/build/commands/setup.js +4 -0
- package/build/commands/setup.js.map +1 -1
- 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 +57 -0
- package/build/setup/agents/registry.d.ts.map +1 -1
- package/build/setup/agents/registry.js +45 -0
- 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/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 +133 -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 +31 -0
- package/build/setup/util/mcpConfig.d.ts.map +1 -0
- package/build/setup/util/mcpConfig.js +62 -0
- package/build/setup/util/mcpConfig.js.map +1 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"establishConnection.js","sourceRoot":"","sources":["../../../src/setup/steps/establishConnection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"establishConnection.js","sourceRoot":"","sources":["../../../src/setup/steps/establishConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,20 @@
|
|
|
7
7
|
* lanes converge on the trace-verification step — setup's definition of
|
|
8
8
|
* done is API-verified data flow, not agent self-report.
|
|
9
9
|
*
|
|
10
|
+
* The lane is resolved before anything docs-related happens: the docs MCP
|
|
11
|
+
* offer targets exactly the agent being launched, and taking it replaces the
|
|
12
|
+
* `.px/docs` download outright — the agent searches the docs server on demand
|
|
13
|
+
* instead of reading prefetched pages. The clipboard and manual lanes have no
|
|
14
|
+
* known agent to configure, so they keep the prefetch.
|
|
15
|
+
*
|
|
10
16
|
* `--agent` pre-answers the lane, which is what makes an unattended run
|
|
11
17
|
* possible: with no TTY there is no prompt to pick a lane from, and the agent
|
|
12
18
|
* runs in background mode (no TUI to hand the terminal to).
|
|
13
19
|
*/
|
|
14
20
|
import { type AgentRunMode, type CodingAgent, type CodingAgentId } from "../agents/registry.js";
|
|
15
|
-
import type { DocsPrefetchResult, SetupDeps } from "../deps/index.js";
|
|
21
|
+
import type { DocsPrefetchOptions, DocsPrefetchResult, SetupDeps } from "../deps/index.js";
|
|
16
22
|
import type { Connection } from "./establishConnection.js";
|
|
23
|
+
import { type DocsMcpResult } from "./offerDocsMcp.js";
|
|
17
24
|
export interface InstrumentAppArgs {
|
|
18
25
|
authEnabled: boolean;
|
|
19
26
|
/** Started at setup launch so the probes never block this prompt. */
|
|
@@ -24,8 +31,13 @@ export interface InstrumentAppArgs {
|
|
|
24
31
|
languages: string[];
|
|
25
32
|
/** How to run the agent — see {@link AgentRunMode}. */
|
|
26
33
|
mode: AgentRunMode;
|
|
27
|
-
/**
|
|
28
|
-
docs
|
|
34
|
+
/** Docs prefetch options; the download runs unless the MCP replaces it. */
|
|
35
|
+
docs: DocsPrefetchOptions;
|
|
36
|
+
/** `--docs-mcp` / `--no-docs-mcp`; undefined means ask (when we can). */
|
|
37
|
+
docsMcp?: boolean;
|
|
38
|
+
headless: boolean;
|
|
39
|
+
/** Gates the prefetch's .gitignore append, as in the docs step itself. */
|
|
40
|
+
isGitRepository: boolean;
|
|
29
41
|
}
|
|
30
42
|
/** Which lane instrumentation actually took — reported in the summary. */
|
|
31
43
|
export type InstrumentationLane = {
|
|
@@ -37,5 +49,12 @@ export type InstrumentationLane = {
|
|
|
37
49
|
} | {
|
|
38
50
|
kind: "manual";
|
|
39
51
|
};
|
|
40
|
-
export
|
|
52
|
+
export interface InstrumentAppResult {
|
|
53
|
+
lane: InstrumentationLane;
|
|
54
|
+
/** The docs download, when it ran (the MCP taking its place omits it). */
|
|
55
|
+
docs?: DocsPrefetchResult;
|
|
56
|
+
/** The docs MCP offer, when a launched agent was there to make it to. */
|
|
57
|
+
docsMcp?: DocsMcpResult;
|
|
58
|
+
}
|
|
59
|
+
export declare function instrumentApp(deps: Pick<SetupDeps, "context" | "processes" | "prompter" | "writeClipboard" | "fetchDocs">, connection: Connection, args: InstrumentAppArgs): Promise<InstrumentAppResult>;
|
|
41
60
|
//# sourceMappingURL=instrumentApp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentApp.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/instrumentApp.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"instrumentApp.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/instrumentApp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAElB,SAAS,EACV,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AASlE,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACvC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,yEAAyE;IACzE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,uDAAuD;IACvD,IAAI,EAAE,YAAY,CAAC;IACnB,2EAA2E;IAC3E,IAAI,EAAE,mBAAmB,CAAC;IAC1B,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,0EAA0E;AAC1E,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,0EAA0E;IAC1E,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,yEAAyE;IACzE,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,CACR,SAAS,EACT,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,gBAAgB,GAAG,WAAW,CACtE,EACD,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAuI9B"}
|
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
* lanes converge on the trace-verification step — setup's definition of
|
|
8
8
|
* done is API-verified data flow, not agent self-report.
|
|
9
9
|
*
|
|
10
|
+
* The lane is resolved before anything docs-related happens: the docs MCP
|
|
11
|
+
* offer targets exactly the agent being launched, and taking it replaces the
|
|
12
|
+
* `.px/docs` download outright — the agent searches the docs server on demand
|
|
13
|
+
* instead of reading prefetched pages. The clipboard and manual lanes have no
|
|
14
|
+
* known agent to configure, so they keep the prefetch.
|
|
15
|
+
*
|
|
10
16
|
* `--agent` pre-answers the lane, which is what makes an unattended run
|
|
11
17
|
* possible: with no TTY there is no prompt to pick a lane from, and the agent
|
|
12
18
|
* runs in background mode (no TUI to hand the terminal to).
|
|
@@ -15,10 +21,78 @@ import { buildLaunchSpec, getCodingAgent, probeBinary, } from "../agents/registr
|
|
|
15
21
|
import * as COPY from "../copy.js";
|
|
16
22
|
import { SetupFatalError } from "../errors.js";
|
|
17
23
|
import { buildInstrumentationPrompt } from "../prompts/instrumentationPrompt.js";
|
|
24
|
+
import { offerDocsMcp } from "./offerDocsMcp.js";
|
|
25
|
+
import { prefetchDocs } from "./prefetchDocs.js";
|
|
18
26
|
import { tracesUrl } from "./verifyTraces.js";
|
|
19
27
|
const DEFAULT_LOCAL_ENDPOINT = "http://localhost:6006";
|
|
20
28
|
export async function instrumentApp(deps, connection, args) {
|
|
21
29
|
const { authEnabled, agentDetection, languages, mode } = args;
|
|
30
|
+
// Resolve the lane before the docs steps: the MCP offer needs to know which
|
|
31
|
+
// agent is doing the work, and only then can "skip the download" be decided.
|
|
32
|
+
let chosenAgent;
|
|
33
|
+
let fallbackLane = "manual";
|
|
34
|
+
if (args.agent) {
|
|
35
|
+
// `--agent` short-circuits the lane prompt. The binary is probed rather
|
|
36
|
+
// than taken from the detection sweep so a named-but-missing agent fails
|
|
37
|
+
// with "not on your PATH" instead of silently dropping to another lane.
|
|
38
|
+
const agent = getCodingAgent(args.agent);
|
|
39
|
+
if (!agent) {
|
|
40
|
+
throw new SetupFatalError(COPY.INSTRUMENTATION.unknownAgent(args.agent));
|
|
41
|
+
}
|
|
42
|
+
if (!(await probeBinary(deps, agent.binary))) {
|
|
43
|
+
throw new SetupFatalError(COPY.INSTRUMENTATION.agentNotFound(agent.label, agent.binary));
|
|
44
|
+
}
|
|
45
|
+
chosenAgent = agent;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const detectedAgents = await agentDetection;
|
|
49
|
+
const options = [
|
|
50
|
+
...detectedAgents.map((agent) => ({
|
|
51
|
+
value: `agent:${agent.id}`,
|
|
52
|
+
label: COPY.INSTRUMENTATION.launchLabel(agent.label),
|
|
53
|
+
hint: COPY.INSTRUMENTATION.launchHint,
|
|
54
|
+
})),
|
|
55
|
+
{
|
|
56
|
+
value: "clipboard",
|
|
57
|
+
label: COPY.INSTRUMENTATION.clipboardLabel,
|
|
58
|
+
hint: COPY.INSTRUMENTATION.clipboardHint,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
value: "manual",
|
|
62
|
+
label: COPY.INSTRUMENTATION.manualLabel,
|
|
63
|
+
hint: COPY.INSTRUMENTATION.manualHint,
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
const choice = await deps.prompter.select({
|
|
67
|
+
message: COPY.INSTRUMENTATION.modeMessage,
|
|
68
|
+
options,
|
|
69
|
+
});
|
|
70
|
+
chosenAgent = detectedAgents.find((agent) => choice === `agent:${agent.id}`);
|
|
71
|
+
fallbackLane = choice === "clipboard" ? "clipboard" : "manual";
|
|
72
|
+
}
|
|
73
|
+
// The offer is an optimization and never takes setup down with it — that
|
|
74
|
+
// contract lives inside offerDocsMcp, which reports any failure and returns
|
|
75
|
+
// "failed" instead of throwing. Only a user cancel unwinds.
|
|
76
|
+
let docsMcp;
|
|
77
|
+
if (chosenAgent) {
|
|
78
|
+
docsMcp = await offerDocsMcp(deps, {
|
|
79
|
+
docsMcp: args.docsMcp,
|
|
80
|
+
agent: chosenAgent,
|
|
81
|
+
headless: args.headless,
|
|
82
|
+
docsEnabled: args.docs.enabled,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else if (args.docsMcp === true) {
|
|
86
|
+
// An explicit --docs-mcp deserves a word when the lane can't honor it,
|
|
87
|
+
// same as a pinned agent with no MCP install path.
|
|
88
|
+
deps.prompter.line(COPY.DOCS_MCP.noAgentLane);
|
|
89
|
+
}
|
|
90
|
+
const docs = docsMcp?.outcome === "configured"
|
|
91
|
+
? undefined
|
|
92
|
+
: await prefetchDocs(deps, {
|
|
93
|
+
docs: args.docs,
|
|
94
|
+
isGitRepository: args.isGitRepository,
|
|
95
|
+
});
|
|
22
96
|
const prompt = buildInstrumentationPrompt({
|
|
23
97
|
projectName: connection.projectName,
|
|
24
98
|
endpoint: connection.endpoint,
|
|
@@ -35,48 +109,22 @@ export async function instrumentApp(deps, connection, args) {
|
|
|
35
109
|
// Only advertise the local docs dir when it holds pages — an empty one
|
|
36
110
|
// (docs site down, over-narrow workflow filter) would send the agent to
|
|
37
111
|
// read a directory with nothing in it instead of the web.
|
|
38
|
-
...(
|
|
112
|
+
...(docs?.hasPagesOnDisk ? { localDocsDir: docs.outputDir } : {}),
|
|
113
|
+
...(docsMcp?.outcome === "configured" ? { docsMcpConfigured: true } : {}),
|
|
39
114
|
});
|
|
40
|
-
// `--agent` short-circuits the lane prompt. The binary is probed rather
|
|
41
|
-
// than taken from the detection sweep so a named-but-missing agent fails
|
|
42
|
-
// with "not on your PATH" instead of silently dropping to another lane.
|
|
43
|
-
if (args.agent) {
|
|
44
|
-
const agent = getCodingAgent(args.agent);
|
|
45
|
-
if (!agent) {
|
|
46
|
-
throw new SetupFatalError(COPY.INSTRUMENTATION.unknownAgent(args.agent));
|
|
47
|
-
}
|
|
48
|
-
if (!(await probeBinary(deps, agent.binary))) {
|
|
49
|
-
throw new SetupFatalError(COPY.INSTRUMENTATION.agentNotFound(agent.label, agent.binary));
|
|
50
|
-
}
|
|
51
|
-
return launchAgent(deps, connection, { agent, prompt, mode });
|
|
52
|
-
}
|
|
53
|
-
const detectedAgents = await agentDetection;
|
|
54
|
-
const options = [
|
|
55
|
-
...detectedAgents.map((agent) => ({
|
|
56
|
-
value: `agent:${agent.id}`,
|
|
57
|
-
label: COPY.INSTRUMENTATION.launchLabel(agent.label),
|
|
58
|
-
hint: COPY.INSTRUMENTATION.launchHint,
|
|
59
|
-
})),
|
|
60
|
-
{
|
|
61
|
-
value: "clipboard",
|
|
62
|
-
label: COPY.INSTRUMENTATION.clipboardLabel,
|
|
63
|
-
hint: COPY.INSTRUMENTATION.clipboardHint,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
value: "manual",
|
|
67
|
-
label: COPY.INSTRUMENTATION.manualLabel,
|
|
68
|
-
hint: COPY.INSTRUMENTATION.manualHint,
|
|
69
|
-
},
|
|
70
|
-
];
|
|
71
|
-
const choice = await deps.prompter.select({
|
|
72
|
-
message: COPY.INSTRUMENTATION.modeMessage,
|
|
73
|
-
options,
|
|
74
|
-
});
|
|
75
|
-
const chosenAgent = detectedAgents.find((agent) => choice === `agent:${agent.id}`);
|
|
76
115
|
if (chosenAgent) {
|
|
77
|
-
|
|
116
|
+
const lane = await launchAgent(deps, connection, {
|
|
117
|
+
agent: chosenAgent,
|
|
118
|
+
prompt,
|
|
119
|
+
mode,
|
|
120
|
+
});
|
|
121
|
+
return {
|
|
122
|
+
lane,
|
|
123
|
+
...(docs ? { docs } : {}),
|
|
124
|
+
...(docsMcp ? { docsMcp } : {}),
|
|
125
|
+
};
|
|
78
126
|
}
|
|
79
|
-
if (
|
|
127
|
+
if (fallbackLane === "clipboard") {
|
|
80
128
|
const copied = await deps.writeClipboard(prompt);
|
|
81
129
|
if (copied) {
|
|
82
130
|
deps.prompter.line(COPY.INSTRUMENTATION.promptCopied);
|
|
@@ -91,14 +139,14 @@ export async function instrumentApp(deps, connection, args) {
|
|
|
91
139
|
{ value: true, label: COPY.INSTRUMENTATION.clipboardDoneLabel },
|
|
92
140
|
],
|
|
93
141
|
});
|
|
94
|
-
return { kind: "clipboard" };
|
|
142
|
+
return { lane: { kind: "clipboard" }, ...(docs ? { docs } : {}) };
|
|
95
143
|
}
|
|
96
144
|
deps.prompter.line(COPY.INSTRUMENTATION.manualDocs(COPY.DOCS.instrumentationIndex));
|
|
97
145
|
await deps.prompter.select({
|
|
98
146
|
message: COPY.INSTRUMENTATION.manualDoneMessage,
|
|
99
147
|
options: [{ value: true, label: COPY.INSTRUMENTATION.manualDoneLabel }],
|
|
100
148
|
});
|
|
101
|
-
return { kind: "manual" };
|
|
149
|
+
return { lane: { kind: "manual" }, ...(docs ? { docs } : {}) };
|
|
102
150
|
}
|
|
103
151
|
/**
|
|
104
152
|
* Run the agent with the prompt pre-loaded. A non-zero exit is a warning, not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentApp.js","sourceRoot":"","sources":["../../../src/setup/steps/instrumentApp.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"instrumentApp.js","sourceRoot":"","sources":["../../../src/setup/steps/instrumentApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offer to connect the Phoenix docs MCP server to the coding agent taking the
|
|
3
|
+
* hand-off, instead of downloading the docs.
|
|
4
|
+
*
|
|
5
|
+
* Taking the offer is the fast path: one small config step replaces the
|
|
6
|
+
* ~100-page `.px/docs` download, and the agent then searches the docs server
|
|
7
|
+
* on demand — pulling only the sections it needs instead of reading whole
|
|
8
|
+
* pages. Declining (or any failure) degrades to the docs prefetch, which is
|
|
9
|
+
* what setup did before this step existed.
|
|
10
|
+
*
|
|
11
|
+
* The offer is an optimization and must never take setup down with it:
|
|
12
|
+
* whatever goes wrong (an agent CLI whose flags drifted, a config format we
|
|
13
|
+
* no longer understand), this step reports it, returns a "failed" result, and
|
|
14
|
+
* the caller carries on with the docs download. The only throw that leaves
|
|
15
|
+
* this function is a user cancel.
|
|
16
|
+
*
|
|
17
|
+
* The offer targets exactly one agent — the lane the user chose (or `--agent`
|
|
18
|
+
* pinned) — so setup never sprays MCP config for agents that aren't doing the
|
|
19
|
+
* work. How the entry lands is the agent's own affair ({@link DocsMcpInstall}):
|
|
20
|
+
* agents with an MCP subcommand register it through their own CLI, the rest
|
|
21
|
+
* get a merge into their documented config file. Headless runs never touch
|
|
22
|
+
* agent config unless `--docs-mcp` asked for it.
|
|
23
|
+
*/
|
|
24
|
+
import { type CodingAgent } from "../agents/registry.js";
|
|
25
|
+
import type { SetupDeps } from "../deps/index.js";
|
|
26
|
+
export type DocsMcpOutcome = "configured" | "declined" | "skipped" | "failed";
|
|
27
|
+
/** What the offer did — reported in the setup summary. */
|
|
28
|
+
export interface DocsMcpResult {
|
|
29
|
+
outcome: DocsMcpOutcome;
|
|
30
|
+
/** Agents whose config now names the server. */
|
|
31
|
+
agents: CodingAgent["id"][];
|
|
32
|
+
/** Repo-relative config files written (empty for a CLI-side install). */
|
|
33
|
+
files: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface OfferDocsMcpArgs {
|
|
36
|
+
/** `--docs-mcp` / `--no-docs-mcp`; undefined means ask (when we can). */
|
|
37
|
+
docsMcp?: boolean;
|
|
38
|
+
/** The agent taking the hand-off — the only one the offer configures. */
|
|
39
|
+
agent: CodingAgent;
|
|
40
|
+
headless: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether the docs prefetch would actually run on decline/failure — with
|
|
43
|
+
* `--no-docs` it won't, and the offer must not promise a download.
|
|
44
|
+
*/
|
|
45
|
+
docsEnabled: boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare function offerDocsMcp(deps: Pick<SetupDeps, "context" | "prompter" | "processes">, args: OfferDocsMcpArgs): Promise<DocsMcpResult>;
|
|
48
|
+
//# sourceMappingURL=offerDocsMcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offerDocsMcp.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/offerDocsMcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKzC,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9E,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,gDAAgD;IAChD,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5B,yEAAyE;IACzE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAOD,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC,EAC3D,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,CAaxB"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offer to connect the Phoenix docs MCP server to the coding agent taking the
|
|
3
|
+
* hand-off, instead of downloading the docs.
|
|
4
|
+
*
|
|
5
|
+
* Taking the offer is the fast path: one small config step replaces the
|
|
6
|
+
* ~100-page `.px/docs` download, and the agent then searches the docs server
|
|
7
|
+
* on demand — pulling only the sections it needs instead of reading whole
|
|
8
|
+
* pages. Declining (or any failure) degrades to the docs prefetch, which is
|
|
9
|
+
* what setup did before this step existed.
|
|
10
|
+
*
|
|
11
|
+
* The offer is an optimization and must never take setup down with it:
|
|
12
|
+
* whatever goes wrong (an agent CLI whose flags drifted, a config format we
|
|
13
|
+
* no longer understand), this step reports it, returns a "failed" result, and
|
|
14
|
+
* the caller carries on with the docs download. The only throw that leaves
|
|
15
|
+
* this function is a user cancel.
|
|
16
|
+
*
|
|
17
|
+
* The offer targets exactly one agent — the lane the user chose (or `--agent`
|
|
18
|
+
* pinned) — so setup never sprays MCP config for agents that aren't doing the
|
|
19
|
+
* work. How the entry lands is the agent's own affair ({@link DocsMcpInstall}):
|
|
20
|
+
* agents with an MCP subcommand register it through their own CLI, the rest
|
|
21
|
+
* get a merge into their documented config file. Headless runs never touch
|
|
22
|
+
* agent config unless `--docs-mcp` asked for it.
|
|
23
|
+
*/
|
|
24
|
+
import { DOCS_MCP_SERVER_URL } from "../agents/registry.js";
|
|
25
|
+
import * as COPY from "../copy.js";
|
|
26
|
+
import { SetupCancelledError } from "../errors.js";
|
|
27
|
+
import { selectBoolean } from "../ui/selectBoolean.js";
|
|
28
|
+
import { writeMcpConfig } from "../util/mcpConfig.js";
|
|
29
|
+
const SKIPPED = { outcome: "skipped", agents: [], files: [] };
|
|
30
|
+
/** Registering a server is one config write; a slow CLI start is still fine. */
|
|
31
|
+
const CLI_INSTALL_TIMEOUT_MS = 30_000;
|
|
32
|
+
export async function offerDocsMcp(deps, args) {
|
|
33
|
+
try {
|
|
34
|
+
return await runOffer(deps, args);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (error instanceof SetupCancelledError) {
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
return reportFailure(deps, args, error instanceof Error ? error.message : String(error));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** The single failure path: say what broke, say what happens instead. */
|
|
44
|
+
function reportFailure(deps, { agent, docsEnabled }, reason) {
|
|
45
|
+
deps.prompter.line(COPY.DOCS_MCP.failedFor(agent.label, reason));
|
|
46
|
+
deps.prompter.line(docsEnabled ? COPY.DOCS_MCP.fallback : COPY.DOCS_MCP.fallbackWithoutDownload);
|
|
47
|
+
return { outcome: "failed", agents: [], files: [] };
|
|
48
|
+
}
|
|
49
|
+
async function runOffer(deps, args) {
|
|
50
|
+
const { docsMcp, agent, headless, docsEnabled } = args;
|
|
51
|
+
if (docsMcp === false) {
|
|
52
|
+
return SKIPPED;
|
|
53
|
+
}
|
|
54
|
+
const install = agent.docsMcpInstall;
|
|
55
|
+
if (!install) {
|
|
56
|
+
// Only worth a line when the caller asked by flag — a pinned agent with
|
|
57
|
+
// no MCP install path (Codex) would otherwise silently ignore it.
|
|
58
|
+
if (docsMcp === true) {
|
|
59
|
+
deps.prompter.line(COPY.DOCS_MCP.unsupported(agent.label));
|
|
60
|
+
}
|
|
61
|
+
return SKIPPED;
|
|
62
|
+
}
|
|
63
|
+
// An unattended run never edits agent config unless --docs-mcp said so.
|
|
64
|
+
if (docsMcp === undefined && headless) {
|
|
65
|
+
return SKIPPED;
|
|
66
|
+
}
|
|
67
|
+
const optedIn = docsMcp ??
|
|
68
|
+
(await selectBoolean({
|
|
69
|
+
prompter: deps.prompter,
|
|
70
|
+
message: COPY.DOCS_MCP.message(agent.label),
|
|
71
|
+
yesLabel: COPY.DOCS_MCP.yes,
|
|
72
|
+
yesHint: COPY.DOCS_MCP.yesHint,
|
|
73
|
+
noLabel: docsEnabled ? COPY.DOCS_MCP.no : COPY.DOCS_MCP.noWithoutDownload,
|
|
74
|
+
noHint: docsEnabled
|
|
75
|
+
? COPY.DOCS_MCP.noHint
|
|
76
|
+
: COPY.DOCS_MCP.noWithoutDownloadHint,
|
|
77
|
+
}));
|
|
78
|
+
if (!optedIn) {
|
|
79
|
+
return { outcome: "declined", agents: [], files: [] };
|
|
80
|
+
}
|
|
81
|
+
if (install.kind === "cli") {
|
|
82
|
+
const exec = (execArgs) => deps.processes.exec({
|
|
83
|
+
command: agent.binary,
|
|
84
|
+
args: execArgs,
|
|
85
|
+
cwd: deps.context.cwd,
|
|
86
|
+
timeoutMs: CLI_INSTALL_TIMEOUT_MS,
|
|
87
|
+
});
|
|
88
|
+
// `add` first: the clean path is one registration plus the read-back.
|
|
89
|
+
// Only when `add` is refused AND the agent's own listing shows an entry
|
|
90
|
+
// under our name is that entry removed and the add retried — removing
|
|
91
|
+
// before knowing the add works would destroy a working registration
|
|
92
|
+
// that a failed retry can't put back.
|
|
93
|
+
let added = await exec(install.addArgs(DOCS_MCP_SERVER_URL));
|
|
94
|
+
if (added.exitCode !== 0) {
|
|
95
|
+
const existing = await exec(install.verifyArgs);
|
|
96
|
+
if (existing.exitCode !== 0) {
|
|
97
|
+
return reportFailure(deps, args, added.stderr.trim() || `exit code ${added.exitCode}`);
|
|
98
|
+
}
|
|
99
|
+
await exec(install.removeArgs);
|
|
100
|
+
added = await exec(install.addArgs(DOCS_MCP_SERVER_URL));
|
|
101
|
+
if (added.exitCode !== 0) {
|
|
102
|
+
return reportFailure(deps, args, added.stderr.trim() || `exit code ${added.exitCode}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Don't trust the add's exit code alone: read the entry back through the
|
|
106
|
+
// agent's own listing, so a drifted command that "succeeds" without
|
|
107
|
+
// registering anything is caught here instead of silently costing the
|
|
108
|
+
// agent its docs.
|
|
109
|
+
const verified = await exec(install.verifyArgs);
|
|
110
|
+
if (verified.exitCode !== 0) {
|
|
111
|
+
return reportFailure(deps, args, COPY.DOCS_MCP.verifyFailed);
|
|
112
|
+
}
|
|
113
|
+
deps.prompter.line(COPY.DOCS_MCP.configuredCli(agent.label));
|
|
114
|
+
return { outcome: "configured", agents: [agent.id], files: [] };
|
|
115
|
+
}
|
|
116
|
+
// A write that throws (unparseable existing file, permissions) is handled
|
|
117
|
+
// by the catch-all in offerDocsMcp.
|
|
118
|
+
writeMcpConfig({
|
|
119
|
+
directory: deps.context.cwd,
|
|
120
|
+
relativePath: install.relativePath,
|
|
121
|
+
patch: install.patch(DOCS_MCP_SERVER_URL),
|
|
122
|
+
...(install.createDefaults
|
|
123
|
+
? { createDefaults: install.createDefaults }
|
|
124
|
+
: {}),
|
|
125
|
+
});
|
|
126
|
+
deps.prompter.line(COPY.DOCS_MCP.configured([install.relativePath]));
|
|
127
|
+
return {
|
|
128
|
+
outcome: "configured",
|
|
129
|
+
agents: [agent.id],
|
|
130
|
+
files: [install.relativePath],
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=offerDocsMcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offerDocsMcp.js","sourceRoot":"","sources":["../../../src/setup/steps/offerDocsMcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clackPrompter.d.ts","sourceRoot":"","sources":["../../../src/setup/ui/clackPrompter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAWtD,wBAAgB,mBAAmB,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"clackPrompter.d.ts","sourceRoot":"","sources":["../../../src/setup/ui/clackPrompter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAWtD,wBAAgB,mBAAmB,IAAI,QAAQ,CA0H9C"}
|
|
@@ -79,6 +79,21 @@ export function createClackPrompter() {
|
|
|
79
79
|
}
|
|
80
80
|
return answer;
|
|
81
81
|
},
|
|
82
|
+
async runInterruptible(work) {
|
|
83
|
+
// Attaching a listener also suppresses Node's default terminate-on-SIGINT
|
|
84
|
+
// for the duration, which is the point: with no clack prompt on screen
|
|
85
|
+
// there is nothing to raise SetupCancelledError, so an unhandled Ctrl-C
|
|
86
|
+
// would kill the process and discard the answers already given.
|
|
87
|
+
const interrupted = new AbortController();
|
|
88
|
+
const onInterrupt = () => interrupted.abort();
|
|
89
|
+
process.once("SIGINT", onInterrupt);
|
|
90
|
+
try {
|
|
91
|
+
return await work(interrupted.signal);
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
process.off("SIGINT", onInterrupt);
|
|
95
|
+
}
|
|
96
|
+
},
|
|
82
97
|
note(message, title) {
|
|
83
98
|
// A heading over an indented body, not clack's boxed `note`: clack's guide
|
|
84
99
|
// rail already sets the block apart, and the box adds a border that has to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clackPrompter.js","sourceRoot":"","sources":["../../../src/setup/ui/clackPrompter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clackPrompter.js","sourceRoot":"","sources":["../../../src/setup/ui/clackPrompter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge an MCP server entry into an agent's project-scoped JSON config.
|
|
3
|
+
*
|
|
4
|
+
* A merge, never a rewrite: servers the user already has stay untouched, and
|
|
5
|
+
* an existing entry under the same server name is replaced — which is what
|
|
6
|
+
* makes a setup re-run idempotent. A file that exists but does not parse is
|
|
7
|
+
* refused rather than clobbered; the caller degrades to the docs download.
|
|
8
|
+
*/
|
|
9
|
+
export interface WriteMcpConfigArgs {
|
|
10
|
+
/** Repo root the relative config path resolves against. */
|
|
11
|
+
directory: string;
|
|
12
|
+
/** Config file path, relative to `directory`. */
|
|
13
|
+
relativePath: string;
|
|
14
|
+
/**
|
|
15
|
+
* JSON fragment to merge in: container and server-name keys merge, a
|
|
16
|
+
* server entry itself is replaced wholesale.
|
|
17
|
+
*/
|
|
18
|
+
patch: Record<string, unknown>;
|
|
19
|
+
/**
|
|
20
|
+
* Base content when the file does not exist yet (e.g. a `$schema` key).
|
|
21
|
+
* An existing file is never back-filled with these — that would be editing
|
|
22
|
+
* config the user didn't ask setup to touch.
|
|
23
|
+
*/
|
|
24
|
+
createDefaults?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
/** Thrown when the target file exists but is not a JSON object. */
|
|
27
|
+
export declare class McpConfigUnreadableError extends Error {
|
|
28
|
+
constructor(relativePath: string, detail: string);
|
|
29
|
+
}
|
|
30
|
+
export declare function writeMcpConfig({ directory, relativePath, patch, createDefaults, }: WriteMcpConfigArgs): void;
|
|
31
|
+
//# sourceMappingURL=mcpConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpConfig.d.ts","sourceRoot":"","sources":["../../../src/setup/util/mcpConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AA8BD,mEAAmE;AACnE,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,YAAY,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAG/C;CACF;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,YAAY,EACZ,KAAK,EACL,cAAc,GACf,EAAE,kBAAkB,GAAG,IAAI,CA8B3B"}
|