@theia/ai-core 1.76.0-next.28 → 1.76.0-next.34
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/browser/ai-core-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-core-frontend-module.js +4 -0
- package/lib/browser/ai-core-frontend-module.js.map +1 -1
- package/lib/browser/discovering-provider-contribution.d.ts +92 -0
- package/lib/browser/discovering-provider-contribution.d.ts.map +1 -0
- package/lib/browser/discovering-provider-contribution.js +189 -0
- package/lib/browser/discovering-provider-contribution.js.map +1 -0
- package/lib/browser/discovering-provider-contribution.spec.d.ts +2 -0
- package/lib/browser/discovering-provider-contribution.spec.d.ts.map +1 -0
- package/lib/browser/discovering-provider-contribution.spec.js +232 -0
- package/lib/browser/discovering-provider-contribution.spec.js.map +1 -0
- package/lib/browser/favorite-models-service.d.ts +135 -0
- package/lib/browser/favorite-models-service.d.ts.map +1 -0
- package/lib/browser/favorite-models-service.js +279 -0
- package/lib/browser/favorite-models-service.js.map +1 -0
- package/lib/browser/favorite-models-service.spec.d.ts +2 -0
- package/lib/browser/favorite-models-service.spec.d.ts.map +1 -0
- package/lib/browser/favorite-models-service.spec.js +277 -0
- package/lib/browser/favorite-models-service.spec.js.map +1 -0
- package/lib/browser/index.d.ts +3 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +3 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/model-discovery-status-service.d.ts +51 -0
- package/lib/browser/model-discovery-status-service.d.ts.map +1 -0
- package/lib/browser/model-discovery-status-service.js +103 -0
- package/lib/browser/model-discovery-status-service.js.map +1 -0
- package/lib/browser/model-discovery-status-service.spec.d.ts +2 -0
- package/lib/browser/model-discovery-status-service.spec.d.ts.map +1 -0
- package/lib/browser/model-discovery-status-service.spec.js +81 -0
- package/lib/browser/model-discovery-status-service.spec.js.map +1 -0
- package/lib/common/ai-core-preferences.d.ts +11 -0
- package/lib/common/ai-core-preferences.d.ts.map +1 -1
- package/lib/common/ai-core-preferences.js +37 -1
- package/lib/common/ai-core-preferences.js.map +1 -1
- package/lib/common/index.d.ts +2 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +2 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/language-model-ordering.spec.d.ts +2 -0
- package/lib/common/language-model-ordering.spec.d.ts.map +1 -0
- package/lib/common/language-model-ordering.spec.js +72 -0
- package/lib/common/language-model-ordering.spec.js.map +1 -0
- package/lib/common/language-model-util.d.ts +17 -1
- package/lib/common/language-model-util.d.ts.map +1 -1
- package/lib/common/language-model-util.js +44 -1
- package/lib/common/language-model-util.js.map +1 -1
- package/lib/common/language-model.d.ts +5 -0
- package/lib/common/language-model.d.ts.map +1 -1
- package/lib/common/language-model.js.map +1 -1
- package/lib/common/model-discovery-status.d.ts +112 -0
- package/lib/common/model-discovery-status.d.ts.map +1 -0
- package/lib/common/model-discovery-status.js +18 -0
- package/lib/common/model-discovery-status.js.map +1 -0
- package/lib/common/model-discovery-util.d.ts +46 -0
- package/lib/common/model-discovery-util.d.ts.map +1 -0
- package/lib/common/model-discovery-util.js +128 -0
- package/lib/common/model-discovery-util.js.map +1 -0
- package/lib/common/model-discovery-util.spec.d.ts +2 -0
- package/lib/common/model-discovery-util.spec.d.ts.map +1 -0
- package/lib/common/model-discovery-util.spec.js +95 -0
- package/lib/common/model-discovery-util.spec.js.map +1 -0
- package/lib/node/ai-core-backend-module.d.ts.map +1 -1
- package/lib/node/ai-core-backend-module.js +8 -0
- package/lib/node/ai-core-backend-module.js.map +1 -1
- package/lib/node/backend-language-model-registry.d.ts.map +1 -1
- package/lib/node/backend-language-model-registry.js +1 -0
- package/lib/node/backend-language-model-registry.js.map +1 -1
- package/lib/node/index.d.ts +2 -0
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +2 -0
- package/lib/node/index.js.map +1 -1
- package/lib/node/model-discovery-fetcher.d.ts +43 -0
- package/lib/node/model-discovery-fetcher.d.ts.map +1 -0
- package/lib/node/model-discovery-fetcher.js +83 -0
- package/lib/node/model-discovery-fetcher.js.map +1 -0
- package/lib/node/model-snapshot-store.d.ts +26 -0
- package/lib/node/model-snapshot-store.d.ts.map +1 -0
- package/lib/node/model-snapshot-store.js +73 -0
- package/lib/node/model-snapshot-store.js.map +1 -0
- package/lib/node/test/test-model-discovery-fetcher.d.ts +21 -0
- package/lib/node/test/test-model-discovery-fetcher.d.ts.map +1 -0
- package/lib/node/test/test-model-discovery-fetcher.js +54 -0
- package/lib/node/test/test-model-discovery-fetcher.js.map +1 -0
- package/package.json +9 -9
- package/src/browser/ai-core-frontend-module.ts +5 -0
- package/src/browser/discovering-provider-contribution.spec.ts +303 -0
- package/src/browser/discovering-provider-contribution.ts +241 -0
- package/src/browser/favorite-models-service.spec.ts +336 -0
- package/src/browser/favorite-models-service.ts +297 -0
- package/src/browser/index.ts +3 -0
- package/src/browser/model-discovery-status-service.spec.ts +95 -0
- package/src/browser/model-discovery-status-service.ts +118 -0
- package/src/common/ai-core-preferences.ts +40 -0
- package/src/common/index.ts +2 -0
- package/src/common/language-model-ordering.spec.ts +83 -0
- package/src/common/language-model-util.ts +43 -0
- package/src/common/language-model.ts +5 -0
- package/src/common/model-discovery-status.ts +132 -0
- package/src/common/model-discovery-util.spec.ts +105 -0
- package/src/common/model-discovery-util.ts +129 -0
- package/src/node/ai-core-backend-module.ts +8 -0
- package/src/node/backend-language-model-registry.ts +1 -0
- package/src/node/index.ts +2 -0
- package/src/node/model-discovery-fetcher.ts +103 -0
- package/src/node/model-snapshot-store.ts +80 -0
- package/src/node/test/test-model-discovery-fetcher.ts +62 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const ai_core_preferences_1 = require("../common/ai-core-preferences");
|
|
20
|
+
const favorite_models_service_1 = require("./favorite-models-service");
|
|
21
|
+
function dated(id, released) {
|
|
22
|
+
return { id, released: Date.parse(released) };
|
|
23
|
+
}
|
|
24
|
+
function createService(statuses, marked = [], hidden = []) {
|
|
25
|
+
const service = new favorite_models_service_1.FavoriteModelsService();
|
|
26
|
+
const written = [];
|
|
27
|
+
const stored = {
|
|
28
|
+
[ai_core_preferences_1.PREFERENCE_NAME_FAVORITE_MODELS]: marked,
|
|
29
|
+
[ai_core_preferences_1.PREFERENCE_NAME_HIDDEN_MODELS]: hidden
|
|
30
|
+
};
|
|
31
|
+
const discoveryStatus = { getStatuses: () => statuses };
|
|
32
|
+
const preferenceService = {
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
get: ((name, defaultValue) => stored[name] ?? defaultValue),
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
set: (async (name, value) => { stored[name] = value; written.push(value); })
|
|
37
|
+
};
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
+
service.discoveryStatus = discoveryStatus;
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
service.preferenceService = preferenceService;
|
|
42
|
+
return { service, written, stored };
|
|
43
|
+
}
|
|
44
|
+
function status(overrides = {}) {
|
|
45
|
+
return { providerId: 'anthropic', label: 'Anthropic', state: 'ready', ...overrides };
|
|
46
|
+
}
|
|
47
|
+
describe('FavoriteModelsService', () => {
|
|
48
|
+
it('features the five most recently released undated models, never a release-pinned one', () => {
|
|
49
|
+
const { service } = createService([status({
|
|
50
|
+
discovered: [
|
|
51
|
+
dated('claude-opus-5', '2026-04-01'),
|
|
52
|
+
dated('claude-sonnet-5', '2026-02-01'),
|
|
53
|
+
dated('claude-haiku-4-5', '2025-10-01'),
|
|
54
|
+
dated('claude-fable-5', '2025-09-01'),
|
|
55
|
+
dated('claude-opus-4-8', '2025-08-01'),
|
|
56
|
+
dated('claude-opus-4-7', '2025-06-01'),
|
|
57
|
+
dated('claude-opus-5-20260401', '2026-04-01')
|
|
58
|
+
]
|
|
59
|
+
})]);
|
|
60
|
+
(0, chai_1.expect)(service.isFeatured('anthropic/claude-opus-5')).to.equal(true);
|
|
61
|
+
(0, chai_1.expect)(service.isFeatured('anthropic/claude-opus-4-8')).to.equal(true);
|
|
62
|
+
// The sixth-newest falls outside the featured set.
|
|
63
|
+
(0, chai_1.expect)(service.isFeatured('anthropic/claude-opus-4-7')).to.equal(false);
|
|
64
|
+
// A release-pinned id is never featured, however recent it is.
|
|
65
|
+
(0, chai_1.expect)(service.isFeatured('anthropic/claude-opus-5-20260401')).to.equal(false);
|
|
66
|
+
});
|
|
67
|
+
it('caps a provider that reports no release dates by the versions in its ids', () => {
|
|
68
|
+
const { service } = createService([status({
|
|
69
|
+
providerId: 'google',
|
|
70
|
+
discovered: [
|
|
71
|
+
{ id: 'gemini-2.0-pro' }, { id: 'gemini-2.5-flash' }, { id: 'gemini-2.5-pro' },
|
|
72
|
+
{ id: 'gemini-3.1-pro-preview' }, { id: 'gemini-3.5-flash' }, { id: 'gemini-3.7-flash' }
|
|
73
|
+
]
|
|
74
|
+
})]);
|
|
75
|
+
// The highest versions in the ids; the oldest of the six drops out.
|
|
76
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-3.7-flash')).to.equal(true);
|
|
77
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-2.5-pro')).to.equal(true);
|
|
78
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-2.0-pro')).to.equal(false);
|
|
79
|
+
});
|
|
80
|
+
it('features a `-latest` pointer ahead of the versioned ids it stands for', () => {
|
|
81
|
+
const { service } = createService([status({
|
|
82
|
+
providerId: 'google',
|
|
83
|
+
discovered: [
|
|
84
|
+
{ id: 'gemini-3.5-flash' }, { id: 'gemini-3.7-flash' }, { id: 'gemini-3.8-flash' },
|
|
85
|
+
{ id: 'gemini-3.1-pro-preview' }, { id: 'gemini-2.5-pro' }, { id: 'gemini-flash-latest' }
|
|
86
|
+
]
|
|
87
|
+
})]);
|
|
88
|
+
// The pointer carries no version, so without a rule of its own it would sort behind all of them.
|
|
89
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-flash-latest')).to.equal(true);
|
|
90
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-2.5-pro')).to.equal(false);
|
|
91
|
+
});
|
|
92
|
+
it('offers the pointers and the newest versions for a provider that reports no dates', () => {
|
|
93
|
+
const { service } = createService([status({
|
|
94
|
+
providerId: 'google',
|
|
95
|
+
discovered: [
|
|
96
|
+
{ id: 'gemini-flash-latest' }, { id: 'gemini-flash-lite-latest' }, { id: 'gemini-pro-latest' },
|
|
97
|
+
{ id: 'gemini-3.8-flash' }, { id: 'gemini-3.7-flash' }, { id: 'gemini-3.5-flash' },
|
|
98
|
+
{ id: 'gemini-3.1-pro-preview' }, { id: 'gemini-2.5-pro' }
|
|
99
|
+
]
|
|
100
|
+
})]);
|
|
101
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-pro-latest')).to.equal(true);
|
|
102
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-flash-latest')).to.equal(true);
|
|
103
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-flash-lite-latest')).to.equal(true);
|
|
104
|
+
// The pointers first, then the newest concrete models fill the rest.
|
|
105
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-3.8-flash')).to.equal(true);
|
|
106
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-3.7-flash')).to.equal(true);
|
|
107
|
+
(0, chai_1.expect)(service.isFeatured('google/gemini-3.1-pro-preview')).to.equal(false);
|
|
108
|
+
});
|
|
109
|
+
it('orders a `-latest` id by its release date where the provider reports one', () => {
|
|
110
|
+
const { service } = createService([status({
|
|
111
|
+
providerId: 'openAiOfficial',
|
|
112
|
+
modelIdPrefix: 'openai',
|
|
113
|
+
discovered: [
|
|
114
|
+
dated('gpt-5.6-sol', '2026-02-01'),
|
|
115
|
+
dated('gpt-5.5', '2025-11-01'),
|
|
116
|
+
dated('gpt-5.1', '2025-08-01'),
|
|
117
|
+
dated('gpt-5', '2025-06-01'),
|
|
118
|
+
dated('o4-mini', '2025-04-01'),
|
|
119
|
+
dated('chatgpt-4o-latest', '2024-08-01')
|
|
120
|
+
]
|
|
121
|
+
})]);
|
|
122
|
+
// A provider that dates its models dates its pointers too, so the pointer rule stays out of it.
|
|
123
|
+
(0, chai_1.expect)(service.isFeatured('openai/gpt-5.6-sol')).to.equal(true);
|
|
124
|
+
(0, chai_1.expect)(service.isFeatured('openai/o4-mini')).to.equal(true);
|
|
125
|
+
(0, chai_1.expect)(service.isFeatured('openai/chatgpt-4o-latest')).to.equal(false);
|
|
126
|
+
});
|
|
127
|
+
it('features what the provider reports as newest, whatever the model aliases name', () => {
|
|
128
|
+
const { service } = createService([status({
|
|
129
|
+
discovered: [
|
|
130
|
+
dated('claude-opus-5', '2026-04-01'),
|
|
131
|
+
dated('claude-sonnet-5', '2026-03-01'),
|
|
132
|
+
dated('claude-fable-5', '2026-02-01'),
|
|
133
|
+
dated('claude-opus-4-8', '2026-01-01'),
|
|
134
|
+
dated('claude-opus-4-7', '2025-12-01'),
|
|
135
|
+
// Named by the built-in aliases, and the oldest of the six: an alias is a curated list of
|
|
136
|
+
// its own, saying which model a purpose uses rather than which are worth offering here.
|
|
137
|
+
dated('claude-haiku-4-5', '2025-10-01')
|
|
138
|
+
]
|
|
139
|
+
})]);
|
|
140
|
+
(0, chai_1.expect)(service.isFeatured('anthropic/claude-opus-4-7')).to.equal(true);
|
|
141
|
+
(0, chai_1.expect)(service.isFeatured('anthropic/claude-haiku-4-5')).to.equal(false);
|
|
142
|
+
});
|
|
143
|
+
it('prunes the marked and hidden models that a successful discovery no longer offers', () => {
|
|
144
|
+
const { service, stored } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })], ['anthropic/claude-gone', 'openai/gpt-5.5'], ['anthropic/claude-also-gone', 'anthropic/claude-opus-5']);
|
|
145
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
146
|
+
service.pruneFavorites(status({ discovered: [dated('claude-opus-5', '2026-04-01')] }));
|
|
147
|
+
// Only the vanished models of that provider are dropped; another provider's stars are untouched.
|
|
148
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_FAVORITE_MODELS]).to.deep.equal(['openai/gpt-5.5']);
|
|
149
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_HIDDEN_MODELS]).to.deep.equal(['anthropic/claude-opus-5']);
|
|
150
|
+
});
|
|
151
|
+
it('keeps the marked models when the discovery did not actually reach the provider', () => {
|
|
152
|
+
const { service, written } = createService([], ['anthropic/claude-gone']);
|
|
153
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
154
|
+
const prune = (candidate) => service.pruneFavorites(candidate);
|
|
155
|
+
prune(status({ state: 'ready', fromCache: true, discovered: [] }));
|
|
156
|
+
prune(status({ state: 'error' }));
|
|
157
|
+
prune(status({ state: 'no-credentials' }));
|
|
158
|
+
prune(status({ state: 'ready', discovered: undefined }));
|
|
159
|
+
(0, chai_1.expect)(written).to.be.empty;
|
|
160
|
+
});
|
|
161
|
+
it('respects a provider that nominates its own models, as Copilot does across vendors', () => {
|
|
162
|
+
const { service } = createService([status({
|
|
163
|
+
providerId: 'copilot',
|
|
164
|
+
discovered: [
|
|
165
|
+
{ id: 'auto', featured: true },
|
|
166
|
+
{ id: 'gpt-5', featured: true },
|
|
167
|
+
{ id: 'claude-sonnet-4.5', featured: true },
|
|
168
|
+
{ id: 'gpt-4.1' },
|
|
169
|
+
{ id: 'claude-haiku-4' },
|
|
170
|
+
{ id: 'gemini-2.5-pro' }
|
|
171
|
+
]
|
|
172
|
+
})]);
|
|
173
|
+
(0, chai_1.expect)(service.isFeatured('copilot/auto')).to.equal(true);
|
|
174
|
+
(0, chai_1.expect)(service.isFeatured('copilot/claude-sonnet-4.5')).to.equal(true);
|
|
175
|
+
// Not nominated, and the generic "five newest" ranking does not apply where a provider nominated.
|
|
176
|
+
(0, chai_1.expect)(service.isFeatured('copilot/gpt-4.1')).to.equal(false);
|
|
177
|
+
(0, chai_1.expect)(service.isFeatured('copilot/gemini-2.5-pro')).to.equal(false);
|
|
178
|
+
});
|
|
179
|
+
it('offers exactly what a nominating provider nominated, and nothing beside it', () => {
|
|
180
|
+
const { service } = createService([status({
|
|
181
|
+
providerId: 'copilot',
|
|
182
|
+
discovered: [{ id: 'gpt-5', featured: true }, { id: 'claude-haiku-4' }]
|
|
183
|
+
})]);
|
|
184
|
+
(0, chai_1.expect)(service.isFeatured('copilot/gpt-5')).to.equal(true);
|
|
185
|
+
(0, chai_1.expect)(service.isFeatured('copilot/claude-haiku-4')).to.equal(false);
|
|
186
|
+
});
|
|
187
|
+
it('features a manually configured list in full', () => {
|
|
188
|
+
const { service } = createService([status({
|
|
189
|
+
state: 'overridden',
|
|
190
|
+
discovered: [{ id: 'a' }, { id: 'b' }, { id: 'c' }, { id: 'd' }, { id: 'e' }, { id: 'f' }]
|
|
191
|
+
})]);
|
|
192
|
+
(0, chai_1.expect)(service.isFeatured('anthropic/f')).to.equal(true);
|
|
193
|
+
});
|
|
194
|
+
it('honours the models the user marked', () => {
|
|
195
|
+
const { service } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01'), dated('claude-opus-4-7', '2024-06-01')] })], ['anthropic/claude-opus-5-20260401']);
|
|
196
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-opus-5-20260401')).to.equal(true);
|
|
197
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-opus-4-7')).to.equal(true); // featured, only two undated ids
|
|
198
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-unknown')).to.equal(false);
|
|
199
|
+
});
|
|
200
|
+
it('treats the models of a provider that does not participate in discovery as favorites', () => {
|
|
201
|
+
const { service } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })]);
|
|
202
|
+
// Manually configured providers (ollama, hugging face, …) and custom endpoints are the user's own list.
|
|
203
|
+
(0, chai_1.expect)(service.isFavorite('ollama/llama3')).to.equal(true);
|
|
204
|
+
(0, chai_1.expect)(service.isFavorite('my-custom-endpoint-model')).to.equal(true);
|
|
205
|
+
});
|
|
206
|
+
it('honours the model-id prefix when it differs from the provider id', () => {
|
|
207
|
+
const { service } = createService([status({
|
|
208
|
+
providerId: 'openAiOfficial',
|
|
209
|
+
modelIdPrefix: 'openai',
|
|
210
|
+
discovered: [dated('gpt-5.6-sol', '2026-02-01')]
|
|
211
|
+
})]);
|
|
212
|
+
(0, chai_1.expect)(service.isFeatured('openai/gpt-5.6-sol')).to.equal(true);
|
|
213
|
+
});
|
|
214
|
+
describe('resetToDefaults', () => {
|
|
215
|
+
it('drops what the user decided about one provider and leaves the others alone', async () => {
|
|
216
|
+
const { service, stored } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })], ['anthropic/claude-opus-4-7', 'openai/gpt-5.5'], ['anthropic/claude-opus-5', 'openai/gpt-5.6-sol']);
|
|
217
|
+
(0, chai_1.expect)(service.hasOverrides('anthropic')).to.equal(true);
|
|
218
|
+
await service.resetToDefaults('anthropic');
|
|
219
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_FAVORITE_MODELS]).to.deep.equal(['openai/gpt-5.5']);
|
|
220
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_HIDDEN_MODELS]).to.deep.equal(['openai/gpt-5.6-sol']);
|
|
221
|
+
(0, chai_1.expect)(service.hasOverrides('anthropic')).to.equal(false);
|
|
222
|
+
(0, chai_1.expect)(service.hasOverrides('openai')).to.equal(true);
|
|
223
|
+
// The provider is back to what it offers by default.
|
|
224
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-opus-5')).to.equal(true);
|
|
225
|
+
});
|
|
226
|
+
it('writes nothing when there is nothing to reset', async () => {
|
|
227
|
+
const { service, written } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })]);
|
|
228
|
+
(0, chai_1.expect)(service.hasOverrides('anthropic')).to.equal(false);
|
|
229
|
+
await service.resetToDefaults('anthropic');
|
|
230
|
+
(0, chai_1.expect)(written).to.be.empty;
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
describe('toggleFavorite', () => {
|
|
234
|
+
it('adds and removes an id the user can control', async () => {
|
|
235
|
+
const { service, written } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })], []);
|
|
236
|
+
await service.toggleFavorite('anthropic/claude-opus-5-20260401');
|
|
237
|
+
(0, chai_1.expect)(written[0]).to.deep.equal(['anthropic/claude-opus-5-20260401']);
|
|
238
|
+
const removing = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })], ['anthropic/claude-opus-5-20260401']);
|
|
239
|
+
await removing.service.toggleFavorite('anthropic/claude-opus-5-20260401');
|
|
240
|
+
(0, chai_1.expect)(removing.written[0]).to.deep.equal([]);
|
|
241
|
+
});
|
|
242
|
+
it('hides a model that is offered by default, storing only that', async () => {
|
|
243
|
+
const { service, stored } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })]);
|
|
244
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-opus-5')).to.equal(true);
|
|
245
|
+
await service.toggleFavorite('anthropic/claude-opus-5');
|
|
246
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_HIDDEN_MODELS]).to.deep.equal(['anthropic/claude-opus-5']);
|
|
247
|
+
// Featured all the same, it is only kept out of the picker.
|
|
248
|
+
(0, chai_1.expect)(service.isFeatured('anthropic/claude-opus-5')).to.equal(true);
|
|
249
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-opus-5')).to.equal(false);
|
|
250
|
+
// Nothing is written to the favorites: a model offered by default was never listed there.
|
|
251
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_FAVORITE_MODELS]).to.be.empty;
|
|
252
|
+
});
|
|
253
|
+
it('shows a hidden model again by dropping its entry', async () => {
|
|
254
|
+
const { service, stored } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })], [], ['anthropic/claude-opus-5']);
|
|
255
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-opus-5')).to.equal(false);
|
|
256
|
+
await service.toggleFavorite('anthropic/claude-opus-5');
|
|
257
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_HIDDEN_MODELS]).to.be.empty;
|
|
258
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_FAVORITE_MODELS]).to.be.empty;
|
|
259
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-opus-5')).to.equal(true);
|
|
260
|
+
});
|
|
261
|
+
it('marks a model that fell out of the featured set while it was hidden', async () => {
|
|
262
|
+
const { service, stored } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01'), dated('claude-opus-4-7', '2024-06-01')] })], [], ['anthropic/claude-opus-5-20260401']);
|
|
263
|
+
// Release-pinned, so never featured: dropping the entry alone would not bring it back.
|
|
264
|
+
await service.toggleFavorite('anthropic/claude-opus-5-20260401');
|
|
265
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_HIDDEN_MODELS]).to.be.empty;
|
|
266
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_FAVORITE_MODELS]).to.deep.equal(['anthropic/claude-opus-5-20260401']);
|
|
267
|
+
(0, chai_1.expect)(service.isFavorite('anthropic/claude-opus-5-20260401')).to.equal(true);
|
|
268
|
+
});
|
|
269
|
+
it('hides a model of a provider that does not participate in discovery', async () => {
|
|
270
|
+
const { service, stored } = createService([status({ discovered: [dated('claude-opus-5', '2026-04-01')] })]);
|
|
271
|
+
await service.toggleFavorite('ollama/llama3');
|
|
272
|
+
(0, chai_1.expect)(stored[ai_core_preferences_1.PREFERENCE_NAME_HIDDEN_MODELS]).to.deep.equal(['ollama/llama3']);
|
|
273
|
+
(0, chai_1.expect)(service.isFavorite('ollama/llama3')).to.equal(false);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
//# sourceMappingURL=favorite-models-service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"favorite-models-service.spec.js","sourceRoot":"","sources":["../../src/browser/favorite-models-service.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/browser/index.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export * from './ai-view-contribution';
|
|
|
12
12
|
export * from './frontend-language-model-registry';
|
|
13
13
|
export * from './frontend-language-model-alias-registry';
|
|
14
14
|
export * from './hide-ai-preferences-contribution';
|
|
15
|
+
export * from './model-discovery-status-service';
|
|
16
|
+
export * from './favorite-models-service';
|
|
17
|
+
export * from './discovering-provider-contribution';
|
|
15
18
|
export * from './frontend-variable-service';
|
|
16
19
|
export * from './prompttemplate-contribution';
|
|
17
20
|
export * from './theia-variable-contribution';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAgBA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qDAAqD,CAAC;AACpE,cAAc,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAgBA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qDAAqD,CAAC;AACpE,cAAc,gCAAgC,CAAC"}
|
package/lib/browser/index.js
CHANGED
|
@@ -30,6 +30,9 @@ tslib_1.__exportStar(require("./ai-view-contribution"), exports);
|
|
|
30
30
|
tslib_1.__exportStar(require("./frontend-language-model-registry"), exports);
|
|
31
31
|
tslib_1.__exportStar(require("./frontend-language-model-alias-registry"), exports);
|
|
32
32
|
tslib_1.__exportStar(require("./hide-ai-preferences-contribution"), exports);
|
|
33
|
+
tslib_1.__exportStar(require("./model-discovery-status-service"), exports);
|
|
34
|
+
tslib_1.__exportStar(require("./favorite-models-service"), exports);
|
|
35
|
+
tslib_1.__exportStar(require("./discovering-provider-contribution"), exports);
|
|
33
36
|
tslib_1.__exportStar(require("./frontend-variable-service"), exports);
|
|
34
37
|
tslib_1.__exportStar(require("./prompttemplate-contribution"), exports);
|
|
35
38
|
tslib_1.__exportStar(require("./theia-variable-contribution"), exports);
|
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uEAA6C;AAC7C,oEAA0C;AAC1C,iEAAuC;AACvC,kEAAwC;AACxC,uEAA6C;AAC7C,sFAA4D;AAC5D,oEAA0C;AAC1C,wEAA8C;AAC9C,gEAAsC;AACtC,0EAAgD;AAChD,iEAAuC;AACvC,6EAAmD;AACnD,mFAAyD;AACzD,6EAAmD;AACnD,sEAA4C;AAC5C,wEAA8C;AAC9C,wEAA8C;AAC9C,+EAAqD;AACrD,yEAA+C;AAC/C,0DAAgC;AAChC,qEAA2C;AAC3C,mEAAyC;AACzC,qEAA2C;AAC3C,sEAA4C;AAC5C,yEAA+C;AAC/C,2EAAiD;AACjD,uFAA6D;AAC7D,8FAAoE;AACpE,yEAA+C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uEAA6C;AAC7C,oEAA0C;AAC1C,iEAAuC;AACvC,kEAAwC;AACxC,uEAA6C;AAC7C,sFAA4D;AAC5D,oEAA0C;AAC1C,wEAA8C;AAC9C,gEAAsC;AACtC,0EAAgD;AAChD,iEAAuC;AACvC,6EAAmD;AACnD,mFAAyD;AACzD,6EAAmD;AACnD,2EAAiD;AACjD,oEAA0C;AAC1C,8EAAoD;AACpD,sEAA4C;AAC5C,wEAA8C;AAC9C,wEAA8C;AAC9C,+EAAqD;AACrD,yEAA+C;AAC/C,0DAAgC;AAChC,qEAA2C;AAC3C,mEAAyC;AACzC,qEAA2C;AAC3C,sEAA4C;AAC5C,yEAA+C;AAC/C,2EAAiD;AACjD,uFAA6D;AAC7D,8FAAoE;AACpE,yEAA+C"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Emitter, Event } from '@theia/core';
|
|
2
|
+
import { ModelDiscoveryStatus } from '../common/model-discovery-status';
|
|
3
|
+
/**
|
|
4
|
+
* A provider that participates in dynamic model discovery. Provider frontend contributions
|
|
5
|
+
* register a descriptor so the UI can display their {@link ModelDiscoveryStatus} and trigger
|
|
6
|
+
* a manual refresh.
|
|
7
|
+
*/
|
|
8
|
+
export interface ModelDiscoveryProviderDescriptor {
|
|
9
|
+
readonly providerId: string;
|
|
10
|
+
readonly label: string;
|
|
11
|
+
/** Prefix of this provider's registered model ids, if it differs from {@link providerId}. */
|
|
12
|
+
readonly modelIdPrefix?: string;
|
|
13
|
+
/** Triggers a manual re-fetch (used by the "Refresh"/"Retry" action). */
|
|
14
|
+
refresh(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Frontend registry of provider-level model-discovery status.
|
|
18
|
+
*
|
|
19
|
+
* Provider frontend contributions push their state here as they fetch models; the AI
|
|
20
|
+
* configuration UI observes {@link onDidChange} to render fetching/error/no-credentials state.
|
|
21
|
+
* This is the provider-level counterpart to the per-model `LanguageModelStatus`.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ModelDiscoveryStatusService {
|
|
24
|
+
protected readonly descriptors: Map<string, ModelDiscoveryProviderDescriptor>;
|
|
25
|
+
protected readonly statuses: Map<string, ModelDiscoveryStatus>;
|
|
26
|
+
protected readonly onDidChangeEmitter: Emitter<ModelDiscoveryStatus>;
|
|
27
|
+
/** Fired whenever a provider's status changes; the argument is the new status. */
|
|
28
|
+
readonly onDidChange: Event<ModelDiscoveryStatus>;
|
|
29
|
+
/**
|
|
30
|
+
* Register a provider. Idempotent: re-registering keeps any existing status and only
|
|
31
|
+
* updates the refresh callback and label.
|
|
32
|
+
*/
|
|
33
|
+
registerProvider(descriptor: ModelDiscoveryProviderDescriptor): void;
|
|
34
|
+
/**
|
|
35
|
+
* Update a provider's status. Only the provided fields are changed; the rest are carried
|
|
36
|
+
* over from the previous status. Passing `undefined` for an optional field explicitly clears it.
|
|
37
|
+
*/
|
|
38
|
+
updateStatus(providerId: string, update: Partial<Omit<ModelDiscoveryStatus, 'providerId'>>): void;
|
|
39
|
+
/**
|
|
40
|
+
* Reports a failed discovery run. Any step of a run can fail, including the ones that only talk to
|
|
41
|
+
* the backend, and nothing awaits the promise a rejection would travel on: a provider's startup
|
|
42
|
+
* does not, and a refresh button cannot act on it. What the previous state offered is cleared, so
|
|
43
|
+
* a failure does not keep reading like the state before it (a badge, a sign-in button).
|
|
44
|
+
*/
|
|
45
|
+
reportError(providerId: string, error: unknown): void;
|
|
46
|
+
getStatus(providerId: string): ModelDiscoveryStatus | undefined;
|
|
47
|
+
getStatuses(): ModelDiscoveryStatus[];
|
|
48
|
+
/** Trigger a manual refresh for the given provider, if it is registered. */
|
|
49
|
+
refresh(providerId: string): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=model-discovery-status-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-discovery-status-service.d.ts","sourceRoot":"","sources":["../../src/browser/model-discovery-status-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,yEAAyE;IACzE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,qBACa,2BAA2B;IAEpC,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAAuD;IACrF,SAAS,CAAC,QAAQ,CAAC,QAAQ,oCAA2C;IAEtE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gCAAuC;IAC5E,kFAAkF;IAClF,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAiC;IAElF;;;OAGG;IACH,gBAAgB,CAAC,UAAU,EAAE,gCAAgC,GAAG,IAAI;IAapE;;;OAGG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,GAAG,IAAI;IAkBjG;;;;;OAKG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IASrD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI/D,WAAW,IAAI,oBAAoB,EAAE;IAIrC,4EAA4E;IACtE,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ModelDiscoveryStatusService = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const core_1 = require("@theia/core");
|
|
21
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
22
|
+
/**
|
|
23
|
+
* Frontend registry of provider-level model-discovery status.
|
|
24
|
+
*
|
|
25
|
+
* Provider frontend contributions push their state here as they fetch models; the AI
|
|
26
|
+
* configuration UI observes {@link onDidChange} to render fetching/error/no-credentials state.
|
|
27
|
+
* This is the provider-level counterpart to the per-model `LanguageModelStatus`.
|
|
28
|
+
*/
|
|
29
|
+
let ModelDiscoveryStatusService = class ModelDiscoveryStatusService {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.descriptors = new Map();
|
|
32
|
+
this.statuses = new Map();
|
|
33
|
+
this.onDidChangeEmitter = new core_1.Emitter();
|
|
34
|
+
/** Fired whenever a provider's status changes; the argument is the new status. */
|
|
35
|
+
this.onDidChange = this.onDidChangeEmitter.event;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Register a provider. Idempotent: re-registering keeps any existing status and only
|
|
39
|
+
* updates the refresh callback and label.
|
|
40
|
+
*/
|
|
41
|
+
registerProvider(descriptor) {
|
|
42
|
+
this.descriptors.set(descriptor.providerId, descriptor);
|
|
43
|
+
if (!this.statuses.has(descriptor.providerId)) {
|
|
44
|
+
this.statuses.set(descriptor.providerId, {
|
|
45
|
+
providerId: descriptor.providerId,
|
|
46
|
+
label: descriptor.label,
|
|
47
|
+
modelIdPrefix: descriptor.modelIdPrefix,
|
|
48
|
+
state: 'idle'
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
this.onDidChangeEmitter.fire(this.statuses.get(descriptor.providerId));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Update a provider's status. Only the provided fields are changed; the rest are carried
|
|
55
|
+
* over from the previous status. Passing `undefined` for an optional field explicitly clears it.
|
|
56
|
+
*/
|
|
57
|
+
updateStatus(providerId, update) {
|
|
58
|
+
const previous = this.statuses.get(providerId);
|
|
59
|
+
const next = {
|
|
60
|
+
providerId,
|
|
61
|
+
label: update.label ?? previous?.label ?? providerId,
|
|
62
|
+
modelIdPrefix: 'modelIdPrefix' in update ? update.modelIdPrefix : previous?.modelIdPrefix,
|
|
63
|
+
state: update.state ?? previous?.state ?? 'idle',
|
|
64
|
+
stateLabel: 'stateLabel' in update ? update.stateLabel : previous?.stateLabel,
|
|
65
|
+
message: 'message' in update ? update.message : previous?.message,
|
|
66
|
+
lastFetch: 'lastFetch' in update ? update.lastFetch : previous?.lastFetch,
|
|
67
|
+
fromCache: 'fromCache' in update ? update.fromCache : previous?.fromCache,
|
|
68
|
+
discovered: 'discovered' in update ? update.discovered : previous?.discovered,
|
|
69
|
+
action: 'action' in update ? update.action : previous?.action
|
|
70
|
+
};
|
|
71
|
+
this.statuses.set(providerId, next);
|
|
72
|
+
this.onDidChangeEmitter.fire(next);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Reports a failed discovery run. Any step of a run can fail, including the ones that only talk to
|
|
76
|
+
* the backend, and nothing awaits the promise a rejection would travel on: a provider's startup
|
|
77
|
+
* does not, and a refresh button cannot act on it. What the previous state offered is cleared, so
|
|
78
|
+
* a failure does not keep reading like the state before it (a badge, a sign-in button).
|
|
79
|
+
*/
|
|
80
|
+
reportError(providerId, error) {
|
|
81
|
+
this.updateStatus(providerId, {
|
|
82
|
+
state: 'error',
|
|
83
|
+
stateLabel: undefined,
|
|
84
|
+
message: error instanceof Error ? error.message : String(error),
|
|
85
|
+
action: undefined
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
getStatus(providerId) {
|
|
89
|
+
return this.statuses.get(providerId);
|
|
90
|
+
}
|
|
91
|
+
getStatuses() {
|
|
92
|
+
return [...this.statuses.values()];
|
|
93
|
+
}
|
|
94
|
+
/** Trigger a manual refresh for the given provider, if it is registered. */
|
|
95
|
+
async refresh(providerId) {
|
|
96
|
+
await this.descriptors.get(providerId)?.refresh();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
exports.ModelDiscoveryStatusService = ModelDiscoveryStatusService;
|
|
100
|
+
exports.ModelDiscoveryStatusService = ModelDiscoveryStatusService = tslib_1.__decorate([
|
|
101
|
+
(0, inversify_1.injectable)()
|
|
102
|
+
], ModelDiscoveryStatusService);
|
|
103
|
+
//# sourceMappingURL=model-discovery-status-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-discovery-status-service.js","sourceRoot":"","sources":["../../src/browser/model-discovery-status-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,sCAA6C;AAC7C,4DAA0D;AAiB1D;;;;;;GAMG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAAjC;QAEgB,gBAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;QAClE,aAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;QAEnD,uBAAkB,GAAG,IAAI,cAAO,EAAwB,CAAC;QAC5E,kFAAkF;QACzE,gBAAW,GAAgC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAoEtF,CAAC;IAlEG;;;OAGG;IACH,gBAAgB,CAAC,UAA4C;QACzD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE;gBACrC,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,KAAK,EAAE,MAAM;aAChB,CAAC,CAAC;QACP,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAE,CAAC,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,UAAkB,EAAE,MAAyD;QACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAyB;YAC/B,UAAU;YACV,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,UAAU;YACpD,aAAa,EAAE,eAAe,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa;YACzF,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,MAAM;YAChD,UAAU,EAAE,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU;YAC7E,OAAO,EAAE,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO;YACjE,SAAS,EAAE,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS;YACzE,SAAS,EAAE,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS;YACzE,UAAU,EAAE,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU;YAC7E,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM;SAChE,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,UAAkB,EAAE,KAAc;QAC1C,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;YAC1B,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/D,MAAM,EAAE,SAAS;SACpB,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,UAAkB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,WAAW;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,OAAO,CAAC,UAAkB;QAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACtD,CAAC;CACJ,CAAA;AA3EY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,sBAAU,GAAE;GACA,2BAA2B,CA2EvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-discovery-status-service.spec.d.ts","sourceRoot":"","sources":["../../src/browser/model-discovery-status-service.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const model_discovery_status_service_1 = require("./model-discovery-status-service");
|
|
20
|
+
describe('ModelDiscoveryStatusService', () => {
|
|
21
|
+
it('registers a provider with an initial idle status', () => {
|
|
22
|
+
const service = new model_discovery_status_service_1.ModelDiscoveryStatusService();
|
|
23
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
24
|
+
const status = service.getStatus('anthropic');
|
|
25
|
+
(0, chai_1.expect)(status?.state).to.equal('idle');
|
|
26
|
+
(0, chai_1.expect)(status?.label).to.equal('Anthropic');
|
|
27
|
+
});
|
|
28
|
+
it('merges partial updates and fires onDidChange', () => {
|
|
29
|
+
const service = new model_discovery_status_service_1.ModelDiscoveryStatusService();
|
|
30
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
31
|
+
const events = [];
|
|
32
|
+
service.onDidChange(e => events.push(e));
|
|
33
|
+
service.updateStatus('anthropic', { state: 'fetching' });
|
|
34
|
+
service.updateStatus('anthropic', { state: 'ready', lastFetch: 123, fromCache: false });
|
|
35
|
+
const status = service.getStatus('anthropic');
|
|
36
|
+
(0, chai_1.expect)(status?.state).to.equal('ready');
|
|
37
|
+
(0, chai_1.expect)(status?.lastFetch).to.equal(123);
|
|
38
|
+
// label is carried over from registration.
|
|
39
|
+
(0, chai_1.expect)(status?.label).to.equal('Anthropic');
|
|
40
|
+
(0, chai_1.expect)(events.map(e => e.state)).to.deep.equal(['fetching', 'ready']);
|
|
41
|
+
});
|
|
42
|
+
it('does not reset an existing status when the provider is re-registered', () => {
|
|
43
|
+
const service = new model_discovery_status_service_1.ModelDiscoveryStatusService();
|
|
44
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
45
|
+
service.updateStatus('anthropic', { state: 'ready' });
|
|
46
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
47
|
+
(0, chai_1.expect)(service.getStatus('anthropic')?.state).to.equal('ready');
|
|
48
|
+
});
|
|
49
|
+
it('reports a failure and clears what the previous state offered', () => {
|
|
50
|
+
const service = new model_discovery_status_service_1.ModelDiscoveryStatusService();
|
|
51
|
+
service.registerProvider({ providerId: 'copilot', label: 'GitHub Copilot', refresh: async () => { } });
|
|
52
|
+
service.updateStatus('copilot', {
|
|
53
|
+
state: 'no-credentials',
|
|
54
|
+
stateLabel: 'Not signed in',
|
|
55
|
+
action: { label: 'Sign in', commandId: 'copilot.signIn' }
|
|
56
|
+
});
|
|
57
|
+
service.reportError('copilot', new Error('the CLI is not talking'));
|
|
58
|
+
const status = service.getStatus('copilot');
|
|
59
|
+
(0, chai_1.expect)(status?.state).to.equal('error');
|
|
60
|
+
(0, chai_1.expect)(status?.message).to.equal('the CLI is not talking');
|
|
61
|
+
// A failure must not keep reading like the state before it.
|
|
62
|
+
(0, chai_1.expect)(status?.stateLabel).to.equal(undefined);
|
|
63
|
+
(0, chai_1.expect)(status?.action).to.equal(undefined);
|
|
64
|
+
});
|
|
65
|
+
it('reports a rejection that is not an error', () => {
|
|
66
|
+
const service = new model_discovery_status_service_1.ModelDiscoveryStatusService();
|
|
67
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
68
|
+
service.reportError('anthropic', 'nope');
|
|
69
|
+
(0, chai_1.expect)(service.getStatus('anthropic')?.message).to.equal('nope');
|
|
70
|
+
});
|
|
71
|
+
it('delegates refresh to the registered provider', async () => {
|
|
72
|
+
const service = new model_discovery_status_service_1.ModelDiscoveryStatusService();
|
|
73
|
+
let refreshed = false;
|
|
74
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { refreshed = true; } });
|
|
75
|
+
await service.refresh('anthropic');
|
|
76
|
+
(0, chai_1.expect)(refreshed).to.be.true;
|
|
77
|
+
// Refreshing an unknown provider is a no-op and does not throw.
|
|
78
|
+
await service.refresh('unknown');
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=model-discovery-status-service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-discovery-status-service.spec.js","sourceRoot":"","sources":["../../src/browser/model-discovery-status-service.spec.ts"],"names":[],"mappings":"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"}
|