@theia/ai-external-api 1.76.0-next.33
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 +83 -0
- package/lib/browser/ai-external-api-frontend-contribution.d.ts +28 -0
- package/lib/browser/ai-external-api-frontend-contribution.d.ts.map +1 -0
- package/lib/browser/ai-external-api-frontend-contribution.js +88 -0
- package/lib/browser/ai-external-api-frontend-contribution.js.map +1 -0
- package/lib/browser/ai-external-api-frontend-contribution.spec.d.ts +2 -0
- package/lib/browser/ai-external-api-frontend-contribution.spec.d.ts.map +1 -0
- package/lib/browser/ai-external-api-frontend-contribution.spec.js +102 -0
- package/lib/browser/ai-external-api-frontend-contribution.spec.js.map +1 -0
- package/lib/browser/ai-external-api-frontend-module.d.ts +4 -0
- package/lib/browser/ai-external-api-frontend-module.d.ts.map +1 -0
- package/lib/browser/ai-external-api-frontend-module.js +47 -0
- package/lib/browser/ai-external-api-frontend-module.js.map +1 -0
- package/lib/browser/frontend-external-chat-session-provider.d.ts +63 -0
- package/lib/browser/frontend-external-chat-session-provider.d.ts.map +1 -0
- package/lib/browser/frontend-external-chat-session-provider.js +271 -0
- package/lib/browser/frontend-external-chat-session-provider.js.map +1 -0
- package/lib/browser/frontend-external-chat-session-provider.spec.d.ts +2 -0
- package/lib/browser/frontend-external-chat-session-provider.spec.d.ts.map +1 -0
- package/lib/browser/frontend-external-chat-session-provider.spec.js +421 -0
- package/lib/browser/frontend-external-chat-session-provider.spec.js.map +1 -0
- package/lib/browser/index.d.ts +3 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +21 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/common/external-chat-session-provider.d.ts +213 -0
- package/lib/common/external-chat-session-provider.d.ts.map +1 -0
- package/lib/common/external-chat-session-provider.js +147 -0
- package/lib/common/external-chat-session-provider.js.map +1 -0
- package/lib/common/index.d.ts +2 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +20 -0
- package/lib/common/index.js.map +1 -0
- package/lib/node/ai-external-api-backend-module.d.ts +4 -0
- package/lib/node/ai-external-api-backend-module.d.ts.map +1 -0
- package/lib/node/ai-external-api-backend-module.js +38 -0
- package/lib/node/ai-external-api-backend-module.js.map +1 -0
- package/lib/node/ai-external-api-endpoint.d.ts +31 -0
- package/lib/node/ai-external-api-endpoint.d.ts.map +1 -0
- package/lib/node/ai-external-api-endpoint.js +189 -0
- package/lib/node/ai-external-api-endpoint.js.map +1 -0
- package/lib/node/ai-external-api-endpoint.spec.d.ts +2 -0
- package/lib/node/ai-external-api-endpoint.spec.d.ts.map +1 -0
- package/lib/node/ai-external-api-endpoint.spec.js +233 -0
- package/lib/node/ai-external-api-endpoint.spec.js.map +1 -0
- package/lib/node/external-chat-session-registry.d.ts +83 -0
- package/lib/node/external-chat-session-registry.d.ts.map +1 -0
- package/lib/node/external-chat-session-registry.js +266 -0
- package/lib/node/external-chat-session-registry.js.map +1 -0
- package/lib/node/external-chat-session-registry.spec.d.ts +2 -0
- package/lib/node/external-chat-session-registry.spec.d.ts.map +1 -0
- package/lib/node/external-chat-session-registry.spec.js +366 -0
- package/lib/node/external-chat-session-registry.spec.js.map +1 -0
- package/lib/node/index.d.ts +3 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +21 -0
- package/lib/node/index.js.map +1 -0
- package/package.json +52 -0
- package/src/browser/ai-external-api-frontend-contribution.spec.ts +128 -0
- package/src/browser/ai-external-api-frontend-contribution.ts +90 -0
- package/src/browser/ai-external-api-frontend-module.ts +48 -0
- package/src/browser/frontend-external-chat-session-provider.spec.ts +491 -0
- package/src/browser/frontend-external-chat-session-provider.ts +277 -0
- package/src/browser/index.ts +18 -0
- package/src/common/external-chat-session-provider.ts +330 -0
- package/src/common/index.ts +17 -0
- package/src/node/ai-external-api-backend-module.ts +41 -0
- package/src/node/ai-external-api-endpoint.spec.ts +272 -0
- package/src/node/ai-external-api-endpoint.ts +195 -0
- package/src/node/external-chat-session-registry.spec.ts +413 -0
- package/src/node/external-chat-session-registry.ts +270 -0
- package/src/node/index.ts +18 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-chat-session-registry.spec.js","sourceRoot":"","sources":["../../src/node/external-chat-session-registry.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAgBA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 tslib_1 = require("tslib");
|
|
19
|
+
tslib_1.__exportStar(require("./ai-external-api-endpoint"), exports);
|
|
20
|
+
tslib_1.__exportStar(require("./external-chat-session-registry"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/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,qEAA2C;AAC3C,2EAAiD"}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@theia/ai-external-api",
|
|
3
|
+
"version": "1.76.0-next.33+b2eb1241aff",
|
|
4
|
+
"description": "Theia - AI External API",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"@theia/ai-chat": "1.76.0-next.33+b2eb1241aff",
|
|
7
|
+
"@theia/core": "1.76.0-next.33+b2eb1241aff",
|
|
8
|
+
"@theia/external-api": "1.76.0-next.33+b2eb1241aff",
|
|
9
|
+
"@theia/workspace": "1.76.0-next.33+b2eb1241aff"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"theiaExtensions": [
|
|
15
|
+
{
|
|
16
|
+
"frontend": "lib/browser/ai-external-api-frontend-module",
|
|
17
|
+
"backend": "lib/node/ai-external-api-backend-module"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"keywords": [
|
|
21
|
+
"theia-extension"
|
|
22
|
+
],
|
|
23
|
+
"license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "https://github.com/eclipse-theia/theia.git"
|
|
27
|
+
},
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://github.com/eclipse-theia/theia/issues"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/eclipse-theia/theia",
|
|
32
|
+
"files": [
|
|
33
|
+
"lib",
|
|
34
|
+
"src"
|
|
35
|
+
],
|
|
36
|
+
"main": "lib/common",
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build": "theiaext build",
|
|
39
|
+
"clean": "theiaext clean",
|
|
40
|
+
"compile": "theiaext compile",
|
|
41
|
+
"lint": "theiaext lint",
|
|
42
|
+
"test": "theiaext test",
|
|
43
|
+
"watch": "theiaext watch"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@theia/ext-scripts": "1.75.0"
|
|
47
|
+
},
|
|
48
|
+
"nyc": {
|
|
49
|
+
"extends": "../../configs/nyc.json"
|
|
50
|
+
},
|
|
51
|
+
"gitHead": "b2eb1241affdedd531d80bea661973a12ba02e25"
|
|
52
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
|
18
|
+
const disableJSDOM = enableJSDOM();
|
|
19
|
+
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
|
20
|
+
FrontendApplicationConfigProvider.set({});
|
|
21
|
+
|
|
22
|
+
import { ChatChangeEvent } from '@theia/ai-chat/lib/common/chat-model';
|
|
23
|
+
import { ChatService, ChatSession } from '@theia/ai-chat/lib/common/chat-service';
|
|
24
|
+
import { Emitter } from '@theia/core';
|
|
25
|
+
import { expect } from 'chai';
|
|
26
|
+
import { AIExternalApiFrontendContribution } from './ai-external-api-frontend-contribution';
|
|
27
|
+
|
|
28
|
+
disableJSDOM();
|
|
29
|
+
|
|
30
|
+
type SessionEvent = Parameters<Parameters<ChatService['onSessionEvent']>[0]>[0];
|
|
31
|
+
|
|
32
|
+
describe('AIExternalApiFrontendContribution', () => {
|
|
33
|
+
|
|
34
|
+
interface TrackedSession {
|
|
35
|
+
session: ChatSession;
|
|
36
|
+
fireStatusChanged(): void;
|
|
37
|
+
fireOtherModelChange(): void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function trackedSession(id: string): TrackedSession {
|
|
41
|
+
const modelChanges = new Emitter<ChatChangeEvent>();
|
|
42
|
+
return {
|
|
43
|
+
session: { id, model: { onDidChange: modelChanges.event } } as unknown as ChatSession,
|
|
44
|
+
fireStatusChanged: () => modelChanges.fire({ kind: 'statusChanged' } as ChatChangeEvent),
|
|
45
|
+
fireOtherModelChange: () => modelChanges.fire({ kind: 'responseChanged' } as ChatChangeEvent)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface ContributionContext {
|
|
50
|
+
sessionEvents: Emitter<SessionEvent>;
|
|
51
|
+
addSession(tracked: TrackedSession): void;
|
|
52
|
+
removeSession(id: string): void;
|
|
53
|
+
notifications(): number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function startContribution(initialSessions: TrackedSession[] = []): ContributionContext {
|
|
57
|
+
const sessionEvents = new Emitter<SessionEvent>();
|
|
58
|
+
const sessions = [...initialSessions];
|
|
59
|
+
const chatService = {
|
|
60
|
+
onSessionEvent: sessionEvents.event,
|
|
61
|
+
getSessions: () => sessions.map(tracked => tracked.session),
|
|
62
|
+
getSession: (id: string) => sessions.find(tracked => tracked.session.id === id)?.session
|
|
63
|
+
} as unknown as ChatService;
|
|
64
|
+
let count = 0;
|
|
65
|
+
const contribution = new AIExternalApiFrontendContribution();
|
|
66
|
+
(contribution as unknown as Record<string, unknown>)['chatService'] = chatService;
|
|
67
|
+
(contribution as unknown as Record<string, unknown>)['backendService'] = { notifySessionsChanged: () => count++ };
|
|
68
|
+
contribution.onStart();
|
|
69
|
+
return {
|
|
70
|
+
sessionEvents,
|
|
71
|
+
addSession: tracked => sessions.push(tracked),
|
|
72
|
+
removeSession: id => sessions.splice(sessions.findIndex(tracked => tracked.session.id === id), 1),
|
|
73
|
+
notifications: () => count
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Waits long enough for a debounced notification to be delivered. */
|
|
78
|
+
function settle(): Promise<void> {
|
|
79
|
+
return new Promise(resolve => setTimeout(resolve, 300));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
it('notifies the backend when a session is created', async () => {
|
|
83
|
+
const context = startContribution();
|
|
84
|
+
context.addSession(trackedSession('1'));
|
|
85
|
+
context.sessionEvents.fire({ type: 'created', sessionId: '1' });
|
|
86
|
+
await settle();
|
|
87
|
+
expect(context.notifications()).to.equal(1);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('notifies the backend on session status changes', async () => {
|
|
91
|
+
const tracked = trackedSession('1');
|
|
92
|
+
const context = startContribution([tracked]);
|
|
93
|
+
tracked.fireStatusChanged();
|
|
94
|
+
await settle();
|
|
95
|
+
expect(context.notifications()).to.equal(1);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('coalesces bursts of changes into a single notification', async () => {
|
|
99
|
+
const tracked = trackedSession('1');
|
|
100
|
+
const context = startContribution([tracked]);
|
|
101
|
+
context.sessionEvents.fire({ type: 'renamed', sessionId: '1' });
|
|
102
|
+
tracked.fireStatusChanged();
|
|
103
|
+
tracked.fireStatusChanged();
|
|
104
|
+
await settle();
|
|
105
|
+
expect(context.notifications()).to.equal(1);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it('ignores changes that are not visible to external clients', async () => {
|
|
109
|
+
const tracked = trackedSession('1');
|
|
110
|
+
const context = startContribution([tracked]);
|
|
111
|
+
context.sessionEvents.fire({ type: 'activeChange', sessionId: '1' });
|
|
112
|
+
tracked.fireOtherModelChange();
|
|
113
|
+
await settle();
|
|
114
|
+
expect(context.notifications()).to.equal(0);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('stops observing deleted sessions', async () => {
|
|
118
|
+
const tracked = trackedSession('1');
|
|
119
|
+
const context = startContribution([tracked]);
|
|
120
|
+
context.removeSession('1');
|
|
121
|
+
context.sessionEvents.fire({ type: 'deleted', sessionId: '1' });
|
|
122
|
+
await settle();
|
|
123
|
+
expect(context.notifications()).to.equal(1);
|
|
124
|
+
tracked.fireStatusChanged();
|
|
125
|
+
await settle();
|
|
126
|
+
expect(context.notifications()).to.equal(1);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { ChatChangeEvent } from '@theia/ai-chat/lib/common/chat-model';
|
|
18
|
+
import {
|
|
19
|
+
ChatService, ChatSession, isActiveSessionChangedEvent, isSessionCreatedEvent, isSessionDeletedEvent
|
|
20
|
+
} from '@theia/ai-chat/lib/common/chat-service';
|
|
21
|
+
import { Disposable } from '@theia/core';
|
|
22
|
+
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
23
|
+
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
24
|
+
import debounce = require('@theia/core/shared/lodash.debounce');
|
|
25
|
+
import { ExternalChatSessionBackendService } from '../common/external-chat-session-provider';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Connects this frontend to the external session API of the backend.
|
|
29
|
+
*
|
|
30
|
+
* Injecting the {@link ExternalChatSessionBackendService} proxy on application start eagerly
|
|
31
|
+
* establishes the RPC connection through which the backend queries this frontend for session
|
|
32
|
+
* information. In the other direction, this contribution observes the frontend's chat sessions
|
|
33
|
+
* and notifies the backend about changes that are visible to external API clients (session
|
|
34
|
+
* lifecycle, titles, and status), debounced to coalesce bursts of changes.
|
|
35
|
+
*/
|
|
36
|
+
@injectable()
|
|
37
|
+
export class AIExternalApiFrontendContribution implements FrontendApplicationContribution {
|
|
38
|
+
|
|
39
|
+
/** Debounce delay in milliseconds for change notifications to the backend. */
|
|
40
|
+
protected readonly notifyDelay = 200;
|
|
41
|
+
/** Maximum time in milliseconds a continuously changing session may defer a notification. */
|
|
42
|
+
protected readonly notifyMaxDelay = 1000;
|
|
43
|
+
|
|
44
|
+
@inject(ExternalChatSessionBackendService)
|
|
45
|
+
protected readonly backendService: ExternalChatSessionBackendService;
|
|
46
|
+
|
|
47
|
+
@inject(ChatService)
|
|
48
|
+
protected readonly chatService: ChatService;
|
|
49
|
+
|
|
50
|
+
/** Status listeners per tracked session, disposed when the session is deleted. */
|
|
51
|
+
protected readonly sessionListeners = new Map<string, Disposable>();
|
|
52
|
+
|
|
53
|
+
protected readonly notifyBackend = debounce(
|
|
54
|
+
() => this.backendService.notifySessionsChanged(),
|
|
55
|
+
this.notifyDelay,
|
|
56
|
+
{ maxWait: this.notifyMaxDelay }
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
onStart(): void {
|
|
60
|
+
this.chatService.onSessionEvent(event => {
|
|
61
|
+
if (isActiveSessionChangedEvent(event)) {
|
|
62
|
+
// which session is active is not visible to external API clients
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (isSessionCreatedEvent(event)) {
|
|
66
|
+
const session = this.chatService.getSession(event.sessionId);
|
|
67
|
+
if (session) {
|
|
68
|
+
this.trackSession(session);
|
|
69
|
+
}
|
|
70
|
+
} else if (isSessionDeletedEvent(event)) {
|
|
71
|
+
this.sessionListeners.get(event.sessionId)?.dispose();
|
|
72
|
+
this.sessionListeners.delete(event.sessionId);
|
|
73
|
+
}
|
|
74
|
+
this.notifyBackend();
|
|
75
|
+
});
|
|
76
|
+
this.chatService.getSessions().forEach(session => this.trackSession(session));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Notifies the backend about status changes of the given session until the session is deleted. */
|
|
80
|
+
protected trackSession(session: ChatSession): void {
|
|
81
|
+
if (this.sessionListeners.has(session.id)) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this.sessionListeners.set(session.id, session.model.onDidChange(event => {
|
|
85
|
+
if (ChatChangeEvent.isStatusChangedEvent(event)) {
|
|
86
|
+
this.notifyBackend();
|
|
87
|
+
}
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
18
|
+
import { RemoteConnectionProvider, ServiceConnectionProvider } from '@theia/core/lib/browser/messaging/service-connection-provider';
|
|
19
|
+
import { ContainerModule } from '@theia/core/shared/inversify';
|
|
20
|
+
import { EXTERNAL_CHAT_SESSION_PROVIDER_PATH, ExternalChatSessionBackendService, ExternalChatSessionProvider } from '../common/external-chat-session-provider';
|
|
21
|
+
import { AIExternalApiFrontendContribution } from './ai-external-api-frontend-contribution';
|
|
22
|
+
import { FrontendExternalChatSessionProvider } from './frontend-external-chat-session-provider';
|
|
23
|
+
|
|
24
|
+
export default new ContainerModule(bind => {
|
|
25
|
+
bind(FrontendExternalChatSessionProvider).toSelf().inSingletonScope();
|
|
26
|
+
bind(ExternalChatSessionProvider).toService(FrontendExternalChatSessionProvider);
|
|
27
|
+
|
|
28
|
+
bind(ExternalChatSessionBackendService).toDynamicValue(ctx => {
|
|
29
|
+
const connection = ctx.container.get<ServiceConnectionProvider>(RemoteConnectionProvider);
|
|
30
|
+
const provider = ctx.container.get<ExternalChatSessionProvider>(ExternalChatSessionProvider);
|
|
31
|
+
// expose only the provider interface over RPC: handing out the implementation itself
|
|
32
|
+
// would make all of its methods, including the internal ones, remotely callable
|
|
33
|
+
const exposed: ExternalChatSessionProvider = {
|
|
34
|
+
getWorkspace: () => provider.getWorkspace(),
|
|
35
|
+
getSessions: () => provider.getSessions(),
|
|
36
|
+
getSessionSummary: sessionId => provider.getSessionSummary(sessionId),
|
|
37
|
+
getSession: sessionId => provider.getSession(sessionId),
|
|
38
|
+
openSession: sessionId => provider.openSession(sessionId),
|
|
39
|
+
restoreSession: sessionId => provider.restoreSession(sessionId),
|
|
40
|
+
sendPrompt: (sessionId, prompt) => provider.sendPrompt(sessionId, prompt),
|
|
41
|
+
createSession: request => provider.createSession(request)
|
|
42
|
+
};
|
|
43
|
+
return connection.createProxy<ExternalChatSessionBackendService>(EXTERNAL_CHAT_SESSION_PROVIDER_PATH, exposed);
|
|
44
|
+
}).inSingletonScope();
|
|
45
|
+
|
|
46
|
+
bind(AIExternalApiFrontendContribution).toSelf().inSingletonScope();
|
|
47
|
+
bind(FrontendApplicationContribution).toService(AIExternalApiFrontendContribution);
|
|
48
|
+
});
|