@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
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
import * as fs from "node:fs";
|
|
10
|
+
import * as path from "node:path";
|
|
11
|
+
function isPlainObject(value) {
|
|
12
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Both config shapes are container → server name → server config, so two
|
|
16
|
+
* levels of key-sets merge and everything below is replaced. Merging deeper
|
|
17
|
+
* would leave e.g. a `command` from an old stdio-style entry alongside the
|
|
18
|
+
* new `url` — a hybrid the agent may resolve to the stale command.
|
|
19
|
+
*/
|
|
20
|
+
const MERGE_LEVELS = 2;
|
|
21
|
+
function mergeLevels(base, patch, levels) {
|
|
22
|
+
const merged = { ...base };
|
|
23
|
+
for (const [key, patchValue] of Object.entries(patch)) {
|
|
24
|
+
const baseValue = merged[key];
|
|
25
|
+
merged[key] =
|
|
26
|
+
levels > 1 && isPlainObject(baseValue) && isPlainObject(patchValue)
|
|
27
|
+
? mergeLevels(baseValue, patchValue, levels - 1)
|
|
28
|
+
: patchValue;
|
|
29
|
+
}
|
|
30
|
+
return merged;
|
|
31
|
+
}
|
|
32
|
+
/** Thrown when the target file exists but is not a JSON object. */
|
|
33
|
+
export class McpConfigUnreadableError extends Error {
|
|
34
|
+
constructor(relativePath, detail) {
|
|
35
|
+
super(`${relativePath} exists but could not be parsed (${detail})`);
|
|
36
|
+
this.name = "McpConfigUnreadableError";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function writeMcpConfig({ directory, relativePath, patch, createDefaults, }) {
|
|
40
|
+
const filePath = path.join(directory, relativePath);
|
|
41
|
+
let existing = createDefaults ?? {};
|
|
42
|
+
if (fs.existsSync(filePath)) {
|
|
43
|
+
let parsed;
|
|
44
|
+
try {
|
|
45
|
+
parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new McpConfigUnreadableError(relativePath, error instanceof Error ? error.message : String(error));
|
|
49
|
+
}
|
|
50
|
+
if (!isPlainObject(parsed)) {
|
|
51
|
+
throw new McpConfigUnreadableError(relativePath, "not a JSON object");
|
|
52
|
+
}
|
|
53
|
+
existing = parsed;
|
|
54
|
+
}
|
|
55
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
56
|
+
// Write-then-rename so a crash mid-write can never truncate a config the
|
|
57
|
+
// user already had.
|
|
58
|
+
const tempPath = `${filePath}.px-setup-tmp`;
|
|
59
|
+
fs.writeFileSync(tempPath, `${JSON.stringify(mergeLevels(existing, patch, MERGE_LEVELS), null, 2)}\n`, "utf-8");
|
|
60
|
+
fs.renameSync(tempPath, filePath);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=mcpConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpConfig.js","sourceRoot":"","sources":["../../../src/setup/util/mcpConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAoBlC,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,SAAS,WAAW,CAClB,IAA6B,EAC7B,KAA8B,EAC9B,MAAc;IAEd,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC;YACT,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC;gBACjE,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC;gBAChD,CAAC,CAAC,UAAU,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mEAAmE;AACnE,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,YAAoB,EAAE,MAAc;QAC9C,KAAK,CAAC,GAAG,YAAY,oCAAoC,MAAM,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,EACT,YAAY,EACZ,KAAK,EACL,cAAc,GACK;IACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEpD,IAAI,QAAQ,GAA4B,cAAc,IAAI,EAAE,CAAC;IAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,wBAAwB,CAChC,YAAY,EACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,wBAAwB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;QACxE,CAAC;QACD,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,yEAAyE;IACzE,oBAAoB;IACpB,MAAM,QAAQ,GAAG,GAAG,QAAQ,eAAe,CAAC;IAC5C,EAAE,CAAC,aAAa,CACd,QAAQ,EACR,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAC1E,OAAO,CACR,CAAC;IACF,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arizeai/phoenix-cli",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"description": "A command-line interface for Phoenix",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"arize",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"marked-terminal": "^7.3.0",
|
|
43
43
|
"react": "19.2.7",
|
|
44
44
|
"zod": "^4.4.3",
|
|
45
|
-
"@arizeai/phoenix-
|
|
46
|
-
"@arizeai/phoenix-
|
|
45
|
+
"@arizeai/phoenix-client": "6.14.0",
|
|
46
|
+
"@arizeai/phoenix-config": "0.4.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/cross-spawn": "^6.0.6",
|