@theia/ai-copilot 1.76.0-next.6 → 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/README.md +2 -1
- package/lib/browser/copilot-auth-dialog.d.ts.map +1 -1
- package/lib/browser/copilot-auth-dialog.js +7 -7
- package/lib/browser/copilot-auth-dialog.js.map +1 -1
- package/lib/browser/copilot-frontend-application-contribution.d.ts +6 -0
- package/lib/browser/copilot-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/copilot-frontend-application-contribution.js +77 -2
- package/lib/browser/copilot-frontend-application-contribution.js.map +1 -1
- package/lib/common/copilot-language-models-manager.d.ts +5 -3
- package/lib/common/copilot-language-models-manager.d.ts.map +1 -1
- package/lib/common/copilot-language-models-manager.js.map +1 -1
- package/lib/node/copilot-language-models-manager-impl.d.ts +24 -2
- package/lib/node/copilot-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/copilot-language-models-manager-impl.js +79 -4
- package/lib/node/copilot-language-models-manager-impl.js.map +1 -1
- package/lib/node/copilot-language-models-manager-impl.spec.js +47 -4
- package/lib/node/copilot-language-models-manager-impl.spec.js.map +1 -1
- package/lib/node/copilot-sdk-language-model.d.ts +2 -2
- package/lib/node/copilot-sdk-language-model.d.ts.map +1 -1
- package/lib/node/copilot-sdk-language-model.js +4 -4
- package/lib/node/copilot-sdk-language-model.js.map +1 -1
- package/lib/node/copilot-sdk-language-model.spec.js +14 -1
- package/lib/node/copilot-sdk-language-model.spec.js.map +1 -1
- package/lib/node/copilot-sdk-mappers.d.ts +11 -6
- package/lib/node/copilot-sdk-mappers.d.ts.map +1 -1
- package/lib/node/copilot-sdk-mappers.js +28 -17
- package/lib/node/copilot-sdk-mappers.js.map +1 -1
- package/lib/node/copilot-sdk-mappers.spec.js +37 -2
- package/lib/node/copilot-sdk-mappers.spec.js.map +1 -1
- package/lib/node/copilot-sdk-types.d.ts +13 -3
- package/lib/node/copilot-sdk-types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/browser/copilot-auth-dialog.tsx +8 -8
- package/src/browser/copilot-frontend-application-contribution.ts +82 -2
- package/src/common/copilot-language-models-manager.ts +5 -3
- package/src/node/copilot-language-models-manager-impl.spec.ts +55 -4
- package/src/node/copilot-language-models-manager-impl.ts +86 -5
- package/src/node/copilot-sdk-language-model.spec.ts +17 -3
- package/src/node/copilot-sdk-language-model.ts +5 -4
- package/src/node/copilot-sdk-mappers.spec.ts +41 -2
- package/src/node/copilot-sdk-mappers.ts +31 -20
- package/src/node/copilot-sdk-types.ts +16 -2
package/README.md
CHANGED
|
@@ -125,7 +125,8 @@ It is used for the sign-in, and remembered with the credentials so that requests
|
|
|
125
125
|
- The conversation is flattened into one prompt. A single user turn is forwarded as it is, a longer history is rendered as a
|
|
126
126
|
role-labelled transcript. The system prompt of the Theia agent is not part of that, it becomes the system message of the
|
|
127
127
|
session and takes the place of the agent instructions the CLI would use.
|
|
128
|
-
- Images in a request are
|
|
128
|
+
- Images in a request are sent as inline attachments when they are base64-encoded; images given as a URL are dropped
|
|
129
|
+
and only noted as omitted, because the SDK's attachments carry inline data rather than a remote reference.
|
|
129
130
|
- Tool calls and tool results of the history are rendered as text rather than as the structured entries they were.
|
|
130
131
|
|
|
131
132
|
## Additional Information
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-auth-dialog.d.ts","sourceRoot":"","sources":["../../src/browser/copilot-auth-dialog.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"copilot-auth-dialog.d.ts","sourceRoot":"","sources":["../../src/browser/copilot-auth-dialog.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAU,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAO,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAI3E,KAAK,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/E,qBACa,sBAAuB,SAAQ,WAAW;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBACa,iBAAkB,SAAQ,WAAW,CAAC,OAAO,CAAC;uBAyBS,KAAK,EAAE,sBAAsB;IAtB7F,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAGnD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAEvD,SAAS,CAAC,KAAK,EAAE,eAAe,CAAa;IAC7C,SAAS,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAClD,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,MAAM,UAAS;IAEzB,MAAM,CAAC,QAAQ,CAAC,EAAE,yBAAyB;gBAGqB,KAAK,EAAE,sBAAsB;IAM7F,SAAS,CAAC,IAAI,IAAI,IAAI;IAMtB,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAarB,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAU1C,MAAM,IAAI,IAAI;cAKP,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAkBpB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BhD,IAAI,KAAK,IAAI,OAAO,CAEnB;cAEkB,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,GAAG,WAAW;IAU5E,SAAS,CAAC,cAAc,QAAa,OAAO,CAAC,IAAI,CAAC,CAUhD;IAEF,SAAS,CAAC,aAAa,QAAO,IAAI,CAIhC;IAEF,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;IAQnC,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IAiB1C,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IAW1C,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IA6D1C,SAAS,CAAC,aAAa,GAAI,GAAG,KAAK,CAAC,UAAU,KAAG,IAAI,CAGnD;IAEF,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IAW1C,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IAgB1C,SAAS,CAAC,kBAAkB,GAAI,GAAG,KAAK,CAAC,UAAU,KAAG,IAAI,CAGxD;IAEF,SAAS,CAAC,WAAW,QAAO,IAAI,CAE9B;IAEF,SAAS,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS;CAc3C"}
|
|
@@ -56,21 +56,18 @@ let CopilotAuthDialog = class CopilotAuthDialog extends react_dialog_1.ReactDial
|
|
|
56
56
|
init() {
|
|
57
57
|
this.titleNode.textContent = this.props.title;
|
|
58
58
|
this.appendAcceptButton(core_1.nls.localize('theia/ai/copilot/auth/authorize', 'I have authorized'));
|
|
59
|
-
this.appendCloseButton(
|
|
59
|
+
this.appendCloseButton(dialogs_1.Dialog.CANCEL);
|
|
60
60
|
}
|
|
61
61
|
updateButtonStates() {
|
|
62
62
|
const isPolling = this.state === 'polling';
|
|
63
63
|
const isSuccess = this.state === 'success';
|
|
64
|
+
// Singleton dialog: button state survives close, so reset it on every render.
|
|
64
65
|
if (this.acceptButton) {
|
|
65
66
|
this.acceptButton.disabled = isPolling || isSuccess;
|
|
66
|
-
|
|
67
|
-
this.acceptButton.style.display = 'none';
|
|
68
|
-
}
|
|
67
|
+
this.acceptButton.style.display = isSuccess ? 'none' : '';
|
|
69
68
|
}
|
|
70
69
|
if (this.closeButton) {
|
|
71
|
-
|
|
72
|
-
this.closeButton.textContent = core_1.nls.localizeByDefault('Close');
|
|
73
|
-
}
|
|
70
|
+
this.closeButton.textContent = isSuccess ? core_1.nls.localizeByDefault('Close') : dialogs_1.Dialog.CANCEL;
|
|
74
71
|
}
|
|
75
72
|
}
|
|
76
73
|
async open() {
|
|
@@ -89,6 +86,9 @@ let CopilotAuthDialog = class CopilotAuthDialog extends react_dialog_1.ReactDial
|
|
|
89
86
|
async initiateFlow() {
|
|
90
87
|
try {
|
|
91
88
|
this.state = 'loading';
|
|
89
|
+
this.deviceCodeResponse = undefined;
|
|
90
|
+
this.errorMessage = undefined;
|
|
91
|
+
this.copied = false;
|
|
92
92
|
this.update();
|
|
93
93
|
this.deviceCodeResponse = await this.authService.startSignIn(this.props.enterpriseUrl);
|
|
94
94
|
this.state = 'waiting';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-auth-dialog.js","sourceRoot":"","sources":["../../src/browser/copilot-auth-dialog.tsx"],"names":[],"mappings":";;;;;AAiBA,4DAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"copilot-auth-dialog.js","sourceRoot":"","sources":["../../src/browser/copilot-auth-dialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
|
3
3
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
4
4
|
import { CopilotAuthService, CopilotLanguageModelsManager, CopilotModelDescription } from '../common';
|
|
5
5
|
import { AICorePreferences } from '@theia/ai-core/lib/common/ai-core-preferences';
|
|
6
|
+
import { ModelDiscoveryStatusService } from '@theia/ai-core/lib/browser';
|
|
6
7
|
export declare class CopilotFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
7
8
|
protected readonly preferenceService: PreferenceService;
|
|
8
9
|
protected readonly manager: CopilotLanguageModelsManager;
|
|
@@ -10,6 +11,7 @@ export declare class CopilotFrontendApplicationContribution implements FrontendA
|
|
|
10
11
|
protected readonly authService: CopilotAuthService;
|
|
11
12
|
protected readonly messageService: MessageService;
|
|
12
13
|
protected readonly commandService: CommandService;
|
|
14
|
+
protected readonly discoveryStatus: ModelDiscoveryStatusService;
|
|
13
15
|
protected prevModels: string[];
|
|
14
16
|
protected useAutoDiscovery: boolean;
|
|
15
17
|
onStart(): void;
|
|
@@ -29,8 +31,12 @@ export declare class CopilotFrontendApplicationContribution implements FrontendA
|
|
|
29
31
|
* the domain is read when signing in and not while a session is already established.
|
|
30
32
|
*/
|
|
31
33
|
protected notifyEnterpriseUrlChanged(): Promise<void>;
|
|
34
|
+
/** The state of a provider whose credential is a sign-in that has not happened, with the way to fix it. */
|
|
35
|
+
protected setSignInRequiredStatus(): void;
|
|
32
36
|
protected initializeModels(): Promise<void>;
|
|
33
37
|
protected discoverAndRegisterModels(): Promise<void>;
|
|
38
|
+
protected discovering: Promise<void>;
|
|
39
|
+
protected runDiscovery(): Promise<void>;
|
|
34
40
|
protected removeAllCopilotModels(): void;
|
|
35
41
|
protected handleModelChanges(newModels: string[]): void;
|
|
36
42
|
protected updateAllModels(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/copilot-frontend-application-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAO,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,uBAAuB,EAAuB,MAAM,WAAW,CAAC;AAE3H,OAAO,EAAE,iBAAiB,EAA+B,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"copilot-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/copilot-frontend-application-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAO,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,uBAAuB,EAAuB,MAAM,WAAW,CAAC;AAE3H,OAAO,EAAE,iBAAiB,EAA+B,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAIzE,qBACa,sCAAuC,YAAW,+BAA+B;IAG1F,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;IAGzD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAGnD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAC;IAEhE,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IACpC,SAAS,CAAC,gBAAgB,UAAS;IAEnC,OAAO,IAAI,IAAI;IAqEf,SAAS,CAAC,gBAAgB,IAAI,OAAO;IAIrC;;;OAGG;cACa,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrD;;;OAGG;cACa,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAarD;;;OAGG;cACa,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3D,2GAA2G;IAC3G,SAAS,CAAC,uBAAuB,IAAI,IAAI;cAYzB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;cAiCjC,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1D,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAqB;cAEzC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC7C,SAAS,CAAC,sBAAsB,IAAI,IAAI;IASxC,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,eAAe,IAAI,IAAI;IASjC,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;CAUpF"}
|
|
@@ -24,13 +24,21 @@ const common_1 = require("../common");
|
|
|
24
24
|
const copilot_preferences_1 = require("../common/copilot-preferences");
|
|
25
25
|
const ai_core_preferences_1 = require("@theia/ai-core/lib/common/ai-core-preferences");
|
|
26
26
|
const copilot_command_contribution_1 = require("./copilot-command-contribution");
|
|
27
|
+
const browser_1 = require("@theia/ai-core/lib/browser");
|
|
28
|
+
const COPILOT_PROVIDER_LABEL = 'GitHub Copilot';
|
|
27
29
|
let CopilotFrontendApplicationContribution = class CopilotFrontendApplicationContribution {
|
|
28
30
|
constructor() {
|
|
29
31
|
this.prevModels = [];
|
|
30
32
|
this.useAutoDiscovery = false;
|
|
33
|
+
this.discovering = Promise.resolve();
|
|
31
34
|
}
|
|
32
35
|
onStart() {
|
|
33
36
|
this.preferenceService.ready.then(async () => {
|
|
37
|
+
this.discoveryStatus.registerProvider({
|
|
38
|
+
providerId: common_1.COPILOT_PROVIDER_ID,
|
|
39
|
+
label: COPILOT_PROVIDER_LABEL,
|
|
40
|
+
refresh: () => this.initializeModels()
|
|
41
|
+
});
|
|
34
42
|
// Before anything reaches for the CLI: the backend cannot read the preferences itself.
|
|
35
43
|
await this.updateExecutablePath();
|
|
36
44
|
if (this.isCopilotEnabled()) {
|
|
@@ -38,8 +46,9 @@ let CopilotFrontendApplicationContribution = class CopilotFrontendApplicationCon
|
|
|
38
46
|
if (authState.migrationRequired) {
|
|
39
47
|
this.notifySignInRequired();
|
|
40
48
|
}
|
|
41
|
-
await this.initializeModels();
|
|
42
49
|
}
|
|
50
|
+
// Also when disabled: that is a state of its own on the provider's page, not the absence of one.
|
|
51
|
+
await this.initializeModels();
|
|
43
52
|
this.preferenceService.onPreferenceChanged(event => {
|
|
44
53
|
if (event.preferenceName === copilot_preferences_1.COPILOT_EXECUTABLE_PATH_PREF) {
|
|
45
54
|
this.updateExecutablePath().then(() => {
|
|
@@ -55,6 +64,7 @@ let CopilotFrontendApplicationContribution = class CopilotFrontendApplicationCon
|
|
|
55
64
|
}
|
|
56
65
|
else {
|
|
57
66
|
this.removeAllCopilotModels();
|
|
67
|
+
this.initializeModels();
|
|
58
68
|
}
|
|
59
69
|
}
|
|
60
70
|
else if (event.preferenceName === copilot_preferences_1.COPILOT_ENTERPRISE_URL_PREF) {
|
|
@@ -82,6 +92,7 @@ let CopilotFrontendApplicationContribution = class CopilotFrontendApplicationCon
|
|
|
82
92
|
}
|
|
83
93
|
else {
|
|
84
94
|
this.removeAllCopilotModels();
|
|
95
|
+
this.setSignInRequiredStatus();
|
|
85
96
|
}
|
|
86
97
|
}
|
|
87
98
|
});
|
|
@@ -130,9 +141,38 @@ let CopilotFrontendApplicationContribution = class CopilotFrontendApplicationCon
|
|
|
130
141
|
this.commandService.executeCommand(copilot_command_contribution_1.CopilotCommands.SIGN_IN.id);
|
|
131
142
|
}
|
|
132
143
|
}
|
|
144
|
+
/** The state of a provider whose credential is a sign-in that has not happened, with the way to fix it. */
|
|
145
|
+
setSignInRequiredStatus() {
|
|
146
|
+
this.discoveryStatus.updateStatus(common_1.COPILOT_PROVIDER_ID, {
|
|
147
|
+
state: 'no-credentials',
|
|
148
|
+
// What Copilot lacks is a sign-in, not an API key, so it says so rather than letting the
|
|
149
|
+
// state speak for it.
|
|
150
|
+
stateLabel: core_1.nls.localizeByDefault('Not signed in'),
|
|
151
|
+
message: core_1.nls.localize('theia/ai/copilot/discovery/signedOut', 'Not signed in to GitHub Copilot. Sign in to discover the models it offers.'),
|
|
152
|
+
action: { label: copilot_command_contribution_1.CopilotCommands.SIGN_IN.label, commandId: copilot_command_contribution_1.CopilotCommands.SIGN_IN.id }
|
|
153
|
+
});
|
|
154
|
+
}
|
|
133
155
|
async initializeModels() {
|
|
156
|
+
if (!this.isCopilotEnabled()) {
|
|
157
|
+
this.discoveryStatus.updateStatus(common_1.COPILOT_PROVIDER_ID, {
|
|
158
|
+
state: 'no-credentials',
|
|
159
|
+
stateLabel: core_1.nls.localizeByDefault('Disabled'),
|
|
160
|
+
message: core_1.nls.localize('theia/ai/copilot/discovery/disabled', 'The GitHub Copilot provider is disabled. Enable it to discover models.'),
|
|
161
|
+
action: undefined
|
|
162
|
+
});
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
134
165
|
const configuredModels = this.preferenceService.get(copilot_preferences_1.COPILOT_MODEL_OVERRIDES_PREF, []);
|
|
135
166
|
if (configuredModels.length > 0) {
|
|
167
|
+
this.discoveryStatus.updateStatus(common_1.COPILOT_PROVIDER_ID, {
|
|
168
|
+
state: 'overridden',
|
|
169
|
+
stateLabel: undefined,
|
|
170
|
+
discovered: configuredModels.map(id => ({ id })),
|
|
171
|
+
message: core_1.nls.localize('theia/ai/copilot/discovery/overridden', 'The model list is configured manually. Clear the model overrides to discover the models from GitHub Copilot again.'),
|
|
172
|
+
lastFetch: undefined,
|
|
173
|
+
fromCache: false,
|
|
174
|
+
action: undefined
|
|
175
|
+
});
|
|
136
176
|
this.useAutoDiscovery = false;
|
|
137
177
|
this.manager.createOrUpdateLanguageModels(...configuredModels.map((modelId) => this.createCopilotModelDescription(modelId)));
|
|
138
178
|
this.prevModels = [...configuredModels];
|
|
@@ -143,7 +183,29 @@ let CopilotFrontendApplicationContribution = class CopilotFrontendApplicationCon
|
|
|
143
183
|
}
|
|
144
184
|
}
|
|
145
185
|
async discoverAndRegisterModels() {
|
|
146
|
-
|
|
186
|
+
// Runs are queued rather than overlapped: startup, a key change and a manual refresh can all
|
|
187
|
+
// ask within a moment of each other, and two runs in flight would compute what to unregister
|
|
188
|
+
// from the same stale list and leave the registry disagreeing with the provider.
|
|
189
|
+
this.discovering = this.discovering.then(() => this.runDiscovery().catch(error => this.discoveryStatus.reportError(common_1.COPILOT_PROVIDER_ID, error)));
|
|
190
|
+
return this.discovering;
|
|
191
|
+
}
|
|
192
|
+
async runDiscovery() {
|
|
193
|
+
// Signing in is Copilot's equivalent of setting an API key, so a missing sign-in reads like a
|
|
194
|
+
// missing credential rather than like a failure: the CLI would answer the list call with an
|
|
195
|
+
// authorization error, which says the same thing in a way nobody can act on.
|
|
196
|
+
if (!(await this.authService.getAuthState()).isAuthenticated) {
|
|
197
|
+
this.setSignInRequiredStatus();
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
this.discoveryStatus.updateStatus(common_1.COPILOT_PROVIDER_ID, { state: 'fetching', stateLabel: undefined, message: undefined, action: undefined });
|
|
201
|
+
const { models, error } = await this.manager.fetchAvailableModels();
|
|
202
|
+
if (error) {
|
|
203
|
+
// The models of an earlier discovery stay registered; the manager already marks them
|
|
204
|
+
// unavailable, so they are visible as such rather than silently gone.
|
|
205
|
+
this.discoveryStatus.updateStatus(common_1.COPILOT_PROVIDER_ID, { state: 'error', stateLabel: undefined, message: error, action: undefined });
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const modelIds = models.map(model => model.id);
|
|
147
209
|
if (modelIds.length > 0) {
|
|
148
210
|
const modelsToRemove = this.prevModels.filter(m => !modelIds.includes(m));
|
|
149
211
|
if (modelsToRemove.length > 0) {
|
|
@@ -152,6 +214,15 @@ let CopilotFrontendApplicationContribution = class CopilotFrontendApplicationCon
|
|
|
152
214
|
this.manager.createOrUpdateLanguageModels(...modelIds.map((modelId) => this.createCopilotModelDescription(modelId)));
|
|
153
215
|
this.prevModels = [...modelIds];
|
|
154
216
|
}
|
|
217
|
+
this.discoveryStatus.updateStatus(common_1.COPILOT_PROVIDER_ID, {
|
|
218
|
+
state: 'ready',
|
|
219
|
+
stateLabel: undefined,
|
|
220
|
+
discovered: models,
|
|
221
|
+
message: undefined,
|
|
222
|
+
lastFetch: Date.now(),
|
|
223
|
+
fromCache: false,
|
|
224
|
+
action: undefined
|
|
225
|
+
});
|
|
155
226
|
}
|
|
156
227
|
removeAllCopilotModels() {
|
|
157
228
|
if (this.prevModels.length > 0) {
|
|
@@ -211,6 +282,10 @@ tslib_1.__decorate([
|
|
|
211
282
|
(0, inversify_1.inject)(core_1.CommandService),
|
|
212
283
|
tslib_1.__metadata("design:type", Object)
|
|
213
284
|
], CopilotFrontendApplicationContribution.prototype, "commandService", void 0);
|
|
285
|
+
tslib_1.__decorate([
|
|
286
|
+
(0, inversify_1.inject)(browser_1.ModelDiscoveryStatusService),
|
|
287
|
+
tslib_1.__metadata("design:type", browser_1.ModelDiscoveryStatusService)
|
|
288
|
+
], CopilotFrontendApplicationContribution.prototype, "discoveryStatus", void 0);
|
|
214
289
|
exports.CopilotFrontendApplicationContribution = CopilotFrontendApplicationContribution = tslib_1.__decorate([
|
|
215
290
|
(0, inversify_1.injectable)()
|
|
216
291
|
], CopilotFrontendApplicationContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/copilot-frontend-application-contribution.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,4DAAkE;AAClE,sCAAqE;AAErE,4EAAwE;AACxE,sCAA2H;AAC3H,uEAA8J;AAC9J,uFAA+G;AAC/G,iFAAiE;
|
|
1
|
+
{"version":3,"file":"copilot-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/copilot-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ModelDiscoveryResult } from '@theia/ai-core/lib/common';
|
|
1
2
|
export declare const COPILOT_LANGUAGE_MODELS_MANAGER_PATH = "/services/copilot/language-model-manager";
|
|
2
3
|
export declare const CopilotLanguageModelsManager: unique symbol;
|
|
3
4
|
export declare const COPILOT_PROVIDER_ID = "copilot";
|
|
@@ -30,9 +31,10 @@ export interface CopilotLanguageModelsManager {
|
|
|
30
31
|
*/
|
|
31
32
|
refreshModelsStatus(): Promise<void>;
|
|
32
33
|
/**
|
|
33
|
-
* Fetches the
|
|
34
|
-
*
|
|
34
|
+
* Fetches the models the Copilot CLI offers. Requires the CLI to be signed in; a failure is
|
|
35
|
+
* reported as {@link ModelDiscoveryResult.error} with no models rather than thrown, since the
|
|
36
|
+
* CLI being absent or signed out is an expected state rather than a fault.
|
|
35
37
|
*/
|
|
36
|
-
|
|
38
|
+
fetchAvailableModels(): Promise<ModelDiscoveryResult>;
|
|
37
39
|
}
|
|
38
40
|
//# sourceMappingURL=copilot-language-models-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/copilot-language-models-manager.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,oCAAoC,6CAA6C,CAAC;AAC/F,eAAO,MAAM,4BAA4B,eAAyC,CAAC;AAEnF,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACpC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IACzC;;OAEG;IACH,4BAA4B,CAAC,GAAG,MAAM,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF;;OAEG;IACH,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClD;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC
|
|
1
|
+
{"version":3,"file":"copilot-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/copilot-language-models-manager.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,eAAO,MAAM,oCAAoC,6CAA6C,CAAC;AAC/F,eAAO,MAAM,4BAA4B,eAAyC,CAAC;AAEnF,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACpC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IACzC;;OAEG;IACH,4BAA4B,CAAC,GAAG,MAAM,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF;;OAEG;IACH,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClD;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC;;;;OAIG;IACH,oBAAoB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-language-models-manager.js","sourceRoot":"","sources":["../../src/common/copilot-language-models-manager.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":"copilot-language-models-manager.js","sourceRoot":"","sources":["../../src/common/copilot-language-models-manager.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;;;AAGnE,QAAA,oCAAoC,GAAG,0CAA0C,CAAC;AAClF,QAAA,4BAA4B,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAEtE,QAAA,mBAAmB,GAAG,SAAS,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
|
|
1
|
+
import { LanguageModelRegistry, LanguageModelStatus, ModelDiscoveryResult } from '@theia/ai-core';
|
|
2
2
|
import { DisposableCollection, ILogger } from '@theia/core';
|
|
3
3
|
import { CopilotLanguageModelsManager, CopilotModelDescription } from '../common';
|
|
4
4
|
import { CopilotSdkClientProvider } from './copilot-sdk-client-provider';
|
|
@@ -32,7 +32,29 @@ export declare class CopilotLanguageModelsManagerImpl implements CopilotLanguage
|
|
|
32
32
|
createOrUpdateLanguageModels(...modelDescriptions: CopilotModelDescription[]): Promise<void>;
|
|
33
33
|
removeLanguageModels(...modelIds: string[]): void;
|
|
34
34
|
refreshModelsStatus(): Promise<void>;
|
|
35
|
-
|
|
35
|
+
fetchAvailableModels(): Promise<ModelDiscoveryResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Nominates the models the chat input should show without the user asking, up to
|
|
38
|
+
* {@link NOMINATED_MODEL_COUNT}. Copilot serves models of several vendors under one provider, so
|
|
39
|
+
* ranking them against each other by the numbers in their ids would show several models of
|
|
40
|
+
* whichever vendor counts highest and none of the others. The list is therefore filled vendor by
|
|
41
|
+
* vendor: `auto` first, which lets Copilot itself choose and is the entry most users want, then the
|
|
42
|
+
* newest model of each major vendor, then the next of each in turn until the list is full.
|
|
43
|
+
*
|
|
44
|
+
* Everything else Copilot carries is left to be chosen deliberately: the list is meant to be the
|
|
45
|
+
* handful of models one switches between while chatting, not a survey of the catalogue.
|
|
46
|
+
*
|
|
47
|
+
* Release-pinned ids are left out: the undated id of the same model is nominated, and pinning a
|
|
48
|
+
* release is the deliberate choice the check on its row makes.
|
|
49
|
+
*/
|
|
50
|
+
protected selectFeaturedModelIds(modelIds: string[]): Set<string>;
|
|
51
|
+
/**
|
|
52
|
+
* The vendor a Copilot model id belongs to, or `undefined` for a vendor that is not nominated.
|
|
53
|
+
* Matching on the id is all there is — the CLI reports nothing else — and it is deliberately narrow:
|
|
54
|
+
* a model of a vendor this does not name is still registered and still selectable, it is simply not
|
|
55
|
+
* one of the few the chat input starts with.
|
|
56
|
+
*/
|
|
57
|
+
protected vendorOf(id: string): string | undefined;
|
|
36
58
|
/**
|
|
37
59
|
* Records the outcome of the last model discovery and reflects it in the status of the models.
|
|
38
60
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/copilot-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,
|
|
1
|
+
{"version":3,"file":"copilot-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/copilot-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAoB,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAuB,MAAM,WAAW,CAAC;AAoBvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;GAGG;AACH,qBACa,gCAAiC,YAAW,4BAA4B;IAGjF,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;IAGvD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IAG/D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAE1D;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAG/C,SAAS,CAAC,IAAI,IAAI,IAAI;IAQtB;;;OAGG;IAEH,SAAS,CAAC,IAAI,IAAI,IAAI;cAIN,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAWzD,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BlG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAI3C,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAapC,oBAAoB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAgB3D;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAiCjE;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOlD;;OAEG;cACa,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAOlF"}
|
|
@@ -21,6 +21,21 @@ const ai_core_1 = require("@theia/ai-core");
|
|
|
21
21
|
const core_1 = require("@theia/core");
|
|
22
22
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
23
|
const common_1 = require("../common");
|
|
24
|
+
/** The id under which Copilot offers its own model selection; always worth showing. */
|
|
25
|
+
const COPILOT_AUTO_MODEL_ID = 'auto';
|
|
26
|
+
/** How many models Copilot nominates, matching what the other providers feature. */
|
|
27
|
+
const NOMINATED_MODEL_COUNT = 5;
|
|
28
|
+
/**
|
|
29
|
+
* The vendors one Copilot model each is nominated for, recognised by the prefix of the model id.
|
|
30
|
+
* Deliberately the three whose models the other providers of this application offer directly: those
|
|
31
|
+
* are the ones a user coming to the chat input expects to switch between. Copilot carries more, and
|
|
32
|
+
* they remain registered and selectable — just not preselected.
|
|
33
|
+
*/
|
|
34
|
+
const NOMINATED_VENDORS = [
|
|
35
|
+
{ vendor: 'anthropic', matches: /^claude/i },
|
|
36
|
+
{ vendor: 'openai', matches: /^(gpt|chatgpt|o\d)/i },
|
|
37
|
+
{ vendor: 'google', matches: /^gemini/i }
|
|
38
|
+
];
|
|
24
39
|
const copilot_sdk_language_model_1 = require("./copilot-sdk-language-model");
|
|
25
40
|
const copilot_sdk_client_provider_1 = require("./copilot-sdk-client-provider");
|
|
26
41
|
const copilot_auth_service_impl_1 = require("./copilot-auth-service-impl");
|
|
@@ -92,18 +107,78 @@ let CopilotLanguageModelsManagerImpl = class CopilotLanguageModelsManagerImpl {
|
|
|
92
107
|
}
|
|
93
108
|
}
|
|
94
109
|
}
|
|
95
|
-
async
|
|
110
|
+
async fetchAvailableModels() {
|
|
96
111
|
try {
|
|
97
112
|
const modelIds = await this.sdkClientProvider.listModelIds();
|
|
98
113
|
this.logger.info(`Copilot: discovered ${modelIds.length} models [${modelIds.join(', ')}]`);
|
|
99
114
|
await this.setDiscoveryFailure(undefined);
|
|
100
|
-
|
|
115
|
+
// The CLI reports nothing but the id: no display name, and no release date to order by.
|
|
116
|
+
const featured = this.selectFeaturedModelIds(modelIds);
|
|
117
|
+
return { models: modelIds.map(id => ({ id, featured: featured.has(id) })), fromCache: false };
|
|
101
118
|
}
|
|
102
119
|
catch (error) {
|
|
120
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
103
121
|
this.logger.warn('Copilot: failed to fetch available models via the Copilot CLI:', error);
|
|
104
|
-
await this.setDiscoveryFailure(
|
|
105
|
-
return [];
|
|
122
|
+
await this.setDiscoveryFailure(message);
|
|
123
|
+
return { models: [], fromCache: false, error: message };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Nominates the models the chat input should show without the user asking, up to
|
|
128
|
+
* {@link NOMINATED_MODEL_COUNT}. Copilot serves models of several vendors under one provider, so
|
|
129
|
+
* ranking them against each other by the numbers in their ids would show several models of
|
|
130
|
+
* whichever vendor counts highest and none of the others. The list is therefore filled vendor by
|
|
131
|
+
* vendor: `auto` first, which lets Copilot itself choose and is the entry most users want, then the
|
|
132
|
+
* newest model of each major vendor, then the next of each in turn until the list is full.
|
|
133
|
+
*
|
|
134
|
+
* Everything else Copilot carries is left to be chosen deliberately: the list is meant to be the
|
|
135
|
+
* handful of models one switches between while chatting, not a survey of the catalogue.
|
|
136
|
+
*
|
|
137
|
+
* Release-pinned ids are left out: the undated id of the same model is nominated, and pinning a
|
|
138
|
+
* release is the deliberate choice the check on its row makes.
|
|
139
|
+
*/
|
|
140
|
+
selectFeaturedModelIds(modelIds) {
|
|
141
|
+
const featured = new Set();
|
|
142
|
+
const byVendor = new Map();
|
|
143
|
+
for (const id of modelIds) {
|
|
144
|
+
if (id === COPILOT_AUTO_MODEL_ID) {
|
|
145
|
+
featured.add(id);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (ai_core_1.DiscoveredModels.undatedId(id) !== undefined) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const vendor = this.vendorOf(id);
|
|
152
|
+
if (!vendor) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
byVendor.set(vendor, [...byVendor.get(vendor) ?? [], id]);
|
|
156
|
+
}
|
|
157
|
+
// Newest first within each vendor, the vendors themselves in the order they are named.
|
|
158
|
+
const ranked = NOMINATED_VENDORS.map(({ vendor }) => [...byVendor.get(vendor) ?? []].sort((left, right) => ai_core_1.DiscoveredModels.compareByVersion(left, right)));
|
|
159
|
+
for (let rank = 0; featured.size < NOMINATED_MODEL_COUNT && ranked.some(ids => ids.length > rank); rank++) {
|
|
160
|
+
for (const ids of ranked) {
|
|
161
|
+
if (featured.size >= NOMINATED_MODEL_COUNT) {
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
if (ids[rank] !== undefined) {
|
|
165
|
+
featured.add(ids[rank]);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
106
168
|
}
|
|
169
|
+
return featured;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* The vendor a Copilot model id belongs to, or `undefined` for a vendor that is not nominated.
|
|
173
|
+
* Matching on the id is all there is — the CLI reports nothing else — and it is deliberately narrow:
|
|
174
|
+
* a model of a vendor this does not name is still registered and still selectable, it is simply not
|
|
175
|
+
* one of the few the chat input starts with.
|
|
176
|
+
*/
|
|
177
|
+
vendorOf(id) {
|
|
178
|
+
// Matched against the last segment, so that an id the CLI qualifies with its vendor
|
|
179
|
+
// (`google/gemini-2.5-pro`) is recognised as readily as a bare one.
|
|
180
|
+
const name = id.substring(id.lastIndexOf('/') + 1);
|
|
181
|
+
return NOMINATED_VENDORS.find(candidate => candidate.matches.test(name))?.vendor;
|
|
107
182
|
}
|
|
108
183
|
/**
|
|
109
184
|
* Records the outcome of the last model discovery and reflects it in the status of the models.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/copilot-language-models-manager-impl.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":"copilot-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/copilot-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,9 @@ class FakeRegistry {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
class TestableCopilotLanguageModelsManagerImpl extends copilot_language_models_manager_impl_1.CopilotLanguageModelsManagerImpl {
|
|
50
|
+
callVendorOf(id) {
|
|
51
|
+
return this.vendorOf(id);
|
|
52
|
+
}
|
|
50
53
|
constructor(registry) {
|
|
51
54
|
super();
|
|
52
55
|
this.registry = registry;
|
|
@@ -88,7 +91,9 @@ describe('CopilotLanguageModelsManagerImpl - status', () => {
|
|
|
88
91
|
});
|
|
89
92
|
it('should report models as unavailable when they cannot be listed, rather than as ready', async () => {
|
|
90
93
|
manager.listFailure = new Error('not authorized to use this Copilot feature');
|
|
91
|
-
|
|
94
|
+
const result = await manager.fetchAvailableModels();
|
|
95
|
+
(0, chai_1.expect)(result.models).to.be.empty;
|
|
96
|
+
(0, chai_1.expect)(result.error).to.contain('not authorized');
|
|
92
97
|
const status = await manager.callCalculateStatus();
|
|
93
98
|
(0, chai_1.expect)(status.status).to.equal('unavailable');
|
|
94
99
|
(0, chai_1.expect)(status.message).to.contain('not authorized');
|
|
@@ -96,18 +101,56 @@ describe('CopilotLanguageModelsManagerImpl - status', () => {
|
|
|
96
101
|
it('should reflect a failed listing in the models that are already registered', async () => {
|
|
97
102
|
await manager.createOrUpdateLanguageModels({ id: 'copilot/gpt-5', model: 'gpt-5', maxRetries: 3 });
|
|
98
103
|
manager.listFailure = new Error('socket hang up');
|
|
99
|
-
await manager.
|
|
104
|
+
await manager.fetchAvailableModels();
|
|
100
105
|
(0, chai_1.expect)(manager.registry.patches.map(patch => patch.id)).to.deep.equal(['copilot/gpt-5']);
|
|
101
106
|
(0, chai_1.expect)(manager.registry.models[0].status).to.deep.include({ status: 'unavailable' });
|
|
102
107
|
});
|
|
103
108
|
it('should report ready again once the models can be listed', async () => {
|
|
104
109
|
await manager.createOrUpdateLanguageModels({ id: 'copilot/gpt-5', model: 'gpt-5', maxRetries: 3 });
|
|
105
110
|
manager.listFailure = new Error('socket hang up');
|
|
106
|
-
await manager.
|
|
111
|
+
await manager.fetchAvailableModels();
|
|
107
112
|
manager.listFailure = undefined;
|
|
108
|
-
(0, chai_1.expect)(await manager.
|
|
113
|
+
(0, chai_1.expect)((await manager.fetchAvailableModels()).models).to.deep.equal([{ id: 'gpt-5', featured: true }]);
|
|
109
114
|
(0, chai_1.expect)(manager.registry.models[0].status).to.deep.equal({ status: 'ready' });
|
|
110
115
|
});
|
|
116
|
+
it('nominates auto and one model of each major vendor before a second of any', async () => {
|
|
117
|
+
manager.modelIds = ['auto', 'gpt-5', 'gpt-4.1', 'claude-sonnet-4.5', 'claude-haiku-4', 'gemini-2.5-pro', 'gpt-5-2026-04-17'];
|
|
118
|
+
const featured = (await manager.fetchAvailableModels()).models.filter(model => model.featured).map(model => model.id);
|
|
119
|
+
// Five in total: auto, the newest of each vendor, then the next of the first vendor with one left.
|
|
120
|
+
(0, chai_1.expect)(featured).to.have.members(['auto', 'gpt-5', 'claude-sonnet-4.5', 'gemini-2.5-pro', 'claude-haiku-4']);
|
|
121
|
+
});
|
|
122
|
+
it('fills the list to five even when the CLI offers no auto', async () => {
|
|
123
|
+
manager.modelIds = ['gpt-5', 'gpt-4.1', 'claude-sonnet-4.5', 'claude-haiku-4', 'gemini-3-pro', 'gemini-2.5-pro'];
|
|
124
|
+
const featured = (await manager.fetchAvailableModels()).models.filter(model => model.featured).map(model => model.id);
|
|
125
|
+
(0, chai_1.expect)(featured).to.have.members(['gpt-5', 'claude-sonnet-4.5', 'gemini-3-pro', 'gpt-4.1', 'claude-haiku-4']);
|
|
126
|
+
});
|
|
127
|
+
it('nominates no more than the five, however much one vendor offers', async () => {
|
|
128
|
+
manager.modelIds = ['gpt-5', 'gpt-5-mini', 'gpt-4.1', 'gpt-4o', 'o5-preview', 'chatgpt-5-latest'];
|
|
129
|
+
const featured = (await manager.fetchAvailableModels()).models.filter(model => model.featured).map(model => model.id);
|
|
130
|
+
(0, chai_1.expect)(featured).to.have.lengthOf(5);
|
|
131
|
+
});
|
|
132
|
+
it('counts the reasoning models as OpenAI, rather than as a vendor of their own', () => {
|
|
133
|
+
(0, chai_1.expect)(manager.callVendorOf('o5-preview')).to.equal('openai');
|
|
134
|
+
(0, chai_1.expect)(manager.callVendorOf('gpt-4.1')).to.equal('openai');
|
|
135
|
+
(0, chai_1.expect)(manager.callVendorOf('claude-sonnet-4.5')).to.equal('anthropic');
|
|
136
|
+
(0, chai_1.expect)(manager.callVendorOf('grok-code-fast-1')).to.equal(undefined);
|
|
137
|
+
});
|
|
138
|
+
it('nominates nothing for the vendors beyond the three, which stay selectable but not preselected', async () => {
|
|
139
|
+
manager.modelIds = ['claude-sonnet-4.5', 'grok-code-fast-1', 'mistral-large', 'llama-4-maverick'];
|
|
140
|
+
const result = await manager.fetchAvailableModels();
|
|
141
|
+
(0, chai_1.expect)(result.models.map(model => model.id)).to.have.lengthOf(4);
|
|
142
|
+
(0, chai_1.expect)(result.models.filter(model => model.featured).map(model => model.id)).to.deep.equal(['claude-sonnet-4.5']);
|
|
143
|
+
});
|
|
144
|
+
it('recognises a vendor-qualified id, in case the CLI reports them that way', async () => {
|
|
145
|
+
manager.modelIds = ['google/gemini-2.5-pro', 'anthropic/claude-sonnet-4.5'];
|
|
146
|
+
const featured = (await manager.fetchAvailableModels()).models.filter(model => model.featured).map(model => model.id);
|
|
147
|
+
(0, chai_1.expect)(featured).to.have.members(['google/gemini-2.5-pro', 'anthropic/claude-sonnet-4.5']);
|
|
148
|
+
});
|
|
149
|
+
it('never nominates a release-pinned id, whose undated form is nominated instead', async () => {
|
|
150
|
+
manager.modelIds = ['gpt-5', 'gpt-5-2026-04-17'];
|
|
151
|
+
const featured = (await manager.fetchAvailableModels()).models.filter(model => model.featured).map(model => model.id);
|
|
152
|
+
(0, chai_1.expect)(featured).to.deep.equal(['gpt-5']);
|
|
153
|
+
});
|
|
111
154
|
it('should update an existing model instead of registering it twice', async () => {
|
|
112
155
|
await manager.createOrUpdateLanguageModels({ id: 'copilot/gpt-5', model: 'gpt-5', maxRetries: 3 });
|
|
113
156
|
await manager.createOrUpdateLanguageModels({ id: 'copilot/gpt-5', model: 'gpt-5', maxRetries: 5 });
|