Skip to content

Commit 801df7b

Browse files
authored
Merge branch 'main' into aeisenberg/multi-token
2 parents 3699f0b + a6c7af0 commit 801df7b

File tree

25 files changed

+483
-278
lines changed

25 files changed

+483
-278
lines changed

.github/workflows/cli-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262

6363
- uses: actions/setup-node@v3
6464
with:
65-
node-version: '18.15.0'
65+
node-version-file: extensions/ql-vscode/.nvmrc
6666
cache: 'npm'
6767
cache-dependency-path: extensions/ql-vscode/package-lock.json
6868

.github/workflows/main.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222

2323
- uses: actions/setup-node@v3
2424
with:
25-
node-version: '18.15.0'
25+
node-version-file: extensions/ql-vscode/.nvmrc
2626
cache: 'npm'
2727
cache-dependency-path: extensions/ql-vscode/package-lock.json
2828

@@ -64,7 +64,7 @@ jobs:
6464

6565
- uses: actions/setup-node@v3
6666
with:
67-
node-version: '18.15.0'
67+
node-version-file: extensions/ql-vscode/.nvmrc
6868
cache: 'npm'
6969
cache-dependency-path: extensions/ql-vscode/package-lock.json
7070

@@ -81,6 +81,8 @@ jobs:
8181
8282
- name: Lint
8383
working-directory: extensions/ql-vscode
84+
env:
85+
NODE_OPTIONS: '--max-old-space-size=4096'
8486
run: |
8587
npm run lint
8688
@@ -110,7 +112,7 @@ jobs:
110112

111113
- uses: actions/setup-node@v3
112114
with:
113-
node-version: '18.15.0'
115+
node-version-file: extensions/ql-vscode/.nvmrc
114116
cache: 'npm'
115117
cache-dependency-path: extensions/ql-vscode/package-lock.json
116118

@@ -149,7 +151,7 @@ jobs:
149151

150152
- uses: actions/setup-node@v3
151153
with:
152-
node-version: '18.15.0'
154+
node-version-file: extensions/ql-vscode/.nvmrc
153155
cache: 'npm'
154156
cache-dependency-path: extensions/ql-vscode/package-lock.json
155157

@@ -183,7 +185,7 @@ jobs:
183185

184186
- uses: actions/setup-node@v3
185187
with:
186-
node-version: '18.15.0'
188+
node-version-file: extensions/ql-vscode/.nvmrc
187189
cache: 'npm'
188190
cache-dependency-path: extensions/ql-vscode/package-lock.json
189191

@@ -251,7 +253,7 @@ jobs:
251253

252254
- uses: actions/setup-node@v3
253255
with:
254-
node-version: '18.15.0'
256+
node-version-file: extensions/ql-vscode/.nvmrc
255257
cache: 'npm'
256258
cache-dependency-path: extensions/ql-vscode/package-lock.json
257259

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222

2323
- uses: actions/setup-node@v3
2424
with:
25-
node-version: '18.15.0'
25+
node-version-file: extensions/ql-vscode/.nvmrc
2626

2727
- name: Install dependencies
2828
run: |

docs/node-version.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ You can find this info by seleting "About Visual Studio Code" from the top menu.
1515

1616
The following files will need to be updated:
1717

18-
- `.github/workflows/cli-test.yml` - the "node-version: '[VERSION]'" setting
19-
- `.github/workflows/main.yml` - all the "node-version: '[VERSION]'" settings
20-
- `.github/workflows/release.yml` - the "node-version: '[VERSION]'" setting
21-
- `extensions/ql-vscode/.nvmrc` - this will enable nvm to automatically switch to the correct node version when you're in the project folder
22-
- `extensions/ql-vscode/package-lock.json` - the "engines.node: '[VERSION]'" setting
18+
- `extensions/ql-vscode/.nvmrc` - this will enable nvm to automatically switch to the correct Node
19+
version when you're in the project folder. It will also change the Node version the GitHub Actions
20+
workflows use.
2321
- `extensions/ql-vscode/package.json` - the "engines.node: '[VERSION]'" setting
2422
- `extensions/ql-vscode/package.json` - the "@types/node: '[VERSION]'" dependency
2523

24+
Then run `npm install` to update the `extensions/ql-vscode/package-lock.json` file.
25+
2626
## Node.js version used in tests
2727

2828
Unit tests will use whatever version of Node.js is installed locally. In CI this will be the version specified in the workflow.

extensions/ql-vscode/src/config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,7 @@ const MODEL_SETTING = new Setting("model", ROOT_SETTING);
709709
const FLOW_GENERATION = new Setting("flowGeneration", MODEL_SETTING);
710710
const LLM_GENERATION = new Setting("llmGeneration", MODEL_SETTING);
711711
const EXTENSIONS_DIRECTORY = new Setting("extensionsDirectory", MODEL_SETTING);
712+
const SHOW_MULTIPLE_MODELS = new Setting("showMultipleModels", MODEL_SETTING);
712713

713714
export function showFlowGeneration(): boolean {
714715
return !!FLOW_GENERATION.getValue<boolean>();
@@ -723,3 +724,7 @@ export function getExtensionsDirectory(languageId: string): string | undefined {
723724
languageId,
724725
});
725726
}
727+
728+
export function showMultipleModels(): boolean {
729+
return !!SHOW_MULTIPLE_MODELS.getValue<boolean>();
730+
}

extensions/ql-vscode/src/extension.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,7 @@ async function activateWithInstalledDistribution(
871871
ctx,
872872
queryHistoryConfigurationListener,
873873
labelProvider,
874+
languageContext,
874875
async (
875876
from: CompletedLocalQueryInfo,
876877
to: CompletedLocalQueryInfo,

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { QueryRunner } from "../query-server";
1616
import { DatabaseItem } from "../databases/local-databases";
1717
import { Mode } from "./shared/mode";
1818
import { CancellationTokenSource } from "vscode";
19+
import { convertToLegacyModeledMethods } from "./modeled-methods-legacy";
1920

2021
// Limit the number of candidates we send to the model in each request
2122
// to avoid long requests.
@@ -192,11 +193,13 @@ export class AutoModeler {
192193
filename: "auto-model.yml",
193194
});
194195

195-
const loadedMethods = loadDataExtensionYaml(models);
196-
if (!loadedMethods) {
196+
const rawLoadedMethods = loadDataExtensionYaml(models);
197+
if (!rawLoadedMethods) {
197198
return;
198199
}
199200

201+
const loadedMethods = convertToLegacyModeledMethods(rawLoadedMethods);
202+
200203
// Any candidate that was part of the response is a negative result
201204
// meaning that the canidate is not a sink for the kinds that the LLM is checking for.
202205
// For now we model this as a sink neutral method, however this is subject

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ import {
3434
import { Method, Usage } from "./method";
3535
import { ModeledMethod } from "./modeled-method";
3636
import { ExtensionPack } from "./shared/extension-pack";
37-
import { showFlowGeneration, showLlmGeneration } from "../config";
37+
import {
38+
showFlowGeneration,
39+
showLlmGeneration,
40+
showMultipleModels,
41+
} from "../config";
3842
import { Mode } from "./shared/mode";
3943
import { loadModeledMethods, saveModeledMethods } from "./modeled-method-fs";
4044
import { pickExtensionPack } from "./extension-pack-picker";
@@ -365,6 +369,7 @@ export class ModelEditorView extends AbstractWebview<
365369
extensionPack: this.extensionPack,
366370
showFlowGeneration: showFlowGeneration(),
367371
showLlmButton,
372+
showMultipleModels: showMultipleModels(),
368373
mode: this.mode,
369374
},
370375
});

extensions/ql-vscode/src/model-editor/modeled-method-fs.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";
1010
import { load as loadYaml } from "js-yaml";
1111
import { CodeQLCliServer } from "../codeql-cli/cli";
1212
import { pathsEqual } from "../common/files";
13+
import {
14+
convertFromLegacyModeledMethods,
15+
convertFromLegacyModeledMethodsFiles,
16+
convertToLegacyModeledMethods,
17+
} from "./modeled-methods-legacy";
1318

1419
export async function saveModeledMethods(
1520
extensionPack: ExtensionPack,
@@ -29,8 +34,8 @@ export async function saveModeledMethods(
2934
const yamls = createDataExtensionYamls(
3035
language,
3136
methods,
32-
modeledMethods,
33-
existingModeledMethods,
37+
convertFromLegacyModeledMethods(modeledMethods),
38+
convertFromLegacyModeledMethodsFiles(existingModeledMethods),
3439
mode,
3540
);
3641

@@ -68,7 +73,8 @@ async function loadModeledMethodFiles(
6873
);
6974
continue;
7075
}
71-
modeledMethodsByFile[modelFile] = modeledMethods;
76+
modeledMethodsByFile[modelFile] =
77+
convertToLegacyModeledMethods(modeledMethods);
7278
}
7379

7480
return modeledMethodsByFile;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { ModeledMethod } from "./modeled-method";
2+
3+
export function convertFromLegacyModeledMethods(
4+
modeledMethods: Record<string, ModeledMethod>,
5+
): Record<string, ModeledMethod[]> {
6+
// Convert a single ModeledMethod to an array of ModeledMethods
7+
return Object.fromEntries(
8+
Object.entries(modeledMethods).map(([signature, modeledMethod]) => {
9+
return [signature, [modeledMethod]];
10+
}),
11+
);
12+
}
13+
14+
export function convertToLegacyModeledMethods(
15+
modeledMethods: Record<string, ModeledMethod[]>,
16+
): Record<string, ModeledMethod> {
17+
// Always take the first modeled method in the array
18+
return Object.fromEntries(
19+
Object.entries(modeledMethods).map(([signature, modeledMethods]) => {
20+
return [signature, modeledMethods[0]];
21+
}),
22+
);
23+
}
24+
25+
export function convertFromLegacyModeledMethodsFiles(
26+
modeledMethods: Record<string, Record<string, ModeledMethod>>,
27+
): Record<string, Record<string, ModeledMethod[]>> {
28+
return Object.fromEntries(
29+
Object.entries(modeledMethods).map(([filename, modeledMethods]) => {
30+
return [filename, convertFromLegacyModeledMethods(modeledMethods)];
31+
}),
32+
);
33+
}

0 commit comments

Comments
 (0)