@mastra/playground-ui 19.0.0-alpha.0 → 19.0.0-alpha.1
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 +32 -0
- package/dist/compatibility-BSEoV343.cjs.map +1 -1
- package/dist/compatibility-nun8AtH_.js.map +1 -1
- package/dist/index.cjs.js +15471 -14497
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +14690 -13729
- package/dist/index.es.js.map +1 -1
- package/dist/src/components/ui/textarea.d.ts +2 -2
- package/dist/src/domains/agents/components/agent-cms-blocks/agent-cms-block.d.ts +1 -1
- package/dist/src/domains/agents/components/agent-cms-blocks/agent-cms-blocks.d.ts +1 -1
- package/dist/src/domains/agents/components/agent-edit-page/agent-edit-sidebar.d.ts +1 -2
- package/dist/src/domains/agents/components/agent-edit-page/sections/memory-section.d.ts +1 -1
- package/dist/src/domains/agents/components/agent-edit-page/use-agent-edit-form.d.ts +2 -2
- package/dist/src/domains/agents/components/agent-edit-page/utils/form-validation.d.ts +2 -2
- package/dist/src/domains/agents/components/agent-list/agents-list.d.ts +8 -0
- package/dist/src/domains/agents/components/agent-list/no-agents-info.d.ts +1 -0
- package/dist/src/domains/agents/components/agent-playground/format-version-label.d.ts +1 -0
- package/dist/src/domains/agents/hooks/use-agent-cms-form.d.ts +2 -2
- package/dist/src/domains/agents/hooks/use-agent-experiments.d.ts +2 -0
- package/dist/src/domains/agents/hooks/use-agent-working-memory.d.ts +1 -1
- package/dist/src/domains/agents/index.d.ts +1 -0
- package/dist/src/domains/agents/utils/agent-form-mappers.d.ts +1 -1
- package/dist/src/domains/datasets/components/dataset-detail/item-page-toolbar.d.ts +1 -2
- package/dist/src/domains/datasets/components/datasets-list/datasets-list.d.ts +8 -0
- package/dist/src/domains/datasets/components/datasets-list/no-datasets-info.d.ts +1 -0
- package/dist/src/domains/datasets/components/datasets-table/columns.d.ts +1 -1
- package/dist/src/domains/datasets/index.d.ts +1 -0
- package/dist/src/domains/experiments/components/experiment-trace-timeline-name-col.d.ts +1 -1
- package/dist/src/domains/experiments/components/experiment-trace-timeline-span.d.ts +1 -1
- package/dist/src/domains/mcps/components/mcps-list/mcps-list.d.ts +10 -0
- package/dist/src/domains/mcps/components/mcps-list/no-mcp-servers-info.d.ts +1 -0
- package/dist/src/domains/mcps/hooks/useMCPServerTools.d.ts +1 -1
- package/dist/src/domains/mcps/index.d.ts +1 -0
- package/dist/src/domains/memory/hooks/use-memory.d.ts +1 -1
- package/dist/src/domains/observability/components/span-dialog.d.ts +3 -3
- package/dist/src/domains/observability/components/span-tabs.d.ts +2 -2
- package/dist/src/domains/observability/components/trace-dialog.d.ts +1 -1
- package/dist/src/domains/processors/components/index.d.ts +1 -0
- package/dist/src/domains/processors/components/processors-list/no-processors-info.d.ts +1 -0
- package/dist/src/domains/processors/components/processors-list/processors-list.d.ts +8 -0
- package/dist/src/domains/prompt-blocks/components/prompts-list/no-prompt-blocks-info.d.ts +1 -0
- package/dist/src/domains/prompt-blocks/components/prompts-list/prompts-list.d.ts +8 -0
- package/dist/src/domains/prompt-blocks/index.d.ts +1 -0
- package/dist/src/domains/scores/components/score-dialog.d.ts +1 -1
- package/dist/src/domains/scores/components/scorers-list/no-scorers-info.d.ts +1 -0
- package/dist/src/domains/scores/components/scorers-list/scorers-list.d.ts +8 -0
- package/dist/src/domains/scores/index.d.ts +1 -0
- package/dist/src/domains/templates/template-info.d.ts +1 -2
- package/dist/src/domains/templates/template-installation.d.ts +1 -2
- package/dist/src/domains/templates/template-success.d.ts +1 -2
- package/dist/src/domains/tools/components/ToolExecutor.d.ts +1 -1
- package/dist/src/domains/tools/components/tools-list/no-tools-info.d.ts +1 -0
- package/dist/src/domains/tools/components/tools-list/tools-list.d.ts +9 -0
- package/dist/src/domains/tools/index.d.ts +1 -0
- package/dist/src/domains/workflows/components/workflows-list/no-workflows-info.d.ts +1 -0
- package/dist/src/domains/workflows/components/workflows-list/workflows-list.d.ts +8 -0
- package/dist/src/domains/workflows/context/workflow-run-context.d.ts +1 -1
- package/dist/src/domains/workflows/index.d.ts +1 -0
- package/dist/src/domains/workflows/runs/workflow-run-details.d.ts +1 -1
- package/dist/src/domains/workflows/workflow/workflow-nested-node.d.ts +1 -1
- package/dist/src/domains/workflows/workflow/workflow-step-action-bar.d.ts +1 -1
- package/dist/src/domains/workflows/workflow/zoom-slider.d.ts +1 -1
- package/dist/src/domains/workspace/hooks/use-workspace.d.ts +1 -1
- package/dist/src/ds/components/Checkbox/checkbox.d.ts +1 -1
- package/dist/src/ds/components/Chip/chips-group.d.ts +2 -5
- package/dist/src/ds/components/CodeEditor/code-editor.d.ts +1 -5
- package/dist/src/ds/components/CodeEditor/variable-highlight-extension.d.ts +1 -1
- package/dist/src/ds/components/Columns/column.d.ts +1 -1
- package/dist/src/ds/components/Combobox/multi-combobox.d.ts +1 -1
- package/dist/src/ds/components/Command/command.d.ts +3 -3
- package/dist/src/ds/components/EntityList/entity-list-cells.d.ts +9 -0
- package/dist/src/ds/components/EntityList/entity-list-root.d.ts +7 -0
- package/dist/src/ds/components/EntityList/entity-list-row-link.d.ts +7 -0
- package/dist/src/ds/components/EntityList/entity-list-row.d.ts +6 -0
- package/dist/src/ds/components/EntityList/entity-list-rows.d.ts +6 -0
- package/dist/src/ds/components/EntityList/entity-list-skeleton.d.ts +5 -0
- package/dist/src/ds/components/EntityList/entity-list-top-cell.d.ts +20 -0
- package/dist/src/ds/components/EntityList/entity-list-top.d.ts +6 -0
- package/dist/src/ds/components/EntityList/entity-list.d.ts +18 -0
- package/dist/src/ds/components/EntityList/index.d.ts +2 -0
- package/dist/src/ds/components/EntityListPageLayout/entity-list-page-layout-root.d.ts +5 -0
- package/dist/src/ds/components/EntityListPageLayout/entity-list-page-layout-top.d.ts +5 -0
- package/dist/src/ds/components/EntityListPageLayout/entity-list-page-layout.d.ts +5 -0
- package/dist/src/ds/components/EntityListPageLayout/index.d.ts +1 -0
- package/dist/src/ds/components/EntryList/entry-list.d.ts +4 -4
- package/dist/src/ds/components/ErrorState/ErrorState.d.ts +5 -0
- package/dist/src/ds/components/ErrorState/index.d.ts +2 -0
- package/dist/src/ds/components/FormFieldBlocks/fields/search-field-block.d.ts +2 -2
- package/dist/src/ds/components/FormFieldBlocks/fields/select-field-block.d.ts +2 -2
- package/dist/src/ds/components/FormFieldBlocks/fields/text-field-block.d.ts +1 -1
- package/dist/src/ds/components/Input/input.d.ts +2 -2
- package/dist/src/ds/components/ItemList/item-list.d.ts +10 -10
- package/dist/src/ds/components/JSONSchemaForm/index.d.ts +5 -5
- package/dist/src/ds/components/JSONSchemaForm/json-schema-form-root.d.ts +1 -1
- package/dist/src/ds/components/JSONSchemaForm/utils.d.ts +1 -1
- package/dist/src/ds/components/KeyValueList/key-value-list.d.ts +1 -2
- package/dist/src/ds/components/ListSearch/index.d.ts +1 -0
- package/dist/src/ds/components/ListSearch/list-search.d.ts +7 -0
- package/dist/src/ds/components/MainHeader/main-header-description.d.ts +1 -2
- package/dist/src/ds/components/MainHeader/main-header.d.ts +2 -2
- package/dist/src/ds/components/MainSidebar/main-sidebar-root.d.ts +2 -1
- package/dist/src/ds/components/MainSidebar/main-sidebar.d.ts +3 -3
- package/dist/src/ds/components/Notice/Notice.d.ts +3 -3
- package/dist/src/ds/components/Section/section.d.ts +1 -1
- package/dist/src/ds/components/Select/select.d.ts +1 -1
- package/dist/src/ds/components/SideDialog/side-dialog.d.ts +3 -3
- package/dist/src/ds/components/Slider/slider.d.ts +1 -1
- package/dist/src/ds/components/StatusBadge/StatusBadge.d.ts +2 -2
- package/dist/src/ds/components/Textarea/textarea.d.ts +2 -2
- package/dist/src/index.d.ts +4 -0
- package/dist/src/lib/ai-ui/attachments/pdfs-adapter.d.ts +1 -1
- package/dist/src/lib/ai-ui/hooks/use-adapters.d.ts +1 -1
- package/dist/src/lib/ai-ui/tools/badges/file-tree-badge.d.ts +1 -1
- package/dist/src/lib/ai-ui/tools/badges/workflow-badge.d.ts +1 -1
- package/dist/src/lib/form/components/array-element-wrapper.d.ts +1 -1
- package/dist/src/lib/form/components/array-wrapper.d.ts +1 -1
- package/dist/src/lib/form/components/boolean-field.d.ts +1 -1
- package/dist/src/lib/form/components/custom-array-field.d.ts +1 -1
- package/dist/src/lib/form/components/custom-auto-form-field.d.ts +1 -1
- package/dist/src/lib/form/components/custom-object-field.d.ts +1 -1
- package/dist/src/lib/form/components/field-wrapper.d.ts +1 -1
- package/dist/src/lib/form/components/object-wrapper.d.ts +1 -1
- package/dist/src/lib/truncate-string.d.ts +1 -0
- package/dist/src/types.d.ts +1 -1
- package/dist/tailwind.config.d.ts +274 -0
- package/dist/tailwind.preset.cjs.js +4 -4
- package/dist/tailwind.preset.cjs.js.map +1 -1
- package/dist/tailwind.preset.d.ts +3 -1
- package/dist/tailwind.preset.es.js +4 -4
- package/dist/tailwind.preset.es.js.map +1 -1
- package/dist/vite.config.d.ts +2 -0
- package/package.json +11 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# @mastra/playground-ui
|
|
2
2
|
|
|
3
|
+
## 19.0.0-alpha.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Added dataset and agent version selectors to the experiment evaluate tab. You can now choose which dataset version and agent version to use when running an experiment. Version information is displayed in the experiment sidebar, results panel header, and Past Runs list. Added a copy button next to the agent version selector to easily copy version IDs. ([#14562](https://github.com/mastra-ai/mastra/pull/14562))
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Added agent version support for experiments. When triggering an experiment, you can now pass an `agentVersion` parameter to pin which agent version to use. The agent version is stored with the experiment and returned in experiment responses. ([#14562](https://github.com/mastra-ai/mastra/pull/14562))
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
const client = new MastraClient();
|
|
15
|
+
|
|
16
|
+
await client.triggerDatasetExperiment({
|
|
17
|
+
datasetId: 'my-dataset',
|
|
18
|
+
targetType: 'agent',
|
|
19
|
+
targetId: 'my-agent',
|
|
20
|
+
version: 3, // pin to dataset version 3
|
|
21
|
+
agentVersion: 'ver_abc123', // pin to a specific agent version
|
|
22
|
+
});
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- Internal cleanup and linting fixes ([#14497](https://github.com/mastra-ai/mastra/pull/14497))
|
|
26
|
+
|
|
27
|
+
- Added experimental entity list components with skeleton loading states, error handling, and dedicated empty state components for all list pages. Gated behind MASTRA_EXPERIMENTAL_UI environment variable. ([#14547](https://github.com/mastra-ai/mastra/pull/14547))
|
|
28
|
+
|
|
29
|
+
- Updated dependencies [[`7dbd611`](https://github.com/mastra-ai/mastra/commit/7dbd611a85cb1e0c0a1581c57564268cb183d86e), [`41aee84`](https://github.com/mastra-ai/mastra/commit/41aee84561ceebe28bad1ecba8702d92838f67f0)]:
|
|
30
|
+
- @mastra/core@1.16.0-alpha.1
|
|
31
|
+
- @mastra/client-js@1.10.0-alpha.1
|
|
32
|
+
- @mastra/react@0.2.17-alpha.1
|
|
33
|
+
- @mastra/ai-sdk@1.2.0
|
|
34
|
+
|
|
3
35
|
## 19.0.0-alpha.0
|
|
4
36
|
|
|
5
37
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility-BSEoV343.cjs","sources":["../src/lib/query-utils.ts","../src/domains/workspace/client-utils.ts","../src/domains/workspace/compatibility.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 */\nconst HTTP_NO_RETRY_STATUSES = [400, 401, 403, 404];\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: string }).message;\n return message.includes('status: 403');\n }\n\n return false;\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: string }).message;\n return HTTP_NO_RETRY_STATUSES.some(code => message.includes(`status: ${code}`));\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).\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","/**\n * Checks if a method exists on an object and is callable.\n */\nexport function hasMethod<T>(obj: T, method: string): boolean {\n return method in (obj as object) && typeof (obj as Record<string, unknown>)[method] === 'function';\n}\n","import {
|
|
1
|
+
{"version":3,"file":"compatibility-BSEoV343.cjs","sources":["../src/lib/query-utils.ts","../src/domains/workspace/client-utils.ts","../src/domains/workspace/compatibility.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 */\nconst HTTP_NO_RETRY_STATUSES = [400, 401, 403, 404];\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: string }).message;\n return message.includes('status: 403');\n }\n\n return false;\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: string }).message;\n return HTTP_NO_RETRY_STATUSES.some(code => message.includes(`status: ${code}`));\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).\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","/**\n * Checks if a method exists on an object and is callable.\n */\nexport function hasMethod<T>(obj: T, method: string): boolean {\n return method in (obj as object) && typeof (obj as Record<string, unknown>)[method] === 'function';\n}\n","import type { MastraClient } from '@mastra/client-js';\nimport { coreFeatures } from '@mastra/core/features';\nimport { isNonRetryableError } from '../../lib/query-utils';\nimport { hasMethod } from './client-utils';\n\n/**\n * Checks if workspace v1 features are supported by both core and client.\n * This guards against version mismatches between playground-ui, core, and client-js.\n */\nexport const isWorkspaceV1Supported = (client: MastraClient) => {\n const workspaceClientMethods = ['listWorkspaces', 'getWorkspace'];\n\n const coreSupported = coreFeatures.has('workspaces-v1');\n const clientSupported = workspaceClientMethods.every(method => hasMethod(client, method));\n\n return coreSupported && clientSupported;\n};\n\n/**\n * Gets the HTTP status code from an error if present.\n * Supports MastraClientError, fetch Response, and other HTTP client error formats.\n */\nconst getStatusCode = (error: unknown): number | undefined => {\n if (!error || typeof error !== 'object') return undefined;\n\n // Check for status property (MastraClientError, fetch Response, etc.)\n if ('status' in error && typeof (error as { status: unknown }).status === 'number') {\n return (error as { status: number }).status;\n }\n\n // Check for statusCode property (from some HTTP clients)\n if ('statusCode' in error && typeof (error as { statusCode: unknown }).statusCode === 'number') {\n return (error as { statusCode: number }).statusCode;\n }\n\n return undefined;\n};\n\n/**\n * Checks if an error has a specific HTTP status code.\n * Supports MastraClientError, fetch Response, and other HTTP client error formats.\n */\nconst hasStatusCode = (error: unknown, statusCode: number): boolean => {\n return getStatusCode(error) === statusCode;\n};\n\n/**\n * Checks if an error is a 4xx client error (e.g., 400, 401, 403, 404).\n * Client errors won't resolve with retries.\n */\nconst isClientError = (error: unknown): boolean => {\n const status = getStatusCode(error);\n return status !== undefined && status >= 400 && status < 500;\n};\n\n/**\n * Checks if an error is a \"Not Implemented\" (501) error from the server.\n * This indicates the server's @mastra/core version doesn't support workspaces.\n */\nexport const isWorkspaceNotSupportedError = (error: unknown): boolean => {\n if (hasStatusCode(error, 501)) {\n return true;\n }\n\n // Check error message for our specific error\n if (error && typeof error === 'object' && 'message' in error) {\n const message = (error as { message: string }).message;\n return message.includes('Workspace v1 not supported') || message.includes('501');\n }\n\n return false;\n};\n\n/**\n * Checks if an error is a \"Not Found\" (404) error from the server.\n * This indicates the requested resource doesn't exist (e.g., file not found).\n */\nexport const isNotFoundError = (error: unknown): boolean => {\n if (hasStatusCode(error, 404)) {\n return true;\n }\n\n // Check error message for status code (client-js throws Error with message like \"HTTP error! status: 404 - ...\")\n if (error && typeof error === 'object' && 'message' in error) {\n const message = (error as { message: string }).message;\n return message.includes('status: 404');\n }\n\n return false;\n};\n\n/**\n * React Query retry function that doesn't retry on client errors (4xx) or 501 errors.\n * Use this to prevent infinite retries when resources don't exist, access is denied, or workspaces aren't supported.\n */\nexport const shouldRetryWorkspaceQuery = (failureCount: number, error: unknown): boolean => {\n // Don't retry 4xx client errors (400, 401, 403, 404, etc.) - these won't resolve with retries\n if (isClientError(error)) {\n return false;\n }\n // Don't retry 501 \"Not Implemented\" errors - they won't resolve with retries\n if (isWorkspaceNotSupportedError(error)) {\n return false;\n }\n // Don't retry 4xx client errors (400, 401, 403, 404)\n if (isNonRetryableError(error)) {\n return false;\n }\n // Default retry behavior: retry up to 3 times\n return failureCount < 3;\n};\n"],"names":["coreFeatures"],"mappings":";;;;AAOA,MAAM,sBAAA,GAAyB,CAAC,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAM3C,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,CAA8B,OAAA;AAC/C,IAAA,OAAO,OAAA,CAAQ,SAAS,aAAa,CAAA;AAAA,EACvC;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,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,CAA8B,OAAA;AAC/C,IAAA,OAAO,sBAAA,CAAuB,KAAK,CAAA,IAAA,KAAQ,OAAA,CAAQ,SAAS,CAAA,QAAA,EAAW,IAAI,EAAE,CAAC,CAAA;AAAA,EAChF;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;;ACxEO,SAAS,SAAA,CAAa,KAAQ,MAAA,EAAyB;AAC5D,EAAA,OAAO,MAAA,IAAW,GAAA,IAAkB,OAAQ,GAAA,CAAgC,MAAM,CAAA,KAAM,UAAA;AAC1F;;ACIO,MAAM,sBAAA,GAAyB,CAAC,MAAA,KAAyB;AAC9D,EAAA,MAAM,sBAAA,GAAyB,CAAC,gBAAA,EAAkB,cAAc,CAAA;AAEhE,EAAA,MAAM,aAAA,GAAgBA,qBAAA,CAAa,GAAA,CAAI,eAAe,CAAA;AACtD,EAAA,MAAM,kBAAkB,sBAAA,CAAuB,KAAA,CAAM,YAAU,SAAA,CAAU,MAAA,EAAQ,MAAM,CAAC,CAAA;AAExF,EAAA,OAAO,aAAA,IAAiB,eAAA;AAC1B;AAMA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAuC;AAC5D,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,MAAA;AAGhD,EAAA,IAAI,QAAA,IAAY,KAAA,IAAS,OAAQ,KAAA,CAA8B,WAAW,QAAA,EAAU;AAClF,IAAA,OAAQ,KAAA,CAA6B,MAAA;AAAA,EACvC;AAGA,EAAA,IAAI,YAAA,IAAgB,KAAA,IAAS,OAAQ,KAAA,CAAkC,eAAe,QAAA,EAAU;AAC9F,IAAA,OAAQ,KAAA,CAAiC,UAAA;AAAA,EAC3C;AAEA,EAAA,OAAO,MAAA;AACT,CAAA;AAMA,MAAM,aAAA,GAAgB,CAAC,KAAA,EAAgB,UAAA,KAAgC;AACrE,EAAA,OAAO,aAAA,CAAc,KAAK,CAAA,KAAM,UAAA;AAClC,CAAA;AAMA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4B;AACjD,EAAA,MAAM,MAAA,GAAS,cAAc,KAAK,CAAA;AAClC,EAAA,OAAO,MAAA,KAAW,MAAA,IAAa,MAAA,IAAU,GAAA,IAAO,MAAA,GAAS,GAAA;AAC3D,CAAA;AAMO,MAAM,4BAAA,GAA+B,CAAC,KAAA,KAA4B;AACvE,EAAA,IAAI,aAAA,CAAc,KAAA,EAAO,GAAG,CAAA,EAAG;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,aAAa,KAAA,EAAO;AAC5D,IAAA,MAAM,UAAW,KAAA,CAA8B,OAAA;AAC/C,IAAA,OAAO,QAAQ,QAAA,CAAS,4BAA4B,CAAA,IAAK,OAAA,CAAQ,SAAS,KAAK,CAAA;AAAA,EACjF;AAEA,EAAA,OAAO,KAAA;AACT;AAwBO,MAAM,yBAAA,GAA4B,CAAC,YAAA,EAAsB,KAAA,KAA4B;AAE1F,EAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,4BAAA,CAA6B,KAAK,CAAA,EAAG;AACvC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,mBAAA,CAAoB,KAAK,CAAA,EAAG;AAC9B,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAA,GAAe,CAAA;AACxB;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility-nun8AtH_.js","sources":["../src/lib/query-utils.ts","../src/domains/workspace/client-utils.ts","../src/domains/workspace/compatibility.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 */\nconst HTTP_NO_RETRY_STATUSES = [400, 401, 403, 404];\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: string }).message;\n return message.includes('status: 403');\n }\n\n return false;\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: string }).message;\n return HTTP_NO_RETRY_STATUSES.some(code => message.includes(`status: ${code}`));\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).\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","/**\n * Checks if a method exists on an object and is callable.\n */\nexport function hasMethod<T>(obj: T, method: string): boolean {\n return method in (obj as object) && typeof (obj as Record<string, unknown>)[method] === 'function';\n}\n","import {
|
|
1
|
+
{"version":3,"file":"compatibility-nun8AtH_.js","sources":["../src/lib/query-utils.ts","../src/domains/workspace/client-utils.ts","../src/domains/workspace/compatibility.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 */\nconst HTTP_NO_RETRY_STATUSES = [400, 401, 403, 404];\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: string }).message;\n return message.includes('status: 403');\n }\n\n return false;\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: string }).message;\n return HTTP_NO_RETRY_STATUSES.some(code => message.includes(`status: ${code}`));\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).\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","/**\n * Checks if a method exists on an object and is callable.\n */\nexport function hasMethod<T>(obj: T, method: string): boolean {\n return method in (obj as object) && typeof (obj as Record<string, unknown>)[method] === 'function';\n}\n","import type { MastraClient } from '@mastra/client-js';\nimport { coreFeatures } from '@mastra/core/features';\nimport { isNonRetryableError } from '../../lib/query-utils';\nimport { hasMethod } from './client-utils';\n\n/**\n * Checks if workspace v1 features are supported by both core and client.\n * This guards against version mismatches between playground-ui, core, and client-js.\n */\nexport const isWorkspaceV1Supported = (client: MastraClient) => {\n const workspaceClientMethods = ['listWorkspaces', 'getWorkspace'];\n\n const coreSupported = coreFeatures.has('workspaces-v1');\n const clientSupported = workspaceClientMethods.every(method => hasMethod(client, method));\n\n return coreSupported && clientSupported;\n};\n\n/**\n * Gets the HTTP status code from an error if present.\n * Supports MastraClientError, fetch Response, and other HTTP client error formats.\n */\nconst getStatusCode = (error: unknown): number | undefined => {\n if (!error || typeof error !== 'object') return undefined;\n\n // Check for status property (MastraClientError, fetch Response, etc.)\n if ('status' in error && typeof (error as { status: unknown }).status === 'number') {\n return (error as { status: number }).status;\n }\n\n // Check for statusCode property (from some HTTP clients)\n if ('statusCode' in error && typeof (error as { statusCode: unknown }).statusCode === 'number') {\n return (error as { statusCode: number }).statusCode;\n }\n\n return undefined;\n};\n\n/**\n * Checks if an error has a specific HTTP status code.\n * Supports MastraClientError, fetch Response, and other HTTP client error formats.\n */\nconst hasStatusCode = (error: unknown, statusCode: number): boolean => {\n return getStatusCode(error) === statusCode;\n};\n\n/**\n * Checks if an error is a 4xx client error (e.g., 400, 401, 403, 404).\n * Client errors won't resolve with retries.\n */\nconst isClientError = (error: unknown): boolean => {\n const status = getStatusCode(error);\n return status !== undefined && status >= 400 && status < 500;\n};\n\n/**\n * Checks if an error is a \"Not Implemented\" (501) error from the server.\n * This indicates the server's @mastra/core version doesn't support workspaces.\n */\nexport const isWorkspaceNotSupportedError = (error: unknown): boolean => {\n if (hasStatusCode(error, 501)) {\n return true;\n }\n\n // Check error message for our specific error\n if (error && typeof error === 'object' && 'message' in error) {\n const message = (error as { message: string }).message;\n return message.includes('Workspace v1 not supported') || message.includes('501');\n }\n\n return false;\n};\n\n/**\n * Checks if an error is a \"Not Found\" (404) error from the server.\n * This indicates the requested resource doesn't exist (e.g., file not found).\n */\nexport const isNotFoundError = (error: unknown): boolean => {\n if (hasStatusCode(error, 404)) {\n return true;\n }\n\n // Check error message for status code (client-js throws Error with message like \"HTTP error! status: 404 - ...\")\n if (error && typeof error === 'object' && 'message' in error) {\n const message = (error as { message: string }).message;\n return message.includes('status: 404');\n }\n\n return false;\n};\n\n/**\n * React Query retry function that doesn't retry on client errors (4xx) or 501 errors.\n * Use this to prevent infinite retries when resources don't exist, access is denied, or workspaces aren't supported.\n */\nexport const shouldRetryWorkspaceQuery = (failureCount: number, error: unknown): boolean => {\n // Don't retry 4xx client errors (400, 401, 403, 404, etc.) - these won't resolve with retries\n if (isClientError(error)) {\n return false;\n }\n // Don't retry 501 \"Not Implemented\" errors - they won't resolve with retries\n if (isWorkspaceNotSupportedError(error)) {\n return false;\n }\n // Don't retry 4xx client errors (400, 401, 403, 404)\n if (isNonRetryableError(error)) {\n return false;\n }\n // Default retry behavior: retry up to 3 times\n return failureCount < 3;\n};\n"],"names":[],"mappings":"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"}
|