@gen3/workspaces 0.12.47 → 0.12.48

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.
Files changed (43) hide show
  1. package/dist/dts/components/CompactDictionaryPanel/CompactDictionaryPanel.d.ts.map +1 -1
  2. package/dist/dts/components/CompactDictionaryPanel/CompactDictionaryPanel.js +6 -2
  3. package/dist/dts/components/CompactDictionaryPanel/CompactDictionaryPanel.js.map +1 -1
  4. package/dist/dts/components/KernelLifecyclePanel/KernelSelector.js +2 -2
  5. package/dist/dts/components/KernelLifecyclePanel/KernelSelector.js.map +1 -1
  6. package/dist/dts/config.d.ts +0 -2
  7. package/dist/dts/config.d.ts.map +1 -1
  8. package/dist/dts/config.js +0 -34
  9. package/dist/dts/config.js.map +1 -1
  10. package/dist/dts/pages/WorkspacesCenter/data.d.ts.map +1 -1
  11. package/dist/dts/pages/WorkspacesCenter/data.js +42 -3
  12. package/dist/dts/pages/WorkspacesCenter/data.js.map +1 -1
  13. package/dist/dts/server/workspaceAssetsHandler.d.ts.map +1 -1
  14. package/dist/dts/server/workspaceAssetsHandler.js +0 -1
  15. package/dist/dts/server/workspaceAssetsHandler.js.map +1 -1
  16. package/dist/dts/workspace/WorkspaceCenter.js +2 -2
  17. package/dist/dts/workspace/WorkspaceCenter.js.map +1 -1
  18. package/dist/dts/workspace/WorkspaceLayout/SettingsPanel.d.ts +1 -1
  19. package/dist/dts/workspace/WorkspaceLayout/SettingsPanel.d.ts.map +1 -1
  20. package/dist/dts/workspace/WorkspaceLayout/SettingsPanel.js +2 -2
  21. package/dist/dts/workspace/WorkspaceLayout/SettingsPanel.js.map +1 -1
  22. package/dist/dts/workspace/WorkspaceLayout/ToolsPanel.d.ts +2 -1
  23. package/dist/dts/workspace/WorkspaceLayout/ToolsPanel.d.ts.map +1 -1
  24. package/dist/dts/workspace/WorkspaceLayout/ToolsPanel.js +2 -2
  25. package/dist/dts/workspace/WorkspaceLayout/ToolsPanel.js.map +1 -1
  26. package/dist/dts/workspace/WorkspaceLayout/WorkspaceLayout.d.ts +3 -1
  27. package/dist/dts/workspace/WorkspaceLayout/WorkspaceLayout.d.ts.map +1 -1
  28. package/dist/dts/workspace/WorkspaceLayout/WorkspaceLayout.js +2 -3
  29. package/dist/dts/workspace/WorkspaceLayout/WorkspaceLayout.js.map +1 -1
  30. package/dist/dts/workspace/tiers/types.d.ts +4 -2
  31. package/dist/dts/workspace/tiers/types.d.ts.map +1 -1
  32. package/dist/dts/workspace/types.d.ts +1 -0
  33. package/dist/dts/workspace/types.d.ts.map +1 -1
  34. package/dist/index/cjs/index.js +100 -68
  35. package/dist/index/cjs/index.js.map +1 -1
  36. package/dist/index/esm/index.js +101 -69
  37. package/dist/index/esm/index.js.map +1 -1
  38. package/dist/index.d.ts +4 -2
  39. package/dist/server/cjs/server.js +0 -1
  40. package/dist/server/cjs/server.js.map +1 -1
  41. package/dist/server/esm/server.js +0 -1
  42. package/dist/server/esm/server.js.map +1 -1
  43. package/package.json +4 -4
@@ -12,6 +12,7 @@ var hooks = require('@mantine/hooks');
12
12
  var io5 = require('react-icons/io5');
13
13
  var bs = require('react-icons/bs');
14
14
  var md = require('react-icons/md');
15
+ var lodash = require('lodash');
15
16
 
16
17
  const WorkspaceTierCard = ({ label, description, tier, features = [], tooltip = 'Launch workspace', buttonLabel = 'Launch', onSelectTier, baseColor })=>{
17
18
  const handleClick = React.useCallback(()=>onSelectTier(tier), [
@@ -1850,7 +1851,7 @@ const KernelSelector = ({ handleLaunchKernel, isLaunchingLoading, onKernelSelect
1850
1851
  id: "klp-kernel-spec",
1851
1852
  value: selectedKernelName,
1852
1853
  onChange: (value)=>setSelectedKernelName(value),
1853
- disabled: disabled,
1854
+ disabled: disabled || isError,
1854
1855
  data: kernelSpecs?.length === 0 ? [
1855
1856
  {
1856
1857
  value: 'python3',
@@ -1891,7 +1892,7 @@ const KernelSelector = ({ handleLaunchKernel, isLaunchingLoading, onKernelSelect
1891
1892
  onClick: ()=>handleLaunchKernel(selectedKernelName || 'python3'),
1892
1893
  loading: isLaunchingLoading,
1893
1894
  fullWidth: true,
1894
- disabled: disabled,
1895
+ disabled: disabled || isError,
1895
1896
  children: isLaunchingLoading ? 'Working...' : 'Launch Kernel'
1896
1897
  })
1897
1898
  ]
@@ -2202,7 +2203,7 @@ function HorizontalAccordion({ label, expanded, setExpanded, children, expandedW
2202
2203
  });
2203
2204
  }
2204
2205
 
2205
- const SettingsPanel = ({ showKernels, expanded, setExpanded })=>{
2206
+ const SettingsPanel = ({ showKernels, expanded, setExpanded, width = 380 })=>{
2206
2207
  const currentTier = core$1.useCoreSelector(core$1.selectWorkspaceTier);
2207
2208
  const coreDispatch = core$1.useCoreDispatch();
2208
2209
  const onUpgradeToRemote = React.useCallback(()=>{
@@ -2215,7 +2216,7 @@ const SettingsPanel = ({ showKernels, expanded, setExpanded })=>{
2215
2216
  expanded: expanded,
2216
2217
  setExpanded: setExpanded,
2217
2218
  rightSide: true,
2218
- expandedWidth: 380,
2219
+ expandedWidth: width,
2219
2220
  children: /*#__PURE__*/ jsxRuntime.jsxs(core.Stack, {
2220
2221
  gap: "sm",
2221
2222
  className: PanelStyle,
@@ -2364,41 +2365,6 @@ const WorkspaceToolbar = ({ toolbarConfiguration })=>{
2364
2365
  });
2365
2366
  };
2366
2367
 
2367
- const WORKSPACE_TIER_INFORMATION = {
2368
- free: {
2369
- tier: 'free',
2370
- toolbar: {
2371
- label: 'JupyterLite',
2372
- description: 'Running via JupyterLite',
2373
- showStop: false,
2374
- showStatus: false
2375
- },
2376
- settings: {
2377
- showKernels: false
2378
- },
2379
- dataAndTools: {
2380
- enabled: true,
2381
- tabs: []
2382
- }
2383
- },
2384
- remote: {
2385
- tier: 'remote',
2386
- toolbar: {
2387
- label: 'Remote Compute Environment',
2388
- description: 'Running with Remote Kernels',
2389
- showStop: true,
2390
- showStatus: true
2391
- },
2392
- settings: {
2393
- showKernels: true
2394
- },
2395
- dataAndTools: {
2396
- enabled: true,
2397
- tabs: []
2398
- }
2399
- }
2400
- };
2401
-
2402
2368
  // Streaming LLM client — OpenAI, Anthropic, Gemini, Ollama
2403
2369
  // All requests go directly from the browser to provider APIs (no backend proxy).
2404
2370
  const DEFAULT_OLLAMA_URL = 'http://localhost:11434';
@@ -3553,6 +3519,9 @@ const FieldLinkCountBadge = ({ fieldsCount, linksCount })=>{
3553
3519
  };
3554
3520
 
3555
3521
  const CompactDictionaryPanel = ({ schemaUrl = '_dictionary/_all' })=>{
3522
+ const { ref, width } = hooks.useElementSize();
3523
+ const isNarrow = width > 0 && width < 280;
3524
+ const isCompact = width > 0 && width < 360;
3556
3525
  const [nodes, setNodes] = React.useState([]);
3557
3526
  const [search, setSearch] = React.useState('');
3558
3527
  const [expandedId, setExpandedId] = React.useState(null);
@@ -3585,7 +3554,8 @@ const CompactDictionaryPanel = ({ schemaUrl = '_dictionary/_all' })=>{
3585
3554
  });
3586
3555
  }
3587
3556
  return /*#__PURE__*/ jsxRuntime.jsxs("div", {
3588
- className: "relative flex flex-col gap-2 bg-base-lightest p-2 ",
3557
+ ref: ref,
3558
+ className: "relative flex h-full flex-col gap-2 overflow-hidden bg-base-lightest p-2",
3589
3559
  children: [
3590
3560
  /*#__PURE__*/ jsxRuntime.jsx(core.LoadingOverlay, {
3591
3561
  visible: isFetching
@@ -3605,7 +3575,7 @@ const CompactDictionaryPanel = ({ schemaUrl = '_dictionary/_all' })=>{
3605
3575
  ]
3606
3576
  }),
3607
3577
  /*#__PURE__*/ jsxRuntime.jsx("div", {
3608
- className: "flex flex-col gap-0.5",
3578
+ className: "flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto",
3609
3579
  children: filtered.map((node)=>{
3610
3580
  const isExpanded = expandedId === node.id;
3611
3581
  const propCount = Object.keys(node.properties).length;
@@ -3616,27 +3586,45 @@ const CompactDictionaryPanel = ({ schemaUrl = '_dictionary/_all' })=>{
3616
3586
  /*#__PURE__*/ jsxRuntime.jsxs("button", {
3617
3587
  type: "button",
3618
3588
  onClick: ()=>setExpandedId(isExpanded ? null : node.id),
3619
- className: "flex w-full items-center gap-2 px-2.5 py-2 text-left hover:bg-base-lightest hover:bg-opacity-50",
3589
+ className: "flex w-full flex-col px-2.5 py-2 text-left hover:bg-base-lightest hover:bg-opacity-50",
3620
3590
  "aria-label": `Expand description for ${node.title}`,
3621
3591
  "aria-expanded": isExpanded,
3622
3592
  children: [
3623
- isExpanded ? /*#__PURE__*/ jsxRuntime.jsx(md.MdKeyboardArrowDown, {}) : /*#__PURE__*/ jsxRuntime.jsx(md.MdKeyboardArrowRight, {}),
3624
3593
  /*#__PURE__*/ jsxRuntime.jsxs("div", {
3625
- className: "min-w-0 flex-1",
3594
+ className: "flex w-full items-center gap-2",
3626
3595
  children: [
3627
- /*#__PURE__*/ jsxRuntime.jsx("div", {
3628
- className: "truncate text-xs font-semibold text-base-darkest",
3629
- children: node.title
3596
+ isExpanded ? /*#__PURE__*/ jsxRuntime.jsx(md.MdKeyboardArrowDown, {}) : /*#__PURE__*/ jsxRuntime.jsx(md.MdKeyboardArrowRight, {}),
3597
+ /*#__PURE__*/ jsxRuntime.jsxs("div", {
3598
+ className: "min-w-0 flex-1",
3599
+ children: [
3600
+ /*#__PURE__*/ jsxRuntime.jsx("div", {
3601
+ className: "truncate text-xs font-semibold text-base-darkest",
3602
+ children: node.title
3603
+ }),
3604
+ !isNarrow && node.category && /*#__PURE__*/ jsxRuntime.jsx("div", {
3605
+ className: "truncate text-sm text-base-darker",
3606
+ children: node.category
3607
+ })
3608
+ ]
3630
3609
  }),
3631
- node.category && /*#__PURE__*/ jsxRuntime.jsx("div", {
3632
- className: "truncate text-sm text-base-darker",
3633
- children: node.category
3610
+ !isNarrow && /*#__PURE__*/ jsxRuntime.jsx(FieldLinkCountBadge, {
3611
+ fieldsCount: propCount,
3612
+ linksCount: linkCount
3634
3613
  })
3635
3614
  ]
3636
3615
  }),
3637
- /*#__PURE__*/ jsxRuntime.jsx(FieldLinkCountBadge, {
3638
- fieldsCount: propCount,
3639
- linksCount: linkCount
3616
+ isNarrow && /*#__PURE__*/ jsxRuntime.jsxs("div", {
3617
+ className: "flex w-full items-center justify-between pl-5 pt-0.5",
3618
+ children: [
3619
+ node.category && /*#__PURE__*/ jsxRuntime.jsx("span", {
3620
+ className: "truncate text-xs text-base-darker",
3621
+ children: node.category
3622
+ }),
3623
+ /*#__PURE__*/ jsxRuntime.jsx(FieldLinkCountBadge, {
3624
+ fieldsCount: propCount,
3625
+ linksCount: linkCount
3626
+ })
3627
+ ]
3640
3628
  })
3641
3629
  ]
3642
3630
  }),
@@ -3658,7 +3646,7 @@ const CompactDictionaryPanel = ({ schemaUrl = '_dictionary/_all' })=>{
3658
3646
  /*#__PURE__*/ jsxRuntime.jsx(core.Table.Th, {
3659
3647
  children: "Type"
3660
3648
  }),
3661
- /*#__PURE__*/ jsxRuntime.jsx(core.Table.Th, {})
3649
+ !isCompact && /*#__PURE__*/ jsxRuntime.jsx(core.Table.Th, {})
3662
3650
  ]
3663
3651
  })
3664
3652
  }),
@@ -3679,8 +3667,9 @@ const CompactDictionaryPanel = ({ schemaUrl = '_dictionary/_all' })=>{
3679
3667
  children: info.type
3680
3668
  })
3681
3669
  }),
3682
- /*#__PURE__*/ jsxRuntime.jsx(core.Table.Td, {
3670
+ !isCompact && /*#__PURE__*/ jsxRuntime.jsx(core.Table.Td, {
3683
3671
  children: info.enum && /*#__PURE__*/ jsxRuntime.jsx(core.Scroller, {
3672
+ draggable: true,
3684
3673
  children: /*#__PURE__*/ jsxRuntime.jsx(core.Group, {
3685
3674
  gap: "xs",
3686
3675
  wrap: "nowrap",
@@ -3692,6 +3681,7 @@ const CompactDictionaryPanel = ({ schemaUrl = '_dictionary/_all' })=>{
3692
3681
  label: value,
3693
3682
  className: "font-bold text-secondary-contrast",
3694
3683
  color: "accent-light",
3684
+ noTruncate: true,
3695
3685
  children: value
3696
3686
  })
3697
3687
  }, value))
@@ -3807,17 +3797,17 @@ const DataToolsPanel = ({ schemaUrl = DEFAULT_DICTIONARY_SCHEMA_URL, kbUrl })=>{
3807
3797
  });
3808
3798
  };
3809
3799
 
3810
- const ToolsPanel = ({ expanded = true, setExpanded = ()=>{} })=>{
3800
+ const ToolsPanel = ({ expanded = true, setExpanded = ()=>{}, width = 310 })=>{
3811
3801
  return /*#__PURE__*/ jsxRuntime.jsx(HorizontalAccordion, {
3812
3802
  label: "Data & Tools",
3813
3803
  expanded: expanded,
3814
3804
  setExpanded: setExpanded,
3815
- expandedWidth: 310,
3805
+ expandedWidth: width,
3816
3806
  children: /*#__PURE__*/ jsxRuntime.jsx(DataToolsPanel, {})
3817
3807
  });
3818
3808
  };
3819
3809
 
3820
- const WorkspaceLayout = ({ children })=>{
3810
+ const WorkspaceLayout = ({ children, tierConfiguration })=>{
3821
3811
  const workspaceTier = core$1.useCoreSelector((state)=>core$1.selectWorkspaceTier(state));
3822
3812
  const [toolsExpanded, { set: setToolsExpanded }] = hooks.useDisclosure(true);
3823
3813
  const [settingsExpanded, { set: setSettingsExpanded }] = hooks.useDisclosure(true);
@@ -3827,20 +3817,22 @@ const WorkspaceLayout = ({ children })=>{
3827
3817
  className: "flex flex-col w-full grow",
3828
3818
  children: [
3829
3819
  /*#__PURE__*/ jsxRuntime.jsx(WorkspaceToolbar, {
3830
- toolbarConfiguration: WORKSPACE_TIER_INFORMATION[workspaceTier].toolbar
3820
+ toolbarConfiguration: tierConfiguration.toolbar
3831
3821
  }),
3832
3822
  /*#__PURE__*/ jsxRuntime.jsxs("div", {
3833
3823
  className: "flex w-full grow",
3834
3824
  children: [
3835
- WORKSPACE_TIER_INFORMATION[workspaceTier].dataAndTools.enabled && /*#__PURE__*/ jsxRuntime.jsx(ToolsPanel, {
3825
+ tierConfiguration.dataAndTools.enabled && /*#__PURE__*/ jsxRuntime.jsx(ToolsPanel, {
3836
3826
  expanded: toolsExpanded && !isFullScreen,
3837
- setExpanded: setToolsExpanded
3827
+ setExpanded: setToolsExpanded,
3828
+ width: tierConfiguration.dataAndTools.width
3838
3829
  }),
3839
3830
  children,
3840
3831
  /*#__PURE__*/ jsxRuntime.jsx(SettingsPanel, {
3841
- showKernels: WORKSPACE_TIER_INFORMATION[workspaceTier].settings.showKernels,
3832
+ showKernels: tierConfiguration.settings.showKernels,
3842
3833
  expanded: settingsExpanded && !isFullScreen,
3843
- setExpanded: setSettingsExpanded
3834
+ setExpanded: setSettingsExpanded,
3835
+ width: tierConfiguration.settings.width
3844
3836
  })
3845
3837
  ]
3846
3838
  })
@@ -3894,6 +3886,7 @@ const WorkspaceCenter = ({ workspaces, landingPage, tierConfiguration })=>{
3894
3886
  }
3895
3887
  if (workspaceTier === 'free') {
3896
3888
  return /*#__PURE__*/ jsxRuntime.jsx(WorkspaceLayout, {
3889
+ tierConfiguration: tierConfiguration.free,
3897
3890
  children: /*#__PURE__*/ jsxRuntime.jsx(FreeWorkspace, {})
3898
3891
  });
3899
3892
  }
@@ -3902,6 +3895,7 @@ const WorkspaceCenter = ({ workspaces, landingPage, tierConfiguration })=>{
3902
3895
  children: /*#__PURE__*/ jsxRuntime.jsx(MicroContainerReduxProvider, {
3903
3896
  enabled: true,
3904
3897
  children: /*#__PURE__*/ jsxRuntime.jsx(WorkspaceLayout, {
3898
+ tierConfiguration: tierConfiguration.remote,
3905
3899
  children: /*#__PURE__*/ jsxRuntime.jsx(RemoteComputeWorkspace, {
3906
3900
  tenantId: authContext?.tenantId || 'default',
3907
3901
  workspaceId: authContext?.workspaceId || 'workspace-default',
@@ -3945,22 +3939,60 @@ const DEFAULT_WORKSPACES_CONFIGURATION = {
3945
3939
  workspaces: {},
3946
3940
  tierConfiguration: {
3947
3941
  free: {
3948
- baseUrl: process.env.FREE_WORKSPACE_ASSETS_BASE_URL ?? '/api/workspace-assets/free'
3942
+ baseUrl: process.env.FREE_WORKSPACE_ASSETS_BASE_URL ?? '/api/workspace-assets/free',
3943
+ toolbar: {
3944
+ label: 'JupyterLite',
3945
+ description: 'Running via JupyterLite',
3946
+ showStop: false,
3947
+ showStatus: false
3948
+ },
3949
+ settings: {
3950
+ showKernels: false
3951
+ },
3952
+ dataAndTools: {
3953
+ enabled: true,
3954
+ tabs: [
3955
+ {
3956
+ label: 'Dictionary',
3957
+ description: 'Data Dictionary',
3958
+ app: 'dictionary'
3959
+ }
3960
+ ],
3961
+ width: 300
3962
+ }
3949
3963
  },
3950
3964
  remote: {
3951
- baseUrl: process.env.REMOTE_COMPUTE_WORKSPACE_ASSETS_BASE_URL ?? '/api/workspace-assets/remote'
3965
+ baseUrl: process.env.REMOTE_COMPUTE_WORKSPACE_ASSETS_BASE_URL ?? '/api/workspace-assets/remote',
3966
+ toolbar: {
3967
+ label: 'Remote Compute Environment',
3968
+ description: 'Running with Remote Kernels',
3969
+ showStop: true,
3970
+ showStatus: true
3971
+ },
3972
+ settings: {
3973
+ showKernels: true
3974
+ },
3975
+ dataAndTools: {
3976
+ enabled: true,
3977
+ tabs: [
3978
+ {
3979
+ label: 'Dictionary',
3980
+ description: 'Data Dictionary',
3981
+ app: 'dictionary'
3982
+ }
3983
+ ]
3984
+ }
3952
3985
  }
3953
3986
  }
3954
3987
  };
3955
3988
  const WorkspacesCenterPageGetServerSideProps = async ()=>{
3956
3989
  try {
3957
3990
  const workspacesCenterConfiguration = await frontend.ContentSource.getContentDatabase().get(`${core$1.GEN3_COMMONS_NAME}/workspaces.json`);
3991
+ const mergedConfiguration = lodash.merge({}, DEFAULT_WORKSPACES_CONFIGURATION, workspacesCenterConfiguration);
3958
3992
  return {
3959
3993
  props: {
3960
3994
  ...await frontend.getNavPageLayoutPropsFromConfig(),
3961
- configuration: {
3962
- ...workspacesCenterConfiguration
3963
- }
3995
+ configuration: mergedConfiguration
3964
3996
  }
3965
3997
  };
3966
3998
  } catch (error) {