@jupyterlite/ai 0.6.2 → 0.8.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.
Files changed (87) hide show
  1. package/README.md +1 -1
  2. package/lib/base-completer.d.ts +22 -5
  3. package/lib/base-completer.js +14 -1
  4. package/lib/chat-handler.d.ts +23 -11
  5. package/lib/chat-handler.js +66 -45
  6. package/lib/completion-provider.d.ts +2 -2
  7. package/lib/completion-provider.js +5 -4
  8. package/lib/components/stop-button.d.ts +0 -1
  9. package/lib/default-prompts.d.ts +2 -0
  10. package/lib/default-prompts.js +31 -0
  11. package/lib/default-providers/Anthropic/completer.d.ts +4 -11
  12. package/lib/default-providers/Anthropic/completer.js +5 -16
  13. package/lib/default-providers/ChromeAI/completer.d.ts +4 -11
  14. package/lib/default-providers/ChromeAI/completer.js +5 -16
  15. package/lib/default-providers/ChromeAI/instructions.d.ts +4 -0
  16. package/lib/default-providers/ChromeAI/instructions.js +18 -0
  17. package/lib/default-providers/ChromeAI/settings-schema.json +0 -3
  18. package/lib/default-providers/Gemini/completer.d.ts +12 -0
  19. package/lib/default-providers/Gemini/completer.js +48 -0
  20. package/lib/default-providers/Gemini/instructions.d.ts +2 -0
  21. package/lib/default-providers/Gemini/instructions.js +9 -0
  22. package/lib/default-providers/Gemini/settings-schema.json +64 -0
  23. package/lib/default-providers/MistralAI/completer.d.ts +10 -13
  24. package/lib/default-providers/MistralAI/completer.js +42 -52
  25. package/lib/default-providers/MistralAI/instructions.d.ts +1 -1
  26. package/lib/default-providers/MistralAI/instructions.js +2 -0
  27. package/lib/default-providers/Ollama/completer.d.ts +12 -0
  28. package/lib/default-providers/Ollama/completer.js +43 -0
  29. package/lib/default-providers/Ollama/instructions.d.ts +2 -0
  30. package/lib/default-providers/Ollama/instructions.js +70 -0
  31. package/lib/default-providers/Ollama/settings-schema.json +143 -0
  32. package/lib/default-providers/OpenAI/completer.d.ts +4 -11
  33. package/lib/default-providers/OpenAI/completer.js +8 -16
  34. package/lib/default-providers/OpenAI/settings-schema.json +88 -128
  35. package/lib/default-providers/WebLLM/completer.d.ts +21 -0
  36. package/lib/default-providers/WebLLM/completer.js +127 -0
  37. package/lib/default-providers/WebLLM/instructions.d.ts +6 -0
  38. package/lib/default-providers/WebLLM/instructions.js +32 -0
  39. package/lib/default-providers/WebLLM/settings-schema.json +19 -0
  40. package/lib/default-providers/index.js +127 -8
  41. package/lib/index.d.ts +3 -2
  42. package/lib/index.js +80 -36
  43. package/lib/provider.d.ts +48 -22
  44. package/lib/provider.js +254 -101
  45. package/lib/settings/index.d.ts +1 -1
  46. package/lib/settings/index.js +1 -1
  47. package/lib/settings/panel.d.ts +151 -14
  48. package/lib/settings/panel.js +334 -145
  49. package/lib/settings/textarea.d.ts +2 -0
  50. package/lib/settings/textarea.js +18 -0
  51. package/lib/tokens.d.ts +45 -22
  52. package/lib/tokens.js +2 -1
  53. package/lib/types/ai-model.d.ts +24 -0
  54. package/lib/types/ai-model.js +5 -0
  55. package/package.json +19 -15
  56. package/schema/chat.json +1 -1
  57. package/schema/provider-registry.json +8 -8
  58. package/schema/system-prompts.json +22 -0
  59. package/src/base-completer.ts +38 -6
  60. package/src/chat-handler.ts +62 -31
  61. package/src/completion-provider.ts +3 -3
  62. package/src/default-prompts.ts +33 -0
  63. package/src/default-providers/Anthropic/completer.ts +5 -21
  64. package/src/default-providers/ChromeAI/completer.ts +5 -21
  65. package/src/default-providers/ChromeAI/instructions.ts +21 -0
  66. package/src/default-providers/Gemini/completer.ts +61 -0
  67. package/src/default-providers/Gemini/instructions.ts +9 -0
  68. package/src/default-providers/MistralAI/completer.ts +47 -65
  69. package/src/default-providers/MistralAI/instructions.ts +2 -0
  70. package/src/default-providers/Ollama/completer.ts +54 -0
  71. package/src/default-providers/Ollama/instructions.ts +70 -0
  72. package/src/default-providers/OpenAI/completer.ts +8 -21
  73. package/src/default-providers/WebLLM/completer.ts +151 -0
  74. package/src/default-providers/WebLLM/instructions.ts +33 -0
  75. package/src/default-providers/index.ts +158 -18
  76. package/src/index.ts +108 -40
  77. package/src/provider.ts +300 -109
  78. package/src/settings/index.ts +1 -1
  79. package/src/settings/panel.tsx +463 -101
  80. package/src/settings/textarea.tsx +33 -0
  81. package/src/tokens.ts +49 -24
  82. package/src/types/ai-model.ts +37 -0
  83. package/src/types/service-worker.d.ts +6 -0
  84. package/style/base.css +34 -0
  85. package/lib/settings/settings-connector.d.ts +0 -31
  86. package/lib/settings/settings-connector.js +0 -61
  87. package/src/settings/settings-connector.ts +0 -88
@@ -1,24 +1,89 @@
1
1
  import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
2
- import { ISettingConnector } from '@jupyterlab/settingregistry';
3
2
  import { IFormRenderer } from '@jupyterlab/ui-components';
4
3
  import type { FieldProps } from '@rjsf/utils';
5
4
  import { JSONSchema7 } from 'json-schema';
6
5
  import { ISecretsManager } from 'jupyter-secrets-manager';
7
6
  import React from 'react';
8
- import { IAIProviderRegistry, IDict } from '../tokens';
7
+ import { IAIProviderRegistry, IDict, ModelRole } from '../tokens';
9
8
  export declare const aiSettingsRenderer: (options: {
10
9
  providerRegistry: IAIProviderRegistry;
11
10
  secretsToken?: symbol;
12
11
  rmRegistry?: IRenderMimeRegistry;
13
12
  secretsManager?: ISecretsManager;
14
- settingConnector?: ISettingConnector;
15
13
  }) => IFormRenderer;
16
- export interface ISettingsFormStates {
17
- schema: JSONSchema7;
18
- instruction: HTMLElement | null;
14
+ export interface IAiSettings {
15
+ /**
16
+ * Get the local storage settings for a specific role (chat or completer).
17
+ */
18
+ getLocalStorage(role: ModelRole): IDict<any>;
19
+ /**
20
+ * Set the local storage item for a specific role (chat or completer).
21
+ * If the key is not provider (null) we assume the value should replace the whole
22
+ * local storage for this role.
23
+ */
24
+ setLocalStorageItem(role: ModelRole, key: string | null, value: any): void;
25
+ /**
26
+ * Get the settings from the registry (jupyterlab settings system) for a given role.
27
+ */
28
+ getSettingsFromRegistry(role: ModelRole): IDict<any>;
29
+ /**
30
+ * Save the settings to the setting registry.
31
+ */
32
+ saveSettingsToRegistry(role: ModelRole, settings: IDict<any>): void;
19
33
  }
20
- export declare class AiSettings extends React.Component<FieldProps, ISettingsFormStates> {
34
+ export declare class AiSettings extends React.Component<FieldProps, AiSettings.states> implements IAiSettings {
21
35
  constructor(props: FieldProps);
36
+ private _settingsChanged;
37
+ /**
38
+ * Get the local storage settings for a specific role (chat or completer).
39
+ */
40
+ getLocalStorage: (role: ModelRole) => IDict<any>;
41
+ /**
42
+ * Set the local storage item for a specific role (chat or completer).
43
+ * If the key is not provider (null) we assume the value should replace the whole
44
+ * local storage for this role.
45
+ */
46
+ setLocalStorageItem: (role: ModelRole, key: string | null, value: any) => void;
47
+ /**
48
+ * Get the settings from the registry (jupyterlab settings system) for a given role.
49
+ */
50
+ getSettingsFromRegistry: (role: ModelRole) => IDict<any>;
51
+ /**
52
+ * Save the settings to the setting registry.
53
+ */
54
+ saveSettingsToRegistry: (role: ModelRole, settings: IDict<any>) => void;
55
+ render(): JSX.Element;
56
+ private _settings;
57
+ }
58
+ /**
59
+ * The AI settings component namespace.
60
+ */
61
+ declare namespace AiSettings {
62
+ /**
63
+ * The AI settings component states.
64
+ */
65
+ type states = {
66
+ /**
67
+ * Whether there is only one provider for chat and completion.
68
+ */
69
+ uniqueProvider: boolean;
70
+ };
71
+ /**
72
+ * The provider names object.
73
+ */
74
+ type providers = {
75
+ [key in ModelRole]: string;
76
+ };
77
+ /**
78
+ * The provider schemas object.
79
+ */
80
+ type schemas = {
81
+ [key in ModelRole]: JSONSchema7;
82
+ };
83
+ }
84
+ export declare class AiProviderSettings extends React.Component<AiProviderSettings.props, AiProviderSettings.states> {
85
+ constructor(props: AiProviderSettings.props);
86
+ componentDidMount(): void;
22
87
  componentDidUpdate(): Promise<void>;
23
88
  componentWillUnmount(): void;
24
89
  /**
@@ -30,13 +95,25 @@ export declare class AiSettings extends React.Component<FieldProps, ISettingsFor
30
95
  */
31
96
  saveCurrentProvider(): void;
32
97
  /**
33
- * Get settings from local storage for a given provider.
98
+ * Get settings from local storage for the current provider provider.
34
99
  */
35
- getSettings(): IDict<any>;
100
+ getSettingsFromLocalStorage(): IDict<any>;
36
101
  /**
37
102
  * Save settings in local storage for a given provider.
38
103
  */
39
- saveSettings(value: IDict<any>): void;
104
+ saveSettingsToLocalStorage(): void;
105
+ /**
106
+ * Save the settings to the setting registry.
107
+ */
108
+ saveSettingsToRegistry(): void;
109
+ /**
110
+ * Triggered when the settings has changed.
111
+ */
112
+ private _settingsChanged;
113
+ /**
114
+ * Triggered when the secret fields visibility has changed.
115
+ */
116
+ private _fieldVisibilityChanged;
40
117
  /**
41
118
  * Update the settings whether the secrets manager is used or not.
42
119
  *
@@ -57,7 +134,12 @@ export declare class AiSettings extends React.Component<FieldProps, ISettingsFor
57
134
  */
58
135
  private _renderInstruction;
59
136
  /**
60
- * Triggered when the provider hes changed, to update the schema and values.
137
+ * Check for compatibility of the provider with the current environment.
138
+ * If the provider is not compatible, display an error message.
139
+ */
140
+ private _checkProviderCompatibility;
141
+ /**
142
+ * Triggered when the provider has changed, to update the schema and values.
61
143
  * Update the Jupyterlab settings accordingly.
62
144
  */
63
145
  private _onProviderChanged;
@@ -66,24 +148,79 @@ export declare class AiSettings extends React.Component<FieldProps, ISettingsFor
66
148
  * with the secret manager.
67
149
  */
68
150
  private _onPasswordUpdated;
151
+ /**
152
+ * Update the current settings with the new values from the form.
153
+ *
154
+ * @param data - The form data to update.
155
+ * @returns - Boolean whether the form is not the default one.
156
+ */
157
+ private _updatedFormData;
69
158
  /**
70
159
  * Triggered when the form value has changed, to update the current settings and save
71
160
  * it in local storage.
72
161
  * Update the Jupyterlab settings accordingly.
73
162
  */
74
- private _onFormChange;
163
+ private _onFormChanged;
164
+ /**
165
+ * Handler for the "Restore to defaults" button - clears all
166
+ * modified settings then calls `setFormData` to restore the
167
+ * values.
168
+ */
169
+ private _reset;
75
170
  render(): JSX.Element;
171
+ private _role;
76
172
  private _providerRegistry;
77
173
  private _provider;
78
174
  private _providerSchema;
79
175
  private _useSecretsManager;
80
- private _hideSecretFields;
81
176
  private _rmRegistry;
82
177
  private _secretsManager;
83
- private _settingConnector;
84
178
  private _currentSettings;
85
179
  private _uiSchema;
86
180
  private _settings;
87
181
  private _formRef;
88
182
  private _secretFields;
183
+ private _defaultFormData;
184
+ }
185
+ /**
186
+ * The AI provider settings component namespace.
187
+ */
188
+ export declare namespace AiProviderSettings {
189
+ /**
190
+ * The AI provider settings component props.
191
+ */
192
+ type props = FieldProps & {
193
+ /**
194
+ * Why this model is used for (chat or completion).
195
+ */
196
+ role: ModelRole;
197
+ /**
198
+ * The parent component which should handle:
199
+ * - the get/set functions for local storage
200
+ * - save settings using jupyter settings system
201
+ */
202
+ aiSettings: IAiSettings;
203
+ };
204
+ /**
205
+ * The AI provider settings component states.
206
+ */
207
+ type states = {
208
+ /**
209
+ * The schema of the settings.
210
+ */
211
+ schema: JSONSchema7;
212
+ /**
213
+ * The instructions for this provider.
214
+ */
215
+ instruction: HTMLElement | null;
216
+ /**
217
+ * An error if the model in not compatible with the current environment.
218
+ */
219
+ compatibilityError: string | null;
220
+ /**
221
+ * Whether the settings are modified from default or not.
222
+ */
223
+ isModified?: boolean;
224
+ };
89
225
  }
226
+ export {};