@jupyterlite/ai 0.14.0 → 0.16.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/lib/agent.d.ts +33 -115
- package/lib/agent.js +192 -106
- package/lib/chat-model-handler.d.ts +9 -11
- package/lib/chat-model-handler.js +9 -4
- package/lib/chat-model.d.ts +84 -13
- package/lib/chat-model.js +214 -136
- package/lib/completion/completion-provider.d.ts +2 -3
- package/lib/components/completion-status.d.ts +2 -2
- package/lib/components/index.d.ts +1 -1
- package/lib/components/index.js +1 -1
- package/lib/components/model-select.d.ts +3 -3
- package/lib/components/save-button.d.ts +31 -0
- package/lib/components/save-button.js +41 -0
- package/lib/components/tool-select.d.ts +3 -4
- package/lib/components/{token-usage-display.d.ts → usage-display.d.ts} +13 -14
- package/lib/components/usage-display.js +109 -0
- package/lib/diff-manager.d.ts +2 -3
- package/lib/index.d.ts +2 -4
- package/lib/index.js +186 -28
- package/lib/models/settings-model.d.ts +11 -53
- package/lib/models/settings-model.js +38 -22
- package/lib/providers/built-in-providers.js +22 -36
- package/lib/providers/generated-context-windows.d.ts +8 -0
- package/lib/providers/generated-context-windows.js +96 -0
- package/lib/providers/model-info.d.ts +3 -0
- package/lib/providers/model-info.js +58 -0
- package/lib/tokens.d.ts +361 -36
- package/lib/tokens.js +18 -13
- package/lib/tools/commands.d.ts +2 -3
- package/lib/widgets/ai-settings.d.ts +3 -5
- package/lib/widgets/ai-settings.js +12 -0
- package/lib/widgets/main-area-chat.d.ts +2 -3
- package/lib/widgets/main-area-chat.js +12 -12
- package/lib/widgets/provider-config-dialog.d.ts +1 -2
- package/lib/widgets/provider-config-dialog.js +34 -34
- package/package.json +17 -10
- package/schema/settings-model.json +18 -1
- package/src/agent.ts +275 -248
- package/src/chat-model-handler.ts +25 -21
- package/src/chat-model.ts +307 -196
- package/src/completion/completion-provider.ts +7 -4
- package/src/components/completion-status.tsx +3 -3
- package/src/components/index.ts +1 -1
- package/src/components/model-select.tsx +4 -3
- package/src/components/save-button.tsx +84 -0
- package/src/components/tool-select.tsx +10 -4
- package/src/components/usage-display.tsx +208 -0
- package/src/diff-manager.ts +4 -4
- package/src/index.ts +250 -58
- package/src/models/settings-model.ts +46 -88
- package/src/providers/built-in-providers.ts +22 -36
- package/src/providers/generated-context-windows.ts +102 -0
- package/src/providers/model-info.ts +88 -0
- package/src/tokens.ts +438 -58
- package/src/tools/commands.ts +2 -3
- package/src/widgets/ai-settings.tsx +69 -15
- package/src/widgets/main-area-chat.ts +18 -15
- package/src/widgets/provider-config-dialog.tsx +96 -61
- package/style/base.css +17 -195
- package/lib/approval-buttons.d.ts +0 -49
- package/lib/approval-buttons.js +0 -79
- package/lib/components/token-usage-display.js +0 -72
- package/src/approval-buttons.ts +0 -115
- package/src/components/token-usage-display.tsx +0 -138
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AISettingsModel } from '../models/settings-model';
|
|
2
1
|
import { ReactWidget } from '@jupyterlab/ui-components';
|
|
3
2
|
import type { TranslationBundle } from '@jupyterlab/translation';
|
|
3
|
+
import type { IAISettingsModel } from '../tokens';
|
|
4
4
|
/**
|
|
5
5
|
* The completion status props.
|
|
6
6
|
*/
|
|
@@ -8,7 +8,7 @@ interface ICompletionStatusProps {
|
|
|
8
8
|
/**
|
|
9
9
|
* The settings model.
|
|
10
10
|
*/
|
|
11
|
-
settingsModel:
|
|
11
|
+
settingsModel: IAISettingsModel;
|
|
12
12
|
/**
|
|
13
13
|
* The application language translator.
|
|
14
14
|
*/
|
package/lib/components/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InputToolbarRegistry } from '@jupyter/chat';
|
|
2
2
|
import type { TranslationBundle } from '@jupyterlab/translation';
|
|
3
|
-
import {
|
|
3
|
+
import type { IAISettingsModel } from '../tokens';
|
|
4
4
|
/**
|
|
5
5
|
* Properties for the model select component.
|
|
6
6
|
*/
|
|
@@ -8,7 +8,7 @@ export interface IModelSelectProps extends InputToolbarRegistry.IToolbarItemProp
|
|
|
8
8
|
/**
|
|
9
9
|
* The settings model to get available models and current selection from.
|
|
10
10
|
*/
|
|
11
|
-
settingsModel:
|
|
11
|
+
settingsModel: IAISettingsModel;
|
|
12
12
|
/**
|
|
13
13
|
* The application language translator.
|
|
14
14
|
*/
|
|
@@ -21,4 +21,4 @@ export declare function ModelSelect(props: IModelSelectProps): JSX.Element;
|
|
|
21
21
|
/**
|
|
22
22
|
* Factory function returning the toolbar item for model selection.
|
|
23
23
|
*/
|
|
24
|
-
export declare function createModelSelectItem(settingsModel:
|
|
24
|
+
export declare function createModelSelectItem(settingsModel: IAISettingsModel, translator: TranslationBundle): InputToolbarRegistry.IToolbarItem;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ReactWidget } from '@jupyterlab/ui-components';
|
|
2
|
+
import type { TranslationBundle } from '@jupyterlab/translation';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { AIChatModel } from '../chat-model';
|
|
5
|
+
/**
|
|
6
|
+
* Properties for the SaveButton component.
|
|
7
|
+
*/
|
|
8
|
+
export interface ISaveButtonProps {
|
|
9
|
+
/**
|
|
10
|
+
* The chat model, used to listen for message changes for auto-save.
|
|
11
|
+
*/
|
|
12
|
+
model: AIChatModel;
|
|
13
|
+
/**
|
|
14
|
+
* The application language translator.
|
|
15
|
+
*/
|
|
16
|
+
translator: TranslationBundle;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A split button for saving the chat, with a button to toggle auto-save.
|
|
20
|
+
* When auto-save is active, the save button displays the JupyterLab
|
|
21
|
+
* toggled-on appearance (inset box-shadow all around).
|
|
22
|
+
*/
|
|
23
|
+
export declare function SaveComponent(props: ISaveButtonProps): JSX.Element;
|
|
24
|
+
/**
|
|
25
|
+
* A Lumino widget wrapping the SaveButton React component.
|
|
26
|
+
*/
|
|
27
|
+
export declare class SaveComponentWidget extends ReactWidget {
|
|
28
|
+
constructor(options: ISaveButtonProps);
|
|
29
|
+
protected render(): React.ReactElement;
|
|
30
|
+
private _options;
|
|
31
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { historyIcon, ReactWidget, saveIcon, ToolbarButtonComponent } from '@jupyterlab/ui-components';
|
|
2
|
+
import React, { useEffect, useState } from 'react';
|
|
3
|
+
const COMPONENT_CLASS = 'jp-ai-SaveButton';
|
|
4
|
+
const AUTOSAVE_BUTTON_CLASS = 'jp-ai-AutoSaveButton';
|
|
5
|
+
/**
|
|
6
|
+
* A split button for saving the chat, with a button to toggle auto-save.
|
|
7
|
+
* When auto-save is active, the save button displays the JupyterLab
|
|
8
|
+
* toggled-on appearance (inset box-shadow all around).
|
|
9
|
+
*/
|
|
10
|
+
export function SaveComponent(props) {
|
|
11
|
+
const { model, translator: trans } = props;
|
|
12
|
+
const [autosave, setAutosave] = useState(model.autosave);
|
|
13
|
+
/**
|
|
14
|
+
* Effect that update the autosave state when it is updated on the model.
|
|
15
|
+
*/
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const updateAutosave = (_, value) => {
|
|
18
|
+
setAutosave(value);
|
|
19
|
+
};
|
|
20
|
+
model.autosaveChanged.connect(updateAutosave);
|
|
21
|
+
return () => {
|
|
22
|
+
model.autosaveChanged.disconnect(updateAutosave);
|
|
23
|
+
};
|
|
24
|
+
}, [model]);
|
|
25
|
+
return (React.createElement("div", { className: `${COMPONENT_CLASS}${autosave ? ' lm-mod-toggled' : ''}` },
|
|
26
|
+
React.createElement(ToolbarButtonComponent, { icon: saveIcon, onClick: () => model.save(), tooltip: trans.__('Save chat') }),
|
|
27
|
+
React.createElement(ToolbarButtonComponent, { className: AUTOSAVE_BUTTON_CLASS, icon: historyIcon, onClick: () => (model.autosave = !model.autosave), tooltip: trans.__('Auto-save') })));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* A Lumino widget wrapping the SaveButton React component.
|
|
31
|
+
*/
|
|
32
|
+
export class SaveComponentWidget extends ReactWidget {
|
|
33
|
+
constructor(options) {
|
|
34
|
+
super();
|
|
35
|
+
this._options = options;
|
|
36
|
+
}
|
|
37
|
+
render() {
|
|
38
|
+
return React.createElement(SaveComponent, { ...this._options });
|
|
39
|
+
}
|
|
40
|
+
_options;
|
|
41
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { InputToolbarRegistry } from '@jupyter/chat';
|
|
2
2
|
import type { TranslationBundle } from '@jupyterlab/translation';
|
|
3
|
-
import { IProviderRegistry, IToolRegistry } from '../tokens';
|
|
4
|
-
import { AISettingsModel } from '../models/settings-model';
|
|
3
|
+
import type { IAISettingsModel, IProviderRegistry, IToolRegistry } from '../tokens';
|
|
5
4
|
/**
|
|
6
5
|
* Properties for the tool select component.
|
|
7
6
|
*/
|
|
@@ -21,7 +20,7 @@ export interface IToolSelectProps extends InputToolbarRegistry.IToolbarItemProps
|
|
|
21
20
|
/**
|
|
22
21
|
* The settings model to compute provider-level web tools.
|
|
23
22
|
*/
|
|
24
|
-
settingsModel:
|
|
23
|
+
settingsModel: IAISettingsModel;
|
|
25
24
|
/**
|
|
26
25
|
* Registry for provider metadata used to resolve provider tool capabilities.
|
|
27
26
|
*/
|
|
@@ -38,4 +37,4 @@ export declare function ToolSelect(props: IToolSelectProps): JSX.Element;
|
|
|
38
37
|
/**
|
|
39
38
|
* Factory function returning the toolbar item for tool selection.
|
|
40
39
|
*/
|
|
41
|
-
export declare function createToolSelectItem(toolRegistry: IToolRegistry, settingsModel:
|
|
40
|
+
export declare function createToolSelectItem(toolRegistry: IToolRegistry, settingsModel: IAISettingsModel, providerRegistry: IProviderRegistry, toolsEnabled: boolean | undefined, translator: TranslationBundle): InputToolbarRegistry.IToolbarItem;
|
|
@@ -2,12 +2,11 @@ import { ReactWidget } from '@jupyterlab/ui-components';
|
|
|
2
2
|
import type { TranslationBundle } from '@jupyterlab/translation';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { ISignal } from '@lumino/signaling';
|
|
5
|
-
import {
|
|
6
|
-
import { ITokenUsage } from '../tokens';
|
|
5
|
+
import type { IAISettingsModel, ITokenUsage } from '../tokens';
|
|
7
6
|
/**
|
|
8
|
-
* Props for the
|
|
7
|
+
* Props for the UsageDisplay component.
|
|
9
8
|
*/
|
|
10
|
-
export interface
|
|
9
|
+
export interface IUsageDisplayProps {
|
|
11
10
|
/**
|
|
12
11
|
* The token usage changed signal
|
|
13
12
|
*/
|
|
@@ -15,7 +14,7 @@ export interface ITokenUsageDisplayProps {
|
|
|
15
14
|
/**
|
|
16
15
|
* The settings model instance for configuration options
|
|
17
16
|
*/
|
|
18
|
-
settingsModel:
|
|
17
|
+
settingsModel: IAISettingsModel;
|
|
19
18
|
/**
|
|
20
19
|
* Initial token usage.
|
|
21
20
|
*/
|
|
@@ -26,24 +25,24 @@ export interface ITokenUsageDisplayProps {
|
|
|
26
25
|
translator: TranslationBundle;
|
|
27
26
|
}
|
|
28
27
|
/**
|
|
29
|
-
* React component that displays
|
|
30
|
-
* Shows input/output token counts
|
|
31
|
-
* Only renders when token usage display is enabled in settings.
|
|
28
|
+
* React component that displays usage information.
|
|
29
|
+
* Shows input/output token counts and optional estimated context usage.
|
|
30
|
+
* Only renders when token or context usage display is enabled in settings.
|
|
32
31
|
*/
|
|
33
|
-
export declare const
|
|
32
|
+
export declare const UsageDisplay: React.FC<IUsageDisplayProps>;
|
|
34
33
|
/**
|
|
35
|
-
* JupyterLab widget wrapper for the
|
|
34
|
+
* JupyterLab widget wrapper for the UsageDisplay component.
|
|
36
35
|
* Extends ReactWidget to integrate with the JupyterLab widget system.
|
|
37
36
|
*/
|
|
38
|
-
export declare class
|
|
37
|
+
export declare class UsageWidget extends ReactWidget {
|
|
39
38
|
/**
|
|
40
|
-
* Creates a new
|
|
39
|
+
* Creates a new UsageWidget instance.
|
|
41
40
|
* @param options - Configuration options containing required models
|
|
42
41
|
*/
|
|
43
|
-
constructor(options:
|
|
42
|
+
constructor(options: IUsageDisplayProps);
|
|
44
43
|
/**
|
|
45
44
|
* Renders the React component within the widget.
|
|
46
|
-
* @returns The
|
|
45
|
+
* @returns The UsageDisplay React element
|
|
47
46
|
*/
|
|
48
47
|
protected render(): React.ReactElement;
|
|
49
48
|
private _options;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ReactWidget, UseSignal } from '@jupyterlab/ui-components';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* React component that displays usage information.
|
|
5
|
+
* Shows input/output token counts and optional estimated context usage.
|
|
6
|
+
* Only renders when token or context usage display is enabled in settings.
|
|
7
|
+
*/
|
|
8
|
+
export const UsageDisplay = ({ tokenUsageChanged, settingsModel, initialTokenUsage, translator: trans }) => {
|
|
9
|
+
const formatContextPercent = (value) => {
|
|
10
|
+
return Math.round(value).toLocaleString();
|
|
11
|
+
};
|
|
12
|
+
const badgeStyle = {
|
|
13
|
+
display: 'flex',
|
|
14
|
+
alignItems: 'center',
|
|
15
|
+
gap: '6px',
|
|
16
|
+
fontSize: '12px',
|
|
17
|
+
color: 'var(--jp-ui-font-color2)',
|
|
18
|
+
padding: '4px 8px',
|
|
19
|
+
backgroundColor: 'var(--jp-layout-color1)',
|
|
20
|
+
border: '1px solid var(--jp-border-color1)',
|
|
21
|
+
borderRadius: '4px',
|
|
22
|
+
whiteSpace: 'nowrap'
|
|
23
|
+
};
|
|
24
|
+
return (React.createElement(UseSignal, { signal: settingsModel.stateChanged, initialArgs: undefined }, () => {
|
|
25
|
+
const config = settingsModel.config;
|
|
26
|
+
const showTokenUsage = config.showTokenUsage;
|
|
27
|
+
const showContextUsage = config.showContextUsage;
|
|
28
|
+
if (!showTokenUsage && !showContextUsage) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return (React.createElement(UseSignal, { signal: tokenUsageChanged, initialArgs: initialTokenUsage }, (_, tokenUsage) => {
|
|
32
|
+
if (!tokenUsage) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const total = tokenUsage.inputTokens + tokenUsage.outputTokens;
|
|
36
|
+
const hasKnownContextWindow = showContextUsage && tokenUsage.contextWindow !== undefined;
|
|
37
|
+
const contextUsagePercent = tokenUsage.lastRequestInputTokens !== undefined &&
|
|
38
|
+
tokenUsage.contextWindow !== undefined &&
|
|
39
|
+
tokenUsage.contextWindow > 0
|
|
40
|
+
? Math.max(0, Math.min(100, (tokenUsage.lastRequestInputTokens /
|
|
41
|
+
tokenUsage.contextWindow) *
|
|
42
|
+
100))
|
|
43
|
+
: undefined;
|
|
44
|
+
const hasContextEstimate = hasKnownContextWindow &&
|
|
45
|
+
contextUsagePercent !== undefined &&
|
|
46
|
+
tokenUsage.lastRequestInputTokens !== undefined;
|
|
47
|
+
const contextLabel = hasContextEstimate
|
|
48
|
+
? `${formatContextPercent(contextUsagePercent)}%`
|
|
49
|
+
: hasKnownContextWindow
|
|
50
|
+
? '0%'
|
|
51
|
+
: '?';
|
|
52
|
+
const contextTitle = hasContextEstimate
|
|
53
|
+
? trans.__('Context Usage (estimated): %1% (%2 / %3 tokens)', formatContextPercent(contextUsagePercent), tokenUsage.lastRequestInputTokens.toLocaleString(), tokenUsage.contextWindow.toLocaleString())
|
|
54
|
+
: hasKnownContextWindow
|
|
55
|
+
? trans.__('Context usage estimate will appear after the next request. Showing 0% until then. Context window: %1 tokens', tokenUsage.contextWindow.toLocaleString())
|
|
56
|
+
: trans.__('Context Usage unavailable. Configure a context window for the active provider/model to enable estimation.');
|
|
57
|
+
return (React.createElement("div", { style: {
|
|
58
|
+
display: 'flex',
|
|
59
|
+
alignItems: 'center',
|
|
60
|
+
gap: '6px'
|
|
61
|
+
} },
|
|
62
|
+
showTokenUsage && (React.createElement("span", { style: badgeStyle, title: trans.__('Token Usage - Sent: %1, Received: %2, Total: %3', tokenUsage.inputTokens.toLocaleString(), tokenUsage.outputTokens.toLocaleString(), total.toLocaleString()) },
|
|
63
|
+
React.createElement("span", { style: {
|
|
64
|
+
display: 'flex',
|
|
65
|
+
alignItems: 'center',
|
|
66
|
+
gap: '2px'
|
|
67
|
+
} },
|
|
68
|
+
React.createElement("span", null, "\u2191"),
|
|
69
|
+
React.createElement("span", null, tokenUsage.inputTokens.toLocaleString())),
|
|
70
|
+
React.createElement("span", { style: {
|
|
71
|
+
display: 'flex',
|
|
72
|
+
alignItems: 'center',
|
|
73
|
+
gap: '2px'
|
|
74
|
+
} },
|
|
75
|
+
React.createElement("span", null, "\u2193"),
|
|
76
|
+
React.createElement("span", null, tokenUsage.outputTokens.toLocaleString())))),
|
|
77
|
+
showContextUsage && (React.createElement("span", { style: badgeStyle, title: contextTitle },
|
|
78
|
+
React.createElement("span", { style: {
|
|
79
|
+
display: 'flex',
|
|
80
|
+
alignItems: 'center',
|
|
81
|
+
gap: '2px'
|
|
82
|
+
} },
|
|
83
|
+
React.createElement("span", null, "ctx"),
|
|
84
|
+
React.createElement("span", null, contextLabel))))));
|
|
85
|
+
}));
|
|
86
|
+
}));
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* JupyterLab widget wrapper for the UsageDisplay component.
|
|
90
|
+
* Extends ReactWidget to integrate with the JupyterLab widget system.
|
|
91
|
+
*/
|
|
92
|
+
export class UsageWidget extends ReactWidget {
|
|
93
|
+
/**
|
|
94
|
+
* Creates a new UsageWidget instance.
|
|
95
|
+
* @param options - Configuration options containing required models
|
|
96
|
+
*/
|
|
97
|
+
constructor(options) {
|
|
98
|
+
super();
|
|
99
|
+
this._options = options;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Renders the React component within the widget.
|
|
103
|
+
* @returns The UsageDisplay React element
|
|
104
|
+
*/
|
|
105
|
+
render() {
|
|
106
|
+
return React.createElement(UsageDisplay, { ...this._options });
|
|
107
|
+
}
|
|
108
|
+
_options;
|
|
109
|
+
}
|
package/lib/diff-manager.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CommandRegistry } from '@lumino/commands';
|
|
2
|
-
import {
|
|
3
|
-
import { IDiffManager, IShowCellDiffParams, IShowFileDiffParams } from './tokens';
|
|
2
|
+
import type { IAISettingsModel, IDiffManager, IShowCellDiffParams, IShowFileDiffParams } from './tokens';
|
|
4
3
|
/**
|
|
5
4
|
* Implementation of the diff manager
|
|
6
5
|
*/
|
|
@@ -10,7 +9,7 @@ export declare class DiffManager implements IDiffManager {
|
|
|
10
9
|
*/
|
|
11
10
|
constructor(options: {
|
|
12
11
|
commands: CommandRegistry;
|
|
13
|
-
settingsModel:
|
|
12
|
+
settingsModel: IAISettingsModel;
|
|
14
13
|
});
|
|
15
14
|
/**
|
|
16
15
|
* Show diff between original and modified cell content
|
package/lib/index.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { JupyterFrontEndPlugin } from '@jupyterlab/application';
|
|
2
2
|
import { IChatCommandRegistry, IChatTracker, IInputToolbarRegistryFactory } from '@jupyter/chat';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { AISettingsModel } from './models/settings-model';
|
|
6
|
-
declare const _default: (JupyterFrontEndPlugin<IProviderRegistry> | JupyterFrontEndPlugin<void> | JupyterFrontEndPlugin<IChatCommandRegistry> | JupyterFrontEndPlugin<IChatModelHandler> | JupyterFrontEndPlugin<IChatTracker> | JupyterFrontEndPlugin<AgentManagerFactory> | JupyterFrontEndPlugin<AISettingsModel> | JupyterFrontEndPlugin<IDiffManager> | JupyterFrontEndPlugin<ISkillRegistry> | JupyterFrontEndPlugin<IToolRegistry> | JupyterFrontEndPlugin<IInputToolbarRegistryFactory>)[];
|
|
3
|
+
import { IAgentManagerFactory, IAISettingsModel, IChatModelHandler, IDiffManager, IProviderRegistry, IToolRegistry, ISkillRegistry } from './tokens';
|
|
4
|
+
declare const _default: (JupyterFrontEndPlugin<IProviderRegistry> | JupyterFrontEndPlugin<void> | JupyterFrontEndPlugin<IChatCommandRegistry> | JupyterFrontEndPlugin<IChatModelHandler> | JupyterFrontEndPlugin<IChatTracker> | JupyterFrontEndPlugin<IAgentManagerFactory> | JupyterFrontEndPlugin<IAISettingsModel> | JupyterFrontEndPlugin<IDiffManager> | JupyterFrontEndPlugin<ISkillRegistry> | JupyterFrontEndPlugin<IToolRegistry> | JupyterFrontEndPlugin<IInputToolbarRegistryFactory>)[];
|
|
7
5
|
export default _default;
|
|
8
6
|
export * from './tokens';
|
|
9
7
|
export * from './icons';
|