arize-phoenix 7.12.0__py3-none-any.whl → 7.12.2__py3-none-any.whl

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.

Potentially problematic release.


This version of arize-phoenix might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 7.12.0
3
+ Version: 7.12.2
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://docs.arize.com/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -6,7 +6,7 @@ phoenix/exceptions.py,sha256=n2L2KKuecrdflB9MsCdAYCiSEvGJptIsfRkXMoJle7A,169
6
6
  phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
7
7
  phoenix/services.py,sha256=kpW1WL0kiB8XJsO6XycvZVJ-lBkNoenhQ7atCvBoSe8,5365
8
8
  phoenix/settings.py,sha256=ht-0oN-sMV6SPXrk7Tu1EZlngpAYkGNLYPhO8DyrdQI,661
9
- phoenix/version.py,sha256=epZfTrsMWfpY2no1bS7o-MeQ23JncNk7yI5RH-5Pqlg,23
9
+ phoenix/version.py,sha256=WmgZ_39xxpi-JHjL2z86DumX1qR0MPVwHwyeuWN_3ss,23
10
10
  phoenix/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  phoenix/core/embedding_dimension.py,sha256=zKGbcvwOXgLf-yrJBpQyKtd-LEOPRKHnUToyAU8Owis,87
12
12
  phoenix/core/model.py,sha256=qBFraOtmwCCnWJltKNP18DDG0mULXigytlFsa6YOz6k,4837
@@ -16,7 +16,7 @@ phoenix/db/README.md,sha256=Mjrq0tG68uKQ81mN1Vmu3C795EEpZndmnE6CJXsPCXE,1909
16
16
  phoenix/db/__init__.py,sha256=pDjEFXukHmJBM-1D8RjmXkvLsz85YWNxMQczt81ec3A,118
17
17
  phoenix/db/alembic.ini,sha256=GIS6HpHaKaJbbuahZg1Rc1D2_QqyCkV9r58wdARGf6w,3262
18
18
  phoenix/db/bulk_inserter.py,sha256=faNjuwLqqsw4ky8sa4D0h9u5TvEDTOjrccUW89L008E,12725
19
- phoenix/db/engines.py,sha256=YqJJlziCzvNg3y5hLz4CkRjcgMxug2BXmoyFV2THcdk,6914
19
+ phoenix/db/engines.py,sha256=esKGo_cqQLKKXNlfK7iQ7BtkOYY2xNsLdjvW2DddGjU,7321
20
20
  phoenix/db/enums.py,sha256=tt7iovXLhVTLZ3_LbHNGgcI44SnNjXfkKtLAZG57T54,428
21
21
  phoenix/db/facilitator.py,sha256=sAYqzBXYSVBKPTQVYrd7ZmtqMAr1zP9dVJwjfNGW7hc,4207
22
22
  phoenix/db/helpers.py,sha256=daKbpY2QhTPo9a_T1xNHKI4WzWHkMmmrGIws7Hw-RZ4,4884
@@ -287,10 +287,10 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
287
287
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
288
288
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
289
289
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
290
- phoenix/server/static/.vite/manifest.json,sha256=-112B2hz7FbbbyjgMlsRk8-lZneQvQP4g-tM-IoZty0,2163
291
- phoenix/server/static/assets/components-Caw_U14D.js,sha256=dlWsRhD1_3PxoeVVITya9Yp9IkfgDdo4dO21yKDZF5g,393511
292
- phoenix/server/static/assets/index-EgdbaF48.js,sha256=FEa1qyVq5vNUWSUvLMoUWK2j1Ra7EdEOIWGLp8pXrgY,8729
293
- phoenix/server/static/assets/pages-BFZvquxr.js,sha256=Y0tRNqTRt220FpZdHW7vQTOcCi87p8O3zSDS6BftByE,686674
290
+ phoenix/server/static/.vite/manifest.json,sha256=JCoCqJ2EM8P-pbYM5MAsc1GC5ew3coZ_fpWs5QBBmig,2163
291
+ phoenix/server/static/assets/components-DckIzNmE.js,sha256=pSj56ALcyL-s3hnb1EALfeQs7ur8ok18kSMBn1icXmo,393538
292
+ phoenix/server/static/assets/index-Bf25Ogon.js,sha256=0hTrD_d7U3gnaQmW8nOKd95r-tnIQo0SjW90xXQfDGc,8729
293
+ phoenix/server/static/assets/pages-DL7J9q9w.js,sha256=aqc5j-YR5NJJ_PTL46SndO9QNSaog-m_QJJhp_TI8vQ,686674
294
294
  phoenix/server/static/assets/vendor-DvC8cT4X.js,sha256=-EzJrg6BeYa58JPfaZC6KS5gvkJ8gC1n-Sb7lP-pOkw,2159677
295
295
  phoenix/server/static/assets/vendor-DxkFTwjz.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
296
296
  phoenix/server/static/assets/vendor-arizeai-Do1793cv.js,sha256=IFADVVEZ8VY9o4iqYighRedZTXSyi1uZMTFFsBeIYis,305184
@@ -337,9 +337,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
337
337
  phoenix/utilities/re.py,sha256=6YyUWIkv0zc2SigsxfOWIHzdpjKA_TZo2iqKq7zJKvw,2081
338
338
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
339
339
  phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
340
- arize_phoenix-7.12.0.dist-info/METADATA,sha256=PJlLicxrJuM_QJI6MgWWu0L29jZxMZEmq1GVREn6Jck,23390
341
- arize_phoenix-7.12.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
342
- arize_phoenix-7.12.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
343
- arize_phoenix-7.12.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
344
- arize_phoenix-7.12.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
345
- arize_phoenix-7.12.0.dist-info/RECORD,,
340
+ arize_phoenix-7.12.2.dist-info/METADATA,sha256=nJgYrfWkxDNnpl-0GmYDAM3LP_v8DnwehuhKeLScCb0,23390
341
+ arize_phoenix-7.12.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
342
+ arize_phoenix-7.12.2.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
343
+ arize_phoenix-7.12.2.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
344
+ arize_phoenix-7.12.2.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
345
+ arize_phoenix-7.12.2.dist-info/RECORD,,
phoenix/db/engines.py CHANGED
@@ -4,7 +4,7 @@ from collections.abc import Callable
4
4
  from datetime import datetime
5
5
  from enum import Enum
6
6
  from sqlite3 import Connection
7
- from typing import Any
7
+ from typing import Any, Mapping
8
8
 
9
9
  import aiosqlite
10
10
  import numpy as np
@@ -163,23 +163,15 @@ def aio_postgresql_engine(
163
163
  log_to_stdout: bool = False,
164
164
  log_migrations_to_stdout: bool = True,
165
165
  ) -> AsyncEngine:
166
- url_query = dict(url.query)
167
- sslmode = url_query.pop("sslmode", None) or url_query.pop("ssl", None)
168
166
  engine = create_async_engine(
169
- url=url.set(
170
- # https://github.com/MagicStack/asyncpg/issues/737
171
- query={**url_query, "ssl": sslmode} if sslmode else url_query,
172
- ),
167
+ url=url.set(query=_asyncpg_url_query(url.query)),
173
168
  echo=log_to_stdout,
174
169
  json_serializer=_dumps,
175
170
  )
176
171
  if not migrate:
177
172
  return engine
178
173
  sync_engine = sqlalchemy.create_engine(
179
- url=url.set(
180
- drivername="postgresql+psycopg",
181
- query={**url_query, "sslmode": sslmode} if sslmode else url_query,
182
- ),
174
+ url=url.set(drivername="postgresql+psycopg", query=_psycopg_url_query(url.query)),
183
175
  echo=log_migrations_to_stdout,
184
176
  json_serializer=_dumps,
185
177
  )
@@ -189,6 +181,24 @@ def aio_postgresql_engine(
189
181
  return engine
190
182
 
191
183
 
184
+ def _asyncpg_url_query(query: Mapping[str, Any]) -> dict[str, Any]:
185
+ ans = dict(query)
186
+ if sslmode := (ans.pop("sslmode", None) or ans.pop("ssl", None)):
187
+ # https://github.com/MagicStack/asyncpg/issues/737
188
+ ans["ssl"] = sslmode
189
+ return ans
190
+
191
+
192
+ def _psycopg_url_query(query: Mapping[str, Any]) -> dict[str, Any]:
193
+ ans = dict(query)
194
+ if sslmode := (ans.pop("sslmode", None) or ans.pop("ssl", None)):
195
+ ans["sslmode"] = sslmode
196
+ # prepared_statement_cache_size is only used by asyncpg, see:
197
+ # https://docs.sqlalchemy.org/en/20/dialects/postgresql.html#prepared-statement-cache
198
+ ans.pop("prepared_statement_cache_size", None)
199
+ return ans
200
+
201
+
192
202
  def _dumps(obj: Any) -> str:
193
203
  return json.dumps(obj, cls=_Encoder)
194
204
 
@@ -1,22 +1,22 @@
1
1
  {
2
- "_components-Caw_U14D.js": {
3
- "file": "assets/components-Caw_U14D.js",
2
+ "_components-DckIzNmE.js": {
3
+ "file": "assets/components-DckIzNmE.js",
4
4
  "name": "components",
5
5
  "imports": [
6
6
  "_vendor-DvC8cT4X.js",
7
- "_pages-BFZvquxr.js",
7
+ "_pages-DL7J9q9w.js",
8
8
  "_vendor-arizeai-Do1793cv.js",
9
9
  "_vendor-codemirror-BzwZPyJM.js",
10
10
  "_vendor-three-DwGkEfCM.js"
11
11
  ]
12
12
  },
13
- "_pages-BFZvquxr.js": {
14
- "file": "assets/pages-BFZvquxr.js",
13
+ "_pages-DL7J9q9w.js": {
14
+ "file": "assets/pages-DL7J9q9w.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
17
  "_vendor-DvC8cT4X.js",
18
18
  "_vendor-arizeai-Do1793cv.js",
19
- "_components-Caw_U14D.js",
19
+ "_components-DckIzNmE.js",
20
20
  "_vendor-codemirror-BzwZPyJM.js",
21
21
  "_vendor-recharts-_Jb7JjhG.js"
22
22
  ]
@@ -69,15 +69,15 @@
69
69
  "name": "vendor-three"
70
70
  },
71
71
  "index.tsx": {
72
- "file": "assets/index-EgdbaF48.js",
72
+ "file": "assets/index-Bf25Ogon.js",
73
73
  "name": "index",
74
74
  "src": "index.tsx",
75
75
  "isEntry": true,
76
76
  "imports": [
77
77
  "_vendor-DvC8cT4X.js",
78
78
  "_vendor-arizeai-Do1793cv.js",
79
- "_pages-BFZvquxr.js",
80
- "_components-Caw_U14D.js",
79
+ "_pages-DL7J9q9w.js",
80
+ "_components-DckIzNmE.js",
81
81
  "_vendor-three-DwGkEfCM.js",
82
82
  "_vendor-codemirror-BzwZPyJM.js",
83
83
  "_vendor-shiki-Cl9QBraO.js",
@@ -1,4 +1,4 @@
1
- import{r as h,R as G,j as e,n as Wn,a as we,e as Xe,s as T1,b as e1,c as ke,d as N1,f as Oa,g as ge,h as _a,i as Fa,k as R1,l,m as Na,o as Se,C as t1,p as Be,q as $e,t as N,u as Ra,v as Ha,L as Un,w as jn,x as Qn,y as oe,z as w,A as u1,B as qn,D as m,E as Xn,F as Yn,G as Ze,$ as Ka,H as Ba,I as $a,J as Z1,K as Jn,M as a1,N as i1,O as et,P as r1,Q as Za,S as Ga,T as Wa,U,V as Ua,W as ja,X as Qa,Y as nt,Z as qa,_ as Xa,a0 as tt,a1 as Ya,a2 as V,a3 as at,a4 as Te,a5 as m1,a6 as Ee,a7 as F,a8 as Ja,a9 as ei,aa as ni,ab as ti,ac as pn,ad as ai,ae as ii,af as ri,ag as gn,ah as oi,ai as li,aj as si,ak as I1,al as G1,am as ci,an as di,ao as ui,ap as mi,aq as hi,ar as pi,as as gi,at as fi,au as Ci,av as bi,aw as Li,ax as vi,ay as yi,az as wi,aA as ki,aB as Si,aC as xi}from"./vendor-DvC8cT4X.js";import{m as Mi,T as Ti,a as fn,u as Ii}from"./pages-BFZvquxr.js";import{u as Ai,_ as it,a as te,T as j,b as zi,c as Ei,R as J,d as Ge,e as ne,f as Vi,E as rt,g as B,h as W1,i as Ve,j as ot,k as ve,D as h1,l as o1,I as U1,m as j1,n as lt,P as Q1,C as p1,o as g1,A as We,L as Ce,p as Di,q as ye,F as st,r as Pi,s as Oi,t as _i,v as ce,w as de,x as Fi,y as Ni,z as Cn,B as Ri}from"./vendor-arizeai-Do1793cv.js";import{L as ct,a as dt,l as H1,j as ut,h as Hi,b as Ki,c as Bi,d as $i,e as Zi,f as Gi,s as Wi,R as Ue,g as mt,n as je,i as ht,E as q1,p as Ui,k as ji}from"./vendor-codemirror-BzwZPyJM.js";import{V as Qi}from"./vendor-three-DwGkEfCM.js";const pt=function(){var n={defaultValue:null,kind:"LocalArgument",name:"clusters"},t={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},a={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},i={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},r={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},o=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],s=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:o,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:o,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[n,t,a,i,r],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:s,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[n,a,t,i,r],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:s},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
1
+ import{r as h,R as G,j as e,n as Wn,a as we,e as Xe,s as T1,b as e1,c as ke,d as N1,f as Oa,g as ge,h as _a,i as Fa,k as R1,l,m as Na,o as Se,C as t1,p as Be,q as $e,t as N,u as Ra,v as Ha,L as Un,w as jn,x as Qn,y as oe,z as w,A as u1,B as qn,D as m,E as Xn,F as Yn,G as Ze,$ as Ka,H as Ba,I as $a,J as Z1,K as Jn,M as a1,N as i1,O as et,P as r1,Q as Za,S as Ga,T as Wa,U,V as Ua,W as ja,X as Qa,Y as nt,Z as qa,_ as Xa,a0 as tt,a1 as Ya,a2 as V,a3 as at,a4 as Te,a5 as m1,a6 as Ee,a7 as F,a8 as Ja,a9 as ei,aa as ni,ab as ti,ac as pn,ad as ai,ae as ii,af as ri,ag as gn,ah as oi,ai as li,aj as si,ak as I1,al as G1,am as ci,an as di,ao as ui,ap as mi,aq as hi,ar as pi,as as gi,at as fi,au as Ci,av as bi,aw as Li,ax as vi,ay as yi,az as wi,aA as ki,aB as Si,aC as xi}from"./vendor-DvC8cT4X.js";import{m as Mi,T as Ti,a as fn,u as Ii}from"./pages-DL7J9q9w.js";import{u as Ai,_ as it,a as te,T as j,b as zi,c as Ei,R as J,d as Ge,e as ne,f as Vi,E as rt,g as B,h as W1,i as Ve,j as ot,k as ve,D as h1,l as o1,I as U1,m as j1,n as lt,P as Q1,C as p1,o as g1,A as We,L as Ce,p as Di,q as ye,F as st,r as Pi,s as Oi,t as _i,v as ce,w as de,x as Fi,y as Ni,z as Cn,B as Ri}from"./vendor-arizeai-Do1793cv.js";import{L as ct,a as dt,l as H1,j as ut,h as Hi,b as Ki,c as Bi,d as $i,e as Zi,f as Gi,s as Wi,R as Ue,g as mt,n as je,i as ht,E as q1,p as Ui,k as ji}from"./vendor-codemirror-BzwZPyJM.js";import{V as Qi}from"./vendor-three-DwGkEfCM.js";const pt=function(){var n={defaultValue:null,kind:"LocalArgument",name:"clusters"},t={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},a={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},i={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},r={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},o=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],s=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:o,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:o,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[n,t,a,i,r],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:s,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[n,a,t,i,r],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:s},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
2
2
  $clusters: [ClusterInput!]!
3
3
  $fetchDataQualityMetric: Boolean!
4
4
  $dataQualityMetricColumnName: String
@@ -144,7 +144,7 @@ import{r as h,R as G,j as e,n as Wn,a as we,e as Xe,s as T1,b as e1,c as ke,d as
144
144
  id
145
145
  }
146
146
  }
147
- `}}}();Ct.hash="e8fa488a0d466b5e40fdadc1e5227a57";const qi=30,bn=5,Ln=100,Xi=0,vn=0,yn=.99,Yi=500,wn=300,kn=1e5,Ji=10,Sn=1,er=2,nr=1,tr=0;var z=(n=>(n.inferences="inferences",n.correctness="correctness",n.dimension="dimension",n))(z||{}),Ae=(n=>(n.list="list",n.gallery="gallery",n))(Ae||{}),Ie=(n=>(n.small="small",n.medium="medium",n.large="large",n))(Ie||{}),E=(n=>(n.primary="primary",n.reference="reference",n.corpus="corpus",n))(E||{}),H=(n=>(n.correct="correct",n.incorrect="incorrect",n.unknown="unknown",n))(H||{});const ar=["#05fbff","#cb8afd"],ir=["#00add0","#4500d9"],le="#a5a5a5",xe=le;var ee=(n=>(n.primary="primary",n.reference="reference",n.corpus="corpus",n))(ee||{});function D(n){throw new Error("Unreachable")}function X1(n){return typeof n=="number"||n===null}function rr(n){return typeof n=="string"||n===null}function hc(n){return Array.isArray(n)?n.every(t=>typeof t=="string"):!1}function Y1(n){return typeof n=="object"&&n!==null}function pc(n){return Y1(n)&&Object.keys(n).every(t=>typeof t=="string")}const gc=()=>n=>n,J1=h.createContext(null);function f1(){const n=G.useContext(J1);if(n===null)throw new Error("useInferences must be used within a InferencesProvider");return n}function fc(n){return e(J1.Provider,{value:{primaryInferences:n.primaryInferences,referenceInferences:n.referenceInferences,corpusInferences:n.corpusInferences,getInferencesNameByRole:t=>{var a,i;switch(t){case ee.primary:return n.primaryInferences.name;case ee.reference:return((a=n.referenceInferences)==null?void 0:a.name)??"reference";case ee.corpus:return((i=n.corpusInferences)==null?void 0:i.name)??"corpus";default:D()}}},children:n.children})}const en=h.createContext(null);function Cc({children:n,...t}){const[a]=h.useState(()=>Sr(t));return e(en.Provider,{value:a,children:n})}function y(n,t){const a=h.useContext(en);if(!a)throw new Error("Missing PointCloudContext.Provider in the tree");return Wn(a,n,t)}var X=(n=>(n.last_hour="Last Hour",n.last_day="Last Day",n.last_week="Last Week",n.last_month="Last Month",n.last_3_months="Last 3 Months",n.first_hour="First Hour",n.first_day="First Day",n.first_week="First Week",n.first_month="First Month",n.all="All",n))(X||{});const bt=h.createContext(null);function or(){const n=h.useContext(bt);if(n===null)throw new Error("useTimeRange must be used within a TimeRangeProvider");return n}function lr(n,t){return h.useMemo(()=>{switch(n){case"Last Hour":{const i=we(Fa(t.end),{roundingMethod:"ceil"});return{start:R1(i,1),end:i}}case"Last Day":{const i=we(_a(t.end),{roundingMethod:"ceil"});return{start:ge(i,1),end:i}}case"Last Week":{const i=we(Xe(t.end),{roundingMethod:"ceil"});return{start:ge(i,7),end:i}}case"Last Month":{const i=we(Xe(t.end),{roundingMethod:"ceil"});return{start:ge(i,30),end:i}}case"Last 3 Months":{const i=we(Xe(t.end),{roundingMethod:"ceil"});return{start:ge(i,90),end:i}}case"First Hour":{const i=N1(t.start);return{start:i,end:Oa(i,1)}}case"First Day":{const i=ke(t.start);return{start:i,end:e1(i,1)}}case"First Week":{const i=T1(t.start);return{start:i,end:e1(i,7)}}case"First Month":{const i=T1(t.start);return{start:i,end:e1(i,30)}}case"All":{const i=we(Xe(t.end),{roundingMethod:"floor"});return{start:T1(t.start),end:i}}default:D()}},[n,t])}function bc(n){const[t,a]=h.useState("Last Month"),i=lr(t,n.timeRangeBounds),r=h.useCallback(o=>{h.startTransition(()=>{a(o)})},[]);return e(bt.Provider,{value:{timeRange:i,timePreset:t,setTimePreset:r},children:n.children})}const Lt=h.createContext(null);function Lc({children:n}){const[t,a]=Ai({style:{zIndex:1e3}}),i=h.useCallback(o=>{t({variant:"danger",...o})},[t]),r=h.useCallback(o=>{t({variant:"success",...o})},[t]);return l(Lt.Provider,{value:{notify:t,notifyError:i,notifySuccess:r},children:[n,a]})}function vt(){const n=h.useContext(Lt);if(n===null)throw new Error("useGlobalNotification must be used within a NotificationProvider");return n}function vc(){return vt().notifyError}function C1(){return vt().notifySuccess}const yt="arize-phoenix-theme";function wt(){return localStorage.getItem(yt)==="light"?"light":"dark"}const nn=h.createContext(null);function Q(){const n=h.useContext(nn);if(n===null)throw new Error("useTheme must be used within a ThemeProvider");return n}function yc(n){const[t,a]=h.useState(wt()),i=h.useCallback(r=>{localStorage.setItem(yt,r),a(r)},[]);return e(nn.Provider,{value:{theme:t,setTheme:i},children:n.children})}function sr(n){return n.endsWith("/")?n.slice(0,-1):n}const kt=sr(window.Config.basename),cr=window.location.protocol==="https:",Qe=`${window.location.protocol}//${window.location.host}${kt}`,dr=`${cr?"wss":"ws"}://${window.location.host}${kt}`,wc=window.Config.platformVersion,Re="returnUrl";function xn(n,t){const a=new URL(n,window.location.origin);return t.forEach((i,r)=>{a.searchParams.append(r,i)}),a.pathname+a.search}function ur(){const n=window.Config.basename,t=n==null||n===""||n==="/",a=n!=null&&n.startsWith("/")&&!n.endsWith("/");if(!(t||a))throw new Error(`Invalid basename: ${n}`);const i=window.location.pathname,r=window.location.origin,o=new URLSearchParams(window.location.search);if(t){const s=new URL("/login",r);return s.searchParams.set(Re,xn(i,o)),s.pathname+s.search}if(i.startsWith(n)){const s=i.slice(n.length);if(s===""||s.startsWith("/")){const d=new URL(n+"/login",r);return d.searchParams.set(Re,xn(s,o)),d.pathname+d.search}}return n+"/login"}function kc(n){const t=window.Config.basename,a=t==null||t===""||t==="/",i=t!=null&&t.startsWith("/")&&!t.endsWith("/");if(!(a||i))throw new Error(`Invalid basename: ${t}`);return a?n:t+n}const Sc=({path:n,searchParams:t})=>{const i=new URL(window.location.href).searchParams.get(Re),r=new URLSearchParams(t||{});i&&r.set(Re,i);const o=r.toString();return`${n}${o?`?${o}`:""}`},mr=n=>!(typeof n!="string"||!n.startsWith("/")||n.replace(/\\/g,"/").startsWith("//")),hr=n=>mr(n)?n:"/",xc=()=>{const n=new URL(window.location.href);return hr(n.searchParams.get(Re))},pr=Qe+"/auth/refresh";class Mn extends Error{constructor(){super("Unauthorized")}}async function gr(n,t){try{return await fetch(n,t).then(a=>{if(a.status===401)throw new Mn;return a})}catch(a){if(a instanceof Mn)return await St(),fetch(n,t);if(a instanceof Error&&a.name==="AbortError")throw a}throw new Error("An unexpected error occurred while fetching data")}let Oe=null;async function St(){return Oe||(Oe=fetch(pr,{method:"POST"}).then(n=>(n.ok||(window.location.href=ur()),Oe=null,n)),Oe)}const fr=Qe+"/graphql",xt=window.Config.authenticationEnabled,Cr=xt?gr:fetch;function br(n,t,a){return Se.Observable.create(i=>{const r=new AbortController;return Cr(n,{...t,signal:r.signal}).then(o=>o.json()).then(o=>{const s=a==null?void 0:a(o);if(s)throw s;i.next(o),i.complete()}).catch(o=>{o.name==="AbortError"?i.complete():i.error(o)}),()=>{r.abort()}})}const Lr=(n,t,a)=>br(fr,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:n.text,variables:t})},i=>{if(!(!Y1(i)||!("errors"in i))&&Array.isArray(i.errors))return new Error(`Error fetching GraphQL query '${n.name}' with variables '${JSON.stringify(t)}': ${JSON.stringify(i.errors)}`)}),vr=Na({url:`${dr}/graphql`,shouldRetry:n=>xt&&n instanceof Event&&n.type==="error"?(St(),!0):!1}),yr=(n,t)=>Se.Observable.create(a=>vr.subscribe({operationName:n.name,query:n.text,variables:t},a)),qe=new Se.Environment({network:Se.Network.create(Lr,yr),store:new Se.Store(new Se.RecordSource,{gcReleaseBufferSize:10})});function Mt(n){return n.includes("PRIMARY")?ee.primary:n.includes("CORPUS")?ee.corpus:ee.reference}function tn(n){const t=[],a=[],i=[];return n.forEach(r=>{const o=Mt(r);o==ee.primary?t.push(r):o==ee.corpus?i.push(r):a.push(r)}),{primaryEventIds:t,referenceEventIds:a,corpusEventIds:i}}const l1=10,Fe="unknown",Tt=Ha,It=Ra,wr=n=>It[n],kr=n=>Tt(n/l1);var ze=(n=>(n.move="move",n.select="select",n))(ze||{}),an=(n=>(n.default="default",n.highlight="highlight",n))(an||{});const Me=()=>wt()==="light"?ir:ar;function Mc(){const n=Me();return{coloringStrategy:z.inferences,pointGroupVisibility:{[E.primary]:!0,[E.reference]:!0},pointGroupColors:{[E.primary]:n[0],[E.reference]:n[1],[E.corpus]:le},metric:{type:"drift",metric:"euclideanDistance"}}}function Tc(){const n=Me();return{coloringStrategy:z.inferences,pointGroupVisibility:{[E.primary]:!0,[E.corpus]:!0},pointGroupColors:{[E.primary]:n[0],[E.corpus]:le},metric:{type:"retrieval",metric:"queryDistance"},clusterSort:{dir:"desc",column:"primaryMetricValue"}}}function Ic(){return{coloringStrategy:z.correctness,pointGroupVisibility:{[H.correct]:!0,[H.incorrect]:!0,[H.unknown]:!0},pointGroupColors:{[H.correct]:t1.Discrete2.LightBlueOrange[0],[H.incorrect]:t1.Discrete2.LightBlueOrange[1],[H.unknown]:xe},metric:{type:"performance",metric:"accuracyScore"},clusterSort:{dir:"asc",column:"primaryMetricValue"}}}const Sr=n=>{const t={loading:!1,errorMessage:null,points:[],eventIdToDataMap:new Map,clusters:[],clusterSort:{dir:"desc",column:"driftRatio"},pointData:null,selectedEventIds:new Set,hoveredEventId:null,highlightedClusterId:null,selectedClusterId:null,canvasMode:"move",pointSizeScale:1,clusterColorMode:"default",coloringStrategy:z.inferences,inferencesVisibility:{primary:!0,reference:!0,corpus:!0},pointGroupVisibility:{[E.primary]:!0,[E.reference]:!0,[E.corpus]:!0},pointGroupColors:{[E.primary]:Me()[0],[E.reference]:Me()[1],[E.corpus]:le},eventIdToGroup:{},selectionDisplay:Ae.gallery,selectionGridSize:Ie.large,dimension:null,dimensionMetadata:null,umapParameters:{minDist:Xi,nNeighbors:qi,nSamples:Yi},hdbscanParameters:{minClusterSize:Ji,clusterMinSamples:nr,clusterSelectionEpsilon:tr},clustersLoading:!1,metric:{type:"drift",metric:"euclideanDistance"},selectionSearchText:""},a=(i,r)=>({...t,...n,setInitialData:async({points:o,clusters:s,retrievals:c})=>{const d=r(),u=new Map,p=c.reduce((C,b)=>{const{queryId:k}=b;return C[k]?C[k].push(b):C[k]=[b],C},{});o.forEach(C=>{C={...C,retrievals:p[C.eventId]??[]},u.set(C.eventId,C)});const g=s.map(In).sort(z1(d.clusterSort));i({loading:!1,points:o,eventIdToDataMap:u,clusters:g,clustersLoading:!1,selectedEventIds:new Set,selectedClusterId:null,pointData:null,eventIdToGroup:pe({points:o,coloringStrategy:d.coloringStrategy,pointsData:d.pointData??{},dimension:d.dimension||null,dimensionMetadata:d.dimensionMetadata})});const f=await Tr(o.map(C=>C.eventId)).catch(()=>i({errorMessage:"Failed to load the point events"}));f&&i({pointData:f,clusters:g,clustersLoading:!1,eventIdToGroup:pe({points:o,coloringStrategy:d.coloringStrategy,pointsData:f??{},dimension:d.dimension||null,dimensionMetadata:d.dimensionMetadata})})},setClusters:o=>{const s=r(),c=o.map(In).sort(z1(s.clusterSort));i({clusters:c,clustersLoading:!1,selectedClusterId:null,highlightedClusterId:null})},setClusterSort:o=>{const c=[...r().clusters].sort(z1(o));i({clusterSort:o,clusters:c})},setSelectedEventIds:o=>i({selectedEventIds:o,selectionSearchText:""}),setHoveredEventId:o=>i({hoveredEventId:o}),setHighlightedClusterId:o=>i({highlightedClusterId:o}),setSelectedClusterId:o=>i({selectedClusterId:o,highlightedClusterId:null}),setPointSizeScale:o=>i({pointSizeScale:o}),setCanvasMode:o=>i({canvasMode:o}),setClusterColorMode:o=>i({clusterColorMode:o}),setColoringStrategy:o=>{const s=r();switch(i({coloringStrategy:o}),o){case z.correctness:i({pointGroupVisibility:{[H.correct]:!0,[H.incorrect]:!0,[H.unknown]:!0},pointGroupColors:{[H.correct]:t1.Discrete2.LightBlueOrange[0],[H.incorrect]:t1.Discrete2.LightBlueOrange[1],[H.unknown]:xe},dimension:null,dimensionMetadata:null,eventIdToGroup:pe({points:s.points,coloringStrategy:o,pointsData:s.pointData??{},dimension:s.dimension||null,dimensionMetadata:s.dimensionMetadata})});break;case z.inferences:{i({pointGroupVisibility:{[E.primary]:!0,[E.reference]:!0,[E.corpus]:!0},pointGroupColors:{[E.primary]:Me()[0],[E.reference]:Me()[1],[E.corpus]:le},dimension:null,dimensionMetadata:null,eventIdToGroup:pe({points:s.points,coloringStrategy:o,pointsData:s.pointData??{},dimension:s.dimension||null,dimensionMetadata:s.dimensionMetadata})});break}case z.dimension:{i({pointGroupVisibility:{unknown:!0},pointGroupColors:{unknown:xe},dimension:null,dimensionMetadata:null,eventIdToGroup:pe({points:s.points,coloringStrategy:o,pointsData:s.pointData??{},dimension:s.dimension||null,dimensionMetadata:s.dimensionMetadata})});break}default:D()}},inferencesVisibility:{primary:!0,reference:!0,corpus:!0},setInferencesVisibility:o=>i({inferencesVisibility:o}),setPointGroupVisibility:o=>i({pointGroupVisibility:o}),selectionDisplay:Ae.gallery,setSelectionDisplay:o=>i({selectionDisplay:o}),setSelectionGridSize:o=>i({selectionGridSize:o}),reset:()=>{i({points:[],clusters:[],selectedEventIds:new Set,selectedClusterId:null,eventIdToGroup:{}})},setDimension:async o=>{const s=r();i({dimension:o,dimensionMetadata:null});const c=await Mr(o).catch(()=>i({errorMessage:"Failed to load the dimension metadata"}));if(c){if(i({dimensionMetadata:c}),c.categories&&c.categories.length){const d=c.categories.length,p=d<=It.length?wr:g=>Tt(g/d);i({pointGroupVisibility:{...c.categories.reduce((g,f)=>({...g,[f]:!0}),{}),unknown:!0},pointGroupColors:{...c.categories.reduce((g,f,C)=>({...g,[f]:p(C)}),{}),unknown:xe},eventIdToGroup:pe({points:s.points,coloringStrategy:s.coloringStrategy,pointsData:s.pointData??{},dimension:o,dimensionMetadata:c})})}else if(c.interval!==null){const d=At(c.interval);i({pointGroupVisibility:{...d.reduce((u,p)=>({...u,[p.name]:!0}),{}),unknown:!0},pointGroupColors:{...d.reduce((u,p,g)=>({...u,[p.name]:kr(g)}),{}),unknown:xe},eventIdToGroup:pe({points:s.points,coloringStrategy:s.coloringStrategy,pointsData:s.pointData??{},dimension:o,dimensionMetadata:c})})}}},setDimensionMetadata:o=>i({dimensionMetadata:o}),setUMAPParameters:o=>i({umapParameters:o}),setHDBSCANParameters:async o=>{const s=r();i({hdbscanParameters:o,clustersLoading:!0});const c=await Ir({metric:s.metric,points:s.points,hdbscanParameters:o});s.setClusters(c)},getHDSCANParameters:()=>r().hdbscanParameters,getMetric:()=>r().metric,setErrorMessage:o=>i({errorMessage:o}),setLoading:o=>i({loading:o}),setMetric:async o=>{const s=r();i({metric:o,clustersLoading:!0});const c=await Ar({metric:o,clusters:s.clusters,hdbscanParameters:s.hdbscanParameters});s.setClusters(c)},setSelectionSearchText:o=>i({selectionSearchText:o})});return Be()($e(a))},Tn=new Intl.NumberFormat([],{maximumFractionDigits:2});function xr({min:n,max:t}){return`${Tn.format(n)} - ${Tn.format(t)}`}function At({min:n,max:t}){const i=(t-n)/l1,r=[];for(let o=0;o<l1;o++){const s=n+o*i,c=n+(o+1)*i;r.push({min:s,max:c,name:xr({min:s,max:c})})}return r}function A1({numericGroupIntervals:n,numericValue:t}){let a=Fe,i=n.findIndex(r=>t>=r.min&&t<r.max);return i=i===-1?l1-1:i,a=n[i].name,a}function pe(n){const{points:t,coloringStrategy:a,pointsData:i,dimension:r,dimensionMetadata:o}=n,s={},c=t.map(d=>d.eventId);switch(a){case z.inferences:{const{primaryEventIds:d,referenceEventIds:u,corpusEventIds:p}=tn(c);d.forEach(g=>{s[g]=E.primary}),u.forEach(g=>{s[g]=E.reference}),p.forEach(g=>{s[g]=E.corpus});break}case z.correctness:{t.forEach(d=>{let u=H.unknown;const{predictionLabel:p,actualLabel:g}=d.eventMetadata;p!==null&&g!==null&&(u=p===g?H.correct:H.incorrect),s[d.eventId]=u});break}case z.dimension:{let d;o&&(o==null?void 0:o.interval)!==null&&(d=At(o.interval));const u=(r==null?void 0:r.type)==="prediction"&&(r==null?void 0:r.dataType)==="categorical",p=(r==null?void 0:r.type)==="prediction"&&(r==null?void 0:r.dataType)==="numeric",g=(r==null?void 0:r.type)==="actual"&&(r==null?void 0:r.dataType)==="categorical",f=(r==null?void 0:r.type)==="actual"&&(r==null?void 0:r.dataType)==="numeric";t.forEach(C=>{let b=Fe;const k=i[C.eventId];if(r!=null&&k!=null)if(u)b=k.eventMetadata.predictionLabel??Fe;else if(p){if(d==null)throw new Error("Cannot color by prediction score without numeric group intervals");const S=k.eventMetadata.predictionScore;typeof S=="number"&&(b=A1({numericGroupIntervals:d,numericValue:S}))}else if(f){if(d==null)throw new Error("Cannot color by actual score without numeric group intervals");const S=k.eventMetadata.actualScore;typeof S=="number"&&(b=A1({numericGroupIntervals:d,numericValue:S}))}else if(g)b=k.eventMetadata.actualLabel??Fe;else{const S=k.dimensions.find(K=>K.dimension.name===r.name);if(S!=null&&r.dataType==="categorical")b=S.value??Fe;else if(S!=null&&r.dataType==="numeric"&&d!=null){const K=typeof(S==null?void 0:S.value)=="string"?parseFloat(S.value):null;typeof K=="number"&&(b=A1({numericGroupIntervals:d,numericValue:K}))}}s[C.eventId]=b});break}default:D()}return s}async function Mr(n){const t=await N.fetchQuery(qe,Ct,{id:n.id,getDimensionMinMax:n.dataType==="numeric",getDimensionCategories:n.dataType==="categorical"}).toPromise(),a=t==null?void 0:t.dimension;if(!n)throw new Error("Dimension not found");let i=null;return typeof(a==null?void 0:a.min)=="number"&&typeof(a==null?void 0:a.max)=="number"&&(i={min:a.min,max:a.max}),{interval:i,categories:(a==null?void 0:a.categories)??null}}async function Tr(n){var u,p,g,f,C,b;const{primaryEventIds:t,referenceEventIds:a,corpusEventIds:i}=tn([...n]),r=await N.fetchQuery(qe,ft,{primaryEventIds:t,referenceEventIds:a,corpusEventIds:i}).toPromise(),o=((p=(u=r==null?void 0:r.model)==null?void 0:u.primaryInferences)==null?void 0:p.events)??[],s=((f=(g=r==null?void 0:r.model)==null?void 0:g.referenceInferences)==null?void 0:f.events)??[],c=((b=(C=r==null?void 0:r.model)==null?void 0:C.corpusInferences)==null?void 0:b.events)??[];return[...o,...s,...c].reduce((k,P)=>(k[P.id]=P,k),{})}async function Ir({metric:n,points:t,hdbscanParameters:a}){const i=await N.fetchQuery(qe,gt,{eventIds:t.map(r=>r.eventId),coordinates:t.map(r=>({x:r.position[0],y:r.position[1],z:r.position[2]})),fetchDataQualityMetric:n.type==="dataQuality",dataQualityMetricColumnName:n.type==="dataQuality"?n.dimension.name:null,fetchPerformanceMetric:n.type==="performance",performanceMetric:n.type==="performance"?n.metric:"accuracyScore",...a},{fetchPolicy:"network-only"}).toPromise();return(i==null?void 0:i.hdbscanClustering)??[]}async function Ar({metric:n,clusters:t,hdbscanParameters:a}){const i=await N.fetchQuery(qe,pt,{clusters:t.map(r=>({id:r.id,eventIds:r.eventIds})),fetchDataQualityMetric:n.type==="dataQuality",dataQualityMetricColumnName:n.type==="dataQuality"?n.dimension.name:null,fetchPerformanceMetric:n.type==="performance",performanceMetric:n.type==="performance"?n.metric:"accuracyScore",...a},{fetchPolicy:"network-only"}).toPromise();return(i==null?void 0:i.clusters)??[]}const z1=n=>(t,a)=>{const{dir:i,column:r}=n,o=i==="asc",s=t[r],c=a[r];return s==null?1:c==null?-1:s>c?o?1:-1:s<c?o?-1:1:0};function In(n){let t=n.driftRatio,a=null;return n.dataQualityMetric?(t=n.dataQualityMetric.primaryValue,a=n.dataQualityMetric.referenceValue):n.performanceMetric?(t=n.performanceMetric.primaryValue,a=n.performanceMetric.referenceValue):n.primaryToCorpusRatio!=null&&(t=(n.primaryToCorpusRatio+1)/2*100),{...n,size:n.eventIds.length,primaryMetricValue:t,referenceMetricValue:a}}const Ac=n=>{const t=a=>({...n,columnVisibility:{metadata:!1},annotationColumnVisibility:{},setColumnVisibility:i=>{a({columnVisibility:i})},setAnnotationColumnVisibility:i=>{a({annotationColumnVisibility:i})}});return Be()($e(t))},se={NONE:"NONE",FString:"F_STRING",Mustache:"MUSTACHE"},zc={OPENAI:"OpenAI",AZURE_OPENAI:"Azure OpenAI",ANTHROPIC:"Anthropic",GEMINI:"Gemini"},zt="OPENAI",zr="gpt-4o",Er="user",Ec=["2024-10-01-preview","2024-09-01-preview","2024-08-01-preview","2024-07-01-preview","2024-06-01","2024-05-01-preview","2024-04-01-preview","2024-03-01-preview","2024-02-15-preview","2024-02-01","2023-10-01-preview","2023-09-01-preview","2023-08-01-preview","2023-07-01-preview","2023-06-01-preview","2023-05-15","2023-03-15-preview"],Et=({parser:n,text:t})=>{const a=n.parse(t),i=[],r=a.cursor();do r.name==="Variable"&&i.push(t.slice(r.node.from,r.node.to));while(r.next());return i},Vt=({parser:n,text:t,variables:a,postFormat:i})=>{if(!t)return"";let r=t,o=n.parse(r),s=o.cursor();do if(s.name==="Variable"){const c=r.slice(s.node.from,s.node.to),d=s.node.parent;c in a&&(r=`${r.slice(0,d.from)}${a[c]}${r.slice(d.to)}`,o=n.parse(r),s=o.cursor())}while(s.next());return i&&(r=i(r)),r},Vr=Un.deserialize({version:14,states:"!WQQOPOOOcOQO'#C^OOOO'#Cb'#CbQQOPOOOOOO'#Cc'#CcOhOQO,58xOOOO-E6`-E6`OOOO-E6a-E6aOOOO1G.d1G.d",stateData:"v~ORPOXQOYQOZQO[QO~OSSO~OSSOTWO~OZRX[X~",goto:"iWPPXPPP]cTQORQRORURQTPRVT",nodeNames:"⚠ FStringTemplate Template LBrace Variable RBrace",maxTerm:12,skippedNodes:[0],repeatNodeCount:2,tokenData:"%[~RaXY!WYZ!W]^!Wpq!Wqr!Wrs!]sw!Wwx!bx#O!W#O#P!i#P#o!W#o#p$c#p#q!W#q#r$|#r;'S!W;'S;=`%U<%lO!W~!]OX~~!bO[~~!iOX~[~~!lYrs!W!P!Q!W#O#P!W#U#V!W#Y#Z!W#b#c!W#f#g!W#h#i!W#i#j#[#o#p$^~#_R!Q![#h!c!i#h#T#Z#h~#kR!Q![#t!c!i#t#T#Z#t~#wR!Q![$Q!c!i$Q#T#Z$Q~$TR!Q![!W!c!i!W#T#Z!W~$cOZ~~$jQR~X~#o#p$p#q#r$w~$wOZ~[~~$|OY~~%RPX~#q#r!]~%XP;=`<%l!W",tokenizers:[1,new jn("!p~RVO#Oh#O#P!P#P#qh#q#r!j#r;'Sh;'S;=`y<%lOh~mSS~O#qh#r;'Sh;'S;=`y<%lOh~|P;=`<%lh~!UTS~O#qh#q#r!e#r;'Sh;'S;=`y<%lOh~!jOS~~!oOT~~",77)],topRules:{FStringTemplate:[0,1]},tokenPrec:32}),rn=ct.define({parser:Vr.configure({props:[Qn({"Template/LBrace":oe.quote,"Template/RBrace":oe.quote,"Template/Variable":oe.variableName,"⚠":oe.invalid})]}),languageData:{}}),Dr=({text:n,variables:t})=>Vt({parser:rn.parser,text:n,variables:t,postFormat:a=>a.replaceAll("\\{","{").replaceAll("{{","{").replaceAll("}}","}")}),Pr=n=>Et({parser:rn.parser,text:n});function Or(){return new dt(rn)}const _r=Un.deserialize({version:14,states:"!WQQOPOOOcOQO'#C^OOOO'#Cb'#CbQQOPOOOOOO'#Cc'#CcOhOQO,58xOOOO-E6`-E6`OOOO-E6a-E6aOOOO1G.d1G.d",stateData:"v~ORPOXQOYQOZQO[QO~OSSO~OSSOTWO~OZRX[X~",goto:"iWPPXPPP]cTQORQRORURQTPRVT",nodeNames:"⚠ MustacheLikeTemplate Template LBrace Variable RBrace",maxTerm:12,skippedNodes:[0],repeatNodeCount:2,tokenData:"%W~RaXY!WYZ!W]^!Wpq!Wqr!Wrs!]sw!Wwx!bx#O!W#O#P!i#P#o!W#o#p$c#p#q!W#q#r!b#r;'S!W;'S;=`%Q<%lO!W~!]OX~~!bO[~~!iOX~[~~!lYrs!W!P!Q!W#O#P!W#U#V!W#Y#Z!W#b#c!W#f#g!W#h#i!W#i#j#[#o#p$^~#_R!Q![#h!c!i#h#T#Z#h~#kR!Q![#t!c!i#t#T#Z#t~#wR!Q![$Q!c!i$Q#T#Z$Q~$TR!Q![!W!c!i!W#T#Z!W~$cOZ~~$jPX~[~#o#p$m~$rPR~#q#r$u~$xP#q#r${~%QOY~~%TP;=`<%l!W",tokenizers:[1,new jn("#e~RVO#oh#o#p!P#p#qh#q#r#X#r;'Sh;'S;=`y<%lOh~mSS~O#qh#r;'Sh;'S;=`y<%lOh~|P;=`<%lh~!USS~O#q!b#r;'S!b;'S;=`#R<%lO!b~!gVS~O#O!b#O#P!b#P#q!b#q#r!|#r;'S!b;'S;=`#R<%lO!b~#ROS~~#UP;=`<%l!b~#[P#q#r#_~#dOT~~",112)],topRules:{MustacheLikeTemplate:[0,1]},tokenPrec:32}),on=ct.define({parser:_r.configure({props:[Qn({"Template/LBrace":oe.quote,"Template/RBrace":oe.quote,"Template/Variable":oe.variableName,"Template/⚠":oe.invalid})]}),languageData:{}}),Fr=({text:n,variables:t})=>Vt({parser:on.parser,text:n,variables:t,postFormat:a=>a.replaceAll("\\{{","{{")}),Nr=n=>Et({parser:on.parser,text:n});function Rr(){return new dt(on)}const Vc=n=>{switch(n){case se.FString:return{format:Dr,extractVariables:Pr};case se.Mustache:return{format:Fr,extractVariables:Nr};case se.NONE:return{format:({text:t})=>t,extractVariables:()=>[]};default:D()}},Hr=w.union([w.string(),w.number(),w.boolean(),w.null()]),s1=w.lazy(()=>w.union([Hr,w.array(s1),w.record(s1)])),An=w.object({type:w.enum(["string","number","boolean","object","array","null","integer"]).describe("The type of the parameter"),description:w.string().optional().describe("A description of the parameter"),enum:w.array(w.string()).optional().describe("The allowed values")}).passthrough().describe("A map of parameter names to their definitions"),Dt=w.object({type:w.literal("object"),properties:w.record(w.union([An,w.object({anyOf:w.array(An)}).describe("A list of possible parameter names to their definitions")])),required:w.array(w.string()).optional().describe("The required parameters"),additionalProperties:w.boolean().optional().describe("Whether or not additional properties are allowed in the schema")}).passthrough(),b1=w.object({type:w.literal("function").describe("The type of the tool"),function:w.object({name:w.string().describe("The name of the function"),description:w.string().optional().describe("A description of the function"),parameters:Dt.extend({strict:w.boolean().optional().describe("Whether or not the arguments should exactly match the function definition, only supported for OpenAI models")}).describe("The parameters that the function accepts")}).passthrough().describe("The function definition")}).passthrough(),Dc=u1(b1,{removeAdditionalStrategy:"passthrough"}),L1=w.object({name:w.string(),description:w.string(),input_schema:Dt}),Pc=u1(L1,{removeAdditionalStrategy:"passthrough"}),Kr=L1.transform(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.input_schema}})),Br=b1.transform(n=>({name:n.function.name,description:n.function.description??n.function.name,input_schema:n.function.parameters})),Oc=w.union([b1,L1,s1]),$r=n=>{const{success:t,data:a}=b1.safeParse(n);if(t)return{provider:"OPENAI",validatedToolDefinition:a};const{success:i,data:r}=L1.safeParse(n);return i?{provider:"ANTHROPIC",validatedToolDefinition:r}:{provider:"UNKNOWN",validatedToolDefinition:null}},zn=n=>{const{provider:t,validatedToolDefinition:a}=$r(n);switch(t){case"AZURE_OPENAI":case"OPENAI":return a;case"ANTHROPIC":return Kr.parse(a);case"UNKNOWN":return null;default:D()}},Zr=({toolDefinition:n,targetProvider:t})=>{switch(t){case"AZURE_OPENAI":case"OPENAI":return n;case"ANTHROPIC":return Br.parse(n);case"GEMINI":return n;default:D()}};function _c(n){return{type:"function",function:{name:`new_function_${n}`,description:"",parameters:{type:"object",properties:{new_arg:{type:"string"}},required:[]}}}}function Fc(n){return{name:`new_function_${n}`,description:"",input_schema:{type:"object",properties:{new_arg:{type:"string"}},required:[]}}}const v1=w.object({id:w.string().describe("The ID of the tool call"),function:w.object({name:w.string().describe("The name of the function"),arguments:w.record(w.unknown()).describe("The arguments for the function")}).describe("The function that is being called").passthrough()}),Gr=w.array(v1),Nc=u1(Gr,{removeAdditionalStrategy:"passthrough"}),y1=w.object({id:w.string().describe("The ID of the tool call"),type:w.literal("tool_use"),name:w.string().describe("The name of the tool"),input:w.record(w.unknown()).describe("The input for the tool")}).passthrough(),Wr=w.array(y1),Rc=u1(Wr,{removeAdditionalStrategy:"passthrough"}),Ur=y1.transform(n=>({id:n.id,function:{name:n.name,arguments:n.input}})),jr=v1.transform(n=>({id:n.id,type:"tool_use",name:n.function.name,input:typeof n.function.arguments=="string"?{[n.function.arguments]:n.function.arguments}:n.function.arguments??{}})),Qr=w.union([v1,y1,s1]),Hc=w.array(Qr),qr=n=>{const{success:t,data:a}=v1.safeParse(n);if(t)return{provider:"OPENAI",validatedToolCall:a};const{success:i,data:r}=y1.safeParse(n);return i?{provider:"ANTHROPIC",validatedToolCall:r}:{provider:"UNKNOWN",validatedToolCall:null}},En=n=>{const{provider:t,validatedToolCall:a}=qr(n);switch(t){case"AZURE_OPENAI":case"OPENAI":return a;case"ANTHROPIC":return Ur.parse(a);case"UNKNOWN":return null;default:D()}},Xr=({toolCall:n,targetProvider:t})=>{switch(t){case"AZURE_OPENAI":case"OPENAI":return n;case"ANTHROPIC":return jr.parse(n);case"GEMINI":return n;default:D()}};function Kc(){return{id:"",function:{name:"",arguments:{}}}}function Bc(){return{id:"",type:"tool_use",name:"",input:{}}}function Yr({str:n,excludePrimitives:t=!1,excludeArray:a=!1}){try{const i=JSON.parse(n);if(t&&typeof i!="object"||a&&Array.isArray(i))return!1}catch{return!1}return!0}function Jr(n){return Yr({str:n,excludeArray:!0,excludePrimitives:!0})}function $c(n){try{return{json:JSON.parse(n)}}catch(t){return{json:null,parseError:t}}}function Zc(...n){try{return{json:JSON.stringify(...n)}}catch(t){return{json:null,stringifyError:t}}}const e2=({instanceTools:n,provider:t})=>n.map(a=>{switch(t){case"OPENAI":case"AZURE_OPENAI":{const i=zn(a.definition);return{...a,definition:i??a.definition}}case"ANTHROPIC":{const i=zn(a.definition),r=i?Zr({toolDefinition:i,targetProvider:t}):a.definition;return{...a,definition:r}}case"GEMINI":return a;default:D()}}),n2=({toolCalls:n,provider:t})=>{if(n!=null)return n.map(a=>{switch(t){case"OPENAI":case"AZURE_OPENAI":return En(a)??a;case"ANTHROPIC":{const i=En(a);return i!=null?Xr({toolCall:i,targetProvider:t}):a}case"GEMINI":return a;default:D()}})};let t2=0,a2=0,i2=1,r2=0;const Pt=()=>t2++,Vn=()=>i2++,Gc=()=>r2++,o2=()=>a2++,Ot=()=>({__type:"chat",messages:[{id:Vn(),role:"system",content:"You are a chatbot"},{id:Vn(),role:"user",content:"{{question}}"}]}),l2={__type:"text_completion",prompt:"{{question}}"};function s2(){return{id:Pt(),template:Ot(),model:{provider:zt,modelName:zr,invocationParameters:[],supportedInvocationParameters:[]},tools:[],toolChoice:"auto",output:void 0,spanId:null,activeRunId:null}}function Wc(){return{type:"json_schema",json_schema:{name:"response",schema:{type:"object",properties:{},required:[],additionalProperties:!1},strict:!0}}}function c2(n){if(n.instances!=null&&n.instances.length>0)return n.instances;const t=s2(),a=Object.values(n.modelConfigByProvider);if(!(a.length>0))return[t];const r=a.find(o=>o.provider===zt)??a[0];return t.model={...t.model,...r},[t]}const Uc=n=>Be($e((a,i)=>({streaming:!0,operationType:"chat",inputMode:"manual",input:{variablesValueCache:{}},templateLanguage:se.Mustache,instances:c2(n),setInput:r=>{a({input:r})},setOperationType:r=>{a(r==="chat"?{instances:i().instances.map(o=>({...o,template:Ot()}))}:{instances:i().instances.map(o=>({...o,template:l2}))}),a({operationType:r})},addInstance:()=>{const r=i().instances,o=i().instances[0];o&&a({instances:[...r,{...o,id:Pt(),activeRunId:null,experimentId:null,spanId:null}]})},updateModelSupportedInvocationParameters:({instanceId:r,supportedInvocationParameters:o})=>{const s=i().instances;a({instances:s.map(c=>c.id===r?{...c,model:{...c.model,supportedInvocationParameters:o,invocationParameters:Mi(c.model.invocationParameters,o)},tools:o.find(d=>d.canonicalName===Ti)?c.tools:[]}:c)})},updateProvider:({instanceId:r,provider:o,modelConfigByProvider:s})=>{const c=i().instances,d=c.find(g=>g.id===r);if(!d||d.model.provider===o)return;const u=s[o],p={model:u?{...u,supportedInvocationParameters:[],provider:o}:{modelName:null,baseUrl:null,invocationParameters:[],supportedInvocationParameters:[],apiVersion:null,endpoint:null,provider:o},tools:e2({instanceTools:d.tools,provider:o})};d.template.__type==="chat"&&(p.template={__type:"chat",messages:d.template.messages.map(g=>({...g,toolCalls:n2({toolCalls:g.toolCalls,provider:o})}))}),a({instances:c.map(g=>g.id===r?{...g,...p}:g)})},updateModel:({instanceId:r,patch:o})=>{const s=i().instances;s.find(d=>d.id===r)&&a({instances:s.map(d=>d.id===r?{...d,model:{...d.model,...o}}:d)})},deleteInstance:r=>{const o=i().instances;a({instances:o.filter(s=>s.id!==r)})},addMessage:({playgroundInstanceId:r})=>{const o=i().instances;a({instances:o.map(s=>s.id===r&&(s!=null&&s.template)&&(s==null?void 0:s.template.__type)==="chat"?{...s,messages:[...s.template.messages,{role:Er,content:"{question}"}]}:s)})},updateInstance:({instanceId:r,patch:o})=>{const s=i().instances;a({instances:s.map(c=>c.id===r?{...c,...o}:c)})},runPlaygroundInstances:()=>{const r=i().instances;a({instances:r.map(o=>({...o,activeRunId:o2(),spanId:null}))})},cancelPlaygroundInstances:()=>{a({instances:i().instances.map(r=>({...r,activeRunId:null,spanId:null}))})},markPlaygroundInstanceComplete:r=>{const o=i().instances;a({instances:o.map(s=>s.id===r?{...s,activeRunId:null}:s)})},setTemplateLanguage:r=>{a({templateLanguage:r})},setVariableValue:(r,o)=>{const s=i().input;a({input:{...s,variablesValueCache:{...s.variablesValueCache,[r]:o}}})},setStreaming:r=>{a({streaming:r})},updateInstanceModelInvocationParameters:({instanceId:r,invocationParameters:o})=>{i().instances.find(c=>c.id===r)&&a({instances:i().instances.map(c=>c.id===r?{...c,model:{...c.model,invocationParameters:o}}:c)})},upsertInvocationParameterInput:({instanceId:r,invocationParameterInput:o})=>{const s=i().instances.find(d=>d.id===r);if(!s)return;const c=s.model.invocationParameters.find(d=>fn(d,o));a(c?{instances:i().instances.map(d=>d.id===r?{...d,model:{...d.model,invocationParameters:d.model.invocationParameters.map(u=>fn(u,o)?o:u)}}:d)}:{instances:i().instances.map(d=>d.id===r?{...d,model:{...d.model,invocationParameters:[...d.model.invocationParameters,o]}}:d)})},deleteInvocationParameterInput:({instanceId:r,invocationParameterInputInvocationName:o})=>{i().instances.find(c=>c.id===r)&&a({instances:i().instances.map(c=>c.id===r?{...c,model:{...c.model,invocationParameters:c.model.invocationParameters.filter(d=>d.invocationName!==o)}}:c)})},...n}))),jc=n=>{const t=a=>({setCredential:({provider:i,value:r})=>{a({[i]:r})},...n});return Be()(qn($e(t),{name:"arize-phoenix-credentials"}))};function _t(n){return e("div",{onClick:t=>t.stopPropagation(),css:m`
147
+ `}}}();Ct.hash="e8fa488a0d466b5e40fdadc1e5227a57";const qi=30,bn=5,Ln=100,Xi=0,vn=0,yn=.99,Yi=500,wn=300,kn=1e5,Ji=10,Sn=1,er=2,nr=1,tr=0;var z=(n=>(n.inferences="inferences",n.correctness="correctness",n.dimension="dimension",n))(z||{}),Ae=(n=>(n.list="list",n.gallery="gallery",n))(Ae||{}),Ie=(n=>(n.small="small",n.medium="medium",n.large="large",n))(Ie||{}),E=(n=>(n.primary="primary",n.reference="reference",n.corpus="corpus",n))(E||{}),H=(n=>(n.correct="correct",n.incorrect="incorrect",n.unknown="unknown",n))(H||{});const ar=["#05fbff","#cb8afd"],ir=["#00add0","#4500d9"],le="#a5a5a5",xe=le;var ee=(n=>(n.primary="primary",n.reference="reference",n.corpus="corpus",n))(ee||{});function D(n){throw new Error("Unreachable")}function X1(n){return typeof n=="number"||n===null}function rr(n){return typeof n=="string"||n===null}function hc(n){return Array.isArray(n)?n.every(t=>typeof t=="string"):!1}function Y1(n){return typeof n=="object"&&n!==null}function pc(n){return Y1(n)&&Object.keys(n).every(t=>typeof t=="string")}const gc=()=>n=>n,J1=h.createContext(null);function f1(){const n=G.useContext(J1);if(n===null)throw new Error("useInferences must be used within a InferencesProvider");return n}function fc(n){return e(J1.Provider,{value:{primaryInferences:n.primaryInferences,referenceInferences:n.referenceInferences,corpusInferences:n.corpusInferences,getInferencesNameByRole:t=>{var a,i;switch(t){case ee.primary:return n.primaryInferences.name;case ee.reference:return((a=n.referenceInferences)==null?void 0:a.name)??"reference";case ee.corpus:return((i=n.corpusInferences)==null?void 0:i.name)??"corpus";default:D()}}},children:n.children})}const en=h.createContext(null);function Cc({children:n,...t}){const[a]=h.useState(()=>Sr(t));return e(en.Provider,{value:a,children:n})}function y(n,t){const a=h.useContext(en);if(!a)throw new Error("Missing PointCloudContext.Provider in the tree");return Wn(a,n,t)}var X=(n=>(n.last_hour="Last Hour",n.last_day="Last Day",n.last_week="Last Week",n.last_month="Last Month",n.last_3_months="Last 3 Months",n.first_hour="First Hour",n.first_day="First Day",n.first_week="First Week",n.first_month="First Month",n.all="All",n))(X||{});const bt=h.createContext(null);function or(){const n=h.useContext(bt);if(n===null)throw new Error("useTimeRange must be used within a TimeRangeProvider");return n}function lr(n,t){return h.useMemo(()=>{switch(n){case"Last Hour":{const i=we(Fa(t.end),{roundingMethod:"ceil"});return{start:R1(i,1),end:i}}case"Last Day":{const i=we(_a(t.end),{roundingMethod:"ceil"});return{start:ge(i,1),end:i}}case"Last Week":{const i=we(Xe(t.end),{roundingMethod:"ceil"});return{start:ge(i,7),end:i}}case"Last Month":{const i=we(Xe(t.end),{roundingMethod:"ceil"});return{start:ge(i,30),end:i}}case"Last 3 Months":{const i=we(Xe(t.end),{roundingMethod:"ceil"});return{start:ge(i,90),end:i}}case"First Hour":{const i=N1(t.start);return{start:i,end:Oa(i,1)}}case"First Day":{const i=ke(t.start);return{start:i,end:e1(i,1)}}case"First Week":{const i=T1(t.start);return{start:i,end:e1(i,7)}}case"First Month":{const i=T1(t.start);return{start:i,end:e1(i,30)}}case"All":{const i=we(Xe(t.end),{roundingMethod:"floor"});return{start:T1(t.start),end:i}}default:D()}},[n,t])}function bc(n){const[t,a]=h.useState("Last Month"),i=lr(t,n.timeRangeBounds),r=h.useCallback(o=>{h.startTransition(()=>{a(o)})},[]);return e(bt.Provider,{value:{timeRange:i,timePreset:t,setTimePreset:r},children:n.children})}const Lt=h.createContext(null);function Lc({children:n}){const[t,a]=Ai({style:{zIndex:1e3}}),i=h.useCallback(o=>{t({variant:"danger",...o})},[t]),r=h.useCallback(o=>{t({variant:"success",...o})},[t]);return l(Lt.Provider,{value:{notify:t,notifyError:i,notifySuccess:r},children:[n,a]})}function vt(){const n=h.useContext(Lt);if(n===null)throw new Error("useGlobalNotification must be used within a NotificationProvider");return n}function vc(){return vt().notifyError}function C1(){return vt().notifySuccess}const yt="arize-phoenix-theme";function wt(){return localStorage.getItem(yt)==="light"?"light":"dark"}const nn=h.createContext(null);function Q(){const n=h.useContext(nn);if(n===null)throw new Error("useTheme must be used within a ThemeProvider");return n}function yc(n){const[t,a]=h.useState(wt()),i=h.useCallback(r=>{localStorage.setItem(yt,r),a(r)},[]);return e(nn.Provider,{value:{theme:t,setTheme:i},children:n.children})}function sr(n){return n.endsWith("/")?n.slice(0,-1):n}const kt=sr(window.Config.basename),cr=window.location.protocol==="https:",Qe=`${window.location.protocol}//${window.location.host}${kt}`,dr=`${cr?"wss":"ws"}://${window.location.host}${kt}`,wc=window.Config.platformVersion,Re="returnUrl";function xn(n,t){const a=new URL(n,window.location.origin);return t.forEach((i,r)=>{a.searchParams.append(r,i)}),a.pathname+a.search}function ur(){const n=window.Config.basename,t=n==null||n===""||n==="/",a=n!=null&&n.startsWith("/")&&!n.endsWith("/");if(!(t||a))throw new Error(`Invalid basename: ${n}`);const i=window.location.pathname,r=window.location.origin,o=new URLSearchParams(window.location.search);if(t){const s=new URL("/login",r);return s.searchParams.set(Re,xn(i,o)),s.pathname+s.search}if(i.startsWith(n)){const s=i.slice(n.length);if(s===""||s.startsWith("/")){const d=new URL(n+"/login",r);return d.searchParams.set(Re,xn(s,o)),d.pathname+d.search}}return n+"/login"}function kc(n){const t=window.Config.basename,a=t==null||t===""||t==="/",i=t!=null&&t.startsWith("/")&&!t.endsWith("/");if(!(a||i))throw new Error(`Invalid basename: ${t}`);return a?n:t+n}const Sc=({path:n,searchParams:t})=>{const i=new URL(window.location.href).searchParams.get(Re),r=new URLSearchParams(t||{});i&&r.set(Re,i);const o=r.toString();return`${n}${o?`?${o}`:""}`},mr=n=>!(typeof n!="string"||!n.startsWith("/")||n.replace(/\\/g,"/").startsWith("//")),hr=n=>mr(n)?n:"/",xc=()=>{const n=new URL(window.location.href);return hr(n.searchParams.get(Re))},pr=Qe+"/auth/refresh";class Mn extends Error{constructor(){super("Unauthorized")}}async function gr(n,t){try{return await fetch(n,t).then(a=>{if(a.status===401)throw new Mn;return a})}catch(a){if(a instanceof Mn)return await St(),fetch(n,t);if(a instanceof Error&&a.name==="AbortError")throw a}throw new Error("An unexpected error occurred while fetching data")}let Oe=null;async function St(){return Oe||(Oe=fetch(pr,{method:"POST"}).then(n=>(n.ok||(window.location.href=ur()),Oe=null,n)),Oe)}const fr=Qe+"/graphql",xt=window.Config.authenticationEnabled,Cr=xt?gr:fetch;function br(n,t,a){return Se.Observable.create(i=>{const r=new AbortController;return Cr(n,{...t,signal:r.signal}).then(o=>o.json()).then(o=>{const s=a==null?void 0:a(o);if(s)throw s;i.next(o),i.complete()}).catch(o=>{o.name==="AbortError"?i.complete():i.error(o)}),()=>{r.abort()}})}const Lr=(n,t,a)=>br(fr,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:n.text,variables:t})},i=>{if(!(!Y1(i)||!("errors"in i))&&Array.isArray(i.errors))return new Error(`Error fetching GraphQL query '${n.name}' with variables '${JSON.stringify(t)}': ${JSON.stringify(i.errors)}`)}),vr=Na({url:`${dr}/graphql`,shouldRetry:n=>xt&&n instanceof Event&&n.type==="error"?(St(),!0):!1}),yr=(n,t)=>Se.Observable.create(a=>vr.subscribe({operationName:n.name,query:n.text,variables:t},a)),qe=new Se.Environment({network:Se.Network.create(Lr,yr),store:new Se.Store(new Se.RecordSource,{gcReleaseBufferSize:10})});function Mt(n){return n.includes("PRIMARY")?ee.primary:n.includes("CORPUS")?ee.corpus:ee.reference}function tn(n){const t=[],a=[],i=[];return n.forEach(r=>{const o=Mt(r);o==ee.primary?t.push(r):o==ee.corpus?i.push(r):a.push(r)}),{primaryEventIds:t,referenceEventIds:a,corpusEventIds:i}}const l1=10,Fe="unknown",Tt=Ha,It=Ra,wr=n=>It[n],kr=n=>Tt(n/l1);var ze=(n=>(n.move="move",n.select="select",n))(ze||{}),an=(n=>(n.default="default",n.highlight="highlight",n))(an||{});const Me=()=>wt()==="light"?ir:ar;function Mc(){const n=Me();return{coloringStrategy:z.inferences,pointGroupVisibility:{[E.primary]:!0,[E.reference]:!0},pointGroupColors:{[E.primary]:n[0],[E.reference]:n[1],[E.corpus]:le},metric:{type:"drift",metric:"euclideanDistance"}}}function Tc(){const n=Me();return{coloringStrategy:z.inferences,pointGroupVisibility:{[E.primary]:!0,[E.corpus]:!0},pointGroupColors:{[E.primary]:n[0],[E.corpus]:le},metric:{type:"retrieval",metric:"queryDistance"},clusterSort:{dir:"desc",column:"primaryMetricValue"}}}function Ic(){return{coloringStrategy:z.correctness,pointGroupVisibility:{[H.correct]:!0,[H.incorrect]:!0,[H.unknown]:!0},pointGroupColors:{[H.correct]:t1.Discrete2.LightBlueOrange[0],[H.incorrect]:t1.Discrete2.LightBlueOrange[1],[H.unknown]:xe},metric:{type:"performance",metric:"accuracyScore"},clusterSort:{dir:"asc",column:"primaryMetricValue"}}}const Sr=n=>{const t={loading:!1,errorMessage:null,points:[],eventIdToDataMap:new Map,clusters:[],clusterSort:{dir:"desc",column:"driftRatio"},pointData:null,selectedEventIds:new Set,hoveredEventId:null,highlightedClusterId:null,selectedClusterId:null,canvasMode:"move",pointSizeScale:1,clusterColorMode:"default",coloringStrategy:z.inferences,inferencesVisibility:{primary:!0,reference:!0,corpus:!0},pointGroupVisibility:{[E.primary]:!0,[E.reference]:!0,[E.corpus]:!0},pointGroupColors:{[E.primary]:Me()[0],[E.reference]:Me()[1],[E.corpus]:le},eventIdToGroup:{},selectionDisplay:Ae.gallery,selectionGridSize:Ie.large,dimension:null,dimensionMetadata:null,umapParameters:{minDist:Xi,nNeighbors:qi,nSamples:Yi},hdbscanParameters:{minClusterSize:Ji,clusterMinSamples:nr,clusterSelectionEpsilon:tr},clustersLoading:!1,metric:{type:"drift",metric:"euclideanDistance"},selectionSearchText:""},a=(i,r)=>({...t,...n,setInitialData:async({points:o,clusters:s,retrievals:c})=>{const d=r(),u=new Map,p=c.reduce((C,b)=>{const{queryId:k}=b;return C[k]?C[k].push(b):C[k]=[b],C},{});o.forEach(C=>{C={...C,retrievals:p[C.eventId]??[]},u.set(C.eventId,C)});const g=s.map(In).sort(z1(d.clusterSort));i({loading:!1,points:o,eventIdToDataMap:u,clusters:g,clustersLoading:!1,selectedEventIds:new Set,selectedClusterId:null,pointData:null,eventIdToGroup:pe({points:o,coloringStrategy:d.coloringStrategy,pointsData:d.pointData??{},dimension:d.dimension||null,dimensionMetadata:d.dimensionMetadata})});const f=await Tr(o.map(C=>C.eventId)).catch(()=>i({errorMessage:"Failed to load the point events"}));f&&i({pointData:f,clusters:g,clustersLoading:!1,eventIdToGroup:pe({points:o,coloringStrategy:d.coloringStrategy,pointsData:f??{},dimension:d.dimension||null,dimensionMetadata:d.dimensionMetadata})})},setClusters:o=>{const s=r(),c=o.map(In).sort(z1(s.clusterSort));i({clusters:c,clustersLoading:!1,selectedClusterId:null,highlightedClusterId:null})},setClusterSort:o=>{const c=[...r().clusters].sort(z1(o));i({clusterSort:o,clusters:c})},setSelectedEventIds:o=>i({selectedEventIds:o,selectionSearchText:""}),setHoveredEventId:o=>i({hoveredEventId:o}),setHighlightedClusterId:o=>i({highlightedClusterId:o}),setSelectedClusterId:o=>i({selectedClusterId:o,highlightedClusterId:null}),setPointSizeScale:o=>i({pointSizeScale:o}),setCanvasMode:o=>i({canvasMode:o}),setClusterColorMode:o=>i({clusterColorMode:o}),setColoringStrategy:o=>{const s=r();switch(i({coloringStrategy:o}),o){case z.correctness:i({pointGroupVisibility:{[H.correct]:!0,[H.incorrect]:!0,[H.unknown]:!0},pointGroupColors:{[H.correct]:t1.Discrete2.LightBlueOrange[0],[H.incorrect]:t1.Discrete2.LightBlueOrange[1],[H.unknown]:xe},dimension:null,dimensionMetadata:null,eventIdToGroup:pe({points:s.points,coloringStrategy:o,pointsData:s.pointData??{},dimension:s.dimension||null,dimensionMetadata:s.dimensionMetadata})});break;case z.inferences:{i({pointGroupVisibility:{[E.primary]:!0,[E.reference]:!0,[E.corpus]:!0},pointGroupColors:{[E.primary]:Me()[0],[E.reference]:Me()[1],[E.corpus]:le},dimension:null,dimensionMetadata:null,eventIdToGroup:pe({points:s.points,coloringStrategy:o,pointsData:s.pointData??{},dimension:s.dimension||null,dimensionMetadata:s.dimensionMetadata})});break}case z.dimension:{i({pointGroupVisibility:{unknown:!0},pointGroupColors:{unknown:xe},dimension:null,dimensionMetadata:null,eventIdToGroup:pe({points:s.points,coloringStrategy:o,pointsData:s.pointData??{},dimension:s.dimension||null,dimensionMetadata:s.dimensionMetadata})});break}default:D()}},inferencesVisibility:{primary:!0,reference:!0,corpus:!0},setInferencesVisibility:o=>i({inferencesVisibility:o}),setPointGroupVisibility:o=>i({pointGroupVisibility:o}),selectionDisplay:Ae.gallery,setSelectionDisplay:o=>i({selectionDisplay:o}),setSelectionGridSize:o=>i({selectionGridSize:o}),reset:()=>{i({points:[],clusters:[],selectedEventIds:new Set,selectedClusterId:null,eventIdToGroup:{}})},setDimension:async o=>{const s=r();i({dimension:o,dimensionMetadata:null});const c=await Mr(o).catch(()=>i({errorMessage:"Failed to load the dimension metadata"}));if(c){if(i({dimensionMetadata:c}),c.categories&&c.categories.length){const d=c.categories.length,p=d<=It.length?wr:g=>Tt(g/d);i({pointGroupVisibility:{...c.categories.reduce((g,f)=>({...g,[f]:!0}),{}),unknown:!0},pointGroupColors:{...c.categories.reduce((g,f,C)=>({...g,[f]:p(C)}),{}),unknown:xe},eventIdToGroup:pe({points:s.points,coloringStrategy:s.coloringStrategy,pointsData:s.pointData??{},dimension:o,dimensionMetadata:c})})}else if(c.interval!==null){const d=At(c.interval);i({pointGroupVisibility:{...d.reduce((u,p)=>({...u,[p.name]:!0}),{}),unknown:!0},pointGroupColors:{...d.reduce((u,p,g)=>({...u,[p.name]:kr(g)}),{}),unknown:xe},eventIdToGroup:pe({points:s.points,coloringStrategy:s.coloringStrategy,pointsData:s.pointData??{},dimension:o,dimensionMetadata:c})})}}},setDimensionMetadata:o=>i({dimensionMetadata:o}),setUMAPParameters:o=>i({umapParameters:o}),setHDBSCANParameters:async o=>{const s=r();i({hdbscanParameters:o,clustersLoading:!0});const c=await Ir({metric:s.metric,points:s.points,hdbscanParameters:o});s.setClusters(c)},getHDSCANParameters:()=>r().hdbscanParameters,getMetric:()=>r().metric,setErrorMessage:o=>i({errorMessage:o}),setLoading:o=>i({loading:o}),setMetric:async o=>{const s=r();i({metric:o,clustersLoading:!0});const c=await Ar({metric:o,clusters:s.clusters,hdbscanParameters:s.hdbscanParameters});s.setClusters(c)},setSelectionSearchText:o=>i({selectionSearchText:o})});return Be()($e(a))},Tn=new Intl.NumberFormat([],{maximumFractionDigits:2});function xr({min:n,max:t}){return`${Tn.format(n)} - ${Tn.format(t)}`}function At({min:n,max:t}){const i=(t-n)/l1,r=[];for(let o=0;o<l1;o++){const s=n+o*i,c=n+(o+1)*i;r.push({min:s,max:c,name:xr({min:s,max:c})})}return r}function A1({numericGroupIntervals:n,numericValue:t}){let a=Fe,i=n.findIndex(r=>t>=r.min&&t<r.max);return i=i===-1?l1-1:i,a=n[i].name,a}function pe(n){const{points:t,coloringStrategy:a,pointsData:i,dimension:r,dimensionMetadata:o}=n,s={},c=t.map(d=>d.eventId);switch(a){case z.inferences:{const{primaryEventIds:d,referenceEventIds:u,corpusEventIds:p}=tn(c);d.forEach(g=>{s[g]=E.primary}),u.forEach(g=>{s[g]=E.reference}),p.forEach(g=>{s[g]=E.corpus});break}case z.correctness:{t.forEach(d=>{let u=H.unknown;const{predictionLabel:p,actualLabel:g}=d.eventMetadata;p!==null&&g!==null&&(u=p===g?H.correct:H.incorrect),s[d.eventId]=u});break}case z.dimension:{let d;o&&(o==null?void 0:o.interval)!==null&&(d=At(o.interval));const u=(r==null?void 0:r.type)==="prediction"&&(r==null?void 0:r.dataType)==="categorical",p=(r==null?void 0:r.type)==="prediction"&&(r==null?void 0:r.dataType)==="numeric",g=(r==null?void 0:r.type)==="actual"&&(r==null?void 0:r.dataType)==="categorical",f=(r==null?void 0:r.type)==="actual"&&(r==null?void 0:r.dataType)==="numeric";t.forEach(C=>{let b=Fe;const k=i[C.eventId];if(r!=null&&k!=null)if(u)b=k.eventMetadata.predictionLabel??Fe;else if(p){if(d==null)throw new Error("Cannot color by prediction score without numeric group intervals");const S=k.eventMetadata.predictionScore;typeof S=="number"&&(b=A1({numericGroupIntervals:d,numericValue:S}))}else if(f){if(d==null)throw new Error("Cannot color by actual score without numeric group intervals");const S=k.eventMetadata.actualScore;typeof S=="number"&&(b=A1({numericGroupIntervals:d,numericValue:S}))}else if(g)b=k.eventMetadata.actualLabel??Fe;else{const S=k.dimensions.find(K=>K.dimension.name===r.name);if(S!=null&&r.dataType==="categorical")b=S.value??Fe;else if(S!=null&&r.dataType==="numeric"&&d!=null){const K=typeof(S==null?void 0:S.value)=="string"?parseFloat(S.value):null;typeof K=="number"&&(b=A1({numericGroupIntervals:d,numericValue:K}))}}s[C.eventId]=b});break}default:D()}return s}async function Mr(n){const t=await N.fetchQuery(qe,Ct,{id:n.id,getDimensionMinMax:n.dataType==="numeric",getDimensionCategories:n.dataType==="categorical"}).toPromise(),a=t==null?void 0:t.dimension;if(!n)throw new Error("Dimension not found");let i=null;return typeof(a==null?void 0:a.min)=="number"&&typeof(a==null?void 0:a.max)=="number"&&(i={min:a.min,max:a.max}),{interval:i,categories:(a==null?void 0:a.categories)??null}}async function Tr(n){var u,p,g,f,C,b;const{primaryEventIds:t,referenceEventIds:a,corpusEventIds:i}=tn([...n]),r=await N.fetchQuery(qe,ft,{primaryEventIds:t,referenceEventIds:a,corpusEventIds:i}).toPromise(),o=((p=(u=r==null?void 0:r.model)==null?void 0:u.primaryInferences)==null?void 0:p.events)??[],s=((f=(g=r==null?void 0:r.model)==null?void 0:g.referenceInferences)==null?void 0:f.events)??[],c=((b=(C=r==null?void 0:r.model)==null?void 0:C.corpusInferences)==null?void 0:b.events)??[];return[...o,...s,...c].reduce((k,P)=>(k[P.id]=P,k),{})}async function Ir({metric:n,points:t,hdbscanParameters:a}){const i=await N.fetchQuery(qe,gt,{eventIds:t.map(r=>r.eventId),coordinates:t.map(r=>({x:r.position[0],y:r.position[1],z:r.position[2]})),fetchDataQualityMetric:n.type==="dataQuality",dataQualityMetricColumnName:n.type==="dataQuality"?n.dimension.name:null,fetchPerformanceMetric:n.type==="performance",performanceMetric:n.type==="performance"?n.metric:"accuracyScore",...a},{fetchPolicy:"network-only"}).toPromise();return(i==null?void 0:i.hdbscanClustering)??[]}async function Ar({metric:n,clusters:t,hdbscanParameters:a}){const i=await N.fetchQuery(qe,pt,{clusters:t.map(r=>({id:r.id,eventIds:r.eventIds})),fetchDataQualityMetric:n.type==="dataQuality",dataQualityMetricColumnName:n.type==="dataQuality"?n.dimension.name:null,fetchPerformanceMetric:n.type==="performance",performanceMetric:n.type==="performance"?n.metric:"accuracyScore",...a},{fetchPolicy:"network-only"}).toPromise();return(i==null?void 0:i.clusters)??[]}const z1=n=>(t,a)=>{const{dir:i,column:r}=n,o=i==="asc",s=t[r],c=a[r];return s==null?1:c==null?-1:s>c?o?1:-1:s<c?o?-1:1:0};function In(n){let t=n.driftRatio,a=null;return n.dataQualityMetric?(t=n.dataQualityMetric.primaryValue,a=n.dataQualityMetric.referenceValue):n.performanceMetric?(t=n.performanceMetric.primaryValue,a=n.performanceMetric.referenceValue):n.primaryToCorpusRatio!=null&&(t=(n.primaryToCorpusRatio+1)/2*100),{...n,size:n.eventIds.length,primaryMetricValue:t,referenceMetricValue:a}}const Ac=n=>{const t=a=>({...n,columnVisibility:{metadata:!1},annotationColumnVisibility:{},setColumnVisibility:i=>{a({columnVisibility:i})},setAnnotationColumnVisibility:i=>{a({annotationColumnVisibility:i})}});return Be()($e(t))},se={NONE:"NONE",FString:"F_STRING",Mustache:"MUSTACHE"},zc={OPENAI:"OpenAI",AZURE_OPENAI:"Azure OpenAI",ANTHROPIC:"Anthropic",GEMINI:"Gemini"},zt="OPENAI",zr="gpt-4o",Er="user",Ec=["2024-10-01-preview","2024-09-01-preview","2024-08-01-preview","2024-07-01-preview","2024-06-01","2024-05-01-preview","2024-04-01-preview","2024-03-01-preview","2024-02-15-preview","2024-02-01","2023-10-01-preview","2023-09-01-preview","2023-08-01-preview","2023-07-01-preview","2023-06-01-preview","2023-05-15","2023-03-15-preview"],Et=({parser:n,text:t})=>{const a=n.parse(t),i=[],r=a.cursor();do if(r.name==="Variable"){const o=t.slice(r.node.from,r.node.to).trim();i.push(o)}while(r.next());return i},Vt=({parser:n,text:t,variables:a,postFormat:i})=>{if(!t)return"";let r=t,o=n.parse(r),s=o.cursor();do if(s.name==="Variable"){const c=r.slice(s.node.from,s.node.to).trim(),d=s.node.parent;c in a&&(r=`${r.slice(0,d.from)}${a[c]}${r.slice(d.to)}`,o=n.parse(r),s=o.cursor())}while(s.next());return i&&(r=i(r)),r},Vr=Un.deserialize({version:14,states:"!WQQOPOOOcOQO'#C^OOOO'#Cb'#CbQQOPOOOOOO'#Cc'#CcOhOQO,58xOOOO-E6`-E6`OOOO-E6a-E6aOOOO1G.d1G.d",stateData:"v~ORPOXQOYQOZQO[QO~OSSO~OSSOTWO~OZRX[X~",goto:"iWPPXPPP]cTQORQRORURQTPRVT",nodeNames:"⚠ FStringTemplate Template LBrace Variable RBrace",maxTerm:12,skippedNodes:[0],repeatNodeCount:2,tokenData:"%[~RaXY!WYZ!W]^!Wpq!Wqr!Wrs!]sw!Wwx!bx#O!W#O#P!i#P#o!W#o#p$c#p#q!W#q#r$|#r;'S!W;'S;=`%U<%lO!W~!]OX~~!bO[~~!iOX~[~~!lYrs!W!P!Q!W#O#P!W#U#V!W#Y#Z!W#b#c!W#f#g!W#h#i!W#i#j#[#o#p$^~#_R!Q![#h!c!i#h#T#Z#h~#kR!Q![#t!c!i#t#T#Z#t~#wR!Q![$Q!c!i$Q#T#Z$Q~$TR!Q![!W!c!i!W#T#Z!W~$cOZ~~$jQR~X~#o#p$p#q#r$w~$wOZ~[~~$|OY~~%RPX~#q#r!]~%XP;=`<%l!W",tokenizers:[1,new jn("!p~RVO#Oh#O#P!P#P#qh#q#r!j#r;'Sh;'S;=`y<%lOh~mSS~O#qh#r;'Sh;'S;=`y<%lOh~|P;=`<%lh~!UTS~O#qh#q#r!e#r;'Sh;'S;=`y<%lOh~!jOS~~!oOT~~",77)],topRules:{FStringTemplate:[0,1]},tokenPrec:32}),rn=ct.define({parser:Vr.configure({props:[Qn({"Template/LBrace":oe.quote,"Template/RBrace":oe.quote,"Template/Variable":oe.variableName,"⚠":oe.invalid})]}),languageData:{}}),Dr=({text:n,variables:t})=>Vt({parser:rn.parser,text:n,variables:t,postFormat:a=>a.replaceAll("\\{","{").replaceAll("{{","{").replaceAll("}}","}")}),Pr=n=>Et({parser:rn.parser,text:n});function Or(){return new dt(rn)}const _r=Un.deserialize({version:14,states:"!WQQOPOOOcOQO'#C^OOOO'#Cb'#CbQQOPOOOOOO'#Cc'#CcOhOQO,58xOOOO-E6`-E6`OOOO-E6a-E6aOOOO1G.d1G.d",stateData:"v~ORPOXQOYQOZQO[QO~OSSO~OSSOTWO~OZRX[X~",goto:"iWPPXPPP]cTQORQRORURQTPRVT",nodeNames:"⚠ MustacheLikeTemplate Template LBrace Variable RBrace",maxTerm:12,skippedNodes:[0],repeatNodeCount:2,tokenData:"%W~RaXY!WYZ!W]^!Wpq!Wqr!Wrs!]sw!Wwx!bx#O!W#O#P!i#P#o!W#o#p$c#p#q!W#q#r!b#r;'S!W;'S;=`%Q<%lO!W~!]OX~~!bO[~~!iOX~[~~!lYrs!W!P!Q!W#O#P!W#U#V!W#Y#Z!W#b#c!W#f#g!W#h#i!W#i#j#[#o#p$^~#_R!Q![#h!c!i#h#T#Z#h~#kR!Q![#t!c!i#t#T#Z#t~#wR!Q![$Q!c!i$Q#T#Z$Q~$TR!Q![!W!c!i!W#T#Z!W~$cOZ~~$jPX~[~#o#p$m~$rPR~#q#r$u~$xP#q#r${~%QOY~~%TP;=`<%l!W",tokenizers:[1,new jn("#e~RVO#oh#o#p!P#p#qh#q#r#X#r;'Sh;'S;=`y<%lOh~mSS~O#qh#r;'Sh;'S;=`y<%lOh~|P;=`<%lh~!USS~O#q!b#r;'S!b;'S;=`#R<%lO!b~!gVS~O#O!b#O#P!b#P#q!b#q#r!|#r;'S!b;'S;=`#R<%lO!b~#ROS~~#UP;=`<%l!b~#[P#q#r#_~#dOT~~",112)],topRules:{MustacheLikeTemplate:[0,1]},tokenPrec:32}),on=ct.define({parser:_r.configure({props:[Qn({"Template/LBrace":oe.quote,"Template/RBrace":oe.quote,"Template/Variable":oe.variableName,"Template/⚠":oe.invalid})]}),languageData:{}}),Fr=({text:n,variables:t})=>Vt({parser:on.parser,text:n,variables:t,postFormat:a=>a.replaceAll("\\{{","{{")}),Nr=n=>Et({parser:on.parser,text:n});function Rr(){return new dt(on)}const Vc=n=>{switch(n){case se.FString:return{format:Dr,extractVariables:Pr};case se.Mustache:return{format:Fr,extractVariables:Nr};case se.NONE:return{format:({text:t})=>t,extractVariables:()=>[]};default:D()}},Hr=w.union([w.string(),w.number(),w.boolean(),w.null()]),s1=w.lazy(()=>w.union([Hr,w.array(s1),w.record(s1)])),An=w.object({type:w.enum(["string","number","boolean","object","array","null","integer"]).describe("The type of the parameter"),description:w.string().optional().describe("A description of the parameter"),enum:w.array(w.string()).optional().describe("The allowed values")}).passthrough().describe("A map of parameter names to their definitions"),Dt=w.object({type:w.literal("object"),properties:w.record(w.union([An,w.object({anyOf:w.array(An)}).describe("A list of possible parameter names to their definitions")])),required:w.array(w.string()).optional().describe("The required parameters"),additionalProperties:w.boolean().optional().describe("Whether or not additional properties are allowed in the schema")}).passthrough(),b1=w.object({type:w.literal("function").describe("The type of the tool"),function:w.object({name:w.string().describe("The name of the function"),description:w.string().optional().describe("A description of the function"),parameters:Dt.extend({strict:w.boolean().optional().describe("Whether or not the arguments should exactly match the function definition, only supported for OpenAI models")}).describe("The parameters that the function accepts")}).passthrough().describe("The function definition")}).passthrough(),Dc=u1(b1,{removeAdditionalStrategy:"passthrough"}),L1=w.object({name:w.string(),description:w.string(),input_schema:Dt}),Pc=u1(L1,{removeAdditionalStrategy:"passthrough"}),Kr=L1.transform(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.input_schema}})),Br=b1.transform(n=>({name:n.function.name,description:n.function.description??n.function.name,input_schema:n.function.parameters})),Oc=w.union([b1,L1,s1]),$r=n=>{const{success:t,data:a}=b1.safeParse(n);if(t)return{provider:"OPENAI",validatedToolDefinition:a};const{success:i,data:r}=L1.safeParse(n);return i?{provider:"ANTHROPIC",validatedToolDefinition:r}:{provider:"UNKNOWN",validatedToolDefinition:null}},zn=n=>{const{provider:t,validatedToolDefinition:a}=$r(n);switch(t){case"AZURE_OPENAI":case"OPENAI":return a;case"ANTHROPIC":return Kr.parse(a);case"UNKNOWN":return null;default:D()}},Zr=({toolDefinition:n,targetProvider:t})=>{switch(t){case"AZURE_OPENAI":case"OPENAI":return n;case"ANTHROPIC":return Br.parse(n);case"GEMINI":return n;default:D()}};function _c(n){return{type:"function",function:{name:`new_function_${n}`,description:"",parameters:{type:"object",properties:{new_arg:{type:"string"}},required:[]}}}}function Fc(n){return{name:`new_function_${n}`,description:"",input_schema:{type:"object",properties:{new_arg:{type:"string"}},required:[]}}}const v1=w.object({id:w.string().describe("The ID of the tool call"),function:w.object({name:w.string().describe("The name of the function"),arguments:w.record(w.unknown()).describe("The arguments for the function")}).describe("The function that is being called").passthrough()}),Gr=w.array(v1),Nc=u1(Gr,{removeAdditionalStrategy:"passthrough"}),y1=w.object({id:w.string().describe("The ID of the tool call"),type:w.literal("tool_use"),name:w.string().describe("The name of the tool"),input:w.record(w.unknown()).describe("The input for the tool")}).passthrough(),Wr=w.array(y1),Rc=u1(Wr,{removeAdditionalStrategy:"passthrough"}),Ur=y1.transform(n=>({id:n.id,function:{name:n.name,arguments:n.input}})),jr=v1.transform(n=>({id:n.id,type:"tool_use",name:n.function.name,input:typeof n.function.arguments=="string"?{[n.function.arguments]:n.function.arguments}:n.function.arguments??{}})),Qr=w.union([v1,y1,s1]),Hc=w.array(Qr),qr=n=>{const{success:t,data:a}=v1.safeParse(n);if(t)return{provider:"OPENAI",validatedToolCall:a};const{success:i,data:r}=y1.safeParse(n);return i?{provider:"ANTHROPIC",validatedToolCall:r}:{provider:"UNKNOWN",validatedToolCall:null}},En=n=>{const{provider:t,validatedToolCall:a}=qr(n);switch(t){case"AZURE_OPENAI":case"OPENAI":return a;case"ANTHROPIC":return Ur.parse(a);case"UNKNOWN":return null;default:D()}},Xr=({toolCall:n,targetProvider:t})=>{switch(t){case"AZURE_OPENAI":case"OPENAI":return n;case"ANTHROPIC":return jr.parse(n);case"GEMINI":return n;default:D()}};function Kc(){return{id:"",function:{name:"",arguments:{}}}}function Bc(){return{id:"",type:"tool_use",name:"",input:{}}}function Yr({str:n,excludePrimitives:t=!1,excludeArray:a=!1}){try{const i=JSON.parse(n);if(t&&typeof i!="object"||a&&Array.isArray(i))return!1}catch{return!1}return!0}function Jr(n){return Yr({str:n,excludeArray:!0,excludePrimitives:!0})}function $c(n){try{return{json:JSON.parse(n)}}catch(t){return{json:null,parseError:t}}}function Zc(...n){try{return{json:JSON.stringify(...n)}}catch(t){return{json:null,stringifyError:t}}}const e2=({instanceTools:n,provider:t})=>n.map(a=>{switch(t){case"OPENAI":case"AZURE_OPENAI":{const i=zn(a.definition);return{...a,definition:i??a.definition}}case"ANTHROPIC":{const i=zn(a.definition),r=i?Zr({toolDefinition:i,targetProvider:t}):a.definition;return{...a,definition:r}}case"GEMINI":return a;default:D()}}),n2=({toolCalls:n,provider:t})=>{if(n!=null)return n.map(a=>{switch(t){case"OPENAI":case"AZURE_OPENAI":return En(a)??a;case"ANTHROPIC":{const i=En(a);return i!=null?Xr({toolCall:i,targetProvider:t}):a}case"GEMINI":return a;default:D()}})};let t2=0,a2=0,i2=1,r2=0;const Pt=()=>t2++,Vn=()=>i2++,Gc=()=>r2++,o2=()=>a2++,Ot=()=>({__type:"chat",messages:[{id:Vn(),role:"system",content:"You are a chatbot"},{id:Vn(),role:"user",content:"{{question}}"}]}),l2={__type:"text_completion",prompt:"{{question}}"};function s2(){return{id:Pt(),template:Ot(),model:{provider:zt,modelName:zr,invocationParameters:[],supportedInvocationParameters:[]},tools:[],toolChoice:"auto",output:void 0,spanId:null,activeRunId:null}}function Wc(){return{type:"json_schema",json_schema:{name:"response",schema:{type:"object",properties:{},required:[],additionalProperties:!1},strict:!0}}}function c2(n){if(n.instances!=null&&n.instances.length>0)return n.instances;const t=s2(),a=Object.values(n.modelConfigByProvider);if(!(a.length>0))return[t];const r=a.find(o=>o.provider===zt)??a[0];return t.model={...t.model,...r},[t]}const Uc=n=>Be($e((a,i)=>({streaming:!0,operationType:"chat",inputMode:"manual",input:{variablesValueCache:{}},templateLanguage:se.Mustache,instances:c2(n),setInput:r=>{a({input:r})},setOperationType:r=>{a(r==="chat"?{instances:i().instances.map(o=>({...o,template:Ot()}))}:{instances:i().instances.map(o=>({...o,template:l2}))}),a({operationType:r})},addInstance:()=>{const r=i().instances,o=i().instances[0];o&&a({instances:[...r,{...o,id:Pt(),activeRunId:null,experimentId:null,spanId:null}]})},updateModelSupportedInvocationParameters:({instanceId:r,supportedInvocationParameters:o})=>{const s=i().instances;a({instances:s.map(c=>c.id===r?{...c,model:{...c.model,supportedInvocationParameters:o,invocationParameters:Mi(c.model.invocationParameters,o)},tools:o.find(d=>d.canonicalName===Ti)?c.tools:[]}:c)})},updateProvider:({instanceId:r,provider:o,modelConfigByProvider:s})=>{const c=i().instances,d=c.find(g=>g.id===r);if(!d||d.model.provider===o)return;const u=s[o],p={model:u?{...u,supportedInvocationParameters:[],provider:o}:{modelName:null,baseUrl:null,invocationParameters:[],supportedInvocationParameters:[],apiVersion:null,endpoint:null,provider:o},tools:e2({instanceTools:d.tools,provider:o})};d.template.__type==="chat"&&(p.template={__type:"chat",messages:d.template.messages.map(g=>({...g,toolCalls:n2({toolCalls:g.toolCalls,provider:o})}))}),a({instances:c.map(g=>g.id===r?{...g,...p}:g)})},updateModel:({instanceId:r,patch:o})=>{const s=i().instances;s.find(d=>d.id===r)&&a({instances:s.map(d=>d.id===r?{...d,model:{...d.model,...o}}:d)})},deleteInstance:r=>{const o=i().instances;a({instances:o.filter(s=>s.id!==r)})},addMessage:({playgroundInstanceId:r})=>{const o=i().instances;a({instances:o.map(s=>s.id===r&&(s!=null&&s.template)&&(s==null?void 0:s.template.__type)==="chat"?{...s,messages:[...s.template.messages,{role:Er,content:"{question}"}]}:s)})},updateInstance:({instanceId:r,patch:o})=>{const s=i().instances;a({instances:s.map(c=>c.id===r?{...c,...o}:c)})},runPlaygroundInstances:()=>{const r=i().instances;a({instances:r.map(o=>({...o,activeRunId:o2(),spanId:null}))})},cancelPlaygroundInstances:()=>{a({instances:i().instances.map(r=>({...r,activeRunId:null,spanId:null}))})},markPlaygroundInstanceComplete:r=>{const o=i().instances;a({instances:o.map(s=>s.id===r?{...s,activeRunId:null}:s)})},setTemplateLanguage:r=>{a({templateLanguage:r})},setVariableValue:(r,o)=>{const s=i().input;a({input:{...s,variablesValueCache:{...s.variablesValueCache,[r]:o}}})},setStreaming:r=>{a({streaming:r})},updateInstanceModelInvocationParameters:({instanceId:r,invocationParameters:o})=>{i().instances.find(c=>c.id===r)&&a({instances:i().instances.map(c=>c.id===r?{...c,model:{...c.model,invocationParameters:o}}:c)})},upsertInvocationParameterInput:({instanceId:r,invocationParameterInput:o})=>{const s=i().instances.find(d=>d.id===r);if(!s)return;const c=s.model.invocationParameters.find(d=>fn(d,o));a(c?{instances:i().instances.map(d=>d.id===r?{...d,model:{...d.model,invocationParameters:d.model.invocationParameters.map(u=>fn(u,o)?o:u)}}:d)}:{instances:i().instances.map(d=>d.id===r?{...d,model:{...d.model,invocationParameters:[...d.model.invocationParameters,o]}}:d)})},deleteInvocationParameterInput:({instanceId:r,invocationParameterInputInvocationName:o})=>{i().instances.find(c=>c.id===r)&&a({instances:i().instances.map(c=>c.id===r?{...c,model:{...c.model,invocationParameters:c.model.invocationParameters.filter(d=>d.invocationName!==o)}}:c)})},...n}))),jc=n=>{const t=a=>({setCredential:({provider:i,value:r})=>{a({[i]:r})},...n});return Be()(qn($e(t),{name:"arize-phoenix-credentials"}))};function _t(n){return e("div",{onClick:t=>t.stopPropagation(),css:m`
148
148
  display: inline-block;
149
149
  `,children:e(Xn,{css:m`
150
150
  color: var(--ac-global-color-primary);
@@ -1,4 +1,4 @@
1
- import{r as c,j as e,dL as v,l as n,U as F,R as w,D as L,bq as E,dM as S,dN as R,dO as a,dP as k,t as I,dQ as A}from"./vendor-DvC8cT4X.js";import{k as C,Q as _,D as j,Y as z}from"./vendor-arizeai-Do1793cv.js";import{E as O,L as T,R as D,r as N,b as G,F as M,A as U,c as W,d as q,P as B,h as J,M as K,e as m,D as Q,f as V,g as H,i as Y,j as $,k as X,l as Z,p as ee,n as h,o as ae,S as re,s as te,q as oe,t as g,v as ne,w as u,x as b,y as se,z as le,B as ie,C as de,G as ce,H as x,I as pe,J as me,K as he,N as ge,O as ue,Q as be,U as xe,V as fe,W as Pe}from"./pages-BFZvquxr.js";import{V as ye,d4 as ve,at as Fe,ab as we,d5 as Le,d6 as Ee}from"./components-Caw_U14D.js";import"./vendor-three-DwGkEfCM.js";import"./vendor-codemirror-BzwZPyJM.js";import"./vendor-shiki-Cl9QBraO.js";import"./vendor-recharts-_Jb7JjhG.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))d(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&d(l)}).observe(document,{childList:!0,subtree:!0});function i(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function d(t){if(t.ep)return;t.ep=!0;const o=i(t);fetch(t.href,o)}})();const f="arize-phoenix-feature-flags",p={__RESET__:!1};function Se(){const r=localStorage.getItem(f);if(!r)return p;try{const s=JSON.parse(r);return Object.assign({},p,s)}catch{return p}}const P=c.createContext(null);function Re(){const r=w.useContext(P);if(r===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return r}function ke(r){const[s,i]=c.useState(Se()),d=t=>{localStorage.setItem(f,JSON.stringify(t)),i(t)};return e(P.Provider,{value:{featureFlags:s,setFeatureFlags:d},children:e(Ie,{children:r.children})})}function Ie(r){const{children:s}=r,{featureFlags:i,setFeatureFlags:d}=Re(),[t,o]=c.useState(!1);return v("ctrl+shift+f",()=>o(!0)),n(F,{children:[s,e(j,{type:"modal",isDismissable:!0,onDismiss:()=>o(!1),children:t&&e(C,{title:"Feature Flags",children:e(ye,{height:"size-1000",padding:"size-100",children:Object.keys(i).map(l=>e(_,{isSelected:i[l],onChange:y=>d({...i,[l]:y}),children:l},l))})})})]})}function Ae(){return e(E,{styles:L`
1
+ import{r as c,j as e,dL as v,l as n,U as F,R as w,D as L,bq as E,dM as S,dN as R,dO as a,dP as k,t as I,dQ as A}from"./vendor-DvC8cT4X.js";import{k as C,Q as _,D as j,Y as z}from"./vendor-arizeai-Do1793cv.js";import{E as O,L as T,R as D,r as N,b as G,F as M,A as U,c as W,d as q,P as B,h as J,M as K,e as m,D as Q,f as V,g as H,i as Y,j as $,k as X,l as Z,p as ee,n as h,o as ae,S as re,s as te,q as oe,t as g,v as ne,w as u,x as b,y as se,z as le,B as ie,C as de,G as ce,H as x,I as pe,J as me,K as he,N as ge,O as ue,Q as be,U as xe,V as fe,W as Pe}from"./pages-DL7J9q9w.js";import{V as ye,d4 as ve,at as Fe,ab as we,d5 as Le,d6 as Ee}from"./components-DckIzNmE.js";import"./vendor-three-DwGkEfCM.js";import"./vendor-codemirror-BzwZPyJM.js";import"./vendor-shiki-Cl9QBraO.js";import"./vendor-recharts-_Jb7JjhG.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))d(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&d(l)}).observe(document,{childList:!0,subtree:!0});function i(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function d(t){if(t.ep)return;t.ep=!0;const o=i(t);fetch(t.href,o)}})();const f="arize-phoenix-feature-flags",p={__RESET__:!1};function Se(){const r=localStorage.getItem(f);if(!r)return p;try{const s=JSON.parse(r);return Object.assign({},p,s)}catch{return p}}const P=c.createContext(null);function Re(){const r=w.useContext(P);if(r===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return r}function ke(r){const[s,i]=c.useState(Se()),d=t=>{localStorage.setItem(f,JSON.stringify(t)),i(t)};return e(P.Provider,{value:{featureFlags:s,setFeatureFlags:d},children:e(Ie,{children:r.children})})}function Ie(r){const{children:s}=r,{featureFlags:i,setFeatureFlags:d}=Re(),[t,o]=c.useState(!1);return v("ctrl+shift+f",()=>o(!0)),n(F,{children:[s,e(j,{type:"modal",isDismissable:!0,onDismiss:()=>o(!1),children:t&&e(C,{title:"Feature Flags",children:e(ye,{height:"size-1000",padding:"size-100",children:Object.keys(i).map(l=>e(_,{isSelected:i[l],onChange:y=>d({...i,[l]:y}),children:l},l))})})})]})}function Ae(){return e(E,{styles:L`
2
2
  body {
3
3
  background-color: var(--ac-global-color-grey-75);
4
4
  color: var(--ac-global-text-color-900);
@@ -1,4 +1,4 @@
1
- import{z as R,aD as de,aE as Ee,aF as _e,aG as Qa,A as Md,r as u,j as e,R as ve,n as _a,D as v,l as s,aH as je,a0 as ee,U as B,t as L,a6 as He,a7 as W,a8 as Ce,a9 as Fe,ac as H,aI as he,aJ as mn,aK as gn,aL as Oe,aM as Ad,aN as _t,aO as kn,aP as Wa,a2 as ie,aQ as $a,ab as Pn,g as Xl,aR as Nd,a4 as Vt,G as zd,aS as Vd,aT as St,aU as vt,aV as ba,aW as ca,aX as Yl,o as Xa,aY as $d,ay as Od,az as Qd,aZ as jd,p as ei,q as qd,a_ as Ud,M as Bd,N as Hd,ah as ni,a$ as Gd,b0 as fl,b1 as Wd,b2 as Jd,b3 as Zd,b4 as Xd,b5 as Yd,b6 as ec,b7 as nc,b8 as ac,b9 as tc}from"./vendor-DvC8cT4X.js";import{A as ce,C as j,h as $t,k as J,D as Z,B as Ot,y as qe,z as ne,G as lc,s as Ya,p as et,P as Wn,j as Jn,q as nt,v as Zn,w as ua,H as Ye,L as ja,J as ai,K as ic,M as ti,N as rc,O as sc,Q as ma,e as Me,f as Xn,T as ue,S as Qt,i as Ae,g as ae,E as at,a as Pe,U as jt,V as qt,c as Ln,o as hl,W as oc,n as dc,I as cc,m as kl,l as uc,u as mc,X as gc,r as pc,R as Ia,d as li}from"./vendor-arizeai-Do1793cv.js";import{s as Ut,a as me,l as yc,j as ii,b as xe,i as ri,c as si,d as xn,e as oi,f as fc,g as Pa,D as hc,h as qa,k as kc,T as Qn,m as bc,n as bl,o as Sc,p as vc,q as Sl,r as Cc,t as Fc,N as Kc,u as Tc,L as ye,v as Ke,w as Ra,B as xc,_ as k,x as Fn,I,C as Ic,G as di,y as Bt,P as ga,z as tt,S as Dc,A as Pc,E as Lc,F as wc,H as Ec,J as _c,K as Rc,M as Mc,O as un,Q as N,R as Ge,U as ci,V as C,W as ze,X as lt,Y as Yn,Z as Ne,$ as F,a0 as pe,a1 as Te,a2 as pa,a3 as pn,a4 as bn,a5 as it,a6 as Ie,a7 as re,a8 as Xe,a9 as wn,aa as se,ab as we,ac as ui,ad as We,ae as mi,af as en,ag as En,ah as Ht,ai as tn,aj as Sn,ak as Gt,al as gi,am as pi,an as yn,ao as ke,ap as be,aq as Se,ar as vl,as as Cl,at as vn,au as Ac,av as Nc,aw as U,ax as yi,ay as Wt,az as rt,aA as ya,aB as fi,aC as fa,aD as ha,aE as hi,aF as Cn,aG as Re,aH as st,aI as _n,aJ as ki,aK as Jt,aL as Je,aM as bi,aN as zc,aO as Vc,aP as $c,aQ as Oc,aR as Qc,aS as ln,aT as rn,aU as jc,aV as Ue,aW as qc,aX as Uc,aY as Si,aZ as Bc,a_ as Hc,a$ as Fl,b0 as Gc,b1 as Wc,b2 as Jc,b3 as Zc,b4 as Xc,b5 as Yc,b6 as vi,b7 as eu,b8 as nu,b9 as au,ba as tu,bb as lu,bc as Un,bd as Zt,be as Ci,bf as ra,bg as Rt,bh as On,bi as Tn,bj as iu,bk as ru,bl as Fi,bm as ot,bn as Ki,bo as sn,bp as su,bq as ou,br as La,bs as Le,bt as Ua,bu as Ti,bv as du,bw as $e,bx as Xt,by as cu,bz as uu,bA as mu,bB as gu,bC as Yt,bD as Be,bE as nn,bF as ka,bG as pu,bH as dt,bI as xi,bJ as Ii,bK as Ct,bL as yu,bM as ct,bN as ut,bO as Ze,bP as Ve,bQ as fu,bR as el,bS as Di,bT as Pi,bU as Li,bV as hu,bW as on,bX as wi,bY as In,bZ as ku,b_ as Kl,b$ as Ei,c0 as bu,c1 as Su,c2 as vu,c3 as Cu,c4 as _i,c5 as dn,c6 as Fu,c7 as sa,c8 as Mt,c9 as Ku,ca as Ri,cb as Mi,cc as Tu,cd as xu,ce as Iu,cf as mt,cg as Ai,ch as Ma,ci as Tl,cj as Ni,ck as nl,cl as Du,cm as Pu,cn as al,co as zi,cp as Vi,cq as Lu,cr as wu,cs as Eu,ct as At,cu as $i,cv as _u,cw as Ru,cx as Oa,cy as Mu,cz as Au,cA as Oi,cB as Qi,cC as Nu,cD as zu,cE as Vu,cF as $u,cG as ji,cH as tl,cI as qi,cJ as Ou,cK as Qu,cL as Nt,cM as ju,cN as qu,cO as Uu,cP as Bu,cQ as Hu,cR as Gu,cS as Ui,cT as Wu,cU as Ju,cV as Zu,cW as Xu,cX as Yu,cY as em,cZ as nm,c_ as am,c$ as tm,d0 as lm,d1 as im,d2 as xl,d3 as Il}from"./components-Caw_U14D.js";import{p as Aa,R as Rn,n as Mn,i as rm,E as Bi,m as Hi,o as Gi,g as sm}from"./vendor-codemirror-BzwZPyJM.js";import{R as An,C as Na,X as Nn,Y as an,a as zn,T as Vn,B as oa,A as wa,b as Wi,c as ll,L as Ji,d as om,P as dm,e as cm,f as um}from"./vendor-recharts-_Jb7JjhG.js";const mm=4,gm={user:["user","human"],ai:["assistant","bot","ai"],system:["system"],tool:["tool"]},pm="Unable to parse span input messages, expected messages which include a role and content.",ym="Unable to parse span output messages, expected messages which include a role and content.",fm="Unable to parse span output expected output.value to be present.",hm="Unable to parse span attributes, attributes must be valid JSON.",km="Unable to parse model config, expected llm.model_name to be present.",bm="Unable to parse model config, expected llm.invocation_parameters JSON string to be present.",Sm="Unable to parse invocation parameters response_format, expected llm.invocation_parameters.response_format to be a well formed json object or undefined.",vm="Unable to parse tools, expected tools to be an array of valid tools.",Cm="Unable to parse prompt template variables, expected prompt template variables to be a valid JSON object string.",Dl={AZURE_OPENAI:[],ANTHROPIC:["claude"],OPENAI:["gpt","o1"],GEMINI:["gemini"]},Da="TOOL_CHOICE",Ba="tool_choice",Bn="RESPONSE_FORMAT",jn="response_format",Fm=[Da,Bn],il=Ut()(R.union([R.literal("auto"),R.literal("none"),R.literal("required"),R.object({type:R.literal("function"),function:R.object({name:R.string()})})])),rl=R.object({type:R.union([R.literal("auto"),R.literal("any"),R.literal("tool")]),disable_parallel_tool_use:R.boolean().optional(),name:R.string().optional()}),Km=rl.transform(n=>{switch(n.type){case"any":case"auto":return"auto";case"tool":return n.name?{type:"function",function:{name:n.name}}:"auto";default:return"auto"}}),Tm=il.transform(n=>typeof n=="string"?{type:"auto"}:{type:"tool",name:n.function.name});R.union([il,rl]);const xm=n=>{const{success:a,data:t}=il.safeParse(n);if(a)return{provider:"OPENAI",toolChoice:t};const{success:l,data:i}=rl.safeParse(n);return l?{provider:"ANTHROPIC",toolChoice:i}:{provider:null,toolChoice:null}},Im=n=>{const{provider:a,toolChoice:t}=xm(n);if(a==null||t==null)throw new Error("Could not detect provider of tool choice");switch(a){case"AZURE_OPENAI":case"OPENAI":return t;case"ANTHROPIC":return Km.parse(t);default:me()}},Dm=({toolChoice:n,targetProvider:a})=>{switch(a){case"AZURE_OPENAI":case"OPENAI":return n;case"ANTHROPIC":return Tm.parse(n);case"GEMINI":return n;default:me()}},Pm=({toolChoice:n,targetProvider:a})=>{try{const t=Im(n);return Dm({toolChoice:t,targetProvider:a})}catch{return null}},Lm=R.object({tool_call:R.object({id:R.string().optional(),function:R.object({name:R.string(),arguments:R.string()}).partial()}).partial()}).partial(),Zi=R.object({[de.message]:R.object({[Ee.role]:R.string(),[Ee.content]:R.union([R.string(),R.array(R.record(R.string(),R.unknown()))]).default(""),[Ee.tool_calls]:R.array(Lm).optional(),[Ee.tool_call_id]:R.string().optional()})}),wm=R.object({[de.llm]:R.object({[_e.input_messages]:R.array(Zi)})}),Em=R.object({[de.llm]:R.object({[_e.output_messages]:R.array(Zi)})}),_m=R.object({[de.output]:R.object({value:R.string()})}),Xi=Ut()(R.enum(["user","ai","system","tool"])),Rm=Ut()(R.object({id:R.number(),role:Xi,content:R.string().optional(),toolCallId:R.string().optional(),toolCalls:R.array(yc).optional()})),Mm=R.array(Rm),sl=R.lazy(()=>R.record(ii)),Am=sl,Yi=R.string().transform((n,a)=>{const{json:t}=xe(n);if(!ri(t))return a.addIssue({code:R.ZodIssueCode.custom,message:"The invocation parameters must be a valid JSON object"}),R.NEVER;const{success:l,data:i}=Am.safeParse(t);return l?i:(a.addIssue({code:R.ZodIssueCode.custom,message:"The invocation parameters must be a valid JSON object"}),R.NEVER)}).default("{}"),Nm=R.object({[de.llm]:R.object({[_e.provider]:R.string().optional(),[_e.model_name]:R.string()})}),er=R.object({[de.llm]:R.object({[_e.invocation_parameters]:Yi})}),zm=R.object({[de.llm]:R.object({[_e.invocation_parameters]:Yi.pipe(R.object({response_format:sl.optional()}))})}),Vm=R.object({url:R.object({full:R.string(),path:R.string().optional()})}),$m=R.string().transform((n,a)=>{const{json:t}=xe(n);return t==null||!ri(t)?(a.addIssue({code:R.ZodIssueCode.custom,message:"The tool JSON schema must be a valid JSON object"}),R.NEVER):t}).transform((n,a)=>{const{data:t,success:l}=si.safeParse(n);return l?t:(a.addIssue({code:R.ZodIssueCode.custom,message:"The tool JSON schema must be a valid tool schema"}),R.NEVER)}),Om=R.object({[de.llm]:R.object({[_e.tools]:R.array(R.object({[de.tool]:R.object({[Qa.json_schema]:$m})}).optional()).optional()}).optional()}).optional(),Qm=R.lazy(()=>R.object({type:R.literal("json_schema"),json_schema:R.object({name:R.string().describe("The name of the schema"),schema:ii.describe("The schema itself in JSON format"),strict:R.literal(!0).describe("The schema must be strict")})})),jm=Md(Qm,{removeAdditionalStrategy:"passthrough"}),qm=R.string().transform((n,a)=>{const{json:t}=xe(n);return xn(t)?Object.entries(t).reduce((i,[r,o])=>{if(typeof o=="string")i[r]=o;else{const{json:c}=oi(o);c!=null&&(i[r]=c)}return i},{}):(a.addIssue({code:R.ZodIssueCode.custom,message:"The prompt template variables must be a valid JSON object"}),R.NEVER)}),Um=R.object({[de.llm]:R.object({[_e.prompt_template]:R.object({variables:qm}).optional()}).optional()}).optional();function nr(n){return Xi.safeParse(n).success}function Ja(n){if(nr(n))return n;for(const[a,t]of Object.entries(gm))if(t.includes(n))return a;return kc}function Bm({toolCalls:n,provider:a}){if(n!=null)return n.map(({tool_call:t})=>{var i,r,o,c;if(t==null)return null;let l={};if(((i=t.function)==null?void 0:i.arguments)!=null){const{json:d}=xe(t.function.arguments);xn(d)&&(l=d)}switch(a){case"OPENAI":case"AZURE_OPENAI":return{id:t.id??"",function:{name:((r=t.function)==null?void 0:r.name)??"",arguments:l}};case"ANTHROPIC":return{id:t.id??"",type:"tool_use",name:((o=t.function)==null?void 0:o.name)??"",input:l};case"GEMINI":return{id:t.id??"",function:{name:((c=t.function)==null?void 0:c.name)??"",arguments:l}};default:me()}}).filter(t=>t!=null)}function ar({messages:n,provider:a}){return n.map(({message:t})=>({id:Pa(),role:t.tool_call_id!=null?Ja("tool"):Ja(t.role),content:typeof t.content=="string"?t.content:void 0,toolCalls:Bm({provider:a,toolCalls:t.tool_calls}),toolCallId:t.tool_call_id}))}function Hm({provider:n,parsedAttributes:a}){var l;const t=wm.safeParse(a);if(!t.success)return{messageParsingErrors:[pm],messages:null};if(n==="ANTHROPIC"){const{success:i,data:r}=er.safeParse(a);if(i){const o=t.data.llm.input_messages,c=(l=r.llm.invocation_parameters)==null?void 0:l.system;typeof c=="string"&&c&&(!o||o[0].message.role!=="system")&&t.data.llm.input_messages.unshift({message:{role:"system",content:c}})}}return{messageParsingErrors:[],messages:ar({provider:n,messages:t.data.llm.input_messages})}}function Gm({provider:n,parsedAttributes:a}){const t=[],l=Em.safeParse(a);if(l.success)return{output:ar({provider:n,messages:l.data.llm.output_messages}),outputParsingErrors:t};t.push(ym);const i=_m.safeParse(a);return i.success?{output:i.data.output.value,outputParsingErrors:t}:(t.push(fm),{output:void 0,outputParsingErrors:t})}function Wm(n){if(n==null)return null;switch(n.toLowerCase()){case"openai":return"OPENAI";case"anthropic":return"ANTHROPIC";case"google":return"GEMINI";case"azure":return"AZURE_OPENAI";default:return null}}function Jm(n){for(const a of Object.keys(Dl))if(Dl[a].some(l=>n.includes(l)))return a;return hc}function Zm(n){const{success:a,data:t}=Nm.safeParse(n);if(a){const l=Wm(t.llm.provider)||Jm(t.llm.model_name),i=Xm(n);return{modelConfig:{...Object.fromEntries(Object.entries(i).filter(([r,o])=>o!==null)),modelName:t.llm.model_name,provider:l,invocationParameters:[],supportedInvocationParameters:[]},parsingErrors:[]}}return{modelConfig:null,parsingErrors:[km]}}function Xm(n){const{success:a,data:t}=Vm.safeParse(n);if(a)try{const l=new URL(t.url.full);let i=l;if(t.url.path)try{i=new URL(t.url.full.split(t.url.path)[0])}catch{}return{baseUrl:`${i.origin}${i.pathname}`,endpoint:l.origin,apiVersion:l.searchParams.get("api-version")||null}}catch{}return{baseUrl:null,apiVersion:null,endpoint:null}}function Ym(n,a=[]){const{success:t,data:l}=er.safeParse(n),i=[];return t||i.push(bm),{invocationParameters:og((l==null?void 0:l.llm.invocation_parameters)??{},a),parsingErrors:i}}function eg(n){const{success:a,data:t}=zm.safeParse(n);return a?{responseFormat:t.llm.invocation_parameters.response_format,parsingErrors:[]}:{responseFormat:void 0,parsingErrors:[Sm]}}function ng(n){var a;return(((a=n==null?void 0:n.llm)==null?void 0:a.tools)??[]).map(t=>(t==null?void 0:t.tool)==null?null:{id:qa(),definition:t.tool.json_schema}).filter(t=>t!=null)}function ag(n){var l;const{data:a,success:t}=Om.safeParse(n);return t?((l=a==null?void 0:a.llm)==null?void 0:l.tools)==null?{tools:null,parsingErrors:[]}:{tools:ng(a),parsingErrors:[]}:{tools:null,parsingErrors:[vm]}}function tg(n){var l;const{success:a,data:t}=Um.safeParse(n);return a?((l=t==null?void 0:t.llm)==null?void 0:l.prompt_template)==null?{variables:null,parsingErrors:[]}:{variables:t.llm.prompt_template.variables,parsingErrors:[]}:{variables:null,parsingErrors:[Cm]}}function lg(n){const a=fc(),{json:t,parseError:l}=xe(n.attributes);if(l)return{playgroundInstance:{...a,spanId:(n==null?void 0:n.id)??null},parsingErrors:[hm]};const i=n.invocationParameters,r=Zm(t);let{modelConfig:o}=r;const{parsingErrors:c}=r,{messages:d,messageParsingErrors:m}=Hm({provider:(o==null?void 0:o.provider)??a.model.provider,parsedAttributes:t}),{output:y,outputParsingErrors:g}=Gm({provider:(o==null?void 0:o.provider)??a.model.provider,parsedAttributes:t}),{invocationParameters:f,parsingErrors:p}=Ym(t,i),{variables:h,parsingErrors:b}=tg(t),{parsingErrors:K}=eg(t);o=o!=null?{...o,invocationParameters:K.length>0?f.filter(P=>P.invocationName!==jn&&P.canonicalName!==Bn):f}:null;const{tools:T,parsingErrors:D}=ag(t);return{playgroundInstance:{...a,model:o??a.model,template:d!=null?{__type:"chat",messages:d}:a.template,output:y,spanId:n.id,tools:T??a.tools},playgroundInput:h!=null?{variablesValueCache:h}:void 0,parsingErrors:[...m,...g,...c,...D,...p,...K,...b]}}const ig=n=>Mm.safeParse(n).success,tr=({instance:n,templateLanguage:a})=>{if(a==Qn.NONE)return[];const t=new Set,l=n.template.__type,i=bc(a);switch(l){case"chat":{n.template.messages.forEach(r=>{(r.content==null?[]:i.extractVariables(r.content)).forEach(c=>{t.add(c)})});break}case"text_completion":{i.extractVariables(n.template.prompt).forEach(o=>{t.add(o)});break}default:me()}return Array.from(t)},rg=({instances:n,templateLanguage:a})=>a==Qn.NONE?[]:Array.from(new Set(n.flatMap(t=>tr({instance:t,templateLanguage:a})))),lr=({instances:n,templateLanguage:a,input:t})=>{if(a==Qn.NONE)return{variablesMap:{},variableKeys:[]};const l=rg({instances:n,templateLanguage:a}),i=t.variablesValueCache??{};return{variablesMap:l.reduce((o,c)=>(o[c]=i[c]||"",o),{}),variableKeys:l}};function Hn(n,a){return n.invocationName===a.invocationName||n.canonicalName!=null&&a.canonicalName!=null&&n.canonicalName===a.canonicalName}const sg=(n,a)=>n.filter(t=>a.some(l=>Hn(l,t))).map(t=>{var l;return{...t,invocationName:((l=a.find(i=>Hn(i,t)))==null?void 0:l.invocationName)??t.invocationName}}),gt=n=>n.replace(/_([a-z])/g,(a,t)=>t.toUpperCase()),og=(n,a)=>Object.entries(n).map(([t,l])=>{const i=a.find(r=>r.canonicalName&&r.canonicalName.toLowerCase()===t.toLowerCase()||r.invocationName&&r.invocationName.toLowerCase()===t.toLowerCase());return i==null||i.invocationInputField==null||i.invocationName==null?null:{canonicalName:i.canonicalName,invocationName:i.invocationName,[gt(i.invocationInputField)]:l}}).filter(t=>t!=null),Ha=n=>{const{provider:a,validatedToolDefinition:t}=vc(n.definition);switch(a){case"OPENAI":case"AZURE_OPENAI":return t.function.name;case"ANTHROPIC":return t.name;case"UNKNOWN":return null;default:me()}},Pl=({provider:n,toolNumber:a})=>{switch(n){case"OPENAI":case"AZURE_OPENAI":return{id:qa(),definition:Sl(a)};case"ANTHROPIC":return{id:qa(),definition:Cc(a)};case"GEMINI":return{id:qa(),definition:Sl(a)};default:me()}},dg=n=>{switch(n){case"OPENAI":case"AZURE_OPENAI":return bl();case"ANTHROPIC":return Sc();case"GEMINI":return bl();default:me()}};function cg(n){return{content:n.content,role:ug(n.role),toolCalls:n.toolCalls,toolCallId:n.toolCallId}}function ug(n){switch(n){case"system":return"SYSTEM";case"user":return"USER";case"tool":return"TOOL";case"ai":return"AI";default:me()}}const ir=({playgroundStore:n,instanceId:a,credentials:t})=>{const{instances:l}=n.getState(),i=l.find(m=>m.id===a);if(!i)throw new Error(`No instance found for id ${a}`);if(i.template.__type!=="chat")throw new Error("We only support chat templates for now");const r=i.model.supportedInvocationParameters;let o=[...i.model.invocationParameters];const c=Pm({toolChoice:i.toolChoice,targetProvider:i.model.provider});i.tools.length>0?(o=o.filter(m=>m.invocationName!==Ba&&m.canonicalName!==Da),o.push({canonicalName:Da,invocationName:Ba,valueJson:c})):o=o.filter(m=>m.invocationName!==Ba&&m.canonicalName!==Da),o=r.length?sg(o,r):o;const d=i.model.provider==="AZURE_OPENAI"?{endpoint:i.model.endpoint,apiVersion:i.model.apiVersion}:{};return{messages:i.template.messages.map(cg),model:{providerKey:i.model.provider,name:i.model.modelName||"",baseUrl:i.model.baseUrl,...d},invocationParameters:o,tools:i.tools.length?i.tools.map(m=>m.definition):void 0,apiKey:t[i.model.provider]||null}},mg=({playgroundStore:n,instanceId:a,credentials:t})=>{const l=ir({playgroundStore:n,instanceId:a,credentials:t}),{instances:i,templateLanguage:r,input:o}=n.getState(),{variablesMap:c}=lr({instances:i,input:o,templateLanguage:r});return{...l,template:{variables:c,language:r}}},Ll=({playgroundStore:n,instanceId:a,credentials:t,datasetId:l})=>({...ir({playgroundStore:n,instanceId:a,credentials:t}),templateLanguage:n.getState().templateLanguage,datasetId:l});function rr(n){return n==null||n===""?"{}":typeof n=="string"?n:JSON.stringify(n,null,2)}function sr(n,a){return a.filter(t=>t.required).every(t=>n.some(l=>Hn(l,t)))}const gg=n=>{for(const[a,t]of Object.entries(n))if(a.endsWith("DefaultValue")&&t!=null)return n[a]};function B1(n,a){const t=new Map(n.map(l=>[l.canonicalName||l.invocationName,l]));return a.forEach(l=>{var d;const i=l.canonicalName||l.invocationName,r=gg(l),o=gt(l.invocationInputField||"");if(!l.invocationName||!l.invocationInputField||!i||r==null||((d=t.get(i))==null?void 0:d[o])!=null)return;const c={canonicalName:l.canonicalName,invocationName:l.invocationName,[o]:r};t.set(i,c)}),Array.from(t.values())}const or=u.createContext(null);function H1({children:n,...a}){const[t]=u.useState(()=>Fc(a));return e(or.Provider,{value:t,children:n})}function da(n,a){const t=ve.useContext(or);if(!t)throw new Error("Missing CredentialsContext.Provider in the tree");return _a(t,n,a)}const dr=u.createContext(null);function pg(){const n=u.useContext(dr);if(n===null)throw new Error("useFunctionality must be used within a FunctionalityProvider");return n}function G1(n){return e(dr.Provider,{value:{authenticationEnabled:window.Config.authenticationEnabled},children:n.children})}const yg=v`
1
+ import{z as R,aD as de,aE as Ee,aF as _e,aG as Qa,A as Md,r as u,j as e,R as ve,n as _a,D as v,l as s,aH as je,a0 as ee,U as B,t as L,a6 as He,a7 as W,a8 as Ce,a9 as Fe,ac as H,aI as he,aJ as mn,aK as gn,aL as Oe,aM as Ad,aN as _t,aO as kn,aP as Wa,a2 as ie,aQ as $a,ab as Pn,g as Xl,aR as Nd,a4 as Vt,G as zd,aS as Vd,aT as St,aU as vt,aV as ba,aW as ca,aX as Yl,o as Xa,aY as $d,ay as Od,az as Qd,aZ as jd,p as ei,q as qd,a_ as Ud,M as Bd,N as Hd,ah as ni,a$ as Gd,b0 as fl,b1 as Wd,b2 as Jd,b3 as Zd,b4 as Xd,b5 as Yd,b6 as ec,b7 as nc,b8 as ac,b9 as tc}from"./vendor-DvC8cT4X.js";import{A as ce,C as j,h as $t,k as J,D as Z,B as Ot,y as qe,z as ne,G as lc,s as Ya,p as et,P as Wn,j as Jn,q as nt,v as Zn,w as ua,H as Ye,L as ja,J as ai,K as ic,M as ti,N as rc,O as sc,Q as ma,e as Me,f as Xn,T as ue,S as Qt,i as Ae,g as ae,E as at,a as Pe,U as jt,V as qt,c as Ln,o as hl,W as oc,n as dc,I as cc,m as kl,l as uc,u as mc,X as gc,r as pc,R as Ia,d as li}from"./vendor-arizeai-Do1793cv.js";import{s as Ut,a as me,l as yc,j as ii,b as xe,i as ri,c as si,d as xn,e as oi,f as fc,g as Pa,D as hc,h as qa,k as kc,T as Qn,m as bc,n as bl,o as Sc,p as vc,q as Sl,r as Cc,t as Fc,N as Kc,u as Tc,L as ye,v as Ke,w as Ra,B as xc,_ as k,x as Fn,I,C as Ic,G as di,y as Bt,P as ga,z as tt,S as Dc,A as Pc,E as Lc,F as wc,H as Ec,J as _c,K as Rc,M as Mc,O as un,Q as N,R as Ge,U as ci,V as C,W as ze,X as lt,Y as Yn,Z as Ne,$ as F,a0 as pe,a1 as Te,a2 as pa,a3 as pn,a4 as bn,a5 as it,a6 as Ie,a7 as re,a8 as Xe,a9 as wn,aa as se,ab as we,ac as ui,ad as We,ae as mi,af as en,ag as En,ah as Ht,ai as tn,aj as Sn,ak as Gt,al as gi,am as pi,an as yn,ao as ke,ap as be,aq as Se,ar as vl,as as Cl,at as vn,au as Ac,av as Nc,aw as U,ax as yi,ay as Wt,az as rt,aA as ya,aB as fi,aC as fa,aD as ha,aE as hi,aF as Cn,aG as Re,aH as st,aI as _n,aJ as ki,aK as Jt,aL as Je,aM as bi,aN as zc,aO as Vc,aP as $c,aQ as Oc,aR as Qc,aS as ln,aT as rn,aU as jc,aV as Ue,aW as qc,aX as Uc,aY as Si,aZ as Bc,a_ as Hc,a$ as Fl,b0 as Gc,b1 as Wc,b2 as Jc,b3 as Zc,b4 as Xc,b5 as Yc,b6 as vi,b7 as eu,b8 as nu,b9 as au,ba as tu,bb as lu,bc as Un,bd as Zt,be as Ci,bf as ra,bg as Rt,bh as On,bi as Tn,bj as iu,bk as ru,bl as Fi,bm as ot,bn as Ki,bo as sn,bp as su,bq as ou,br as La,bs as Le,bt as Ua,bu as Ti,bv as du,bw as $e,bx as Xt,by as cu,bz as uu,bA as mu,bB as gu,bC as Yt,bD as Be,bE as nn,bF as ka,bG as pu,bH as dt,bI as xi,bJ as Ii,bK as Ct,bL as yu,bM as ct,bN as ut,bO as Ze,bP as Ve,bQ as fu,bR as el,bS as Di,bT as Pi,bU as Li,bV as hu,bW as on,bX as wi,bY as In,bZ as ku,b_ as Kl,b$ as Ei,c0 as bu,c1 as Su,c2 as vu,c3 as Cu,c4 as _i,c5 as dn,c6 as Fu,c7 as sa,c8 as Mt,c9 as Ku,ca as Ri,cb as Mi,cc as Tu,cd as xu,ce as Iu,cf as mt,cg as Ai,ch as Ma,ci as Tl,cj as Ni,ck as nl,cl as Du,cm as Pu,cn as al,co as zi,cp as Vi,cq as Lu,cr as wu,cs as Eu,ct as At,cu as $i,cv as _u,cw as Ru,cx as Oa,cy as Mu,cz as Au,cA as Oi,cB as Qi,cC as Nu,cD as zu,cE as Vu,cF as $u,cG as ji,cH as tl,cI as qi,cJ as Ou,cK as Qu,cL as Nt,cM as ju,cN as qu,cO as Uu,cP as Bu,cQ as Hu,cR as Gu,cS as Ui,cT as Wu,cU as Ju,cV as Zu,cW as Xu,cX as Yu,cY as em,cZ as nm,c_ as am,c$ as tm,d0 as lm,d1 as im,d2 as xl,d3 as Il}from"./components-DckIzNmE.js";import{p as Aa,R as Rn,n as Mn,i as rm,E as Bi,m as Hi,o as Gi,g as sm}from"./vendor-codemirror-BzwZPyJM.js";import{R as An,C as Na,X as Nn,Y as an,a as zn,T as Vn,B as oa,A as wa,b as Wi,c as ll,L as Ji,d as om,P as dm,e as cm,f as um}from"./vendor-recharts-_Jb7JjhG.js";const mm=4,gm={user:["user","human"],ai:["assistant","bot","ai"],system:["system"],tool:["tool"]},pm="Unable to parse span input messages, expected messages which include a role and content.",ym="Unable to parse span output messages, expected messages which include a role and content.",fm="Unable to parse span output expected output.value to be present.",hm="Unable to parse span attributes, attributes must be valid JSON.",km="Unable to parse model config, expected llm.model_name to be present.",bm="Unable to parse model config, expected llm.invocation_parameters JSON string to be present.",Sm="Unable to parse invocation parameters response_format, expected llm.invocation_parameters.response_format to be a well formed json object or undefined.",vm="Unable to parse tools, expected tools to be an array of valid tools.",Cm="Unable to parse prompt template variables, expected prompt template variables to be a valid JSON object string.",Dl={AZURE_OPENAI:[],ANTHROPIC:["claude"],OPENAI:["gpt","o1"],GEMINI:["gemini"]},Da="TOOL_CHOICE",Ba="tool_choice",Bn="RESPONSE_FORMAT",jn="response_format",Fm=[Da,Bn],il=Ut()(R.union([R.literal("auto"),R.literal("none"),R.literal("required"),R.object({type:R.literal("function"),function:R.object({name:R.string()})})])),rl=R.object({type:R.union([R.literal("auto"),R.literal("any"),R.literal("tool")]),disable_parallel_tool_use:R.boolean().optional(),name:R.string().optional()}),Km=rl.transform(n=>{switch(n.type){case"any":case"auto":return"auto";case"tool":return n.name?{type:"function",function:{name:n.name}}:"auto";default:return"auto"}}),Tm=il.transform(n=>typeof n=="string"?{type:"auto"}:{type:"tool",name:n.function.name});R.union([il,rl]);const xm=n=>{const{success:a,data:t}=il.safeParse(n);if(a)return{provider:"OPENAI",toolChoice:t};const{success:l,data:i}=rl.safeParse(n);return l?{provider:"ANTHROPIC",toolChoice:i}:{provider:null,toolChoice:null}},Im=n=>{const{provider:a,toolChoice:t}=xm(n);if(a==null||t==null)throw new Error("Could not detect provider of tool choice");switch(a){case"AZURE_OPENAI":case"OPENAI":return t;case"ANTHROPIC":return Km.parse(t);default:me()}},Dm=({toolChoice:n,targetProvider:a})=>{switch(a){case"AZURE_OPENAI":case"OPENAI":return n;case"ANTHROPIC":return Tm.parse(n);case"GEMINI":return n;default:me()}},Pm=({toolChoice:n,targetProvider:a})=>{try{const t=Im(n);return Dm({toolChoice:t,targetProvider:a})}catch{return null}},Lm=R.object({tool_call:R.object({id:R.string().optional(),function:R.object({name:R.string(),arguments:R.string()}).partial()}).partial()}).partial(),Zi=R.object({[de.message]:R.object({[Ee.role]:R.string(),[Ee.content]:R.union([R.string(),R.array(R.record(R.string(),R.unknown()))]).default(""),[Ee.tool_calls]:R.array(Lm).optional(),[Ee.tool_call_id]:R.string().optional()})}),wm=R.object({[de.llm]:R.object({[_e.input_messages]:R.array(Zi)})}),Em=R.object({[de.llm]:R.object({[_e.output_messages]:R.array(Zi)})}),_m=R.object({[de.output]:R.object({value:R.string()})}),Xi=Ut()(R.enum(["user","ai","system","tool"])),Rm=Ut()(R.object({id:R.number(),role:Xi,content:R.string().optional(),toolCallId:R.string().optional(),toolCalls:R.array(yc).optional()})),Mm=R.array(Rm),sl=R.lazy(()=>R.record(ii)),Am=sl,Yi=R.string().transform((n,a)=>{const{json:t}=xe(n);if(!ri(t))return a.addIssue({code:R.ZodIssueCode.custom,message:"The invocation parameters must be a valid JSON object"}),R.NEVER;const{success:l,data:i}=Am.safeParse(t);return l?i:(a.addIssue({code:R.ZodIssueCode.custom,message:"The invocation parameters must be a valid JSON object"}),R.NEVER)}).default("{}"),Nm=R.object({[de.llm]:R.object({[_e.provider]:R.string().optional(),[_e.model_name]:R.string()})}),er=R.object({[de.llm]:R.object({[_e.invocation_parameters]:Yi})}),zm=R.object({[de.llm]:R.object({[_e.invocation_parameters]:Yi.pipe(R.object({response_format:sl.optional()}))})}),Vm=R.object({url:R.object({full:R.string(),path:R.string().optional()})}),$m=R.string().transform((n,a)=>{const{json:t}=xe(n);return t==null||!ri(t)?(a.addIssue({code:R.ZodIssueCode.custom,message:"The tool JSON schema must be a valid JSON object"}),R.NEVER):t}).transform((n,a)=>{const{data:t,success:l}=si.safeParse(n);return l?t:(a.addIssue({code:R.ZodIssueCode.custom,message:"The tool JSON schema must be a valid tool schema"}),R.NEVER)}),Om=R.object({[de.llm]:R.object({[_e.tools]:R.array(R.object({[de.tool]:R.object({[Qa.json_schema]:$m})}).optional()).optional()}).optional()}).optional(),Qm=R.lazy(()=>R.object({type:R.literal("json_schema"),json_schema:R.object({name:R.string().describe("The name of the schema"),schema:ii.describe("The schema itself in JSON format"),strict:R.literal(!0).describe("The schema must be strict")})})),jm=Md(Qm,{removeAdditionalStrategy:"passthrough"}),qm=R.string().transform((n,a)=>{const{json:t}=xe(n);return xn(t)?Object.entries(t).reduce((i,[r,o])=>{if(typeof o=="string")i[r]=o;else{const{json:c}=oi(o);c!=null&&(i[r]=c)}return i},{}):(a.addIssue({code:R.ZodIssueCode.custom,message:"The prompt template variables must be a valid JSON object"}),R.NEVER)}),Um=R.object({[de.llm]:R.object({[_e.prompt_template]:R.object({variables:qm}).optional()}).optional()}).optional();function nr(n){return Xi.safeParse(n).success}function Ja(n){if(nr(n))return n;for(const[a,t]of Object.entries(gm))if(t.includes(n))return a;return kc}function Bm({toolCalls:n,provider:a}){if(n!=null)return n.map(({tool_call:t})=>{var i,r,o,c;if(t==null)return null;let l={};if(((i=t.function)==null?void 0:i.arguments)!=null){const{json:d}=xe(t.function.arguments);xn(d)&&(l=d)}switch(a){case"OPENAI":case"AZURE_OPENAI":return{id:t.id??"",function:{name:((r=t.function)==null?void 0:r.name)??"",arguments:l}};case"ANTHROPIC":return{id:t.id??"",type:"tool_use",name:((o=t.function)==null?void 0:o.name)??"",input:l};case"GEMINI":return{id:t.id??"",function:{name:((c=t.function)==null?void 0:c.name)??"",arguments:l}};default:me()}}).filter(t=>t!=null)}function ar({messages:n,provider:a}){return n.map(({message:t})=>({id:Pa(),role:t.tool_call_id!=null?Ja("tool"):Ja(t.role),content:typeof t.content=="string"?t.content:void 0,toolCalls:Bm({provider:a,toolCalls:t.tool_calls}),toolCallId:t.tool_call_id}))}function Hm({provider:n,parsedAttributes:a}){var l;const t=wm.safeParse(a);if(!t.success)return{messageParsingErrors:[pm],messages:null};if(n==="ANTHROPIC"){const{success:i,data:r}=er.safeParse(a);if(i){const o=t.data.llm.input_messages,c=(l=r.llm.invocation_parameters)==null?void 0:l.system;typeof c=="string"&&c&&(!o||o[0].message.role!=="system")&&t.data.llm.input_messages.unshift({message:{role:"system",content:c}})}}return{messageParsingErrors:[],messages:ar({provider:n,messages:t.data.llm.input_messages})}}function Gm({provider:n,parsedAttributes:a}){const t=[],l=Em.safeParse(a);if(l.success)return{output:ar({provider:n,messages:l.data.llm.output_messages}),outputParsingErrors:t};t.push(ym);const i=_m.safeParse(a);return i.success?{output:i.data.output.value,outputParsingErrors:t}:(t.push(fm),{output:void 0,outputParsingErrors:t})}function Wm(n){if(n==null)return null;switch(n.toLowerCase()){case"openai":return"OPENAI";case"anthropic":return"ANTHROPIC";case"google":return"GEMINI";case"azure":return"AZURE_OPENAI";default:return null}}function Jm(n){for(const a of Object.keys(Dl))if(Dl[a].some(l=>n.includes(l)))return a;return hc}function Zm(n){const{success:a,data:t}=Nm.safeParse(n);if(a){const l=Wm(t.llm.provider)||Jm(t.llm.model_name),i=Xm(n);return{modelConfig:{...Object.fromEntries(Object.entries(i).filter(([r,o])=>o!==null)),modelName:t.llm.model_name,provider:l,invocationParameters:[],supportedInvocationParameters:[]},parsingErrors:[]}}return{modelConfig:null,parsingErrors:[km]}}function Xm(n){const{success:a,data:t}=Vm.safeParse(n);if(a)try{const l=new URL(t.url.full);let i=l;if(t.url.path)try{i=new URL(t.url.full.split(t.url.path)[0])}catch{}return{baseUrl:`${i.origin}${i.pathname}`,endpoint:l.origin,apiVersion:l.searchParams.get("api-version")||null}}catch{}return{baseUrl:null,apiVersion:null,endpoint:null}}function Ym(n,a=[]){const{success:t,data:l}=er.safeParse(n),i=[];return t||i.push(bm),{invocationParameters:og((l==null?void 0:l.llm.invocation_parameters)??{},a),parsingErrors:i}}function eg(n){const{success:a,data:t}=zm.safeParse(n);return a?{responseFormat:t.llm.invocation_parameters.response_format,parsingErrors:[]}:{responseFormat:void 0,parsingErrors:[Sm]}}function ng(n){var a;return(((a=n==null?void 0:n.llm)==null?void 0:a.tools)??[]).map(t=>(t==null?void 0:t.tool)==null?null:{id:qa(),definition:t.tool.json_schema}).filter(t=>t!=null)}function ag(n){var l;const{data:a,success:t}=Om.safeParse(n);return t?((l=a==null?void 0:a.llm)==null?void 0:l.tools)==null?{tools:null,parsingErrors:[]}:{tools:ng(a),parsingErrors:[]}:{tools:null,parsingErrors:[vm]}}function tg(n){var l;const{success:a,data:t}=Um.safeParse(n);return a?((l=t==null?void 0:t.llm)==null?void 0:l.prompt_template)==null?{variables:null,parsingErrors:[]}:{variables:t.llm.prompt_template.variables,parsingErrors:[]}:{variables:null,parsingErrors:[Cm]}}function lg(n){const a=fc(),{json:t,parseError:l}=xe(n.attributes);if(l)return{playgroundInstance:{...a,spanId:(n==null?void 0:n.id)??null},parsingErrors:[hm]};const i=n.invocationParameters,r=Zm(t);let{modelConfig:o}=r;const{parsingErrors:c}=r,{messages:d,messageParsingErrors:m}=Hm({provider:(o==null?void 0:o.provider)??a.model.provider,parsedAttributes:t}),{output:y,outputParsingErrors:g}=Gm({provider:(o==null?void 0:o.provider)??a.model.provider,parsedAttributes:t}),{invocationParameters:f,parsingErrors:p}=Ym(t,i),{variables:h,parsingErrors:b}=tg(t),{parsingErrors:K}=eg(t);o=o!=null?{...o,invocationParameters:K.length>0?f.filter(P=>P.invocationName!==jn&&P.canonicalName!==Bn):f}:null;const{tools:T,parsingErrors:D}=ag(t);return{playgroundInstance:{...a,model:o??a.model,template:d!=null?{__type:"chat",messages:d}:a.template,output:y,spanId:n.id,tools:T??a.tools},playgroundInput:h!=null?{variablesValueCache:h}:void 0,parsingErrors:[...m,...g,...c,...D,...p,...K,...b]}}const ig=n=>Mm.safeParse(n).success,tr=({instance:n,templateLanguage:a})=>{if(a==Qn.NONE)return[];const t=new Set,l=n.template.__type,i=bc(a);switch(l){case"chat":{n.template.messages.forEach(r=>{(r.content==null?[]:i.extractVariables(r.content)).forEach(c=>{t.add(c)})});break}case"text_completion":{i.extractVariables(n.template.prompt).forEach(o=>{t.add(o)});break}default:me()}return Array.from(t)},rg=({instances:n,templateLanguage:a})=>a==Qn.NONE?[]:Array.from(new Set(n.flatMap(t=>tr({instance:t,templateLanguage:a})))),lr=({instances:n,templateLanguage:a,input:t})=>{if(a==Qn.NONE)return{variablesMap:{},variableKeys:[]};const l=rg({instances:n,templateLanguage:a}),i=t.variablesValueCache??{};return{variablesMap:l.reduce((o,c)=>(o[c]=i[c]||"",o),{}),variableKeys:l}};function Hn(n,a){return n.invocationName===a.invocationName||n.canonicalName!=null&&a.canonicalName!=null&&n.canonicalName===a.canonicalName}const sg=(n,a)=>n.filter(t=>a.some(l=>Hn(l,t))).map(t=>{var l;return{...t,invocationName:((l=a.find(i=>Hn(i,t)))==null?void 0:l.invocationName)??t.invocationName}}),gt=n=>n.replace(/_([a-z])/g,(a,t)=>t.toUpperCase()),og=(n,a)=>Object.entries(n).map(([t,l])=>{const i=a.find(r=>r.canonicalName&&r.canonicalName.toLowerCase()===t.toLowerCase()||r.invocationName&&r.invocationName.toLowerCase()===t.toLowerCase());return i==null||i.invocationInputField==null||i.invocationName==null?null:{canonicalName:i.canonicalName,invocationName:i.invocationName,[gt(i.invocationInputField)]:l}}).filter(t=>t!=null),Ha=n=>{const{provider:a,validatedToolDefinition:t}=vc(n.definition);switch(a){case"OPENAI":case"AZURE_OPENAI":return t.function.name;case"ANTHROPIC":return t.name;case"UNKNOWN":return null;default:me()}},Pl=({provider:n,toolNumber:a})=>{switch(n){case"OPENAI":case"AZURE_OPENAI":return{id:qa(),definition:Sl(a)};case"ANTHROPIC":return{id:qa(),definition:Cc(a)};case"GEMINI":return{id:qa(),definition:Sl(a)};default:me()}},dg=n=>{switch(n){case"OPENAI":case"AZURE_OPENAI":return bl();case"ANTHROPIC":return Sc();case"GEMINI":return bl();default:me()}};function cg(n){return{content:n.content,role:ug(n.role),toolCalls:n.toolCalls,toolCallId:n.toolCallId}}function ug(n){switch(n){case"system":return"SYSTEM";case"user":return"USER";case"tool":return"TOOL";case"ai":return"AI";default:me()}}const ir=({playgroundStore:n,instanceId:a,credentials:t})=>{const{instances:l}=n.getState(),i=l.find(m=>m.id===a);if(!i)throw new Error(`No instance found for id ${a}`);if(i.template.__type!=="chat")throw new Error("We only support chat templates for now");const r=i.model.supportedInvocationParameters;let o=[...i.model.invocationParameters];const c=Pm({toolChoice:i.toolChoice,targetProvider:i.model.provider});i.tools.length>0?(o=o.filter(m=>m.invocationName!==Ba&&m.canonicalName!==Da),o.push({canonicalName:Da,invocationName:Ba,valueJson:c})):o=o.filter(m=>m.invocationName!==Ba&&m.canonicalName!==Da),o=r.length?sg(o,r):o;const d=i.model.provider==="AZURE_OPENAI"?{endpoint:i.model.endpoint,apiVersion:i.model.apiVersion}:{};return{messages:i.template.messages.map(cg),model:{providerKey:i.model.provider,name:i.model.modelName||"",baseUrl:i.model.baseUrl,...d},invocationParameters:o,tools:i.tools.length?i.tools.map(m=>m.definition):void 0,apiKey:t[i.model.provider]||null}},mg=({playgroundStore:n,instanceId:a,credentials:t})=>{const l=ir({playgroundStore:n,instanceId:a,credentials:t}),{instances:i,templateLanguage:r,input:o}=n.getState(),{variablesMap:c}=lr({instances:i,input:o,templateLanguage:r});return{...l,template:{variables:c,language:r}}},Ll=({playgroundStore:n,instanceId:a,credentials:t,datasetId:l})=>({...ir({playgroundStore:n,instanceId:a,credentials:t}),templateLanguage:n.getState().templateLanguage,datasetId:l});function rr(n){return n==null||n===""?"{}":typeof n=="string"?n:JSON.stringify(n,null,2)}function sr(n,a){return a.filter(t=>t.required).every(t=>n.some(l=>Hn(l,t)))}const gg=n=>{for(const[a,t]of Object.entries(n))if(a.endsWith("DefaultValue")&&t!=null)return n[a]};function B1(n,a){const t=new Map(n.map(l=>[l.canonicalName||l.invocationName,l]));return a.forEach(l=>{var d;const i=l.canonicalName||l.invocationName,r=gg(l),o=gt(l.invocationInputField||"");if(!l.invocationName||!l.invocationInputField||!i||r==null||((d=t.get(i))==null?void 0:d[o])!=null)return;const c={canonicalName:l.canonicalName,invocationName:l.invocationName,[o]:r};t.set(i,c)}),Array.from(t.values())}const or=u.createContext(null);function H1({children:n,...a}){const[t]=u.useState(()=>Fc(a));return e(or.Provider,{value:t,children:n})}function da(n,a){const t=ve.useContext(or);if(!t)throw new Error("Missing CredentialsContext.Provider in the tree");return _a(t,n,a)}const dr=u.createContext(null);function pg(){const n=u.useContext(dr);if(n===null)throw new Error("useFunctionality must be used within a FunctionalityProvider");return n}function G1(n){return e(dr.Provider,{value:{authenticationEnabled:window.Config.authenticationEnabled},children:n.children})}const yg=v`
2
2
  display: flex;
3
3
  direction: row;
4
4
  height: 100vh;
phoenix/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "7.12.0"
1
+ __version__ = "7.12.2"