Skip to content

Commit 4c4820f

Browse files
add sentToLLM to ModelingStore
1 parent 58b26d2 commit 4c4820f

File tree

6 files changed

+83
-0
lines changed

6 files changed

+83
-0
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,11 @@ interface SetInProgressMethodsMessage {
543543
methods: string[];
544544
}
545545

546+
interface SetSentToLLMMethodsMessage {
547+
t: "setSentToLLMMethods";
548+
methods: string[];
549+
}
550+
546551
interface SwitchModeMessage {
547552
t: "switchMode";
548553
mode: Mode;
@@ -626,6 +631,7 @@ export type ToModelEditorMessage =
626631
| SetModeledMethodsMessage
627632
| SetModifiedMethodsMessage
628633
| SetInProgressMethodsMessage
634+
| SetSentToLLMMethodsMessage
629635
| RevealMethodMessage
630636
| SetAccessPathSuggestionsMessage;
631637

extensions/ql-vscode/src/model-editor/auto-modeler.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,12 @@ export class AutoModeler {
159159
this.databaseItem,
160160
candidateSignatures,
161161
);
162+
163+
// Let the UI know which methods have been sent to the LLM
164+
this.modelingStore.addSentToLLMMethods(
165+
this.databaseItem,
166+
candidateSignatures,
167+
);
162168
}
163169
} finally {
164170
// Clear out in progress methods in case anything went wrong

extensions/ql-vscode/src/model-editor/model-editor-view.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,17 @@ export class ModelEditorView extends AbstractWebview<
835835
}),
836836
);
837837

838+
this.push(
839+
this.modelingEvents.onSentToLLMMethodsChanged(async (event) => {
840+
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
841+
await this.postMessage({
842+
t: "setSentToLLMMethods",
843+
methods: Array.from(event.methods),
844+
});
845+
}
846+
}),
847+
);
848+
838849
this.push(
839850
this.modelingEvents.onRevealInModelEditor(async (event) => {
840851
if (event.dbUri === this.databaseItem.databaseUri.toString()) {

extensions/ql-vscode/src/model-editor/modeling-events.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,19 @@ interface SelectedMethodChangedEvent {
4242
readonly modeledMethods: readonly ModeledMethod[];
4343
readonly isModified: boolean;
4444
readonly isInProgress: boolean;
45+
readonly hasBeenSentToLLM: boolean;
4546
}
4647

4748
interface InProgressMethodsChangedEvent {
4849
readonly dbUri: string;
4950
readonly methods: ReadonlySet<string>;
5051
}
5152

53+
interface SentToLLMMethodsChangedEvent {
54+
readonly dbUri: string;
55+
readonly methods: ReadonlySet<string>;
56+
}
57+
5258
interface RevealInModelEditorEvent {
5359
dbUri: string;
5460
method: Method;
@@ -69,6 +75,7 @@ export class ModelingEvents extends DisposableObject {
6975
public readonly onModifiedMethodsChanged: AppEvent<ModifiedMethodsChangedEvent>;
7076
public readonly onSelectedMethodChanged: AppEvent<SelectedMethodChangedEvent>;
7177
public readonly onInProgressMethodsChanged: AppEvent<InProgressMethodsChangedEvent>;
78+
public readonly onSentToLLMMethodsChanged: AppEvent<SentToLLMMethodsChangedEvent>;
7279
public readonly onRevealInModelEditor: AppEvent<RevealInModelEditorEvent>;
7380
public readonly onFocusModelEditor: AppEvent<FocusModelEditorEvent>;
7481

@@ -82,6 +89,7 @@ export class ModelingEvents extends DisposableObject {
8289
private readonly onModifiedMethodsChangedEventEmitter: AppEventEmitter<ModifiedMethodsChangedEvent>;
8390
private readonly onSelectedMethodChangedEventEmitter: AppEventEmitter<SelectedMethodChangedEvent>;
8491
private readonly onInProgressMethodsChangedEventEmitter: AppEventEmitter<InProgressMethodsChangedEvent>;
92+
private readonly onSentToLLMMethodsChangedEventEmitter: AppEventEmitter<SentToLLMMethodsChangedEvent>;
8593
private readonly onRevealInModelEditorEventEmitter: AppEventEmitter<RevealInModelEditorEvent>;
8694
private readonly onFocusModelEditorEventEmitter: AppEventEmitter<FocusModelEditorEvent>;
8795

@@ -141,6 +149,12 @@ export class ModelingEvents extends DisposableObject {
141149
this.onInProgressMethodsChanged =
142150
this.onInProgressMethodsChangedEventEmitter.event;
143151

152+
this.onSentToLLMMethodsChangedEventEmitter = this.push(
153+
app.createEventEmitter<SentToLLMMethodsChangedEvent>(),
154+
);
155+
this.onSentToLLMMethodsChanged =
156+
this.onSentToLLMMethodsChangedEventEmitter.event;
157+
144158
this.onRevealInModelEditorEventEmitter = this.push(
145159
app.createEventEmitter<RevealInModelEditorEvent>(),
146160
);
@@ -226,6 +240,7 @@ export class ModelingEvents extends DisposableObject {
226240
modeledMethods: ModeledMethod[],
227241
isModified: boolean,
228242
isInProgress: boolean,
243+
hasBeenSentToLLM: boolean,
229244
) {
230245
this.onSelectedMethodChangedEventEmitter.fire({
231246
databaseItem,
@@ -234,6 +249,7 @@ export class ModelingEvents extends DisposableObject {
234249
modeledMethods,
235250
isModified,
236251
isInProgress,
252+
hasBeenSentToLLM,
237253
});
238254
}
239255

@@ -247,6 +263,16 @@ export class ModelingEvents extends DisposableObject {
247263
});
248264
}
249265

266+
public fireSentToLLMMethodsChangedEvent(
267+
dbUri: string,
268+
methods: ReadonlySet<string>,
269+
) {
270+
this.onSentToLLMMethodsChangedEventEmitter.fire({
271+
dbUri,
272+
methods,
273+
});
274+
}
275+
250276
public fireRevealInModelEditorEvent(dbUri: string, method: Method) {
251277
this.onRevealInModelEditorEventEmitter.fire({
252278
dbUri,

extensions/ql-vscode/src/model-editor/modeling-store.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ interface InternalDbModelingState {
1414
modeledMethods: Record<string, ModeledMethod[]>;
1515
modifiedMethodSignatures: Set<string>;
1616
inProgressMethods: Set<string>;
17+
sentToLLMMethods: Set<string>;
1718
selectedMethod: Method | undefined;
1819
selectedUsage: Usage | undefined;
1920
}
@@ -26,6 +27,7 @@ interface DbModelingState {
2627
readonly modeledMethods: Readonly<Record<string, readonly ModeledMethod[]>>;
2728
readonly modifiedMethodSignatures: ReadonlySet<string>;
2829
readonly inProgressMethods: ReadonlySet<string>;
30+
readonly sentToLLMMethods: ReadonlySet<string>;
2931
readonly selectedMethod: Method | undefined;
3032
readonly selectedUsage: Usage | undefined;
3133
}
@@ -37,6 +39,7 @@ interface SelectedMethodDetails {
3739
readonly modeledMethods: readonly ModeledMethod[];
3840
readonly isModified: boolean;
3941
readonly isInProgress: boolean;
42+
readonly hasBeenSentToLLM: boolean;
4043
}
4144

4245
export class ModelingStore extends DisposableObject {
@@ -59,6 +62,7 @@ export class ModelingStore extends DisposableObject {
5962
mode,
6063
modeledMethods: {},
6164
modifiedMethodSignatures: new Set(),
65+
sentToLLMMethods: new Set(),
6266
selectedMethod: undefined,
6367
selectedUsage: undefined,
6468
inProgressMethods: new Set(),
@@ -301,13 +305,15 @@ export class ModelingStore extends DisposableObject {
301305
const modeledMethods = dbState.modeledMethods[method.signature] ?? [];
302306
const isModified = dbState.modifiedMethodSignatures.has(method.signature);
303307
const isInProgress = dbState.inProgressMethods.has(method.signature);
308+
const hasBeenSentToLLM = dbState.sentToLLMMethods.has(method.signature);
304309
this.modelingEvents.fireSelectedMethodChangedEvent(
305310
dbItem,
306311
method,
307312
usage,
308313
modeledMethods,
309314
isModified,
310315
isInProgress,
316+
hasBeenSentToLLM,
311317
);
312318
}
313319

@@ -336,6 +342,15 @@ export class ModelingStore extends DisposableObject {
336342
});
337343
}
338344

345+
public addSentToLLMMethods(dbItem: DatabaseItem, sentToLLMMethods: string[]) {
346+
this.changeSentToLLMMethods(dbItem, (state) => {
347+
state.sentToLLMMethods = new Set([
348+
...state.sentToLLMMethods,
349+
...sentToLLMMethods,
350+
]);
351+
});
352+
}
353+
339354
public getSelectedMethodDetails(): SelectedMethodDetails | undefined {
340355
const dbState = this.getInternalStateForActiveDb();
341356
if (!dbState) {
@@ -356,6 +371,7 @@ export class ModelingStore extends DisposableObject {
356371
selectedMethod.signature,
357372
),
358373
isInProgress: dbState.inProgressMethods.has(selectedMethod.signature),
374+
hasBeenSentToLLM: dbState.sentToLLMMethods.has(selectedMethod.signature),
359375
};
360376
}
361377

@@ -412,4 +428,18 @@ export class ModelingStore extends DisposableObject {
412428
state.inProgressMethods,
413429
);
414430
}
431+
432+
private changeSentToLLMMethods(
433+
dbItem: DatabaseItem,
434+
updateState: (state: InternalDbModelingState) => void,
435+
) {
436+
const state = this.getState(dbItem);
437+
438+
updateState(state);
439+
440+
this.modelingEvents.fireSentToLLMMethodsChangedEvent(
441+
dbItem.databaseUri.toString(),
442+
state.sentToLLMMethods,
443+
);
444+
}
415445
}

extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ export function ModelEditor({
148148
setInProgressMethods(new Set(msg.methods));
149149
break;
150150
}
151+
case "setSentToLLMMethods": {
152+
// TODO: set state
153+
break;
154+
}
151155
case "revealMethod":
152156
setRevealedMethodSignature(msg.methodSignature);
153157
break;

0 commit comments

Comments
 (0)