arize-phoenix 5.9.0__py3-none-any.whl → 5.9.1__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.
- {arize_phoenix-5.9.0.dist-info → arize_phoenix-5.9.1.dist-info}/METADATA +1 -1
- {arize_phoenix-5.9.0.dist-info → arize_phoenix-5.9.1.dist-info}/RECORD +17 -17
- phoenix/config.py +13 -1
- phoenix/server/api/routers/oauth2.py +55 -23
- phoenix/server/static/.vite/manifest.json +31 -31
- phoenix/server/static/assets/{components-DU-8CYbi.js → components-BcvRmBnN.js} +98 -98
- phoenix/server/static/assets/{index-D9E16vvV.js → index-BF4RUiOz.js} +2 -2
- phoenix/server/static/assets/{pages-t09OI1rC.js → pages-CM_Zho_x.js} +289 -261
- phoenix/server/static/assets/{vendor-D04tenE6.js → vendor-Bjm5T3cE.js} +1 -1
- phoenix/server/static/assets/{vendor-arizeai-D3NxMQw0.js → vendor-arizeai-CQhWGEdL.js} +1 -1
- phoenix/server/static/assets/{vendor-codemirror-XTiZSlqq.js → vendor-codemirror-CdtiO80y.js} +1 -1
- phoenix/server/static/assets/{vendor-recharts-p0L0neVs.js → vendor-recharts-BqWon6Py.js} +1 -1
- phoenix/version.py +1 -1
- {arize_phoenix-5.9.0.dist-info → arize_phoenix-5.9.1.dist-info}/WHEEL +0 -0
- {arize_phoenix-5.9.0.dist-info → arize_phoenix-5.9.1.dist-info}/entry_points.txt +0 -0
- {arize_phoenix-5.9.0.dist-info → arize_phoenix-5.9.1.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-5.9.0.dist-info → arize_phoenix-5.9.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
phoenix/__init__.py,sha256=X3eUEwd2rG8KKWWYVNNDJoqo08ihfjgHhlP29dcdNJE,5481
|
|
2
2
|
phoenix/auth.py,sha256=JpkwJbis2INlIXWcQ-M_Nk5Ln9LBgHMdWNnaAQp0D2w,10940
|
|
3
|
-
phoenix/config.py,sha256=
|
|
3
|
+
phoenix/config.py,sha256=kg1ABxnzgmBK2Uv277VLlY2_Hd3k8DGgZCKYUqSdwwI,25405
|
|
4
4
|
phoenix/datetime_utils.py,sha256=iJzNG6YJ6V7_u8B2iA7P2Z26FyxYbOPtx0dhJ7kNDHA,3398
|
|
5
5
|
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=
|
|
9
|
+
phoenix/version.py,sha256=cJut-wsFrREu2PRwluu5_M66aMFR7RNxG41cS7q4-vM,22
|
|
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
|
|
@@ -178,7 +178,7 @@ phoenix/server/api/openapi/schema.py,sha256=S1nPq4iR578fPESWDAHNv9nlgh_go6zwTalL
|
|
|
178
178
|
phoenix/server/api/routers/__init__.py,sha256=YIzHsIFOOXuCRbDkMUHx-McrANFJK5UfUn6a4BNIzmo,277
|
|
179
179
|
phoenix/server/api/routers/auth.py,sha256=T774FE5mqrfRSSYo1snpR5NIp3YzAJnsLsY9FJB9GCA,11164
|
|
180
180
|
phoenix/server/api/routers/embeddings.py,sha256=BpZGJee0pdL0W5Rp1L0b30dEtZTgJeVqXky8LgZ0ZXw,898
|
|
181
|
-
phoenix/server/api/routers/oauth2.py,sha256=
|
|
181
|
+
phoenix/server/api/routers/oauth2.py,sha256=bSrTZAAWW4WgZVwkr39xbo5jZEYL4w4wCbEe280M6f0,17157
|
|
182
182
|
phoenix/server/api/routers/utils.py,sha256=M41BoH-fl37izhRuN2aX7lWm7jOC20A_3uClv9TVUUY,583
|
|
183
183
|
phoenix/server/api/routers/v1/__init__.py,sha256=aLEHzzU8kQo4Oqsv2an35lH5VYUxAZQrcG7CXZA_Lx4,2214
|
|
184
184
|
phoenix/server/api/routers/v1/datasets.py,sha256=tNh0CxAvSkWh-_5AwisGN1degQlUNGU3uufGa7MIbOw,36985
|
|
@@ -273,15 +273,15 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
|
|
|
273
273
|
phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
|
|
274
274
|
phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
|
|
275
275
|
phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
|
|
276
|
-
phoenix/server/static/.vite/manifest.json,sha256=
|
|
277
|
-
phoenix/server/static/assets/components-
|
|
278
|
-
phoenix/server/static/assets/index-
|
|
279
|
-
phoenix/server/static/assets/pages-
|
|
280
|
-
phoenix/server/static/assets/vendor-
|
|
276
|
+
phoenix/server/static/.vite/manifest.json,sha256=ToIrbND1XCIzmfOfMwomFfDVuzLm9Guraz0xtvELOW8,1929
|
|
277
|
+
phoenix/server/static/assets/components-BcvRmBnN.js,sha256=NS45I5Vt1azRNaNNZWJDO2qv1m5junln5PSbZ62iIJo,306054
|
|
278
|
+
phoenix/server/static/assets/index-BF4RUiOz.js,sha256=0QMhyXmx-SNTtEoJnAUDoC4_TKd8qN4N1ABCtDA7jZ0,7285
|
|
279
|
+
phoenix/server/static/assets/pages-CM_Zho_x.js,sha256=4EimxhNy3yGgwydDhTH_1sWNrtPoaQc4mISioDsEUh8,628225
|
|
280
|
+
phoenix/server/static/assets/vendor-Bjm5T3cE.js,sha256=6kC6MC_f0HVJtmOO022zWk7ti6RIwD5eC_QBceDDjJU,10898295
|
|
281
281
|
phoenix/server/static/assets/vendor-DxkFTwjz.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
|
|
282
|
-
phoenix/server/static/assets/vendor-arizeai-
|
|
283
|
-
phoenix/server/static/assets/vendor-codemirror-
|
|
284
|
-
phoenix/server/static/assets/vendor-recharts-
|
|
282
|
+
phoenix/server/static/assets/vendor-arizeai-CQhWGEdL.js,sha256=CaTXxr2IuxlTr_R58IRptZyzFgZDsWALFfWfVmhU85Y,307005
|
|
283
|
+
phoenix/server/static/assets/vendor-codemirror-CdtiO80y.js,sha256=Dw-1RGNxuzb-klAW-Gs7uFkocAVBxjmCCUc31sn4V8g,392711
|
|
284
|
+
phoenix/server/static/assets/vendor-recharts-BqWon6Py.js,sha256=AHlTyMC6UvNgLHOhSfFBal2Knb8azXGzH2qlLuShoYs,282859
|
|
285
285
|
phoenix/server/static/assets/vendor-three-DwGkEfCM.js,sha256=0D12ZgKzfKCTSdSTKJBFR2RZO_xxeMXrqDp0AszZqHY,620972
|
|
286
286
|
phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
287
287
|
phoenix/server/templates/index.html,sha256=ram6sfy2obf_F053ay35V30v-mnRWZ86rK-PstXLy1c,4457
|
|
@@ -322,9 +322,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
|
|
|
322
322
|
phoenix/utilities/re.py,sha256=x8Xbk-Wa6qDMAtUd_7JtZvKtrYEuMY-bchB0n163_5c,2006
|
|
323
323
|
phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
324
324
|
phoenix/utilities/template_formatters.py,sha256=JuOyvukMPLDHa1uVNw0kCFBUnIxy02dwAWNZimdIZU4,2423
|
|
325
|
-
arize_phoenix-5.9.
|
|
326
|
-
arize_phoenix-5.9.
|
|
327
|
-
arize_phoenix-5.9.
|
|
328
|
-
arize_phoenix-5.9.
|
|
329
|
-
arize_phoenix-5.9.
|
|
330
|
-
arize_phoenix-5.9.
|
|
325
|
+
arize_phoenix-5.9.1.dist-info/METADATA,sha256=7a966eolx4IkP09ctz4Iif96WmGCrGrCQlmTS7hdGK4,22613
|
|
326
|
+
arize_phoenix-5.9.1.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
|
327
|
+
arize_phoenix-5.9.1.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
|
|
328
|
+
arize_phoenix-5.9.1.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
|
|
329
|
+
arize_phoenix-5.9.1.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
|
|
330
|
+
arize_phoenix-5.9.1.dist-info/RECORD,,
|
phoenix/config.py
CHANGED
|
@@ -559,7 +559,19 @@ def get_env_host() -> str:
|
|
|
559
559
|
|
|
560
560
|
|
|
561
561
|
def get_env_host_root_path() -> str:
|
|
562
|
-
|
|
562
|
+
if (host_root_path := os.getenv(ENV_PHOENIX_HOST_ROOT_PATH)) is None:
|
|
563
|
+
return HOST_ROOT_PATH
|
|
564
|
+
if not host_root_path.startswith("/"):
|
|
565
|
+
raise ValueError(
|
|
566
|
+
f"Invalid value for environment variable {ENV_PHOENIX_HOST_ROOT_PATH}: "
|
|
567
|
+
f"{host_root_path}. Value must start with '/'"
|
|
568
|
+
)
|
|
569
|
+
if host_root_path.endswith("/"):
|
|
570
|
+
raise ValueError(
|
|
571
|
+
f"Invalid value for environment variable {ENV_PHOENIX_HOST_ROOT_PATH}: "
|
|
572
|
+
f"{host_root_path}. Value cannot end with '/'"
|
|
573
|
+
)
|
|
574
|
+
return host_root_path
|
|
563
575
|
|
|
564
576
|
|
|
565
577
|
def get_env_collector_endpoint() -> Optional[str]:
|
|
@@ -14,7 +14,7 @@ from sqlalchemy import Boolean, and_, case, cast, func, insert, or_, select, upd
|
|
|
14
14
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
15
15
|
from sqlalchemy.orm import joinedload
|
|
16
16
|
from sqlean.dbapi2 import IntegrityError # type: ignore[import-untyped]
|
|
17
|
-
from starlette.datastructures import URL
|
|
17
|
+
from starlette.datastructures import URL, URLPath
|
|
18
18
|
from starlette.responses import RedirectResponse
|
|
19
19
|
from starlette.routing import Router
|
|
20
20
|
from starlette.status import HTTP_302_FOUND
|
|
@@ -86,8 +86,16 @@ async def login(
|
|
|
86
86
|
if not isinstance(
|
|
87
87
|
oauth2_client := request.app.state.oauth2_clients.get_client(idp_name), OAuth2Client
|
|
88
88
|
):
|
|
89
|
-
return _redirect_to_login(error=f"Unknown IDP: {idp_name}.")
|
|
90
|
-
|
|
89
|
+
return _redirect_to_login(request=request, error=f"Unknown IDP: {idp_name}.")
|
|
90
|
+
if (referer := request.headers.get("referer")) is not None:
|
|
91
|
+
# if the referer header is present, use it as the origin URL
|
|
92
|
+
parsed_url = urlparse(referer)
|
|
93
|
+
origin_url = _append_root_path_if_exists(
|
|
94
|
+
request=request, base_url=f"{parsed_url.scheme}://{parsed_url.netloc}"
|
|
95
|
+
)
|
|
96
|
+
else:
|
|
97
|
+
# fall back to the base url as the origin URL
|
|
98
|
+
origin_url = str(request.base_url)
|
|
91
99
|
authorization_url_data = await oauth2_client.create_authorization_url(
|
|
92
100
|
redirect_uri=_get_create_tokens_endpoint(
|
|
93
101
|
request=request, origin_url=origin_url, idp_name=idp_name
|
|
@@ -124,22 +132,22 @@ async def create_tokens(
|
|
|
124
132
|
) -> RedirectResponse:
|
|
125
133
|
secret = request.app.state.get_secret()
|
|
126
134
|
if state != stored_state:
|
|
127
|
-
return _redirect_to_login(error=_INVALID_OAUTH2_STATE_MESSAGE)
|
|
135
|
+
return _redirect_to_login(request=request, error=_INVALID_OAUTH2_STATE_MESSAGE)
|
|
128
136
|
try:
|
|
129
137
|
payload = _parse_state_payload(secret=secret, state=state)
|
|
130
138
|
except JoseError:
|
|
131
|
-
return _redirect_to_login(error=_INVALID_OAUTH2_STATE_MESSAGE)
|
|
139
|
+
return _redirect_to_login(request=request, error=_INVALID_OAUTH2_STATE_MESSAGE)
|
|
132
140
|
if (return_url := payload.get("return_url")) is not None and not _is_relative_url(
|
|
133
141
|
unquote(return_url)
|
|
134
142
|
):
|
|
135
|
-
return _redirect_to_login(error="Attempting login with unsafe return URL.")
|
|
143
|
+
return _redirect_to_login(request=request, error="Attempting login with unsafe return URL.")
|
|
136
144
|
assert isinstance(access_token_expiry := request.app.state.access_token_expiry, timedelta)
|
|
137
145
|
assert isinstance(refresh_token_expiry := request.app.state.refresh_token_expiry, timedelta)
|
|
138
146
|
token_store: TokenStore = request.app.state.get_token_store()
|
|
139
147
|
if not isinstance(
|
|
140
148
|
oauth2_client := request.app.state.oauth2_clients.get_client(idp_name), OAuth2Client
|
|
141
149
|
):
|
|
142
|
-
return _redirect_to_login(error=f"Unknown IDP: {idp_name}.")
|
|
150
|
+
return _redirect_to_login(request=request, error=f"Unknown IDP: {idp_name}.")
|
|
143
151
|
try:
|
|
144
152
|
token_data = await oauth2_client.fetch_access_token(
|
|
145
153
|
state=state,
|
|
@@ -149,11 +157,12 @@ async def create_tokens(
|
|
|
149
157
|
),
|
|
150
158
|
)
|
|
151
159
|
except OAuthError as error:
|
|
152
|
-
return _redirect_to_login(error=str(error))
|
|
160
|
+
return _redirect_to_login(request=request, error=str(error))
|
|
153
161
|
_validate_token_data(token_data)
|
|
154
162
|
if "id_token" not in token_data:
|
|
155
163
|
return _redirect_to_login(
|
|
156
|
-
|
|
164
|
+
request=request,
|
|
165
|
+
error=f"OAuth2 IDP {idp_name} does not appear to support OpenID Connect.",
|
|
157
166
|
)
|
|
158
167
|
user_info = await oauth2_client.parse_id_token(token_data, nonce=stored_nonce)
|
|
159
168
|
user_info = _parse_user_info(user_info)
|
|
@@ -165,14 +174,18 @@ async def create_tokens(
|
|
|
165
174
|
user_info=user_info,
|
|
166
175
|
)
|
|
167
176
|
except EmailAlreadyInUse as error:
|
|
168
|
-
return _redirect_to_login(error=str(error))
|
|
177
|
+
return _redirect_to_login(request=request, error=str(error))
|
|
169
178
|
access_token, refresh_token = await create_access_and_refresh_tokens(
|
|
170
179
|
user=user,
|
|
171
180
|
token_store=token_store,
|
|
172
181
|
access_token_expiry=access_token_expiry,
|
|
173
182
|
refresh_token_expiry=refresh_token_expiry,
|
|
174
183
|
)
|
|
175
|
-
|
|
184
|
+
redirect_path = _prepend_root_path_if_exists(request=request, path=return_url or "/")
|
|
185
|
+
response = RedirectResponse(
|
|
186
|
+
url=redirect_path,
|
|
187
|
+
status_code=HTTP_302_FOUND,
|
|
188
|
+
)
|
|
176
189
|
response = set_access_token_cookie(
|
|
177
190
|
response=response, access_token=access_token, max_age=access_token_expiry
|
|
178
191
|
)
|
|
@@ -352,17 +365,46 @@ class EmailAlreadyInUse(Exception):
|
|
|
352
365
|
pass
|
|
353
366
|
|
|
354
367
|
|
|
355
|
-
def _redirect_to_login(*, error: str) -> RedirectResponse:
|
|
368
|
+
def _redirect_to_login(*, request: Request, error: str) -> RedirectResponse:
|
|
356
369
|
"""
|
|
357
370
|
Creates a RedirectResponse to the login page to display an error message.
|
|
358
371
|
"""
|
|
359
|
-
|
|
372
|
+
login_path = _prepend_root_path_if_exists(request=request, path="/login")
|
|
373
|
+
url = URL(login_path).include_query_params(error=error)
|
|
360
374
|
response = RedirectResponse(url=url)
|
|
361
375
|
response = delete_oauth2_state_cookie(response)
|
|
362
376
|
response = delete_oauth2_nonce_cookie(response)
|
|
363
377
|
return response
|
|
364
378
|
|
|
365
379
|
|
|
380
|
+
def _prepend_root_path_if_exists(*, request: Request, path: str) -> str:
|
|
381
|
+
"""
|
|
382
|
+
If a root path is configured, prepends it to the input path.
|
|
383
|
+
"""
|
|
384
|
+
if not path.startswith("/"):
|
|
385
|
+
raise ValueError("path must start with a forward slash")
|
|
386
|
+
root_path = _get_root_path(request=request)
|
|
387
|
+
if root_path.endswith("/"):
|
|
388
|
+
root_path = root_path.rstrip("/")
|
|
389
|
+
return root_path + path
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
def _append_root_path_if_exists(*, request: Request, base_url: str) -> str:
|
|
393
|
+
"""
|
|
394
|
+
If a root path is configured, appends it to the input base url.
|
|
395
|
+
"""
|
|
396
|
+
if not (root_path := _get_root_path(request=request)):
|
|
397
|
+
return base_url
|
|
398
|
+
return str(URLPath(root_path).make_absolute_url(base_url=base_url))
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
def _get_root_path(*, request: Request) -> str:
|
|
402
|
+
"""
|
|
403
|
+
Gets the root path from the request.
|
|
404
|
+
"""
|
|
405
|
+
return str(request.scope.get("root_path", ""))
|
|
406
|
+
|
|
407
|
+
|
|
366
408
|
def _get_create_tokens_endpoint(*, request: Request, origin_url: str, idp_name: str) -> str:
|
|
367
409
|
"""
|
|
368
410
|
Gets the endpoint for create tokens route.
|
|
@@ -427,16 +469,6 @@ def _with_random_suffix(string: str) -> str:
|
|
|
427
469
|
return f"{string}-{randrange(10_000, 100_000)}"
|
|
428
470
|
|
|
429
471
|
|
|
430
|
-
def _get_origin_url(request: Request) -> str:
|
|
431
|
-
"""
|
|
432
|
-
Infers the origin URL from the request.
|
|
433
|
-
"""
|
|
434
|
-
if (referer := request.headers.get("referer")) is None:
|
|
435
|
-
return str(request.base_url)
|
|
436
|
-
parsed_url = urlparse(referer)
|
|
437
|
-
return f"{parsed_url.scheme}://{parsed_url.netloc}"
|
|
438
|
-
|
|
439
|
-
|
|
440
472
|
def _is_oauth2_state_payload(maybe_state_payload: Any) -> TypeGuard[_OAuth2StatePayload]:
|
|
441
473
|
"""
|
|
442
474
|
Determines whether the given object is an OAuth2 state payload.
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_components-
|
|
3
|
-
"file": "assets/components-
|
|
2
|
+
"_components-BcvRmBnN.js": {
|
|
3
|
+
"file": "assets/components-BcvRmBnN.js",
|
|
4
4
|
"name": "components",
|
|
5
5
|
"imports": [
|
|
6
|
-
"_vendor-
|
|
7
|
-
"_vendor-arizeai-
|
|
8
|
-
"_vendor-codemirror-
|
|
9
|
-
"_pages-
|
|
6
|
+
"_vendor-Bjm5T3cE.js",
|
|
7
|
+
"_vendor-arizeai-CQhWGEdL.js",
|
|
8
|
+
"_vendor-codemirror-CdtiO80y.js",
|
|
9
|
+
"_pages-CM_Zho_x.js",
|
|
10
10
|
"_vendor-three-DwGkEfCM.js"
|
|
11
11
|
]
|
|
12
12
|
},
|
|
13
|
-
"_pages-
|
|
14
|
-
"file": "assets/pages-
|
|
13
|
+
"_pages-CM_Zho_x.js": {
|
|
14
|
+
"file": "assets/pages-CM_Zho_x.js",
|
|
15
15
|
"name": "pages",
|
|
16
16
|
"imports": [
|
|
17
|
-
"_vendor-
|
|
18
|
-
"_vendor-arizeai-
|
|
19
|
-
"_components-
|
|
20
|
-
"_vendor-recharts-
|
|
21
|
-
"_vendor-codemirror-
|
|
17
|
+
"_vendor-Bjm5T3cE.js",
|
|
18
|
+
"_vendor-arizeai-CQhWGEdL.js",
|
|
19
|
+
"_components-BcvRmBnN.js",
|
|
20
|
+
"_vendor-recharts-BqWon6Py.js",
|
|
21
|
+
"_vendor-codemirror-CdtiO80y.js"
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
24
|
"_vendor-!~{003}~.js": {
|
|
25
25
|
"file": "assets/vendor-DxkFTwjz.css",
|
|
26
26
|
"src": "_vendor-!~{003}~.js"
|
|
27
27
|
},
|
|
28
|
-
"_vendor-
|
|
29
|
-
"file": "assets/vendor-
|
|
28
|
+
"_vendor-Bjm5T3cE.js": {
|
|
29
|
+
"file": "assets/vendor-Bjm5T3cE.js",
|
|
30
30
|
"name": "vendor",
|
|
31
31
|
"imports": [
|
|
32
32
|
"_vendor-three-DwGkEfCM.js"
|
|
@@ -35,25 +35,25 @@
|
|
|
35
35
|
"assets/vendor-DxkFTwjz.css"
|
|
36
36
|
]
|
|
37
37
|
},
|
|
38
|
-
"_vendor-arizeai-
|
|
39
|
-
"file": "assets/vendor-arizeai-
|
|
38
|
+
"_vendor-arizeai-CQhWGEdL.js": {
|
|
39
|
+
"file": "assets/vendor-arizeai-CQhWGEdL.js",
|
|
40
40
|
"name": "vendor-arizeai",
|
|
41
41
|
"imports": [
|
|
42
|
-
"_vendor-
|
|
42
|
+
"_vendor-Bjm5T3cE.js"
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
|
-
"_vendor-codemirror-
|
|
46
|
-
"file": "assets/vendor-codemirror-
|
|
45
|
+
"_vendor-codemirror-CdtiO80y.js": {
|
|
46
|
+
"file": "assets/vendor-codemirror-CdtiO80y.js",
|
|
47
47
|
"name": "vendor-codemirror",
|
|
48
48
|
"imports": [
|
|
49
|
-
"_vendor-
|
|
49
|
+
"_vendor-Bjm5T3cE.js"
|
|
50
50
|
]
|
|
51
51
|
},
|
|
52
|
-
"_vendor-recharts-
|
|
53
|
-
"file": "assets/vendor-recharts-
|
|
52
|
+
"_vendor-recharts-BqWon6Py.js": {
|
|
53
|
+
"file": "assets/vendor-recharts-BqWon6Py.js",
|
|
54
54
|
"name": "vendor-recharts",
|
|
55
55
|
"imports": [
|
|
56
|
-
"_vendor-
|
|
56
|
+
"_vendor-Bjm5T3cE.js"
|
|
57
57
|
]
|
|
58
58
|
},
|
|
59
59
|
"_vendor-three-DwGkEfCM.js": {
|
|
@@ -61,18 +61,18 @@
|
|
|
61
61
|
"name": "vendor-three"
|
|
62
62
|
},
|
|
63
63
|
"index.tsx": {
|
|
64
|
-
"file": "assets/index-
|
|
64
|
+
"file": "assets/index-BF4RUiOz.js",
|
|
65
65
|
"name": "index",
|
|
66
66
|
"src": "index.tsx",
|
|
67
67
|
"isEntry": true,
|
|
68
68
|
"imports": [
|
|
69
|
-
"_vendor-
|
|
70
|
-
"_vendor-arizeai-
|
|
71
|
-
"_pages-
|
|
72
|
-
"_components-
|
|
69
|
+
"_vendor-Bjm5T3cE.js",
|
|
70
|
+
"_vendor-arizeai-CQhWGEdL.js",
|
|
71
|
+
"_pages-CM_Zho_x.js",
|
|
72
|
+
"_components-BcvRmBnN.js",
|
|
73
73
|
"_vendor-three-DwGkEfCM.js",
|
|
74
|
-
"_vendor-recharts-
|
|
75
|
-
"_vendor-codemirror-
|
|
74
|
+
"_vendor-recharts-BqWon6Py.js",
|
|
75
|
+
"_vendor-codemirror-CdtiO80y.js"
|
|
76
76
|
]
|
|
77
77
|
}
|
|
78
78
|
}
|