@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.
Files changed (119) hide show
  1. package/README.md +82 -7
  2. package/build/authFetch.d.ts +24 -0
  3. package/build/authFetch.d.ts.map +1 -0
  4. package/build/authFetch.js +44 -0
  5. package/build/authFetch.js.map +1 -0
  6. package/build/client.d.ts.map +1 -1
  7. package/build/client.js +5 -1
  8. package/build/client.js.map +1 -1
  9. package/build/commands/api.d.ts.map +1 -1
  10. package/build/commands/api.js +12 -1
  11. package/build/commands/api.js.map +1 -1
  12. package/build/commands/auth.d.ts +4 -1
  13. package/build/commands/auth.d.ts.map +1 -1
  14. package/build/commands/auth.js +326 -13
  15. package/build/commands/auth.js.map +1 -1
  16. package/build/commands/formatSetup.d.ts +12 -0
  17. package/build/commands/formatSetup.d.ts.map +1 -1
  18. package/build/commands/formatSetup.js +32 -1
  19. package/build/commands/formatSetup.js.map +1 -1
  20. package/build/commands/setup.d.ts.map +1 -1
  21. package/build/commands/setup.js +14 -38
  22. package/build/commands/setup.js.map +1 -1
  23. package/build/commands/setupErrors.d.ts +10 -0
  24. package/build/commands/setupErrors.d.ts.map +1 -0
  25. package/build/commands/setupErrors.js +54 -0
  26. package/build/commands/setupErrors.js.map +1 -0
  27. package/build/commands/setupMcp.d.ts +15 -0
  28. package/build/commands/setupMcp.d.ts.map +1 -0
  29. package/build/commands/setupMcp.js +141 -0
  30. package/build/commands/setupMcp.js.map +1 -0
  31. package/build/config.d.ts +15 -0
  32. package/build/config.d.ts.map +1 -1
  33. package/build/config.js +54 -7
  34. package/build/config.js.map +1 -1
  35. package/build/exitCodes.d.ts +6 -0
  36. package/build/exitCodes.d.ts.map +1 -1
  37. package/build/exitCodes.js +18 -0
  38. package/build/exitCodes.js.map +1 -1
  39. package/build/index.js +2 -1
  40. package/build/index.js.map +1 -1
  41. package/build/oauth.d.ts +138 -0
  42. package/build/oauth.d.ts.map +1 -0
  43. package/build/oauth.js +465 -0
  44. package/build/oauth.js.map +1 -0
  45. package/build/oauthCallbackPage.d.ts +9 -0
  46. package/build/oauthCallbackPage.d.ts.map +1 -0
  47. package/build/oauthCallbackPage.js +111 -0
  48. package/build/oauthCallbackPage.js.map +1 -0
  49. package/build/pxi/client.d.ts.map +1 -1
  50. package/build/pxi/client.js +11 -2
  51. package/build/pxi/client.js.map +1 -1
  52. package/build/settings.d.ts +19 -0
  53. package/build/settings.d.ts.map +1 -1
  54. package/build/settings.js +21 -0
  55. package/build/settings.js.map +1 -1
  56. package/build/setup/agents/registry.d.ts +61 -0
  57. package/build/setup/agents/registry.d.ts.map +1 -1
  58. package/build/setup/agents/registry.js +52 -3
  59. package/build/setup/agents/registry.js.map +1 -1
  60. package/build/setup/copy.d.ts +32 -0
  61. package/build/setup/copy.d.ts.map +1 -1
  62. package/build/setup/copy.js +44 -0
  63. package/build/setup/copy.js.map +1 -1
  64. package/build/setup/deps/buildDefaultDeps.d.ts.map +1 -1
  65. package/build/setup/deps/buildDefaultDeps.js +2 -0
  66. package/build/setup/deps/buildDefaultDeps.js.map +1 -1
  67. package/build/setup/deps/index.d.ts +4 -0
  68. package/build/setup/deps/index.d.ts.map +1 -1
  69. package/build/setup/deps/index.js.map +1 -1
  70. package/build/setup/deps/oauthLogin.d.ts +64 -0
  71. package/build/setup/deps/oauthLogin.d.ts.map +1 -0
  72. package/build/setup/deps/oauthLogin.js +82 -0
  73. package/build/setup/deps/oauthLogin.js.map +1 -0
  74. package/build/setup/deps/prompter.d.ts +7 -0
  75. package/build/setup/deps/prompter.d.ts.map +1 -1
  76. package/build/setup/mcp/agents.d.ts +91 -0
  77. package/build/setup/mcp/agents.d.ts.map +1 -0
  78. package/build/setup/mcp/agents.js +265 -0
  79. package/build/setup/mcp/agents.js.map +1 -0
  80. package/build/setup/mcp/install.d.ts +34 -0
  81. package/build/setup/mcp/install.d.ts.map +1 -0
  82. package/build/setup/mcp/install.js +76 -0
  83. package/build/setup/mcp/install.js.map +1 -0
  84. package/build/setup/mcp/runSetupMcp.d.ts +68 -0
  85. package/build/setup/mcp/runSetupMcp.d.ts.map +1 -0
  86. package/build/setup/mcp/runSetupMcp.js +235 -0
  87. package/build/setup/mcp/runSetupMcp.js.map +1 -0
  88. package/build/setup/options.d.ts +11 -0
  89. package/build/setup/options.d.ts.map +1 -1
  90. package/build/setup/options.js +1 -0
  91. package/build/setup/options.js.map +1 -1
  92. package/build/setup/prompts/instrumentationPrompt.d.ts +7 -1
  93. package/build/setup/prompts/instrumentationPrompt.d.ts.map +1 -1
  94. package/build/setup/prompts/instrumentationPrompt.js +6 -2
  95. package/build/setup/prompts/instrumentationPrompt.js.map +1 -1
  96. package/build/setup/runSetup.d.ts +3 -0
  97. package/build/setup/runSetup.d.ts.map +1 -1
  98. package/build/setup/runSetup.js +13 -12
  99. package/build/setup/runSetup.js.map +1 -1
  100. package/build/setup/steps/establishConnection.d.ts +6 -3
  101. package/build/setup/steps/establishConnection.d.ts.map +1 -1
  102. package/build/setup/steps/establishConnection.js +120 -11
  103. package/build/setup/steps/establishConnection.js.map +1 -1
  104. package/build/setup/steps/instrumentApp.d.ts +23 -4
  105. package/build/setup/steps/instrumentApp.d.ts.map +1 -1
  106. package/build/setup/steps/instrumentApp.js +89 -41
  107. package/build/setup/steps/instrumentApp.js.map +1 -1
  108. package/build/setup/steps/offerDocsMcp.d.ts +48 -0
  109. package/build/setup/steps/offerDocsMcp.d.ts.map +1 -0
  110. package/build/setup/steps/offerDocsMcp.js +134 -0
  111. package/build/setup/steps/offerDocsMcp.js.map +1 -0
  112. package/build/setup/ui/clackPrompter.d.ts.map +1 -1
  113. package/build/setup/ui/clackPrompter.js +15 -0
  114. package/build/setup/ui/clackPrompter.js.map +1 -1
  115. package/build/setup/util/mcpConfig.d.ts +38 -0
  116. package/build/setup/util/mcpConfig.d.ts.map +1 -0
  117. package/build/setup/util/mcpConfig.js +64 -0
  118. package/build/setup/util/mcpConfig.js.map +1 -0
  119. package/package.json +3 -3
@@ -15,19 +15,19 @@
15
15
  * px setup skills # the coding-agent skills install alone
16
16
  */
17
17
  import { Command } from "commander";
18
- import { ExitCode, getExitCodeForError } from "../exitCodes.js";
18
+ import { ExitCode } from "../exitCodes.js";
19
19
  import { writeOutput } from "../io.js";
20
20
  import { collectString, parsePositiveIntOption } from "../optionParsers.js";
21
21
  import { CODING_AGENT_IDS } from "../setup/agents/registry.js";
22
- import * as COPY from "../setup/copy.js";
23
22
  import { buildDefaultDeps } from "../setup/deps/buildDefaultDeps.js";
24
- import { HeadlessInputError, SetupCancelledError, SetupFatalError, } from "../setup/errors.js";
25
23
  import { resolveSetupInputs, } from "../setup/options.js";
26
24
  import { runInstrument, runSetup, runSkills } from "../setup/runSetup.js";
27
25
  import { writeStructuredError } from "../structuredError.js";
28
26
  import { ENDPOINT_REQUIREMENT, isEndpointUrl } from "../validation/endpoint.js";
29
27
  import { WORKERS_REQUIREMENT } from "./docs.js";
30
28
  import { formatSetupOutput, formatToolingOutput, } from "./formatSetup.js";
29
+ import { exitWithError } from "./setupErrors.js";
30
+ import { createSetupMcpCommand } from "./setupMcp.js";
31
31
  /** Reject bad flag values before any side effect runs. */
32
32
  function toSetupOptions(options) {
33
33
  const format = options.format ?? "pretty";
@@ -76,43 +76,9 @@ function toSetupOptions(options) {
76
76
  refresh: options.refreshDocs,
77
77
  workers: options.workers,
78
78
  },
79
+ docsMcp: options.docsMcp,
79
80
  };
80
81
  }
81
- /**
82
- * Every lane funnels its failures through here, so a cancelled prompt, a bad
83
- * headless invocation, and a fatal step keep their distinct exit codes — and so
84
- * a `--format json|raw` caller gets the same `{error, code, hint}` envelope
85
- * every other px command gives it, instead of a bare line on stderr.
86
- */
87
- function exitWithError(error, format) {
88
- if (error instanceof SetupCancelledError) {
89
- writeStructuredError({
90
- format,
91
- message: COPY.CANCEL_OUTRO,
92
- code: "CANCELLED",
93
- });
94
- process.exit(ExitCode.CANCELLED);
95
- }
96
- if (error instanceof HeadlessInputError) {
97
- writeStructuredError({
98
- format,
99
- message: error.message,
100
- code: "INVALID_ARGUMENT",
101
- });
102
- process.exit(ExitCode.INVALID_ARGUMENT);
103
- }
104
- if (error instanceof SetupFatalError) {
105
- writeStructuredError({ format, message: error.message, code: "FAILURE" });
106
- process.exit(ExitCode.FAILURE);
107
- }
108
- const exitCode = getExitCodeForError(error);
109
- writeStructuredError({
110
- format,
111
- message: String(error),
112
- code: exitCode === ExitCode.NETWORK_ERROR ? "NETWORK_ERROR" : "FAILURE",
113
- });
114
- process.exit(exitCode);
115
- }
116
82
  /**
117
83
  * Run one of the setup lanes, then print what it did in the requested format.
118
84
  *
@@ -176,6 +142,8 @@ function addInstrumentationOptions(command) {
176
142
  .option("--background", "Run the agent without its TUI (implied by --no-input)")
177
143
  .option("--yolo", "Let the agent apply changes without asking permission (required in practice for --background)")
178
144
  .option("--no-docs", "Skip the docs prefetch")
145
+ .option("--docs-mcp", "Connect the Phoenix docs MCP server to the hand-off agent (skips the docs prefetch)")
146
+ .option("--no-docs-mcp", "Skip the docs MCP offer")
179
147
  .option("--workflow <name>", "Docs workflow to prefetch (repeatable); same values as px docs fetch", collectString, [])
180
148
  .option("--refresh-docs", "Clear the docs directory before downloading")
181
149
  .option("--workers <n>", "Concurrent docs downloads", parsePositiveIntOption);
@@ -216,6 +184,11 @@ Examples:
216
184
  }
217
185
  export function createSetupCommand() {
218
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();
219
192
  command.description("Interactive setup: connect this app to Phoenix and get traces flowing.\n" +
220
193
  "(A top-level command, unlike the CLI's usual noun-verb layout — onboarding is a flow, not a resource.)");
221
194
  addConnectionOptions(command);
@@ -233,13 +206,16 @@ Examples:
233
206
  px setup --endpoint https://phoenix.example.com
234
207
  px setup --no-input --endpoint http://localhost:6006 --project my-app
235
208
  px setup --no-input --instrument --agent claude --yolo --format raw
209
+ px setup --no-input --instrument --agent claude --yolo --docs-mcp --format raw
236
210
 
237
211
  Subcommands:
238
212
  px setup instrument Instrument and verify, without redoing the questions
239
213
  px setup skills Install the coding-agent skills alone
214
+ px setup mcp Register the Phoenix MCP server with a coding agent
240
215
  `);
241
216
  command.addCommand(createSetupInstrumentCommand());
242
217
  command.addCommand(createSetupSkillsCommand());
218
+ command.addCommand(createSetupMcpCommand());
243
219
  return command;
244
220
  }
245
221
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EACL,kBAAkB,GAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAsInD,0DAA0D;AAC1D,SAAS,cAAc,CAAC,OAA4B;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,oBAAoB,CAAC;YACnB,MAAM;YACN,OAAO,EAAE,aAAa,oBAAoB,GAAG;YAC7C,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IACD,IACE,OAAO,CAAC,KAAK,KAAK,SAAS;QAC3B,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAsB,CAAC,EAC1D,CAAC;QACD,oBAAoB,CAAC;YACnB,MAAM;YACN,OAAO,EAAE,oBAAoB,OAAO,CAAC,KAAK,GAAG;YAC7C,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,qBAAqB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;SACzD,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IACD,8EAA8E;IAC9E,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,oBAAoB,CAAC;YACnB,MAAM;YACN,OAAO,EAAE,mBAAmB;YAC5B,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAkC;QACjD,SAAS,EAAE,OAAO,CAAC,QAAQ;QAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,iBAAiB,EAAE,OAAO,CAAC,IAAI;QAC/B,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,KAAK;YAC/B,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,OAAO,EAAE,OAAO,CAAC,WAAW;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB;QACD,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,OAAO,CACpB,cAAmC,EACnC,IAAgE,EAChE,MAAyD;IAEzD,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,IAAI,QAAQ,CAAC;IACjD,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1D,yEAAyE;IACzE,gEAAgE;IAChE,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,4EAA4E;QAC5E,uCAAuC;QACvC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3C,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAA4B;IACtD,MAAM,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAClD,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAA4B;IAE5B,MAAM,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CACvD,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAA4B;IAC5D,MAAM,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACpD,mBAAmB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,SAAS,cAAc,CAAC,OAAgB,EAAE,WAAmB;IAC3D,OAAO,OAAO;SACX,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC;SACjC,MAAM,CACL,mBAAmB,EACnB,qCAAqC,EACrC,QAAQ,CACT,CAAC;AACN,CAAC;AAED,4DAA4D;AAC5D,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,OAAO;SACJ,MAAM,CACL,kBAAkB,EAClB,gDAAgD,CACjD;SACA,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAC;IAC5D,OAAO,cAAc,CACnB,OAAO,EACP,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,SAAS,yBAAyB,CAAC,OAAgB;IACjD,OAAO,OAAO;SACX,MAAM,CACL,iBAAiB,EACjB,gCAAgC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CACtF;SACA,MAAM,CACL,uBAAuB,EACvB,sEAAsE,EACtE,aAAa,EACb,EAAc,CACf;SACA,MAAM,CACL,cAAc,EACd,uDAAuD,CACxD;SACA,MAAM,CACL,QAAQ,EACR,+FAA+F,CAChG;SACA,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;SAC7C,MAAM,CACL,YAAY,EACZ,qFAAqF,CACtF;SACA,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;SAClD,MAAM,CACL,mBAAmB,EACnB,sEAAsE,EACtE,aAAa,EACb,EAAc,CACf;SACA,MAAM,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;SACvE,MAAM,CACL,eAAe,EACf,2BAA2B,EAC3B,sBAAsB,CACvB,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,OAAO,OAAO,CAAC,SAAS,CACtB,OAAO;SACJ,YAAY,CACX,iBAAiB,EACjB,gDAAgD;QAC9C,2DAA2D,CAC9D;SACA,QAAQ,EAAE,CACd,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B;IACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CACnD,uEAAuE,CACxE,CAAC;IACF,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,WAAW,CACvD,OAAO,EACP;;;;;CAKH,CACE,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB;IAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC1E,cAAc,CAAC,OAAO,EAAE,0CAA0C,CAAC,CAAC;IACpE,uEAAuE;IACvE,2EAA2E;IAC3E,uEAAuE;IACvE,uDAAuD;IACvD,OAAO,OAAO;SACX,MAAM,CAAC,aAAa,EAAE,yBAAyB,CAAC;SAChD,MAAM,CAAC,kBAAkB,CAAC;SAC1B,WAAW,CACV,OAAO,EACP;;;;CAIL,CACI,CAAC;AACN,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,2EAA2E;IAC3E,2EAA2E;IAC3E,sEAAsE;IACtE,kEAAkE;IAClE,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAClC,OAAO,CAAC,WAAW,CACjB,0EAA0E;QACxE,wGAAwG,CAC3G,CAAC;IACF,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO;SACJ,MAAM,CACL,cAAc,EACd,+EAA+E,CAChF;SACA,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;SAChE,MAAM,CAAC,UAAU,EAAE,gDAAgD,CAAC;SACpE,MAAM,CAAC,aAAa,EAAE,yBAAyB,CAAC;SAChD,MAAM,CAAC,YAAY,CAAC;SACpB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;CAYL,CACI,CAAC;IAEJ,OAAO,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -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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"}
package/build/config.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type OAuthTokens } from "./settings.js";
1
2
  /**
2
3
  * Default Phoenix endpoint used when PHOENIX_HOST is not set.
3
4
  */
@@ -18,6 +19,20 @@ export interface PhoenixConfig {
18
19
  * API key for authentication
19
20
  */
20
21
  apiKey?: string;
22
+ /**
23
+ * OAuth tokens from the selected profile. Used only when no API key is
24
+ * configured by CLI flag, environment variable, or profile.
25
+ */
26
+ oauthTokens?: OAuthTokens;
27
+ /**
28
+ * Selected profile name. Present when config came from an explicit or active
29
+ * profile and used to persist refreshed OAuth tokens.
30
+ */
31
+ profileName?: string;
32
+ /**
33
+ * Source of the credential that will be used for API requests.
34
+ */
35
+ credentialSource?: "flag" | "env" | "profile-key" | "oauth" | "none";
21
36
  /**
22
37
  * Custom headers
23
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAIlD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,IAAI,aAAa,CAEzD;AAgFD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,CAkBzE;AAgBD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,WAAW,GACZ,EAAE,oBAAoB,GAAG,aAAa,CA4CtC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,eAAsB,GACvB,EAAE,qBAAqB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAkBA;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,GACP,EAAE,4BAA4B,GAAG,MAAM,CAiBvC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,WAAW,EAMjB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;IAErE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAIlD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,IAAI,aAAa,CAEzD;AA8ED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,CAkBzE;AAqBD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,WAAW,GACZ,EAAE,oBAAoB,GAAG,aAAa,CA8EtC;AAgCD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,eAAsB,GACvB,EAAE,qBAAqB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAkBA;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,GACP,EAAE,4BAA4B,GAAG,MAAM,CAiBvC"}
package/build/config.js CHANGED
@@ -36,8 +36,6 @@ function loadConfigFromEnvironmentWithSources() {
36
36
  if (headers) {
37
37
  config.headers = headers;
38
38
  }
39
- // Resolve the project from PHOENIX_PROJECT (canonical) or the
40
- // PHOENIX_PROJECT_NAME alias.
41
39
  const project = getProjectFromEnvironment();
42
40
  if (project) {
43
41
  config.project = project;
@@ -97,29 +95,32 @@ export function loadConfigFromProfile(profileName) {
97
95
  if (!active) {
98
96
  throw new ProfileResolutionError(`Profile "${profileName}" (from --profile) does not exist. Run \`px profile list\` to see available profiles.`);
99
97
  }
100
- return profileEntryToConfig(active.entry);
98
+ return profileEntryToConfig(active.entry, active.name);
101
99
  }
102
100
  const active = getStoredActiveProfile(settingsFile);
103
101
  if (!active) {
104
102
  return {};
105
103
  }
106
- return profileEntryToConfig(active.entry);
104
+ return profileEntryToConfig(active.entry, active.name);
107
105
  }
108
106
  /**
109
107
  * Project a `ProfileEntry` onto the `PhoenixConfig` shape. Skipped fields
110
108
  * (e.g. an apiKey set on a different profile) are simply omitted so the
111
109
  * downstream merge in `resolveConfig` can layer env vars / defaults on top.
112
110
  */
113
- function profileEntryToConfig(entry) {
111
+ function profileEntryToConfig(entry, profileName) {
114
112
  const config = {};
115
113
  if (entry.endpoint)
116
114
  config.endpoint = entry.endpoint;
117
115
  if (entry.apiKey)
118
116
  config.apiKey = entry.apiKey;
117
+ if (entry.oauthTokens)
118
+ config.oauthTokens = entry.oauthTokens;
119
119
  if (entry.project)
120
120
  config.project = entry.project;
121
121
  if (entry.headers)
122
122
  config.headers = entry.headers;
123
+ config.profileName = profileName;
123
124
  return config;
124
125
  }
125
126
  /**
@@ -138,18 +139,45 @@ export function resolveConfig({ cliOptions, profileName, }) {
138
139
  // Commander (and other callers) may include keys with `undefined` values.
139
140
  // If we spread those over envConfig we would accidentally clobber env vars.
140
141
  const definedCliOptions = Object.fromEntries(Object.entries(cliOptions).filter(([, value]) => value !== undefined));
142
+ // OAuth tokens are only valid against the endpoint that issued them. When
143
+ // --endpoint or PHOENIX_HOST points the command at a different server, drop
144
+ // the tokens so they are never sent to — or refreshed against — a host that
145
+ // did not issue them.
146
+ const resolvedEndpoint = definedCliOptions.endpoint ??
147
+ processEnvConfig.endpoint ??
148
+ profileConfig.endpoint ??
149
+ envFileConfig.endpoint ??
150
+ builtInDefaults.endpoint;
151
+ const boundProfileConfig = profileConfig.oauthTokens && profileConfig.endpoint !== resolvedEndpoint
152
+ ? { ...profileConfig, oauthTokens: undefined }
153
+ : profileConfig;
154
+ const credentialSource = getCredentialSource({
155
+ cliOptions: definedCliOptions,
156
+ processEnvConfig,
157
+ envFileConfig,
158
+ profileConfig: boundProfileConfig,
159
+ });
160
+ const oauthTokens = credentialSource === "oauth" ? boundProfileConfig.oauthTokens : undefined;
141
161
  const config = {
142
162
  ...builtInDefaults,
143
163
  ...envFileConfig,
144
164
  ...profileConfig,
145
165
  ...processEnvConfig,
146
166
  ...definedCliOptions,
167
+ credentialSource,
168
+ oauthTokens,
147
169
  };
170
+ // Profile OAuth outranks `.env.phoenix` API keys. The spread above can leave
171
+ // a file-tier apiKey in place when the profile only has oauthTokens — clear
172
+ // it so clients do not prefer the lower-tier key.
173
+ if (credentialSource === "oauth") {
174
+ config.apiKey = undefined;
175
+ }
148
176
  const usesFileEndpoint = endpointSource?.kind === "env-file" &&
149
177
  definedCliOptions.endpoint === undefined &&
150
178
  processEnvConfig.endpoint === undefined &&
151
179
  profileConfig.endpoint === undefined;
152
- const credentialSource = definedCliOptions.apiKey !== undefined ||
180
+ const warningCredentialSource = definedCliOptions.apiKey !== undefined ||
153
181
  definedCliOptions.headers !== undefined
154
182
  ? "CLI options"
155
183
  : processEnvConfig.apiKey !== undefined ||
@@ -161,13 +189,32 @@ export function resolveConfig({ cliOptions, profileName, }) {
161
189
  : undefined;
162
190
  if (usesFileEndpoint) {
163
191
  warnIfUsingFileEndpointWithCredentials({
164
- credentialSource,
192
+ credentialSource: warningCredentialSource,
165
193
  endpointSource,
166
194
  endpointVariable: ENV_PHOENIX_HOST,
167
195
  });
168
196
  }
169
197
  return config;
170
198
  }
199
+ function getCredentialSource({ cliOptions, processEnvConfig, envFileConfig, profileConfig, }) {
200
+ if (cliOptions.apiKey) {
201
+ return "flag";
202
+ }
203
+ // Process env outranks the profile; `.env.phoenix` does not.
204
+ if (processEnvConfig.apiKey) {
205
+ return "env";
206
+ }
207
+ if (profileConfig.apiKey) {
208
+ return "profile-key";
209
+ }
210
+ if (profileConfig.oauthTokens) {
211
+ return "oauth";
212
+ }
213
+ if (envFileConfig.apiKey) {
214
+ return "env";
215
+ }
216
+ return "none";
217
+ }
171
218
  /**
172
219
  * Validate that required configuration is present.
173
220
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,12 @@ export type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];
32
32
  export declare class InvalidArgumentError extends Error {
33
33
  constructor(message: string);
34
34
  }
35
+ export declare class AuthRequiredError extends Error {
36
+ constructor(message: string);
37
+ }
38
+ export declare class NetworkError extends Error {
39
+ constructor(message: string);
40
+ }
35
41
  /**
36
42
  * Infer a semantic exit code from an unknown error value.
37
43
  *
@@ -1 +1 @@
1
- {"version":3,"file":"exitCodes.d.ts","sourceRoot":"","sources":["../src/exitCodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,QAAQ;IACnB,qCAAqC;aACrC,OAAO,EAAE,CAAC;IACV,sCAAsC;aACtC,OAAO,EAAE,CAAC;IACV,mCAAmC;aACnC,SAAS,EAAE,CAAC;IACZ,6DAA6D;aAC7D,gBAAgB,EAAE,CAAC;IACnB,oDAAoD;aACpD,aAAa,EAAE,CAAC;IAChB,4DAA4D;aAC5D,aAAa,EAAE,CAAC;CACR,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEhE,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAW5D"}
1
+ {"version":3,"file":"exitCodes.d.ts","sourceRoot":"","sources":["../src/exitCodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,QAAQ;IACnB,qCAAqC;aACrC,OAAO,EAAE,CAAC;IACV,sCAAsC;aACtC,OAAO,EAAE,CAAC;IACV,mCAAmC;aACnC,SAAS,EAAE,CAAC;IACZ,6DAA6D;aAC7D,gBAAgB,EAAE,CAAC;IACnB,oDAAoD;aACpD,aAAa,EAAE,CAAC;IAChB,4DAA4D;aAC5D,aAAa,EAAE,CAAC;CACR,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEhE,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAmB5D"}
@@ -34,6 +34,18 @@ export class InvalidArgumentError extends Error {
34
34
  this.name = "InvalidArgumentError";
35
35
  }
36
36
  }
37
+ export class AuthRequiredError extends Error {
38
+ constructor(message) {
39
+ super(message);
40
+ this.name = "AuthRequiredError";
41
+ }
42
+ }
43
+ export class NetworkError extends Error {
44
+ constructor(message) {
45
+ super(message);
46
+ this.name = "NetworkError";
47
+ }
48
+ }
37
49
  /**
38
50
  * Infer a semantic exit code from an unknown error value.
39
51
  *
@@ -47,6 +59,12 @@ export function getExitCodeForError(error) {
47
59
  if (error instanceof InvalidArgumentError) {
48
60
  return ExitCode.INVALID_ARGUMENT;
49
61
  }
62
+ if (error instanceof AuthRequiredError) {
63
+ return ExitCode.AUTH_REQUIRED;
64
+ }
65
+ if (error instanceof NetworkError) {
66
+ return ExitCode.NETWORK_ERROR;
67
+ }
50
68
  // TypeError is thrown by the Fetch API for network-level failures
51
69
  // (e.g. ECONNREFUSED, ETIMEDOUT, DNS errors).
52
70
  if (error instanceof TypeError) {
@@ -1 +1 @@
1
- {"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../src/exitCodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,qCAAqC;IACrC,OAAO,EAAE,CAAC;IACV,sCAAsC;IACtC,OAAO,EAAE,CAAC;IACV,mCAAmC;IACnC,SAAS,EAAE,CAAC;IACZ,6DAA6D;IAC7D,gBAAgB,EAAE,CAAC;IACnB,oDAAoD;IACpD,aAAa,EAAE,CAAC;IAChB,4DAA4D;IAC5D,aAAa,EAAE,CAAC;CACR,CAAC;AAIX,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC,gBAAgB,CAAC;IACnC,CAAC;IAED,kEAAkE;IAClE,8CAA8C;IAC9C,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,aAAa,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../src/exitCodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,qCAAqC;IACrC,OAAO,EAAE,CAAC;IACV,sCAAsC;IACtC,OAAO,EAAE,CAAC;IACV,mCAAmC;IACnC,SAAS,EAAE,CAAC;IACZ,6DAA6D;IAC7D,gBAAgB,EAAE,CAAC;IACnB,oDAAoD;IACpD,aAAa,EAAE,CAAC;IAChB,4DAA4D;IAC5D,aAAa,EAAE,CAAC;CACR,CAAC;AAIX,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC,gBAAgB,CAAC;IACnC,CAAC;IAED,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC,aAAa,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,aAAa,CAAC;IAChC,CAAC;IAED,kEAAkE;IAClE,8CAA8C;IAC9C,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,aAAa,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}