@codyswann/lisa 2.277.4 → 2.279.0
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-readiness-credentials.d.ts +46 -0
- package/dist/cli/doctor-readiness-credentials.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-credentials.js +199 -0
- package/dist/cli/doctor-readiness-credentials.js.map +1 -0
- package/dist/cli/doctor-readiness-delivery.d.ts +16 -0
- package/dist/cli/doctor-readiness-delivery.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-delivery.js +243 -0
- package/dist/cli/doctor-readiness-delivery.js.map +1 -0
- package/dist/cli/doctor-readiness-journey.d.ts +4 -10
- package/dist/cli/doctor-readiness-journey.d.ts.map +1 -1
- package/dist/cli/doctor-readiness-journey.js +17 -1
- package/dist/cli/doctor-readiness-journey.js.map +1 -1
- package/dist/cli/doctor-readiness-release-path.d.ts +62 -0
- package/dist/cli/doctor-readiness-release-path.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-release-path.js +275 -0
- package/dist/cli/doctor-readiness-release-path.js.map +1 -0
- package/dist/cli/doctor-readiness-types.d.ts +25 -0
- package/dist/cli/doctor-readiness-types.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-types.js +13 -0
- package/dist/cli/doctor-readiness-types.js.map +1 -0
- package/dist/cli/doctor-readiness-workflows.d.ts +64 -0
- package/dist/cli/doctor-readiness-workflows.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-workflows.js +198 -0
- package/dist/cli/doctor-readiness-workflows.js.map +1 -0
- package/dist/cli/doctor-readiness.d.ts +19 -3
- package/dist/cli/doctor-readiness.d.ts.map +1 -1
- package/dist/cli/doctor-readiness.js +87 -26
- package/dist/cli/doctor-readiness.js.map +1 -1
- package/dist/cli/ui-automations-adapters.d.ts +22 -0
- package/dist/cli/ui-automations-adapters.d.ts.map +1 -1
- package/dist/cli/ui-automations-adapters.js +24 -12
- package/dist/cli/ui-automations-adapters.js.map +1 -1
- package/dist/cli/ui-automations.d.ts +1 -0
- package/dist/cli/ui-automations.d.ts.map +1 -1
- package/dist/cli/ui-automations.js +1 -0
- package/dist/cli/ui-automations.js.map +1 -1
- package/dist/cli/ui-cmd.d.ts +4 -1
- package/dist/cli/ui-cmd.d.ts.map +1 -1
- package/dist/cli/ui-cmd.js +72 -17
- package/dist/cli/ui-cmd.js.map +1 -1
- package/dist/cli/ui-confined-project-read.d.ts +22 -0
- package/dist/cli/ui-confined-project-read.d.ts.map +1 -0
- package/dist/cli/ui-confined-project-read.js +38 -0
- package/dist/cli/ui-confined-project-read.js.map +1 -0
- package/dist/cli/ui-deploy-pipeline.d.ts.map +1 -1
- package/dist/cli/ui-deploy-pipeline.js +4 -15
- package/dist/cli/ui-deploy-pipeline.js.map +1 -1
- package/dist/cli/ui-detected-stacks.d.ts +9 -8
- package/dist/cli/ui-detected-stacks.d.ts.map +1 -1
- package/dist/cli/ui-detected-stacks.js +111 -0
- package/dist/cli/ui-detected-stacks.js.map +1 -1
- package/dist/cli/ui-github-repo-gh.d.ts +6 -0
- package/dist/cli/ui-github-repo-gh.d.ts.map +1 -1
- package/dist/cli/ui-github-repo-gh.js.map +1 -1
- package/dist/cli/ui-github-repo-map.d.ts.map +1 -1
- package/dist/cli/ui-github-repo-map.js +26 -1
- package/dist/cli/ui-github-repo-map.js.map +1 -1
- package/dist/cli/ui-setup-readiness-config.d.ts +28 -0
- package/dist/cli/ui-setup-readiness-config.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-config.js +116 -0
- package/dist/cli/ui-setup-readiness-config.js.map +1 -0
- package/dist/cli/ui-setup-readiness-contract.d.ts +32 -0
- package/dist/cli/ui-setup-readiness-contract.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-contract.js +61 -0
- package/dist/cli/ui-setup-readiness-contract.js.map +1 -0
- package/dist/cli/ui-setup-readiness-install.d.ts +24 -0
- package/dist/cli/ui-setup-readiness-install.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-install.js +207 -0
- package/dist/cli/ui-setup-readiness-install.js.map +1 -0
- package/dist/cli/ui-setup-readiness-local.d.ts +40 -0
- package/dist/cli/ui-setup-readiness-local.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-local.js +235 -0
- package/dist/cli/ui-setup-readiness-local.js.map +1 -0
- package/dist/cli/ui-setup-readiness-remote.d.ts +30 -0
- package/dist/cli/ui-setup-readiness-remote.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-remote.js +108 -0
- package/dist/cli/ui-setup-readiness-remote.js.map +1 -0
- package/dist/cli/ui-setup-readiness.d.ts +52 -0
- package/dist/cli/ui-setup-readiness.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness.js +125 -0
- package/dist/cli/ui-setup-readiness.js.map +1 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +24 -2
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/health/read-only-fs.d.ts +7 -0
- package/dist/health/read-only-fs.d.ts.map +1 -1
- package/dist/health/read-only-fs.js +40 -1
- package/dist/health/read-only-fs.js.map +1 -1
- package/dist/sync/registry.d.ts +14 -0
- package/dist/sync/registry.d.ts.map +1 -1
- package/dist/sync/registry.js +54 -15
- package/dist/sync/registry.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/scripts/automation-status-codex-adapter.mjs +270 -23
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/scripts/automation-status-codex-adapter.mjs +270 -23
- 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-copilot/scripts/automation-status-codex-adapter.mjs +270 -23
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/scripts/automation-status-codex-adapter.mjs +270 -23
- 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/plugins/src/base/scripts/automation-status-codex-adapter.mjs +270 -23
- package/ui/index.html +1 -1
package/dist/cli/ui-cmd.js
CHANGED
|
@@ -14,8 +14,6 @@ import * as http from "node:http";
|
|
|
14
14
|
import * as path from "node:path";
|
|
15
15
|
import { fileURLToPath } from "node:url";
|
|
16
16
|
import { runConfigSync } from "../sync/config-sync.js";
|
|
17
|
-
import { isJsonObject } from "../sync/json-path.js";
|
|
18
|
-
import { deepMerge, readJsonOrNull } from "../utils/index.js";
|
|
19
17
|
import { printSyncReport } from "./sync-cmd.js";
|
|
20
18
|
import { inspectRemoteEnvironment, } from "./remote-environment.js";
|
|
21
19
|
import { createCiQualityJobsProbe } from "./ui-ci-quality-jobs.js";
|
|
@@ -29,6 +27,7 @@ import { createAutomationsProbe } from "./ui-automations.js";
|
|
|
29
27
|
import { createObservabilityProviderProbes } from "./ui-observability-providers.js";
|
|
30
28
|
import { serveConfigWrite } from "./ui-config-write.js";
|
|
31
29
|
import { createUiHealthHandler, } from "./ui-health.js";
|
|
30
|
+
import { createSetupReadinessReader, readMergedUiConfig, } from "./ui-setup-readiness.js";
|
|
32
31
|
export { createGithubAuthProbe, runProbe, } from "./ui-status.js";
|
|
33
32
|
export { createGithubRepoProbe } from "./ui-github-repo.js";
|
|
34
33
|
export { createEnabledPluginsProbe, buildEnabledPluginsValue, listMarketplacePluginsFromDisk, } from "./ui-enabled-plugins.js";
|
|
@@ -70,18 +69,6 @@ export function findUiHtml(startDir) {
|
|
|
70
69
|
}
|
|
71
70
|
return findUiHtml(parent);
|
|
72
71
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Read the project's merged config view (local overlay wins per key).
|
|
75
|
-
* @param destDir - Project root
|
|
76
|
-
* @returns Merged config object
|
|
77
|
-
*/
|
|
78
|
-
async function readMergedConfig(destDir) {
|
|
79
|
-
const committed = await readJsonOrNull(path.join(destDir, ".lisa.config.json"));
|
|
80
|
-
const local = await readJsonOrNull(path.join(destDir, ".lisa.config.local.json"));
|
|
81
|
-
const committedObject = isJsonObject(committed) ? committed : {};
|
|
82
|
-
const localObject = isJsonObject(local) ? local : {};
|
|
83
|
-
return deepMerge(committedObject, localObject);
|
|
84
|
-
}
|
|
85
72
|
/**
|
|
86
73
|
* Inject the live config into the console HTML as a script tag. The JSON is
|
|
87
74
|
* escaped so a value containing `</script>` cannot break out of the tag.
|
|
@@ -122,6 +109,27 @@ function createStatusSnapshotReader(probes) {
|
|
|
122
109
|
return inFlight;
|
|
123
110
|
};
|
|
124
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Coalesce concurrent first-open setup reads without caching later requests.
|
|
114
|
+
* @param readCurrent - Current projection reader
|
|
115
|
+
* @returns Single-flight reader that clears after settlement
|
|
116
|
+
*/
|
|
117
|
+
function createSetupReadinessSnapshotReader(readCurrent) {
|
|
118
|
+
// eslint-disable-next-line functional/no-let -- single-flight state clears after settlement
|
|
119
|
+
let inFlight;
|
|
120
|
+
return () => {
|
|
121
|
+
if (inFlight === undefined) {
|
|
122
|
+
const pending = readCurrent();
|
|
123
|
+
inFlight = pending;
|
|
124
|
+
const clear = () => {
|
|
125
|
+
if (inFlight === pending)
|
|
126
|
+
inFlight = undefined;
|
|
127
|
+
};
|
|
128
|
+
void pending.then(clear, clear);
|
|
129
|
+
}
|
|
130
|
+
return inFlight;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
125
133
|
/**
|
|
126
134
|
* Serve the same-origin live-status endpoint.
|
|
127
135
|
* @param request - Incoming loopback request
|
|
@@ -164,6 +172,44 @@ function serveStatus(request, response, readSnapshot) {
|
|
|
164
172
|
}));
|
|
165
173
|
});
|
|
166
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Serve a current, non-persisted Setup readiness projection.
|
|
177
|
+
* @param request - Incoming loopback request
|
|
178
|
+
* @param response - Response associated with the request
|
|
179
|
+
* @param readCurrent - Current projection reader
|
|
180
|
+
*/
|
|
181
|
+
function serveSetupReadiness(request, response, readCurrent) {
|
|
182
|
+
if (request.method === "HEAD") {
|
|
183
|
+
response.writeHead(200, {
|
|
184
|
+
"cache-control": NO_STORE,
|
|
185
|
+
"content-type": JSON_CONTENT_TYPE,
|
|
186
|
+
});
|
|
187
|
+
response.end();
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (request.method !== "GET") {
|
|
191
|
+
response.writeHead(405, {
|
|
192
|
+
allow: "GET, HEAD",
|
|
193
|
+
"cache-control": NO_STORE,
|
|
194
|
+
"content-type": TEXT_CONTENT_TYPE,
|
|
195
|
+
});
|
|
196
|
+
response.end("Method not allowed");
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
void readCurrent().then(result => {
|
|
200
|
+
response.writeHead(200, {
|
|
201
|
+
"cache-control": NO_STORE,
|
|
202
|
+
"content-type": JSON_CONTENT_TYPE,
|
|
203
|
+
});
|
|
204
|
+
response.end(JSON.stringify(result));
|
|
205
|
+
}, () => {
|
|
206
|
+
response.writeHead(500, {
|
|
207
|
+
"cache-control": NO_STORE,
|
|
208
|
+
"content-type": JSON_CONTENT_TYPE,
|
|
209
|
+
});
|
|
210
|
+
response.end(JSON.stringify({ error: "Unable to observe setup readiness" }));
|
|
211
|
+
});
|
|
212
|
+
}
|
|
167
213
|
/**
|
|
168
214
|
* Parse an HTTP request target without allowing malformed input to escape.
|
|
169
215
|
* @param requestUrl - Raw request target supplied by Node HTTP
|
|
@@ -205,11 +251,13 @@ function isLoopbackHost(host) {
|
|
|
205
251
|
* @param probes - Live-status probes registered for this server
|
|
206
252
|
* @param destDir - Project root served by this UI process
|
|
207
253
|
* @param healthDependencies - Injectable Health v1 storage/run boundaries
|
|
254
|
+
* @param setupReadinessDependencies - Injectable read-only Setup boundaries
|
|
208
255
|
* @returns Loopback HTTP request handler
|
|
209
256
|
*/
|
|
210
|
-
function createUiRequestHandler(page, probes, destDir, healthDependencies = {}) {
|
|
257
|
+
function createUiRequestHandler(page, probes, destDir, healthDependencies = {}, setupReadinessDependencies = {}) {
|
|
211
258
|
const readSnapshot = createStatusSnapshotReader(probes);
|
|
212
259
|
const serveHealth = createUiHealthHandler(destDir, healthDependencies);
|
|
260
|
+
const readCurrentSetup = createSetupReadinessSnapshotReader(createSetupReadinessReader(destDir, setupReadinessDependencies));
|
|
213
261
|
validateStatusProbes(probes);
|
|
214
262
|
return (request, response) => {
|
|
215
263
|
if (!isLoopbackHost(request.headers.host)) {
|
|
@@ -235,6 +283,10 @@ function createUiRequestHandler(page, probes, destDir, healthDependencies = {})
|
|
|
235
283
|
serveHealth(request, response);
|
|
236
284
|
return;
|
|
237
285
|
}
|
|
286
|
+
if (pathname === "/api/setup-readiness") {
|
|
287
|
+
serveSetupReadiness(request, response, readCurrentSetup);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
238
290
|
if (pathname === "/" || pathname === "/index.html") {
|
|
239
291
|
response.writeHead(200, { "content-type": "text/html; charset=utf-8" });
|
|
240
292
|
response.end(page);
|
|
@@ -264,7 +316,10 @@ export async function runUi(targetPath, options = {}, dependencies = {}) {
|
|
|
264
316
|
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
265
317
|
const htmlPath = findUiHtml(moduleDir);
|
|
266
318
|
const html = await readFile(htmlPath, "utf8");
|
|
267
|
-
|
|
319
|
+
// Keep the read-only console available when config is malformed or unsafe;
|
|
320
|
+
// probes receive no claims instead of importing untrusted evidence. The
|
|
321
|
+
// config write endpoint still reads the originals strictly and fails closed.
|
|
322
|
+
const config = await readMergedUiConfig(destDir).catch(() => ({}));
|
|
268
323
|
const remoteEnvironment = await inspectRemoteEnvironment(destDir, config, getProcessEnvironment());
|
|
269
324
|
const page = injectLiveConfig(html, config, remoteEnvironment);
|
|
270
325
|
const probes = dependencies.probes ?? [
|
|
@@ -278,7 +333,7 @@ export async function runUi(targetPath, options = {}, dependencies = {}) {
|
|
|
278
333
|
...createObservabilityProviderProbes(),
|
|
279
334
|
createAutomationsProbe({ cwd: destDir }),
|
|
280
335
|
];
|
|
281
|
-
const server = http.createServer(createUiRequestHandler(page, probes, destDir, dependencies.health));
|
|
336
|
+
const server = http.createServer(createUiRequestHandler(page, probes, destDir, dependencies.health, dependencies.setupReadiness));
|
|
282
337
|
await new Promise(resolve => {
|
|
283
338
|
server.listen(port, "127.0.0.1", resolve);
|
|
284
339
|
});
|
package/dist/cli/ui-cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-cmd.js","sourceRoot":"","sources":["../../src/cli/ui-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,6FAA6F;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-cmd.js","sourceRoot":"","sources":["../../src/cli/ui-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type JsonObject } from "../sync/json-path.js";
|
|
2
|
+
/**
|
|
3
|
+
* Read one project-relative text file through deterministic Health confinement.
|
|
4
|
+
* @param projectRoot - Project root, canonicalized before the read
|
|
5
|
+
* @param relativePath - Strict project-relative path
|
|
6
|
+
* @returns Bounded UTF-8 text, or undefined when absent
|
|
7
|
+
*/
|
|
8
|
+
export declare function readConfinedProjectText(projectRoot: string, relativePath: string): Promise<string | undefined>;
|
|
9
|
+
/**
|
|
10
|
+
* Read and parse one confined JSON file.
|
|
11
|
+
* @param projectRoot - Project root
|
|
12
|
+
* @param relativePath - Strict project-relative JSON path
|
|
13
|
+
* @returns Parsed JSON, or undefined when absent
|
|
14
|
+
*/
|
|
15
|
+
export declare function readConfinedProjectJson(projectRoot: string, relativePath: string): Promise<unknown | undefined>;
|
|
16
|
+
/**
|
|
17
|
+
* Read committed-plus-local Lisa config without following unsafe files.
|
|
18
|
+
* @param projectRoot - Project root
|
|
19
|
+
* @returns Merged config with the local overlay winning per key
|
|
20
|
+
*/
|
|
21
|
+
export declare function readConfinedMergedConfig(projectRoot: string): Promise<JsonObject>;
|
|
22
|
+
//# sourceMappingURL=ui-confined-project-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-confined-project-read.d.ts","sourceRoot":"","sources":["../../src/cli/ui-confined-project-read.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGrE;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAG9B;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CASrB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Bounded, no-follow local project reads shared by localhost UI probes. */
|
|
2
|
+
import { realpath } from "node:fs/promises";
|
|
3
|
+
import { readProjectText } from "../health/read-only-fs.js";
|
|
4
|
+
import { isJsonObject } from "../sync/json-path.js";
|
|
5
|
+
import { deepMerge } from "../utils/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Read one project-relative text file through deterministic Health confinement.
|
|
8
|
+
* @param projectRoot - Project root, canonicalized before the read
|
|
9
|
+
* @param relativePath - Strict project-relative path
|
|
10
|
+
* @returns Bounded UTF-8 text, or undefined when absent
|
|
11
|
+
*/
|
|
12
|
+
export async function readConfinedProjectText(projectRoot, relativePath) {
|
|
13
|
+
const root = await realpath(projectRoot);
|
|
14
|
+
return await readProjectText(root, relativePath);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Read and parse one confined JSON file.
|
|
18
|
+
* @param projectRoot - Project root
|
|
19
|
+
* @param relativePath - Strict project-relative JSON path
|
|
20
|
+
* @returns Parsed JSON, or undefined when absent
|
|
21
|
+
*/
|
|
22
|
+
export async function readConfinedProjectJson(projectRoot, relativePath) {
|
|
23
|
+
const text = await readConfinedProjectText(projectRoot, relativePath);
|
|
24
|
+
return text === undefined ? undefined : JSON.parse(text);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Read committed-plus-local Lisa config without following unsafe files.
|
|
28
|
+
* @param projectRoot - Project root
|
|
29
|
+
* @returns Merged config with the local overlay winning per key
|
|
30
|
+
*/
|
|
31
|
+
export async function readConfinedMergedConfig(projectRoot) {
|
|
32
|
+
const [committed, local] = await Promise.all([
|
|
33
|
+
readConfinedProjectJson(projectRoot, ".lisa.config.json"),
|
|
34
|
+
readConfinedProjectJson(projectRoot, ".lisa.config.local.json"),
|
|
35
|
+
]);
|
|
36
|
+
return deepMerge(isJsonObject(committed) ? committed : {}, isJsonObject(local) ? local : {});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ui-confined-project-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-confined-project-read.js","sourceRoot":"","sources":["../../src/cli/ui-confined-project-read.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,YAAoB;IAEpB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,MAAM,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,YAAoB;IAEpB,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACtE,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAmB;IAEnB,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3C,uBAAuB,CAAC,WAAW,EAAE,mBAAmB,CAAC;QACzD,uBAAuB,CAAC,WAAW,EAAE,yBAAyB,CAAC;KAChE,CAAC,CAAC;IACH,OAAO,SAAS,CACd,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EACxC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CACnB,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-deploy-pipeline.d.ts","sourceRoot":"","sources":["../../src/cli/ui-deploy-pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui-deploy-pipeline.d.ts","sourceRoot":"","sources":["../../src/cli/ui-deploy-pipeline.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAGL,KAAK,mBAAmB,EAExB,KAAK,wBAAwB,EAC9B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,+BAA+B,CAAC;AAKvC,uDAAuD;AACvD,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtE,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CACpC,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAChC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACxC,CAAC;AAmIF;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC,CAuBnC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,0BAA+B,GAC5C,WAAW,CAAC,mBAAmB,CAAC,CA2BlC"}
|
|
@@ -7,13 +7,11 @@
|
|
|
7
7
|
* @module cli/ui-deploy-pipeline
|
|
8
8
|
*/
|
|
9
9
|
import { execFile } from "node:child_process";
|
|
10
|
-
import { access, readFile } from "node:fs/promises";
|
|
11
|
-
import * as path from "node:path";
|
|
12
10
|
import { isJsonObject } from "../sync/json-path.js";
|
|
13
|
-
import {
|
|
11
|
+
import { readConfinedMergedConfig, readConfinedProjectText, } from "./ui-confined-project-read.js";
|
|
14
12
|
import { buildDeployPipelineResult, DEPLOY_PIPELINE_PROBE_ID, } from "./ui-deploy-pipeline-model.js";
|
|
15
13
|
export { assembleDeployPipelineStages, buildDeployPipelineResult, DEPLOY_PIPELINE_PROBE_ID, mapEnvironmentHoldStage, parseDeployWorkflowStages, } from "./ui-deploy-pipeline-model.js";
|
|
16
|
-
const DEPLOY_YML_RELATIVE =
|
|
14
|
+
const DEPLOY_YML_RELATIVE = ".github/workflows/deploy.yml";
|
|
17
15
|
const DEFAULT_TIMEOUT_MS = 8_000;
|
|
18
16
|
/**
|
|
19
17
|
* Read deploy.yml when present; null when the project has no deploy workflow.
|
|
@@ -21,14 +19,7 @@ const DEFAULT_TIMEOUT_MS = 8_000;
|
|
|
21
19
|
* @returns File contents or null
|
|
22
20
|
*/
|
|
23
21
|
async function readDeployWorkflowDefault(cwd) {
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
await access(filePath);
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
return await readFile(filePath, "utf8");
|
|
22
|
+
return (await readConfinedProjectText(cwd, DEPLOY_YML_RELATIVE)) ?? null;
|
|
32
23
|
}
|
|
33
24
|
/**
|
|
34
25
|
* Read configured environment names from merged Lisa config.
|
|
@@ -36,9 +27,7 @@ async function readDeployWorkflowDefault(cwd) {
|
|
|
36
27
|
* @returns Stable key order from the merged `github.environments` map
|
|
37
28
|
*/
|
|
38
29
|
async function readConfiguredEnvironmentsDefault(cwd) {
|
|
39
|
-
const
|
|
40
|
-
const local = await readJsonOrNull(path.join(cwd, ".lisa.config.local.json"));
|
|
41
|
-
const merged = deepMerge(isJsonObject(committed) ? committed : {}, isJsonObject(local) ? local : {});
|
|
30
|
+
const merged = await readConfinedMergedConfig(cwd);
|
|
42
31
|
const github = merged.github;
|
|
43
32
|
if (!isJsonObject(github)) {
|
|
44
33
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-deploy-pipeline.js","sourceRoot":"","sources":["../../src/cli/ui-deploy-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ui-deploy-pipeline.js","sourceRoot":"","sources":["../../src/cli/ui-deploy-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Live-status probe for the console Stacks section.
|
|
3
|
-
*
|
|
4
|
-
* Mirrors doctor's detection chain exactly so the console and `lisa doctor`
|
|
5
|
-
* can never disagree. An empty match is the honest empty value (`[]`), never
|
|
6
|
-
* unknown; the runner maps a thrown detector error to unknown.
|
|
7
|
-
* @module cli/ui-detected-stacks
|
|
8
|
-
*/
|
|
9
1
|
import { type DetectorRegistry } from "../detection/index.js";
|
|
2
|
+
import type { ProjectType } from "../core/config.js";
|
|
10
3
|
import type { StatusProbe } from "./ui-status.js";
|
|
11
4
|
/** Probe id for the detected-stacks live-status entry. */
|
|
12
5
|
export declare const DETECTED_STACKS_PROBE_ID = "detected-stacks";
|
|
6
|
+
/**
|
|
7
|
+
* Detect setup-automation stacks using only bounded, no-follow project reads.
|
|
8
|
+
* This mirrors the authoritative detector signals without invoking their
|
|
9
|
+
* legacy unbounded readers on the setup-readiness request path.
|
|
10
|
+
* @param destDir - Project root
|
|
11
|
+
* @returns Expanded types in canonical detector-registry order
|
|
12
|
+
*/
|
|
13
|
+
export declare function readConfinedDetectedStacks(destDir: string): Promise<readonly ProjectType[]>;
|
|
13
14
|
/**
|
|
14
15
|
* Create the probe that reports the project's detected stacks.
|
|
15
16
|
* @param destDir - Project root scanned by the detector registry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-detected-stacks.d.ts","sourceRoot":"","sources":["../../src/cli/ui-detected-stacks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui-detected-stacks.d.ts","sourceRoot":"","sources":["../../src/cli/ui-detected-stacks.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AA4G1D;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAuBjC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,gBAA2C,GACpD,WAAW,CAAC,MAAM,EAAE,CAAC,CAWvB"}
|
|
@@ -6,9 +6,120 @@
|
|
|
6
6
|
* unknown; the runner maps a thrown detector error to unknown.
|
|
7
7
|
* @module cli/ui-detected-stacks
|
|
8
8
|
*/
|
|
9
|
+
import { realpath } from "node:fs/promises";
|
|
9
10
|
import { createDetectorRegistry, } from "../detection/index.js";
|
|
11
|
+
import { projectPathKind, readProjectText } from "../health/read-only-fs.js";
|
|
12
|
+
import { isJsonObject } from "../sync/json-path.js";
|
|
10
13
|
/** Probe id for the detected-stacks live-status entry. */
|
|
11
14
|
export const DETECTED_STACKS_PROBE_ID = "detected-stacks";
|
|
15
|
+
const PACKAGE_JSON_RELATIVE = "package.json";
|
|
16
|
+
const HARPER_CONFIG_RELATIVE = "harper-app/config.yaml";
|
|
17
|
+
const MARKER_NAMES = [
|
|
18
|
+
"tsconfig.json",
|
|
19
|
+
"app.json",
|
|
20
|
+
"eas.json",
|
|
21
|
+
"nest-cli.json",
|
|
22
|
+
"cdk.json",
|
|
23
|
+
HARPER_CONFIG_RELATIVE,
|
|
24
|
+
"harper-app/schema.graphql",
|
|
25
|
+
"bin/rails",
|
|
26
|
+
"config/application.rb",
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* Return whether a confined regular marker file exists.
|
|
30
|
+
* @param root - Canonical project root
|
|
31
|
+
* @param relativePath - Project-relative marker path
|
|
32
|
+
* @returns Whether the marker is a regular no-follow file
|
|
33
|
+
*/
|
|
34
|
+
async function confinedMarkerExists(root, relativePath) {
|
|
35
|
+
return (await projectPathKind(root, relativePath)) === "file";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Return package dependency names from a validated object.
|
|
39
|
+
* @param packageJson - Parsed package manifest
|
|
40
|
+
* @returns Production and development dependency names
|
|
41
|
+
*/
|
|
42
|
+
function dependencyNames(packageJson) {
|
|
43
|
+
if (!isJsonObject(packageJson))
|
|
44
|
+
return [];
|
|
45
|
+
return [packageJson.dependencies, packageJson.devDependencies].flatMap(dependencies => isJsonObject(dependencies) ? Object.keys(dependencies) : []);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Return whether a parsed package manifest describes a publishable package.
|
|
49
|
+
* @param packageJson - Parsed package manifest
|
|
50
|
+
* @returns Whether the npm-package detector signal is present
|
|
51
|
+
*/
|
|
52
|
+
function isPublishablePackage(packageJson) {
|
|
53
|
+
return (isJsonObject(packageJson) &&
|
|
54
|
+
packageJson.private !== true &&
|
|
55
|
+
(packageJson.main !== undefined ||
|
|
56
|
+
packageJson.bin !== undefined ||
|
|
57
|
+
packageJson.exports !== undefined ||
|
|
58
|
+
(Array.isArray(packageJson.files) && packageJson.files.length > 0)));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Return detector results from confined filesystem signals.
|
|
62
|
+
* @param signals - Bounded package, marker, and Harper evidence
|
|
63
|
+
* @returns Direct detector matches before parent expansion
|
|
64
|
+
*/
|
|
65
|
+
function classifyDetectedTypes(signals) {
|
|
66
|
+
const hasMarker = (name) => signals.markers.has(name);
|
|
67
|
+
const hasDependency = (name) => signals.dependencies.includes(name);
|
|
68
|
+
const hasDependencyPrefix = (prefix) => signals.dependencies.some(name => name.startsWith(prefix));
|
|
69
|
+
const harperConfigMatches = signals.harperConfig?.includes("graphqlSchema:") === true &&
|
|
70
|
+
signals.harperConfig.includes("jsResource:") &&
|
|
71
|
+
signals.harperConfig.includes("static:");
|
|
72
|
+
return [
|
|
73
|
+
hasMarker("tsconfig.json") || hasDependency("typescript")
|
|
74
|
+
? ["typescript"]
|
|
75
|
+
: [],
|
|
76
|
+
isPublishablePackage(signals.packageJson) ? ["npm-package"] : [],
|
|
77
|
+
hasMarker(HARPER_CONFIG_RELATIVE) &&
|
|
78
|
+
hasMarker("harper-app/schema.graphql") &&
|
|
79
|
+
(harperConfigMatches || hasDependency("harperdb"))
|
|
80
|
+
? ["harper-fabric"]
|
|
81
|
+
: [],
|
|
82
|
+
hasDependency("phaser") ? ["phaser"] : [],
|
|
83
|
+
hasMarker("app.json") || hasMarker("eas.json") || hasDependency("expo")
|
|
84
|
+
? ["expo"]
|
|
85
|
+
: [],
|
|
86
|
+
hasMarker("nest-cli.json") || hasDependencyPrefix("@nestjs")
|
|
87
|
+
? ["nestjs"]
|
|
88
|
+
: [],
|
|
89
|
+
hasMarker("cdk.json") || hasDependencyPrefix("aws-cdk")
|
|
90
|
+
? ["cdk"]
|
|
91
|
+
: [],
|
|
92
|
+
hasMarker("bin/rails") || hasMarker("config/application.rb")
|
|
93
|
+
? ["rails"]
|
|
94
|
+
: [],
|
|
95
|
+
].flat();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Detect setup-automation stacks using only bounded, no-follow project reads.
|
|
99
|
+
* This mirrors the authoritative detector signals without invoking their
|
|
100
|
+
* legacy unbounded readers on the setup-readiness request path.
|
|
101
|
+
* @param destDir - Project root
|
|
102
|
+
* @returns Expanded types in canonical detector-registry order
|
|
103
|
+
*/
|
|
104
|
+
export async function readConfinedDetectedStacks(destDir) {
|
|
105
|
+
const root = await realpath(destDir);
|
|
106
|
+
const packageText = await readProjectText(root, PACKAGE_JSON_RELATIVE);
|
|
107
|
+
const packageJson = packageText === undefined
|
|
108
|
+
? undefined
|
|
109
|
+
: JSON.parse(packageText);
|
|
110
|
+
const markerValues = await Promise.all(MARKER_NAMES.map(name => confinedMarkerExists(root, name)));
|
|
111
|
+
const markers = new Set(MARKER_NAMES.filter((_name, index) => markerValues[index]));
|
|
112
|
+
const harperConfig = markers.has(HARPER_CONFIG_RELATIVE)
|
|
113
|
+
? await readProjectText(root, HARPER_CONFIG_RELATIVE)
|
|
114
|
+
: undefined;
|
|
115
|
+
const detected = classifyDetectedTypes({
|
|
116
|
+
packageJson,
|
|
117
|
+
dependencies: dependencyNames(packageJson),
|
|
118
|
+
markers,
|
|
119
|
+
harperConfig,
|
|
120
|
+
});
|
|
121
|
+
return createDetectorRegistry().expandAndOrderTypes([...detected]);
|
|
122
|
+
}
|
|
12
123
|
/**
|
|
13
124
|
* Create the probe that reports the project's detected stacks.
|
|
14
125
|
* @param destDir - Project root scanned by the detector registry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-detected-stacks.js","sourceRoot":"","sources":["../../src/cli/ui-detected-stacks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-detected-stacks.js","sourceRoot":"","sources":["../../src/cli/ui-detected-stacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,12 @@ export interface GithubRulesetRow {
|
|
|
18
18
|
readonly appliesTo: string;
|
|
19
19
|
readonly enforces: string;
|
|
20
20
|
readonly active: boolean;
|
|
21
|
+
/** Structured default-branch targeting retained beside display text. */
|
|
22
|
+
readonly targetsDefaultBranch?: boolean;
|
|
23
|
+
/** Structured pull-request enforcement retained beside display text. */
|
|
24
|
+
readonly requiresPullRequest?: boolean;
|
|
25
|
+
/** At least one required status-check context is configured. */
|
|
26
|
+
readonly requiresStatusChecks?: boolean;
|
|
21
27
|
}
|
|
22
28
|
/** One label present on the remote repository. */
|
|
23
29
|
export interface GithubRemoteLabel {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-github-repo-gh.d.ts","sourceRoot":"","sources":["../../src/cli/ui-github-repo-gh.ts"],"names":[],"mappings":"AAWA,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-github-repo-gh.d.ts","sourceRoot":"","sources":["../../src/cli/ui-github-repo-gh.ts"],"names":[],"mappings":"AAWA,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,gEAAgE;IAChE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,YAAY,EAAE,CACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,CACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,CACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACjC;AAoFD,sDAAsD;AACtD,eAAO,MAAM,wBAAwB,EAAE,iBA0EtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-github-repo-gh.js","sourceRoot":"","sources":["../../src/cli/ui-github-repo-gh.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,eAAe,EACf,aAAa,EACb,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-github-repo-gh.js","sourceRoot":"","sources":["../../src/cli/ui-github-repo-gh.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-github-repo-map.d.ts","sourceRoot":"","sources":["../../src/cli/ui-github-repo-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AA+ChC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAiBhE;
|
|
1
|
+
{"version":3,"file":"ui-github-repo-map.d.ts","sourceRoot":"","sources":["../../src/cli/ui-github-repo-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AA+ChC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAiBhE;AA2FD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAe5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtE"}
|
|
@@ -121,6 +121,27 @@ function rulesetRuleTypes(rules) {
|
|
|
121
121
|
})
|
|
122
122
|
.filter((type) => type !== undefined);
|
|
123
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Whether a required-status-check rule contains at least one context.
|
|
126
|
+
* @param rules - Raw ruleset rules
|
|
127
|
+
* @returns Whether at least one required check context is configured
|
|
128
|
+
*/
|
|
129
|
+
function hasRequiredStatusChecks(rules) {
|
|
130
|
+
if (!Array.isArray(rules))
|
|
131
|
+
return false;
|
|
132
|
+
return rules.some(rule => {
|
|
133
|
+
if (rule === null ||
|
|
134
|
+
typeof rule !== "object" ||
|
|
135
|
+
Reflect.get(rule, "type") !== "required_status_checks") {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
const parameters = Reflect.get(rule, "parameters");
|
|
139
|
+
if (parameters === null || typeof parameters !== "object")
|
|
140
|
+
return false;
|
|
141
|
+
const checks = Reflect.get(parameters, "required_status_checks");
|
|
142
|
+
return Array.isArray(checks) && checks.length > 0;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
124
145
|
/**
|
|
125
146
|
* Map a detailed ruleset payload into a panel row.
|
|
126
147
|
* @param raw - One ruleset object from gh api
|
|
@@ -131,11 +152,15 @@ export function mapRulesetRow(raw) {
|
|
|
131
152
|
throw new TypeError("Ruleset entry was not an object");
|
|
132
153
|
}
|
|
133
154
|
const ruleTypes = rulesetRuleTypes(Reflect.get(raw, "rules"));
|
|
155
|
+
const includes = rulesetIncludes(Reflect.get(raw, "conditions"));
|
|
134
156
|
return {
|
|
135
157
|
name: requireString(raw, "name"),
|
|
136
|
-
appliesTo: formatAppliesTo(
|
|
158
|
+
appliesTo: formatAppliesTo(includes),
|
|
137
159
|
enforces: ruleTypes.length > 0 ? ruleTypes.join(", ") : "—",
|
|
138
160
|
active: Reflect.get(raw, "enforcement") === "active",
|
|
161
|
+
targetsDefaultBranch: includes.includes("~DEFAULT_BRANCH"),
|
|
162
|
+
requiresPullRequest: ruleTypes.includes("pull_request"),
|
|
163
|
+
requiresStatusChecks: hasRequiredStatusChecks(Reflect.get(raw, "rules")),
|
|
139
164
|
};
|
|
140
165
|
}
|
|
141
166
|
/**
|