@arizeai/phoenix-cli 1.8.1 → 1.9.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 +34 -0
- package/build/cli.d.ts.map +1 -1
- package/build/cli.js +2 -1
- package/build/cli.js.map +1 -1
- package/build/client.d.ts +5 -1
- package/build/client.d.ts.map +1 -1
- package/build/client.js +2 -1
- package/build/client.js.map +1 -1
- package/build/commands/annotationConfig.d.ts.map +1 -1
- package/build/commands/annotationConfig.js.map +1 -1
- package/build/commands/{annotationMutationUtils.d.ts → annotationMutations.d.ts} +1 -1
- package/build/commands/annotationMutations.d.ts.map +1 -0
- package/build/commands/{annotationMutationUtils.js → annotationMutations.js} +1 -1
- package/build/commands/annotationMutations.js.map +1 -0
- package/build/commands/api.d.ts.map +1 -1
- package/build/commands/api.js.map +1 -1
- package/build/commands/auth.d.ts +1 -1
- package/build/commands/auth.d.ts.map +1 -1
- package/build/commands/auth.js +6 -12
- package/build/commands/auth.js.map +1 -1
- package/build/commands/dataset.d.ts.map +1 -1
- package/build/commands/dataset.js.map +1 -1
- package/build/commands/docs.d.ts +51 -0
- package/build/commands/docs.d.ts.map +1 -1
- package/build/commands/docs.js +86 -37
- package/build/commands/docs.js.map +1 -1
- package/build/commands/experiment.d.ts.map +1 -1
- package/build/commands/experiment.js.map +1 -1
- package/build/commands/fetchSpanAnnotations.d.ts +14 -0
- package/build/commands/fetchSpanAnnotations.d.ts.map +1 -0
- package/build/commands/fetchSpanAnnotations.js +57 -0
- package/build/commands/fetchSpanAnnotations.js.map +1 -0
- package/build/commands/fetchTraceAnnotations.d.ts +14 -0
- package/build/commands/fetchTraceAnnotations.d.ts.map +1 -0
- package/build/commands/fetchTraceAnnotations.js +57 -0
- package/build/commands/fetchTraceAnnotations.js.map +1 -0
- package/build/commands/formatAnnotationMutation.d.ts +1 -1
- package/build/commands/formatAnnotationMutation.d.ts.map +1 -1
- package/build/commands/formatNoteMutation.d.ts +1 -1
- package/build/commands/formatNoteMutation.d.ts.map +1 -1
- package/build/commands/formatSetup.d.ts +50 -0
- package/build/commands/formatSetup.d.ts.map +1 -0
- package/build/commands/formatSetup.js +64 -0
- package/build/commands/formatSetup.js.map +1 -0
- package/build/commands/index.d.ts +4 -3
- package/build/commands/index.d.ts.map +1 -1
- package/build/commands/index.js +4 -3
- package/build/commands/index.js.map +1 -1
- package/build/commands/{noteMutationUtils.d.ts → noteMutations.d.ts} +1 -1
- package/build/commands/noteMutations.d.ts.map +1 -0
- package/build/commands/{noteMutationUtils.js → noteMutations.js} +1 -1
- package/build/commands/noteMutations.js.map +1 -0
- package/build/commands/options.d.ts +248 -0
- package/build/commands/options.d.ts.map +1 -0
- package/build/commands/options.js +16 -0
- package/build/commands/options.js.map +1 -0
- package/build/commands/profile.d.ts.map +1 -1
- package/build/commands/profile.js +3 -11
- package/build/commands/profile.js.map +1 -1
- package/build/commands/project.d.ts.map +1 -1
- package/build/commands/project.js +0 -1
- package/build/commands/project.js.map +1 -1
- package/build/commands/prompt.d.ts.map +1 -1
- package/build/commands/prompt.js.map +1 -1
- package/build/commands/self.d.ts.map +1 -1
- package/build/commands/self.js.map +1 -1
- package/build/commands/session.d.ts.map +1 -1
- package/build/commands/session.js +4 -4
- package/build/commands/session.js.map +1 -1
- package/build/commands/{sessionAnnotationsCommand.d.ts → sessionAnnotations.d.ts} +1 -1
- package/build/commands/sessionAnnotations.d.ts.map +1 -0
- package/build/commands/{sessionAnnotationsCommand.js → sessionAnnotations.js} +1 -1
- package/build/commands/sessionAnnotations.js.map +1 -0
- package/build/commands/setup.d.ts +19 -0
- package/build/commands/setup.d.ts.map +1 -0
- package/build/commands/setup.js +245 -0
- package/build/commands/setup.js.map +1 -0
- package/build/commands/span.d.ts.map +1 -1
- package/build/commands/span.js +5 -5
- package/build/commands/span.js.map +1 -1
- package/build/commands/spanAnnotations.d.ts +6 -13
- package/build/commands/spanAnnotations.d.ts.map +1 -1
- package/build/commands/spanAnnotations.js +154 -47
- package/build/commands/spanAnnotations.js.map +1 -1
- package/build/commands/trace.d.ts.map +1 -1
- package/build/commands/trace.js +6 -6
- package/build/commands/trace.js.map +1 -1
- package/build/commands/traceAnnotations.d.ts +6 -13
- package/build/commands/traceAnnotations.d.ts.map +1 -1
- package/build/commands/traceAnnotations.js +157 -47
- package/build/commands/traceAnnotations.js.map +1 -1
- package/build/curl.d.ts +17 -0
- package/build/curl.d.ts.map +1 -1
- package/build/curl.js.map +1 -1
- package/build/optionParsers.d.ts +12 -0
- package/build/optionParsers.d.ts.map +1 -1
- package/build/optionParsers.js +15 -0
- package/build/optionParsers.js.map +1 -1
- package/build/pxi/App.d.ts.map +1 -1
- package/build/pxi/App.js +4 -0
- package/build/pxi/App.js.map +1 -1
- package/build/pxi/options.d.ts +98 -0
- package/build/pxi/options.d.ts.map +1 -1
- package/build/pxi/options.js.map +1 -1
- package/build/settings.d.ts.map +1 -1
- package/build/settings.js +4 -0
- package/build/settings.js.map +1 -1
- package/build/setup/agents/registry.d.ts +78 -0
- package/build/setup/agents/registry.d.ts.map +1 -0
- package/build/setup/agents/registry.js +129 -0
- package/build/setup/agents/registry.js.map +1 -0
- package/build/setup/copy.d.ts +167 -0
- package/build/setup/copy.d.ts.map +1 -0
- package/build/setup/copy.js +290 -0
- package/build/setup/copy.js.map +1 -0
- package/build/setup/deps/buildDefaultDeps.d.ts +13 -0
- package/build/setup/deps/buildDefaultDeps.d.ts.map +1 -0
- package/build/setup/deps/buildDefaultDeps.js +29 -0
- package/build/setup/deps/buildDefaultDeps.js.map +1 -0
- package/build/setup/deps/clipboard.d.ts +12 -0
- package/build/setup/deps/clipboard.d.ts.map +1 -0
- package/build/setup/deps/clipboard.js +30 -0
- package/build/setup/deps/clipboard.js.map +1 -0
- package/build/setup/deps/clock.d.ts +10 -0
- package/build/setup/deps/clock.d.ts.map +1 -0
- package/build/setup/deps/clock.js +11 -0
- package/build/setup/deps/clock.js.map +1 -0
- package/build/setup/deps/context.d.ts +28 -0
- package/build/setup/deps/context.d.ts.map +1 -0
- package/build/setup/deps/context.js +24 -0
- package/build/setup/deps/context.js.map +1 -0
- package/build/setup/deps/docs.d.ts +41 -0
- package/build/setup/deps/docs.d.ts.map +1 -0
- package/build/setup/deps/docs.js +33 -0
- package/build/setup/deps/docs.js.map +1 -0
- package/build/setup/deps/index.d.ts +42 -0
- package/build/setup/deps/index.d.ts.map +1 -0
- package/build/setup/deps/index.js +16 -0
- package/build/setup/deps/index.js.map +1 -0
- package/build/setup/deps/phoenixClient.d.ts +22 -0
- package/build/setup/deps/phoenixClient.d.ts.map +1 -0
- package/build/setup/deps/phoenixClient.js +17 -0
- package/build/setup/deps/phoenixClient.js.map +1 -0
- package/build/setup/deps/processes.d.ts +28 -0
- package/build/setup/deps/processes.d.ts.map +1 -0
- package/build/setup/deps/processes.js +58 -0
- package/build/setup/deps/processes.js.map +1 -0
- package/build/setup/deps/prompter.d.ts +42 -0
- package/build/setup/deps/prompter.d.ts.map +1 -0
- package/build/setup/deps/prompter.js +10 -0
- package/build/setup/deps/prompter.js.map +1 -0
- package/build/setup/errors.d.ts +27 -0
- package/build/setup/errors.d.ts.map +1 -0
- package/build/setup/errors.js +36 -0
- package/build/setup/errors.js.map +1 -0
- package/build/setup/options.d.ts +113 -0
- package/build/setup/options.d.ts.map +1 -0
- package/build/setup/options.js +63 -0
- package/build/setup/options.js.map +1 -0
- package/build/setup/prompts/instrumentationPrompt.d.ts +42 -0
- package/build/setup/prompts/instrumentationPrompt.d.ts.map +1 -0
- package/build/setup/prompts/instrumentationPrompt.js +64 -0
- package/build/setup/prompts/instrumentationPrompt.js.map +1 -0
- package/build/setup/runSetup.d.ts +45 -0
- package/build/setup/runSetup.d.ts.map +1 -0
- package/build/setup/runSetup.js +212 -0
- package/build/setup/runSetup.js.map +1 -0
- package/build/setup/steps/chooseEndpoint.d.ts +36 -0
- package/build/setup/steps/chooseEndpoint.d.ts.map +1 -0
- package/build/setup/steps/chooseEndpoint.js +125 -0
- package/build/setup/steps/chooseEndpoint.js.map +1 -0
- package/build/setup/steps/confirmGitSafety.d.ts +17 -0
- package/build/setup/steps/confirmGitSafety.d.ts.map +1 -0
- package/build/setup/steps/confirmGitSafety.js +73 -0
- package/build/setup/steps/confirmGitSafety.js.map +1 -0
- package/build/setup/steps/establishConnection.d.ts +29 -0
- package/build/setup/steps/establishConnection.d.ts.map +1 -0
- package/build/setup/steps/establishConnection.js +143 -0
- package/build/setup/steps/establishConnection.js.map +1 -0
- package/build/setup/steps/installTooling.d.ts +28 -0
- package/build/setup/steps/installTooling.d.ts.map +1 -0
- package/build/setup/steps/installTooling.js +79 -0
- package/build/setup/steps/installTooling.js.map +1 -0
- package/build/setup/steps/instrumentApp.d.ts +41 -0
- package/build/setup/steps/instrumentApp.d.ts.map +1 -0
- package/build/setup/steps/instrumentApp.js +131 -0
- package/build/setup/steps/instrumentApp.js.map +1 -0
- package/build/setup/steps/offerPxProfile.d.ts +20 -0
- package/build/setup/steps/offerPxProfile.d.ts.map +1 -0
- package/build/setup/steps/offerPxProfile.js +95 -0
- package/build/setup/steps/offerPxProfile.js.map +1 -0
- package/build/setup/steps/prefetchDocs.d.ts +24 -0
- package/build/setup/steps/prefetchDocs.d.ts.map +1 -0
- package/build/setup/steps/prefetchDocs.js +49 -0
- package/build/setup/steps/prefetchDocs.js.map +1 -0
- package/build/setup/steps/verifyTraces.d.ts +44 -0
- package/build/setup/steps/verifyTraces.d.ts.map +1 -0
- package/build/setup/steps/verifyTraces.js +119 -0
- package/build/setup/steps/verifyTraces.js.map +1 -0
- package/build/setup/steps/writeEnvFile.d.ts +19 -0
- package/build/setup/steps/writeEnvFile.d.ts.map +1 -0
- package/build/setup/steps/writeEnvFile.js +50 -0
- package/build/setup/steps/writeEnvFile.js.map +1 -0
- package/build/setup/ui/clackPrompter.d.ts +11 -0
- package/build/setup/ui/clackPrompter.d.ts.map +1 -0
- package/build/setup/ui/clackPrompter.js +107 -0
- package/build/setup/ui/clackPrompter.js.map +1 -0
- package/build/setup/ui/selectBoolean.d.ts +18 -0
- package/build/setup/ui/selectBoolean.d.ts.map +1 -0
- package/build/setup/ui/selectBoolean.js +14 -0
- package/build/setup/ui/selectBoolean.js.map +1 -0
- package/build/setup/util/gitignoreCoverage.d.ts +24 -0
- package/build/setup/util/gitignoreCoverage.d.ts.map +1 -0
- package/build/setup/util/gitignoreCoverage.js +43 -0
- package/build/setup/util/gitignoreCoverage.js.map +1 -0
- package/build/setup/util/paths.d.ts +6 -0
- package/build/setup/util/paths.d.ts.map +1 -0
- package/build/setup/util/paths.js +23 -0
- package/build/setup/util/paths.js.map +1 -0
- package/build/setup/util/redact.d.ts +12 -0
- package/build/setup/util/redact.d.ts.map +1 -0
- package/build/setup/util/redact.js +31 -0
- package/build/setup/util/redact.js.map +1 -0
- package/build/validation/endpoint.d.ts +19 -0
- package/build/validation/endpoint.d.ts.map +1 -0
- package/build/validation/endpoint.js +39 -0
- package/build/validation/endpoint.js.map +1 -0
- package/package.json +15 -12
- package/build/commands/annotationMutationUtils.d.ts.map +0 -1
- package/build/commands/annotationMutationUtils.js.map +0 -1
- package/build/commands/noteMutationUtils.d.ts.map +0 -1
- package/build/commands/noteMutationUtils.js.map +0 -1
- package/build/commands/sessionAnnotationsCommand.d.ts.map +0 -1
- package/build/commands/sessionAnnotationsCommand.js.map +0 -1
- package/build/commands/spanAnnotationsCommand.d.ts +0 -7
- package/build/commands/spanAnnotationsCommand.d.ts.map +0 -1
- package/build/commands/spanAnnotationsCommand.js +0 -164
- package/build/commands/spanAnnotationsCommand.js.map +0 -1
- package/build/commands/traceAnnotationsCommand.d.ts +0 -7
- package/build/commands/traceAnnotationsCommand.d.ts.map +0 -1
- package/build/commands/traceAnnotationsCommand.js +0 -167
- package/build/commands/traceAnnotationsCommand.js.map +0 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Known coding agents setup can hand off to.
|
|
3
|
+
*
|
|
4
|
+
* Detection is a parallel `<binary> --version` probe — binary-on-PATH is the
|
|
5
|
+
* only signal, and a detected agent becomes a "Hand off to …" lane in the
|
|
6
|
+
* instrumentation step. Launching is interactive: the agent takes over the
|
|
7
|
+
* terminal with the setup prompt pre-loaded and Phoenix credentials injected
|
|
8
|
+
* via environment variables; setup resumes when it exits.
|
|
9
|
+
*/
|
|
10
|
+
import * as path from "node:path";
|
|
11
|
+
export const CODING_AGENTS = [
|
|
12
|
+
{
|
|
13
|
+
id: "claude",
|
|
14
|
+
label: "Claude Code",
|
|
15
|
+
binary: "claude",
|
|
16
|
+
launchArgs: (prompt, mode) => [
|
|
17
|
+
...(mode.background ? ["-p"] : []),
|
|
18
|
+
...(mode.bypassPermissions ? ["--dangerously-skip-permissions"] : []),
|
|
19
|
+
prompt,
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: "codex",
|
|
24
|
+
label: "Codex",
|
|
25
|
+
binary: "codex",
|
|
26
|
+
// `codex exec` is the non-interactive entry point; flags belong after it.
|
|
27
|
+
launchArgs: (prompt, mode) => [
|
|
28
|
+
...(mode.background ? ["exec"] : []),
|
|
29
|
+
...(mode.bypassPermissions
|
|
30
|
+
? ["--dangerously-bypass-approvals-and-sandbox"]
|
|
31
|
+
: []),
|
|
32
|
+
prompt,
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: "opencode",
|
|
37
|
+
label: "OpenCode",
|
|
38
|
+
binary: "opencode",
|
|
39
|
+
// `opencode run` is already non-interactive, so background adds nothing.
|
|
40
|
+
launchArgs: (prompt, mode) => [
|
|
41
|
+
"run",
|
|
42
|
+
...(mode.bypassPermissions ? ["--dangerously-skip-permissions"] : []),
|
|
43
|
+
prompt,
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "cursor",
|
|
48
|
+
label: "Cursor",
|
|
49
|
+
binary: "cursor-agent",
|
|
50
|
+
launchArgs: (prompt, mode) => [
|
|
51
|
+
...(mode.background ? ["-p"] : []),
|
|
52
|
+
...(mode.bypassPermissions ? ["--force"] : []),
|
|
53
|
+
prompt,
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
/** The agent with this id, or undefined when the id is unknown. */
|
|
58
|
+
export function getCodingAgent(id) {
|
|
59
|
+
return CODING_AGENTS.find((agent) => agent.id === id);
|
|
60
|
+
}
|
|
61
|
+
/** Every id `--agent` accepts, for help text and error messages. */
|
|
62
|
+
export const CODING_AGENT_IDS = CODING_AGENTS.map((agent) => agent.id);
|
|
63
|
+
const PROBE_TIMEOUT_MS = 2_000;
|
|
64
|
+
/**
|
|
65
|
+
* True when the binary answers `--version` within the timeout. The timeout
|
|
66
|
+
* kills the child (via the exec seam), so a hung probe counts as not found
|
|
67
|
+
* without leaving an orphaned subprocess behind.
|
|
68
|
+
*/
|
|
69
|
+
export async function probeBinary(deps, binary, { env } = {}) {
|
|
70
|
+
const result = await deps.processes.exec({
|
|
71
|
+
command: binary,
|
|
72
|
+
args: ["--version"],
|
|
73
|
+
timeoutMs: PROBE_TIMEOUT_MS,
|
|
74
|
+
...(env ? { env } : {}),
|
|
75
|
+
});
|
|
76
|
+
return result.exitCode === 0;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* PATH with `node_modules/.bin` entries removed. Package runners (`npx`,
|
|
80
|
+
* `pnpm dlx`) prepend their package's own bin directory, which would make a
|
|
81
|
+
* package-provided shim masquerade as a globally installed binary.
|
|
82
|
+
*/
|
|
83
|
+
export function pathWithoutPackageBins(pathValue) {
|
|
84
|
+
const packageBinMarker = `node_modules${path.sep}.bin`;
|
|
85
|
+
return pathValue
|
|
86
|
+
.split(path.delimiter)
|
|
87
|
+
.filter((entry) => !entry.includes(packageBinMarker))
|
|
88
|
+
.join(path.delimiter);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* `probeBinary`, but blind to binaries provided by the running package —
|
|
92
|
+
* used to decide whether `px` is genuinely installed globally when the
|
|
93
|
+
* setup itself runs under `npx @arizeai/phoenix-cli`.
|
|
94
|
+
*/
|
|
95
|
+
export function probeGlobalBinary(deps, binary) {
|
|
96
|
+
// Override PATH under the spelling the run context resolved, so the child
|
|
97
|
+
// does not end up with both a "Path" and a "PATH" on Windows.
|
|
98
|
+
const { env, pathKey } = deps.context;
|
|
99
|
+
const pathValue = env[pathKey];
|
|
100
|
+
return probeBinary(deps, binary, pathValue === undefined
|
|
101
|
+
? {}
|
|
102
|
+
: { env: { [pathKey]: pathWithoutPackageBins(pathValue) } });
|
|
103
|
+
}
|
|
104
|
+
/** Agents whose binary probe succeeds, in registry order. */
|
|
105
|
+
export async function detectCodingAgents(deps) {
|
|
106
|
+
const probes = await Promise.all(CODING_AGENTS.map((agent) => probeBinary(deps, agent.binary)));
|
|
107
|
+
return CODING_AGENTS.filter((_, index) => probes[index]);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Env vars the launched agent's shell inherits so the app under test can
|
|
111
|
+
* export a verification trace without the agent handling credentials.
|
|
112
|
+
*/
|
|
113
|
+
export function connectionEnv(connection) {
|
|
114
|
+
return {
|
|
115
|
+
PHOENIX_COLLECTOR_ENDPOINT: connection.endpoint,
|
|
116
|
+
PHOENIX_PROJECT_NAME: connection.projectName,
|
|
117
|
+
...(connection.apiKey ? { PHOENIX_API_KEY: connection.apiKey } : {}),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export function buildLaunchSpec(agent, args) {
|
|
121
|
+
const mode = args.mode ?? { background: false, bypassPermissions: false };
|
|
122
|
+
return {
|
|
123
|
+
command: agent.binary,
|
|
124
|
+
args: agent.launchArgs(args.prompt, mode),
|
|
125
|
+
cwd: args.cwd,
|
|
126
|
+
env: connectionEnv(args.connection),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/setup/agents/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ALL user-facing strings for setup, grouped by the step that emits
|
|
3
|
+
* them. Control flow references copy; copy never references control flow.
|
|
4
|
+
* Keep prose here so wording changes never touch step logic.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DOCS: {
|
|
7
|
+
/** Agent-facing quickstart, Python (arize-phoenix-otel). */
|
|
8
|
+
readonly quickstartPython: "https://arize.com/docs/phoenix/get-started/get-started-tracing";
|
|
9
|
+
/** Agent-facing quickstart, TypeScript (@arizeai/phoenix-otel). */
|
|
10
|
+
readonly quickstartTypeScript: "https://arize.com/docs/phoenix/get-started/ts-get-started-tracing";
|
|
11
|
+
/** phoenix.otel register() reference for custom setups. */
|
|
12
|
+
readonly phoenixOtelSetup: "https://arize.com/docs/phoenix/tracing/how-to-tracing/setup-tracing/setup-using-phoenix-otel";
|
|
13
|
+
/** Per-framework/provider auto-instrumentation guides. */
|
|
14
|
+
readonly integrationsIndex: "https://arize.com/docs/phoenix/integrations";
|
|
15
|
+
/** Linked from the verification step. */
|
|
16
|
+
readonly troubleshooting: "https://arize.com/docs/phoenix/tracing/concepts-tracing/faqs-tracing";
|
|
17
|
+
/** Linked from the manual lane and headless output. */
|
|
18
|
+
readonly instrumentationIndex: "https://arize.com/docs/phoenix/quickstart";
|
|
19
|
+
};
|
|
20
|
+
export declare const SUPPORT_LINKS: string;
|
|
21
|
+
export declare const INTRO = "Phoenix tracing setup";
|
|
22
|
+
export declare const INTRO_INSTRUMENT = "Phoenix setup \u2014 instrument this app and verify traces arrive.";
|
|
23
|
+
export declare const INTRO_SKILLS = "Install agent skills";
|
|
24
|
+
export declare const CANCEL_OUTRO: string;
|
|
25
|
+
export declare const OUTRO_TITLE = "You're set up.";
|
|
26
|
+
export declare const OUTRO_BODY: string;
|
|
27
|
+
export declare const GIT: {
|
|
28
|
+
readonly notARepoMessage: "This directory is not a git repository. Continue anyway?";
|
|
29
|
+
readonly notARepoYes: "Yes, continue without git";
|
|
30
|
+
readonly notARepoNo: "No, stop here (recommended)";
|
|
31
|
+
readonly notARepoNoHint: "Setup may edit files via a coding agent — git is the undo button.";
|
|
32
|
+
readonly notARepoYesHint: "You will have no easy way to review or revert changes.";
|
|
33
|
+
readonly dirtyMessage: (fileCount: number) => string;
|
|
34
|
+
readonly dirtyYes: "Yes, continue with a dirty tree";
|
|
35
|
+
readonly dirtyNo: "No, stop here so I can commit first (recommended)";
|
|
36
|
+
readonly dirtyNoHint: "A clean tree keeps agent edits separate from your own edits.";
|
|
37
|
+
readonly dirtyYesHint: "Agent edits will be tangled with your uncommitted work.";
|
|
38
|
+
readonly dirtyFileListTitle: "Uncommitted changes";
|
|
39
|
+
readonly andMore: (count: number) => string;
|
|
40
|
+
readonly headlessDirty: "Refusing to run headless in a dirty git tree. Commit or stash your changes and re-run.";
|
|
41
|
+
readonly headlessNotARepo: "Refusing to run headless outside a git repository. Run `git init` (or run setup interactively) and re-run.";
|
|
42
|
+
readonly stopped: "Stopped. Commit your work, then re-run `px setup`.";
|
|
43
|
+
};
|
|
44
|
+
export declare const ENDPOINT: {
|
|
45
|
+
readonly selectMessage: "Where is your Phoenix instance running?";
|
|
46
|
+
readonly localLabel: "Local — http://localhost:6006";
|
|
47
|
+
readonly localHint: "recommended if you just ran `phoenix serve`";
|
|
48
|
+
readonly remoteLabel: "Remote — paste your instance URL";
|
|
49
|
+
readonly remoteHint: "any Phoenix instance reachable by URL";
|
|
50
|
+
readonly remoteUrlMessage: "Phoenix instance URL";
|
|
51
|
+
readonly remoteUrlInvalid: "Enter a full http:// or https:// URL, e.g. https://phoenix.example.com";
|
|
52
|
+
readonly probing: (endpoint: string) => string;
|
|
53
|
+
readonly unexpectedBody: "unexpected response body";
|
|
54
|
+
readonly unreachable: (endpoint: string) => string;
|
|
55
|
+
readonly notPhoenix: (endpoint: string, detail: string) => string;
|
|
56
|
+
readonly retryMessage: "Try a different URL?";
|
|
57
|
+
readonly retryYes: "Yes, enter a URL again";
|
|
58
|
+
readonly retryNo: "No, exit setup";
|
|
59
|
+
readonly gaveUp: string;
|
|
60
|
+
readonly authOn: "Authentication is enabled on this instance.";
|
|
61
|
+
readonly authOff: "Authentication is off — no API key needed.";
|
|
62
|
+
readonly headlessUnreachable: (endpoint: string) => string;
|
|
63
|
+
readonly headlessNeedsEndpoint: string;
|
|
64
|
+
};
|
|
65
|
+
export declare const CONNECT: {
|
|
66
|
+
readonly projectNameMessage: "Phoenix project name for this app's traces";
|
|
67
|
+
readonly projectNameInvalid: "Project names can't contain '/', '?', or '#' and can't be empty.";
|
|
68
|
+
readonly usingProject: (name: string) => string;
|
|
69
|
+
readonly connectFailed: (detail: string) => string;
|
|
70
|
+
readonly headlessNeedsProject: string;
|
|
71
|
+
readonly headlessNeedsApiKey: string;
|
|
72
|
+
readonly headlessAuthRejected: "The API key was rejected. Check PHOENIX_API_KEY.";
|
|
73
|
+
};
|
|
74
|
+
export declare const API_KEY: {
|
|
75
|
+
readonly instructionsTitle: "Phoenix API key";
|
|
76
|
+
readonly instructions: string;
|
|
77
|
+
readonly pasteKeyMessage: "Phoenix API key";
|
|
78
|
+
readonly pasteKeyInvalid: "API key can't be empty.";
|
|
79
|
+
readonly pasteKeyRejected: "That API key was rejected by the instance. Try again.";
|
|
80
|
+
};
|
|
81
|
+
export declare const ENV_FILE: {
|
|
82
|
+
readonly wrote: (names: string[]) => string;
|
|
83
|
+
readonly gitignored: (names: string[]) => string;
|
|
84
|
+
readonly fileHeaderEnv: (isoDate: string) => string;
|
|
85
|
+
};
|
|
86
|
+
export declare const INSTRUMENTATION: {
|
|
87
|
+
readonly modeMessage: "How do you want to instrument this app?";
|
|
88
|
+
readonly launchLabel: (agentLabel: string) => string;
|
|
89
|
+
readonly launchHint: "launches here with the setup prompt pre-loaded";
|
|
90
|
+
readonly unknownAgent: (agent: string) => string;
|
|
91
|
+
readonly agentNotFound: (agentLabel: string, binary: string) => string;
|
|
92
|
+
readonly launchingBackground: (agentLabel: string) => string;
|
|
93
|
+
readonly backgroundNeedsYolo: (agentLabel: string) => string;
|
|
94
|
+
readonly launching: (agentLabel: string) => string;
|
|
95
|
+
readonly agentExitWarning: (agentLabel: string) => string;
|
|
96
|
+
readonly clipboardLabel: "Copy a prompt for my own coding agent";
|
|
97
|
+
readonly clipboardHint: "paste it into Claude Code, Codex, Cursor — any agent you run yourself";
|
|
98
|
+
readonly manualLabel: "I'll do it manually";
|
|
99
|
+
readonly manualHint: "follow the quickstart docs yourself";
|
|
100
|
+
readonly promptCopied: "Instrumentation prompt copied to your clipboard. Paste it into your agent in this directory.";
|
|
101
|
+
readonly promptCopyFailed: "Couldn't write to the clipboard — here is the prompt to copy:";
|
|
102
|
+
readonly clipboardDoneMessage: "When your agent has finished:";
|
|
103
|
+
readonly clipboardDoneLabel: "I've run the prompt";
|
|
104
|
+
readonly manualDocs: (url: string) => string;
|
|
105
|
+
readonly manualDoneMessage: "When you've added instrumentation:";
|
|
106
|
+
readonly manualDoneLabel: "I've finished instrumenting";
|
|
107
|
+
};
|
|
108
|
+
export declare const VERIFY: {
|
|
109
|
+
readonly title: "Verifying traces";
|
|
110
|
+
readonly waitingBody: (tracesUrl: string) => string;
|
|
111
|
+
readonly received: (tracesUrl: string) => string;
|
|
112
|
+
readonly timeoutMessage: "No traces have arrived yet. Keep watching?";
|
|
113
|
+
readonly keepWatchingLabel: "Keep watching";
|
|
114
|
+
readonly finishLabel: "Finish setup — I'll verify later";
|
|
115
|
+
readonly finishHint: "everything else is already configured";
|
|
116
|
+
readonly notVerifiedHeadless: (tracesUrl: string) => string;
|
|
117
|
+
readonly notVerifiedTitle: "Traces not verified yet";
|
|
118
|
+
readonly notVerifiedBody: (tracesUrl: string) => string;
|
|
119
|
+
};
|
|
120
|
+
export declare const PRODUCTION: {
|
|
121
|
+
readonly title: "Production hand-off";
|
|
122
|
+
readonly bodyAuthOn: string;
|
|
123
|
+
readonly bodyAuthOff: string;
|
|
124
|
+
};
|
|
125
|
+
export declare const PX_PROFILE: {
|
|
126
|
+
readonly optInMessage: "Also point the px CLI at this project? (lets you query traces from your terminal)";
|
|
127
|
+
readonly optInYes: "Yes, create a px profile";
|
|
128
|
+
readonly optInNo: "No thanks";
|
|
129
|
+
readonly conflictMessage: (profileName: string, endpoint: string) => string;
|
|
130
|
+
readonly conflictYes: "Yes, switch px to this project";
|
|
131
|
+
readonly conflictNo: "No, leave px as-is";
|
|
132
|
+
readonly created: (profileName: string) => string;
|
|
133
|
+
readonly failed: (detail: string) => string;
|
|
134
|
+
readonly unreadableSettings: (settingsPath: string, detail: string) => string;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* The skills repo, named once: the command we spawn and the commands the copy
|
|
138
|
+
* below tells the user to run by hand have to point at the same place.
|
|
139
|
+
*/
|
|
140
|
+
export declare const SKILLS_SOURCE = "Arize-ai/phoenix";
|
|
141
|
+
/** One copy group per install offer; both share the shape `ToolingOfferCopy`. */
|
|
142
|
+
export declare const TOOLING: {
|
|
143
|
+
readonly cli: {
|
|
144
|
+
readonly message: "Install the px CLI globally? (`px` isn't on your PATH — it lets you query traces from any terminal)";
|
|
145
|
+
readonly yes: "Yes, npm install -g @arizeai/phoenix-cli";
|
|
146
|
+
readonly no: "No thanks";
|
|
147
|
+
readonly installed: "px CLI installed. Try `px --help` in a new shell.";
|
|
148
|
+
readonly failed: "CLI install failed — install later with `npm install -g @arizeai/phoenix-cli`.";
|
|
149
|
+
};
|
|
150
|
+
readonly skills: {
|
|
151
|
+
readonly message: "Install agent skills? (opens a skill picker — query traces, debug failures)";
|
|
152
|
+
readonly yes: "Yes, run npx skills add Arize-ai/phoenix";
|
|
153
|
+
readonly no: "No thanks";
|
|
154
|
+
readonly installed: "Phoenix skills installed. Your coding agent can now query and debug traces.";
|
|
155
|
+
readonly failed: "Skills install failed — install later with `npx skills add Arize-ai/phoenix`.";
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
export declare const DOCS_PREFETCH: {
|
|
159
|
+
readonly fetching: "Downloading the Phoenix docs so the agent reads them locally...";
|
|
160
|
+
readonly wrote: (pages: number, outputDir: string) => string;
|
|
161
|
+
readonly failed: (reason: string) => string;
|
|
162
|
+
};
|
|
163
|
+
export declare const HEADLESS: {
|
|
164
|
+
readonly agentRequired: (agentIds: readonly string[]) => string;
|
|
165
|
+
readonly nextSteps: (tracesUrl: string) => string;
|
|
166
|
+
};
|
|
167
|
+
//# sourceMappingURL=copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/setup/copy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ALL user-facing strings for setup, grouped by the step that emits
|
|
3
|
+
* them. Control flow references copy; copy never references control flow.
|
|
4
|
+
* Keep prose here so wording changes never touch step logic.
|
|
5
|
+
*/
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Docs contract — the only doc URLs setup emits.
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
export const DOCS = {
|
|
10
|
+
/** Agent-facing quickstart, Python (arize-phoenix-otel). */
|
|
11
|
+
quickstartPython: "https://arize.com/docs/phoenix/get-started/get-started-tracing",
|
|
12
|
+
/** Agent-facing quickstart, TypeScript (@arizeai/phoenix-otel). */
|
|
13
|
+
quickstartTypeScript: "https://arize.com/docs/phoenix/get-started/ts-get-started-tracing",
|
|
14
|
+
/** phoenix.otel register() reference for custom setups. */
|
|
15
|
+
phoenixOtelSetup: "https://arize.com/docs/phoenix/tracing/how-to-tracing/setup-tracing/setup-using-phoenix-otel",
|
|
16
|
+
/** Per-framework/provider auto-instrumentation guides. */
|
|
17
|
+
integrationsIndex: "https://arize.com/docs/phoenix/integrations",
|
|
18
|
+
/** Linked from the verification step. */
|
|
19
|
+
troubleshooting: "https://arize.com/docs/phoenix/tracing/concepts-tracing/faqs-tracing",
|
|
20
|
+
/** Linked from the manual lane and headless output. */
|
|
21
|
+
instrumentationIndex: "https://arize.com/docs/phoenix/quickstart",
|
|
22
|
+
};
|
|
23
|
+
export const SUPPORT_LINKS = [
|
|
24
|
+
`Docs: ${DOCS.instrumentationIndex}`,
|
|
25
|
+
`Troubleshooting: ${DOCS.troubleshooting}`,
|
|
26
|
+
"Issues: https://github.com/Arize-ai/phoenix/issues",
|
|
27
|
+
"Community: https://arize-ai.slack.com",
|
|
28
|
+
].join("\n");
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Shell / lifecycle
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
export const INTRO = "Phoenix tracing setup";
|
|
33
|
+
export const INTRO_INSTRUMENT = "Phoenix setup — instrument this app and verify traces arrive.";
|
|
34
|
+
export const INTRO_SKILLS = "Install agent skills";
|
|
35
|
+
export const CANCEL_OUTRO = [
|
|
36
|
+
"Setup cancelled. Nothing else was changed.",
|
|
37
|
+
"",
|
|
38
|
+
SUPPORT_LINKS,
|
|
39
|
+
].join("\n");
|
|
40
|
+
export const OUTRO_TITLE = "You're set up.";
|
|
41
|
+
export const OUTRO_BODY = SUPPORT_LINKS;
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Confirm git safety
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
export const GIT = {
|
|
46
|
+
notARepoMessage: "This directory is not a git repository. Continue anyway?",
|
|
47
|
+
notARepoYes: "Yes, continue without git",
|
|
48
|
+
notARepoNo: "No, stop here (recommended)",
|
|
49
|
+
notARepoNoHint: "Setup may edit files via a coding agent — git is the undo button.",
|
|
50
|
+
notARepoYesHint: "You will have no easy way to review or revert changes.",
|
|
51
|
+
dirtyMessage: (fileCount) => `You have ${fileCount} uncommitted change${fileCount === 1 ? "" : "s"}. Continue anyway?`,
|
|
52
|
+
dirtyYes: "Yes, continue with a dirty tree",
|
|
53
|
+
dirtyNo: "No, stop here so I can commit first (recommended)",
|
|
54
|
+
dirtyNoHint: "A clean tree keeps agent edits separate from your own edits.",
|
|
55
|
+
dirtyYesHint: "Agent edits will be tangled with your uncommitted work.",
|
|
56
|
+
dirtyFileListTitle: "Uncommitted changes",
|
|
57
|
+
andMore: (count) => `…and ${count} more`,
|
|
58
|
+
headlessDirty: "Refusing to run headless in a dirty git tree. Commit or stash your changes and re-run.",
|
|
59
|
+
headlessNotARepo: "Refusing to run headless outside a git repository. Run `git init` (or run setup interactively) and re-run.",
|
|
60
|
+
stopped: "Stopped. Commit your work, then re-run `px setup`.",
|
|
61
|
+
};
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// Choose endpoint
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
export const ENDPOINT = {
|
|
66
|
+
selectMessage: "Where is your Phoenix instance running?",
|
|
67
|
+
localLabel: "Local — http://localhost:6006",
|
|
68
|
+
localHint: "recommended if you just ran `phoenix serve`",
|
|
69
|
+
remoteLabel: "Remote — paste your instance URL",
|
|
70
|
+
remoteHint: "any Phoenix instance reachable by URL",
|
|
71
|
+
remoteUrlMessage: "Phoenix instance URL",
|
|
72
|
+
remoteUrlInvalid: "Enter a full http:// or https:// URL, e.g. https://phoenix.example.com",
|
|
73
|
+
probing: (endpoint) => `Checking ${endpoint}…`,
|
|
74
|
+
unexpectedBody: "unexpected response body",
|
|
75
|
+
unreachable: (endpoint) => [
|
|
76
|
+
`Could not reach a Phoenix instance at ${endpoint}.`,
|
|
77
|
+
"If it's local, is `phoenix serve` running? If it's remote, check the",
|
|
78
|
+
"URL and that you can reach it from this machine (VPN?).",
|
|
79
|
+
].join("\n"),
|
|
80
|
+
notPhoenix: (endpoint, detail) => [
|
|
81
|
+
`${endpoint} responded, but not like a Phoenix instance (${detail}).`,
|
|
82
|
+
"Double-check the URL — it should be the Phoenix root URL, without",
|
|
83
|
+
"a path like /projects.",
|
|
84
|
+
].join("\n"),
|
|
85
|
+
retryMessage: "Try a different URL?",
|
|
86
|
+
retryYes: "Yes, enter a URL again",
|
|
87
|
+
retryNo: "No, exit setup",
|
|
88
|
+
gaveUp: [
|
|
89
|
+
"Couldn't establish a connection after several attempts.",
|
|
90
|
+
`Setup docs: ${DOCS.instrumentationIndex}`,
|
|
91
|
+
].join("\n"),
|
|
92
|
+
authOn: "Authentication is enabled on this instance.",
|
|
93
|
+
authOff: "Authentication is off — no API key needed.",
|
|
94
|
+
headlessUnreachable: (endpoint) => `Could not reach Phoenix at ${endpoint}. Is it running and reachable from this machine?`,
|
|
95
|
+
headlessNeedsEndpoint: [
|
|
96
|
+
"Missing endpoint. Provide one of:",
|
|
97
|
+
" --endpoint <url>",
|
|
98
|
+
" PHOENIX_HOST=<url> (or PHOENIX_COLLECTOR_ENDPOINT=<url>)",
|
|
99
|
+
].join("\n"),
|
|
100
|
+
};
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
// Connection
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
export const CONNECT = {
|
|
105
|
+
projectNameMessage: "Phoenix project name for this app's traces",
|
|
106
|
+
projectNameInvalid: "Project names can't contain '/', '?', or '#' and can't be empty.",
|
|
107
|
+
usingProject: (name) => `Using project "${name}" — Phoenix creates it when the first trace arrives.`,
|
|
108
|
+
connectFailed: (detail) => `Couldn't connect to Phoenix (${detail}).`,
|
|
109
|
+
headlessNeedsProject: [
|
|
110
|
+
"Missing project. Provide one of:",
|
|
111
|
+
" --project <name>",
|
|
112
|
+
" PHOENIX_PROJECT=<name> (or PHOENIX_PROJECT_NAME=<name>)",
|
|
113
|
+
].join("\n"),
|
|
114
|
+
headlessNeedsApiKey: [
|
|
115
|
+
"This Phoenix instance has authentication enabled. Headless setup needs an API key. Provide:",
|
|
116
|
+
" PHOENIX_API_KEY=<key>",
|
|
117
|
+
"and a project via --project or PHOENIX_PROJECT.",
|
|
118
|
+
].join("\n"),
|
|
119
|
+
headlessAuthRejected: "The API key was rejected. Check PHOENIX_API_KEY.",
|
|
120
|
+
};
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
// Auth-on credential entry
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
export const API_KEY = {
|
|
125
|
+
instructionsTitle: "Phoenix API key",
|
|
126
|
+
instructions: [
|
|
127
|
+
"Create or copy an API key in Phoenix under Settings, then paste it here.",
|
|
128
|
+
"The key is masked while you type and is only written to local credential files.",
|
|
129
|
+
].join("\n"),
|
|
130
|
+
pasteKeyMessage: "Phoenix API key",
|
|
131
|
+
pasteKeyInvalid: "API key can't be empty.",
|
|
132
|
+
pasteKeyRejected: "That API key was rejected by the instance. Try again.",
|
|
133
|
+
};
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
// Env file
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
export const ENV_FILE = {
|
|
138
|
+
wrote: (names) => `Wrote ${names.join(" and ")} into this directory (readable only by you).`,
|
|
139
|
+
gitignored: (names) => `Added ${names.join(", ")} to .gitignore.`,
|
|
140
|
+
fileHeaderEnv: (isoDate) => [
|
|
141
|
+
`# Generated by \`px setup\` on ${isoDate}.`,
|
|
142
|
+
"# Contains a Phoenix API key — do NOT commit this file.",
|
|
143
|
+
"# Safe to delete once tracing is verified and production is configured.",
|
|
144
|
+
].join("\n"),
|
|
145
|
+
};
|
|
146
|
+
// ---------------------------------------------------------------------------
|
|
147
|
+
// Instrumentation
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
export const INSTRUMENTATION = {
|
|
150
|
+
modeMessage: "How do you want to instrument this app?",
|
|
151
|
+
launchLabel: (agentLabel) => `Hand off to ${agentLabel}`,
|
|
152
|
+
launchHint: "launches here with the setup prompt pre-loaded",
|
|
153
|
+
unknownAgent: (agent) => `Unknown agent "${agent}".`,
|
|
154
|
+
agentNotFound: (agentLabel, binary) => `${agentLabel} isn't on your PATH (looked for \`${binary}\`). Install it, or pick another agent with --agent.`,
|
|
155
|
+
launchingBackground: (agentLabel) => `Running ${agentLabel} in the background — it will add tracing and emit a test trace.`,
|
|
156
|
+
backgroundNeedsYolo: (agentLabel) => `${agentLabel} runs without a terminal here, so it cannot ask you to approve its edits. Pass --yolo to let it proceed, or it will likely stall until verification times out.`,
|
|
157
|
+
launching: (agentLabel) => [
|
|
158
|
+
`Handing off to ${agentLabel} — it will add tracing and emit a test trace.`,
|
|
159
|
+
"When you exit the agent, setup resumes and verifies traces arrived.",
|
|
160
|
+
].join("\n"),
|
|
161
|
+
agentExitWarning: (agentLabel) => `${agentLabel} exited with an error — continuing to verification anyway.`,
|
|
162
|
+
clipboardLabel: "Copy a prompt for my own coding agent",
|
|
163
|
+
clipboardHint: "paste it into Claude Code, Codex, Cursor — any agent you run yourself",
|
|
164
|
+
manualLabel: "I'll do it manually",
|
|
165
|
+
manualHint: "follow the quickstart docs yourself",
|
|
166
|
+
promptCopied: "Instrumentation prompt copied to your clipboard. Paste it into your agent in this directory.",
|
|
167
|
+
promptCopyFailed: "Couldn't write to the clipboard — here is the prompt to copy:",
|
|
168
|
+
clipboardDoneMessage: "When your agent has finished:",
|
|
169
|
+
clipboardDoneLabel: "I've run the prompt",
|
|
170
|
+
manualDocs: (url) => `Follow the tracing quickstart: ${url}`,
|
|
171
|
+
manualDoneMessage: "When you've added instrumentation:",
|
|
172
|
+
manualDoneLabel: "I've finished instrumenting",
|
|
173
|
+
};
|
|
174
|
+
// ---------------------------------------------------------------------------
|
|
175
|
+
// Verification + production hand-off
|
|
176
|
+
// ---------------------------------------------------------------------------
|
|
177
|
+
export const VERIFY = {
|
|
178
|
+
title: "Verifying traces",
|
|
179
|
+
waitingBody: (tracesUrl) => [
|
|
180
|
+
"Watching Phoenix for your first trace…",
|
|
181
|
+
"",
|
|
182
|
+
"If nothing has sent a trace yet, in another terminal:",
|
|
183
|
+
" 1. Export the vars: set -a; source .env.phoenix; set +a",
|
|
184
|
+
" 2. Run your app and make one LLM call.",
|
|
185
|
+
"",
|
|
186
|
+
`Traces appear at ${tracesUrl}`,
|
|
187
|
+
].join("\n"),
|
|
188
|
+
received: (tracesUrl) => `✓ Traces are flowing. View them: ${tracesUrl}`,
|
|
189
|
+
timeoutMessage: "No traces have arrived yet. Keep watching?",
|
|
190
|
+
keepWatchingLabel: "Keep watching",
|
|
191
|
+
finishLabel: "Finish setup — I'll verify later",
|
|
192
|
+
finishHint: "everything else is already configured",
|
|
193
|
+
notVerifiedHeadless: (tracesUrl) => `No trace arrived within the wait window. The connection and hand-off files are in place; check ${tracesUrl} once your app sends one.`,
|
|
194
|
+
notVerifiedTitle: "Traces not verified yet",
|
|
195
|
+
notVerifiedBody: (tracesUrl) => [
|
|
196
|
+
`Your first trace will appear at ${tracesUrl}`,
|
|
197
|
+
`Not seeing traces? ${DOCS.troubleshooting}`,
|
|
198
|
+
].join("\n"),
|
|
199
|
+
};
|
|
200
|
+
export const PRODUCTION = {
|
|
201
|
+
title: "Production hand-off",
|
|
202
|
+
bodyAuthOn: [
|
|
203
|
+
"Set these in your production environment:",
|
|
204
|
+
"",
|
|
205
|
+
" PHOENIX_COLLECTOR_ENDPOINT — same value as in .env.phoenix",
|
|
206
|
+
" PHOENIX_API_KEY — copy from .env.phoenix into your secret store",
|
|
207
|
+
"",
|
|
208
|
+
"The project name is set in code, so no extra env var is needed for it.",
|
|
209
|
+
].join("\n"),
|
|
210
|
+
bodyAuthOff: [
|
|
211
|
+
"This instance has no auth, so your app only needs:",
|
|
212
|
+
"",
|
|
213
|
+
" PHOENIX_COLLECTOR_ENDPOINT — your Phoenix URL",
|
|
214
|
+
"",
|
|
215
|
+
"When you deploy Phoenix for real (with auth), also set PHOENIX_API_KEY.",
|
|
216
|
+
].join("\n"),
|
|
217
|
+
};
|
|
218
|
+
// ---------------------------------------------------------------------------
|
|
219
|
+
// Offer px profile
|
|
220
|
+
// ---------------------------------------------------------------------------
|
|
221
|
+
export const PX_PROFILE = {
|
|
222
|
+
optInMessage: "Also point the px CLI at this project? (lets you query traces from your terminal)",
|
|
223
|
+
optInYes: "Yes, create a px profile",
|
|
224
|
+
optInNo: "No thanks",
|
|
225
|
+
conflictMessage: (profileName, endpoint) => `px is currently using profile "${profileName}" → ${endpoint}. Switch to this project?`,
|
|
226
|
+
conflictYes: "Yes, switch px to this project",
|
|
227
|
+
conflictNo: "No, leave px as-is",
|
|
228
|
+
created: (profileName) => `px profile "${profileName}" created and activated. Try: px trace list`,
|
|
229
|
+
failed: (detail) => `Couldn't write the px profile (${detail}). You can create one later with \`px profile create\`.`,
|
|
230
|
+
// Distinct from `failed`: nothing was written, the settings file could not be
|
|
231
|
+
// *read*, and `px profile create` reads it the same strict way — so pointing
|
|
232
|
+
// there would hand back a remedy that fails identically. Name the file
|
|
233
|
+
// instead; repairing or removing it is the only way forward.
|
|
234
|
+
unreadableSettings: (settingsPath, detail) => `Couldn't read ${settingsPath} (${detail}), so px was left alone. Fix or delete that file, then run \`px profile create\`.`,
|
|
235
|
+
};
|
|
236
|
+
// ---------------------------------------------------------------------------
|
|
237
|
+
// Install tooling (CLI + skills)
|
|
238
|
+
// ---------------------------------------------------------------------------
|
|
239
|
+
/**
|
|
240
|
+
* The skills repo, named once: the command we spawn and the commands the copy
|
|
241
|
+
* below tells the user to run by hand have to point at the same place.
|
|
242
|
+
*/
|
|
243
|
+
export const SKILLS_SOURCE = "Arize-ai/phoenix";
|
|
244
|
+
/** One copy group per install offer; both share the shape `ToolingOfferCopy`. */
|
|
245
|
+
export const TOOLING = {
|
|
246
|
+
cli: {
|
|
247
|
+
message: "Install the px CLI globally? (`px` isn't on your PATH — it lets you query traces from any terminal)",
|
|
248
|
+
yes: "Yes, npm install -g @arizeai/phoenix-cli",
|
|
249
|
+
no: "No thanks",
|
|
250
|
+
installed: "px CLI installed. Try `px --help` in a new shell.",
|
|
251
|
+
failed: "CLI install failed — install later with `npm install -g @arizeai/phoenix-cli`.",
|
|
252
|
+
},
|
|
253
|
+
skills: {
|
|
254
|
+
message: "Install agent skills? (opens a skill picker — query traces, debug failures)",
|
|
255
|
+
yes: `Yes, run npx skills add ${SKILLS_SOURCE}`,
|
|
256
|
+
no: "No thanks",
|
|
257
|
+
installed: "Phoenix skills installed. Your coding agent can now query and debug traces.",
|
|
258
|
+
failed: `Skills install failed — install later with \`npx skills add ${SKILLS_SOURCE}\`.`,
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
// ---------------------------------------------------------------------------
|
|
262
|
+
// Docs prefetch
|
|
263
|
+
// ---------------------------------------------------------------------------
|
|
264
|
+
export const DOCS_PREFETCH = {
|
|
265
|
+
fetching: "Downloading the Phoenix docs so the agent reads them locally...",
|
|
266
|
+
// The unknown-workflow warning is not here: it is worded once in
|
|
267
|
+
// `commands/docs`, next to the list of workflows it has to stay true to, and
|
|
268
|
+
// reaches this step through the docs seam.
|
|
269
|
+
wrote: (pages, outputDir) => `Downloaded ${pages} doc page(s) to ${outputDir}.`,
|
|
270
|
+
failed: (reason) => `Couldn't download the docs (${reason}) — the agent will read them from the web instead.`,
|
|
271
|
+
};
|
|
272
|
+
// ---------------------------------------------------------------------------
|
|
273
|
+
// Headless output
|
|
274
|
+
// ---------------------------------------------------------------------------
|
|
275
|
+
export const HEADLESS = {
|
|
276
|
+
agentRequired: (agentIds) => [
|
|
277
|
+
"Missing required flag --agent.",
|
|
278
|
+
" Headless setup has no prompt to pick an instrumentation lane from, so it must be told which agent to run.",
|
|
279
|
+
` px setup --no-input --instrument --agent <${agentIds.join("|")}> --yolo`,
|
|
280
|
+
" To register only — endpoint, project, .env.phoenix, no source changes:",
|
|
281
|
+
" px setup --no-input",
|
|
282
|
+
].join("\n"),
|
|
283
|
+
nextSteps: (tracesUrl) => [
|
|
284
|
+
"Next steps:",
|
|
285
|
+
" 1. Export the vars: set -a; source .env.phoenix; set +a",
|
|
286
|
+
` 2. Instrument your app: ${DOCS.instrumentationIndex}`,
|
|
287
|
+
` 3. Watch for traces: ${tracesUrl}`,
|
|
288
|
+
].join("\n"),
|
|
289
|
+
};
|
|
290
|
+
//# sourceMappingURL=copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/setup/copy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composition root: the one place the capability contracts meet their
|
|
3
|
+
* real, system-backed implementations. Kept separate from the contract
|
|
4
|
+
* barrel (`index.ts`) so modules the wiring depends on — like the clack
|
|
5
|
+
* prompter — can themselves import contracts from `../deps` without forming
|
|
6
|
+
* a cycle.
|
|
7
|
+
*/
|
|
8
|
+
import type { SetupDeps } from "./index.js";
|
|
9
|
+
export declare function buildDefaultDeps({ apiUrl, }?: {
|
|
10
|
+
/** Hidden --api-url dev override — see {@link createPhoenixClientFactory}. */
|
|
11
|
+
apiUrl?: string;
|
|
12
|
+
}): SetupDeps;
|
|
13
|
+
//# sourceMappingURL=buildDefaultDeps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildDefaultDeps.d.ts","sourceRoot":"","sources":["../../../src/setup/deps/buildDefaultDeps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,GACP,GAAE;IACD,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;CACZ,GAAG,SAAS,CAajB"}
|