Merge pull request #3374 from github/robertbrignull/sentToLLMMethods
Add sentToLLM to ModelingStore
This commit is contained in:
@@ -543,6 +543,11 @@ interface SetInProgressMethodsMessage {
|
|||||||
methods: string[];
|
methods: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface SetProcessedByAutoModelMethodsMessage {
|
||||||
|
t: "setProcessedByAutoModelMethods";
|
||||||
|
methods: string[];
|
||||||
|
}
|
||||||
|
|
||||||
interface SwitchModeMessage {
|
interface SwitchModeMessage {
|
||||||
t: "switchMode";
|
t: "switchMode";
|
||||||
mode: Mode;
|
mode: Mode;
|
||||||
@@ -626,6 +631,7 @@ export type ToModelEditorMessage =
|
|||||||
| SetModeledMethodsMessage
|
| SetModeledMethodsMessage
|
||||||
| SetModifiedMethodsMessage
|
| SetModifiedMethodsMessage
|
||||||
| SetInProgressMethodsMessage
|
| SetInProgressMethodsMessage
|
||||||
|
| SetProcessedByAutoModelMethodsMessage
|
||||||
| RevealMethodMessage
|
| RevealMethodMessage
|
||||||
| SetAccessPathSuggestionsMessage;
|
| SetAccessPathSuggestionsMessage;
|
||||||
|
|
||||||
|
|||||||
@@ -159,6 +159,12 @@ export class AutoModeler {
|
|||||||
this.databaseItem,
|
this.databaseItem,
|
||||||
candidateSignatures,
|
candidateSignatures,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Let the UI know which methods have been sent to the LLM
|
||||||
|
this.modelingStore.addProcessedByAutoModelMethods(
|
||||||
|
this.databaseItem,
|
||||||
|
candidateSignatures,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
// Clear out in progress methods in case anything went wrong
|
// Clear out in progress methods in case anything went wrong
|
||||||
|
|||||||
@@ -835,6 +835,19 @@ export class ModelEditorView extends AbstractWebview<
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.push(
|
||||||
|
this.modelingEvents.onProcessedByAutoModelMethodsChanged(
|
||||||
|
async (event) => {
|
||||||
|
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
|
||||||
|
await this.postMessage({
|
||||||
|
t: "setProcessedByAutoModelMethods",
|
||||||
|
methods: Array.from(event.methods),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
this.push(
|
this.push(
|
||||||
this.modelingEvents.onRevealInModelEditor(async (event) => {
|
this.modelingEvents.onRevealInModelEditor(async (event) => {
|
||||||
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
|
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ interface SelectedMethodChangedEvent {
|
|||||||
readonly modeledMethods: readonly ModeledMethod[];
|
readonly modeledMethods: readonly ModeledMethod[];
|
||||||
readonly isModified: boolean;
|
readonly isModified: boolean;
|
||||||
readonly isInProgress: boolean;
|
readonly isInProgress: boolean;
|
||||||
|
readonly processedByAutoModel: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface InProgressMethodsChangedEvent {
|
interface InProgressMethodsChangedEvent {
|
||||||
@@ -49,6 +50,11 @@ interface InProgressMethodsChangedEvent {
|
|||||||
readonly methods: ReadonlySet<string>;
|
readonly methods: ReadonlySet<string>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ProcessedByAutoModelMethodsChangedEvent {
|
||||||
|
readonly dbUri: string;
|
||||||
|
readonly methods: ReadonlySet<string>;
|
||||||
|
}
|
||||||
|
|
||||||
interface RevealInModelEditorEvent {
|
interface RevealInModelEditorEvent {
|
||||||
dbUri: string;
|
dbUri: string;
|
||||||
method: Method;
|
method: Method;
|
||||||
@@ -69,6 +75,7 @@ export class ModelingEvents extends DisposableObject {
|
|||||||
public readonly onModifiedMethodsChanged: AppEvent<ModifiedMethodsChangedEvent>;
|
public readonly onModifiedMethodsChanged: AppEvent<ModifiedMethodsChangedEvent>;
|
||||||
public readonly onSelectedMethodChanged: AppEvent<SelectedMethodChangedEvent>;
|
public readonly onSelectedMethodChanged: AppEvent<SelectedMethodChangedEvent>;
|
||||||
public readonly onInProgressMethodsChanged: AppEvent<InProgressMethodsChangedEvent>;
|
public readonly onInProgressMethodsChanged: AppEvent<InProgressMethodsChangedEvent>;
|
||||||
|
public readonly onProcessedByAutoModelMethodsChanged: AppEvent<ProcessedByAutoModelMethodsChangedEvent>;
|
||||||
public readonly onRevealInModelEditor: AppEvent<RevealInModelEditorEvent>;
|
public readonly onRevealInModelEditor: AppEvent<RevealInModelEditorEvent>;
|
||||||
public readonly onFocusModelEditor: AppEvent<FocusModelEditorEvent>;
|
public readonly onFocusModelEditor: AppEvent<FocusModelEditorEvent>;
|
||||||
|
|
||||||
@@ -82,6 +89,7 @@ export class ModelingEvents extends DisposableObject {
|
|||||||
private readonly onModifiedMethodsChangedEventEmitter: AppEventEmitter<ModifiedMethodsChangedEvent>;
|
private readonly onModifiedMethodsChangedEventEmitter: AppEventEmitter<ModifiedMethodsChangedEvent>;
|
||||||
private readonly onSelectedMethodChangedEventEmitter: AppEventEmitter<SelectedMethodChangedEvent>;
|
private readonly onSelectedMethodChangedEventEmitter: AppEventEmitter<SelectedMethodChangedEvent>;
|
||||||
private readonly onInProgressMethodsChangedEventEmitter: AppEventEmitter<InProgressMethodsChangedEvent>;
|
private readonly onInProgressMethodsChangedEventEmitter: AppEventEmitter<InProgressMethodsChangedEvent>;
|
||||||
|
private readonly onProcessedByAutoModelMethodsChangedEventEmitter: AppEventEmitter<ProcessedByAutoModelMethodsChangedEvent>;
|
||||||
private readonly onRevealInModelEditorEventEmitter: AppEventEmitter<RevealInModelEditorEvent>;
|
private readonly onRevealInModelEditorEventEmitter: AppEventEmitter<RevealInModelEditorEvent>;
|
||||||
private readonly onFocusModelEditorEventEmitter: AppEventEmitter<FocusModelEditorEvent>;
|
private readonly onFocusModelEditorEventEmitter: AppEventEmitter<FocusModelEditorEvent>;
|
||||||
|
|
||||||
@@ -141,6 +149,12 @@ export class ModelingEvents extends DisposableObject {
|
|||||||
this.onInProgressMethodsChanged =
|
this.onInProgressMethodsChanged =
|
||||||
this.onInProgressMethodsChangedEventEmitter.event;
|
this.onInProgressMethodsChangedEventEmitter.event;
|
||||||
|
|
||||||
|
this.onProcessedByAutoModelMethodsChangedEventEmitter = this.push(
|
||||||
|
app.createEventEmitter<ProcessedByAutoModelMethodsChangedEvent>(),
|
||||||
|
);
|
||||||
|
this.onProcessedByAutoModelMethodsChanged =
|
||||||
|
this.onProcessedByAutoModelMethodsChangedEventEmitter.event;
|
||||||
|
|
||||||
this.onRevealInModelEditorEventEmitter = this.push(
|
this.onRevealInModelEditorEventEmitter = this.push(
|
||||||
app.createEventEmitter<RevealInModelEditorEvent>(),
|
app.createEventEmitter<RevealInModelEditorEvent>(),
|
||||||
);
|
);
|
||||||
@@ -226,6 +240,7 @@ export class ModelingEvents extends DisposableObject {
|
|||||||
modeledMethods: ModeledMethod[],
|
modeledMethods: ModeledMethod[],
|
||||||
isModified: boolean,
|
isModified: boolean,
|
||||||
isInProgress: boolean,
|
isInProgress: boolean,
|
||||||
|
processedByAutoModel: boolean,
|
||||||
) {
|
) {
|
||||||
this.onSelectedMethodChangedEventEmitter.fire({
|
this.onSelectedMethodChangedEventEmitter.fire({
|
||||||
databaseItem,
|
databaseItem,
|
||||||
@@ -234,6 +249,7 @@ export class ModelingEvents extends DisposableObject {
|
|||||||
modeledMethods,
|
modeledMethods,
|
||||||
isModified,
|
isModified,
|
||||||
isInProgress,
|
isInProgress,
|
||||||
|
processedByAutoModel,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,6 +263,16 @@ export class ModelingEvents extends DisposableObject {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fireProcessedByAutoModelMethodsChangedEvent(
|
||||||
|
dbUri: string,
|
||||||
|
methods: ReadonlySet<string>,
|
||||||
|
) {
|
||||||
|
this.onProcessedByAutoModelMethodsChangedEventEmitter.fire({
|
||||||
|
dbUri,
|
||||||
|
methods,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public fireRevealInModelEditorEvent(dbUri: string, method: Method) {
|
public fireRevealInModelEditorEvent(dbUri: string, method: Method) {
|
||||||
this.onRevealInModelEditorEventEmitter.fire({
|
this.onRevealInModelEditorEventEmitter.fire({
|
||||||
dbUri,
|
dbUri,
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ interface InternalDbModelingState {
|
|||||||
modeledMethods: Record<string, ModeledMethod[]>;
|
modeledMethods: Record<string, ModeledMethod[]>;
|
||||||
modifiedMethodSignatures: Set<string>;
|
modifiedMethodSignatures: Set<string>;
|
||||||
inProgressMethods: Set<string>;
|
inProgressMethods: Set<string>;
|
||||||
|
processedByAutoModelMethods: Set<string>;
|
||||||
selectedMethod: Method | undefined;
|
selectedMethod: Method | undefined;
|
||||||
selectedUsage: Usage | undefined;
|
selectedUsage: Usage | undefined;
|
||||||
}
|
}
|
||||||
@@ -26,6 +27,7 @@ interface DbModelingState {
|
|||||||
readonly modeledMethods: Readonly<Record<string, readonly ModeledMethod[]>>;
|
readonly modeledMethods: Readonly<Record<string, readonly ModeledMethod[]>>;
|
||||||
readonly modifiedMethodSignatures: ReadonlySet<string>;
|
readonly modifiedMethodSignatures: ReadonlySet<string>;
|
||||||
readonly inProgressMethods: ReadonlySet<string>;
|
readonly inProgressMethods: ReadonlySet<string>;
|
||||||
|
readonly processedByAutoModelMethods: ReadonlySet<string>;
|
||||||
readonly selectedMethod: Method | undefined;
|
readonly selectedMethod: Method | undefined;
|
||||||
readonly selectedUsage: Usage | undefined;
|
readonly selectedUsage: Usage | undefined;
|
||||||
}
|
}
|
||||||
@@ -37,6 +39,7 @@ interface SelectedMethodDetails {
|
|||||||
readonly modeledMethods: readonly ModeledMethod[];
|
readonly modeledMethods: readonly ModeledMethod[];
|
||||||
readonly isModified: boolean;
|
readonly isModified: boolean;
|
||||||
readonly isInProgress: boolean;
|
readonly isInProgress: boolean;
|
||||||
|
readonly processedByAutoModel: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ModelingStore extends DisposableObject {
|
export class ModelingStore extends DisposableObject {
|
||||||
@@ -59,6 +62,7 @@ export class ModelingStore extends DisposableObject {
|
|||||||
mode,
|
mode,
|
||||||
modeledMethods: {},
|
modeledMethods: {},
|
||||||
modifiedMethodSignatures: new Set(),
|
modifiedMethodSignatures: new Set(),
|
||||||
|
processedByAutoModelMethods: new Set(),
|
||||||
selectedMethod: undefined,
|
selectedMethod: undefined,
|
||||||
selectedUsage: undefined,
|
selectedUsage: undefined,
|
||||||
inProgressMethods: new Set(),
|
inProgressMethods: new Set(),
|
||||||
@@ -301,6 +305,9 @@ export class ModelingStore extends DisposableObject {
|
|||||||
const modeledMethods = dbState.modeledMethods[method.signature] ?? [];
|
const modeledMethods = dbState.modeledMethods[method.signature] ?? [];
|
||||||
const isModified = dbState.modifiedMethodSignatures.has(method.signature);
|
const isModified = dbState.modifiedMethodSignatures.has(method.signature);
|
||||||
const isInProgress = dbState.inProgressMethods.has(method.signature);
|
const isInProgress = dbState.inProgressMethods.has(method.signature);
|
||||||
|
const processedByAutoModel = dbState.processedByAutoModelMethods.has(
|
||||||
|
method.signature,
|
||||||
|
);
|
||||||
this.modelingEvents.fireSelectedMethodChangedEvent(
|
this.modelingEvents.fireSelectedMethodChangedEvent(
|
||||||
dbItem,
|
dbItem,
|
||||||
method,
|
method,
|
||||||
@@ -308,6 +315,7 @@ export class ModelingStore extends DisposableObject {
|
|||||||
modeledMethods,
|
modeledMethods,
|
||||||
isModified,
|
isModified,
|
||||||
isInProgress,
|
isInProgress,
|
||||||
|
processedByAutoModel,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -336,6 +344,18 @@ export class ModelingStore extends DisposableObject {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public addProcessedByAutoModelMethods(
|
||||||
|
dbItem: DatabaseItem,
|
||||||
|
processedByAutoModelMethods: string[],
|
||||||
|
) {
|
||||||
|
this.changeProcessedByAutoModelMethods(dbItem, (state) => {
|
||||||
|
state.processedByAutoModelMethods = new Set([
|
||||||
|
...state.processedByAutoModelMethods,
|
||||||
|
...processedByAutoModelMethods,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public getSelectedMethodDetails(): SelectedMethodDetails | undefined {
|
public getSelectedMethodDetails(): SelectedMethodDetails | undefined {
|
||||||
const dbState = this.getInternalStateForActiveDb();
|
const dbState = this.getInternalStateForActiveDb();
|
||||||
if (!dbState) {
|
if (!dbState) {
|
||||||
@@ -356,6 +376,9 @@ export class ModelingStore extends DisposableObject {
|
|||||||
selectedMethod.signature,
|
selectedMethod.signature,
|
||||||
),
|
),
|
||||||
isInProgress: dbState.inProgressMethods.has(selectedMethod.signature),
|
isInProgress: dbState.inProgressMethods.has(selectedMethod.signature),
|
||||||
|
processedByAutoModel: dbState.processedByAutoModelMethods.has(
|
||||||
|
selectedMethod.signature,
|
||||||
|
),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -412,4 +435,18 @@ export class ModelingStore extends DisposableObject {
|
|||||||
state.inProgressMethods,
|
state.inProgressMethods,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private changeProcessedByAutoModelMethods(
|
||||||
|
dbItem: DatabaseItem,
|
||||||
|
updateState: (state: InternalDbModelingState) => void,
|
||||||
|
) {
|
||||||
|
const state = this.getState(dbItem);
|
||||||
|
|
||||||
|
updateState(state);
|
||||||
|
|
||||||
|
this.modelingEvents.fireProcessedByAutoModelMethodsChangedEvent(
|
||||||
|
dbItem.databaseUri.toString(),
|
||||||
|
state.processedByAutoModelMethods,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,6 +148,10 @@ export function ModelEditor({
|
|||||||
setInProgressMethods(new Set(msg.methods));
|
setInProgressMethods(new Set(msg.methods));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "setProcessedByAutoModelMethods": {
|
||||||
|
// TODO: set state
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "revealMethod":
|
case "revealMethod":
|
||||||
setRevealedMethodSignature(msg.methodSignature);
|
setRevealedMethodSignature(msg.methodSignature);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ export function createMockModelingEvents({
|
|||||||
onModeledMethodsChanged = jest.fn(),
|
onModeledMethodsChanged = jest.fn(),
|
||||||
onModifiedMethodsChanged = jest.fn(),
|
onModifiedMethodsChanged = jest.fn(),
|
||||||
onInProgressMethodsChanged = jest.fn(),
|
onInProgressMethodsChanged = jest.fn(),
|
||||||
|
onProcessedByAutoModelMethodsChanged = jest.fn(),
|
||||||
onRevealInModelEditor = jest.fn(),
|
onRevealInModelEditor = jest.fn(),
|
||||||
onFocusModelEditor = jest.fn(),
|
onFocusModelEditor = jest.fn(),
|
||||||
}: {
|
}: {
|
||||||
@@ -21,6 +22,7 @@ export function createMockModelingEvents({
|
|||||||
onModeledMethodsChanged?: ModelingEvents["onModeledMethodsChanged"];
|
onModeledMethodsChanged?: ModelingEvents["onModeledMethodsChanged"];
|
||||||
onModifiedMethodsChanged?: ModelingEvents["onModifiedMethodsChanged"];
|
onModifiedMethodsChanged?: ModelingEvents["onModifiedMethodsChanged"];
|
||||||
onInProgressMethodsChanged?: ModelingEvents["onInProgressMethodsChanged"];
|
onInProgressMethodsChanged?: ModelingEvents["onInProgressMethodsChanged"];
|
||||||
|
onProcessedByAutoModelMethodsChanged?: ModelingEvents["onProcessedByAutoModelMethodsChanged"];
|
||||||
onRevealInModelEditor?: ModelingEvents["onRevealInModelEditor"];
|
onRevealInModelEditor?: ModelingEvents["onRevealInModelEditor"];
|
||||||
onFocusModelEditor?: ModelingEvents["onFocusModelEditor"];
|
onFocusModelEditor?: ModelingEvents["onFocusModelEditor"];
|
||||||
} = {}): ModelingEvents {
|
} = {}): ModelingEvents {
|
||||||
@@ -33,6 +35,7 @@ export function createMockModelingEvents({
|
|||||||
onModeledMethodsChanged,
|
onModeledMethodsChanged,
|
||||||
onModifiedMethodsChanged,
|
onModifiedMethodsChanged,
|
||||||
onInProgressMethodsChanged,
|
onInProgressMethodsChanged,
|
||||||
|
onProcessedByAutoModelMethodsChanged,
|
||||||
onRevealInModelEditor,
|
onRevealInModelEditor,
|
||||||
onFocusModelEditor,
|
onFocusModelEditor,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user