@codyswann/lisa 2.219.0 → 2.219.1
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/all/copy-contents/gitignore +6 -1
- package/cdk/copy-overwrite/eslint.config.ts +25 -3
- package/cdk/copy-overwrite/eslint.slow.config.ts +28 -1
- package/expo/copy-overwrite/eslint.config.ts +26 -3
- package/expo/copy-overwrite/eslint.slow.config.ts +32 -1
- package/expo/copy-overwrite/scripts/check-e2e-coverage.mjs +1 -1
- package/expo/create-only/e2e.thresholds.json +3 -2
- package/expo/package-lisa/package.lisa.json +4 -2
- package/harper-fabric/copy-overwrite/eslint.config.ts +24 -2
- package/nestjs/copy-overwrite/eslint.config.ts +27 -3
- package/nestjs/copy-overwrite/eslint.slow.config.ts +33 -2
- package/package.json +1 -1
- package/phaser/copy-contents/gitignore +13 -0
- package/phaser/copy-overwrite/.github/workflows/ci.yml +3 -0
- package/phaser/copy-overwrite/.husky/pre-push.verify +4 -1
- package/phaser/copy-overwrite/eslint.config.ts +28 -3
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/rails/create-only/.github/workflows/ci.yml +12 -0
- package/typescript/copy-contents/.husky/pre-commit +4 -1
- package/typescript/copy-overwrite/audit.ignore.config.json +0 -5
- package/typescript/copy-overwrite/eslint.config.ts +27 -3
- package/typescript/copy-overwrite/eslint.slow.config.ts +32 -1
- package/typescript/package-lisa/package.lisa.json +4 -2
|
@@ -9,6 +9,8 @@ jspm_packages
|
|
|
9
9
|
dist/
|
|
10
10
|
dist
|
|
11
11
|
.build/
|
|
12
|
+
# NestJS pre-push AppModule boot-check scratch dir (untracked; keep out of `git add -A`)
|
|
13
|
+
.build-boot/
|
|
12
14
|
.serverless/
|
|
13
15
|
.serverless
|
|
14
16
|
cdk.out/
|
|
@@ -157,8 +159,11 @@ service-key.json
|
|
|
157
159
|
# Task files
|
|
158
160
|
.windsurfrules
|
|
159
161
|
.taskmasterconfig
|
|
160
|
-
|
|
162
|
+
# Ignore stray tasks.json anywhere, but keep the tracked tasks/tasks.json.
|
|
163
|
+
# The broad ignore MUST precede the re-include — gitignore is last-match-wins,
|
|
164
|
+
# so a `tasks.json` rule after `!tasks/tasks.json` would re-ignore it.
|
|
161
165
|
tasks.json
|
|
166
|
+
!tasks/tasks.json
|
|
162
167
|
|
|
163
168
|
# AI Assistant and MCP
|
|
164
169
|
**/.claude/settings.local.json
|
|
@@ -7,11 +7,15 @@
|
|
|
7
7
|
* ESLint 9 Flat Config - Main Entry Point (CDK)
|
|
8
8
|
*
|
|
9
9
|
* Thin wrapper around @codyswann/lisa eslint config factory.
|
|
10
|
-
* Customize via eslint.config.local.ts
|
|
10
|
+
* Customize via eslint.config.local.ts, eslint.thresholds.json, and the
|
|
11
|
+
* optional (create-only) eslint.ignore.config.local.json — its `ignores` are
|
|
12
|
+
* merged into the ignore list so host customizations survive the
|
|
13
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
11
14
|
*
|
|
12
15
|
* @see https://eslint.org/docs/latest/use/configure/configuration-files-new
|
|
13
16
|
* @module eslint.config
|
|
14
17
|
*/
|
|
18
|
+
import { existsSync } from "fs";
|
|
15
19
|
import { createRequire } from "module";
|
|
16
20
|
import path from "path";
|
|
17
21
|
import { fileURLToPath } from "url";
|
|
@@ -31,11 +35,29 @@ const thresholdsConfig = require("./eslint.thresholds.json");
|
|
|
31
35
|
const __filename = fileURLToPath(import.meta.url);
|
|
32
36
|
const __dirname = path.dirname(__filename);
|
|
33
37
|
|
|
34
|
-
|
|
38
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
39
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
40
|
+
// overwrites eslint.ignore.config.json on update.
|
|
41
|
+
const localIgnores: string[] = existsSync(
|
|
42
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
43
|
+
)
|
|
44
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
45
|
+
: [];
|
|
46
|
+
|
|
47
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
48
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
49
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
50
|
+
// that trips knip's unlisted-dependency check.
|
|
51
|
+
const config: ReturnType<typeof getCdkConfig> = [
|
|
35
52
|
...getCdkConfig({
|
|
36
53
|
tsconfigRootDir: __dirname,
|
|
37
|
-
ignorePatterns:
|
|
54
|
+
ignorePatterns: [
|
|
55
|
+
...(ignoreConfig.ignores || defaultIgnores),
|
|
56
|
+
...localIgnores,
|
|
57
|
+
],
|
|
38
58
|
thresholds: { ...defaultThresholds, ...thresholdsConfig },
|
|
39
59
|
}),
|
|
40
60
|
...localConfig,
|
|
41
61
|
];
|
|
62
|
+
|
|
63
|
+
export default config;
|
|
@@ -9,14 +9,41 @@
|
|
|
9
9
|
* Thin wrapper around @codyswann/lisa slow eslint config factory.
|
|
10
10
|
* Run periodically via `lint:slow` rather than on every lint pass.
|
|
11
11
|
*
|
|
12
|
+
* The optional (create-only) eslint.ignore.config.local.json `ignores` are
|
|
13
|
+
* merged into the ignore list so host customizations survive the
|
|
14
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
15
|
+
*
|
|
12
16
|
* @see https://github.com/import-js/eslint-plugin-import
|
|
13
17
|
* @module eslint.slow.config
|
|
14
18
|
*/
|
|
19
|
+
import { existsSync } from "fs";
|
|
15
20
|
import { createRequire } from "module";
|
|
21
|
+
import path from "path";
|
|
22
|
+
import { fileURLToPath } from "url";
|
|
16
23
|
|
|
17
24
|
import { getSlowConfig } from "@codyswann/lisa/eslint/slow";
|
|
18
25
|
|
|
19
26
|
const require = createRequire(import.meta.url);
|
|
20
27
|
const ignoreConfig = require("./eslint.ignore.config.json");
|
|
21
28
|
|
|
22
|
-
|
|
29
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
30
|
+
const __dirname = path.dirname(__filename);
|
|
31
|
+
|
|
32
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
33
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
34
|
+
// overwrites eslint.ignore.config.json on update.
|
|
35
|
+
const localIgnores: string[] = existsSync(
|
|
36
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
37
|
+
)
|
|
38
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
39
|
+
: [];
|
|
40
|
+
|
|
41
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
42
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
43
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
44
|
+
// that trips knip's unlisted-dependency check.
|
|
45
|
+
const config: ReturnType<typeof getSlowConfig> = getSlowConfig({
|
|
46
|
+
ignorePatterns: [...(ignoreConfig.ignores || []), ...localIgnores],
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export default config;
|
|
@@ -7,12 +7,16 @@
|
|
|
7
7
|
* ESLint 9 Flat Config - Main Entry Point (Expo)
|
|
8
8
|
*
|
|
9
9
|
* Thin wrapper around @codyswann/lisa eslint config factory.
|
|
10
|
-
* Customize via eslint.config.local.ts
|
|
10
|
+
* Customize via eslint.config.local.ts, eslint.thresholds.json, and the
|
|
11
|
+
* optional (create-only) eslint.ignore.config.local.json — its `ignores` are
|
|
12
|
+
* merged into the ignore list so host customizations survive the
|
|
13
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
11
14
|
*
|
|
12
15
|
* @see https://eslint.org/docs/latest/use/configure/configuration-files-new
|
|
13
16
|
* @module eslint.config
|
|
14
17
|
*/
|
|
15
18
|
import { existsSync } from "fs";
|
|
19
|
+
import { createRequire } from "module";
|
|
16
20
|
import path from "path";
|
|
17
21
|
import { fileURLToPath } from "url";
|
|
18
22
|
|
|
@@ -26,6 +30,7 @@ import ignoreConfig from "./eslint.ignore.config.json" with { type: "json" };
|
|
|
26
30
|
import thresholdsConfig from "./eslint.thresholds.json" with { type: "json" };
|
|
27
31
|
import localConfig from "./eslint.config.local";
|
|
28
32
|
|
|
33
|
+
const require = createRequire(import.meta.url);
|
|
29
34
|
const __filename = fileURLToPath(import.meta.url);
|
|
30
35
|
const __dirname = path.dirname(__filename);
|
|
31
36
|
|
|
@@ -33,12 +38,30 @@ const __dirname = path.dirname(__filename);
|
|
|
33
38
|
// ui-standards, and view-memo overrides target `src/...` instead of the root.
|
|
34
39
|
const sourceRoot = existsSync(path.join(__dirname, "src", "app")) ? "src/" : "";
|
|
35
40
|
|
|
36
|
-
|
|
41
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
42
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
43
|
+
// overwrites eslint.ignore.config.json on update.
|
|
44
|
+
const localIgnores: string[] = existsSync(
|
|
45
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
46
|
+
)
|
|
47
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
48
|
+
: [];
|
|
49
|
+
|
|
50
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
51
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
52
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
53
|
+
// that trips knip's unlisted-dependency check.
|
|
54
|
+
const config: ReturnType<typeof getExpoConfig> = [
|
|
37
55
|
...getExpoConfig({
|
|
38
56
|
tsconfigRootDir: __dirname,
|
|
39
|
-
ignorePatterns:
|
|
57
|
+
ignorePatterns: [
|
|
58
|
+
...(ignoreConfig.ignores || defaultIgnores),
|
|
59
|
+
...localIgnores,
|
|
60
|
+
],
|
|
40
61
|
thresholds: { ...defaultThresholds, ...thresholdsConfig },
|
|
41
62
|
sourceRoot,
|
|
42
63
|
}),
|
|
43
64
|
...localConfig,
|
|
44
65
|
];
|
|
66
|
+
|
|
67
|
+
export default config;
|
|
@@ -9,10 +9,41 @@
|
|
|
9
9
|
* Thin wrapper around @codyswann/lisa slow eslint config factory.
|
|
10
10
|
* Run periodically via `lint:slow` rather than on every lint pass.
|
|
11
11
|
*
|
|
12
|
+
* The optional (create-only) eslint.ignore.config.local.json `ignores` are
|
|
13
|
+
* merged into the ignore list so host customizations survive the
|
|
14
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
15
|
+
*
|
|
12
16
|
* @see https://github.com/import-js/eslint-plugin-import
|
|
13
17
|
* @module eslint.slow.config
|
|
14
18
|
*/
|
|
19
|
+
import { existsSync } from "fs";
|
|
20
|
+
import { createRequire } from "module";
|
|
21
|
+
import path from "path";
|
|
22
|
+
import { fileURLToPath } from "url";
|
|
23
|
+
|
|
15
24
|
import { getSlowConfig } from "@codyswann/lisa/eslint/slow";
|
|
25
|
+
|
|
16
26
|
import ignoreConfig from "./eslint.ignore.config.json" with { type: "json" };
|
|
17
27
|
|
|
18
|
-
|
|
28
|
+
const require = createRequire(import.meta.url);
|
|
29
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
30
|
+
const __dirname = path.dirname(__filename);
|
|
31
|
+
|
|
32
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
33
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
34
|
+
// overwrites eslint.ignore.config.json on update.
|
|
35
|
+
const localIgnores: string[] = existsSync(
|
|
36
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
37
|
+
)
|
|
38
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
39
|
+
: [];
|
|
40
|
+
|
|
41
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
42
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
43
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
44
|
+
// that trips knip's unlisted-dependency check.
|
|
45
|
+
const config: ReturnType<typeof getSlowConfig> = getSlowConfig({
|
|
46
|
+
ignorePatterns: [...(ignoreConfig.ignores || []), ...localIgnores],
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export default config;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_comment": "Shipped defaults are 0/0 so adopting Lisa on a brownfield Expo app does not red-gate CI before any e2e specs exist. Treat these as a ratchet: raise each value toward 100 as Playwright/Maestro coverage grows, and never lower an achieved floor. This file is create-only — Lisa writes it once and never overwrites your tuned values.",
|
|
2
3
|
"playwright": {
|
|
3
|
-
"routes":
|
|
4
|
+
"routes": 0
|
|
4
5
|
},
|
|
5
6
|
"maestro": {
|
|
6
|
-
"routes":
|
|
7
|
+
"routes": 0
|
|
7
8
|
}
|
|
8
9
|
}
|
|
@@ -98,14 +98,16 @@
|
|
|
98
98
|
"@isaacs/brace-expansion": "^5.0.1",
|
|
99
99
|
"eslint-plugin-react-hooks": "^7.0.0",
|
|
100
100
|
"fast-xml-parser": "^5.3.6",
|
|
101
|
-
"tar": ">=7.5.11"
|
|
101
|
+
"tar": ">=7.5.11",
|
|
102
|
+
"websocket-driver": ">=0.7.5"
|
|
102
103
|
},
|
|
103
104
|
"overrides": {
|
|
104
105
|
"@isaacs/brace-expansion": "^5.0.1",
|
|
105
106
|
"eslint-plugin-react-hooks": "^7.0.0",
|
|
106
107
|
"fast-xml-parser": "^5.3.6",
|
|
107
108
|
"zod-validation-error": "^4.0.0",
|
|
108
|
-
"tar": ">=7.5.11"
|
|
109
|
+
"tar": ">=7.5.11",
|
|
110
|
+
"websocket-driver": ">=0.7.5"
|
|
109
111
|
}
|
|
110
112
|
},
|
|
111
113
|
"defaults": {
|
|
@@ -7,11 +7,16 @@
|
|
|
7
7
|
* ESLint 9 Flat Config
|
|
8
8
|
*
|
|
9
9
|
* Thin wrapper around @codyswann/lisa Harper/Fabric config factory.
|
|
10
|
-
* Customize via eslint.config.local.ts
|
|
10
|
+
* Customize via eslint.config.local.ts, eslint.thresholds.json, and the
|
|
11
|
+
* optional (create-only) eslint.ignore.config.local.json — its `ignores` are
|
|
12
|
+
* merged into the ignore list so host customizations survive the
|
|
13
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
11
14
|
*
|
|
12
15
|
* @see https://eslint.org/docs/latest/use/configure/configuration-files-new
|
|
13
16
|
* @module eslint.config
|
|
14
17
|
*/
|
|
18
|
+
import { existsSync } from "fs";
|
|
19
|
+
import { createRequire } from "module";
|
|
15
20
|
import path from "path";
|
|
16
21
|
import { fileURLToPath } from "url";
|
|
17
22
|
|
|
@@ -25,17 +30,34 @@ import ignoreConfig from "./eslint.ignore.config.json" with { type: "json" };
|
|
|
25
30
|
import thresholdsConfig from "./eslint.thresholds.json" with { type: "json" };
|
|
26
31
|
import localConfig from "./eslint.config.local";
|
|
27
32
|
|
|
33
|
+
const require = createRequire(import.meta.url);
|
|
28
34
|
const __filename = fileURLToPath(import.meta.url);
|
|
29
35
|
const __dirname = path.dirname(__filename);
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
38
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
39
|
+
// overwrites eslint.ignore.config.json on update.
|
|
40
|
+
const localIgnores: string[] = existsSync(
|
|
41
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
42
|
+
)
|
|
43
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
44
|
+
: [];
|
|
45
|
+
|
|
46
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
47
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
48
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
49
|
+
// that trips knip's unlisted-dependency check.
|
|
50
|
+
const config: ReturnType<typeof getHarperFabricConfig> = [
|
|
32
51
|
...getHarperFabricConfig({
|
|
33
52
|
tsconfigRootDir: __dirname,
|
|
34
53
|
ignorePatterns: [
|
|
35
54
|
...defaultHarperFabricIgnores,
|
|
36
55
|
...(ignoreConfig.ignores || []),
|
|
56
|
+
...localIgnores,
|
|
37
57
|
],
|
|
38
58
|
thresholds: { ...defaultThresholds, ...thresholdsConfig },
|
|
39
59
|
}),
|
|
40
60
|
...localConfig,
|
|
41
61
|
];
|
|
62
|
+
|
|
63
|
+
export default config;
|
|
@@ -7,11 +7,16 @@
|
|
|
7
7
|
* ESLint 9 Flat Config - Main Entry Point (NestJS)
|
|
8
8
|
*
|
|
9
9
|
* Thin wrapper around @codyswann/lisa eslint config factory.
|
|
10
|
-
* Customize via eslint.config.local.ts
|
|
10
|
+
* Customize via eslint.config.local.ts, eslint.thresholds.json, and the
|
|
11
|
+
* optional (create-only) eslint.ignore.config.local.json — its `ignores` are
|
|
12
|
+
* merged into the ignore list so host customizations survive the
|
|
13
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
11
14
|
*
|
|
12
15
|
* @see https://eslint.org/docs/latest/use/configure/configuration-files-new
|
|
13
16
|
* @module eslint.config
|
|
14
17
|
*/
|
|
18
|
+
import { existsSync } from "fs";
|
|
19
|
+
import { createRequire } from "module";
|
|
15
20
|
import path from "path";
|
|
16
21
|
import { fileURLToPath } from "url";
|
|
17
22
|
|
|
@@ -25,14 +30,33 @@ import ignoreConfig from "./eslint.ignore.config.json" with { type: "json" };
|
|
|
25
30
|
import thresholdsConfig from "./eslint.thresholds.json" with { type: "json" };
|
|
26
31
|
import localConfig from "./eslint.config.local";
|
|
27
32
|
|
|
33
|
+
const require = createRequire(import.meta.url);
|
|
28
34
|
const __filename = fileURLToPath(import.meta.url);
|
|
29
35
|
const __dirname = path.dirname(__filename);
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
38
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
39
|
+
// overwrites eslint.ignore.config.json on update.
|
|
40
|
+
const localIgnores: string[] = existsSync(
|
|
41
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
42
|
+
)
|
|
43
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
44
|
+
: [];
|
|
45
|
+
|
|
46
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
47
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
48
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
49
|
+
// that trips knip's unlisted-dependency check.
|
|
50
|
+
const config: ReturnType<typeof getNestjsConfig> = [
|
|
32
51
|
...getNestjsConfig({
|
|
33
52
|
tsconfigRootDir: __dirname,
|
|
34
|
-
ignorePatterns:
|
|
53
|
+
ignorePatterns: [
|
|
54
|
+
...(ignoreConfig.ignores || defaultIgnores),
|
|
55
|
+
...localIgnores,
|
|
56
|
+
],
|
|
35
57
|
thresholds: { ...defaultThresholds, ...thresholdsConfig },
|
|
36
58
|
}),
|
|
37
59
|
...localConfig,
|
|
38
60
|
];
|
|
61
|
+
|
|
62
|
+
export default config;
|
|
@@ -13,14 +13,43 @@
|
|
|
13
13
|
* files, since NestJS uses `forwardRef()` to handle circular module
|
|
14
14
|
* dependencies at runtime.
|
|
15
15
|
*
|
|
16
|
+
* The optional (create-only) eslint.ignore.config.local.json `ignores` are
|
|
17
|
+
* merged into the ignore list so host customizations survive the
|
|
18
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
19
|
+
*
|
|
16
20
|
* @see https://github.com/import-js/eslint-plugin-import
|
|
17
21
|
* @module eslint.slow.config
|
|
18
22
|
*/
|
|
23
|
+
import { existsSync } from "fs";
|
|
24
|
+
import { createRequire } from "module";
|
|
25
|
+
import path from "path";
|
|
26
|
+
import { fileURLToPath } from "url";
|
|
27
|
+
|
|
19
28
|
import { getSlowConfig } from "@codyswann/lisa/eslint/slow";
|
|
29
|
+
|
|
20
30
|
import ignoreConfig from "./eslint.ignore.config.json" with { type: "json" };
|
|
21
31
|
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
const require = createRequire(import.meta.url);
|
|
33
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
34
|
+
const __dirname = path.dirname(__filename);
|
|
35
|
+
|
|
36
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
37
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
38
|
+
// overwrites eslint.ignore.config.json on update.
|
|
39
|
+
const localIgnores: string[] = existsSync(
|
|
40
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
41
|
+
)
|
|
42
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
43
|
+
: [];
|
|
44
|
+
|
|
45
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
46
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
47
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
48
|
+
// that trips knip's unlisted-dependency check.
|
|
49
|
+
const config: ReturnType<typeof getSlowConfig> = [
|
|
50
|
+
...getSlowConfig({
|
|
51
|
+
ignorePatterns: [...(ignoreConfig.ignores || []), ...localIgnores],
|
|
52
|
+
}),
|
|
24
53
|
|
|
25
54
|
// NestJS modules use forwardRef() to resolve circular dependencies at runtime.
|
|
26
55
|
// ESLint's static import/no-cycle analysis cannot understand this pattern.
|
|
@@ -31,3 +60,5 @@ export default [
|
|
|
31
60
|
},
|
|
32
61
|
},
|
|
33
62
|
];
|
|
63
|
+
|
|
64
|
+
export default config;
|
package/package.json
CHANGED
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"form-data": ">=4.0.6"
|
|
102
102
|
},
|
|
103
103
|
"name": "@codyswann/lisa",
|
|
104
|
-
"version": "2.219.
|
|
104
|
+
"version": "2.219.1",
|
|
105
105
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
106
106
|
"main": "dist/index.js",
|
|
107
107
|
"exports": {
|
|
@@ -2,4 +2,17 @@
|
|
|
2
2
|
.vite/
|
|
3
3
|
.lisabak/
|
|
4
4
|
.lisabak
|
|
5
|
+
|
|
6
|
+
# The base guardrails block ignores any `example/` directory, which would
|
|
7
|
+
# otherwise re-ignore the committed Phaser example art. Re-include the example
|
|
8
|
+
# asset folders here (this block is written after the base block, so
|
|
9
|
+
# last-match-wins keeps them tracked). Both the folder and a `/**` recursion
|
|
10
|
+
# are needed — git will not re-include files inside an ignored directory
|
|
11
|
+
# unless the directory itself is un-ignored first.
|
|
12
|
+
!assets/src/sprites/example/
|
|
13
|
+
!assets/src/sprites/example/**
|
|
14
|
+
!assets/src/images/example/
|
|
15
|
+
!assets/src/images/example/**
|
|
16
|
+
!public/assets/images/example/
|
|
17
|
+
!public/assets/images/example/**
|
|
5
18
|
# END: AI GUARDRAILS PHASER
|
|
@@ -5,6 +5,9 @@ name: 🔍 CI Quality Checks
|
|
|
5
5
|
|
|
6
6
|
on:
|
|
7
7
|
pull_request:
|
|
8
|
+
# Include labeled/unlabeled so toggling the verification-exempt label
|
|
9
|
+
# re-runs CI (the verification gate keys on PR labels).
|
|
10
|
+
types: [opened, synchronize, reopened, labeled, unlabeled]
|
|
8
11
|
workflow_dispatch:
|
|
9
12
|
|
|
10
13
|
jobs:
|
|
@@ -15,5 +15,8 @@
|
|
|
15
15
|
#
|
|
16
16
|
if [ -f scripts/check-verification-coverage.mjs ]; then
|
|
17
17
|
echo "✅ Verification (UAT) coverage check..."
|
|
18
|
-
|
|
18
|
+
# No `|| exit 1`: this file is sourced by .husky/pre-push. A hard `exit`
|
|
19
|
+
# here would terminate the parent hook before it can print its own failure
|
|
20
|
+
# message — let the non-zero status bubble up to the caller's handler.
|
|
21
|
+
node scripts/check-verification-coverage.mjs
|
|
19
22
|
fi
|
|
@@ -7,11 +7,16 @@
|
|
|
7
7
|
* ESLint 9 Flat Config
|
|
8
8
|
*
|
|
9
9
|
* Thin wrapper around @codyswann/lisa Phaser config factory.
|
|
10
|
-
* Customize via eslint.config.local.ts
|
|
10
|
+
* Customize via eslint.config.local.ts, eslint.thresholds.json, and the
|
|
11
|
+
* optional (create-only) eslint.ignore.config.local.json — its `ignores` are
|
|
12
|
+
* merged into the ignore list so host customizations survive the
|
|
13
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
11
14
|
*
|
|
12
15
|
* @see https://eslint.org/docs/latest/use/configure/configuration-files-new
|
|
13
16
|
* @module eslint.config
|
|
14
17
|
*/
|
|
18
|
+
import { existsSync } from "fs";
|
|
19
|
+
import { createRequire } from "module";
|
|
15
20
|
import path from "path";
|
|
16
21
|
import { fileURLToPath } from "url";
|
|
17
22
|
|
|
@@ -25,14 +30,34 @@ import ignoreConfig from "./eslint.ignore.config.json" with { type: "json" };
|
|
|
25
30
|
import thresholdsConfig from "./eslint.thresholds.json" with { type: "json" };
|
|
26
31
|
import localConfig from "./eslint.config.local";
|
|
27
32
|
|
|
33
|
+
const require = createRequire(import.meta.url);
|
|
28
34
|
const __filename = fileURLToPath(import.meta.url);
|
|
29
35
|
const __dirname = path.dirname(__filename);
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
38
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
39
|
+
// overwrites eslint.ignore.config.json on update.
|
|
40
|
+
const localIgnores: string[] = existsSync(
|
|
41
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
42
|
+
)
|
|
43
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
44
|
+
: [];
|
|
45
|
+
|
|
46
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
47
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
48
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
49
|
+
// that trips knip's unlisted-dependency check.
|
|
50
|
+
const config: ReturnType<typeof getPhaserConfig> = [
|
|
32
51
|
...getPhaserConfig({
|
|
33
52
|
tsconfigRootDir: __dirname,
|
|
34
|
-
ignorePatterns: [
|
|
53
|
+
ignorePatterns: [
|
|
54
|
+
...defaultPhaserIgnores,
|
|
55
|
+
...(ignoreConfig.ignores || []),
|
|
56
|
+
...localIgnores,
|
|
57
|
+
],
|
|
35
58
|
thresholds: { ...defaultThresholds, ...thresholdsConfig },
|
|
36
59
|
}),
|
|
37
60
|
...localConfig,
|
|
38
61
|
];
|
|
62
|
+
|
|
63
|
+
export default config;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.219.
|
|
3
|
+
"version": "2.219.1",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.219.
|
|
3
|
+
"version": "2.219.1",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.219.
|
|
3
|
+
"version": "2.219.1",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.219.
|
|
3
|
+
"version": "2.219.1",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.219.
|
|
3
|
+
"version": "2.219.1",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -11,7 +11,19 @@ on:
|
|
|
11
11
|
jobs:
|
|
12
12
|
quality:
|
|
13
13
|
name: Quality Checks
|
|
14
|
+
# quality-rails.yml declares checks:write + pull-requests:write. A reusable
|
|
15
|
+
# workflow can only use permissions the caller grants, so on repos whose
|
|
16
|
+
# default GITHUB_TOKEN is read-only this block is required — without it the
|
|
17
|
+
# called workflow fails at startup (startup_failure) and required checks
|
|
18
|
+
# never report.
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
checks: write
|
|
22
|
+
pull-requests: write
|
|
14
23
|
uses: CodySwannGT/lisa/.github/workflows/quality-rails.yml@main
|
|
24
|
+
# Rails projects default to PostgreSQL. For a MySQL app, uncomment:
|
|
25
|
+
# with:
|
|
26
|
+
# database_type: 'mysql'
|
|
15
27
|
secrets:
|
|
16
28
|
GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
|
|
17
29
|
FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }}
|
|
@@ -51,7 +51,10 @@ if command -v gitleaks >/dev/null 2>&1; then
|
|
|
51
51
|
GITLEAKS_IGNORE_ARGS=""
|
|
52
52
|
GITLEAKS_COMBINED_IGNORE=""
|
|
53
53
|
if [ -f ".gitleaksignore.local" ]; then
|
|
54
|
-
|
|
54
|
+
# Explicit template with a trailing X run keeps this portable: BSD/macOS
|
|
55
|
+
# `mktemp` requires a template argument (bare `mktemp` errors), while GNU
|
|
56
|
+
# `mktemp` accepts it too.
|
|
57
|
+
GITLEAKS_COMBINED_IGNORE="$(mktemp "${TMPDIR:-/tmp}/gitleaks-ignore.XXXXXXXX")"
|
|
55
58
|
if [ -f ".gitleaksignore" ]; then
|
|
56
59
|
cat .gitleaksignore > "$GITLEAKS_COMBINED_IGNORE"
|
|
57
60
|
printf '\n' >> "$GITLEAKS_COMBINED_IGNORE"
|
|
@@ -147,11 +147,6 @@
|
|
|
147
147
|
"id": "GHSA-q3j6-qgpj-74h6",
|
|
148
148
|
"package": "fast-uri",
|
|
149
149
|
"reason": "Path traversal via percent-encoded dot segments in fast-uri parser. Reachable transitively via eslint > @eslint/eslintrc > ajv > fast-uri and (in CDK projects) via aws-cdk-lib's bundled JSON Schema validator. aws-cdk-lib is invoked only at build/synth/deploy time \u2014 its ajv usage validates CloudFormation/CDK schemas authored by the developer, not attacker-controlled URIs. No runtime/production code path passes attacker-controlled URIs through ajv schema validation that relies on fast-uri parsing."
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
"id": "GHSA-gv7w-rqvm-qjhr",
|
|
153
|
-
"package": "esbuild",
|
|
154
|
-
"reason": "Missing binary integrity verification in esbuild's Deno install module enables RCE via a malicious NPM_CONFIG_REGISTRY. esbuild is dev/build-time only \u2014 transitive via tsx, vitest, and esbuild-register \u2014 and is never in a shipped bundle or runtime code path. Lisa-managed projects install via bun/npm (not the Deno module path) and do not use attacker-controlled NPM_CONFIG_REGISTRY at install. Remove once the tsx/vitest/esbuild-register chain bumps esbuild >= 0.28.1."
|
|
155
150
|
}
|
|
156
151
|
]
|
|
157
152
|
}
|
|
@@ -7,11 +7,16 @@
|
|
|
7
7
|
* ESLint 9 Flat Config
|
|
8
8
|
*
|
|
9
9
|
* Thin wrapper around @codyswann/lisa eslint config factory.
|
|
10
|
-
* Customize via eslint.config.local.ts
|
|
10
|
+
* Customize via eslint.config.local.ts, eslint.thresholds.json, and the
|
|
11
|
+
* optional (create-only) eslint.ignore.config.local.json — its `ignores` are
|
|
12
|
+
* merged into the ignore list so host customizations survive the
|
|
13
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
11
14
|
*
|
|
12
15
|
* @see https://eslint.org/docs/latest/use/configure/configuration-files-new
|
|
13
16
|
* @module eslint.config
|
|
14
17
|
*/
|
|
18
|
+
import { existsSync } from "fs";
|
|
19
|
+
import { createRequire } from "module";
|
|
15
20
|
import path from "path";
|
|
16
21
|
import { fileURLToPath } from "url";
|
|
17
22
|
|
|
@@ -25,14 +30,33 @@ import ignoreConfig from "./eslint.ignore.config.json" with { type: "json" };
|
|
|
25
30
|
import thresholdsConfig from "./eslint.thresholds.json" with { type: "json" };
|
|
26
31
|
import localConfig from "./eslint.config.local";
|
|
27
32
|
|
|
33
|
+
const require = createRequire(import.meta.url);
|
|
28
34
|
const __filename = fileURLToPath(import.meta.url);
|
|
29
35
|
const __dirname = path.dirname(__filename);
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
38
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
39
|
+
// overwrites eslint.ignore.config.json on update.
|
|
40
|
+
const localIgnores: string[] = existsSync(
|
|
41
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
42
|
+
)
|
|
43
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
44
|
+
: [];
|
|
45
|
+
|
|
46
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
47
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
48
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
49
|
+
// that trips knip's unlisted-dependency check.
|
|
50
|
+
const config: ReturnType<typeof getTypescriptConfig> = [
|
|
32
51
|
...getTypescriptConfig({
|
|
33
52
|
tsconfigRootDir: __dirname,
|
|
34
|
-
ignorePatterns:
|
|
53
|
+
ignorePatterns: [
|
|
54
|
+
...(ignoreConfig.ignores || defaultIgnores),
|
|
55
|
+
...localIgnores,
|
|
56
|
+
],
|
|
35
57
|
thresholds: { ...defaultThresholds, ...thresholdsConfig },
|
|
36
58
|
}),
|
|
37
59
|
...localConfig,
|
|
38
60
|
];
|
|
61
|
+
|
|
62
|
+
export default config;
|
|
@@ -9,10 +9,41 @@
|
|
|
9
9
|
* Thin wrapper around @codyswann/lisa slow eslint config factory.
|
|
10
10
|
* Run periodically via `lint:slow` rather than on every lint pass.
|
|
11
11
|
*
|
|
12
|
+
* The optional (create-only) eslint.ignore.config.local.json `ignores` are
|
|
13
|
+
* merged into the ignore list so host customizations survive the
|
|
14
|
+
* copy-overwrite of eslint.ignore.config.json on each Lisa update.
|
|
15
|
+
*
|
|
12
16
|
* @see https://github.com/import-js/eslint-plugin-import
|
|
13
17
|
* @module eslint.slow.config
|
|
14
18
|
*/
|
|
19
|
+
import { existsSync } from "fs";
|
|
20
|
+
import { createRequire } from "module";
|
|
21
|
+
import path from "path";
|
|
22
|
+
import { fileURLToPath } from "url";
|
|
23
|
+
|
|
15
24
|
import { getSlowConfig } from "@codyswann/lisa/eslint/slow";
|
|
25
|
+
|
|
16
26
|
import ignoreConfig from "./eslint.ignore.config.json" with { type: "json" };
|
|
17
27
|
|
|
18
|
-
|
|
28
|
+
const require = createRequire(import.meta.url);
|
|
29
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
30
|
+
const __dirname = path.dirname(__filename);
|
|
31
|
+
|
|
32
|
+
// Merge the optional project-owned eslint.ignore.config.local.json (create-only,
|
|
33
|
+
// never copy-overwritten) so host ignore customizations are not wiped when Lisa
|
|
34
|
+
// overwrites eslint.ignore.config.json on update.
|
|
35
|
+
const localIgnores: string[] = existsSync(
|
|
36
|
+
path.join(__dirname, "eslint.ignore.config.local.json")
|
|
37
|
+
)
|
|
38
|
+
? (require("./eslint.ignore.config.local.json").ignores ?? [])
|
|
39
|
+
: [];
|
|
40
|
+
|
|
41
|
+
// Annotate with the factory's return type so `tsc --noEmit` under
|
|
42
|
+
// `declaration: true` does not surface @eslint/core's `RulesConfig` in the
|
|
43
|
+
// emitted declaration (TS2883). Do NOT import `Linter` from "eslint" directly —
|
|
44
|
+
// that trips knip's unlisted-dependency check.
|
|
45
|
+
const config: ReturnType<typeof getSlowConfig> = getSlowConfig({
|
|
46
|
+
ignorePatterns: [...(ignoreConfig.ignores || []), ...localIgnores],
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export default config;
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"undici": ">=6.27.0",
|
|
36
36
|
"vite": ">=8.0.16",
|
|
37
37
|
"ws": ">=8.21.0",
|
|
38
|
-
"form-data": ">=4.0.6"
|
|
38
|
+
"form-data": ">=4.0.6",
|
|
39
|
+
"systeminformation": ">=5.27.14"
|
|
39
40
|
},
|
|
40
41
|
"overrides": {
|
|
41
42
|
"@isaacs/brace-expansion": "^5.0.1",
|
|
@@ -47,7 +48,8 @@
|
|
|
47
48
|
"undici": ">=6.27.0",
|
|
48
49
|
"vite": "^8.0.16",
|
|
49
50
|
"ws": ">=8.21.0",
|
|
50
|
-
"form-data": ">=4.0.6"
|
|
51
|
+
"form-data": ">=4.0.6",
|
|
52
|
+
"systeminformation": ">=5.27.14"
|
|
51
53
|
}
|
|
52
54
|
},
|
|
53
55
|
"defaults": {
|