@arizeai/phoenix-client 7.14.0 → 7.15.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 (55) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/esm/__generated__/api/v1.d.ts +14 -1
  3. package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
  4. package/dist/esm/constants/serverRequirements.d.ts +2 -0
  5. package/dist/esm/constants/serverRequirements.d.ts.map +1 -1
  6. package/dist/esm/constants/serverRequirements.js +14 -0
  7. package/dist/esm/constants/serverRequirements.js.map +1 -1
  8. package/dist/esm/prompts/deletePromptVersionTag.d.ts +36 -0
  9. package/dist/esm/prompts/deletePromptVersionTag.d.ts.map +1 -0
  10. package/dist/esm/prompts/deletePromptVersionTag.js +44 -0
  11. package/dist/esm/prompts/deletePromptVersionTag.js.map +1 -0
  12. package/dist/esm/prompts/index.d.ts +2 -0
  13. package/dist/esm/prompts/index.d.ts.map +1 -1
  14. package/dist/esm/prompts/index.js +2 -0
  15. package/dist/esm/prompts/index.js.map +1 -1
  16. package/dist/esm/prompts/upsertPromptVersionTag.d.ts +40 -0
  17. package/dist/esm/prompts/upsertPromptVersionTag.d.ts.map +1 -0
  18. package/dist/esm/prompts/upsertPromptVersionTag.js +49 -0
  19. package/dist/esm/prompts/upsertPromptVersionTag.js.map +1 -0
  20. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  21. package/dist/esm/utils/resolvePromptVersionId.d.ts +11 -0
  22. package/dist/esm/utils/resolvePromptVersionId.d.ts.map +1 -0
  23. package/dist/esm/utils/resolvePromptVersionId.js +15 -0
  24. package/dist/esm/utils/resolvePromptVersionId.js.map +1 -0
  25. package/dist/src/__generated__/api/v1.d.ts +14 -1
  26. package/dist/src/__generated__/api/v1.d.ts.map +1 -1
  27. package/dist/src/constants/serverRequirements.d.ts +2 -0
  28. package/dist/src/constants/serverRequirements.d.ts.map +1 -1
  29. package/dist/src/constants/serverRequirements.js +15 -1
  30. package/dist/src/constants/serverRequirements.js.map +1 -1
  31. package/dist/src/prompts/deletePromptVersionTag.d.ts +36 -0
  32. package/dist/src/prompts/deletePromptVersionTag.d.ts.map +1 -0
  33. package/dist/src/prompts/deletePromptVersionTag.js +47 -0
  34. package/dist/src/prompts/deletePromptVersionTag.js.map +1 -0
  35. package/dist/src/prompts/index.d.ts +2 -0
  36. package/dist/src/prompts/index.d.ts.map +1 -1
  37. package/dist/src/prompts/index.js +2 -0
  38. package/dist/src/prompts/index.js.map +1 -1
  39. package/dist/src/prompts/upsertPromptVersionTag.d.ts +40 -0
  40. package/dist/src/prompts/upsertPromptVersionTag.d.ts.map +1 -0
  41. package/dist/src/prompts/upsertPromptVersionTag.js +52 -0
  42. package/dist/src/prompts/upsertPromptVersionTag.js.map +1 -0
  43. package/dist/src/utils/resolvePromptVersionId.d.ts +11 -0
  44. package/dist/src/utils/resolvePromptVersionId.d.ts.map +1 -0
  45. package/dist/src/utils/resolvePromptVersionId.js +18 -0
  46. package/dist/src/utils/resolvePromptVersionId.js.map +1 -0
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/docs/prompts.mdx +30 -1
  49. package/package.json +7 -7
  50. package/src/__generated__/api/v1.ts +14 -1
  51. package/src/constants/serverRequirements.ts +16 -0
  52. package/src/prompts/deletePromptVersionTag.ts +64 -0
  53. package/src/prompts/index.ts +2 -0
  54. package/src/prompts/upsertPromptVersionTag.ts +69 -0
  55. package/src/utils/resolvePromptVersionId.ts +18 -0
package/docs/prompts.mdx CHANGED
@@ -3,7 +3,7 @@ title: "Prompts"
3
3
  description: "Manage prompts with @arizeai/phoenix-client"
4
4
  ---
5
5
 
6
- The prompts module lets you create prompt versions in Phoenix, fetch them back by selector, list prompts, update a prompt's description and metadata, delete a prompt, and adapt prompt versions to supported provider SDKs.
6
+ The prompts module lets you create prompt versions in Phoenix, fetch them back by selector, manage prompt version tags, list prompts, update a prompt's description and metadata, delete a prompt, and adapt prompt versions to supported provider SDKs.
7
7
 
8
8
  <section className="hidden" data-agent-context="relevant-source-files" aria-label="Relevant source files">
9
9
  <h2>Relevant Source Files</h2>
@@ -43,6 +43,32 @@ const prompt = await getPrompt({
43
43
 
44
44
  `prompt` can be selected by `{ name }`, `{ name, tag }`, or `{ versionId }`.
45
45
 
46
+ ## Manage Version Tags
47
+
48
+ ```ts
49
+ import {
50
+ deletePromptVersionTag,
51
+ upsertPromptVersionTag,
52
+ } from "@arizeai/phoenix-client/prompts";
53
+
54
+ await upsertPromptVersionTag({
55
+ prompt: { versionId: "UHJvbXB0VmVyc2lvbjox" },
56
+ name: "production",
57
+ description: "Currently deployed version",
58
+ });
59
+
60
+ await deletePromptVersionTag({
61
+ prompt: { versionId: "UHJvbXB0VmVyc2lvbjox" },
62
+ name: "staging",
63
+ });
64
+ ```
65
+
66
+ Tag names are unique within a prompt, not within an individual version. Upserting a new name creates the tag on the target version. Upserting a name that already exists on another version of the same prompt moves that tag to the target version and updates its description. The same name can still be used independently by unrelated prompts.
67
+
68
+ Deletion also resolves the name within the prompt identified by `prompt.versionId`; the tag can be attached to any version of that prompt.
69
+
70
+ Tag upserts require Phoenix 8.22.0 or later. Tag deletion requires Phoenix 13.20.0 or later.
71
+
46
72
  ## Update Description And Metadata
47
73
 
48
74
  ```ts
@@ -99,9 +125,12 @@ Supported `sdk` targets:
99
125
  <ul>
100
126
  <li><code>src/prompts/createPrompt.ts</code></li>
101
127
  <li><code>src/prompts/deletePrompt.ts</code></li>
128
+ <li><code>src/prompts/deletePromptVersionTag.ts</code></li>
102
129
  <li><code>src/prompts/getPrompt.ts</code></li>
103
130
  <li><code>src/prompts/listPrompts.ts</code></li>
104
131
  <li><code>src/prompts/updatePrompt.ts</code></li>
132
+ <li><code>src/prompts/upsertPromptVersionTag.ts</code></li>
133
+ <li><code>src/utils/resolvePromptVersionId.ts</code></li>
105
134
  <li><code>src/prompts/sdks/toSDK.ts</code></li>
106
135
  <li><code>src/types/prompts.ts</code></li>
107
136
  </ul>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-client",
3
- "version": "7.14.0",
3
+ "version": "7.15.0",
4
4
  "description": "A client for the Phoenix API",
5
5
  "keywords": [
6
6
  "arize",
@@ -116,22 +116,22 @@
116
116
  "zod": "^4.6.5"
117
117
  },
118
118
  "devDependencies": {
119
- "@ai-sdk/openai": "^4.0.71",
120
- "@ai-sdk/otel": "^1.0.107",
119
+ "@ai-sdk/openai": "^4.0.78",
120
+ "@ai-sdk/otel": "^1.0.116",
121
121
  "@anthropic-ai/sdk": "^0.111.0",
122
122
  "@arizeai/phoenix-evals": "2.6.0",
123
123
  "@arizeai/phoenix-testing": "0.0.0",
124
124
  "@opentelemetry/api": "^1.9.1",
125
125
  "@opentelemetry/sdk-trace-node": "^2.11.0",
126
126
  "@types/async": "^3.2.26",
127
- "@types/node": "^26.6.2",
128
- "ai": "^7.0.107",
127
+ "@types/node": "^26.6.3",
128
+ "ai": "^7.0.116",
129
129
  "dotenv": "^17.4.2",
130
130
  "jest": "^30.5.2",
131
131
  "openai": "^6.49.0",
132
132
  "openapi-typescript": "^7.13.0",
133
- "tsx": "^4.23.13",
134
- "vitest": "^5.0.1"
133
+ "tsx": "^4.23.15",
134
+ "vitest": "^5.0.2"
135
135
  },
136
136
  "peerDependencies": {
137
137
  "@anthropic-ai/sdk": "^0.35.0",
@@ -3334,6 +3334,11 @@ export interface components {
3334
3334
  * @description The description of the experiment
3335
3335
  */
3336
3336
  description: string | null;
3337
+ /**
3338
+ * Sequence Number
3339
+ * @description The 1-based sequence number of the experiment within its dataset, in creation order.
3340
+ */
3341
+ sequence_number: number;
3337
3342
  /**
3338
3343
  * Repetitions
3339
3344
  * @description Number of times the experiment is repeated
@@ -9383,6 +9388,10 @@ export interface operations {
9383
9388
  cursor?: string | null;
9384
9389
  /** @description The max number of experiments to return at a time. */
9385
9390
  limit?: number;
9391
+ /** @description Order by creation: 'desc' (default) returns newest experiments first, 'asc' returns oldest first so the lowest sequence numbers are on the first page. */
9392
+ sort_dir?: "asc" | "desc";
9393
+ /** @description When provided, return only the experiments with these 1-based per-dataset sequence numbers. */
9394
+ sequence_numbers?: number[] | null;
9386
9395
  };
9387
9396
  header?: never;
9388
9397
  path: {
@@ -10580,10 +10589,14 @@ export interface operations {
10580
10589
  getSpans: {
10581
10590
  parameters: {
10582
10591
  query?: {
10583
- /** @description Pagination cursor (Span Global ID) */
10592
+ /** @description Pagination cursor: the next_cursor of a previous response with the same sort */
10584
10593
  cursor?: string | null;
10585
10594
  /** @description Maximum number of spans to return */
10586
10595
  limit?: number;
10596
+ /** @description Sort field. 'id' orders by insertion; 'start_time' orders by when the span started, breaking ties by id. */
10597
+ sort?: "id" | "start_time";
10598
+ /** @description Sort direction */
10599
+ order?: "asc" | "desc";
10587
10600
  /** @description Inclusive lower bound time */
10588
10601
  start_time?: string | null;
10589
10602
  /** @description Exclusive upper bound time */
@@ -199,6 +199,20 @@ export const DELETE_PROMPT: RouteRequirement = {
199
199
  minServerVersion: [13, 20, 0],
200
200
  };
201
201
 
202
+ export const UPSERT_PROMPT_VERSION_TAG: RouteRequirement = {
203
+ kind: "route",
204
+ method: "POST",
205
+ path: "/v1/prompt_versions/{prompt_version_id}/tags",
206
+ minServerVersion: [8, 22, 0],
207
+ };
208
+
209
+ export const DELETE_PROMPT_VERSION_TAG: RouteRequirement = {
210
+ kind: "route",
211
+ method: "DELETE",
212
+ path: "/v1/prompt_versions/{prompt_version_id}/tags/{tag_name}",
213
+ minServerVersion: [13, 20, 0],
214
+ };
215
+
202
216
  export const PATCH_PROMPT: RouteRequirement = {
203
217
  kind: "route",
204
218
  method: "PATCH",
@@ -293,6 +307,8 @@ export const ALL_REQUIREMENTS: readonly CapabilityRequirement[] = [
293
307
  ADD_SPAN_NOTE_IDENTIFIER,
294
308
  ADD_SESSION_NOTE_IDENTIFIER,
295
309
  DELETE_PROMPT,
310
+ UPSERT_PROMPT_VERSION_TAG,
311
+ DELETE_PROMPT_VERSION_TAG,
296
312
  PATCH_PROMPT,
297
313
  AGENT_SESSION_CREATE,
298
314
  AGENT_SESSION_LIST,
@@ -0,0 +1,64 @@
1
+ import { createClient } from "../client";
2
+ import { DELETE_PROMPT_VERSION_TAG } from "../constants/serverRequirements";
3
+ import type { ClientFn } from "../types/core";
4
+ import type { GetPromptByVersionSelector } from "../types/prompts";
5
+ import { resolvePromptVersionId } from "../utils/resolvePromptVersionId";
6
+ import { ensureServerCapability } from "../utils/serverVersionUtils";
7
+
8
+ /**
9
+ * Parameters for deleting a prompt version tag.
10
+ */
11
+ export interface DeletePromptVersionTagParams extends ClientFn {
12
+ /** A version belonging to the prompt that owns the tag. */
13
+ prompt: GetPromptByVersionSelector;
14
+ /** The prompt-scoped tag name to delete. */
15
+ name: string;
16
+ }
17
+
18
+ /**
19
+ * Delete a tag from the prompt that owns the given prompt version.
20
+ *
21
+ * Tag names are unique within a prompt, so `name` identifies the tag across
22
+ * all versions of that prompt. The tag does not need to be attached to the
23
+ * selected version.
24
+ *
25
+ * @param params - The prompt version tag to delete.
26
+ * @param params.prompt - A version selector used to identify the prompt.
27
+ * @param params.name - The prompt-scoped tag name to delete.
28
+ * @returns A promise that resolves once the tag has been deleted.
29
+ * @throws {@link HttpError} when Phoenix rejects the request.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { deletePromptVersionTag } from "@arizeai/phoenix-client/prompts";
34
+ *
35
+ * await deletePromptVersionTag({
36
+ * prompt: { versionId: "UHJvbXB0VmVyc2lvbjox" },
37
+ * name: "production",
38
+ * });
39
+ * ```
40
+ */
41
+ export async function deletePromptVersionTag({
42
+ client: _client,
43
+ prompt,
44
+ name,
45
+ }: DeletePromptVersionTagParams): Promise<void> {
46
+ const promptVersionId = resolvePromptVersionId(prompt);
47
+ const client = _client ?? createClient();
48
+ await ensureServerCapability({
49
+ client,
50
+ requirement: DELETE_PROMPT_VERSION_TAG,
51
+ });
52
+
53
+ await client.DELETE(
54
+ "/v1/prompt_versions/{prompt_version_id}/tags/{tag_name}",
55
+ {
56
+ params: {
57
+ path: {
58
+ prompt_version_id: promptVersionId,
59
+ tag_name: name,
60
+ },
61
+ },
62
+ }
63
+ );
64
+ }
@@ -1,6 +1,8 @@
1
1
  export * from "./getPrompt";
2
2
  export * from "./createPrompt";
3
3
  export * from "./deletePrompt";
4
+ export * from "./deletePromptVersionTag";
4
5
  export * from "./listPrompts";
6
+ export * from "./upsertPromptVersionTag";
5
7
  export * from "./updatePrompt";
6
8
  export * from "./sdks";
@@ -0,0 +1,69 @@
1
+ import { createClient } from "../client";
2
+ import { UPSERT_PROMPT_VERSION_TAG } from "../constants/serverRequirements";
3
+ import type { ClientFn } from "../types/core";
4
+ import type { GetPromptByVersionSelector } from "../types/prompts";
5
+ import { resolvePromptVersionId } from "../utils/resolvePromptVersionId";
6
+ import { ensureServerCapability } from "../utils/serverVersionUtils";
7
+
8
+ /**
9
+ * Parameters for creating or moving a prompt version tag.
10
+ */
11
+ export interface UpsertPromptVersionTagParams extends ClientFn {
12
+ /** The prompt version that should own the tag. */
13
+ prompt: GetPromptByVersionSelector;
14
+ /** The prompt-scoped tag name. */
15
+ name: string;
16
+ /** An optional description for the tag. */
17
+ description?: string | null;
18
+ }
19
+
20
+ /**
21
+ * Create a prompt version tag or move an existing tag to another version.
22
+ *
23
+ * Tag names are unique within a prompt. If another version of the same prompt
24
+ * already has `name`, the tag is moved to the selected version and its
25
+ * description is updated.
26
+ *
27
+ * @param params - The prompt version tag to create or move.
28
+ * @param params.prompt - The target prompt, selected by version ID.
29
+ * @param params.name - The prompt-scoped tag name.
30
+ * @param params.description - An optional description for the tag.
31
+ * @returns A promise that resolves once the tag has been created or moved.
32
+ * @throws {@link HttpError} when Phoenix rejects the request.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * import { upsertPromptVersionTag } from "@arizeai/phoenix-client/prompts";
37
+ *
38
+ * await upsertPromptVersionTag({
39
+ * prompt: { versionId: "UHJvbXB0VmVyc2lvbjox" },
40
+ * name: "production",
41
+ * description: "Currently deployed version",
42
+ * });
43
+ * ```
44
+ */
45
+ export async function upsertPromptVersionTag({
46
+ client: _client,
47
+ prompt,
48
+ name,
49
+ description,
50
+ }: UpsertPromptVersionTagParams): Promise<void> {
51
+ const promptVersionId = resolvePromptVersionId(prompt);
52
+ const client = _client ?? createClient();
53
+ await ensureServerCapability({
54
+ client,
55
+ requirement: UPSERT_PROMPT_VERSION_TAG,
56
+ });
57
+
58
+ await client.POST("/v1/prompt_versions/{prompt_version_id}/tags", {
59
+ params: {
60
+ path: {
61
+ prompt_version_id: promptVersionId,
62
+ },
63
+ },
64
+ body: {
65
+ name,
66
+ description,
67
+ },
68
+ });
69
+ }
@@ -0,0 +1,18 @@
1
+ import type { GetPromptByVersionSelector } from "../types/prompts";
2
+
3
+ /**
4
+ * Resolve a version selector to the `{prompt_version_id}` path segment used by
5
+ * the Phoenix REST API.
6
+ *
7
+ * @param prompt - The prompt, selected by version ID.
8
+ * @returns The prompt version ID to interpolate into the request path.
9
+ * @throws An error if the selector does not contain a non-empty version ID.
10
+ */
11
+ export function resolvePromptVersionId(
12
+ prompt: GetPromptByVersionSelector
13
+ ): string {
14
+ if (!prompt.versionId) {
15
+ throw new Error("versionId must be a non-empty prompt version id.");
16
+ }
17
+ return prompt.versionId;
18
+ }