@mastra/playground-ui 43.0.0-alpha.4 → 43.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/src/lib/query-utils.d.ts +1 -6
- package/dist/style.css +33 -16
- package/dist/utils/query-utils.cjs.js +5 -1
- package/dist/utils/query-utils.cjs.js.map +1 -1
- package/dist/utils/query-utils.es.js +5 -1
- package/dist/utils/query-utils.es.js.map +1 -1
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @mastra/playground-ui
|
|
2
2
|
|
|
3
|
+
## 43.0.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fixed autoscroll scrollbars not becoming transparent. ([#20171](https://github.com/mastra-ai/mastra/pull/20171))
|
|
8
|
+
|
|
9
|
+
- Fixed Studio repeatedly polling observability endpoints when the observability storage domain is disabled. Studio now treats the disabled domain as an unavailable capability: score and log views stop polling, failed requests are not retried, and the Logs page shows a clear unavailable state instead of a generic error. Related to [#20157](https://github.com/mastra-ai/mastra/issues/20157). ([#20158](https://github.com/mastra-ai/mastra/pull/20158))
|
|
10
|
+
|
|
11
|
+
- Fixed the trace feedback panel continuing to poll every 3 seconds when the observability storage domain is disabled. Studio now also recognizes the "Scores storage domain is not available" response from the span scores endpoint, so span score polling stops for disabled scores storage as well. Follow-up to [#20158](https://github.com/mastra-ai/mastra/pull/20158). ([#20170](https://github.com/mastra-ai/mastra/pull/20170))
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`c8d8a01`](https://github.com/mastra-ai/mastra/commit/c8d8a010ee2efe2b7bf4d07707382c34c87b14e4), [`df6a9ce`](https://github.com/mastra-ai/mastra/commit/df6a9ce87214f7aadb2edfe62f67605fe998a0a4), [`73839cb`](https://github.com/mastra-ai/mastra/commit/73839cb58322679c170627d1015669ede5f619aa), [`371cf60`](https://github.com/mastra-ai/mastra/commit/371cf6075cef88ac6919a08d59a82e485397364a), [`17e3206`](https://github.com/mastra-ai/mastra/commit/17e3206b044e704699bdda53db2d617beff3b9da), [`8e4dc79`](https://github.com/mastra-ai/mastra/commit/8e4dc793dcf035ea506f9ce79f56d2d501a4be14), [`2db93cc`](https://github.com/mastra-ai/mastra/commit/2db93ccd0b872e4de7853a93383efe0647901df8), [`3a507cb`](https://github.com/mastra-ai/mastra/commit/3a507cbd42da6d56be2975f374d53dafbce7c0d1), [`094ab61`](https://github.com/mastra-ai/mastra/commit/094ab6129a1a3ecf6eeb86decac17d5faea4e02a), [`fe80944`](https://github.com/mastra-ai/mastra/commit/fe80944f3ef6681fea6eae8200fce387b7bb3c2f), [`263d2ca`](https://github.com/mastra-ai/mastra/commit/263d2cac80ba3b03b9c0f008db6f1f1b9eb0278c), [`75f843d`](https://github.com/mastra-ai/mastra/commit/75f843d09f758223e6eeb321321bdcc5c7e779d0), [`e51e166`](https://github.com/mastra-ai/mastra/commit/e51e166c52e220abc9b64554ce37359dca8544b1)]:
|
|
14
|
+
- @mastra/core@1.53.0
|
|
15
|
+
- @mastra/client-js@1.34.0
|
|
16
|
+
- @mastra/react@1.3.2
|
|
17
|
+
|
|
18
|
+
## 43.0.0-alpha.5
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- Fixed autoscroll scrollbars not becoming transparent. ([#20171](https://github.com/mastra-ai/mastra/pull/20171))
|
|
23
|
+
|
|
24
|
+
- Fixed the trace feedback panel continuing to poll every 3 seconds when the observability storage domain is disabled. Studio now also recognizes the "Scores storage domain is not available" response from the span scores endpoint, so span score polling stops for disabled scores storage as well. Follow-up to [#20158](https://github.com/mastra-ai/mastra/pull/20158). ([#20170](https://github.com/mastra-ai/mastra/pull/20170))
|
|
25
|
+
|
|
26
|
+
- Updated dependencies [[`73839cb`](https://github.com/mastra-ai/mastra/commit/73839cb58322679c170627d1015669ede5f619aa), [`8e4dc79`](https://github.com/mastra-ai/mastra/commit/8e4dc793dcf035ea506f9ce79f56d2d501a4be14), [`2db93cc`](https://github.com/mastra-ai/mastra/commit/2db93ccd0b872e4de7853a93383efe0647901df8), [`094ab61`](https://github.com/mastra-ai/mastra/commit/094ab6129a1a3ecf6eeb86decac17d5faea4e02a), [`fe80944`](https://github.com/mastra-ai/mastra/commit/fe80944f3ef6681fea6eae8200fce387b7bb3c2f), [`e51e166`](https://github.com/mastra-ai/mastra/commit/e51e166c52e220abc9b64554ce37359dca8544b1)]:
|
|
27
|
+
- @mastra/core@1.53.0-alpha.4
|
|
28
|
+
- @mastra/client-js@1.34.0-alpha.5
|
|
29
|
+
- @mastra/react@1.3.2-alpha.5
|
|
30
|
+
|
|
3
31
|
## 43.0.0-alpha.4
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
|
@@ -32,12 +32,7 @@ export type UnsupportedObservabilityOperation = 'logs' | 'metrics' | 'scores' |
|
|
|
32
32
|
* instead, like the trace branch support check above.
|
|
33
33
|
*/
|
|
34
34
|
export declare function isUnsupportedObservabilityOperationError(error: unknown, operation: UnsupportedObservabilityOperation): boolean;
|
|
35
|
-
/**
|
|
36
|
-
* Check if an error came from a server whose observability storage domain is
|
|
37
|
-
* unavailable — e.g. disabled with `domains: { observability: false }` on a
|
|
38
|
-
* composite store. Affects every observability endpoint, so no operation
|
|
39
|
-
* argument. Matches the stable message from the server's `getObservabilityStore()`.
|
|
40
|
-
*/
|
|
35
|
+
/** Check if an error came from a server whose observability storage domain is disabled. */
|
|
41
36
|
export declare function isObservabilityUnavailableError(error: unknown): boolean;
|
|
42
37
|
/**
|
|
43
38
|
* Check if error has a status code that shouldn't be retried.
|
package/dist/style.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! tailwindcss v4.
|
|
1
|
+
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
2
|
@layer properties {
|
|
3
3
|
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
|
|
4
4
|
*, :before, :after, ::backdrop {
|
|
@@ -73,6 +73,8 @@
|
|
|
73
73
|
--tw-duration: initial;
|
|
74
74
|
--tw-ease: initial;
|
|
75
75
|
--tw-content: "";
|
|
76
|
+
--tw-scrollbar-thumb: #0000;
|
|
77
|
+
--tw-scrollbar-track: #0000;
|
|
76
78
|
--tw-mask-linear: linear-gradient(#fff, #fff);
|
|
77
79
|
--tw-mask-radial: linear-gradient(#fff, #fff);
|
|
78
80
|
--tw-mask-conic: linear-gradient(#fff, #fff);
|
|
@@ -145,7 +147,7 @@
|
|
|
145
147
|
--color-gray-100: oklch(96.7% .003 264.542);
|
|
146
148
|
--color-gray-300: oklch(87.2% .01 258.338);
|
|
147
149
|
--color-gray-700: oklch(37.3% .034 259.733);
|
|
148
|
-
--color-neutral-500: oklch(55.6% 0
|
|
150
|
+
--color-neutral-500: oklch(55.6% 0 none);
|
|
149
151
|
--color-black: #000;
|
|
150
152
|
--color-white: #fff;
|
|
151
153
|
--breakpoint-lg: 64rem;
|
|
@@ -350,7 +352,7 @@
|
|
|
350
352
|
-webkit-text-size-adjust: 100%;
|
|
351
353
|
tab-size: 4;
|
|
352
354
|
line-height: 1.5;
|
|
353
|
-
font-family: var(--default-font-family,
|
|
355
|
+
font-family: var(--default-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
|
|
354
356
|
font-feature-settings: var(--default-font-feature-settings, normal);
|
|
355
357
|
font-variation-settings: var(--default-font-variation-settings, normal);
|
|
356
358
|
-webkit-tap-highlight-color: transparent;
|
|
@@ -416,7 +418,7 @@
|
|
|
416
418
|
border-collapse: collapse;
|
|
417
419
|
}
|
|
418
420
|
|
|
419
|
-
:-moz-focusring {
|
|
421
|
+
:-moz-focusring:where(:not(iframe)) {
|
|
420
422
|
outline: auto;
|
|
421
423
|
}
|
|
422
424
|
|
|
@@ -2317,7 +2319,6 @@
|
|
|
2317
2319
|
.-translate-y-px {
|
|
2318
2320
|
--tw-translate-y: calc(var(--spacing-px) * -1);
|
|
2319
2321
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
2320
|
-
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
2321
2322
|
}
|
|
2322
2323
|
|
|
2323
2324
|
.scale-50 {
|
|
@@ -2435,6 +2436,10 @@
|
|
|
2435
2436
|
resize: vertical;
|
|
2436
2437
|
}
|
|
2437
2438
|
|
|
2439
|
+
.\[scrollbar-width\:none\] {
|
|
2440
|
+
scrollbar-width: none;
|
|
2441
|
+
}
|
|
2442
|
+
|
|
2438
2443
|
.list-decimal {
|
|
2439
2444
|
list-style-type: decimal;
|
|
2440
2445
|
}
|
|
@@ -4854,7 +4859,7 @@
|
|
|
4854
4859
|
text-wrap: wrap;
|
|
4855
4860
|
}
|
|
4856
4861
|
|
|
4857
|
-
.break-words, .wrap-break-word
|
|
4862
|
+
.break-words, .wrap-break-word {
|
|
4858
4863
|
overflow-wrap: break-word;
|
|
4859
4864
|
}
|
|
4860
4865
|
|
|
@@ -5659,10 +5664,6 @@
|
|
|
5659
5664
|
overflow-clip-margin: .75rem;
|
|
5660
5665
|
}
|
|
5661
5666
|
|
|
5662
|
-
.\[scrollbar-width\:none\] {
|
|
5663
|
-
scrollbar-width: none;
|
|
5664
|
-
}
|
|
5665
|
-
|
|
5666
5667
|
.\[stroke-dasharray\:28\] {
|
|
5667
5668
|
stroke-dasharray: 28;
|
|
5668
5669
|
}
|
|
@@ -6231,7 +6232,6 @@
|
|
|
6231
6232
|
}
|
|
6232
6233
|
|
|
6233
6234
|
.after\:-left-px:after {
|
|
6234
|
-
content: var(--tw-content);
|
|
6235
6235
|
content: var(--tw-content);
|
|
6236
6236
|
left: -1px;
|
|
6237
6237
|
left: calc(var(--spacing-px) * -1);
|
|
@@ -6243,7 +6243,6 @@
|
|
|
6243
6243
|
}
|
|
6244
6244
|
|
|
6245
6245
|
.after\:h-px:after {
|
|
6246
|
-
content: var(--tw-content);
|
|
6247
6246
|
content: var(--tw-content);
|
|
6248
6247
|
height: 1px;
|
|
6249
6248
|
height: var(--spacing-px);
|
|
@@ -6255,7 +6254,6 @@
|
|
|
6255
6254
|
}
|
|
6256
6255
|
|
|
6257
6256
|
.after\:w-px:after {
|
|
6258
|
-
content: var(--tw-content);
|
|
6259
6257
|
content: var(--tw-content);
|
|
6260
6258
|
width: 1px;
|
|
6261
6259
|
width: var(--spacing-px);
|
|
@@ -7109,6 +7107,16 @@
|
|
|
7109
7107
|
opacity: 1;
|
|
7110
7108
|
}
|
|
7111
7109
|
|
|
7110
|
+
.data-autoscrolling\:scrollbar-thumb-transparent[data-autoscrolling] {
|
|
7111
|
+
--tw-scrollbar-thumb: transparent;
|
|
7112
|
+
scrollbar-color: var(--tw-scrollbar-thumb) var(--tw-scrollbar-track);
|
|
7113
|
+
}
|
|
7114
|
+
|
|
7115
|
+
.data-autoscrolling\:scrollbar-track-transparent[data-autoscrolling] {
|
|
7116
|
+
--tw-scrollbar-track: transparent;
|
|
7117
|
+
scrollbar-color: var(--tw-scrollbar-thumb) var(--tw-scrollbar-track);
|
|
7118
|
+
}
|
|
7119
|
+
|
|
7112
7120
|
.data-disabled\:pointer-events-none[data-disabled] {
|
|
7113
7121
|
pointer-events: none;
|
|
7114
7122
|
}
|
|
@@ -8377,7 +8385,6 @@
|
|
|
8377
8385
|
}
|
|
8378
8386
|
|
|
8379
8387
|
.\[\&_\.data-list-row\]\:after\:-bottom-px .data-list-row:after {
|
|
8380
|
-
content: var(--tw-content);
|
|
8381
8388
|
content: var(--tw-content);
|
|
8382
8389
|
bottom: -1px;
|
|
8383
8390
|
bottom: calc(var(--spacing-px) * -1);
|
|
@@ -8389,7 +8396,6 @@
|
|
|
8389
8396
|
}
|
|
8390
8397
|
|
|
8391
8398
|
.\[\&_\.data-list-row\]\:after\:h-px .data-list-row:after {
|
|
8392
|
-
content: var(--tw-content);
|
|
8393
8399
|
content: var(--tw-content);
|
|
8394
8400
|
height: 1px;
|
|
8395
8401
|
height: var(--spacing-px);
|
|
@@ -8490,7 +8496,6 @@
|
|
|
8490
8496
|
}
|
|
8491
8497
|
|
|
8492
8498
|
.\[\&_\.data-list-top\>\*\:not\(\:first-child\)\]\:before\:w-px .data-list-top > :not(:first-child):before {
|
|
8493
|
-
content: var(--tw-content);
|
|
8494
8499
|
content: var(--tw-content);
|
|
8495
8500
|
width: 1px;
|
|
8496
8501
|
width: var(--spacing-px);
|
|
@@ -10253,6 +10258,18 @@ html.light {
|
|
|
10253
10258
|
initial-value: "";
|
|
10254
10259
|
}
|
|
10255
10260
|
|
|
10261
|
+
@property --tw-scrollbar-thumb {
|
|
10262
|
+
syntax: "<color>";
|
|
10263
|
+
inherits: false;
|
|
10264
|
+
initial-value: #0000;
|
|
10265
|
+
}
|
|
10266
|
+
|
|
10267
|
+
@property --tw-scrollbar-track {
|
|
10268
|
+
syntax: "<color>";
|
|
10269
|
+
inherits: false;
|
|
10270
|
+
initial-value: #0000;
|
|
10271
|
+
}
|
|
10272
|
+
|
|
10256
10273
|
@property --tw-mask-linear {
|
|
10257
10274
|
syntax: "*";
|
|
10258
10275
|
inherits: false;
|
|
@@ -63,11 +63,15 @@ function isUnsupportedObservabilityOperationError(error, operation) {
|
|
|
63
63
|
if (typeof message !== "string") return false;
|
|
64
64
|
return message.includes(`does not support listing ${operation}`);
|
|
65
65
|
}
|
|
66
|
+
const OBSERVABILITY_UNAVAILABLE_MESSAGES = [
|
|
67
|
+
"Observability storage domain is not available",
|
|
68
|
+
"Scores storage domain is not available"
|
|
69
|
+
];
|
|
66
70
|
function isObservabilityUnavailableError(error) {
|
|
67
71
|
if (!error || typeof error !== "object" || !("message" in error)) return false;
|
|
68
72
|
const message = error.message;
|
|
69
73
|
if (typeof message !== "string") return false;
|
|
70
|
-
return message.includes(
|
|
74
|
+
return OBSERVABILITY_UNAVAILABLE_MESSAGES.some((m) => message.includes(m));
|
|
71
75
|
}
|
|
72
76
|
function isNonRetryableError(error) {
|
|
73
77
|
if (!error || typeof error !== "object") return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-utils.cjs.js","sources":["../../src/lib/query-utils.ts"],"sourcesContent":["/**\n * HTTP status codes that should not be retried.\n * - 400: Bad Request (client error, won't change)\n * - 401: Unauthorized (needs re-auth, not retry)\n * - 403: Forbidden (RBAC permission denied)\n * - 404: Not Found (resource doesn't exist)\n * - 501: Not Implemented (capability gap, e.g. disabled storage domain, won't change)\n */\nconst HTTP_NO_RETRY_STATUSES = [400, 401, 403, 404, 501];\n\n/**\n * Check if error is a 401 Unauthorized response.\n * Indicates the user's session has expired or token is invalid.\n * Handles both direct status property and client-js error message format.\n */\nexport function is401UnauthorizedError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property (direct response or wrapped)\n if ('status' in error && (error as { status: number }).status === 401) {\n return true;\n }\n\n // Check for statusCode property (some HTTP clients)\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 401) {\n return true;\n }\n\n // Check error message for client-js pattern: \"HTTP error! status: 401\"\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*401\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if error is a 403 Forbidden response.\n * Handles both direct status property and client-js error message format.\n */\nexport function is403ForbiddenError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property (direct response or wrapped)\n if ('status' in error && (error as { status: number }).status === 403) {\n return true;\n }\n\n // Check for statusCode property (some HTTP clients)\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 403) {\n return true;\n }\n\n // Check error message for client-js pattern: \"HTTP error! status: 403\"\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*403\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if error is a 404 Not Found response.\n * Handles both direct status property and client-js error message format.\n */\nexport function is404NotFoundError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n if ('status' in error && (error as { status: number }).status === 404) {\n return true;\n }\n\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 404) {\n return true;\n }\n\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*404\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if an error came from a storage provider that does not implement `listBranches`.\n *\n * The server's `handleError` strips the original MastraError's `code`/`id` before serializing,\n * so we can't match on the ID `OBSERVABILITY_STORAGE_LIST_BRANCHES_NOT_IMPLEMENTED` directly —\n * we match on the message text from `core/.../observability/base.ts` instead.\n */\nexport function isBranchesNotSupportedError(error: unknown): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes('does not support listing trace branches');\n}\n\nexport type UnsupportedObservabilityOperation = 'logs' | 'metrics' | 'scores' | 'feedback';\n\n/**\n * Check if an error came from an observability storage provider that does not\n * implement a list operation. These are capability gaps, not transient failures.\n *\n * The server serializes these as plain HTTP errors, so the original MastraError\n * ID is not available in the browser. Match the stable base-storage message text\n * instead, like the trace branch support check above.\n */\nexport function isUnsupportedObservabilityOperationError(\n error: unknown,\n operation: UnsupportedObservabilityOperation,\n): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes(`does not support listing ${operation}`);\n}\n\n/**\n * Check if an error came from a server whose observability storage domain is\n * unavailable — e.g. disabled with `domains: { observability: false }` on a\n * composite store. Affects every observability endpoint, so no operation\n * argument. Matches the stable message from the server's `getObservabilityStore()`.\n */\nexport function isObservabilityUnavailableError(error: unknown): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes('Observability storage domain is not available');\n}\n\n/**\n * Check if error has a status code that shouldn't be retried.\n * Used to prevent retrying client errors that won't resolve.\n */\nexport function isNonRetryableError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property\n if ('status' in error) {\n const status = (error as { status: number }).status;\n return HTTP_NO_RETRY_STATUSES.includes(status);\n }\n\n // Check for statusCode property\n if ('statusCode' in error) {\n const statusCode = (error as { statusCode: number }).statusCode;\n return HTTP_NO_RETRY_STATUSES.includes(statusCode);\n }\n\n // Check error message for client-js pattern\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return HTTP_NO_RETRY_STATUSES.some(code => new RegExp(`\\\\bstatus:\\\\s*${code}\\\\b`).test(message));\n }\n }\n\n return false;\n}\n\n/**\n * Default retry function for TanStack Query.\n * Does not retry 4xx client errors (400, 401, 403, 404) or 501 capability gaps.\n * Retries other errors up to 3 times.\n */\nexport function shouldRetryQuery(failureCount: number, error: unknown): boolean {\n // Don't retry client errors - they won't resolve with retries\n if (isNonRetryableError(error)) {\n return false;\n }\n // Default: retry up to 3 times for transient errors\n return failureCount < 3;\n}\n"],"names":[],"mappings":";;;;AAQA,MAAM,yBAAyB,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAOhD,SAAS,uBAAuB,KAAA,EAAyB;AAC9D,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,KAAA;AAGhD,EAAA,IAAI,QAAA,IAAY,KAAA,IAAU,KAAA,CAA6B,MAAA,KAAW,GAAA,EAAK;AACrE,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,YAAA,IAAgB,KAAA,IAAU,KAAA,CAAiC,UAAA,KAAe,GAAA,EAAK;AACjF,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,aAAa,KAAA,EAAO;AACtB,IAAA,MAAM,UAAW,KAAA,CAA+B,OAAA;AAChD,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,MAAA,OAAO,mBAAA,CAAoB,KAAK,OAAO,CAAA;AAAA,IACzC;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAMO,SAAS,oBAAoB,KAAA,EAAyB;AAC3D,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,KAAA;AAGhD,EAAA,IAAI,QAAA,IAAY,KAAA,IAAU,KAAA,CAA6B,MAAA,KAAW,GAAA,EAAK;AACrE,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,YAAA,IAAgB,KAAA,IAAU,KAAA,CAAiC,UAAA,KAAe,GAAA,EAAK;AACjF,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,aAAa,KAAA,EAAO;AACtB,IAAA,MAAM,UAAW,KAAA,CAA+B,OAAA;AAChD,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,MAAA,OAAO,mBAAA,CAAoB,KAAK,OAAO,CAAA;AAAA,IACzC;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAMO,SAAS,mBAAmB,KAAA,EAAyB;AAC1D,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,KAAA;AAEhD,EAAA,IAAI,QAAA,IAAY,KAAA,IAAU,KAAA,CAA6B,MAAA,KAAW,GAAA,EAAK;AACrE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,YAAA,IAAgB,KAAA,IAAU,KAAA,CAAiC,UAAA,KAAe,GAAA,EAAK;AACjF,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,aAAa,KAAA,EAAO;AACtB,IAAA,MAAM,UAAW,KAAA,CAA+B,OAAA;AAChD,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,MAAA,OAAO,mBAAA,CAAoB,KAAK,OAAO,CAAA;AAAA,IACzC;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AASO,SAAS,4BAA4B,KAAA,EAAyB;AACnE,EAAA,IAAI,CAAC,SAAS,OAAO,KAAA,KAAU,YAAY,EAAE,SAAA,IAAa,QAAQ,OAAO,KAAA;AACzE,EAAA,MAAM,UAAW,KAAA,CAA+B,OAAA;AAChD,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,EAAU,OAAO,KAAA;AACxC,EAAA,OAAO,OAAA,CAAQ,SAAS,yCAAyC,CAAA;AACnE;AAYO,SAAS,wCAAA,CACd,OACA,SAAA,EACS;AACT,EAAA,IAAI,CAAC,SAAS,OAAO,KAAA,KAAU,YAAY,EAAE,SAAA,IAAa,QAAQ,OAAO,KAAA;AACzE,EAAA,MAAM,UAAW,KAAA,CAA+B,OAAA;AAChD,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,EAAU,OAAO,KAAA;AACxC,EAAA,OAAO,OAAA,CAAQ,QAAA,CAAS,CAAA,yBAAA,EAA4B,SAAS,CAAA,CAAE,CAAA;AACjE;AAQO,SAAS,gCAAgC,KAAA,EAAyB;AACvE,EAAA,IAAI,CAAC,SAAS,OAAO,KAAA,KAAU,YAAY,EAAE,SAAA,IAAa,QAAQ,OAAO,KAAA;AACzE,EAAA,MAAM,UAAW,KAAA,CAA+B,OAAA;AAChD,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,EAAU,OAAO,KAAA;AACxC,EAAA,OAAO,OAAA,CAAQ,SAAS,+CAA+C,CAAA;AACzE;AAMO,SAAS,oBAAoB,KAAA,EAAyB;AAC3D,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,KAAA;AAGhD,EAAA,IAAI,YAAY,KAAA,EAAO;AACrB,IAAA,MAAM,SAAU,KAAA,CAA6B,MAAA;AAC7C,IAAA,OAAO,sBAAA,CAAuB,SAAS,MAAM,CAAA;AAAA,EAC/C;AAGA,EAAA,IAAI,gBAAgB,KAAA,EAAO;AACzB,IAAA,MAAM,aAAc,KAAA,CAAiC,UAAA;AACrD,IAAA,OAAO,sBAAA,CAAuB,SAAS,UAAU,CAAA;AAAA,EACnD;AAGA,EAAA,IAAI,aAAa,KAAA,EAAO;AACtB,IAAA,MAAM,UAAW,KAAA,CAA+B,OAAA;AAChD,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,MAAA,OAAO,sBAAA,CAAuB,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAI,MAAA,CAAO,CAAA,cAAA,EAAiB,IAAI,CAAA,GAAA,CAAK,CAAA,CAAE,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,IACjG;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAOO,SAAS,gBAAA,CAAiB,cAAsB,KAAA,EAAyB;AAE9E,EAAA,IAAI,mBAAA,CAAoB,KAAK,CAAA,EAAG;AAC9B,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAA,GAAe,CAAA;AACxB;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"query-utils.cjs.js","sources":["../../src/lib/query-utils.ts"],"sourcesContent":["/**\n * HTTP status codes that should not be retried.\n * - 400: Bad Request (client error, won't change)\n * - 401: Unauthorized (needs re-auth, not retry)\n * - 403: Forbidden (RBAC permission denied)\n * - 404: Not Found (resource doesn't exist)\n * - 501: Not Implemented (capability gap, e.g. disabled storage domain, won't change)\n */\nconst HTTP_NO_RETRY_STATUSES = [400, 401, 403, 404, 501];\n\n/**\n * Check if error is a 401 Unauthorized response.\n * Indicates the user's session has expired or token is invalid.\n * Handles both direct status property and client-js error message format.\n */\nexport function is401UnauthorizedError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property (direct response or wrapped)\n if ('status' in error && (error as { status: number }).status === 401) {\n return true;\n }\n\n // Check for statusCode property (some HTTP clients)\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 401) {\n return true;\n }\n\n // Check error message for client-js pattern: \"HTTP error! status: 401\"\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*401\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if error is a 403 Forbidden response.\n * Handles both direct status property and client-js error message format.\n */\nexport function is403ForbiddenError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property (direct response or wrapped)\n if ('status' in error && (error as { status: number }).status === 403) {\n return true;\n }\n\n // Check for statusCode property (some HTTP clients)\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 403) {\n return true;\n }\n\n // Check error message for client-js pattern: \"HTTP error! status: 403\"\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*403\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if error is a 404 Not Found response.\n * Handles both direct status property and client-js error message format.\n */\nexport function is404NotFoundError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n if ('status' in error && (error as { status: number }).status === 404) {\n return true;\n }\n\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 404) {\n return true;\n }\n\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*404\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if an error came from a storage provider that does not implement `listBranches`.\n *\n * The server's `handleError` strips the original MastraError's `code`/`id` before serializing,\n * so we can't match on the ID `OBSERVABILITY_STORAGE_LIST_BRANCHES_NOT_IMPLEMENTED` directly —\n * we match on the message text from `core/.../observability/base.ts` instead.\n */\nexport function isBranchesNotSupportedError(error: unknown): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes('does not support listing trace branches');\n}\n\nexport type UnsupportedObservabilityOperation = 'logs' | 'metrics' | 'scores' | 'feedback';\n\n/**\n * Check if an error came from an observability storage provider that does not\n * implement a list operation. These are capability gaps, not transient failures.\n *\n * The server serializes these as plain HTTP errors, so the original MastraError\n * ID is not available in the browser. Match the stable base-storage message text\n * instead, like the trace branch support check above.\n */\nexport function isUnsupportedObservabilityOperationError(\n error: unknown,\n operation: UnsupportedObservabilityOperation,\n): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes(`does not support listing ${operation}`);\n}\n\n// Span scores are backed by the separate `scores` domain. Explicit list: many\n// unrelated server domains share the \"storage domain is not available\" suffix.\nconst OBSERVABILITY_UNAVAILABLE_MESSAGES = [\n 'Observability storage domain is not available',\n 'Scores storage domain is not available',\n];\n\n/** Check if an error came from a server whose observability storage domain is disabled. */\nexport function isObservabilityUnavailableError(error: unknown): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return OBSERVABILITY_UNAVAILABLE_MESSAGES.some(m => message.includes(m));\n}\n\n/**\n * Check if error has a status code that shouldn't be retried.\n * Used to prevent retrying client errors that won't resolve.\n */\nexport function isNonRetryableError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property\n if ('status' in error) {\n const status = (error as { status: number }).status;\n return HTTP_NO_RETRY_STATUSES.includes(status);\n }\n\n // Check for statusCode property\n if ('statusCode' in error) {\n const statusCode = (error as { statusCode: number }).statusCode;\n return HTTP_NO_RETRY_STATUSES.includes(statusCode);\n }\n\n // Check error message for client-js pattern\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return HTTP_NO_RETRY_STATUSES.some(code => new RegExp(`\\\\bstatus:\\\\s*${code}\\\\b`).test(message));\n }\n }\n\n return false;\n}\n\n/**\n * Default retry function for TanStack Query.\n * Does not retry 4xx client errors (400, 401, 403, 404) or 501 capability gaps.\n * Retries other errors up to 3 times.\n */\nexport function shouldRetryQuery(failureCount: number, error: unknown): boolean {\n // Don't retry client errors - they won't resolve with retries\n if (isNonRetryableError(error)) {\n return false;\n }\n // Default: retry up to 3 times for transient errors\n return failureCount < 3;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -59,11 +59,15 @@ function isUnsupportedObservabilityOperationError(error, operation) {
|
|
|
59
59
|
if (typeof message !== "string") return false;
|
|
60
60
|
return message.includes(`does not support listing ${operation}`);
|
|
61
61
|
}
|
|
62
|
+
const OBSERVABILITY_UNAVAILABLE_MESSAGES = [
|
|
63
|
+
"Observability storage domain is not available",
|
|
64
|
+
"Scores storage domain is not available"
|
|
65
|
+
];
|
|
62
66
|
function isObservabilityUnavailableError(error) {
|
|
63
67
|
if (!error || typeof error !== "object" || !("message" in error)) return false;
|
|
64
68
|
const message = error.message;
|
|
65
69
|
if (typeof message !== "string") return false;
|
|
66
|
-
return message.includes(
|
|
70
|
+
return OBSERVABILITY_UNAVAILABLE_MESSAGES.some((m) => message.includes(m));
|
|
67
71
|
}
|
|
68
72
|
function isNonRetryableError(error) {
|
|
69
73
|
if (!error || typeof error !== "object") return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-utils.es.js","sources":["../../src/lib/query-utils.ts"],"sourcesContent":["/**\n * HTTP status codes that should not be retried.\n * - 400: Bad Request (client error, won't change)\n * - 401: Unauthorized (needs re-auth, not retry)\n * - 403: Forbidden (RBAC permission denied)\n * - 404: Not Found (resource doesn't exist)\n * - 501: Not Implemented (capability gap, e.g. disabled storage domain, won't change)\n */\nconst HTTP_NO_RETRY_STATUSES = [400, 401, 403, 404, 501];\n\n/**\n * Check if error is a 401 Unauthorized response.\n * Indicates the user's session has expired or token is invalid.\n * Handles both direct status property and client-js error message format.\n */\nexport function is401UnauthorizedError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property (direct response or wrapped)\n if ('status' in error && (error as { status: number }).status === 401) {\n return true;\n }\n\n // Check for statusCode property (some HTTP clients)\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 401) {\n return true;\n }\n\n // Check error message for client-js pattern: \"HTTP error! status: 401\"\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*401\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if error is a 403 Forbidden response.\n * Handles both direct status property and client-js error message format.\n */\nexport function is403ForbiddenError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property (direct response or wrapped)\n if ('status' in error && (error as { status: number }).status === 403) {\n return true;\n }\n\n // Check for statusCode property (some HTTP clients)\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 403) {\n return true;\n }\n\n // Check error message for client-js pattern: \"HTTP error! status: 403\"\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*403\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if error is a 404 Not Found response.\n * Handles both direct status property and client-js error message format.\n */\nexport function is404NotFoundError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n if ('status' in error && (error as { status: number }).status === 404) {\n return true;\n }\n\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 404) {\n return true;\n }\n\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*404\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if an error came from a storage provider that does not implement `listBranches`.\n *\n * The server's `handleError` strips the original MastraError's `code`/`id` before serializing,\n * so we can't match on the ID `OBSERVABILITY_STORAGE_LIST_BRANCHES_NOT_IMPLEMENTED` directly —\n * we match on the message text from `core/.../observability/base.ts` instead.\n */\nexport function isBranchesNotSupportedError(error: unknown): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes('does not support listing trace branches');\n}\n\nexport type UnsupportedObservabilityOperation = 'logs' | 'metrics' | 'scores' | 'feedback';\n\n/**\n * Check if an error came from an observability storage provider that does not\n * implement a list operation. These are capability gaps, not transient failures.\n *\n * The server serializes these as plain HTTP errors, so the original MastraError\n * ID is not available in the browser. Match the stable base-storage message text\n * instead, like the trace branch support check above.\n */\nexport function isUnsupportedObservabilityOperationError(\n error: unknown,\n operation: UnsupportedObservabilityOperation,\n): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes(`does not support listing ${operation}`);\n}\n\n/**\n * Check if an error came from a server whose observability storage domain is\n * unavailable — e.g. disabled with `domains: { observability: false }` on a\n * composite store. Affects every observability endpoint, so no operation\n * argument. Matches the stable message from the server's `getObservabilityStore()`.\n */\nexport function isObservabilityUnavailableError(error: unknown): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes('Observability storage domain is not available');\n}\n\n/**\n * Check if error has a status code that shouldn't be retried.\n * Used to prevent retrying client errors that won't resolve.\n */\nexport function isNonRetryableError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property\n if ('status' in error) {\n const status = (error as { status: number }).status;\n return HTTP_NO_RETRY_STATUSES.includes(status);\n }\n\n // Check for statusCode property\n if ('statusCode' in error) {\n const statusCode = (error as { statusCode: number }).statusCode;\n return HTTP_NO_RETRY_STATUSES.includes(statusCode);\n }\n\n // Check error message for client-js pattern\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return HTTP_NO_RETRY_STATUSES.some(code => new RegExp(`\\\\bstatus:\\\\s*${code}\\\\b`).test(message));\n }\n }\n\n return false;\n}\n\n/**\n * Default retry function for TanStack Query.\n * Does not retry 4xx client errors (400, 401, 403, 404) or 501 capability gaps.\n * Retries other errors up to 3 times.\n */\nexport function shouldRetryQuery(failureCount: number, error: unknown): boolean {\n // Don't retry client errors - they won't resolve with retries\n if (isNonRetryableError(error)) {\n return false;\n }\n // Default: retry up to 3 times for transient errors\n return failureCount < 3;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-utils.es.js","sources":["../../src/lib/query-utils.ts"],"sourcesContent":["/**\n * HTTP status codes that should not be retried.\n * - 400: Bad Request (client error, won't change)\n * - 401: Unauthorized (needs re-auth, not retry)\n * - 403: Forbidden (RBAC permission denied)\n * - 404: Not Found (resource doesn't exist)\n * - 501: Not Implemented (capability gap, e.g. disabled storage domain, won't change)\n */\nconst HTTP_NO_RETRY_STATUSES = [400, 401, 403, 404, 501];\n\n/**\n * Check if error is a 401 Unauthorized response.\n * Indicates the user's session has expired or token is invalid.\n * Handles both direct status property and client-js error message format.\n */\nexport function is401UnauthorizedError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property (direct response or wrapped)\n if ('status' in error && (error as { status: number }).status === 401) {\n return true;\n }\n\n // Check for statusCode property (some HTTP clients)\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 401) {\n return true;\n }\n\n // Check error message for client-js pattern: \"HTTP error! status: 401\"\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*401\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if error is a 403 Forbidden response.\n * Handles both direct status property and client-js error message format.\n */\nexport function is403ForbiddenError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property (direct response or wrapped)\n if ('status' in error && (error as { status: number }).status === 403) {\n return true;\n }\n\n // Check for statusCode property (some HTTP clients)\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 403) {\n return true;\n }\n\n // Check error message for client-js pattern: \"HTTP error! status: 403\"\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*403\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if error is a 404 Not Found response.\n * Handles both direct status property and client-js error message format.\n */\nexport function is404NotFoundError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n if ('status' in error && (error as { status: number }).status === 404) {\n return true;\n }\n\n if ('statusCode' in error && (error as { statusCode: number }).statusCode === 404) {\n return true;\n }\n\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return /\\bstatus:\\s*404\\b/.test(message);\n }\n }\n\n return false;\n}\n\n/**\n * Check if an error came from a storage provider that does not implement `listBranches`.\n *\n * The server's `handleError` strips the original MastraError's `code`/`id` before serializing,\n * so we can't match on the ID `OBSERVABILITY_STORAGE_LIST_BRANCHES_NOT_IMPLEMENTED` directly —\n * we match on the message text from `core/.../observability/base.ts` instead.\n */\nexport function isBranchesNotSupportedError(error: unknown): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes('does not support listing trace branches');\n}\n\nexport type UnsupportedObservabilityOperation = 'logs' | 'metrics' | 'scores' | 'feedback';\n\n/**\n * Check if an error came from an observability storage provider that does not\n * implement a list operation. These are capability gaps, not transient failures.\n *\n * The server serializes these as plain HTTP errors, so the original MastraError\n * ID is not available in the browser. Match the stable base-storage message text\n * instead, like the trace branch support check above.\n */\nexport function isUnsupportedObservabilityOperationError(\n error: unknown,\n operation: UnsupportedObservabilityOperation,\n): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return message.includes(`does not support listing ${operation}`);\n}\n\n// Span scores are backed by the separate `scores` domain. Explicit list: many\n// unrelated server domains share the \"storage domain is not available\" suffix.\nconst OBSERVABILITY_UNAVAILABLE_MESSAGES = [\n 'Observability storage domain is not available',\n 'Scores storage domain is not available',\n];\n\n/** Check if an error came from a server whose observability storage domain is disabled. */\nexport function isObservabilityUnavailableError(error: unknown): boolean {\n if (!error || typeof error !== 'object' || !('message' in error)) return false;\n const message = (error as { message: unknown }).message;\n if (typeof message !== 'string') return false;\n return OBSERVABILITY_UNAVAILABLE_MESSAGES.some(m => message.includes(m));\n}\n\n/**\n * Check if error has a status code that shouldn't be retried.\n * Used to prevent retrying client errors that won't resolve.\n */\nexport function isNonRetryableError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n\n // Check for status property\n if ('status' in error) {\n const status = (error as { status: number }).status;\n return HTTP_NO_RETRY_STATUSES.includes(status);\n }\n\n // Check for statusCode property\n if ('statusCode' in error) {\n const statusCode = (error as { statusCode: number }).statusCode;\n return HTTP_NO_RETRY_STATUSES.includes(statusCode);\n }\n\n // Check error message for client-js pattern\n if ('message' in error) {\n const message = (error as { message: unknown }).message;\n if (typeof message === 'string') {\n return HTTP_NO_RETRY_STATUSES.some(code => new RegExp(`\\\\bstatus:\\\\s*${code}\\\\b`).test(message));\n }\n }\n\n return false;\n}\n\n/**\n * Default retry function for TanStack Query.\n * Does not retry 4xx client errors (400, 401, 403, 404) or 501 capability gaps.\n * Retries other errors up to 3 times.\n */\nexport function shouldRetryQuery(failureCount: number, error: unknown): boolean {\n // Don't retry client errors - they won't resolve with retries\n if (isNonRetryableError(error)) {\n return false;\n }\n // Default: retry up to 3 times for transient errors\n return failureCount < 3;\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/playground-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "43.0.0
|
|
4
|
+
"version": "43.0.0",
|
|
5
5
|
"description": "Mastra Playground components",
|
|
6
6
|
"sideEffects": [
|
|
7
7
|
"**/*.css"
|
|
@@ -150,17 +150,17 @@
|
|
|
150
150
|
"react": ">=19.0.0",
|
|
151
151
|
"react-dom": ">=19.0.0",
|
|
152
152
|
"tailwindcss": "^4.0.0",
|
|
153
|
-
"@mastra/client-js": "^1.34.0
|
|
154
|
-
"@mastra/react": "1.3.2
|
|
153
|
+
"@mastra/client-js": "^1.34.0",
|
|
154
|
+
"@mastra/react": "1.3.2"
|
|
155
155
|
},
|
|
156
156
|
"devDependencies": {
|
|
157
157
|
"@storybook/addon-a11y": "^10.4.1",
|
|
158
158
|
"@storybook/addon-docs": "^10.4.1",
|
|
159
159
|
"@storybook/addon-mcp": "^0.6.0",
|
|
160
160
|
"@storybook/react-vite": "^10.4.1",
|
|
161
|
-
"@tailwindcss/postcss": "^4.
|
|
161
|
+
"@tailwindcss/postcss": "^4.3.3",
|
|
162
162
|
"@tailwindcss/typography": "^0.5.19",
|
|
163
|
-
"@tailwindcss/vite": "4.
|
|
163
|
+
"@tailwindcss/vite": "4.3.3",
|
|
164
164
|
"@tanstack/react-query": "^5.90.21",
|
|
165
165
|
"@testing-library/react": "^16.3.2",
|
|
166
166
|
"@types/json-schema": "^7.0.15",
|
|
@@ -182,18 +182,18 @@
|
|
|
182
182
|
"rollup-plugin-node-externals": "^8.1.2",
|
|
183
183
|
"storybook": "^10.4.1",
|
|
184
184
|
"tailwind-merge": "^3.5.0",
|
|
185
|
-
"tailwindcss": "4.
|
|
185
|
+
"tailwindcss": "4.3.3",
|
|
186
186
|
"tw-animate-css": "^1.4.0",
|
|
187
187
|
"typescript": "^6.0.3",
|
|
188
188
|
"vite": "^7.3.1",
|
|
189
189
|
"vite-plugin-dts": "^4.5.4",
|
|
190
190
|
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
191
191
|
"vitest": "4.1.10",
|
|
192
|
-
"@internal/lint": "0.0.
|
|
193
|
-
"@mastra/
|
|
194
|
-
"@mastra/
|
|
195
|
-
"@mastra/client-js": "^1.34.0
|
|
196
|
-
"@mastra/
|
|
192
|
+
"@internal/lint": "0.0.117",
|
|
193
|
+
"@mastra/core": "1.53.0",
|
|
194
|
+
"@mastra/react": "1.3.2",
|
|
195
|
+
"@mastra/client-js": "^1.34.0",
|
|
196
|
+
"@mastra/memory": "1.23.1"
|
|
197
197
|
},
|
|
198
198
|
"homepage": "https://mastra.ai",
|
|
199
199
|
"repository": {
|