@theia/ai-core 1.76.0-next.7 → 1.76.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/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 +233 -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/frontend-language-model-alias-registry.js +1 -1
- package/lib/browser/frontend-language-model-service.d.ts.map +1 -1
- package/lib/browser/frontend-language-model-service.js +8 -0
- package/lib/browser/frontend-language-model-service.js.map +1 -1
- package/lib/browser/frontend-language-model-service.spec.d.ts +2 -0
- package/lib/browser/frontend-language-model-service.spec.d.ts.map +1 -0
- package/lib/browser/frontend-language-model-service.spec.js +76 -0
- package/lib/browser/frontend-language-model-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 +52 -0
- package/lib/browser/model-discovery-status-service.d.ts.map +1 -0
- package/lib/browser/model-discovery-status-service.js +110 -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 +86 -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 +21 -0
- package/lib/common/language-model.d.ts.map +1 -1
- package/lib/common/language-model.js +50 -1
- package/lib/common/language-model.js.map +1 -1
- package/lib/common/language-model.spec.js +36 -0
- package/lib/common/language-model.spec.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/common/prompt-service.js +3 -3
- package/lib/common/prompt-service.js.map +1 -1
- package/lib/common/prompt-service.spec.js +5 -0
- package/lib/common/prompt-service.spec.js.map +1 -1
- 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 +85 -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 +12 -12
- package/src/browser/ai-core-frontend-module.ts +5 -0
- package/src/browser/discovering-provider-contribution.spec.ts +304 -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/frontend-language-model-alias-registry.ts +1 -1
- package/src/browser/frontend-language-model-service.spec.ts +86 -0
- package/src/browser/frontend-language-model-service.ts +9 -1
- package/src/browser/index.ts +3 -0
- package/src/browser/model-discovery-status-service.spec.ts +101 -0
- package/src/browser/model-discovery-status-service.ts +123 -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.spec.ts +45 -0
- package/src/common/language-model.ts +54 -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/common/prompt-service.spec.ts +6 -0
- package/src/common/prompt-service.ts +3 -3
- 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 +105 -0
- package/src/node/model-snapshot-store.ts +80 -0
- package/src/node/test/test-model-discovery-fetcher.ts +62 -0
|
@@ -0,0 +1,110 @@
|
|
|
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
|
+
// A run can also fail on this side of the RPC boundary, where nothing else would record it.
|
|
82
|
+
this.logger.error(`Model discovery failed for provider '${providerId}':`, error);
|
|
83
|
+
this.updateStatus(providerId, {
|
|
84
|
+
state: 'error',
|
|
85
|
+
stateLabel: undefined,
|
|
86
|
+
message: error instanceof Error ? error.message : String(error),
|
|
87
|
+
action: undefined
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
getStatus(providerId) {
|
|
91
|
+
return this.statuses.get(providerId);
|
|
92
|
+
}
|
|
93
|
+
getStatuses() {
|
|
94
|
+
return [...this.statuses.values()];
|
|
95
|
+
}
|
|
96
|
+
/** Trigger a manual refresh for the given provider, if it is registered. */
|
|
97
|
+
async refresh(providerId) {
|
|
98
|
+
await this.descriptors.get(providerId)?.refresh();
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
exports.ModelDiscoveryStatusService = ModelDiscoveryStatusService;
|
|
102
|
+
tslib_1.__decorate([
|
|
103
|
+
(0, inversify_1.inject)(core_1.ILogger),
|
|
104
|
+
(0, inversify_1.named)('ai-core:ModelDiscoveryStatusService'),
|
|
105
|
+
tslib_1.__metadata("design:type", Object)
|
|
106
|
+
], ModelDiscoveryStatusService.prototype, "logger", void 0);
|
|
107
|
+
exports.ModelDiscoveryStatusService = ModelDiscoveryStatusService = tslib_1.__decorate([
|
|
108
|
+
(0, inversify_1.injectable)()
|
|
109
|
+
], ModelDiscoveryStatusService);
|
|
110
|
+
//# 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":"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"}
|
|
@@ -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,86 @@
|
|
|
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
|
+
const mock_logger_1 = require("@theia/core/lib/common/test/mock-logger");
|
|
21
|
+
/** The service logs a failed run, so a bare instance would have no logger to do it with. */
|
|
22
|
+
function createService() {
|
|
23
|
+
return Object.assign(new model_discovery_status_service_1.ModelDiscoveryStatusService(), { logger: new mock_logger_1.MockLogger() });
|
|
24
|
+
}
|
|
25
|
+
describe('ModelDiscoveryStatusService', () => {
|
|
26
|
+
it('registers a provider with an initial idle status', () => {
|
|
27
|
+
const service = createService();
|
|
28
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
29
|
+
const status = service.getStatus('anthropic');
|
|
30
|
+
(0, chai_1.expect)(status?.state).to.equal('idle');
|
|
31
|
+
(0, chai_1.expect)(status?.label).to.equal('Anthropic');
|
|
32
|
+
});
|
|
33
|
+
it('merges partial updates and fires onDidChange', () => {
|
|
34
|
+
const service = createService();
|
|
35
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
36
|
+
const events = [];
|
|
37
|
+
service.onDidChange(e => events.push(e));
|
|
38
|
+
service.updateStatus('anthropic', { state: 'fetching' });
|
|
39
|
+
service.updateStatus('anthropic', { state: 'ready', lastFetch: 123, fromCache: false });
|
|
40
|
+
const status = service.getStatus('anthropic');
|
|
41
|
+
(0, chai_1.expect)(status?.state).to.equal('ready');
|
|
42
|
+
(0, chai_1.expect)(status?.lastFetch).to.equal(123);
|
|
43
|
+
// label is carried over from registration.
|
|
44
|
+
(0, chai_1.expect)(status?.label).to.equal('Anthropic');
|
|
45
|
+
(0, chai_1.expect)(events.map(e => e.state)).to.deep.equal(['fetching', 'ready']);
|
|
46
|
+
});
|
|
47
|
+
it('does not reset an existing status when the provider is re-registered', () => {
|
|
48
|
+
const service = createService();
|
|
49
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
50
|
+
service.updateStatus('anthropic', { state: 'ready' });
|
|
51
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
52
|
+
(0, chai_1.expect)(service.getStatus('anthropic')?.state).to.equal('ready');
|
|
53
|
+
});
|
|
54
|
+
it('reports a failure and clears what the previous state offered', () => {
|
|
55
|
+
const service = createService();
|
|
56
|
+
service.registerProvider({ providerId: 'copilot', label: 'GitHub Copilot', refresh: async () => { } });
|
|
57
|
+
service.updateStatus('copilot', {
|
|
58
|
+
state: 'no-credentials',
|
|
59
|
+
stateLabel: 'Not signed in',
|
|
60
|
+
action: { label: 'Sign in', commandId: 'copilot.signIn' }
|
|
61
|
+
});
|
|
62
|
+
service.reportError('copilot', new Error('the CLI is not talking'));
|
|
63
|
+
const status = service.getStatus('copilot');
|
|
64
|
+
(0, chai_1.expect)(status?.state).to.equal('error');
|
|
65
|
+
(0, chai_1.expect)(status?.message).to.equal('the CLI is not talking');
|
|
66
|
+
// A failure must not keep reading like the state before it.
|
|
67
|
+
(0, chai_1.expect)(status?.stateLabel).to.equal(undefined);
|
|
68
|
+
(0, chai_1.expect)(status?.action).to.equal(undefined);
|
|
69
|
+
});
|
|
70
|
+
it('reports a rejection that is not an error', () => {
|
|
71
|
+
const service = createService();
|
|
72
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { } });
|
|
73
|
+
service.reportError('anthropic', 'nope');
|
|
74
|
+
(0, chai_1.expect)(service.getStatus('anthropic')?.message).to.equal('nope');
|
|
75
|
+
});
|
|
76
|
+
it('delegates refresh to the registered provider', async () => {
|
|
77
|
+
const service = createService();
|
|
78
|
+
let refreshed = false;
|
|
79
|
+
service.registerProvider({ providerId: 'anthropic', label: 'Anthropic', refresh: async () => { refreshed = true; } });
|
|
80
|
+
await service.refresh('anthropic');
|
|
81
|
+
(0, chai_1.expect)(refreshed).to.be.true;
|
|
82
|
+
// Refreshing an unknown provider is a no-op and does not throw.
|
|
83
|
+
await service.refresh('unknown');
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# 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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"}
|
|
@@ -12,6 +12,14 @@ export declare const AI_CORE_PREFERENCES_TITLE: string;
|
|
|
12
12
|
* `typeDetails: { [MODEL_PROVIDER_TYPE_DETAIL]: 'Anthropic' }`.
|
|
13
13
|
*/
|
|
14
14
|
export declare const MODEL_PROVIDER_TYPE_DETAIL = "aiModelProvider";
|
|
15
|
+
/**
|
|
16
|
+
* Key under a preference's schema `typeDetails` marking a preference that the AI Configuration view
|
|
17
|
+
* edits through a dedicated control of its own, so it should not also appear as a raw settings row.
|
|
18
|
+
* The value stays a plain preference, editable in `settings.json` like any other; it is only the
|
|
19
|
+
* duplicate, less legible editor that is left out. Declare it as
|
|
20
|
+
* `typeDetails: { [DEDICATED_EDITOR_TYPE_DETAIL]: true }`.
|
|
21
|
+
*/
|
|
22
|
+
export declare const DEDICATED_EDITOR_TYPE_DETAIL = "aiDedicatedEditor";
|
|
15
23
|
/**
|
|
16
24
|
* Shape a language-model provider stores under a preference's `typeDetails[MODEL_PROVIDER_TYPE_DETAIL]`
|
|
17
25
|
* to describe its `ai-features.<provider>.*` block to the AI Configuration view's Models page. Declared
|
|
@@ -25,6 +33,8 @@ export declare const PREFERENCE_NAME_PROMPT_TEMPLATES = "ai-features.promptTempl
|
|
|
25
33
|
export declare const PREFERENCE_NAME_REQUEST_SETTINGS = "ai-features.modelSettings.requestSettings";
|
|
26
34
|
export declare const PREFERENCE_NAME_REASONING = "ai-features.reasoning.defaults";
|
|
27
35
|
export declare const PREFERENCE_NAME_MAX_RETRIES = "ai-features.modelSettings.maxRetries";
|
|
36
|
+
export declare const PREFERENCE_NAME_FAVORITE_MODELS = "ai-features.modelSettings.favoriteModels";
|
|
37
|
+
export declare const PREFERENCE_NAME_HIDDEN_MODELS = "ai-features.modelSettings.hiddenModels";
|
|
28
38
|
export declare const PREFERENCE_NAME_DEFAULT_NOTIFICATION_TYPE = "ai-features.notifications.default";
|
|
29
39
|
export declare const PREFERENCE_NAME_SKILL_DIRECTORIES = "ai-features.skills.skillDirectories";
|
|
30
40
|
export declare const PREFERENCE_NAME_SERVER_SIDE_COMPACTION = "ai-features.chat.serverSideCompaction";
|
|
@@ -36,6 +46,7 @@ export interface AICoreConfiguration {
|
|
|
36
46
|
[PREFERENCE_NAME_REQUEST_SETTINGS]: Array<RequestSetting> | undefined;
|
|
37
47
|
[PREFERENCE_NAME_REASONING]: Array<ReasoningPreferenceEntry> | undefined;
|
|
38
48
|
[PREFERENCE_NAME_MAX_RETRIES]: number | undefined;
|
|
49
|
+
[PREFERENCE_NAME_FAVORITE_MODELS]: string[] | undefined;
|
|
39
50
|
[PREFERENCE_NAME_DEFAULT_NOTIFICATION_TYPE]: NotificationType | undefined;
|
|
40
51
|
[PREFERENCE_NAME_SKILL_DIRECTORIES]: string[] | undefined;
|
|
41
52
|
[PREFERENCE_NAME_SERVER_SIDE_COMPACTION]: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-core-preferences.d.ts","sourceRoot":"","sources":["../../src/common/ai-core-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAKH,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAkD,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAExF,eAAO,MAAM,yBAAyB,QAAiE,CAAC;AAExG;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACpC,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;CACjB;AACD,eAAO,MAAM,gCAAgC,sDAAsD,CAAC;AACpG,eAAO,MAAM,gCAAgC,8CAA8C,CAAC;AAC5F,eAAO,MAAM,yBAAyB,mCAAmC,CAAC;AAC1E,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAClF,eAAO,MAAM,yCAAyC,sCAAsC,CAAC;AAC7F,eAAO,MAAM,iCAAiC,wCAAwC,CAAC;AACvF,eAAO,MAAM,sCAAsC,0CAA0C,CAAC;AAC9F,eAAO,MAAM,sDAAsD,wDAAwD,CAAC;AAE5H,eAAO,MAAM,iCAAiC,qCAAqC,CAAC;AAEpF,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-core-preferences.d.ts","sourceRoot":"","sources":["../../src/common/ai-core-preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.getRequestSettingSpecificity = exports.AICorePreferences = exports.aiCorePreferenceSchema = exports.LANGUAGE_MODEL_ALIASES_PREFERENCE = exports.PREFERENCE_NAME_SERVER_SIDE_COMPACTION_TOKEN_THRESHOLD = exports.PREFERENCE_NAME_SERVER_SIDE_COMPACTION = exports.PREFERENCE_NAME_SKILL_DIRECTORIES = exports.PREFERENCE_NAME_DEFAULT_NOTIFICATION_TYPE = exports.PREFERENCE_NAME_MAX_RETRIES = exports.PREFERENCE_NAME_REASONING = exports.PREFERENCE_NAME_REQUEST_SETTINGS = exports.PREFERENCE_NAME_PROMPT_TEMPLATES = exports.MODEL_PROVIDER_TYPE_DETAIL = exports.AI_CORE_PREFERENCES_TITLE = void 0;
|
|
18
|
+
exports.getRequestSettingSpecificity = exports.AICorePreferences = exports.aiCorePreferenceSchema = exports.LANGUAGE_MODEL_ALIASES_PREFERENCE = exports.PREFERENCE_NAME_SERVER_SIDE_COMPACTION_TOKEN_THRESHOLD = exports.PREFERENCE_NAME_SERVER_SIDE_COMPACTION = exports.PREFERENCE_NAME_SKILL_DIRECTORIES = exports.PREFERENCE_NAME_DEFAULT_NOTIFICATION_TYPE = exports.PREFERENCE_NAME_HIDDEN_MODELS = exports.PREFERENCE_NAME_FAVORITE_MODELS = exports.PREFERENCE_NAME_MAX_RETRIES = exports.PREFERENCE_NAME_REASONING = exports.PREFERENCE_NAME_REQUEST_SETTINGS = exports.PREFERENCE_NAME_PROMPT_TEMPLATES = exports.DEDICATED_EDITOR_TYPE_DETAIL = exports.MODEL_PROVIDER_TYPE_DETAIL = exports.AI_CORE_PREFERENCES_TITLE = void 0;
|
|
19
19
|
exports.bindAICorePreferences = bindAICorePreferences;
|
|
20
20
|
const core_1 = require("@theia/core");
|
|
21
21
|
const notification_types_1 = require("./notification-types");
|
|
@@ -29,10 +29,20 @@ exports.AI_CORE_PREFERENCES_TITLE = core_1.nls.localize('theia/ai-core/preferenc
|
|
|
29
29
|
* `typeDetails: { [MODEL_PROVIDER_TYPE_DETAIL]: 'Anthropic' }`.
|
|
30
30
|
*/
|
|
31
31
|
exports.MODEL_PROVIDER_TYPE_DETAIL = 'aiModelProvider';
|
|
32
|
+
/**
|
|
33
|
+
* Key under a preference's schema `typeDetails` marking a preference that the AI Configuration view
|
|
34
|
+
* edits through a dedicated control of its own, so it should not also appear as a raw settings row.
|
|
35
|
+
* The value stays a plain preference, editable in `settings.json` like any other; it is only the
|
|
36
|
+
* duplicate, less legible editor that is left out. Declare it as
|
|
37
|
+
* `typeDetails: { [DEDICATED_EDITOR_TYPE_DETAIL]: true }`.
|
|
38
|
+
*/
|
|
39
|
+
exports.DEDICATED_EDITOR_TYPE_DETAIL = 'aiDedicatedEditor';
|
|
32
40
|
exports.PREFERENCE_NAME_PROMPT_TEMPLATES = 'ai-features.promptTemplates.promptTemplatesFolder';
|
|
33
41
|
exports.PREFERENCE_NAME_REQUEST_SETTINGS = 'ai-features.modelSettings.requestSettings';
|
|
34
42
|
exports.PREFERENCE_NAME_REASONING = 'ai-features.reasoning.defaults';
|
|
35
43
|
exports.PREFERENCE_NAME_MAX_RETRIES = 'ai-features.modelSettings.maxRetries';
|
|
44
|
+
exports.PREFERENCE_NAME_FAVORITE_MODELS = 'ai-features.modelSettings.favoriteModels';
|
|
45
|
+
exports.PREFERENCE_NAME_HIDDEN_MODELS = 'ai-features.modelSettings.hiddenModels';
|
|
36
46
|
exports.PREFERENCE_NAME_DEFAULT_NOTIFICATION_TYPE = 'ai-features.notifications.default';
|
|
37
47
|
exports.PREFERENCE_NAME_SKILL_DIRECTORIES = 'ai-features.skills.skillDirectories';
|
|
38
48
|
exports.PREFERENCE_NAME_SERVER_SIDE_COMPACTION = 'ai-features.chat.serverSideCompaction';
|
|
@@ -142,6 +152,32 @@ exports.aiCorePreferenceSchema = {
|
|
|
142
152
|
minimum: 0,
|
|
143
153
|
default: 3
|
|
144
154
|
},
|
|
155
|
+
[exports.PREFERENCE_NAME_FAVORITE_MODELS]: {
|
|
156
|
+
title: core_1.nls.localize('theia/ai/core/favoriteModels/title', 'Favorite Models'),
|
|
157
|
+
markdownDescription: core_1.nls.localize('theia/ai/core/favoriteModels/mdDescription', 'Models the AI chat input\'s model picker shows in addition to the newest ones of each provider, as fully qualified ids '
|
|
158
|
+
+ '(e.g. `anthropic/claude-opus-5`). This is for keeping an older or release-pinned model at hand. Check a model on its '
|
|
159
|
+
+ 'provider\'s page in the AI Configuration view to add it.'),
|
|
160
|
+
type: 'array',
|
|
161
|
+
// The provider pages check models one by one; a second, raw editor for the same ids would
|
|
162
|
+
// invite typos and disagree with what the checks say.
|
|
163
|
+
typeDetails: { [exports.DEDICATED_EDITOR_TYPE_DETAIL]: true },
|
|
164
|
+
items: {
|
|
165
|
+
type: 'string'
|
|
166
|
+
},
|
|
167
|
+
default: []
|
|
168
|
+
},
|
|
169
|
+
[exports.PREFERENCE_NAME_HIDDEN_MODELS]: {
|
|
170
|
+
title: core_1.nls.localizeByDefault('Hidden Models'),
|
|
171
|
+
markdownDescription: core_1.nls.localize('theia/ai/core/hiddenModels/mdDescription', 'Models the AI chat input\'s model picker does not show even though it would by default, as fully qualified ids '
|
|
172
|
+
+ '(e.g. `google/gemini-flash-lite-latest`). Only the models shown without being listed as a favorite end up here, '
|
|
173
|
+
+ 'i.e. the newest ones of a provider. Uncheck a model on its provider\'s page in the AI Configuration view to add it.'),
|
|
174
|
+
type: 'array',
|
|
175
|
+
typeDetails: { [exports.DEDICATED_EDITOR_TYPE_DETAIL]: true },
|
|
176
|
+
items: {
|
|
177
|
+
type: 'string'
|
|
178
|
+
},
|
|
179
|
+
default: []
|
|
180
|
+
},
|
|
145
181
|
[exports.PREFERENCE_NAME_DEFAULT_NOTIFICATION_TYPE]: {
|
|
146
182
|
title: core_1.nls.localize('theia/ai/core/defaultNotification/title', 'Default Notification Type'),
|
|
147
183
|
markdownDescription: core_1.nls.localize('theia/ai/core/defaultNotification/mdDescription', 'The default notification method used when an AI agent needs your attention, i.e. it completed a task or requests your input. '
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-core-preferences.js","sourceRoot":"","sources":["../../src/common/ai-core-preferences.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;;;
|
|
1
|
+
{"version":3,"file":"ai-core-preferences.js","sourceRoot":"","sources":["../../src/common/ai-core-preferences.ts"],"names":[],"mappings":"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"}
|
package/lib/common/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export * from './language-model-delegate';
|
|
|
7
7
|
export * from './language-model-util';
|
|
8
8
|
export * from './language-model';
|
|
9
9
|
export * from './language-model-alias';
|
|
10
|
+
export * from './model-discovery-status';
|
|
11
|
+
export * from './model-discovery-util';
|
|
10
12
|
export * from './prompt-service';
|
|
11
13
|
export * from './prompt-service-util';
|
|
12
14
|
export * from './proxy-util';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAeA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAE7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAeA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAE7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
package/lib/common/index.js
CHANGED
|
@@ -25,6 +25,8 @@ tslib_1.__exportStar(require("./language-model-delegate"), exports);
|
|
|
25
25
|
tslib_1.__exportStar(require("./language-model-util"), exports);
|
|
26
26
|
tslib_1.__exportStar(require("./language-model"), exports);
|
|
27
27
|
tslib_1.__exportStar(require("./language-model-alias"), exports);
|
|
28
|
+
tslib_1.__exportStar(require("./model-discovery-status"), exports);
|
|
29
|
+
tslib_1.__exportStar(require("./model-discovery-util"), exports);
|
|
28
30
|
tslib_1.__exportStar(require("./prompt-service"), exports);
|
|
29
31
|
tslib_1.__exportStar(require("./prompt-service-util"), exports);
|
|
30
32
|
tslib_1.__exportStar(require("./proxy-util"), exports);
|
package/lib/common/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/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;AAChF,0DAAgC;AAChC,kDAAwB;AACxB,yEAA+C;AAC/C,gEAAsC;AACtC,qEAA2C;AAC3C,oEAA0C;AAC1C,gEAAsC;AACtC,2DAAiC;AACjC,iEAAuC;AACvC,2DAAiC;AACjC,gEAAsC;AACtC,uDAA6B;AAE7B,wDAA8B;AAC9B,qDAA2B;AAC3B,wEAA8C;AAC9C,6DAAmC;AACnC,6DAAmC;AACnC,qEAA2C;AAC3C,mEAAyC;AACzC,gEAAsC;AACtC,iEAAuC;AACvC,6EAAmD;AACnD,+DAAqC;AACrC,kDAAwB;AACxB,wDAA8B;AAC9B,6DAAmC;AACnC,2DAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/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;AAChF,0DAAgC;AAChC,kDAAwB;AACxB,yEAA+C;AAC/C,gEAAsC;AACtC,qEAA2C;AAC3C,oEAA0C;AAC1C,gEAAsC;AACtC,2DAAiC;AACjC,iEAAuC;AACvC,mEAAyC;AACzC,iEAAuC;AACvC,2DAAiC;AACjC,gEAAsC;AACtC,uDAA6B;AAE7B,wDAA8B;AAC9B,qDAA2B;AAC3B,wEAA8C;AAC9C,6DAAmC;AACnC,6DAAmC;AACnC,qEAA2C;AAC3C,mEAAyC;AACzC,gEAAsC;AACtC,iEAAuC;AACvC,6EAAmD;AACnD,+DAAqC;AACrC,kDAAwB;AACxB,wDAA8B;AAC9B,6DAAmC;AACnC,2DAAiC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-model-ordering.spec.d.ts","sourceRoot":"","sources":["../../src/common/language-model-ordering.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
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 language_model_util_1 = require("./language-model-util");
|
|
20
|
+
function model(id, released, vendor) {
|
|
21
|
+
return { id, released, vendor, status: { status: 'ready' } };
|
|
22
|
+
}
|
|
23
|
+
describe('compareModelsByRecency', () => {
|
|
24
|
+
it('puts the most recently released model first', () => {
|
|
25
|
+
const sorted = [
|
|
26
|
+
model('anthropic/claude-haiku-4-5', Date.parse('2025-10-01')),
|
|
27
|
+
model('anthropic/claude-opus-5', Date.parse('2026-04-01'))
|
|
28
|
+
].sort(language_model_util_1.compareModelsByRecency);
|
|
29
|
+
(0, chai_1.expect)(sorted.map(entry => entry.id)).to.deep.equal(['anthropic/claude-opus-5', 'anthropic/claude-haiku-4-5']);
|
|
30
|
+
});
|
|
31
|
+
it('falls back to the id when no release date is reported, as for Gemini', () => {
|
|
32
|
+
const sorted = [model('google/gemini-3.7-flash'), model('google/gemini-3.1-pro')].sort(language_model_util_1.compareModelsByRecency);
|
|
33
|
+
(0, chai_1.expect)(sorted.map(entry => entry.id)).to.deep.equal(['google/gemini-3.1-pro', 'google/gemini-3.7-flash']);
|
|
34
|
+
});
|
|
35
|
+
it('sorts a model without a reported date after the dated ones rather than to the top', () => {
|
|
36
|
+
const sorted = [
|
|
37
|
+
model('openai/undated'),
|
|
38
|
+
model('openai/dated', Date.parse('2020-01-01'))
|
|
39
|
+
].sort(language_model_util_1.compareModelsByRecency);
|
|
40
|
+
(0, chai_1.expect)(sorted.map(entry => entry.id)).to.deep.equal(['openai/dated', 'openai/undated']);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe('providerOf', () => {
|
|
44
|
+
it('prefers the declared vendor', () => {
|
|
45
|
+
(0, chai_1.expect)((0, language_model_util_1.providerOf)(model('openai/gpt-5.5', undefined, 'openai'))).to.equal('openai');
|
|
46
|
+
});
|
|
47
|
+
it('falls back to the id prefix', () => {
|
|
48
|
+
(0, chai_1.expect)((0, language_model_util_1.providerOf)(model('anthropic/claude-opus-5'))).to.equal('anthropic');
|
|
49
|
+
});
|
|
50
|
+
it('yields an empty provider for an unprefixed id, e.g. a custom endpoint', () => {
|
|
51
|
+
(0, chai_1.expect)((0, language_model_util_1.providerOf)(model('my-local-model'))).to.equal('');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('groupModelsByProvider', () => {
|
|
55
|
+
it('groups by provider, ordering the groups by name and their models by recency', () => {
|
|
56
|
+
const groups = (0, language_model_util_1.groupModelsByProvider)([
|
|
57
|
+
model('openai/gpt-5.5', Date.parse('2025-08-01')),
|
|
58
|
+
model('anthropic/claude-haiku-4-5', Date.parse('2025-10-01')),
|
|
59
|
+
model('openai/gpt-5.6-sol', Date.parse('2026-02-01')),
|
|
60
|
+
model('anthropic/claude-opus-5', Date.parse('2026-04-01'))
|
|
61
|
+
]);
|
|
62
|
+
(0, chai_1.expect)(groups.map(group => group.provider)).to.deep.equal(['anthropic', 'openai']);
|
|
63
|
+
(0, chai_1.expect)(groups[0].models.map(entry => entry.id)).to.deep.equal(['anthropic/claude-opus-5', 'anthropic/claude-haiku-4-5']);
|
|
64
|
+
(0, chai_1.expect)(groups[1].models.map(entry => entry.id)).to.deep.equal(['openai/gpt-5.6-sol', 'openai/gpt-5.5']);
|
|
65
|
+
});
|
|
66
|
+
it('leaves the input untouched', () => {
|
|
67
|
+
const models = [model('b/second'), model('a/first')];
|
|
68
|
+
(0, language_model_util_1.groupModelsByProvider)(models);
|
|
69
|
+
(0, chai_1.expect)(models.map(entry => entry.id)).to.deep.equal(['b/second', 'a/first']);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=language-model-ordering.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-model-ordering.spec.js","sourceRoot":"","sources":["../../src/common/language-model-ordering.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModelResponse, ToolRequest } from './language-model';
|
|
1
|
+
import { LanguageModelMetaData, LanguageModelResponse, ToolRequest } from './language-model';
|
|
2
2
|
import { LanguageModelMonitoredStreamResponse } from './language-model-interaction-model';
|
|
3
3
|
/**
|
|
4
4
|
* Retrieves the text content from a `LanguageModelResponse` object.
|
|
@@ -14,4 +14,20 @@ export declare const getTextOfResponse: (response: LanguageModelResponse | Langu
|
|
|
14
14
|
export declare const getJsonOfResponse: (response: LanguageModelResponse | LanguageModelMonitoredStreamResponse) => Promise<unknown>;
|
|
15
15
|
export declare const getJsonOfText: (text: string) => unknown;
|
|
16
16
|
export declare const toolRequestToPromptText: (toolRequest: ToolRequest) => string;
|
|
17
|
+
/**
|
|
18
|
+
* Orders models for the lists a user picks from: newest first, since a provider's newest model is
|
|
19
|
+
* almost always the one being looked for, with the id as the tie-break so that models whose provider
|
|
20
|
+
* reports no release date (Gemini reports none) still come out in a stable, readable order.
|
|
21
|
+
*/
|
|
22
|
+
export declare const compareModelsByRecency: (left: LanguageModelMetaData, right: LanguageModelMetaData) => number;
|
|
23
|
+
/**
|
|
24
|
+
* The provider a model belongs to: its declared vendor, falling back to the `<provider>/` prefix of
|
|
25
|
+
* its id. Used to group the model lists so that a provider's models stay together.
|
|
26
|
+
*/
|
|
27
|
+
export declare const providerOf: (model: LanguageModelMetaData) => string;
|
|
28
|
+
/** Groups models by {@link providerOf}, each group ordered by {@link compareModelsByRecency}, groups by provider name. */
|
|
29
|
+
export declare const groupModelsByProvider: <T extends LanguageModelMetaData>(models: T[]) => Array<{
|
|
30
|
+
provider: string;
|
|
31
|
+
models: T[];
|
|
32
|
+
}>;
|
|
17
33
|
//# sourceMappingURL=language-model-util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-model-util.d.ts","sourceRoot":"","sources":["../../src/common/language-model-util.ts"],"names":[],"mappings":"AAgBA,OAAO,EAKH,qBAAqB,EACrB,WAAW,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAE1F;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAU,UAAU,qBAAqB,GAAG,oCAAoC,KAAG,OAAO,CAAC,MAAM,CAoB9H,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,UAAU,qBAAqB,GAAG,oCAAoC,KAAG,OAAO,CAAC,OAAO,CAG/H,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAgB5C,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,aAAa,WAAW,KAAG,MAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"language-model-util.d.ts","sourceRoot":"","sources":["../../src/common/language-model-util.ts"],"names":[],"mappings":"AAgBA,OAAO,EAKH,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAE1F;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAU,UAAU,qBAAqB,GAAG,oCAAoC,KAAG,OAAO,CAAC,MAAM,CAoB9H,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,UAAU,qBAAqB,GAAG,oCAAoC,KAAG,OAAO,CAAC,OAAO,CAG/H,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAgB5C,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,aAAa,WAAW,KAAG,MAA6B,CAAC;AAEjG;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,qBAAqB,EAAE,OAAO,qBAAqB,KAAG,MAMlG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,qBAAqB,KAAG,MAMzD,CAAC;AAEF,0HAA0H;AAC1H,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,qBAAqB,EAAE,QAAQ,CAAC,EAAE,KAAG,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,CAAA;CAAE,CAc3H,CAAC"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.toolRequestToPromptText = exports.getJsonOfText = exports.getJsonOfResponse = exports.getTextOfResponse = void 0;
|
|
18
|
+
exports.groupModelsByProvider = exports.providerOf = exports.compareModelsByRecency = exports.toolRequestToPromptText = exports.getJsonOfText = exports.getJsonOfResponse = exports.getTextOfResponse = void 0;
|
|
19
19
|
const language_model_1 = require("./language-model");
|
|
20
20
|
/**
|
|
21
21
|
* Retrieves the text content from a `LanguageModelResponse` object.
|
|
@@ -79,4 +79,47 @@ const getJsonOfText = (text) => {
|
|
|
79
79
|
exports.getJsonOfText = getJsonOfText;
|
|
80
80
|
const toolRequestToPromptText = (toolRequest) => `${toolRequest.id}`;
|
|
81
81
|
exports.toolRequestToPromptText = toolRequestToPromptText;
|
|
82
|
+
/**
|
|
83
|
+
* Orders models for the lists a user picks from: newest first, since a provider's newest model is
|
|
84
|
+
* almost always the one being looked for, with the id as the tie-break so that models whose provider
|
|
85
|
+
* reports no release date (Gemini reports none) still come out in a stable, readable order.
|
|
86
|
+
*/
|
|
87
|
+
const compareModelsByRecency = (left, right) => {
|
|
88
|
+
if (left.released !== right.released) {
|
|
89
|
+
// A model without a reported date sorts after the dated ones rather than to the top.
|
|
90
|
+
return (right.released ?? 0) - (left.released ?? 0);
|
|
91
|
+
}
|
|
92
|
+
return left.id.localeCompare(right.id);
|
|
93
|
+
};
|
|
94
|
+
exports.compareModelsByRecency = compareModelsByRecency;
|
|
95
|
+
/**
|
|
96
|
+
* The provider a model belongs to: its declared vendor, falling back to the `<provider>/` prefix of
|
|
97
|
+
* its id. Used to group the model lists so that a provider's models stay together.
|
|
98
|
+
*/
|
|
99
|
+
const providerOf = (model) => {
|
|
100
|
+
if (model.vendor) {
|
|
101
|
+
return model.vendor;
|
|
102
|
+
}
|
|
103
|
+
const separator = model.id.indexOf('/');
|
|
104
|
+
return separator > 0 ? model.id.substring(0, separator) : '';
|
|
105
|
+
};
|
|
106
|
+
exports.providerOf = providerOf;
|
|
107
|
+
/** Groups models by {@link providerOf}, each group ordered by {@link compareModelsByRecency}, groups by provider name. */
|
|
108
|
+
const groupModelsByProvider = (models) => {
|
|
109
|
+
const groups = new Map();
|
|
110
|
+
for (const model of models) {
|
|
111
|
+
const provider = (0, exports.providerOf)(model);
|
|
112
|
+
const group = groups.get(provider);
|
|
113
|
+
if (group) {
|
|
114
|
+
group.push(model);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
groups.set(provider, [model]);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return [...groups.entries()]
|
|
121
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
122
|
+
.map(([provider, grouped]) => ({ provider, models: grouped.slice().sort(exports.compareModelsByRecency) }));
|
|
123
|
+
};
|
|
124
|
+
exports.groupModelsByProvider = groupModelsByProvider;
|
|
82
125
|
//# sourceMappingURL=language-model-util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-model-util.js","sourceRoot":"","sources":["../../src/common/language-model-util.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,
|
|
1
|
+
{"version":3,"file":"language-model-util.js","sourceRoot":"","sources":["../../src/common/language-model-util.ts"],"names":[],"mappings":"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"}
|