@tai42/studio-sdk 16.0.0 → 17.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/dist/components/code-block.js +1 -1
- package/dist/components/code-block.js.map +1 -1
- package/dist/components/confirm-dialog.js +1 -1
- package/dist/components/confirm-dialog.js.map +1 -1
- package/dist/components/copy-field.js +1 -1
- package/dist/components/copy-field.js.map +1 -1
- package/dist/components/date-range-picker.d.ts.map +1 -1
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/dialog.d.ts.map +1 -1
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/dirty-guard.d.ts.map +1 -1
- package/dist/components/dirty-guard.js +1 -1
- package/dist/components/dirty-guard.js.map +1 -1
- package/dist/components/explorer-body.d.ts +49 -0
- package/dist/components/explorer-body.d.ts.map +1 -0
- package/dist/components/explorer-body.js +67 -0
- package/dist/components/explorer-body.js.map +1 -0
- package/dist/components/explorer-page-size.d.ts +4 -0
- package/dist/components/explorer-page-size.d.ts.map +1 -0
- package/dist/components/explorer-page-size.js +36 -0
- package/dist/components/explorer-page-size.js.map +1 -0
- package/dist/components/explorer-tag-filter.d.ts +17 -0
- package/dist/components/explorer-tag-filter.d.ts.map +1 -0
- package/dist/components/explorer-tag-filter.js +29 -0
- package/dist/components/explorer-tag-filter.js.map +1 -0
- package/dist/components/explorer-tags.d.ts +22 -0
- package/dist/components/explorer-tags.d.ts.map +1 -0
- package/dist/components/explorer-tags.js +51 -0
- package/dist/components/explorer-tags.js.map +1 -0
- package/dist/components/explorer-view.d.ts +3 -17
- package/dist/components/explorer-view.d.ts.map +1 -1
- package/dist/components/explorer-view.js +53 -170
- package/dist/components/explorer-view.js.map +1 -1
- package/dist/components/extension-combo-builder.d.ts +1 -6
- package/dist/components/extension-combo-builder.d.ts.map +1 -1
- package/dist/components/extension-combo-builder.js +4 -79
- package/dist/components/extension-combo-builder.js.map +1 -1
- package/dist/components/extension-combo-parts.d.ts +44 -0
- package/dist/components/extension-combo-parts.d.ts.map +1 -0
- package/dist/components/extension-combo-parts.js +52 -0
- package/dist/components/extension-combo-parts.js.map +1 -0
- package/dist/components/field.d.ts +8 -0
- package/dist/components/field.d.ts.map +1 -1
- package/dist/components/field.js +0 -8
- package/dist/components/field.js.map +1 -1
- package/dist/components/fleet-report.d.ts +1 -1
- package/dist/components/fleet-report.d.ts.map +1 -1
- package/dist/components/fleet-report.js +51 -37
- package/dist/components/fleet-report.js.map +1 -1
- package/dist/components/folder-nav.d.ts.map +1 -1
- package/dist/components/folder-nav.js +1 -1
- package/dist/components/folder-nav.js.map +1 -1
- package/dist/components/form-dialog.d.ts.map +1 -1
- package/dist/components/form-dialog.js +1 -1
- package/dist/components/form-dialog.js.map +1 -1
- package/dist/components/icons/chrome-marks.d.ts +50 -0
- package/dist/components/icons/chrome-marks.d.ts.map +1 -0
- package/dist/components/icons/chrome-marks.js +51 -0
- package/dist/components/icons/chrome-marks.js.map +1 -0
- package/dist/components/icons/icon-frame.d.ts +29 -0
- package/dist/components/icons/icon-frame.d.ts.map +1 -0
- package/dist/components/icons/icon-frame.js +19 -0
- package/dist/components/icons/icon-frame.js.map +1 -0
- package/dist/components/icons/index.d.ts +40 -0
- package/dist/components/icons/index.d.ts.map +1 -0
- package/dist/components/icons/index.js +39 -0
- package/dist/components/icons/index.js.map +1 -0
- package/dist/components/icons/nav-map.d.ts +14 -0
- package/dist/components/icons/nav-map.d.ts.map +1 -0
- package/dist/components/icons/nav-map.js +28 -0
- package/dist/components/icons/nav-map.js.map +1 -0
- package/dist/components/icons/nav-marks.d.ts +44 -0
- package/dist/components/icons/nav-marks.d.ts.map +1 -0
- package/dist/components/icons/nav-marks.js +45 -0
- package/dist/components/icons/nav-marks.js.map +1 -0
- package/dist/components/icons/status-marks.d.ts +21 -0
- package/dist/components/icons/status-marks.d.ts.map +1 -0
- package/dist/components/icons/status-marks.js +22 -0
- package/dist/components/icons/status-marks.js.map +1 -0
- package/dist/components/icons/theme-marks.d.ts +9 -0
- package/dist/components/icons/theme-marks.d.ts.map +1 -0
- package/dist/components/icons/theme-marks.js +10 -0
- package/dist/components/icons/theme-marks.js.map +1 -0
- package/dist/components/inputs.js.map +1 -1
- package/dist/components/json-diff.d.ts.map +1 -1
- package/dist/components/json-diff.js +1 -3
- package/dist/components/json-diff.js.map +1 -1
- package/dist/components/json-tree-context.d.ts +13 -0
- package/dist/components/json-tree-context.d.ts.map +1 -0
- package/dist/components/json-tree-context.js +15 -0
- package/dist/components/json-tree-context.js.map +1 -0
- package/dist/components/json-tree-model.d.ts +56 -0
- package/dist/components/json-tree-model.d.ts.map +1 -0
- package/dist/components/json-tree-model.js +125 -0
- package/dist/components/json-tree-model.js.map +1 -0
- package/dist/components/json-tree-nodes.d.ts +35 -0
- package/dist/components/json-tree-nodes.d.ts.map +1 -0
- package/dist/components/json-tree-nodes.js +113 -0
- package/dist/components/json-tree-nodes.js.map +1 -0
- package/dist/components/json-tree.d.ts +20 -0
- package/dist/components/json-tree.d.ts.map +1 -1
- package/dist/components/json-tree.js +7 -315
- package/dist/components/json-tree.js.map +1 -1
- package/dist/components/json-value-format.d.ts +20 -0
- package/dist/components/json-value-format.d.ts.map +1 -0
- package/dist/components/json-value-format.js +63 -0
- package/dist/components/json-value-format.js.map +1 -0
- package/dist/components/markdown-blocks.d.ts +38 -0
- package/dist/components/markdown-blocks.d.ts.map +1 -0
- package/dist/components/markdown-blocks.js +168 -0
- package/dist/components/markdown-blocks.js.map +1 -0
- package/dist/components/markdown-inline.d.ts +24 -0
- package/dist/components/markdown-inline.d.ts.map +1 -0
- package/dist/components/markdown-inline.js +257 -0
- package/dist/components/markdown-inline.js.map +1 -0
- package/dist/components/markdown.d.ts +3 -52
- package/dist/components/markdown.d.ts.map +1 -1
- package/dist/components/markdown.js +4 -376
- package/dist/components/markdown.js.map +1 -1
- package/dist/components/observer-registry.d.ts +38 -0
- package/dist/components/observer-registry.d.ts.map +1 -0
- package/dist/components/observer-registry.js +131 -0
- package/dist/components/observer-registry.js.map +1 -0
- package/dist/components/overflow-measure.d.ts +38 -0
- package/dist/components/overflow-measure.d.ts.map +1 -0
- package/dist/components/overflow-measure.js +54 -0
- package/dist/components/overflow-measure.js.map +1 -0
- package/dist/components/page-fill.d.ts.map +1 -1
- package/dist/components/page-fill.js.map +1 -1
- package/dist/components/prose-regions.d.ts +81 -0
- package/dist/components/prose-regions.d.ts.map +1 -0
- package/dist/components/prose-regions.js +128 -0
- package/dist/components/prose-regions.js.map +1 -0
- package/dist/components/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/scroll-region.d.ts +24 -0
- package/dist/components/scroll-region.d.ts.map +1 -1
- package/dist/components/scroll-region.js +3 -322
- package/dist/components/scroll-region.js.map +1 -1
- package/dist/components/tab-stop-parse.d.ts +53 -0
- package/dist/components/tab-stop-parse.d.ts.map +1 -0
- package/dist/components/tab-stop-parse.js +202 -0
- package/dist/components/tab-stop-parse.js.map +1 -0
- package/dist/components/table.d.ts +1 -1
- package/dist/components/table.d.ts.map +1 -1
- package/dist/components/tags.d.ts.map +1 -1
- package/dist/components/tags.js +1 -1
- package/dist/components/tags.js.map +1 -1
- package/dist/components/templated-text-field.d.ts +1 -1
- package/dist/components/templated-text-field.d.ts.map +1 -1
- package/dist/components/templated-text-field.js +10 -174
- package/dist/components/templated-text-field.js.map +1 -1
- package/dist/components/templated-text-kwargs-editor.d.ts +24 -0
- package/dist/components/templated-text-kwargs-editor.d.ts.map +1 -0
- package/dist/components/templated-text-kwargs-editor.js +48 -0
- package/dist/components/templated-text-kwargs-editor.js.map +1 -0
- package/dist/components/templated-text-kwargs.d.ts +37 -0
- package/dist/components/templated-text-kwargs.d.ts.map +1 -0
- package/dist/components/templated-text-kwargs.js +66 -0
- package/dist/components/templated-text-kwargs.js.map +1 -0
- package/dist/components/templated-text-source.d.ts +33 -0
- package/dist/components/templated-text-source.d.ts.map +1 -0
- package/dist/components/templated-text-source.js +53 -0
- package/dist/components/templated-text-source.js.map +1 -0
- package/dist/components/tool-picker-parts.d.ts +39 -0
- package/dist/components/tool-picker-parts.d.ts.map +1 -0
- package/dist/components/tool-picker-parts.js +87 -0
- package/dist/components/tool-picker-parts.js.map +1 -0
- package/dist/components/tool-picker.d.ts +1 -2
- package/dist/components/tool-picker.d.ts.map +1 -1
- package/dist/components/tool-picker.js +4 -66
- package/dist/components/tool-picker.js.map +1 -1
- package/dist/components/version-history-panel.d.ts.map +1 -1
- package/dist/components/version-history-panel.js +7 -34
- package/dist/components/version-history-panel.js.map +1 -1
- package/dist/components/version-history-rows.d.ts +48 -0
- package/dist/components/version-history-rows.d.ts.map +1 -0
- package/dist/components/version-history-rows.js +51 -0
- package/dist/components/version-history-rows.js.map +1 -0
- package/dist/components/view-toggle.d.ts.map +1 -1
- package/dist/components/view-toggle.js.map +1 -1
- package/dist/element-slot.d.ts +11 -0
- package/dist/element-slot.d.ts.map +1 -1
- package/dist/element-slot.js +0 -11
- package/dist/element-slot.js.map +1 -1
- package/dist/guards.d.ts +6 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +8 -0
- package/dist/guards.js.map +1 -0
- package/dist/hooks/interactions-connection.d.ts +43 -0
- package/dist/hooks/interactions-connection.d.ts.map +1 -0
- package/dist/hooks/interactions-connection.js +171 -0
- package/dist/hooks/interactions-connection.js.map +1 -0
- package/dist/hooks/interactions-stream.d.ts +80 -0
- package/dist/hooks/interactions-stream.d.ts.map +1 -0
- package/dist/hooks/interactions-stream.js +233 -0
- package/dist/hooks/interactions-stream.js.map +1 -0
- package/dist/hooks/useApi.d.ts +2259 -2189
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/hooks/useApi.js +0 -11
- package/dist/hooks/useApi.js.map +1 -1
- package/dist/hooks/useAuth.d.ts +6 -0
- package/dist/hooks/useAuth.d.ts.map +1 -1
- package/dist/hooks/useAuth.js +0 -6
- package/dist/hooks/useAuth.js.map +1 -1
- package/dist/hooks/useCapabilities.d.ts +18 -2
- package/dist/hooks/useCapabilities.d.ts.map +1 -1
- package/dist/hooks/useCapabilities.js +1 -17
- package/dist/hooks/useCapabilities.js.map +1 -1
- package/dist/hooks/useSse.d.ts +34 -6
- package/dist/hooks/useSse.d.ts.map +1 -1
- package/dist/hooks/useSse.js +27 -471
- package/dist/hooks/useSse.js.map +1 -1
- package/dist/hooks/useSystemKinds.d.ts +1 -1
- package/dist/hooks/useSystemKinds.d.ts.map +1 -1
- package/dist/hooks/useSystemKinds.js +0 -18
- package/dist/hooks/useSystemKinds.js.map +1 -1
- package/dist/hooks/useTheme.d.ts +15 -0
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/hooks/useTheme.js +0 -15
- package/dist/hooks/useTheme.js.map +1 -1
- package/dist/hooks/useToolDisplayNames.d.ts +0 -14
- package/dist/hooks/useToolDisplayNames.d.ts.map +1 -1
- package/dist/hooks/useToolDisplayNames.js +0 -14
- package/dist/hooks/useToolDisplayNames.js.map +1 -1
- package/dist/host.d.ts +3 -3
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +2 -9
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +103 -103
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -62
- package/dist/index.js.map +1 -1
- package/dist/navigation/app-link.d.ts +25 -0
- package/dist/navigation/app-link.d.ts.map +1 -0
- package/dist/navigation/app-link.js +33 -0
- package/dist/navigation/app-link.js.map +1 -0
- package/dist/navigation/context.d.ts +3 -20
- package/dist/navigation/context.d.ts.map +1 -1
- package/dist/navigation/context.js +7 -267
- package/dist/navigation/context.js.map +1 -1
- package/dist/navigation/entry-state.d.ts +23 -0
- package/dist/navigation/entry-state.d.ts.map +1 -0
- package/dist/navigation/entry-state.js +39 -0
- package/dist/navigation/entry-state.js.map +1 -0
- package/dist/navigation/guard-registry.d.ts +30 -0
- package/dist/navigation/guard-registry.d.ts.map +1 -0
- package/dist/navigation/guard-registry.js +46 -0
- package/dist/navigation/guard-registry.js.map +1 -0
- package/dist/navigation/guarded-navigation.d.ts +24 -0
- package/dist/navigation/guarded-navigation.d.ts.map +1 -0
- package/dist/navigation/guarded-navigation.js +102 -0
- package/dist/navigation/guarded-navigation.js.map +1 -0
- package/dist/navigation/index.d.ts +5 -4
- package/dist/navigation/index.d.ts.map +1 -1
- package/dist/navigation/index.js +2 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/navigation/types.d.ts +8 -11
- package/dist/navigation/types.d.ts.map +1 -1
- package/dist/navigation/use-back-forward-guard.d.ts +12 -0
- package/dist/navigation/use-back-forward-guard.d.ts.map +1 -0
- package/dist/navigation/use-back-forward-guard.js +75 -0
- package/dist/navigation/use-back-forward-guard.js.map +1 -0
- package/dist/navigation/use-search-commit.d.ts.map +1 -1
- package/dist/navigation/use-search-commit.js.map +1 -1
- package/dist/plugin/host-state.d.ts.map +1 -1
- package/dist/plugin/host-state.js.map +1 -1
- package/dist/plugin/registry.d.ts +6 -15
- package/dist/plugin/registry.d.ts.map +1 -1
- package/dist/plugin/registry.js +83 -75
- package/dist/plugin/registry.js.map +1 -1
- package/dist/schema-editor/SchemaEditor.d.ts.map +1 -1
- package/dist/schema-editor/SchemaEditor.js.map +1 -1
- package/dist/schema-editor/index.d.ts +3 -3
- package/dist/schema-editor/index.d.ts.map +1 -1
- package/dist/schema-editor/index.js +1 -6
- package/dist/schema-editor/index.js.map +1 -1
- package/dist/schema-form/SecretRefField.d.ts +18 -3
- package/dist/schema-form/SecretRefField.d.ts.map +1 -1
- package/dist/schema-form/SecretRefField.js +21 -26
- package/dist/schema-form/SecretRefField.js.map +1 -1
- package/dist/schema-form/classify.d.ts +1 -113
- package/dist/schema-form/classify.d.ts.map +1 -1
- package/dist/schema-form/classify.js +174 -246
- package/dist/schema-form/classify.js.map +1 -1
- package/dist/schema-form/context.d.ts +6 -0
- package/dist/schema-form/context.d.ts.map +1 -1
- package/dist/schema-form/context.js +0 -6
- package/dist/schema-form/context.js.map +1 -1
- package/dist/schema-form/default-value.d.ts.map +1 -1
- package/dist/schema-form/default-value.js +42 -19
- package/dist/schema-form/default-value.js.map +1 -1
- package/dist/schema-form/enum-field.d.ts +1 -1
- package/dist/schema-form/enum-field.d.ts.map +1 -1
- package/dist/schema-form/field-group.d.ts +6 -0
- package/dist/schema-form/field-group.d.ts.map +1 -1
- package/dist/schema-form/field-group.js +0 -6
- package/dist/schema-form/field-group.js.map +1 -1
- package/dist/schema-form/field-model.d.ts +121 -0
- package/dist/schema-form/field-model.d.ts.map +1 -0
- package/dist/schema-form/field-model.js +2 -0
- package/dist/schema-form/field-model.js.map +1 -0
- package/dist/schema-form/field-node.d.ts.map +1 -1
- package/dist/schema-form/field-node.js +25 -14
- package/dist/schema-form/field-node.js.map +1 -1
- package/dist/schema-form/index.d.ts +8 -8
- package/dist/schema-form/index.d.ts.map +1 -1
- package/dist/schema-form/index.js +3 -34
- package/dist/schema-form/index.js.map +1 -1
- package/dist/schema-form/json-field.d.ts +19 -0
- package/dist/schema-form/json-field.d.ts.map +1 -1
- package/dist/schema-form/json-field.js +0 -19
- package/dist/schema-form/json-field.js.map +1 -1
- package/dist/schema-form/media-field.d.ts +1 -1
- package/dist/schema-form/media-field.d.ts.map +1 -1
- package/dist/schema-form/media-field.js +49 -30
- package/dist/schema-form/media-field.js.map +1 -1
- package/dist/schema-form/record-field.d.ts +12 -0
- package/dist/schema-form/record-field.d.ts.map +1 -1
- package/dist/schema-form/record-field.js +1 -13
- package/dist/schema-form/record-field.js.map +1 -1
- package/dist/schema-form/string-annotations.d.ts +20 -0
- package/dist/schema-form/string-annotations.d.ts.map +1 -0
- package/dist/schema-form/string-annotations.js +105 -0
- package/dist/schema-form/string-annotations.js.map +1 -0
- package/dist/schema-form/string-field.d.ts +1 -1
- package/dist/schema-form/string-field.d.ts.map +1 -1
- package/dist/schema-form/string-field.js +1 -1
- package/dist/schema-form/string-field.js.map +1 -1
- package/dist/schema-form/union-field.d.ts +1 -1
- package/dist/schema-form/union-field.d.ts.map +1 -1
- package/dist/schema-form/union-field.js.map +1 -1
- package/dist/schema-form/union.d.ts +8 -1
- package/dist/schema-form/union.d.ts.map +1 -1
- package/dist/schema-form/union.js +0 -7
- package/dist/schema-form/union.js.map +1 -1
- package/dist/schema-form/validate.d.ts.map +1 -1
- package/dist/schema-form/validate.js +126 -105
- package/dist/schema-form/validate.js.map +1 -1
- package/dist/state-binding/AdapterMapping.d.ts.map +1 -1
- package/dist/state-binding/AdapterMapping.js +0 -0
- package/dist/state-binding/AdapterMapping.js.map +1 -1
- package/dist/state-binding/BindingJqField.d.ts.map +1 -1
- package/dist/state-binding/BindingJqField.js +2 -2
- package/dist/state-binding/BindingJqField.js.map +1 -1
- package/dist/state-binding/InputInjectionRow.d.ts.map +1 -1
- package/dist/state-binding/InputInjectionRow.js +3 -3
- package/dist/state-binding/InputInjectionRow.js.map +1 -1
- package/dist/state-binding/StateAttachRow.d.ts.map +1 -1
- package/dist/state-binding/StateAttachRow.js +57 -41
- package/dist/state-binding/StateAttachRow.js.map +1 -1
- package/dist/state-binding/StateBindingSection.d.ts.map +1 -1
- package/dist/state-binding/StateBindingSection.js.map +1 -1
- package/dist/state-binding/SubjectScopeFields.d.ts.map +1 -1
- package/dist/state-binding/SubjectScopeFields.js.map +1 -1
- package/dist/state-binding/UpdateRow.d.ts.map +1 -1
- package/dist/state-binding/UpdateRow.js +2 -2
- package/dist/state-binding/UpdateRow.js.map +1 -1
- package/dist/state-binding/adapter-mapping-row.d.ts +17 -0
- package/dist/state-binding/adapter-mapping-row.d.ts.map +1 -0
- package/dist/state-binding/adapter-mapping-row.js +87 -0
- package/dist/state-binding/adapter-mapping-row.js.map +1 -0
- package/dist/state-binding/index.d.ts +21 -21
- package/dist/state-binding/index.d.ts.map +1 -1
- package/dist/state-binding/index.js +9 -15
- package/dist/state-binding/index.js.map +1 -1
- package/dist/state-binding/templated-text-catalog.d.ts.map +1 -1
- package/dist/state-binding/templated-text-catalog.js.map +1 -1
- package/dist/state-binding/types.d.ts +2 -2
- package/dist/state-binding/types.d.ts.map +1 -1
- package/dist/structured-output/StructuredOutput.d.ts.map +1 -1
- package/dist/structured-output/StructuredOutput.js +1 -3
- package/dist/structured-output/StructuredOutput.js.map +1 -1
- package/package.json +2 -2
- package/src/components/code-block.tsx +1 -1
- package/src/components/confirm-dialog.tsx +1 -1
- package/src/components/copy-field.tsx +1 -1
- package/src/components/date-range-picker.tsx +1 -1
- package/src/components/dialog.tsx +1 -1
- package/src/components/dirty-guard.tsx +3 -3
- package/src/components/explorer-body.tsx +239 -0
- package/src/components/explorer-page-size.ts +39 -0
- package/src/components/explorer-tag-filter.tsx +80 -0
- package/src/components/explorer-tags.ts +64 -0
- package/src/components/explorer-view.tsx +115 -367
- package/src/components/extension-combo-builder.tsx +35 -153
- package/src/components/extension-combo-parts.tsx +236 -0
- package/src/components/field.tsx +1 -1
- package/src/components/fleet-report.tsx +98 -55
- package/src/components/folder-nav.tsx +2 -2
- package/src/components/form-dialog.tsx +2 -2
- package/src/components/icons/chrome-marks.tsx +195 -0
- package/src/components/icons/icon-frame.tsx +50 -0
- package/src/components/icons/index.ts +84 -0
- package/src/components/icons/nav-map.ts +55 -0
- package/src/components/icons/nav-marks.tsx +205 -0
- package/src/components/icons/status-marks.tsx +46 -0
- package/src/components/icons/theme-marks.tsx +33 -0
- package/src/components/inputs.tsx +1 -1
- package/src/components/json-diff.tsx +1 -4
- package/src/components/json-tree-context.ts +26 -0
- package/src/components/json-tree-model.ts +139 -0
- package/src/components/json-tree-nodes.tsx +224 -0
- package/src/components/json-tree.tsx +15 -434
- package/src/components/json-value-format.ts +64 -0
- package/src/components/markdown-blocks.ts +198 -0
- package/src/components/markdown-inline.tsx +365 -0
- package/src/components/markdown.tsx +6 -472
- package/src/components/observer-registry.ts +139 -0
- package/src/components/overflow-measure.ts +69 -0
- package/src/components/page-fill.tsx +1 -1
- package/src/components/prose-regions.ts +153 -0
- package/src/components/radio-group.tsx +1 -1
- package/src/components/scroll-region.tsx +22 -361
- package/src/components/tab-stop-parse.ts +217 -0
- package/src/components/table.tsx +1 -1
- package/src/components/tags.tsx +2 -2
- package/src/components/templated-text-field.tsx +39 -332
- package/src/components/templated-text-kwargs-editor.tsx +147 -0
- package/src/components/templated-text-kwargs.ts +92 -0
- package/src/components/templated-text-source.tsx +226 -0
- package/src/components/tool-picker-parts.tsx +184 -0
- package/src/components/tool-picker.tsx +22 -114
- package/src/components/version-history-panel.tsx +39 -143
- package/src/components/version-history-rows.tsx +220 -0
- package/src/components/view-toggle.tsx +1 -1
- package/src/element-slot.ts +1 -1
- package/src/guards.ts +7 -0
- package/src/hooks/interactions-connection.ts +227 -0
- package/src/hooks/interactions-stream.ts +274 -0
- package/src/hooks/useApi.ts +1 -1
- package/src/hooks/useAuth.ts +1 -1
- package/src/hooks/useCapabilities.ts +3 -3
- package/src/hooks/useSse.ts +51 -478
- package/src/hooks/useSystemKinds.tsx +2 -2
- package/src/hooks/useTheme.ts +1 -1
- package/src/hooks/useToolDisplayNames.tsx +2 -2
- package/src/host.ts +7 -7
- package/src/index.ts +292 -292
- package/src/navigation/app-link.tsx +70 -0
- package/src/navigation/context.tsx +12 -331
- package/src/navigation/entry-state.ts +42 -0
- package/src/navigation/guard-registry.ts +65 -0
- package/src/navigation/guarded-navigation.ts +147 -0
- package/src/navigation/index.ts +14 -14
- package/src/navigation/types.ts +8 -11
- package/src/navigation/use-back-forward-guard.ts +90 -0
- package/src/navigation/use-search-commit.ts +1 -1
- package/src/plugin/host-state.ts +1 -1
- package/src/plugin/registry.ts +111 -90
- package/src/schema-editor/SchemaEditor.tsx +1 -1
- package/src/schema-editor/index.ts +3 -3
- package/src/schema-form/SecretRefField.tsx +122 -72
- package/src/schema-form/classify.ts +245 -396
- package/src/schema-form/context.ts +1 -1
- package/src/schema-form/default-value.ts +48 -17
- package/src/schema-form/enum-field.tsx +1 -1
- package/src/schema-form/field-group.tsx +1 -1
- package/src/schema-form/field-model.ts +133 -0
- package/src/schema-form/field-node.tsx +95 -39
- package/src/schema-form/index.ts +10 -10
- package/src/schema-form/json-field.tsx +1 -1
- package/src/schema-form/media-field.tsx +136 -67
- package/src/schema-form/record-field.tsx +2 -2
- package/src/schema-form/string-annotations.ts +111 -0
- package/src/schema-form/string-field.tsx +2 -2
- package/src/schema-form/union-field.tsx +3 -2
- package/src/schema-form/union.ts +1 -1
- package/src/schema-form/validate.ts +185 -104
- package/src/state-binding/AdapterMapping.tsx +0 -0
- package/src/state-binding/BindingJqField.tsx +3 -3
- package/src/state-binding/InputInjectionRow.tsx +4 -4
- package/src/state-binding/StateAttachRow.tsx +229 -154
- package/src/state-binding/StateBindingSection.tsx +1 -1
- package/src/state-binding/SubjectScopeFields.tsx +1 -1
- package/src/state-binding/UpdateRow.tsx +3 -3
- package/src/state-binding/adapter-mapping-row.tsx +232 -0
- package/src/state-binding/index.ts +43 -43
- package/src/state-binding/templated-text-catalog.ts +0 -1
- package/src/state-binding/types.ts +2 -2
- package/src/structured-output/StructuredOutput.tsx +1 -4
- package/dist/components/icons.d.ts +0 -160
- package/dist/components/icons.d.ts.map +0 -1
- package/dist/components/icons.js +0 -160
- package/dist/components/icons.js.map +0 -1
- package/src/components/icons.tsx +0 -586
|
@@ -9,12 +9,12 @@ import type { ReactNode } from 'react';
|
|
|
9
9
|
import { useContext, useId, useState } from 'react';
|
|
10
10
|
|
|
11
11
|
import { Badge } from '../components/badge';
|
|
12
|
+
import { Field, type FieldControlProps, useFieldControl } from '../components/field';
|
|
12
13
|
import { XCircleIcon } from '../components/icons';
|
|
13
|
-
import { Button } from '../components/primitives';
|
|
14
|
-
import { Field, useFieldControl, type FieldControlProps } from '../components/field';
|
|
15
14
|
import { TextInput } from '../components/inputs';
|
|
16
|
-
import
|
|
15
|
+
import { Button } from '../components/primitives';
|
|
17
16
|
import { MaxUploadBytesContext } from './context';
|
|
17
|
+
import type { MediaUpload } from './field-model';
|
|
18
18
|
import { decodedByteSize, effectiveMaxBytes, overCapMessage } from './media';
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -114,9 +114,7 @@ export function MediaField({
|
|
|
114
114
|
const defaultMax = useContext(MaxUploadBytesContext);
|
|
115
115
|
const maxBytes = effectiveMaxBytes(media.maxBytes, defaultMax);
|
|
116
116
|
const [uploadError, setUploadError] = useState<string | undefined>(undefined);
|
|
117
|
-
const [attached, setAttached] = useState<
|
|
118
|
-
{ name: string; previewUrl: string; value: string } | undefined
|
|
119
|
-
>(undefined);
|
|
117
|
+
const [attached, setAttached] = useState<AttachedMedia | undefined>(undefined);
|
|
120
118
|
|
|
121
119
|
const accept = (file: File | undefined): void => {
|
|
122
120
|
if (file === undefined) return;
|
|
@@ -139,19 +137,7 @@ export function MediaField({
|
|
|
139
137
|
onChange('');
|
|
140
138
|
};
|
|
141
139
|
|
|
142
|
-
|
|
143
|
-
// current field value; if the value is reset or replaced externally (an edit
|
|
144
|
-
// loads a different record, or the form resets after submit), fall back to a
|
|
145
|
-
// value-derived display so a stale filename/thumbnail can never linger.
|
|
146
|
-
const activeAttached = attached?.value === value ? attached : undefined;
|
|
147
|
-
// Prefer the just-read preview; on an edit with a pre-existing data-url value,
|
|
148
|
-
// reconstruct the preview from the value itself.
|
|
149
|
-
const previewUrl =
|
|
150
|
-
activeAttached?.previewUrl ??
|
|
151
|
-
(media.encoding === 'data-url' && value.startsWith('data:') ? value : undefined);
|
|
152
|
-
const isImage =
|
|
153
|
-
media.mediaType?.startsWith('image/') === true || previewUrl?.startsWith('data:image') === true;
|
|
154
|
-
const fileName = activeAttached?.name ?? (value !== '' ? 'Attached file' : undefined);
|
|
140
|
+
const { previewUrl, isImage, fileName } = mediaPreview(attached, value, media);
|
|
155
141
|
|
|
156
142
|
return (
|
|
157
143
|
<Field label={heading} description={description} error={error}>
|
|
@@ -161,29 +147,12 @@ export function MediaField({
|
|
|
161
147
|
onFile={accept}
|
|
162
148
|
/>
|
|
163
149
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
// A thumbnail is per-instance geometry: it is capped to a fixed
|
|
171
|
-
// height and can never exceed the width it is given.
|
|
172
|
-
style={{
|
|
173
|
-
maxWidth: '100%',
|
|
174
|
-
maxHeight: '6rem',
|
|
175
|
-
borderRadius: 'var(--tai-radius-md)',
|
|
176
|
-
border: '1px solid var(--tai-color-control-border)',
|
|
177
|
-
}}
|
|
178
|
-
/>
|
|
179
|
-
) : (
|
|
180
|
-
<Badge>{fileName}</Badge>
|
|
181
|
-
)}
|
|
182
|
-
<Button type="button" variant="secondary" onClick={clear}>
|
|
183
|
-
Remove
|
|
184
|
-
</Button>
|
|
185
|
-
</div>
|
|
186
|
-
) : null}
|
|
150
|
+
<AttachedPreview
|
|
151
|
+
fileName={fileName}
|
|
152
|
+
isImage={isImage}
|
|
153
|
+
previewUrl={previewUrl}
|
|
154
|
+
onClear={clear}
|
|
155
|
+
/>
|
|
187
156
|
|
|
188
157
|
{uploadError !== undefined ? (
|
|
189
158
|
<span id={uploadErrorId} role="alert" className="tai-field-error">
|
|
@@ -192,33 +161,133 @@ export function MediaField({
|
|
|
192
161
|
</span>
|
|
193
162
|
) : null}
|
|
194
163
|
|
|
195
|
-
<
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
164
|
+
<MediaPasteInput
|
|
165
|
+
pasteId={pasteId}
|
|
166
|
+
value={value}
|
|
167
|
+
maxBytes={maxBytes}
|
|
168
|
+
uploadErrorId={uploadError === undefined ? undefined : uploadErrorId}
|
|
169
|
+
onReject={setUploadError}
|
|
170
|
+
onAccept={(next) => {
|
|
171
|
+
setUploadError(undefined);
|
|
172
|
+
setAttached(undefined);
|
|
173
|
+
onChange(next);
|
|
174
|
+
}}
|
|
175
|
+
/>
|
|
176
|
+
</Field>
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** The just-picked file, retained only while it still matches the current field value. */
|
|
181
|
+
interface AttachedMedia {
|
|
182
|
+
name: string;
|
|
183
|
+
previewUrl: string;
|
|
184
|
+
value: string;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* The display derived from the attached file and the current value: the chip/preview
|
|
189
|
+
* applies ONLY while the attachment still matches the value (an external reset or a
|
|
190
|
+
* different record loading falls back to a value-derived display so a stale
|
|
191
|
+
* filename/thumbnail can never linger); an existing data-url value reconstructs its
|
|
192
|
+
* own preview.
|
|
193
|
+
*/
|
|
194
|
+
function mediaPreview(
|
|
195
|
+
attached: AttachedMedia | undefined,
|
|
196
|
+
value: string,
|
|
197
|
+
media: MediaUpload,
|
|
198
|
+
): { previewUrl: string | undefined; isImage: boolean; fileName: string | undefined } {
|
|
199
|
+
const activeAttached = attached?.value === value ? attached : undefined;
|
|
200
|
+
const previewUrl =
|
|
201
|
+
activeAttached?.previewUrl ??
|
|
202
|
+
(media.encoding === 'data-url' && value.startsWith('data:') ? value : undefined);
|
|
203
|
+
const isImage =
|
|
204
|
+
media.mediaType?.startsWith('image/') === true || previewUrl?.startsWith('data:image') === true;
|
|
205
|
+
const fileName = activeAttached?.name ?? (value !== '' ? 'Attached file' : undefined);
|
|
206
|
+
return { previewUrl, isImage, fileName };
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/** The attached-file chip: an image thumbnail when previewable, else a filename badge, plus Remove. */
|
|
210
|
+
function AttachedPreview({
|
|
211
|
+
fileName,
|
|
212
|
+
isImage,
|
|
213
|
+
previewUrl,
|
|
214
|
+
onClear,
|
|
215
|
+
}: {
|
|
216
|
+
fileName: string | undefined;
|
|
217
|
+
isImage: boolean;
|
|
218
|
+
previewUrl: string | undefined;
|
|
219
|
+
onClear: () => void;
|
|
220
|
+
}): ReactNode {
|
|
221
|
+
if (fileName === undefined) return null;
|
|
222
|
+
return (
|
|
223
|
+
<div className="tai-row">
|
|
224
|
+
{isImage && previewUrl !== undefined ? (
|
|
225
|
+
<img
|
|
226
|
+
src={previewUrl}
|
|
227
|
+
alt={fileName}
|
|
228
|
+
// A thumbnail is per-instance geometry: it is capped to a fixed height and
|
|
229
|
+
// can never exceed the width it is given.
|
|
230
|
+
style={{
|
|
231
|
+
maxWidth: '100%',
|
|
232
|
+
maxHeight: '6rem',
|
|
233
|
+
borderRadius: 'var(--tai-radius-md)',
|
|
234
|
+
border: '1px solid var(--tai-color-control-border)',
|
|
218
235
|
}}
|
|
219
236
|
/>
|
|
220
|
-
|
|
221
|
-
|
|
237
|
+
) : (
|
|
238
|
+
<Badge>{fileName}</Badge>
|
|
239
|
+
)}
|
|
240
|
+
<Button type="button" variant="secondary" onClick={onClear}>
|
|
241
|
+
Remove
|
|
242
|
+
</Button>
|
|
243
|
+
</div>
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* The paste fallback: a text input that enforces the SAME effective byte cap the
|
|
249
|
+
* picker does, measured on the pasted string's DECODED size. An over-cap paste is
|
|
250
|
+
* rejected LOUDLY (`onReject`) and the field keeps its prior value; an accepted paste
|
|
251
|
+
* clears any attachment and emits the new value (`onAccept`).
|
|
252
|
+
*/
|
|
253
|
+
function MediaPasteInput({
|
|
254
|
+
pasteId,
|
|
255
|
+
value,
|
|
256
|
+
maxBytes,
|
|
257
|
+
uploadErrorId,
|
|
258
|
+
onReject,
|
|
259
|
+
onAccept,
|
|
260
|
+
}: {
|
|
261
|
+
pasteId: string;
|
|
262
|
+
value: string;
|
|
263
|
+
maxBytes: number;
|
|
264
|
+
/** Set while an upload error stands, so the input points at it and reads invalid. */
|
|
265
|
+
uploadErrorId: string | undefined;
|
|
266
|
+
onReject: (message: string) => void;
|
|
267
|
+
onAccept: (value: string) => void;
|
|
268
|
+
}): ReactNode {
|
|
269
|
+
return (
|
|
270
|
+
<label htmlFor={pasteId} className="tai-field">
|
|
271
|
+
<span className="tai-field-hint">Or paste a value</span>
|
|
272
|
+
<TextInput
|
|
273
|
+
id={pasteId}
|
|
274
|
+
type="text"
|
|
275
|
+
// Only the upload error's id: `TextInput` joins it with the enclosing Field's
|
|
276
|
+
// own description and error IDREFs rather than replacing them.
|
|
277
|
+
aria-describedby={uploadErrorId}
|
|
278
|
+
aria-invalid={uploadErrorId === undefined ? undefined : true}
|
|
279
|
+
value={value}
|
|
280
|
+
onChange={(event) => {
|
|
281
|
+
const next = event.target.value;
|
|
282
|
+
const size = decodedByteSize(next);
|
|
283
|
+
if (size > maxBytes) {
|
|
284
|
+
onReject(overCapMessage('The pasted value', size, maxBytes));
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
onAccept(next);
|
|
288
|
+
}}
|
|
289
|
+
/>
|
|
290
|
+
</label>
|
|
222
291
|
);
|
|
223
292
|
}
|
|
224
293
|
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
* silently merged): the map cannot represent two entries under one key, so the
|
|
11
11
|
* later duplicate is withheld and flagged rather than overwriting the first.
|
|
12
12
|
*/
|
|
13
|
-
import { useContext, useRef, useState } from 'react';
|
|
14
13
|
import type { ReactNode } from 'react';
|
|
14
|
+
import { useContext, useRef, useState } from 'react';
|
|
15
15
|
|
|
16
|
-
import { CloseIcon } from '../components/icons';
|
|
17
16
|
import { Field } from '../components/field';
|
|
17
|
+
import { CloseIcon } from '../components/icons';
|
|
18
18
|
import { TextInput } from '../components/inputs';
|
|
19
19
|
import { Button } from '../components/primitives';
|
|
20
20
|
import { classifySchema } from './classify';
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect the annotations that opt a (ref-resolved) string schema out of the plain
|
|
3
|
+
* text box: the media-upload annotations (`contentEncoding`/`contentMediaType`/
|
|
4
|
+
* `format: "data-url"`) and the `x-tai42-expression` expression-editor annotation.
|
|
5
|
+
* Both degrade to `undefined` on anything malformed, so an annotated field never
|
|
6
|
+
* renders differently from the plain string it falls back to.
|
|
7
|
+
*/
|
|
8
|
+
import { isRecord } from '../guards';
|
|
9
|
+
import type { ExpressionAnnotation, ExpressionAnnotationKey, MediaUpload } from './field-model';
|
|
10
|
+
import type { JsonSchema } from './types';
|
|
11
|
+
|
|
12
|
+
const EXPRESSION_KEYWORD = 'x-tai42-expression';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Detect the media-upload annotations on a (ref-resolved) string schema. A field
|
|
16
|
+
* opts into the upload control when it carries `contentEncoding: "base64"` plus a
|
|
17
|
+
* `contentMediaType`, OR `format: "data-url"`. Anything else is a plain string.
|
|
18
|
+
*/
|
|
19
|
+
export function mediaUpload(schema: JsonSchema): MediaUpload | undefined {
|
|
20
|
+
const mediaType =
|
|
21
|
+
typeof schema.contentMediaType === 'string' ? schema.contentMediaType : undefined;
|
|
22
|
+
const maxBytes =
|
|
23
|
+
typeof schema.contentMaxBytes === 'number' && schema.contentMaxBytes > 0
|
|
24
|
+
? schema.contentMaxBytes
|
|
25
|
+
: undefined;
|
|
26
|
+
if (schema.format === 'data-url') {
|
|
27
|
+
return { encoding: 'data-url', mediaType, maxBytes };
|
|
28
|
+
}
|
|
29
|
+
if (schema.contentEncoding === 'base64' && mediaType !== undefined) {
|
|
30
|
+
return { encoding: 'base64', mediaType, maxBytes };
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** An optional string member: absent is fine, a non-string is a malformed annotation. */
|
|
36
|
+
type StringOrInvalid =
|
|
37
|
+
{ readonly ok: true; readonly value: string | undefined } | { readonly ok: false };
|
|
38
|
+
|
|
39
|
+
function optionalString(value: unknown): StringOrInvalid {
|
|
40
|
+
if (value === undefined) return { ok: true, value: undefined };
|
|
41
|
+
if (typeof value === 'string') return { ok: true, value };
|
|
42
|
+
return { ok: false };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Parse the optional `keys` array: absent → `undefined`, malformed → `null` (reject). */
|
|
46
|
+
function parseAnnotationKeys(
|
|
47
|
+
value: unknown,
|
|
48
|
+
): readonly ExpressionAnnotationKey[] | undefined | null {
|
|
49
|
+
if (value === undefined) return undefined;
|
|
50
|
+
if (!Array.isArray(value)) return null;
|
|
51
|
+
const keys: ExpressionAnnotationKey[] = [];
|
|
52
|
+
for (const entry of value as readonly unknown[]) {
|
|
53
|
+
if (!isRecord(entry) || typeof entry.name !== 'string' || typeof entry.gloss !== 'string') {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
keys.push({ name: entry.name, gloss: entry.gloss });
|
|
57
|
+
}
|
|
58
|
+
return keys;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Parse the optional `caveats` array: absent → `undefined`, malformed → `null` (reject). */
|
|
62
|
+
function parseCaveatList(value: unknown): readonly string[] | undefined | null {
|
|
63
|
+
if (value === undefined) return undefined;
|
|
64
|
+
if (!Array.isArray(value)) return null;
|
|
65
|
+
const caveats: string[] = [];
|
|
66
|
+
for (const entry of value as readonly unknown[]) {
|
|
67
|
+
if (typeof entry !== 'string') return null;
|
|
68
|
+
caveats.push(entry);
|
|
69
|
+
}
|
|
70
|
+
return caveats;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Detect the `x-tai42-expression` annotation on a (ref-resolved) string schema,
|
|
75
|
+
* mirroring {@link mediaUpload}: a well-formed annotation opts the field into the
|
|
76
|
+
* jq expression editor; anything else — absent, non-object, unknown language, or
|
|
77
|
+
* any wrongly-typed member — yields `undefined`, so the field renders EXACTLY as
|
|
78
|
+
* the plain string input it is today. Malformed payloads NEVER throw: a bad
|
|
79
|
+
* annotation is a server-side authoring bug, and degrading to the ordinary text
|
|
80
|
+
* box keeps the form usable while staying byte-identical to the unannotated
|
|
81
|
+
* rendering.
|
|
82
|
+
*/
|
|
83
|
+
export function expressionAnnotation(schema: JsonSchema): ExpressionAnnotation | undefined {
|
|
84
|
+
const raw: unknown = schema[EXPRESSION_KEYWORD];
|
|
85
|
+
if (!isRecord(raw)) return undefined;
|
|
86
|
+
// The language gate doubles as the forward-compatibility valve: a future
|
|
87
|
+
// language this client does not understand degrades to a plain string field.
|
|
88
|
+
if (raw.language !== 'jq') return undefined;
|
|
89
|
+
|
|
90
|
+
const label = optionalString(raw.label);
|
|
91
|
+
const blurb = optionalString(raw.blurb);
|
|
92
|
+
const returns = optionalString(raw.returns);
|
|
93
|
+
if (!label.ok || !blurb.ok || !returns.ok) return undefined;
|
|
94
|
+
|
|
95
|
+
const keys = parseAnnotationKeys(raw.keys);
|
|
96
|
+
if (keys === null) return undefined;
|
|
97
|
+
const caveats = parseCaveatList(raw.caveats);
|
|
98
|
+
if (caveats === null) return undefined;
|
|
99
|
+
|
|
100
|
+
// `sample` is any JSON — including `null` — so presence is tracked, not typed.
|
|
101
|
+
return {
|
|
102
|
+
language: 'jq',
|
|
103
|
+
label: label.value,
|
|
104
|
+
blurb: blurb.value,
|
|
105
|
+
keys,
|
|
106
|
+
returns: returns.value,
|
|
107
|
+
caveats,
|
|
108
|
+
hasSample: 'sample' in raw,
|
|
109
|
+
sample: raw.sample,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
@@ -24,11 +24,11 @@ import { Suspense, useCallback, useContext, useMemo, useState } from 'react';
|
|
|
24
24
|
import { CompletionInput } from '../components/completion-input';
|
|
25
25
|
import { Field } from '../components/field';
|
|
26
26
|
import { AlertTriangleIcon } from '../components/icons';
|
|
27
|
-
import {
|
|
27
|
+
import { Textarea, TextInput } from '../components/inputs';
|
|
28
28
|
import { errorMessage } from '../errors';
|
|
29
|
-
import type { ExpressionAnnotation, MediaUpload } from './classify';
|
|
30
29
|
import type { ExpressionFieldComponent, ExpressionInputShape } from './context';
|
|
31
30
|
import { CompletionProviderContext, ExpressionFieldContext } from './context';
|
|
31
|
+
import type { ExpressionAnnotation, MediaUpload } from './field-model';
|
|
32
32
|
import { MediaField } from './media-field';
|
|
33
33
|
import type { CompletionProvider } from './SchemaForm';
|
|
34
34
|
|
|
@@ -11,15 +11,16 @@ import type { ReactNode } from 'react';
|
|
|
11
11
|
|
|
12
12
|
import { Field } from '../components/field';
|
|
13
13
|
import { Select } from '../components/select';
|
|
14
|
-
import { classifySchema
|
|
14
|
+
import { classifySchema } from './classify';
|
|
15
15
|
import { skeletonValueForSchema } from './default-value';
|
|
16
16
|
import { FieldGroup } from './field-group';
|
|
17
|
+
import type { FieldModel, UnionVariant } from './field-model';
|
|
17
18
|
import { FieldNode } from './field-node';
|
|
18
19
|
import { ObjectFields } from './object-fields';
|
|
19
20
|
import { resolveRef } from './resolve';
|
|
20
21
|
import { groupClass } from './styles';
|
|
21
|
-
import { activeVariantIndex } from './union';
|
|
22
22
|
import type { JsonSchema, SchemaFormErrors } from './types';
|
|
23
|
+
import { activeVariantIndex } from './union';
|
|
23
24
|
|
|
24
25
|
function isPlainObject(value: unknown): value is Record<string, unknown> {
|
|
25
26
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
package/src/schema-form/union.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* when Pydantic emitted no discriminator). Returns `-1` when no variant is
|
|
6
6
|
* active (an unset/`null` value, or nothing matches).
|
|
7
7
|
*/
|
|
8
|
+
import type { UnionVariant } from './field-model';
|
|
8
9
|
import { resolveRef } from './resolve';
|
|
9
|
-
import type { UnionVariant } from './classify';
|
|
10
10
|
import type { JsonSchema } from './types';
|
|
11
11
|
|
|
12
12
|
function isPlainObject(value: unknown): value is Record<string, unknown> {
|