@codyswann/lisa 3.40.4 → 3.40.5
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/dist/cli/doctor-lisa-owned-artifacts.d.ts +4 -2
- package/dist/cli/doctor-lisa-owned-artifacts.d.ts.map +1 -1
- package/dist/cli/doctor-lisa-owned-artifacts.js +46 -32
- package/dist/cli/doctor-lisa-owned-artifacts.js.map +1 -1
- package/dist/cli/doctor-lisa-owned-universal.d.ts +26 -0
- package/dist/cli/doctor-lisa-owned-universal.d.ts.map +1 -0
- package/dist/cli/doctor-lisa-owned-universal.js +50 -0
- package/dist/cli/doctor-lisa-owned-universal.js.map +1 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +2 -0
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +1 -1
- 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
|
@@ -15,8 +15,10 @@ interface ArtifactCheck {
|
|
|
15
15
|
* nobody can account for is worth a line either way, and staying silent about a
|
|
16
16
|
* downstream edit would let a project quietly swap a guard for a stub.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
18
|
+
* A third finding covers absence, but only for the universal tree. A missing
|
|
19
|
+
* stack-specific artifact means that stack does not apply here, which is not
|
|
20
|
+
* drift. A missing universal one means apply has not run, and the CI gate that
|
|
21
|
+
* calls it is not running at all.
|
|
20
22
|
* @param targetPath - Project path to inspect
|
|
21
23
|
* @param lisaRoot - Installed Lisa package root (injected by tests)
|
|
22
24
|
* @param ledger - Known-good hashes, defaulting to Lisa's shipping history
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-lisa-owned-artifacts.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor-lisa-owned-artifacts.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AA0BnE,wEAAwE;AACxE,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AA8FD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAA0B,EACpC,MAAM,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAgDxB"}
|
|
@@ -18,16 +18,13 @@
|
|
|
18
18
|
import { readFile } from "node:fs/promises";
|
|
19
19
|
import * as path from "node:path";
|
|
20
20
|
import { fileURLToPath } from "node:url";
|
|
21
|
-
import * as fse from "fs-extra";
|
|
22
21
|
import { PROJECT_TYPE_ORDER } from "../core/config.js";
|
|
23
22
|
import { classifyHostCopy, mayRefreshLisaOwned, } from "../core/lisa-owned-provenance.js";
|
|
24
|
-
import { isLisaOwnedTemplate } from "../core/lisa-owned-templates.js";
|
|
25
23
|
import { isLisaSourceRepo } from "../core/self-apply.js";
|
|
26
|
-
import { listFilesRecursive } from "../utils/file-operations.js";
|
|
27
24
|
import { matchesAnyPattern, parseIgnorePatterns, } from "../utils/ignore-patterns.js";
|
|
28
25
|
import { describeResolvableCopies, } from "./doctor-lisa-owned-artifact-copies.js";
|
|
26
|
+
import { shippedByStack, UNIVERSAL_STACK, universalDestinations, } from "./doctor-lisa-owned-universal.js";
|
|
29
27
|
const CHECK_NAME = "Lisa enforcement artifacts current?";
|
|
30
|
-
const COPY_OVERWRITE = "copy-overwrite";
|
|
31
28
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
32
29
|
/**
|
|
33
30
|
* Quoted relative module specifiers — `import`/`export from`, `require()`, and
|
|
@@ -42,23 +39,6 @@ const RELATIVE_SPECIFIER = /["'`](\.\.?\/[^"'`\n]{1,4096})["'`]/g;
|
|
|
42
39
|
function defaultLisaRoot() {
|
|
43
40
|
return path.resolve(__dirname, "..", "..");
|
|
44
41
|
}
|
|
45
|
-
/**
|
|
46
|
-
* List the Lisa-owned artifacts one stack's copy-overwrite tree ships.
|
|
47
|
-
* @param lisaRoot - Installed Lisa package root
|
|
48
|
-
* @param type - Stack directory name
|
|
49
|
-
* @returns Destination/source pairs shipped by that stack
|
|
50
|
-
*/
|
|
51
|
-
async function shippedByStack(lisaRoot, type) {
|
|
52
|
-
const directory = path.join(lisaRoot, type, COPY_OVERWRITE);
|
|
53
|
-
if (!(await fse.pathExists(directory)))
|
|
54
|
-
return [];
|
|
55
|
-
return (await listFilesRecursive(directory))
|
|
56
|
-
.map(source => [
|
|
57
|
-
path.relative(directory, source).split(path.sep).join("/"),
|
|
58
|
-
source,
|
|
59
|
-
])
|
|
60
|
-
.filter(([destination]) => isLisaOwnedTemplate(destination));
|
|
61
|
-
}
|
|
62
42
|
/**
|
|
63
43
|
* Collect every shipped Lisa-owned artifact, keyed by its destination path.
|
|
64
44
|
*
|
|
@@ -69,7 +49,7 @@ async function shippedByStack(lisaRoot, type) {
|
|
|
69
49
|
* @returns Destination path to the shipped source files that produce it
|
|
70
50
|
*/
|
|
71
51
|
async function shippedArtifacts(lisaRoot) {
|
|
72
|
-
const shipped = (await Promise.all([
|
|
52
|
+
const shipped = (await Promise.all([UNIVERSAL_STACK, ...PROJECT_TYPE_ORDER].map(async (type) => shippedByStack(lisaRoot, type)))).flat();
|
|
73
53
|
const destinations = [
|
|
74
54
|
...new Set(shipped.map(([destination]) => destination)),
|
|
75
55
|
];
|
|
@@ -123,8 +103,10 @@ function reExportsShippedTemplate(installed, installedPath, sources) {
|
|
|
123
103
|
* nobody can account for is worth a line either way, and staying silent about a
|
|
124
104
|
* downstream edit would let a project quietly swap a guard for a stub.
|
|
125
105
|
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
106
|
+
* A third finding covers absence, but only for the universal tree. A missing
|
|
107
|
+
* stack-specific artifact means that stack does not apply here, which is not
|
|
108
|
+
* drift. A missing universal one means apply has not run, and the CI gate that
|
|
109
|
+
* calls it is not running at all.
|
|
128
110
|
* @param targetPath - Project path to inspect
|
|
129
111
|
* @param lisaRoot - Installed Lisa package root (injected by tests)
|
|
130
112
|
* @param ledger - Known-good hashes, defaulting to Lisa's shipping history
|
|
@@ -132,6 +114,7 @@ function reExportsShippedTemplate(installed, installedPath, sources) {
|
|
|
132
114
|
*/
|
|
133
115
|
export async function checkLisaOwnedArtifacts(targetPath, lisaRoot = defaultLisaRoot(), ledger) {
|
|
134
116
|
const shipped = await shippedArtifacts(lisaRoot);
|
|
117
|
+
const universal = await universalDestinations(lisaRoot);
|
|
135
118
|
if (shipped.size === 0) {
|
|
136
119
|
return {
|
|
137
120
|
name: CHECK_NAME,
|
|
@@ -146,7 +129,7 @@ export async function checkLisaOwnedArtifacts(targetPath, lisaRoot = defaultLisa
|
|
|
146
129
|
// unless the target's package.json is Lisa itself. A host must not be able to
|
|
147
130
|
// swap a guard for a thin re-export and have doctor call it current.
|
|
148
131
|
const selfHost = await isLisaSourceRepo(targetPath);
|
|
149
|
-
const results = await Promise.all([...shipped].map(async ([destination, sources]) => assessArtifact(targetPath, lisaRoot, destination, sources, ignorePatterns, selfHost, ledger)));
|
|
132
|
+
const results = await Promise.all([...shipped].map(async ([destination, sources]) => assessArtifact(targetPath, lisaRoot, destination, sources, ignorePatterns, selfHost, universal.has(destination), ledger)));
|
|
150
133
|
const assessments = results.filter((item) => item !== undefined);
|
|
151
134
|
return summarise(assessments
|
|
152
135
|
.map(item => item.finding)
|
|
@@ -162,19 +145,16 @@ export async function checkLisaOwnedArtifacts(targetPath, lisaRoot = defaultLisa
|
|
|
162
145
|
* @param sources - Absolute shipped package variants
|
|
163
146
|
* @param ignorePatterns - Parsed .lisaignore patterns
|
|
164
147
|
* @param selfHost - Whether the target is Lisa's own source repository
|
|
148
|
+
* @param universal - Whether every project receives this destination
|
|
165
149
|
* @param ledger - Known-good hashes, defaulting to Lisa's shipping history
|
|
166
|
-
* @returns Per-artifact assessment, or undefined when
|
|
150
|
+
* @returns Per-artifact assessment, or undefined when nothing is reportable
|
|
167
151
|
*/
|
|
168
|
-
async function assessArtifact(targetPath, lisaRoot, destination, sources, ignorePatterns, selfHost, ledger) {
|
|
152
|
+
async function assessArtifact(targetPath, lisaRoot, destination, sources, ignorePatterns, selfHost, universal, ledger) {
|
|
169
153
|
const installedPath = path.join(targetPath, destination);
|
|
170
154
|
const installed = await readFile(installedPath).catch(() => undefined);
|
|
171
155
|
const ignored = matchesAnyPattern(destination, ignorePatterns);
|
|
172
156
|
if (installed === undefined) {
|
|
173
|
-
return ignored
|
|
174
|
-
? {
|
|
175
|
-
finding: [destination, "ignored"],
|
|
176
|
-
}
|
|
177
|
-
: undefined;
|
|
157
|
+
return assessAbsent(destination, ignored, universal, selfHost);
|
|
178
158
|
}
|
|
179
159
|
const multiCopy = await describeResolvableCopies(lisaRoot, destination, installed, sources);
|
|
180
160
|
if (ignored)
|
|
@@ -188,6 +168,35 @@ async function assessArtifact(targetPath, lisaRoot, destination, sources, ignore
|
|
|
188
168
|
const outdated = await isProvablyStale(installed, destination, sources, ledger);
|
|
189
169
|
return withMultiCopy([destination, outdated ? "stale" : "modified"], multiCopy);
|
|
190
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Assess a Lisa-owned artifact the project does not have.
|
|
173
|
+
*
|
|
174
|
+
* An absent stack-specific artifact means that stack does not apply here, which
|
|
175
|
+
* is not drift — that exemption is why absence used to report nothing at all.
|
|
176
|
+
* It over-reached: a universal artifact has no stack it does not apply to, so
|
|
177
|
+
* its absence means apply never ran and the CI gate that calls it is not
|
|
178
|
+
* running. Measured on `scripts/lisa-floor-collisions.mjs` (#2731), whose job
|
|
179
|
+
* exited 0 on the missing script — green, having examined nothing, with doctor
|
|
180
|
+
* silent too. Fixing only the job turns a silent pass into a red nobody has
|
|
181
|
+
* been told how to clear.
|
|
182
|
+
*
|
|
183
|
+
* Never for Lisa's own repository: it is the source of these artifacts, not a
|
|
184
|
+
* consumer, and installs only the few it runs on itself, so "apply never ran"
|
|
185
|
+
* is a category error there.
|
|
186
|
+
* @param destination - Project-relative artifact destination
|
|
187
|
+
* @param ignored - Whether .lisaignore names this destination
|
|
188
|
+
* @param universal - Whether every project receives this destination
|
|
189
|
+
* @param selfHost - Whether the target is Lisa's own source repository
|
|
190
|
+
* @returns Per-artifact assessment, or undefined when absence proves nothing
|
|
191
|
+
*/
|
|
192
|
+
function assessAbsent(destination, ignored, universal, selfHost) {
|
|
193
|
+
if (ignored) {
|
|
194
|
+
return { finding: [destination, "ignored"] };
|
|
195
|
+
}
|
|
196
|
+
return universal && !selfHost
|
|
197
|
+
? { finding: [destination, "missing"] }
|
|
198
|
+
: undefined;
|
|
199
|
+
}
|
|
191
200
|
/**
|
|
192
201
|
* Attach optional multi-copy provenance without materialising undefined fields.
|
|
193
202
|
* @param finding - Artifact finding tuple
|
|
@@ -211,10 +220,12 @@ function summarise(findings, multiCopies) {
|
|
|
211
220
|
const stale = pick("stale");
|
|
212
221
|
const modified = pick("modified");
|
|
213
222
|
const ignored = pick("ignored");
|
|
223
|
+
const missing = pick("missing");
|
|
214
224
|
const copyDisagreements = multiCopies.filter(copy => copy.disagrees);
|
|
215
225
|
const copyReports = renderCopyReports(multiCopies);
|
|
216
226
|
const warningFree = stale.length === 0 &&
|
|
217
227
|
modified.length === 0 &&
|
|
228
|
+
missing.length === 0 &&
|
|
218
229
|
copyDisagreements.length === 0;
|
|
219
230
|
if (warningFree) {
|
|
220
231
|
// Named rather than folded into the pass. A guard excluded by
|
|
@@ -231,6 +242,9 @@ function summarise(findings, multiCopies) {
|
|
|
231
242
|
ignored.length > 0
|
|
232
243
|
? `${ignored.length} not assessed (.lisaignore): ${ignored.join(", ")}`
|
|
233
244
|
: "",
|
|
245
|
+
missing.length > 0
|
|
246
|
+
? `Lisa-owned guards every project receives are not installed, so the CI gates that call them run against nothing (run \`npx lisa apply .\` to install them): ${missing.join(", ")}`
|
|
247
|
+
: "",
|
|
234
248
|
stale.length > 0
|
|
235
249
|
? `Outdated Lisa-owned guards (run \`npx lisa apply .\` to refresh): ${stale.join(", ")}`
|
|
236
250
|
: "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-lisa-owned-artifacts.js","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-lisa-owned-artifacts.js","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Directory name of the strategy tree these artifacts are shipped from. */
|
|
2
|
+
export declare const COPY_OVERWRITE = "copy-overwrite";
|
|
3
|
+
/**
|
|
4
|
+
* The stack tree every project receives regardless of detected type.
|
|
5
|
+
*
|
|
6
|
+
* `Lisa.processProjectType("all")` runs unconditionally and every downstream
|
|
7
|
+
* loop is `["all", ...detectedTypes]`, so an artifact shipped here has no stack
|
|
8
|
+
* it legitimately does not apply to.
|
|
9
|
+
*/
|
|
10
|
+
export declare const UNIVERSAL_STACK = "all";
|
|
11
|
+
/** One shipped Lisa-owned artifact and the destination it installs to. */
|
|
12
|
+
export type ShippedArtifact = readonly [destination: string, source: string];
|
|
13
|
+
/**
|
|
14
|
+
* List the Lisa-owned artifacts one stack's copy-overwrite tree ships.
|
|
15
|
+
* @param lisaRoot - Installed Lisa package root
|
|
16
|
+
* @param type - Stack directory name
|
|
17
|
+
* @returns Destination/source pairs shipped by that stack
|
|
18
|
+
*/
|
|
19
|
+
export declare function shippedByStack(lisaRoot: string, type: string): Promise<readonly ShippedArtifact[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Destinations shipped by the universal tree, which every project receives.
|
|
22
|
+
* @param lisaRoot - Installed Lisa package root
|
|
23
|
+
* @returns Destination paths no project can legitimately be without
|
|
24
|
+
*/
|
|
25
|
+
export declare function universalDestinations(lisaRoot: string): Promise<ReadonlySet<string>>;
|
|
26
|
+
//# sourceMappingURL=doctor-lisa-owned-universal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-lisa-owned-universal.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-universal.ts"],"names":[],"mappings":"AAgBA,4EAA4E;AAC5E,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAYrC;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAM9B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which Lisa-owned artifacts every project receives, whatever stack it is.
|
|
3
|
+
*
|
|
4
|
+
* Kept separate from `doctor-lisa-owned-artifacts.ts` for the max-lines budget,
|
|
5
|
+
* the same way the safety-net fixtures are split. The distinction it encodes is
|
|
6
|
+
* small but load-bearing: absence of a STACK artifact proves nothing, because
|
|
7
|
+
* that stack may simply not apply here, while absence of a UNIVERSAL one means
|
|
8
|
+
* apply never ran and the CI gate that calls it is not running at all.
|
|
9
|
+
* @module cli/doctor-lisa-owned-universal
|
|
10
|
+
*/
|
|
11
|
+
import * as path from "node:path";
|
|
12
|
+
import * as fse from "fs-extra";
|
|
13
|
+
import { isLisaOwnedTemplate } from "../core/lisa-owned-templates.js";
|
|
14
|
+
import { listFilesRecursive } from "../utils/file-operations.js";
|
|
15
|
+
/** Directory name of the strategy tree these artifacts are shipped from. */
|
|
16
|
+
export const COPY_OVERWRITE = "copy-overwrite";
|
|
17
|
+
/**
|
|
18
|
+
* The stack tree every project receives regardless of detected type.
|
|
19
|
+
*
|
|
20
|
+
* `Lisa.processProjectType("all")` runs unconditionally and every downstream
|
|
21
|
+
* loop is `["all", ...detectedTypes]`, so an artifact shipped here has no stack
|
|
22
|
+
* it legitimately does not apply to.
|
|
23
|
+
*/
|
|
24
|
+
export const UNIVERSAL_STACK = "all";
|
|
25
|
+
/**
|
|
26
|
+
* List the Lisa-owned artifacts one stack's copy-overwrite tree ships.
|
|
27
|
+
* @param lisaRoot - Installed Lisa package root
|
|
28
|
+
* @param type - Stack directory name
|
|
29
|
+
* @returns Destination/source pairs shipped by that stack
|
|
30
|
+
*/
|
|
31
|
+
export async function shippedByStack(lisaRoot, type) {
|
|
32
|
+
const directory = path.join(lisaRoot, type, COPY_OVERWRITE);
|
|
33
|
+
if (!(await fse.pathExists(directory)))
|
|
34
|
+
return [];
|
|
35
|
+
return (await listFilesRecursive(directory))
|
|
36
|
+
.map(source => [
|
|
37
|
+
path.relative(directory, source).split(path.sep).join("/"),
|
|
38
|
+
source,
|
|
39
|
+
])
|
|
40
|
+
.filter(([destination]) => isLisaOwnedTemplate(destination));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Destinations shipped by the universal tree, which every project receives.
|
|
44
|
+
* @param lisaRoot - Installed Lisa package root
|
|
45
|
+
* @returns Destination paths no project can legitimately be without
|
|
46
|
+
*/
|
|
47
|
+
export async function universalDestinations(lisaRoot) {
|
|
48
|
+
return new Set((await shippedByStack(lisaRoot, UNIVERSAL_STACK)).map(([destination]) => destination));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=doctor-lisa-owned-universal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-lisa-owned-universal.js","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-universal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAKrC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,IAAY;IAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;SACzC,GAAG,CACF,MAAM,CAAC,EAAE,CACP;QACE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1D,MAAM;KACE,CACb;SACA,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAgB;IAEhB,OAAO,IAAI,GAAG,CACZ,CAAC,MAAM,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CACnD,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAC/B,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAs1EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAs1EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAmuOjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -7056,6 +7056,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7056
7056
|
"src/cli/doctor-legacy-overlay.ts": true,
|
|
7057
7057
|
"src/cli/doctor-lisa-owned-artifact-copies.ts": true,
|
|
7058
7058
|
"src/cli/doctor-lisa-owned-artifacts.ts": true,
|
|
7059
|
+
"src/cli/doctor-lisa-owned-universal.ts": true,
|
|
7059
7060
|
"src/cli/doctor-monitor-thresholds.ts": true,
|
|
7060
7061
|
"src/cli/doctor-readiness-action-pins.ts": true,
|
|
7061
7062
|
"src/cli/doctor-readiness-audit-allowlist.ts": true,
|
|
@@ -7486,6 +7487,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7486
7487
|
"tests/integration/cli-smoke.test.ts": true,
|
|
7487
7488
|
"tests/integration/environment-facade-gates.test.ts": true,
|
|
7488
7489
|
"tests/integration/failure-issue-workflows.test.ts": true,
|
|
7490
|
+
"tests/integration/floor-collisions-gate-fail-closed.test.ts": true,
|
|
7489
7491
|
"tests/integration/gate-config-validity-job.test.ts": true,
|
|
7490
7492
|
"tests/integration/jest-expo-haste-pruning.test.ts": true,
|
|
7491
7493
|
"tests/integration/lisa.test.ts": true,
|