@datalayer/agent-runtimes 1.3.73 → 1.3.75

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 (72) hide show
  1. package/lib/chat/ChatFloating.d.ts +25 -2
  2. package/lib/chat/ChatFloating.js +80 -12
  3. package/lib/chat/assistant/AssistantContextMenu.d.ts +67 -0
  4. package/lib/chat/assistant/AssistantContextMenu.js +68 -0
  5. package/lib/chat/assistant/AssistantStage.d.ts +123 -5
  6. package/lib/chat/assistant/AssistantStage.js +245 -7
  7. package/lib/chat/assistant/BalloonParts.d.ts +15 -1
  8. package/lib/chat/assistant/BalloonParts.js +26 -9
  9. package/lib/chat/assistant/BalloonVisual.d.ts +65 -0
  10. package/lib/chat/assistant/BalloonVisual.js +58 -0
  11. package/lib/chat/assistant/SpeechBalloon.d.ts +68 -2
  12. package/lib/chat/assistant/SpeechBalloon.js +113 -7
  13. package/lib/chat/assistant/state.d.ts +19 -0
  14. package/lib/chat/assistant/state.js +44 -17
  15. package/lib/chat/base/ChatBase.js +51 -1
  16. package/lib/chat/indicators/TypingDots.d.ts +13 -0
  17. package/lib/chat/indicators/TypingDots.js +21 -0
  18. package/lib/chat/messages/ChatMessageList.js +1 -15
  19. package/lib/components/inspector/AgentInspector.d.ts +59 -0
  20. package/lib/components/inspector/AgentInspector.js +220 -0
  21. package/lib/components/inspector/AgentInspectorDialog.d.ts +19 -0
  22. package/lib/components/inspector/AgentInspectorDialog.js +9 -0
  23. package/lib/components/inspector/JsonTree.d.ts +24 -0
  24. package/lib/components/inspector/JsonTree.js +89 -0
  25. package/lib/components/inspector/a2aInspect.d.ts +56 -0
  26. package/lib/components/inspector/a2aInspect.js +478 -0
  27. package/lib/components/inspector/agentInspector.d.ts +179 -0
  28. package/lib/components/inspector/agentInspector.js +267 -0
  29. package/lib/components/inspector/chatInspect.d.ts +38 -0
  30. package/lib/components/inspector/chatInspect.js +65 -0
  31. package/lib/components/inspector/classify.d.ts +19 -0
  32. package/lib/components/inspector/classify.js +42 -0
  33. package/lib/components/inspector/index.d.ts +14 -0
  34. package/lib/components/inspector/index.js +18 -0
  35. package/lib/components/teams/A2ATeamGraph.d.ts +54 -3
  36. package/lib/components/teams/A2ATeamGraph.js +37 -11
  37. package/lib/components/teams/NotebookPreview.d.ts +11 -2
  38. package/lib/components/teams/NotebookPreview.js +6 -3
  39. package/lib/components/teams/NotebookPreviewView.js +9 -1
  40. package/lib/components/teams/TeamNotebook.d.ts +10 -1
  41. package/lib/components/teams/TeamNotebook.js +15 -3
  42. package/lib/components/teams/jupyterThemeVariables.d.ts +9 -0
  43. package/lib/components/teams/jupyterThemeVariables.js +441 -0
  44. package/lib/components/teams/teamConnections.d.ts +9 -1
  45. package/lib/components/teams/teamConnections.js +20 -0
  46. package/lib/components/teams/useA2ATeam.d.ts +17 -4
  47. package/lib/components/teams/useA2ATeam.js +87 -23
  48. package/lib/examples/AgentA2ATeamExample.d.ts +16 -2
  49. package/lib/examples/AgentA2ATeamExample.js +65 -13
  50. package/lib/examples/{ChatAssistantExample.d.ts → AssistantExample.d.ts} +2 -2
  51. package/lib/examples/{ChatAssistantExample.js → AssistantExample.js} +69 -7
  52. package/lib/examples/{ChatAssistantGalleryExample.d.ts → AssistantGalleryExample.d.ts} +2 -2
  53. package/lib/examples/{ChatAssistantGalleryExample.js → AssistantGalleryExample.js} +45 -13
  54. package/lib/examples/example-selector.js +4 -2
  55. package/lib/examples/exampleGroups.d.ts +9 -0
  56. package/lib/examples/exampleGroups.js +56 -0
  57. package/lib/examples/index.d.ts +1 -1
  58. package/lib/examples/index.js +1 -1
  59. package/lib/examples/main.js +3 -43
  60. package/lib/examples/utils/AssistantGalleryGrid.d.ts +6 -1
  61. package/lib/examples/utils/AssistantGalleryGrid.js +16 -3
  62. package/lib/examples/utils/assistantGallery.d.ts +51 -2
  63. package/lib/examples/utils/assistantGallery.js +32 -7
  64. package/lib/loop/apps/AppRenderer.js +1 -1
  65. package/lib/loop/core/index.d.ts +17 -0
  66. package/lib/loop/core/index.js +1 -0
  67. package/lib/loop/plugins/assistant/index.d.ts +1 -1
  68. package/lib/loop/plugins/assistant/index.js +8 -3
  69. package/lib/runtimes/browser/a2aPeer.d.ts +4 -1
  70. package/lib/types/chat.d.ts +7 -0
  71. package/package.json +1 -1
  72. package/scripts/codegen/generate_jupyter_theme_variables.mjs +57 -0
@@ -27,11 +27,20 @@ export type NotebookPreviewProps = {
27
27
  title: string;
28
28
  /** How tall it is, in pixels; it scrolls within. */
29
29
  maxHeight?: number;
30
- /** Takes the reader to the notebook that runs; the line under it says so. */
30
+ /**
31
+ * Takes the reader to the notebook that runs; the line under it says so.
32
+ * Unsaid, in a balloon that carries the notebook as its large visual, a
33
+ * click expands it (`BalloonVisual`).
34
+ */
31
35
  onOpen?: () => void;
36
+ /**
37
+ * The line under it, which opens it: `Open it below to run it`. Shown
38
+ * when `onOpen` or this is given — in a balloon, its *Expand* says it.
39
+ */
40
+ openLabel?: string;
32
41
  };
33
42
  /** A notebook, read-only and small, with the way to the one that runs. */
34
- export declare function NotebookPreview({ notebook, title, maxHeight, onOpen, }: NotebookPreviewProps): JSX.Element | null;
43
+ export declare function NotebookPreview({ notebook, title, maxHeight, onOpen: onOpenGiven, openLabel, }: NotebookPreviewProps): JSX.Element | null;
35
44
  /** Where the notebook that runs is: `TeamNotebook` marks its section. */
36
45
  export declare const TEAM_NOTEBOOK_SELECTOR = "[data-team-notebook]";
37
46
  /** Takes the reader to the notebook that runs: scrolled to, and focused. */
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Suspense, lazy } from 'react';
3
3
  import { Text } from '@primer/react';
4
4
  import { Box } from '@datalayer/primer-addons';
5
+ import { useBalloonExpand } from '../../chat/assistant/BalloonVisual';
5
6
  /** jupyter-react's notebook, read-only, with no kernel: loaded when a notebook is drawn. */
6
7
  const NotebookPreviewView = lazy(() => import('./NotebookPreviewView'));
7
8
  /** The document a notebook artifact carries, or none when it is not one. */
@@ -24,7 +25,9 @@ export function notebookDocument(data) {
24
25
  return undefined;
25
26
  }
26
27
  /** A notebook, read-only and small, with the way to the one that runs. */
27
- export function NotebookPreview({ notebook, title, maxHeight = 220, onOpen, }) {
28
+ export function NotebookPreview({ notebook, title, maxHeight = 220, onOpen: onOpenGiven, openLabel, }) {
29
+ const expand = useBalloonExpand();
30
+ const onOpen = onOpenGiven ?? expand ?? undefined;
28
31
  const doc = notebookDocument(notebook);
29
32
  if (!doc) {
30
33
  return null;
@@ -38,7 +41,7 @@ export function NotebookPreview({ notebook, title, maxHeight = 220, onOpen, }) {
38
41
  borderRadius: 2,
39
42
  bg: 'canvas.default',
40
43
  cursor: onOpen ? 'pointer' : 'default',
41
- }, children: _jsx(Suspense, { fallback: _jsx(Text, { as: "p", sx: { color: 'fg.muted', fontSize: 0, m: 2 }, children: "Opening the notebook\u2026" }), children: _jsx(NotebookPreviewView, { nbformat: doc, height: maxHeight }) }) }), onOpen ? (_jsx(Text, { as: "button", type: "button", onClick: onOpen, "data-notebook-preview-open": "", sx: {
44
+ }, children: _jsx(Suspense, { fallback: _jsx(Text, { as: "p", sx: { color: 'fg.muted', fontSize: 0, m: 2 }, children: "Opening the notebook\u2026" }), children: _jsx(NotebookPreviewView, { nbformat: doc, height: maxHeight }) }) }), onOpen && (onOpenGiven || openLabel) ? (_jsx(Text, { as: "button", type: "button", onClick: onOpen, "data-notebook-preview-open": "", sx: {
42
45
  alignSelf: 'flex-start',
43
46
  p: 0,
44
47
  border: 0,
@@ -47,7 +50,7 @@ export function NotebookPreview({ notebook, title, maxHeight = 220, onOpen, }) {
47
50
  fontSize: 0,
48
51
  cursor: 'pointer',
49
52
  '&:hover': { textDecoration: 'underline' },
50
- }, children: "Open it below to run it" })) : null] }));
53
+ }, children: openLabel ?? 'Open it to run it' })) : null] }));
51
54
  }
52
55
  /** Where the notebook that runs is: `TeamNotebook` marks its section. */
53
56
  export const TEAM_NOTEBOOK_SELECTOR = '[data-team-notebook]';
@@ -3,6 +3,7 @@ import { useMemo } from 'react';
3
3
  import { useTheme } from '@primer/react';
4
4
  import { Box } from '@datalayer/primer-addons';
5
5
  import { JupyterReactTheme, Notebook, ServiceManagerLess, } from '@datalayer/jupyter-react';
6
+ import { JUPYTER_DARK_VARIABLES, JUPYTER_LIGHT_VARIABLES, } from './jupyterThemeVariables';
6
7
  /** Each preview has its own id in jupyter-react's store. */
7
8
  let drawn = 0;
8
9
  export function NotebookPreviewView({ nbformat, height, }) {
@@ -16,7 +17,14 @@ export function NotebookPreviewView({ nbformat, height, }) {
16
17
  }, [nbformat]);
17
18
  const content = useMemo(() => JSON.parse(JSON.stringify(nbformat)), [nbformat]);
18
19
  const { colorScheme } = useTheme();
19
- return (_jsxs(Box, { "data-notebook-preview-theme": "", sx: { height }, children: [_jsx("span", { "data-jupyter-react-theme-root": "notebook-preview", hidden: true }), _jsx(JupyterReactTheme, { colormode: colorScheme?.startsWith('dark') ? 'dark' : 'light', children: _jsx(Box, { "data-notebook-preview-view": id, sx: {
20
+ const mode = colorScheme?.startsWith('dark') ? 'dark' : 'light';
21
+ return (_jsxs(Box, { "data-notebook-preview-theme": mode, sx: { height },
22
+ // JupyterLab writes its theme for the whole page, so two previews in
23
+ // two modes would share the last one written: each carries its own
24
+ // mode's variables on its own subtree.
25
+ style: (mode === 'dark'
26
+ ? JUPYTER_DARK_VARIABLES
27
+ : JUPYTER_LIGHT_VARIABLES), children: [_jsx("span", { "data-jupyter-react-theme-root": "notebook-preview", hidden: true }), _jsx(JupyterReactTheme, { colormode: mode, children: _jsx(Box, { "data-notebook-preview-view": id, sx: {
20
28
  height,
21
29
  // No toolbar: no room kept for one.
22
30
  '& .datalayer-NotebookPanel-header': {
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import type { JSX } from 'react';
19
19
  import type { A2APeerArtifact } from '../../runtimes/browser/a2aPeer';
20
+ import type { BalloonVisual } from '../../chat/assistant/BalloonVisual';
20
21
  export type TeamNotebookProps = {
21
22
  /** The notebook, as the peer gave it: its `data` is the nbformat document. */
22
23
  notebook: A2APeerArtifact;
@@ -24,9 +25,17 @@ export type TeamNotebookProps = {
24
25
  title: string;
25
26
  /** How tall the notebook is, in pixels. */
26
27
  height?: number;
28
+ /** Leave the heading out: the dialog it is drawn in shows the title. */
29
+ hideTitle?: boolean;
27
30
  };
28
31
  /** The file a notebook is saved as: the peer's name for it, else its name. */
29
32
  export declare function notebookFileName(notebook: A2APeerArtifact): string;
30
33
  /** A notebook a member of the team gave, under its title, to run in the page. */
31
- export declare function TeamNotebook({ notebook, title, height, }: TeamNotebookProps): JSX.Element;
34
+ export declare function TeamNotebook({ notebook, title, height, hideTitle, }: TeamNotebookProps): JSX.Element;
35
+ /**
36
+ * A notebook as a balloon's large visual: read-only in the balloon, and,
37
+ * expanded, this notebook — editable, run on the browser sandbox, loaded
38
+ * only then.
39
+ */
40
+ export declare function notebookBalloonVisual(notebook: A2APeerArtifact, title: string, height?: number): BalloonVisual;
32
41
  export default TeamNotebook;
@@ -16,9 +16,9 @@ export function notebookFileName(notebook) {
16
16
  return `${stem}.ipynb`;
17
17
  }
18
18
  /** A notebook a member of the team gave, under its title, to run in the page. */
19
- export function TeamNotebook({ notebook, title, height = 560, }) {
19
+ export function TeamNotebook({ notebook, title, height = 560, hideTitle = false, }) {
20
20
  return (_jsxs(Box, { as: "section", "aria-label": title, "data-team-notebook": "",
21
- // Focused when the notebook in a balloon is clicked (`focusTeamNotebook`).
21
+ // Focused when the notebook in a balloon is clicked (`focusExpanded`).
22
22
  tabIndex: -1, sx: {
23
23
  display: 'flex',
24
24
  flexDirection: 'column',
@@ -32,6 +32,18 @@ export function TeamNotebook({ notebook, title, height = 560, }) {
32
32
  outlineOffset: 4,
33
33
  borderRadius: 2,
34
34
  },
35
- }, children: [_jsx(Heading, { as: "h3", sx: { fontSize: 2, m: 0 }, children: title }), _jsx(Suspense, { fallback: _jsx(Text, { as: "p", sx: { color: 'fg.muted', fontSize: 1, m: 0 }, children: "Opening the notebook\u2026" }), children: _jsx(TeamNotebookView, { notebook: notebook, fileName: notebookFileName(notebook), height: height }) })] }));
35
+ }, children: [!hideTitle && (_jsx(Heading, { as: "h3", sx: { fontSize: 2, m: 0 }, children: title })), _jsx(Suspense, { fallback: _jsx(Text, { as: "p", sx: { color: 'fg.muted', fontSize: 1, m: 0 }, children: "Opening the notebook\u2026" }), children: _jsx(TeamNotebookView, { notebook: notebook, fileName: notebookFileName(notebook), height: height }) })] }));
36
+ }
37
+ /**
38
+ * A notebook as a balloon's large visual: read-only in the balloon, and,
39
+ * expanded, this notebook — editable, run on the browser sandbox, loaded
40
+ * only then.
41
+ */
42
+ export function notebookBalloonVisual(notebook, title, height) {
43
+ return {
44
+ id: `notebook:${notebook.filename ?? notebook.name}`,
45
+ title,
46
+ render: place => (_jsx(TeamNotebook, { notebook: notebook, title: title, height: height, hideTitle: place === 'overlay' })),
47
+ };
36
48
  }
37
49
  export default TeamNotebook;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * JupyterLab's theme variables, light and dark, as its theme extensions state
3
+ * them. Generated by scripts/codegen/generate_jupyter_theme_variables.mjs: do
4
+ * not edit.
5
+ *
6
+ * @module components/teams/jupyterThemeVariables
7
+ */
8
+ export declare const JUPYTER_LIGHT_VARIABLES: Readonly<Record<string, string>>;
9
+ export declare const JUPYTER_DARK_VARIABLES: Readonly<Record<string, string>>;
@@ -0,0 +1,441 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * JupyterLab's theme variables, light and dark, as its theme extensions state
7
+ * them. Generated by scripts/codegen/generate_jupyter_theme_variables.mjs: do
8
+ * not edit.
9
+ *
10
+ * @module components/teams/jupyterThemeVariables
11
+ */
12
+ export const JUPYTER_LIGHT_VARIABLES = {
13
+ '--jp-shadow-base-lightness': '0',
14
+ '--jp-shadow-umbra-color': 'rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.2 )',
15
+ '--jp-shadow-penumbra-color': 'rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.14 )',
16
+ '--jp-shadow-ambient-color': 'rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.12 )',
17
+ '--jp-elevation-z0': 'none',
18
+ '--jp-elevation-z1': '0 2px 1px -1px var(--jp-shadow-umbra-color), 0 1px 1px 0 var(--jp-shadow-penumbra-color), 0 1px 3px 0 var(--jp-shadow-ambient-color)',
19
+ '--jp-elevation-z2': '0 3px 1px -2px var(--jp-shadow-umbra-color), 0 2px 2px 0 var(--jp-shadow-penumbra-color), 0 1px 5px 0 var(--jp-shadow-ambient-color)',
20
+ '--jp-elevation-z4': '0 2px 4px -1px var(--jp-shadow-umbra-color), 0 4px 5px 0 var(--jp-shadow-penumbra-color), 0 1px 10px 0 var(--jp-shadow-ambient-color)',
21
+ '--jp-elevation-z6': '0 3px 5px -1px var(--jp-shadow-umbra-color), 0 6px 10px 0 var(--jp-shadow-penumbra-color), 0 1px 18px 0 var(--jp-shadow-ambient-color)',
22
+ '--jp-elevation-z8': '0 5px 5px -3px var(--jp-shadow-umbra-color), 0 8px 10px 1px var(--jp-shadow-penumbra-color), 0 3px 14px 2px var(--jp-shadow-ambient-color)',
23
+ '--jp-elevation-z12': '0 7px 8px -4px var(--jp-shadow-umbra-color), 0 12px 17px 2px var(--jp-shadow-penumbra-color), 0 5px 22px 4px var(--jp-shadow-ambient-color)',
24
+ '--jp-elevation-z16': '0 8px 10px -5px var(--jp-shadow-umbra-color), 0 16px 24px 2px var(--jp-shadow-penumbra-color), 0 6px 30px 5px var(--jp-shadow-ambient-color)',
25
+ '--jp-elevation-z20': '0 10px 13px -6px var(--jp-shadow-umbra-color), 0 20px 31px 3px var(--jp-shadow-penumbra-color), 0 8px 38px 7px var(--jp-shadow-ambient-color)',
26
+ '--jp-elevation-z24': '0 11px 15px -7px var(--jp-shadow-umbra-color), 0 24px 38px 3px var(--jp-shadow-penumbra-color), 0 9px 46px 8px var(--jp-shadow-ambient-color)',
27
+ '--jp-border-width': '1px',
28
+ '--jp-border-color0': 'var(--md-grey-400, #bdbdbd)',
29
+ '--jp-border-color1': 'var(--md-grey-400, #bdbdbd)',
30
+ '--jp-border-color2': 'var(--md-grey-300, #e0e0e0)',
31
+ '--jp-border-color3': 'var(--md-grey-200, #eee)',
32
+ '--jp-inverse-border-color': 'var(--md-grey-600, #757575)',
33
+ '--jp-border-radius': '2px',
34
+ '--jp-shortcuts-button-background': 'var(--jp-brand-color3)',
35
+ '--jp-shortcuts-button-hover-background': 'var(--jp-brand-color2)',
36
+ '--jp-ui-font-scale-factor': '1.2',
37
+ '--jp-ui-font-size0': '0.83333em',
38
+ '--jp-ui-font-size1': '13px',
39
+ '--jp-ui-font-size2': '1.2em',
40
+ '--jp-ui-font-size3': '1.44em',
41
+ '--jp-ui-font-family': "system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'",
42
+ '--jp-ui-font-color0': 'rgba(0, 0, 0, 1)',
43
+ '--jp-ui-font-color1': 'rgba(0, 0, 0, 0.87)',
44
+ '--jp-ui-font-color2': 'rgba(0, 0, 0, 0.54)',
45
+ '--jp-ui-font-color3': 'rgba(0, 0, 0, 0.38)',
46
+ '--jp-ui-inverse-font-color0': 'rgba(255, 255, 255, 1)',
47
+ '--jp-ui-inverse-font-color1': 'rgba(255, 255, 255, 1)',
48
+ '--jp-ui-inverse-font-color2': 'rgba(255, 255, 255, 0.7)',
49
+ '--jp-ui-inverse-font-color3': 'rgba(255, 255, 255, 0.5)',
50
+ '--jp-content-line-height': '1.6',
51
+ '--jp-content-font-scale-factor': '1.2',
52
+ '--jp-content-font-size0': '0.83333em',
53
+ '--jp-content-font-size1': '14px',
54
+ '--jp-content-font-size2': '1.2em',
55
+ '--jp-content-font-size3': '1.44em',
56
+ '--jp-content-font-size4': '1.728em',
57
+ '--jp-content-font-size5': '2.0736em',
58
+ '--jp-content-presentation-font-size1': '17px',
59
+ '--jp-content-heading-line-height': '1',
60
+ '--jp-content-heading-margin-top': '1.2em',
61
+ '--jp-content-heading-margin-bottom': '0.8em',
62
+ '--jp-content-heading-font-weight': '500',
63
+ '--jp-content-font-color0': 'rgba(0, 0, 0, 1)',
64
+ '--jp-content-font-color1': 'rgba(0, 0, 0, 0.87)',
65
+ '--jp-content-font-color2': 'rgba(0, 0, 0, 0.54)',
66
+ '--jp-content-font-color3': 'rgba(0, 0, 0, 0.38)',
67
+ '--jp-content-link-color': 'var(--md-blue-900, #0d47a1)',
68
+ '--jp-content-link-visited-color': 'var(--md-purple-700, #7b1fa2)',
69
+ '--jp-content-font-family': "system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'",
70
+ '--jp-datagrid-font-size': '12px',
71
+ '--jp-datagrid-font-family': 'var(--jp-content-font-family)',
72
+ '--jp-code-font-size': '13px',
73
+ '--jp-code-line-height': '1.3077',
74
+ '--jp-code-padding': '5px',
75
+ '--jp-code-font-family-default': "menlo, consolas, 'DejaVu Sans Mono', monospace",
76
+ '--jp-code-font-family': 'var(--jp-code-font-family-default)',
77
+ '--jp-code-presentation-font-size': '16px',
78
+ '--jp-code-cursor-width0': '1.4px',
79
+ '--jp-code-cursor-width1': '2px',
80
+ '--jp-code-cursor-width2': '4px',
81
+ '--jp-layout-color0': 'white',
82
+ '--jp-layout-color1': 'white',
83
+ '--jp-layout-color2': 'var(--md-grey-200, #eee)',
84
+ '--jp-layout-color3': 'var(--md-grey-400, #bdbdbd)',
85
+ '--jp-layout-color4': 'var(--md-grey-600, #757575)',
86
+ '--jp-inverse-layout-color0': '#111',
87
+ '--jp-inverse-layout-color1': 'var(--md-grey-900, #212121)',
88
+ '--jp-inverse-layout-color2': 'var(--md-grey-800, #424242)',
89
+ '--jp-inverse-layout-color3': 'var(--md-grey-700, #616161)',
90
+ '--jp-inverse-layout-color4': 'var(--md-grey-600, #757575)',
91
+ '--jp-brand-color0': 'var(--md-blue-900, #0d47a1)',
92
+ '--jp-brand-color1': 'var(--md-blue-700, #1976d2)',
93
+ '--jp-brand-color2': 'var(--md-blue-300, #64b5f6)',
94
+ '--jp-brand-color3': 'var(--md-blue-100, #bbdefb)',
95
+ '--jp-brand-color4': 'var(--md-blue-50, #e3f2fd)',
96
+ '--jp-accent-color0': 'var(--md-green-900, #1b5e20)',
97
+ '--jp-accent-color1': 'var(--md-green-700, #388e3c)',
98
+ '--jp-accent-color2': 'var(--md-green-300, #81c784)',
99
+ '--jp-accent-color3': 'var(--md-green-100, #c8e6c9)',
100
+ '--jp-warn-color0': 'var(--md-orange-900, #e65100)',
101
+ '--jp-warn-color1': 'var(--md-orange-700, #f57c00)',
102
+ '--jp-warn-color2': 'var(--md-orange-300, #ffb74d)',
103
+ '--jp-warn-color3': 'var(--md-orange-100, #ffe0b2)',
104
+ '--jp-error-color0': 'var(--md-red-900, #b71c1c)',
105
+ '--jp-error-color1': 'var(--md-red-700, #d32f2f)',
106
+ '--jp-error-color2': 'var(--md-red-300, #e57373)',
107
+ '--jp-error-color3': 'var(--md-red-100, #ffcdd2)',
108
+ '--jp-success-color0': 'var(--md-green-900, #1b5e20)',
109
+ '--jp-success-color1': 'var(--md-green-700, #388e3c)',
110
+ '--jp-success-color2': 'var(--md-green-300, #81c784)',
111
+ '--jp-success-color3': 'var(--md-green-100, #c8e6c9)',
112
+ '--jp-info-color0': 'var(--md-cyan-900, #006064)',
113
+ '--jp-info-color1': 'var(--md-cyan-700, #0097a7)',
114
+ '--jp-info-color2': 'var(--md-cyan-300, #4dd0e1)',
115
+ '--jp-info-color3': 'var(--md-cyan-100, #b2ebf2)',
116
+ '--jp-cell-padding': '5px',
117
+ '--jp-cell-collapser-width': '8px',
118
+ '--jp-cell-collapser-min-height': '20px',
119
+ '--jp-cell-collapser-not-active-hover-opacity': '0.6',
120
+ '--jp-cell-editor-background': 'var(--md-grey-100, #f5f5f5)',
121
+ '--jp-cell-editor-border-color': 'var(--md-grey-300, #e0e0e0)',
122
+ '--jp-cell-editor-box-shadow': 'inset 0 0 2px var(--md-blue-300, #64b5f6)',
123
+ '--jp-cell-editor-active-background': 'var(--jp-layout-color0)',
124
+ '--jp-cell-editor-active-border-color': 'var(--jp-brand-color1)',
125
+ '--jp-cell-prompt-width': '64px',
126
+ '--jp-cell-prompt-font-family': 'var(--jp-code-font-family-default)',
127
+ '--jp-cell-prompt-letter-spacing': '0',
128
+ '--jp-cell-prompt-opacity': '1',
129
+ '--jp-cell-prompt-not-active-opacity': '0.5',
130
+ '--jp-cell-prompt-not-active-font-color': 'var(--md-grey-700, #616161)',
131
+ '--jp-cell-inprompt-font-color': '#307fc1',
132
+ '--jp-cell-outprompt-font-color': '#bf5b3d',
133
+ '--jp-notebook-padding': '10px',
134
+ '--jp-notebook-select-background': 'var(--jp-layout-color1)',
135
+ '--jp-notebook-multiselected-color': 'var(--md-blue-50, #e3f2fd)',
136
+ '--jp-notebook-scroll-padding': 'calc( 100% - var(--jp-code-font-size) * var(--jp-code-line-height) - var(--jp-code-padding) - var(--jp-cell-padding) - 1px )',
137
+ '--jp-editor-scroll-padding': 'calc( 100% - var(--jp-code-font-size) * var(--jp-code-line-height) - var(--jp-code-padding) - 1px )',
138
+ '--jp-rendermime-error-background': '#fdd',
139
+ '--jp-rendermime-table-row-background': 'var(--md-grey-100, #cfd8dc)',
140
+ '--jp-rendermime-table-row-hover-background': 'var(--md-light-blue-50, #e1f5fe)',
141
+ '--jp-dialog-background': 'rgba(0, 0, 0, 0.25)',
142
+ '--jp-console-padding': '10px',
143
+ '--jp-toolbar-border-color': 'var(--jp-border-color1)',
144
+ '--jp-toolbar-micro-height': '8px',
145
+ '--jp-toolbar-background': 'var(--jp-layout-color1)',
146
+ '--jp-toolbar-box-shadow': '0 0 2px 0 rgba(0, 0, 0, 0.24)',
147
+ '--jp-toolbar-header-margin': '4px 4px 0 4px',
148
+ '--jp-toolbar-active-background': 'var(--md-grey-300, #90a4ae)',
149
+ '--jp-statusbar-height': '24px',
150
+ '--jp-input-box-shadow': 'inset 0 0 2px var(--md-blue-300, #64b5f6)',
151
+ '--jp-input-active-background': 'var(--jp-layout-color1)',
152
+ '--jp-input-hover-background': 'var(--jp-layout-color1)',
153
+ '--jp-input-background': 'var(--md-grey-100, #f5f5f5)',
154
+ '--jp-input-border-color': 'var(--jp-inverse-border-color)',
155
+ '--jp-input-active-border-color': 'var(--jp-brand-color1)',
156
+ '--jp-input-active-box-shadow-color': 'rgba(19, 124, 189, 0.3)',
157
+ '--jp-editor-selected-background': '#d9d9d9',
158
+ '--jp-editor-selected-focused-background': '#d7d4f0',
159
+ '--jp-editor-cursor-color': 'var(--jp-ui-font-color0)',
160
+ '--jp-mirror-editor-keyword-color': '#008000',
161
+ '--jp-mirror-editor-atom-color': '#88f',
162
+ '--jp-mirror-editor-number-color': '#080',
163
+ '--jp-mirror-editor-def-color': '#00f',
164
+ '--jp-mirror-editor-variable-color': 'var(--md-grey-900, #212121)',
165
+ '--jp-mirror-editor-variable-2-color': 'rgb(0, 54, 109)',
166
+ '--jp-mirror-editor-variable-3-color': '#085',
167
+ '--jp-mirror-editor-punctuation-color': '#05a',
168
+ '--jp-mirror-editor-property-color': '#05a',
169
+ '--jp-mirror-editor-operator-color': '#7800c2',
170
+ '--jp-mirror-editor-comment-color': '#408080',
171
+ '--jp-mirror-editor-string-color': '#ba2121',
172
+ '--jp-mirror-editor-string-2-color': '#708',
173
+ '--jp-mirror-editor-meta-color': '#a2f',
174
+ '--jp-mirror-editor-qualifier-color': '#555',
175
+ '--jp-mirror-editor-builtin-color': '#008000',
176
+ '--jp-mirror-editor-bracket-color': '#997',
177
+ '--jp-mirror-editor-tag-color': '#170',
178
+ '--jp-mirror-editor-attribute-color': '#00c',
179
+ '--jp-mirror-editor-header-color': 'blue',
180
+ '--jp-mirror-editor-quote-color': '#090',
181
+ '--jp-mirror-editor-link-color': '#00c',
182
+ '--jp-mirror-editor-error-color': '#f00',
183
+ '--jp-mirror-editor-hr-color': '#999',
184
+ '--jp-collaborator-color1': '#ffad8e',
185
+ '--jp-collaborator-color2': '#dac83d',
186
+ '--jp-collaborator-color3': '#72dd76',
187
+ '--jp-collaborator-color4': '#00e4d0',
188
+ '--jp-collaborator-color5': '#45d4ff',
189
+ '--jp-collaborator-color6': '#e2b1ff',
190
+ '--jp-collaborator-color7': '#ff9de6',
191
+ '--jp-vega-background': 'white',
192
+ '--jp-sidebar-min-width': '250px',
193
+ '--jp-search-selected-match-background-color': 'rgb(245, 200, 0)',
194
+ '--jp-search-selected-match-color': 'black',
195
+ '--jp-search-unselected-match-background-color': 'var( --jp-inverse-layout-color0 )',
196
+ '--jp-search-unselected-match-color': 'var(--jp-ui-inverse-font-color0)',
197
+ '--jp-icon-contrast-color0': 'var(--md-purple-600, #8e24aa)',
198
+ '--jp-icon-contrast-color1': 'var(--md-green-600, #43a047)',
199
+ '--jp-icon-contrast-color2': 'var(--md-pink-600, #d81b60)',
200
+ '--jp-icon-contrast-color3': 'var(--md-blue-600, #1e88e5)',
201
+ '--jp-accept-color-normal': 'var(--md-blue-700, #1976d2)',
202
+ '--jp-accept-color-hover': 'var(--md-blue-800, #1565c0)',
203
+ '--jp-accept-color-active': 'var(--md-blue-900, #0d47a1)',
204
+ '--jp-warn-color-normal': 'var(--md-red-700, #d32f2f)',
205
+ '--jp-warn-color-hover': 'var(--md-red-800, #c62828)',
206
+ '--jp-warn-color-active': 'var(--md-red-900, #b71c1c)',
207
+ '--jp-reject-color-normal': 'var(--md-grey-600, #757575)',
208
+ '--jp-reject-color-hover': 'var(--md-grey-700, #616161)',
209
+ '--jp-reject-color-active': 'var(--md-grey-800, #424242)',
210
+ '--jp-jupyter-icon-color': '#f37626',
211
+ '--jp-notebook-icon-color': '#f37626',
212
+ '--jp-json-icon-color': 'var(--md-orange-700, #f57c00)',
213
+ '--jp-console-icon-background-color': 'var(--md-blue-700, #1976d2)',
214
+ '--jp-console-icon-color': 'white',
215
+ '--jp-terminal-icon-background-color': 'var(--md-grey-800, #424242)',
216
+ '--jp-terminal-icon-color': 'var(--md-grey-200, #eee)',
217
+ '--jp-text-editor-icon-color': 'var(--md-grey-700, #616161)',
218
+ '--jp-inspector-icon-color': 'var(--md-grey-700, #616161)',
219
+ '--jp-switch-color': 'var(--md-grey-400, #bdbdbd)',
220
+ '--jp-switch-true-position-color': 'var(--md-orange-900, #e65100)',
221
+ '--jp-focus-outline-color': 'var(--jp-brand-color1)',
222
+ '--jp-focus-outline-width': '2px',
223
+ };
224
+ export const JUPYTER_DARK_VARIABLES = {
225
+ '--jp-shadow-base-lightness': '32',
226
+ '--jp-shadow-umbra-color': 'rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.2 )',
227
+ '--jp-shadow-penumbra-color': 'rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.14 )',
228
+ '--jp-shadow-ambient-color': 'rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.12 )',
229
+ '--jp-elevation-z0': 'none',
230
+ '--jp-elevation-z1': '0 2px 1px -1px var(--jp-shadow-umbra-color), 0 1px 1px 0 var(--jp-shadow-penumbra-color), 0 1px 3px 0 var(--jp-shadow-ambient-color)',
231
+ '--jp-elevation-z2': '0 3px 1px -2px var(--jp-shadow-umbra-color), 0 2px 2px 0 var(--jp-shadow-penumbra-color), 0 1px 5px 0 var(--jp-shadow-ambient-color)',
232
+ '--jp-elevation-z4': '0 2px 4px -1px var(--jp-shadow-umbra-color), 0 4px 5px 0 var(--jp-shadow-penumbra-color), 0 1px 10px 0 var(--jp-shadow-ambient-color)',
233
+ '--jp-elevation-z6': '0 3px 5px -1px var(--jp-shadow-umbra-color), 0 6px 10px 0 var(--jp-shadow-penumbra-color), 0 1px 18px 0 var(--jp-shadow-ambient-color)',
234
+ '--jp-elevation-z8': '0 5px 5px -3px var(--jp-shadow-umbra-color), 0 8px 10px 1px var(--jp-shadow-penumbra-color), 0 3px 14px 2px var(--jp-shadow-ambient-color)',
235
+ '--jp-elevation-z12': '0 7px 8px -4px var(--jp-shadow-umbra-color), 0 12px 17px 2px var(--jp-shadow-penumbra-color), 0 5px 22px 4px var(--jp-shadow-ambient-color)',
236
+ '--jp-elevation-z16': '0 8px 10px -5px var(--jp-shadow-umbra-color), 0 16px 24px 2px var(--jp-shadow-penumbra-color), 0 6px 30px 5px var(--jp-shadow-ambient-color)',
237
+ '--jp-elevation-z20': '0 10px 13px -6px var(--jp-shadow-umbra-color), 0 20px 31px 3px var(--jp-shadow-penumbra-color), 0 8px 38px 7px var(--jp-shadow-ambient-color)',
238
+ '--jp-elevation-z24': '0 11px 15px -7px var(--jp-shadow-umbra-color), 0 24px 38px 3px var(--jp-shadow-penumbra-color), 0 9px 46px 8px var(--jp-shadow-ambient-color)',
239
+ '--jp-shortcuts-button-background': 'var(--jp-brand-color2)',
240
+ '--jp-shortcuts-button-hover-background': 'var(--jp-brand-color1)',
241
+ '--jp-border-width': '1px',
242
+ '--jp-border-color0': 'var(--md-grey-700, #616161)',
243
+ '--jp-border-color1': 'var(--md-grey-700, #616161)',
244
+ '--jp-border-color2': 'var(--md-grey-800, #424242)',
245
+ '--jp-border-color3': 'var(--md-grey-900, #212121)',
246
+ '--jp-inverse-border-color': 'var(--md-grey-600, #757575)',
247
+ '--jp-border-radius': '2px',
248
+ '--jp-ui-font-scale-factor': '1.2',
249
+ '--jp-ui-font-size0': '0.83333em',
250
+ '--jp-ui-font-size1': '13px',
251
+ '--jp-ui-font-size2': '1.2em',
252
+ '--jp-ui-font-size3': '1.44em',
253
+ '--jp-ui-font-family': "system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'",
254
+ '--jp-ui-font-color0': 'rgba(255, 255, 255, 1)',
255
+ '--jp-ui-font-color1': 'rgba(255, 255, 255, 0.87)',
256
+ '--jp-ui-font-color2': 'rgba(255, 255, 255, 0.54)',
257
+ '--jp-ui-font-color3': 'rgba(255, 255, 255, 0.38)',
258
+ '--jp-ui-inverse-font-color0': 'rgba(0, 0, 0, 1)',
259
+ '--jp-ui-inverse-font-color1': 'rgba(0, 0, 0, 0.8)',
260
+ '--jp-ui-inverse-font-color2': 'rgba(0, 0, 0, 0.5)',
261
+ '--jp-ui-inverse-font-color3': 'rgba(0, 0, 0, 0.3)',
262
+ '--jp-content-line-height': '1.6',
263
+ '--jp-content-font-scale-factor': '1.2',
264
+ '--jp-content-font-size0': '0.83333em',
265
+ '--jp-content-font-size1': '14px',
266
+ '--jp-content-font-size2': '1.2em',
267
+ '--jp-content-font-size3': '1.44em',
268
+ '--jp-content-font-size4': '1.728em',
269
+ '--jp-content-font-size5': '2.0736em',
270
+ '--jp-content-presentation-font-size1': '17px',
271
+ '--jp-content-heading-line-height': '1',
272
+ '--jp-content-heading-margin-top': '1.2em',
273
+ '--jp-content-heading-margin-bottom': '0.8em',
274
+ '--jp-content-heading-font-weight': '500',
275
+ '--jp-content-font-color0': 'rgba(255, 255, 255, 1)',
276
+ '--jp-content-font-color1': 'rgba(255, 255, 255, 1)',
277
+ '--jp-content-font-color2': 'rgba(255, 255, 255, 0.7)',
278
+ '--jp-content-font-color3': 'rgba(255, 255, 255, 0.5)',
279
+ '--jp-content-link-color': 'var(--md-blue-300, #64b5f6)',
280
+ '--jp-content-link-visited-color': 'var(--md-purple-300, #ba68c8)',
281
+ '--jp-content-link-hover-color': 'var(--md-blue-400, #42a5f5)',
282
+ '--jp-content-font-family': "system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'",
283
+ '--jp-datagrid-font-size': '12px',
284
+ '--jp-datagrid-font-family': 'var(--jp-content-font-family)',
285
+ '--jp-code-font-size': '13px',
286
+ '--jp-code-line-height': '1.3077',
287
+ '--jp-code-padding': '5px',
288
+ '--jp-code-font-family-default': "menlo, consolas, 'DejaVu Sans Mono', monospace",
289
+ '--jp-code-font-family': 'var(--jp-code-font-family-default)',
290
+ '--jp-code-presentation-font-size': '16px',
291
+ '--jp-code-cursor-width0': '1.4px',
292
+ '--jp-code-cursor-width1': '2px',
293
+ '--jp-code-cursor-width2': '4px',
294
+ '--jp-layout-color0': '#111',
295
+ '--jp-layout-color1': 'var(--md-grey-900, #212121)',
296
+ '--jp-layout-color2': 'var(--md-grey-800, #424242)',
297
+ '--jp-layout-color3': 'var(--md-grey-700, #616161)',
298
+ '--jp-layout-color4': 'var(--md-grey-600, #757575)',
299
+ '--jp-inverse-layout-color0': 'white',
300
+ '--jp-inverse-layout-color1': 'white',
301
+ '--jp-inverse-layout-color2': 'var(--md-grey-200, #eee)',
302
+ '--jp-inverse-layout-color3': 'var(--md-grey-400, #bdbdbd)',
303
+ '--jp-inverse-layout-color4': 'var(--md-grey-600, #757575)',
304
+ '--jp-brand-color0': 'var(--md-blue-700, #1976d2)',
305
+ '--jp-brand-color1': 'var(--md-blue-500, #2196f3)',
306
+ '--jp-brand-color2': 'var(--md-blue-300, #64b5f6)',
307
+ '--jp-brand-color3': 'var(--md-blue-100, #bbdefb)',
308
+ '--jp-brand-color4': 'var(--md-blue-50, #e3f2fd)',
309
+ '--jp-accent-color0': 'var(--md-green-700, #388e3c)',
310
+ '--jp-accent-color1': 'var(--md-green-500, #4caf50)',
311
+ '--jp-accent-color2': 'var(--md-green-300, #81c784)',
312
+ '--jp-accent-color3': 'var(--md-green-100, #c8e6c9)',
313
+ '--jp-warn-color0': 'var(--md-orange-700, #f57c00)',
314
+ '--jp-warn-color1': 'var(--md-orange-500, #ff9800)',
315
+ '--jp-warn-color2': 'var(--md-orange-300, #ffb74d)',
316
+ '--jp-warn-color3': 'var(--md-orange-100, #ffe0b2)',
317
+ '--jp-error-color0': 'var(--md-red-700, #d32f2f)',
318
+ '--jp-error-color1': 'var(--md-red-500, #f44336)',
319
+ '--jp-error-color2': 'var(--md-red-300, #e57373)',
320
+ '--jp-error-color3': 'var(--md-red-100, #ffcdd2)',
321
+ '--jp-success-color0': 'var(--md-green-700, #388e3c)',
322
+ '--jp-success-color1': 'var(--md-green-500, #4caf50)',
323
+ '--jp-success-color2': 'var(--md-green-300, #81c784)',
324
+ '--jp-success-color3': 'var(--md-green-100, #c8e6c9)',
325
+ '--jp-info-color0': 'var(--md-cyan-700, #0097a7)',
326
+ '--jp-info-color1': 'var(--md-cyan-500, #00bcd4)',
327
+ '--jp-info-color2': 'var(--md-cyan-300, #4dd0e1)',
328
+ '--jp-info-color3': 'var(--md-cyan-100, #b2ebf2)',
329
+ '--jp-cell-padding': '5px',
330
+ '--jp-cell-collapser-width': '8px',
331
+ '--jp-cell-collapser-min-height': '20px',
332
+ '--jp-cell-collapser-not-active-hover-opacity': '0.6',
333
+ '--jp-cell-editor-background': 'var(--jp-layout-color1)',
334
+ '--jp-cell-editor-border-color': 'var(--md-grey-700, #616161)',
335
+ '--jp-cell-editor-box-shadow': 'inset 0 0 2px var(--md-blue-300, #64b5f6)',
336
+ '--jp-cell-editor-active-background': 'var(--jp-layout-color0)',
337
+ '--jp-cell-editor-active-border-color': 'var(--jp-brand-color1)',
338
+ '--jp-cell-prompt-width': '64px',
339
+ '--jp-cell-prompt-font-family': 'var(--jp-code-font-family-default)',
340
+ '--jp-cell-prompt-letter-spacing': '0',
341
+ '--jp-cell-prompt-opacity': '1',
342
+ '--jp-cell-prompt-not-active-opacity': '1',
343
+ '--jp-cell-prompt-not-active-font-color': 'var(--md-grey-300, #e0e0e0)',
344
+ '--jp-cell-inprompt-font-color': '#307fc1',
345
+ '--jp-cell-outprompt-font-color': '#bf5b3d',
346
+ '--jp-notebook-padding': '10px',
347
+ '--jp-notebook-select-background': 'var(--jp-layout-color1)',
348
+ '--jp-notebook-multiselected-color': 'rgba(33, 150, 243, 0.24)',
349
+ '--jp-notebook-scroll-padding': 'calc( 100% - var(--jp-code-font-size) * var(--jp-code-line-height) - var(--jp-code-padding) - var(--jp-cell-padding) - 1px )',
350
+ '--jp-editor-scroll-padding': 'calc( 100% - var(--jp-code-font-size) * var(--jp-code-line-height) - var(--jp-code-padding) - 1px )',
351
+ '--jp-rendermime-error-background': 'rgba(244, 67, 54, 0.28)',
352
+ '--jp-rendermime-table-row-background': 'var(--md-grey-900, #212121)',
353
+ '--jp-rendermime-table-row-hover-background': 'rgba(3, 169, 244, 0.2)',
354
+ '--jp-dialog-background': 'rgba(0, 0, 0, 0.6)',
355
+ '--jp-console-padding': '10px',
356
+ '--jp-toolbar-border-color': 'var(--jp-border-color2)',
357
+ '--jp-toolbar-micro-height': '8px',
358
+ '--jp-toolbar-background': 'var(--jp-layout-color1)',
359
+ '--jp-toolbar-box-shadow': '0 0 2px 0 rgba(0, 0, 0, 0.8)',
360
+ '--jp-toolbar-header-margin': '4px 4px 0 4px',
361
+ '--jp-toolbar-active-background': 'var(--jp-layout-color0)',
362
+ '--jp-statusbar-height': '24px',
363
+ '--jp-input-box-shadow': 'inset 0 0 2px var(--md-blue-300, #64b5f6)',
364
+ '--jp-input-active-background': 'var(--jp-layout-color0)',
365
+ '--jp-input-hover-background': 'var(--jp-layout-color2)',
366
+ '--jp-input-background': 'var(--md-grey-800, #424242)',
367
+ '--jp-input-border-color': 'var(--jp-inverse-border-color)',
368
+ '--jp-input-active-border-color': 'var(--jp-brand-color1)',
369
+ '--jp-input-active-box-shadow-color': 'rgba(19, 124, 189, 0.3)',
370
+ '--jp-editor-selected-background': 'var(--jp-layout-color2)',
371
+ '--jp-editor-selected-focused-background': 'rgba(33, 150, 243, 0.24)',
372
+ '--jp-editor-cursor-color': 'var(--jp-ui-font-color0)',
373
+ '--jp-mirror-editor-keyword-color': 'var(--md-green-500, #4caf50)',
374
+ '--jp-mirror-editor-atom-color': 'var(--md-blue-300, #64b5f6)',
375
+ '--jp-mirror-editor-number-color': 'var(--md-green-400, #66bb6a)',
376
+ '--jp-mirror-editor-def-color': 'var(--md-blue-600, #1e88e5)',
377
+ '--jp-mirror-editor-variable-color': 'var(--md-grey-300, #e0e0e0)',
378
+ '--jp-mirror-editor-variable-2-color': 'var(--md-blue-500, #2196f3)',
379
+ '--jp-mirror-editor-variable-3-color': 'var(--md-green-600, #43a047)',
380
+ '--jp-mirror-editor-punctuation-color': 'var(--md-blue-400, #42a5f5)',
381
+ '--jp-mirror-editor-property-color': 'var(--md-blue-400, #42a5f5)',
382
+ '--jp-mirror-editor-operator-color': '#d48fff',
383
+ '--jp-mirror-editor-comment-color': '#408080',
384
+ '--jp-mirror-editor-string-color': '#ff7070',
385
+ '--jp-mirror-editor-string-2-color': 'var(--md-purple-300, #ba68c8)',
386
+ '--jp-mirror-editor-meta-color': '#a2f',
387
+ '--jp-mirror-editor-qualifier-color': '#555',
388
+ '--jp-mirror-editor-builtin-color': 'var(--md-green-600, #43a047)',
389
+ '--jp-mirror-editor-bracket-color': '#997',
390
+ '--jp-mirror-editor-tag-color': 'var(--md-green-700, #388e3c)',
391
+ '--jp-mirror-editor-attribute-color': 'var(--md-blue-700, #1976d2)',
392
+ '--jp-mirror-editor-header-color': 'var(--md-blue-500, #2196f3)',
393
+ '--jp-mirror-editor-quote-color': 'var(--md-green-300, #81c784)',
394
+ '--jp-mirror-editor-link-color': 'var(--md-blue-700, #1976d2)',
395
+ '--jp-mirror-editor-error-color': '#f00',
396
+ '--jp-mirror-editor-hr-color': '#999',
397
+ '--jp-collaborator-color1': '#ad4a00',
398
+ '--jp-collaborator-color2': '#7b6a00',
399
+ '--jp-collaborator-color3': '#007e00',
400
+ '--jp-collaborator-color4': '#008772',
401
+ '--jp-collaborator-color5': '#0079b9',
402
+ '--jp-collaborator-color6': '#8b45c6',
403
+ '--jp-collaborator-color7': '#be208b',
404
+ '--jp-vega-background': 'var(--md-grey-400, #bdbdbd)',
405
+ '--jp-sidebar-min-width': '250px',
406
+ '--jp-search-selected-match-background-color': 'rgb(255, 225, 0)',
407
+ '--jp-search-selected-match-color': 'black',
408
+ '--jp-search-unselected-match-background-color': 'var( --jp-inverse-layout-color0 )',
409
+ '--jp-search-unselected-match-color': 'var(--jp-ui-inverse-font-color0)',
410
+ '--jp-scrollbar-background-color': '#3f4244',
411
+ '--jp-scrollbar-thumb-color': '104, 112, 114',
412
+ '--jp-scrollbar-endpad': '3px',
413
+ '--jp-scrollbar-thumb-margin': '3.5px',
414
+ '--jp-scrollbar-thumb-radius': '9px',
415
+ '--jp-icon-contrast-color0': 'var(--md-purple-600, #8e24aa)',
416
+ '--jp-icon-contrast-color1': 'var(--md-green-600, #43a047)',
417
+ '--jp-icon-contrast-color2': 'var(--md-pink-600, #d81b60)',
418
+ '--jp-icon-contrast-color3': 'var(--md-blue-600, #1e88e5)',
419
+ '--jp-accept-color-normal': 'var(--md-blue-700, #1976d2)',
420
+ '--jp-accept-color-hover': 'var(--md-blue-800, #1565c0)',
421
+ '--jp-accept-color-active': 'var(--md-blue-900, #0d47a1)',
422
+ '--jp-warn-color-normal': 'var(--md-red-700, #d32f2f)',
423
+ '--jp-warn-color-hover': 'var(--md-red-800, #c62828)',
424
+ '--jp-warn-color-active': 'var(--md-red-900, #b71c1c)',
425
+ '--jp-reject-color-normal': 'var(--md-grey-600, #757575)',
426
+ '--jp-reject-color-hover': 'var(--md-grey-700, #616161)',
427
+ '--jp-reject-color-active': 'var(--md-grey-800, #424242)',
428
+ '--jp-jupyter-icon-color': '#f37626',
429
+ '--jp-notebook-icon-color': '#f37626',
430
+ '--jp-json-icon-color': 'var(--md-orange-500, #ff9800)',
431
+ '--jp-console-icon-background-color': 'var(--md-blue-500, #2196f3)',
432
+ '--jp-console-icon-color': 'white',
433
+ '--jp-terminal-icon-background-color': 'var(--md-grey-200, #eee)',
434
+ '--jp-terminal-icon-color': 'var(--md-grey-800, #424242)',
435
+ '--jp-text-editor-icon-color': 'var(--md-grey-200, #eee)',
436
+ '--jp-inspector-icon-color': 'var(--md-grey-200, #eee)',
437
+ '--jp-switch-color': 'var(--md-grey-400, #bdbdbd)',
438
+ '--jp-switch-true-position-color': 'var(--md-orange-700, #f57c00)',
439
+ '--jp-focus-outline-color': '#38a0f5',
440
+ '--jp-focus-outline-width': '2px',
441
+ };
@@ -1,8 +1,16 @@
1
1
  import type { AppSpec } from '../../types/agentspecs';
2
- import type { A2ATeamConnection } from './a2aTeamFlow';
2
+ import { type A2ATeamConnection } from './a2aTeamFlow';
3
+ import type { ToolClass } from '../inspector/agentInspector';
3
4
  /**
4
5
  * The connections of an application, each with its server's name and mark
5
6
  * and its tools. A connection to a server the catalogue does not have is
6
7
  * left out: there is nothing to draw it with.
7
8
  */
8
9
  export declare function teamConnectionsOf(app: Pick<AppSpec, 'connections'>): A2ATeamConnection[];
10
+ /**
11
+ * Where a member's tool call comes from, for the Agent Inspector: a call to
12
+ * one of its connections is an MCP call, with the server's mark; any other
13
+ * is `fallback`'s (`classifyToolCall`, by the catalogues) or a tool its
14
+ * runtime runs (`write_notebook`).
15
+ */
16
+ export declare function teamToolClassifier(connections: A2ATeamConnection[], fallback?: (name: string, args?: Record<string, unknown>) => ToolClass): (name: string, args?: Record<string, unknown>) => ToolClass;