@jupyterlite/ai 0.6.1 → 0.7.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 (65) hide show
  1. package/README.md +1 -1
  2. package/lib/base-completer.d.ts +0 -5
  3. package/lib/chat-handler.d.ts +19 -5
  4. package/lib/chat-handler.js +47 -26
  5. package/lib/completion-provider.d.ts +2 -2
  6. package/lib/completion-provider.js +4 -3
  7. package/lib/components/stop-button.d.ts +0 -1
  8. package/lib/default-providers/Anthropic/completer.d.ts +1 -3
  9. package/lib/default-providers/Anthropic/completer.js +4 -6
  10. package/lib/default-providers/ChromeAI/completer.d.ts +1 -3
  11. package/lib/default-providers/ChromeAI/completer.js +4 -6
  12. package/lib/default-providers/ChromeAI/instructions.d.ts +4 -0
  13. package/lib/default-providers/ChromeAI/instructions.js +18 -0
  14. package/lib/default-providers/MistralAI/completer.d.ts +1 -3
  15. package/lib/default-providers/MistralAI/completer.js +5 -6
  16. package/lib/default-providers/Ollama/completer.d.ts +17 -0
  17. package/lib/default-providers/Ollama/completer.js +49 -0
  18. package/lib/default-providers/Ollama/instructions.d.ts +2 -0
  19. package/lib/default-providers/Ollama/instructions.js +70 -0
  20. package/lib/default-providers/Ollama/settings-schema.json +146 -0
  21. package/lib/default-providers/OpenAI/completer.d.ts +1 -3
  22. package/lib/default-providers/OpenAI/completer.js +4 -6
  23. package/lib/default-providers/WebLLM/completer.d.ts +27 -0
  24. package/lib/default-providers/WebLLM/completer.js +136 -0
  25. package/lib/default-providers/WebLLM/instructions.d.ts +6 -0
  26. package/lib/default-providers/WebLLM/instructions.js +32 -0
  27. package/lib/default-providers/WebLLM/settings-schema.json +21 -0
  28. package/lib/default-providers/index.js +119 -4
  29. package/lib/index.d.ts +2 -2
  30. package/lib/index.js +16 -26
  31. package/lib/provider.d.ts +11 -13
  32. package/lib/provider.js +124 -54
  33. package/lib/settings/index.d.ts +0 -1
  34. package/lib/settings/index.js +0 -1
  35. package/lib/settings/panel.d.ts +44 -11
  36. package/lib/settings/panel.js +231 -130
  37. package/lib/tokens.d.ts +21 -2
  38. package/lib/types/ai-model.d.ts +24 -0
  39. package/lib/types/ai-model.js +5 -0
  40. package/package.json +15 -12
  41. package/schema/provider-registry.json +0 -6
  42. package/src/base-completer.ts +0 -6
  43. package/src/chat-handler.ts +40 -7
  44. package/src/completion-provider.ts +2 -2
  45. package/src/default-providers/Anthropic/completer.ts +3 -8
  46. package/src/default-providers/ChromeAI/completer.ts +3 -8
  47. package/src/default-providers/ChromeAI/instructions.ts +21 -0
  48. package/src/default-providers/MistralAI/completer.ts +3 -8
  49. package/src/default-providers/Ollama/completer.ts +62 -0
  50. package/src/default-providers/Ollama/instructions.ts +70 -0
  51. package/src/default-providers/OpenAI/completer.ts +3 -8
  52. package/src/default-providers/WebLLM/completer.ts +162 -0
  53. package/src/default-providers/WebLLM/instructions.ts +33 -0
  54. package/src/default-providers/index.ts +151 -14
  55. package/src/index.ts +17 -29
  56. package/src/provider.ts +135 -46
  57. package/src/settings/index.ts +0 -1
  58. package/src/settings/panel.tsx +223 -79
  59. package/src/tokens.ts +23 -2
  60. package/src/types/ai-model.ts +37 -0
  61. package/src/types/service-worker.d.ts +6 -0
  62. package/style/base.css +5 -0
  63. package/lib/settings/settings-connector.d.ts +0 -31
  64. package/lib/settings/settings-connector.js +0 -61
  65. package/src/settings/settings-connector.ts +0 -89
@@ -1,61 +0,0 @@
1
- import { PageConfig } from '@jupyterlab/coreutils';
2
- import { DataConnector } from '@jupyterlab/statedb';
3
- import { Throttler } from '@lumino/polling';
4
- import * as json5 from 'json5';
5
- import { SECRETS_REPLACEMENT } from '.';
6
- /**
7
- * A data connector for fetching settings.
8
- *
9
- * #### Notes
10
- * This connector adds a query parameter to the base services setting manager.
11
- */
12
- export class SettingConnector extends DataConnector {
13
- constructor(connector) {
14
- super();
15
- this._doNotSave = [];
16
- this._throttlers = Object.create(null);
17
- this._connector = connector;
18
- }
19
- set doNotSave(fields) {
20
- this._doNotSave = [...fields];
21
- }
22
- /**
23
- * Fetch settings for a plugin.
24
- * @param id - The plugin ID
25
- *
26
- * #### Notes
27
- * The REST API requests are throttled at one request per plugin per 100ms.
28
- */
29
- fetch(id) {
30
- const throttlers = this._throttlers;
31
- if (!(id in throttlers)) {
32
- throttlers[id] = new Throttler(() => this._connector.fetch(id), 100);
33
- }
34
- return throttlers[id].invoke();
35
- }
36
- async list(query = 'all') {
37
- const { isDisabled } = PageConfig.Extension;
38
- const { ids, values } = await this._connector.list(query === 'ids' ? 'ids' : undefined);
39
- if (query === 'all') {
40
- return { ids, values };
41
- }
42
- if (query === 'ids') {
43
- return { ids };
44
- }
45
- return {
46
- ids: ids.filter(id => !isDisabled(id)),
47
- values: values.filter(({ id }) => !isDisabled(id))
48
- };
49
- }
50
- async save(id, raw) {
51
- const settings = json5.parse(raw);
52
- this._doNotSave.forEach(field => {
53
- if (settings['AIprovider'] !== undefined &&
54
- settings['AIprovider'][field] !== undefined &&
55
- settings['AIprovider'][field] !== '') {
56
- settings['AIprovider'][field] = SECRETS_REPLACEMENT;
57
- }
58
- });
59
- await this._connector.save(id, json5.stringify(settings, null, 2));
60
- }
61
- }
@@ -1,89 +0,0 @@
1
- import { PageConfig } from '@jupyterlab/coreutils';
2
- import {
3
- ISettingConnector,
4
- ISettingRegistry
5
- } from '@jupyterlab/settingregistry';
6
- import { DataConnector, IDataConnector } from '@jupyterlab/statedb';
7
- import { Throttler } from '@lumino/polling';
8
- import * as json5 from 'json5';
9
-
10
- import { SECRETS_REPLACEMENT } from '.';
11
-
12
- /**
13
- * A data connector for fetching settings.
14
- *
15
- * #### Notes
16
- * This connector adds a query parameter to the base services setting manager.
17
- */
18
- export class SettingConnector
19
- extends DataConnector<ISettingRegistry.IPlugin, string>
20
- implements ISettingConnector
21
- {
22
- constructor(connector: IDataConnector<ISettingRegistry.IPlugin, string>) {
23
- super();
24
- this._connector = connector;
25
- }
26
-
27
- set doNotSave(fields: string[]) {
28
- this._doNotSave = [...fields];
29
- }
30
-
31
- /**
32
- * Fetch settings for a plugin.
33
- * @param id - The plugin ID
34
- *
35
- * #### Notes
36
- * The REST API requests are throttled at one request per plugin per 100ms.
37
- */
38
- fetch(id: string): Promise<ISettingRegistry.IPlugin | undefined> {
39
- const throttlers = this._throttlers;
40
- if (!(id in throttlers)) {
41
- throttlers[id] = new Throttler(() => this._connector.fetch(id), 100);
42
- }
43
- return throttlers[id].invoke();
44
- }
45
-
46
- async list(query: 'ids'): Promise<{ ids: string[] }>;
47
- async list(
48
- query: 'active' | 'all'
49
- ): Promise<{ ids: string[]; values: ISettingRegistry.IPlugin[] }>;
50
- async list(
51
- query: 'active' | 'all' | 'ids' = 'all'
52
- ): Promise<{ ids: string[]; values?: ISettingRegistry.IPlugin[] }> {
53
- const { isDisabled } = PageConfig.Extension;
54
- const { ids, values } = await this._connector.list(
55
- query === 'ids' ? 'ids' : undefined
56
- );
57
-
58
- if (query === 'all') {
59
- return { ids, values };
60
- }
61
-
62
- if (query === 'ids') {
63
- return { ids };
64
- }
65
-
66
- return {
67
- ids: ids.filter(id => !isDisabled(id)),
68
- values: values.filter(({ id }) => !isDisabled(id))
69
- };
70
- }
71
-
72
- async save(id: string, raw: string): Promise<void> {
73
- const settings = json5.parse(raw);
74
- this._doNotSave.forEach(field => {
75
- if (
76
- settings['AIprovider'] !== undefined &&
77
- settings['AIprovider'][field] !== undefined &&
78
- settings['AIprovider'][field] !== ''
79
- ) {
80
- settings['AIprovider'][field] = SECRETS_REPLACEMENT;
81
- }
82
- });
83
- await this._connector.save(id, json5.stringify(settings, null, 2));
84
- }
85
-
86
- private _connector: IDataConnector<ISettingRegistry.IPlugin, string>;
87
- private _doNotSave: string[] = [];
88
- private _throttlers: { [key: string]: Throttler } = Object.create(null);
89
- }