@codyswann/lisa 2.274.0 → 2.276.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/health-cmd.d.ts +31 -0
- package/dist/cli/health-cmd.d.ts.map +1 -0
- package/dist/cli/health-cmd.js +101 -0
- package/dist/cli/health-cmd.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +20 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui-cmd.d.ts +3 -0
- package/dist/cli/ui-cmd.d.ts.map +1 -1
- package/dist/cli/ui-cmd.js +11 -2
- package/dist/cli/ui-cmd.js.map +1 -1
- package/dist/cli/ui-health.d.ts +18 -0
- package/dist/cli/ui-health.d.ts.map +1 -0
- package/dist/cli/ui-health.js +140 -0
- package/dist/cli/ui-health.js.map +1 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +37 -2
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/health/agentic.d.ts +2 -0
- package/dist/health/agentic.d.ts.map +1 -1
- package/dist/health/agentic.js +4 -4
- package/dist/health/agentic.js.map +1 -1
- package/dist/health/consumer.d.ts +28 -0
- package/dist/health/consumer.d.ts.map +1 -0
- package/dist/health/consumer.js +50 -0
- package/dist/health/consumer.js.map +1 -0
- package/dist/health/evaluation-protocol.d.ts +45 -0
- package/dist/health/evaluation-protocol.d.ts.map +1 -0
- package/dist/health/evaluation-protocol.js +119 -0
- package/dist/health/evaluation-protocol.js.map +1 -0
- package/dist/health/index.d.ts +3 -0
- package/dist/health/index.d.ts.map +1 -1
- package/dist/health/index.js +3 -0
- package/dist/health/index.js.map +1 -1
- package/dist/health/prepare.d.ts +15 -0
- package/dist/health/prepare.d.ts.map +1 -0
- package/dist/health/prepare.js +31 -0
- package/dist/health/prepare.js.map +1 -0
- package/dist/health/storage.d.ts +8 -0
- package/dist/health/storage.d.ts.map +1 -1
- package/dist/health/storage.js +13 -3
- package/dist/health/storage.js.map +1 -1
- package/package.json +3 -2
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-health/SKILL.md +142 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-health/agents/openai.yaml +4 -0
- package/plugins/lisa/commands/health.md +8 -0
- package/plugins/lisa/skills/lisa-health/SKILL.md +142 -0
- package/plugins/lisa/skills/lisa-health/agents/openai.yaml +4 -0
- package/plugins/lisa-agy/commands/lisa/health.md +8 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-health/SKILL.md +142 -0
- 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/commands/lisa/health.md +8 -0
- package/plugins/lisa-copilot/skills/lisa-health/SKILL.md +142 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/commands/lisa/health.md +8 -0
- package/plugins/lisa-cursor/skills/lisa-health/SKILL.md +142 -0
- 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/commands/health.md +8 -0
- package/plugins/src/base/skills/lisa-health/SKILL.md +142 -0
- package/scripts/verify-health-consumer-built.mjs +239 -0
- package/ui/README.md +30 -18
- package/ui/index.html +316 -96
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { prepareHealthEvaluation, runPersistedHealth, serializeHealthEvaluationRequest } from "../health/index.js";
|
|
2
|
+
/** Options accepted by `lisa health`. */
|
|
3
|
+
export interface HealthCliOptions {
|
|
4
|
+
/** Emit a bounded evaluator request without persisting a result. */
|
|
5
|
+
readonly prepareAgentic?: boolean;
|
|
6
|
+
/** Read a digest-bound evaluator response from standard input. */
|
|
7
|
+
readonly agenticEvaluation?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** Injectable process boundaries for deterministic CLI tests. */
|
|
10
|
+
export interface HealthCliDependencies {
|
|
11
|
+
readonly cwd?: string;
|
|
12
|
+
readonly prepare: typeof prepareHealthEvaluation;
|
|
13
|
+
readonly runPersisted: typeof runPersistedHealth;
|
|
14
|
+
readonly serializeRequest: typeof serializeHealthEvaluationRequest;
|
|
15
|
+
readonly readStdin: () => Promise<string>;
|
|
16
|
+
readonly write: (payload: string) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Read strict UTF-8 evaluator JSON under the protocol's aggregate bound.
|
|
20
|
+
* @param stream - Standard input or an injected test stream
|
|
21
|
+
* @returns Bounded UTF-8 payload
|
|
22
|
+
*/
|
|
23
|
+
export declare function readBoundedHealthInput(stream: AsyncIterable<Buffer | string>): Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Run the public Health v1 CLI without reconstructing any result fields.
|
|
26
|
+
* @param projectPath - Optional host-project path
|
|
27
|
+
* @param options - Prepare/finalize mode
|
|
28
|
+
* @param dependencies - Injectable process and health boundaries
|
|
29
|
+
*/
|
|
30
|
+
export declare function runHealthCli(projectPath: string | undefined, options: HealthCliOptions, dependencies?: Partial<HealthCliDependencies>): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=health-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/health-cmd.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,uBAAuB,EACvB,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,oBAAoB,CAAC;AAI5B,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACjD,QAAQ,CAAC,YAAY,EAAE,OAAO,kBAAkB,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,gCAAgC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAUD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,gBAAgB,EACzB,YAAY,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAChD,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/** CLI adapter for the shared Health v1 prepare/finalize consumer. */
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { HEALTH_EVALUATION_PROTOCOL_VERSION, MAX_HEALTH_EVALUATION_RESPONSE_BYTES, prepareHealthEvaluation, runPersistedHealth, serializeHealthEvaluationRequest, } from "../health/index.js";
|
|
4
|
+
const MAX_EVALUATION_CHUNKS = 1024;
|
|
5
|
+
const DEFAULT_DEPENDENCIES = {
|
|
6
|
+
prepare: prepareHealthEvaluation,
|
|
7
|
+
runPersisted: runPersistedHealth,
|
|
8
|
+
serializeRequest: serializeHealthEvaluationRequest,
|
|
9
|
+
readStdin: async () => readBoundedHealthInput(process.stdin),
|
|
10
|
+
write: payload => process.stdout.write(payload),
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Read strict UTF-8 evaluator JSON under the protocol's aggregate bound.
|
|
14
|
+
* @param stream - Standard input or an injected test stream
|
|
15
|
+
* @returns Bounded UTF-8 payload
|
|
16
|
+
*/
|
|
17
|
+
export async function readBoundedHealthInput(stream) {
|
|
18
|
+
const chunks = [];
|
|
19
|
+
// eslint-disable-next-line functional/no-let -- bounded stream accounting is iterative
|
|
20
|
+
let totalBytes = 0;
|
|
21
|
+
// eslint-disable-next-line functional/no-let -- bounded stream accounting is iterative
|
|
22
|
+
let chunkCount = 0;
|
|
23
|
+
for await (const rawChunk of stream) {
|
|
24
|
+
chunkCount += 1;
|
|
25
|
+
if (chunkCount > MAX_EVALUATION_CHUNKS) {
|
|
26
|
+
throw new Error("health evaluation contains too many chunks");
|
|
27
|
+
}
|
|
28
|
+
const chunk = Buffer.from(rawChunk);
|
|
29
|
+
totalBytes += chunk.byteLength;
|
|
30
|
+
if (totalBytes > MAX_HEALTH_EVALUATION_RESPONSE_BYTES) {
|
|
31
|
+
throw new Error("health evaluation exceeds 128 KiB");
|
|
32
|
+
}
|
|
33
|
+
// eslint-disable-next-line functional/immutable-data -- bounded local buffering avoids quadratic copies
|
|
34
|
+
chunks.push(chunk);
|
|
35
|
+
}
|
|
36
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(Buffer.concat(chunks, totalBytes));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Run the public Health v1 CLI without reconstructing any result fields.
|
|
40
|
+
* @param projectPath - Optional host-project path
|
|
41
|
+
* @param options - Prepare/finalize mode
|
|
42
|
+
* @param dependencies - Injectable process and health boundaries
|
|
43
|
+
*/
|
|
44
|
+
export async function runHealthCli(projectPath, options, dependencies = {}) {
|
|
45
|
+
const deps = { ...DEFAULT_DEPENDENCIES, ...dependencies };
|
|
46
|
+
if (options.prepareAgentic === true && options.agenticEvaluation === true) {
|
|
47
|
+
throw new Error("--prepare-agentic and --agentic-evaluation are mutually exclusive");
|
|
48
|
+
}
|
|
49
|
+
const root = path.resolve(deps.cwd ?? process.cwd(), projectPath ?? ".");
|
|
50
|
+
if (options.prepareAgentic === true) {
|
|
51
|
+
const prepared = await deps.prepare(root);
|
|
52
|
+
deps.write(prepared === undefined
|
|
53
|
+
? `${JSON.stringify({
|
|
54
|
+
protocolVersion: HEALTH_EVALUATION_PROTOCOL_VERSION,
|
|
55
|
+
status: "unavailable",
|
|
56
|
+
})}\n`
|
|
57
|
+
: deps.serializeRequest(prepared));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const response = options.agenticEvaluation === true
|
|
61
|
+
? await readEvaluationInput(deps.readStdin)
|
|
62
|
+
: undefined;
|
|
63
|
+
const completed = await deps.runPersisted(root, response === undefined
|
|
64
|
+
? undefined
|
|
65
|
+
: { agentic: { enabled: true, response } });
|
|
66
|
+
deps.write(completed.serialized);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Parse an exact JSON value without echoing hostile input in diagnostics.
|
|
70
|
+
* @param payload - Bounded candidate response
|
|
71
|
+
* @returns Parsed hostile value for the health consumer to validate
|
|
72
|
+
*/
|
|
73
|
+
function parseEvaluationInput(payload) {
|
|
74
|
+
if (Buffer.byteLength(payload, "utf8") > MAX_HEALTH_EVALUATION_RESPONSE_BYTES) {
|
|
75
|
+
return payload;
|
|
76
|
+
}
|
|
77
|
+
if (payload.trim() === "") {
|
|
78
|
+
return payload;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
return JSON.parse(payload);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return payload;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Convert every malformed transport outcome into hostile input for the shared
|
|
89
|
+
* consumer, which degrades it to unavailable and still persists one final run.
|
|
90
|
+
* @param readStdin - Bounded stdin reader
|
|
91
|
+
* @returns Parsed JSON or an invalid sentinel value
|
|
92
|
+
*/
|
|
93
|
+
async function readEvaluationInput(readStdin) {
|
|
94
|
+
try {
|
|
95
|
+
return parseEvaluationInput(await readStdin());
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=health-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-cmd.js","sourceRoot":"","sources":["../../src/cli/health-cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { runCheckLearningsBudget } from "./check-learnings-budget-cmd.js";
|
|
|
4
4
|
import { runCrossPollinate } from "./cross-pollinate-cmd.js";
|
|
5
5
|
import { runDoctor } from "./doctor.js";
|
|
6
6
|
import { runFileUpstream } from "./file-upstream-cmd.js";
|
|
7
|
+
import { runHealthCli } from "./health-cmd.js";
|
|
7
8
|
import { runKaneCli, runKanePilotCli, runKaneProbeCli } from "./kane-cmd.js";
|
|
8
9
|
import { printUpdateWarning } from "./print-update-warning.js";
|
|
9
10
|
import { runSetupProject } from "./setup-project.js";
|
|
@@ -41,6 +42,8 @@ export interface ProgramDependencies {
|
|
|
41
42
|
runCheckLearningsBudget: typeof runCheckLearningsBudget;
|
|
42
43
|
/** Projects a public upstream filing body from allowlisted fields. */
|
|
43
44
|
runFileUpstream: typeof runFileUpstream;
|
|
45
|
+
/** Runs and persists the shared Health v1 consumer. */
|
|
46
|
+
runHealthCli: typeof runHealthCli;
|
|
44
47
|
/** Runs one policy-approved Kane empirical browser objective. */
|
|
45
48
|
runKaneCli: typeof runKaneCli;
|
|
46
49
|
/** Probes Kane installation, authentication, and Test Manager readiness. */
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,4DAA4D;IAC5D,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,wCAAwC;IACxC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,yDAAyD;IACzD,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,qCAAqC;IACrC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,2EAA2E;IAC3E,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,iEAAiE;IACjE,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,sEAAsE;IACtE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,uDAAuD;IACvD,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,iEAAiE;IACjE,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,4EAA4E;IAC5E,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,gFAAgF;IAChF,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,0EAA0E;IAC1E,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AAmND;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC9C,OAAO,CA8ET;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { runCheckLearningsBudget } from "./check-learnings-budget-cmd.js";
|
|
|
4
4
|
import { runCrossPollinate, } from "./cross-pollinate-cmd.js";
|
|
5
5
|
import { runDoctor } from "./doctor.js";
|
|
6
6
|
import { runFileUpstream } from "./file-upstream-cmd.js";
|
|
7
|
+
import { runHealthCli } from "./health-cmd.js";
|
|
7
8
|
import { GATE_COMMAND_NAMES, addGateCommands } from "./gate-commands.js";
|
|
8
9
|
import { runKaneCli, runKanePilotCli, runKaneProbeCli, } from "./kane-cmd.js";
|
|
9
10
|
import { printUpdateWarning } from "./print-update-warning.js";
|
|
@@ -29,6 +30,7 @@ const DEFAULT_DEPENDENCIES = {
|
|
|
29
30
|
runUi,
|
|
30
31
|
runCheckLearningsBudget,
|
|
31
32
|
runFileUpstream,
|
|
33
|
+
runHealthCli,
|
|
32
34
|
runKaneCli,
|
|
33
35
|
runKaneProbeCli,
|
|
34
36
|
runKanePilotCli,
|
|
@@ -96,6 +98,22 @@ function addDoctorCommand(program, deps) {
|
|
|
96
98
|
await deps.runDoctor(targetPath, options);
|
|
97
99
|
});
|
|
98
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Register the shared deterministic/agentic health consumer.
|
|
103
|
+
* @param program - Commander program to mutate
|
|
104
|
+
* @param deps - Program dependencies
|
|
105
|
+
*/
|
|
106
|
+
function addHealthCommand(program, deps) {
|
|
107
|
+
program
|
|
108
|
+
.command("health")
|
|
109
|
+
.description("Run Lisa's shared project health check and persist the result")
|
|
110
|
+
.argument("[path]", PATH_ARG_DESCRIPTION)
|
|
111
|
+
.option("--prepare-agentic", "Emit bounded agentic evidence without persisting a health result")
|
|
112
|
+
.option("--agentic-evaluation", "Read a digest-bound evaluator response from standard input")
|
|
113
|
+
.action(async (targetPath, options) => {
|
|
114
|
+
await deps.runHealthCli(targetPath, options);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
99
117
|
/**
|
|
100
118
|
* Register CLI maintenance commands that do not run the root update warning.
|
|
101
119
|
* @param program - Commander program to mutate
|
|
@@ -120,6 +138,7 @@ function addMaintenanceCommands(program, deps) {
|
|
|
120
138
|
}
|
|
121
139
|
});
|
|
122
140
|
addDoctorCommand(program, deps);
|
|
141
|
+
addHealthCommand(program, deps);
|
|
123
142
|
program
|
|
124
143
|
.command("sync")
|
|
125
144
|
.description("Populate .lisa.config.json with every missing setting and sync mirrored files (config wins)")
|
|
@@ -179,7 +198,7 @@ export function createProgram(dependencies = {}) {
|
|
|
179
198
|
// It is non-fatal: a failed check never blocks the action from running.
|
|
180
199
|
program.hook("preAction", async (_thisCommand, actionCommand) => {
|
|
181
200
|
if (actionCommand.parent?.name() === "kane" ||
|
|
182
|
-
["doctor", "sync", "ui", "update", "version"].includes(actionCommand.name()) ||
|
|
201
|
+
["doctor", "health", "sync", "ui", "update", "version"].includes(actionCommand.name()) ||
|
|
183
202
|
GATE_COMMAND_NAMES.includes(actionCommand.name())) {
|
|
184
203
|
return;
|
|
185
204
|
}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,GAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/ui-cmd.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as http from "node:http";
|
|
|
2
2
|
import { type JsonObject } from "../sync/json-path.js";
|
|
3
3
|
import { type RemoteEnvironmentStatus } from "./remote-environment.js";
|
|
4
4
|
import { type StatusProbe } from "./ui-status.js";
|
|
5
|
+
import { type UiHealthDependencies } from "./ui-health.js";
|
|
5
6
|
export { createGithubAuthProbe, runProbe, type GitRemoteReader, type GithubAuthCheck, type ProbeResult, type StatusProbe, } from "./ui-status.js";
|
|
6
7
|
export { createGithubRepoProbe } from "./ui-github-repo.js";
|
|
7
8
|
export { createEnabledPluginsProbe, buildEnabledPluginsValue, listMarketplacePluginsFromDisk, type EnabledPluginRow, type EnabledPluginsValue, type MarketplacePlugin, } from "./ui-enabled-plugins.js";
|
|
@@ -24,6 +25,8 @@ export interface UiCmdOptions {
|
|
|
24
25
|
export interface UiRuntimeDependencies {
|
|
25
26
|
/** Status probes exposed by GET /api/status. */
|
|
26
27
|
readonly probes?: readonly StatusProbe[];
|
|
28
|
+
/** Health storage and execution boundaries exposed by /api/health. */
|
|
29
|
+
readonly health?: Partial<UiHealthDependencies>;
|
|
27
30
|
}
|
|
28
31
|
/**
|
|
29
32
|
* Locate the packaged `ui/index.html` by walking up from this module until a
|
package/dist/cli/ui-cmd.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/ui-cmd.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/ui-cmd.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,6CAA6C;AAC7C,eAAO,MAAM,eAAe,OAAO,CAAC;AAKpC,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,sDAAsD;AACtD,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACjD;AAYD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUnD;AAmBD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,EAClB,iBAAiB,GAAE,uBAIlB,GACA,MAAM,CAQR;AAuKD;;;;;;GAMG;AACH,wBAAsB,KAAK,CACzB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,GAAE,YAAiB,EAC1B,YAAY,GAAE,qBAA0B,GACvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CA4CtB"}
|
package/dist/cli/ui-cmd.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* `window.LISA_LIVE_CONFIG`, which the page uses to hydrate its controls.
|
|
8
8
|
* @module cli/ui-cmd
|
|
9
9
|
*/
|
|
10
|
+
/* eslint-disable max-lines -- the central UI route registry stays auditable in one module */
|
|
10
11
|
import { existsSync } from "node:fs";
|
|
11
12
|
import { readFile } from "node:fs/promises";
|
|
12
13
|
import * as http from "node:http";
|
|
@@ -27,6 +28,7 @@ import { createEnabledPluginsProbe } from "./ui-enabled-plugins.js";
|
|
|
27
28
|
import { createAutomationsProbe } from "./ui-automations.js";
|
|
28
29
|
import { createObservabilityProviderProbes } from "./ui-observability-providers.js";
|
|
29
30
|
import { serveConfigWrite } from "./ui-config-write.js";
|
|
31
|
+
import { createUiHealthHandler, } from "./ui-health.js";
|
|
30
32
|
export { createGithubAuthProbe, runProbe, } from "./ui-status.js";
|
|
31
33
|
export { createGithubRepoProbe } from "./ui-github-repo.js";
|
|
32
34
|
export { createEnabledPluginsProbe, buildEnabledPluginsValue, listMarketplacePluginsFromDisk, } from "./ui-enabled-plugins.js";
|
|
@@ -202,10 +204,12 @@ function isLoopbackHost(host) {
|
|
|
202
204
|
* @param page - Hydrated settings console HTML
|
|
203
205
|
* @param probes - Live-status probes registered for this server
|
|
204
206
|
* @param destDir - Project root served by this UI process
|
|
207
|
+
* @param healthDependencies - Injectable Health v1 storage/run boundaries
|
|
205
208
|
* @returns Loopback HTTP request handler
|
|
206
209
|
*/
|
|
207
|
-
function createUiRequestHandler(page, probes, destDir) {
|
|
210
|
+
function createUiRequestHandler(page, probes, destDir, healthDependencies = {}) {
|
|
208
211
|
const readSnapshot = createStatusSnapshotReader(probes);
|
|
212
|
+
const serveHealth = createUiHealthHandler(destDir, healthDependencies);
|
|
209
213
|
validateStatusProbes(probes);
|
|
210
214
|
return (request, response) => {
|
|
211
215
|
if (!isLoopbackHost(request.headers.host)) {
|
|
@@ -227,6 +231,10 @@ function createUiRequestHandler(page, probes, destDir) {
|
|
|
227
231
|
serveConfigWrite(request, response, destDir);
|
|
228
232
|
return;
|
|
229
233
|
}
|
|
234
|
+
if (pathname === "/api/health") {
|
|
235
|
+
serveHealth(request, response);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
230
238
|
if (pathname === "/" || pathname === "/index.html") {
|
|
231
239
|
response.writeHead(200, { "content-type": "text/html; charset=utf-8" });
|
|
232
240
|
response.end(page);
|
|
@@ -270,7 +278,7 @@ export async function runUi(targetPath, options = {}, dependencies = {}) {
|
|
|
270
278
|
...createObservabilityProviderProbes(),
|
|
271
279
|
createAutomationsProbe({ cwd: destDir }),
|
|
272
280
|
];
|
|
273
|
-
const server = http.createServer(createUiRequestHandler(page, probes, destDir));
|
|
281
|
+
const server = http.createServer(createUiRequestHandler(page, probes, destDir, dependencies.health));
|
|
274
282
|
await new Promise(resolve => {
|
|
275
283
|
server.listen(port, "127.0.0.1", resolve);
|
|
276
284
|
});
|
|
@@ -281,4 +289,5 @@ export async function runUi(targetPath, options = {}, dependencies = {}) {
|
|
|
281
289
|
console.log("Press Ctrl+C to stop.");
|
|
282
290
|
return server;
|
|
283
291
|
}
|
|
292
|
+
/* eslint-enable max-lines -- restore repository default */
|
|
284
293
|
//# sourceMappingURL=ui-cmd.js.map
|
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,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;AACvD,OAAO,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,wBAAwB,GAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,QAAQ,GAKT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,GAI/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GAGzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,GAKzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-cmd.js","sourceRoot":"","sources":["../../src/cli/ui-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Same-origin Health v1 endpoint for `lisa ui`. */
|
|
2
|
+
import * as http from "node:http";
|
|
3
|
+
import { readLatestHealthResult, runPersistedHealth } from "../health/index.js";
|
|
4
|
+
/** Health boundaries injectable by endpoint and browser tests. */
|
|
5
|
+
export interface UiHealthDependencies {
|
|
6
|
+
readonly readLatest: typeof readLatestHealthResult;
|
|
7
|
+
readonly runPersisted: typeof runPersistedHealth;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Build one project-bound Health endpoint with a coalesced run boundary.
|
|
11
|
+
* The closure is the only place the UI server's resolved project directory is
|
|
12
|
+
* retained; request data can never select another target.
|
|
13
|
+
* @param destDir - Server-bound project root
|
|
14
|
+
* @param dependencies - Optional Health storage/run boundaries
|
|
15
|
+
* @returns Bound Health request handler
|
|
16
|
+
*/
|
|
17
|
+
export declare function createUiHealthHandler(destDir: string, dependencies?: Partial<UiHealthDependencies>): (request: http.IncomingMessage, response: http.ServerResponse) => void;
|
|
18
|
+
//# sourceMappingURL=ui-health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-health.d.ts","sourceRoot":"","sources":["../../src/cli/ui-health.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAEnB,MAAM,oBAAoB,CAAC;AAM5B,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,sBAAsB,CAAC;IACnD,QAAQ,CAAC,YAAY,EAAE,OAAO,kBAAkB,CAAC;CAClD;AA6ED;;;;;;;GAOG;AAEH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAC/C,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI,CAwFxE"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { readLatestHealthResult, runPersistedHealth, serializeHealthResult, } from "../health/index.js";
|
|
2
|
+
const JSON_CONTENT_TYPE = "application/json; charset=utf-8";
|
|
3
|
+
const NO_STORE = "no-store";
|
|
4
|
+
const TEXT_CONTENT_TYPE = "text/plain; charset=utf-8";
|
|
5
|
+
const DEFAULT_DEPENDENCIES = {
|
|
6
|
+
readLatest: readLatestHealthResult,
|
|
7
|
+
runPersisted: runPersistedHealth,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Restrict origins to the exact loopback authority advertised by `lisa ui`.
|
|
11
|
+
* @param origin - Incoming Origin header
|
|
12
|
+
* @param host - Incoming Host header
|
|
13
|
+
* @returns Whether origin exactly matches the loopback listener
|
|
14
|
+
*/
|
|
15
|
+
function isExpectedLoopbackOrigin(origin, host) {
|
|
16
|
+
if (origin === undefined || host === undefined)
|
|
17
|
+
return false;
|
|
18
|
+
try {
|
|
19
|
+
const parsed = new URL(origin);
|
|
20
|
+
return (origin === parsed.origin &&
|
|
21
|
+
parsed.protocol === "http:" &&
|
|
22
|
+
parsed.host === host &&
|
|
23
|
+
isLoopbackHost(parsed.host));
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Match the config writer's accepted 127.0.0.1 authority shape.
|
|
31
|
+
* @param host - URL authority to inspect
|
|
32
|
+
* @returns Whether the authority is valid loopback
|
|
33
|
+
*/
|
|
34
|
+
function isLoopbackHost(host) {
|
|
35
|
+
if (host === "127.0.0.1")
|
|
36
|
+
return true;
|
|
37
|
+
const prefix = "127.0.0.1:";
|
|
38
|
+
if (!host.startsWith(prefix))
|
|
39
|
+
return false;
|
|
40
|
+
const portText = host.slice(prefix.length);
|
|
41
|
+
const digitsOnly = Array.from(portText).every(character => character >= "0" && character <= "9");
|
|
42
|
+
const port = Number(portText);
|
|
43
|
+
return (portText.length > 0 &&
|
|
44
|
+
portText.length <= 5 &&
|
|
45
|
+
digitsOnly &&
|
|
46
|
+
port > 0 &&
|
|
47
|
+
port <= 65_535);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Write a no-store response without leaking runtime or filesystem details.
|
|
51
|
+
* @param response - HTTP response
|
|
52
|
+
* @param status - HTTP status code
|
|
53
|
+
* @param body - Response payload
|
|
54
|
+
* @param contentType - Response media type
|
|
55
|
+
* @param headers - Additional response headers
|
|
56
|
+
*/
|
|
57
|
+
function reply(response, status, body, contentType = JSON_CONTENT_TYPE, headers = {}) {
|
|
58
|
+
response.writeHead(status, {
|
|
59
|
+
"cache-control": NO_STORE,
|
|
60
|
+
"content-type": contentType,
|
|
61
|
+
...headers,
|
|
62
|
+
});
|
|
63
|
+
response.end(body);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Build one project-bound Health endpoint with a coalesced run boundary.
|
|
67
|
+
* The closure is the only place the UI server's resolved project directory is
|
|
68
|
+
* retained; request data can never select another target.
|
|
69
|
+
* @param destDir - Server-bound project root
|
|
70
|
+
* @param dependencies - Optional Health storage/run boundaries
|
|
71
|
+
* @returns Bound Health request handler
|
|
72
|
+
*/
|
|
73
|
+
// eslint-disable-next-line max-lines-per-function -- route branches and single-flight state remain colocated
|
|
74
|
+
export function createUiHealthHandler(destDir, dependencies = {}) {
|
|
75
|
+
const deps = { ...DEFAULT_DEPENDENCIES, ...dependencies };
|
|
76
|
+
// eslint-disable-next-line functional/no-let -- one server-local single-flight is cleared after settlement
|
|
77
|
+
let inFlight;
|
|
78
|
+
/**
|
|
79
|
+
* Return the active deterministic run, starting one when none is pending.
|
|
80
|
+
* @returns The active persisted Health run
|
|
81
|
+
*/
|
|
82
|
+
const runOnce = () => {
|
|
83
|
+
if (inFlight === undefined) {
|
|
84
|
+
const pending = deps.runPersisted(destDir);
|
|
85
|
+
inFlight = pending;
|
|
86
|
+
/** Release this run only when it is still the active single-flight. */
|
|
87
|
+
const clear = () => {
|
|
88
|
+
if (inFlight === pending)
|
|
89
|
+
inFlight = undefined;
|
|
90
|
+
};
|
|
91
|
+
void pending.then(clear, clear);
|
|
92
|
+
}
|
|
93
|
+
return inFlight;
|
|
94
|
+
};
|
|
95
|
+
return (request, response) => {
|
|
96
|
+
if (request.method === "HEAD") {
|
|
97
|
+
reply(response, 200, "");
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (request.method === "GET") {
|
|
101
|
+
void deps
|
|
102
|
+
.readLatest(destDir)
|
|
103
|
+
.then(outcome => {
|
|
104
|
+
if (outcome.status === "available") {
|
|
105
|
+
reply(response, 200, serializeHealthResult(outcome.result));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (outcome.status === "never-run") {
|
|
109
|
+
reply(response, 404, JSON.stringify({ error: "No Lisa health result is available" }));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
reply(response, 500, JSON.stringify({ error: "Unable to read Lisa health" }));
|
|
113
|
+
})
|
|
114
|
+
.catch(() => {
|
|
115
|
+
reply(response, 500, JSON.stringify({ error: "Unable to read Lisa health" }));
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (request.method === "POST") {
|
|
120
|
+
if (!isExpectedLoopbackOrigin(request.headers.origin, request.headers.host)) {
|
|
121
|
+
reply(response, 403, JSON.stringify({
|
|
122
|
+
error: "Health runs require the same Lisa console origin",
|
|
123
|
+
}));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
void runOnce()
|
|
127
|
+
.then(completed => {
|
|
128
|
+
reply(response, 200, completed.serialized);
|
|
129
|
+
})
|
|
130
|
+
.catch(() => {
|
|
131
|
+
reply(response, 500, JSON.stringify({ error: "Unable to run Lisa health" }));
|
|
132
|
+
});
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
reply(response, 405, "Method not allowed", TEXT_CONTENT_TYPE, {
|
|
136
|
+
allow: "GET, HEAD, POST",
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=ui-health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-health.js","sourceRoot":"","sources":["../../src/cli/ui-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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,CAsgEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAukMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|