@codyswann/lisa 2.233.1 → 2.235.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.
Files changed (76) hide show
  1. package/dist/cli/doctor.d.ts +9 -0
  2. package/dist/cli/doctor.d.ts.map +1 -1
  3. package/dist/cli/doctor.js +3 -1
  4. package/dist/cli/doctor.js.map +1 -1
  5. package/dist/cli/ui-ci-quality-jobs-compute.d.ts +46 -0
  6. package/dist/cli/ui-ci-quality-jobs-compute.d.ts.map +1 -0
  7. package/dist/cli/ui-ci-quality-jobs-compute.js +178 -0
  8. package/dist/cli/ui-ci-quality-jobs-compute.js.map +1 -0
  9. package/dist/cli/ui-ci-quality-jobs-parse.d.ts +15 -0
  10. package/dist/cli/ui-ci-quality-jobs-parse.d.ts.map +1 -0
  11. package/dist/cli/ui-ci-quality-jobs-parse.js +109 -0
  12. package/dist/cli/ui-ci-quality-jobs-parse.js.map +1 -0
  13. package/dist/cli/ui-ci-quality-jobs.d.ts +22 -0
  14. package/dist/cli/ui-ci-quality-jobs.d.ts.map +1 -0
  15. package/dist/cli/ui-ci-quality-jobs.js +160 -0
  16. package/dist/cli/ui-ci-quality-jobs.js.map +1 -0
  17. package/dist/cli/ui-cmd.d.ts +2 -0
  18. package/dist/cli/ui-cmd.d.ts.map +1 -1
  19. package/dist/cli/ui-cmd.js +9 -1
  20. package/dist/cli/ui-cmd.js.map +1 -1
  21. package/dist/cli/ui-lisa-version.d.ts +36 -0
  22. package/dist/cli/ui-lisa-version.d.ts.map +1 -0
  23. package/dist/cli/ui-lisa-version.js +86 -0
  24. package/dist/cli/ui-lisa-version.js.map +1 -0
  25. package/package.json +1 -1
  26. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  28. package/plugins/lisa-agy/plugin.json +1 -1
  29. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  31. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  32. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  38. package/plugins/lisa-expo-agy/plugin.json +1 -1
  39. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  43. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  44. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  48. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  49. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  53. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  54. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  59. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-rails-agy/plugin.json +1 -1
  64. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  68. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  69. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  74. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  76. package/ui/index.html +274 -40
@@ -23,6 +23,15 @@ export interface DoctorDependencies {
23
23
  setExitCode: (code: number) => void;
24
24
  write: (message: string) => void;
25
25
  }
26
+ /**
27
+ * Check Lisa's installed version against npm.
28
+ * Exported so the console live-status probe can reuse the same check as
29
+ * `lisa doctor` — never invent a second npm update-check path.
30
+ * @param deps - Runtime dependencies
31
+ * @param offline - Skip network check
32
+ * @returns Doctor check result
33
+ */
34
+ export declare function checkVersion(deps: DoctorDependencies, offline: boolean): Promise<DoctorCheck>;
26
35
  /**
27
36
  * Run Lisa doctor checks.
28
37
  * @param targetPath - Optional project path
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAO3C,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AA6SD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CAiCvB"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAO3C,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAWD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAyBtB;AAgQD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CAiCvB"}
@@ -24,11 +24,13 @@ const DEFAULT_DEPENDENCIES = {
24
24
  };
25
25
  /**
26
26
  * Check Lisa's installed version against npm.
27
+ * Exported so the console live-status probe can reuse the same check as
28
+ * `lisa doctor` — never invent a second npm update-check path.
27
29
  * @param deps - Runtime dependencies
28
30
  * @param offline - Skip network check
29
31
  * @returns Doctor check result
30
32
  */
31
- async function checkVersion(deps, offline) {
33
+ export async function checkVersion(deps, offline) {
32
34
  if (offline) {
33
35
  return {
34
36
  name: VERSION_CHECK_NAME,
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Pure join of ci.yml inputs, Lisa gate config, and secret presence for the
3
+ * CI Quality jobs Active column.
4
+ * @module cli/ui-ci-quality-jobs-compute
5
+ */
6
+ import { type JsonObject, type JsonValue } from "../sync/json-path.js";
7
+ /** Inputs the project's `ci.yml` forwards into Lisa's quality workflow. */
8
+ export interface CiWorkflowInputs {
9
+ readonly skipJobs: readonly string[];
10
+ readonly verifyEnforced: boolean;
11
+ readonly complianceFramework: string;
12
+ readonly requireApproval: boolean;
13
+ readonly zapTargetUrl: string;
14
+ }
15
+ /** Presence-only secret inventory, or an honest unknown. */
16
+ export type RepoSecretsPresence = {
17
+ readonly state: "value";
18
+ readonly names: ReadonlySet<string>;
19
+ } | {
20
+ readonly state: "unknown";
21
+ readonly reason: string;
22
+ readonly message: string;
23
+ };
24
+ /** One Quality-jobs row for the Active column. */
25
+ export type CiQualityJobEntry = {
26
+ readonly [key: string]: JsonValue;
27
+ readonly id: string;
28
+ readonly label: string;
29
+ /** `true` active, `false` off, `null` unknown (never a false off). */
30
+ readonly active: boolean | null;
31
+ readonly reason: string;
32
+ };
33
+ /** Structured probe value for the Quality jobs table. */
34
+ export type CiQualityJobsValue = {
35
+ readonly [key: string]: JsonValue;
36
+ readonly jobs: CiQualityJobEntry[];
37
+ };
38
+ /**
39
+ * Join ci.yml inputs, gate config, and secret presence into Active-column rows.
40
+ * @param inputs - Parsed ci.yml quality inputs
41
+ * @param config - Merged Lisa config
42
+ * @param secrets - Presence-only secret inventory
43
+ * @returns Probe value for the Quality jobs table
44
+ */
45
+ export declare function computeCiQualityJobs(inputs: CiWorkflowInputs, config: JsonObject, secrets: RepoSecretsPresence): CiQualityJobsValue;
46
+ //# sourceMappingURL=ui-ci-quality-jobs-compute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-ci-quality-jobs-compute.d.ts","sourceRoot":"","sources":["../../src/cli/ui-ci-quality-jobs-compute.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAE9B,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,GAChE;IACE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,kDAAkD;AAClD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;CACpC,CAAC;AA2JF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAqCpB"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Pure join of ci.yml inputs, Lisa gate config, and secret presence for the
3
+ * CI Quality jobs Active column.
4
+ * @module cli/ui-ci-quality-jobs-compute
5
+ */
6
+ import { isJsonObject, } from "../sync/json-path.js";
7
+ /** Jobs shown in the console Quality jobs table, in display order. */
8
+ const QUALITY_JOB_SPECS = [
9
+ { id: "lint", label: "🧹 Lint" },
10
+ { id: "lint_slow", label: "🐢 Slow Lint Rules" },
11
+ { id: "typecheck", label: "🔍 Type Check" },
12
+ { id: "format", label: "📐 Check Formatting" },
13
+ { id: "build", label: "🏗️ Build" },
14
+ { id: "test:unit", label: "🧪 Run Unit Tests" },
15
+ { id: "test:integration", label: "🧪 Run Integration Tests" },
16
+ { id: "test:e2e", label: "🧪 Run E2E Tests" },
17
+ { id: "playwright_e2e", label: "🎭 Playwright E2E Tests" },
18
+ {
19
+ id: "maestro_e2e",
20
+ label: "📱 Maestro Cloud E2E",
21
+ secret: "MAESTRO_API_KEY",
22
+ },
23
+ { id: "e2e_coverage", label: "🧭 E2E Route Coverage" },
24
+ { id: "test:mutation", label: "🧬 Mutation Testing Gate", gate: "mutation" },
25
+ {
26
+ id: "verification_coverage",
27
+ label: "✅ Verification Coverage",
28
+ gate: "verify_enforced",
29
+ },
30
+ { id: "dead_code", label: "🗑️ Dead Code Detection" },
31
+ { id: "sg_scan", label: "🔎 AST Grep Scan" },
32
+ { id: "npm_security_scan", label: "🔒 Security Scan" },
33
+ {
34
+ id: "sonarcloud",
35
+ label: "🔍 SonarCloud SAST",
36
+ secret: "SONAR_TOKEN",
37
+ },
38
+ { id: "snyk", label: "🛡️ Snyk", secret: "SNYK_TOKEN" },
39
+ {
40
+ id: "secret_scanning",
41
+ label: "🔐 GitGuardian",
42
+ secret: "GITGUARDIAN_API_KEY",
43
+ },
44
+ {
45
+ id: "license_compliance",
46
+ label: "📜 FOSSA",
47
+ secret: "FOSSA_API_KEY",
48
+ },
49
+ {
50
+ id: "zap_baseline",
51
+ label: "🕷️ OWASP ZAP Baseline",
52
+ gate: "zap_target_url",
53
+ },
54
+ {
55
+ id: "compliance_validation",
56
+ label: "🧾 Compliance Validation",
57
+ gate: "compliance_framework",
58
+ },
59
+ {
60
+ id: "approval_gate",
61
+ label: "🚦 Approval Gate",
62
+ gate: "require_approval",
63
+ },
64
+ ];
65
+ /**
66
+ * Read whether the mutation gate is enabled in merged Lisa config.
67
+ * @param config - Merged config
68
+ * @returns True only when explicitly enabled
69
+ */
70
+ function mutationGateEnabled(config) {
71
+ if (!isJsonObject(config.quality)) {
72
+ return false;
73
+ }
74
+ if (!isJsonObject(config.quality.mutation)) {
75
+ return false;
76
+ }
77
+ if (!isJsonObject(config.quality.mutation.gate)) {
78
+ return false;
79
+ }
80
+ return config.quality.mutation.gate.enabled === true;
81
+ }
82
+ /**
83
+ * Resolve a config/workflow gate into an off-reason, or undefined when open.
84
+ * @param gate - Gate kind on the job spec
85
+ * @param inputs - ci.yml inputs
86
+ * @param config - Merged Lisa config
87
+ * @returns Off reason when the gate closes the job
88
+ */
89
+ function gateOffReason(gate, inputs, config) {
90
+ if (gate === "mutation" && !mutationGateEnabled(config)) {
91
+ return "mutation gate is disabled";
92
+ }
93
+ if (gate === "verify_enforced" && !inputs.verifyEnforced) {
94
+ return "verify_enforced is off";
95
+ }
96
+ if (gate === "compliance_framework" &&
97
+ (inputs.complianceFramework.length === 0 ||
98
+ inputs.complianceFramework === "none" ||
99
+ inputs.complianceFramework === "(none)")) {
100
+ return "no compliance_framework configured";
101
+ }
102
+ if (gate === "zap_target_url" && inputs.zapTargetUrl.length === 0) {
103
+ return "zap_target_url is not set";
104
+ }
105
+ if (gate === "require_approval" && !inputs.requireApproval) {
106
+ return "require_approval is off";
107
+ }
108
+ return undefined;
109
+ }
110
+ /**
111
+ * Resolve secret presence into active/off/unknown for one job.
112
+ * @param secretName - Required Actions secret
113
+ * @param secrets - Presence inventory or unknown
114
+ * @returns Job active state and reason
115
+ */
116
+ function secretActiveState(secretName, secrets) {
117
+ if (secrets.state === "unknown") {
118
+ return {
119
+ active: null,
120
+ reason: secrets.reason === "not-authenticated"
121
+ ? "not authenticated"
122
+ : secrets.message,
123
+ };
124
+ }
125
+ if (!secrets.names.has(secretName)) {
126
+ return {
127
+ active: false,
128
+ reason: `${secretName} secret is not set`,
129
+ };
130
+ }
131
+ return { active: true, reason: "" };
132
+ }
133
+ /**
134
+ * Join ci.yml inputs, gate config, and secret presence into Active-column rows.
135
+ * @param inputs - Parsed ci.yml quality inputs
136
+ * @param config - Merged Lisa config
137
+ * @param secrets - Presence-only secret inventory
138
+ * @returns Probe value for the Quality jobs table
139
+ */
140
+ export function computeCiQualityJobs(inputs, config, secrets) {
141
+ const skipped = new Set(inputs.skipJobs);
142
+ const jobs = QUALITY_JOB_SPECS.map((spec) => {
143
+ if (skipped.has(spec.id)) {
144
+ return {
145
+ id: spec.id,
146
+ label: spec.label,
147
+ active: false,
148
+ reason: `ci.yml skip_jobs includes ${spec.id}`,
149
+ };
150
+ }
151
+ const closed = gateOffReason(spec.gate, inputs, config);
152
+ if (closed !== undefined) {
153
+ return {
154
+ id: spec.id,
155
+ label: spec.label,
156
+ active: false,
157
+ reason: closed,
158
+ };
159
+ }
160
+ if (spec.secret !== undefined) {
161
+ const secretState = secretActiveState(spec.secret, secrets);
162
+ return {
163
+ id: spec.id,
164
+ label: spec.label,
165
+ active: secretState.active,
166
+ reason: secretState.reason,
167
+ };
168
+ }
169
+ return {
170
+ id: spec.id,
171
+ label: spec.label,
172
+ active: true,
173
+ reason: "",
174
+ };
175
+ });
176
+ return { jobs };
177
+ }
178
+ //# sourceMappingURL=ui-ci-quality-jobs-compute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-ci-quality-jobs-compute.js","sourceRoot":"","sources":["../../src/cli/ui-ci-quality-jobs-compute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { CiWorkflowInputs } from "./ui-ci-quality-jobs-compute.js";
2
+ /**
3
+ * Read `ci.yml` from the project workflows directory.
4
+ * @param cwd - Project root
5
+ * @returns File contents
6
+ */
7
+ export declare function readCiYmlFile(cwd: string): Promise<string>;
8
+ /**
9
+ * Parse the project's calling `ci.yml` into quality workflow inputs.
10
+ * @param cwd - Project root
11
+ * @param readCiYml - Injectable file reader
12
+ * @returns Normalized inputs
13
+ */
14
+ export declare function parseCiWorkflowInputs(cwd: string, readCiYml?: (projectRoot: string) => Promise<string>): Promise<CiWorkflowInputs>;
15
+ //# sourceMappingURL=ui-ci-quality-jobs-parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-ci-quality-jobs-parse.d.ts","sourceRoot":"","sources":["../../src/cli/ui-ci-quality-jobs-parse.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKhE;AAiFD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAiB,GAClE,OAAO,CAAC,gBAAgB,CAAC,CAmB3B"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Parse the project's calling `ci.yml` quality workflow inputs.
3
+ * @module cli/ui-ci-quality-jobs-parse
4
+ */
5
+ import { readFile } from "node:fs/promises";
6
+ import * as path from "node:path";
7
+ import yaml from "js-yaml";
8
+ import { isJsonObject } from "../sync/json-path.js";
9
+ /**
10
+ * Read `ci.yml` from the project workflows directory.
11
+ * @param cwd - Project root
12
+ * @returns File contents
13
+ */
14
+ export async function readCiYmlFile(cwd) {
15
+ return await readFile(path.join(cwd, ".github", "workflows", "ci.yml"), "utf8");
16
+ }
17
+ /**
18
+ * Split a comma-separated skip_jobs string into trimmed non-empty ids.
19
+ * @param raw - Raw skip_jobs value from YAML
20
+ * @returns Normalized job ids
21
+ */
22
+ function parseSkipJobs(raw) {
23
+ if (typeof raw !== "string") {
24
+ return [];
25
+ }
26
+ return raw
27
+ .split(",")
28
+ .map(part => part.trim())
29
+ .filter(part => part.length > 0);
30
+ }
31
+ /**
32
+ * Coerce a YAML scalar to boolean with an explicit default.
33
+ * @param value - Candidate YAML value
34
+ * @param fallback - Default when absent or unreadable
35
+ * @returns Boolean
36
+ */
37
+ function asBoolean(value, fallback) {
38
+ if (typeof value === "boolean") {
39
+ return value;
40
+ }
41
+ if (value === "true") {
42
+ return true;
43
+ }
44
+ if (value === "false") {
45
+ return false;
46
+ }
47
+ return fallback;
48
+ }
49
+ /**
50
+ * Coerce a YAML scalar to a trimmed string with a default.
51
+ * @param value - Candidate YAML value
52
+ * @param fallback - Default when absent
53
+ * @returns String
54
+ */
55
+ function asString(value, fallback) {
56
+ if (typeof value === "string") {
57
+ return value.trim();
58
+ }
59
+ if (typeof value === "number" || typeof value === "boolean") {
60
+ return String(value);
61
+ }
62
+ return fallback;
63
+ }
64
+ /**
65
+ * Find the `with:` map on the job that calls Lisa's quality workflow.
66
+ * @param document - Parsed ci.yml root
67
+ * @returns The with-block object, or undefined
68
+ */
69
+ function qualityWithBlock(document) {
70
+ if (!isJsonObject(document) || !isJsonObject(document.jobs)) {
71
+ return undefined;
72
+ }
73
+ for (const job of Object.values(document.jobs)) {
74
+ if (!isJsonObject(job) || typeof job.uses !== "string") {
75
+ continue;
76
+ }
77
+ if (!job.uses.includes("quality.yml") &&
78
+ !job.uses.includes("quality-rails.yml")) {
79
+ continue;
80
+ }
81
+ if (isJsonObject(job.with)) {
82
+ return job.with;
83
+ }
84
+ return {};
85
+ }
86
+ return undefined;
87
+ }
88
+ /**
89
+ * Parse the project's calling `ci.yml` into quality workflow inputs.
90
+ * @param cwd - Project root
91
+ * @param readCiYml - Injectable file reader
92
+ * @returns Normalized inputs
93
+ */
94
+ export async function parseCiWorkflowInputs(cwd, readCiYml = readCiYmlFile) {
95
+ const source = await readCiYml(cwd);
96
+ const document = yaml.load(source);
97
+ const withBlock = qualityWithBlock(document);
98
+ if (withBlock === undefined) {
99
+ throw new Error("ci.yml does not call quality.yml or quality-rails.yml with a with-block");
100
+ }
101
+ return {
102
+ skipJobs: parseSkipJobs(withBlock.skip_jobs),
103
+ verifyEnforced: asBoolean(withBlock.verify_enforced, false),
104
+ complianceFramework: asString(withBlock.compliance_framework, "none").toLowerCase(),
105
+ requireApproval: asBoolean(withBlock.require_approval, false),
106
+ zapTargetUrl: asString(withBlock.zap_target_url, ""),
107
+ };
108
+ }
109
+ //# sourceMappingURL=ui-ci-quality-jobs-parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-ci-quality-jobs-parse.js","sourceRoot":"","sources":["../../src/cli/ui-ci-quality-jobs-parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type JsonObject } from "../sync/json-path.js";
2
+ import { type CiQualityJobsValue, type RepoSecretsPresence } from "./ui-ci-quality-jobs-compute.js";
3
+ import type { StatusProbe } from "./ui-status.js";
4
+ export { computeCiQualityJobs, type CiQualityJobEntry, type CiQualityJobsValue, type CiWorkflowInputs, type RepoSecretsPresence, } from "./ui-ci-quality-jobs-compute.js";
5
+ export { parseCiWorkflowInputs } from "./ui-ci-quality-jobs-parse.js";
6
+ /** Stable probe id consumed by the console Active-column hydrator. */
7
+ export declare const CI_QUALITY_JOBS_PROBE_ID = "ci-quality-jobs";
8
+ /** Injectable collaborators for focused unit tests. */
9
+ export interface CiQualityJobsDependencies {
10
+ readonly listSecrets?: (cwd: string, timeoutMs: number, signal: AbortSignal, repo: string | undefined) => Promise<RepoSecretsPresence>;
11
+ readonly readCiYml?: (cwd: string) => Promise<string>;
12
+ readonly resolveRepo?: (cwd: string, config: JsonObject) => string | undefined;
13
+ }
14
+ /**
15
+ * Create the CI quality-jobs Active-column probe.
16
+ * @param cwd - Project root
17
+ * @param config - Merged Lisa config (mutation gate, github slug)
18
+ * @param dependencies - Injectable readers for tests
19
+ * @returns Live-status probe
20
+ */
21
+ export declare function createCiQualityJobsProbe(cwd: string, config: JsonObject, dependencies?: CiQualityJobsDependencies): StatusProbe<CiQualityJobsValue>;
22
+ //# sourceMappingURL=ui-ci-quality-jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-ci-quality-jobs.d.ts","sourceRoot":"","sources":["../../src/cli/ui-ci-quality-jobs.ts"],"names":[],"mappings":"AASA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AAKzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EACL,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D,uDAAuD;AACvD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,CACrB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,GAAG,SAAS,KACrB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,CACrB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,KACf,MAAM,GAAG,SAAS,CAAC;CACzB;AAiID;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,EAClB,YAAY,GAAE,yBAA8B,GAC3C,WAAW,CAAC,kBAAkB,CAAC,CAuCjC"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Live-status probe for the CI Quality jobs Active column.
3
+ *
4
+ * Three-input join: `ci.yml` skip/gate inputs, Lisa gate config, and
5
+ * presence-only `gh secret list`. READ-ONLY — never fabricates "off" for
6
+ * secrets when authentication is unavailable.
7
+ * @module cli/ui-ci-quality-jobs
8
+ */
9
+ import { execFile } from "node:child_process";
10
+ import { isJsonObject } from "../sync/json-path.js";
11
+ import { computeCiQualityJobs, } from "./ui-ci-quality-jobs-compute.js";
12
+ import { parseCiWorkflowInputs, readCiYmlFile, } from "./ui-ci-quality-jobs-parse.js";
13
+ export { computeCiQualityJobs, } from "./ui-ci-quality-jobs-compute.js";
14
+ export { parseCiWorkflowInputs } from "./ui-ci-quality-jobs-parse.js";
15
+ /** Stable probe id consumed by the console Active-column hydrator. */
16
+ export const CI_QUALITY_JOBS_PROBE_ID = "ci-quality-jobs";
17
+ /**
18
+ * Resolve `owner/repo` from Lisa config when both fields are non-empty strings.
19
+ * @param config - Merged Lisa config
20
+ * @returns Repo slug, or undefined when absent
21
+ */
22
+ function repoFromConfig(config) {
23
+ if (!isJsonObject(config.github)) {
24
+ return undefined;
25
+ }
26
+ const org = config.github.org;
27
+ const repo = config.github.repo;
28
+ if (typeof org === "string" &&
29
+ org.trim().length > 0 &&
30
+ typeof repo === "string" &&
31
+ repo.trim().length > 0) {
32
+ return `${org.trim()}/${repo.trim()}`;
33
+ }
34
+ return undefined;
35
+ }
36
+ /**
37
+ * Classify a failed `gh secret list` into not-authenticated vs other unknown.
38
+ * @param error - Child-process or parse error
39
+ * @returns Unknown secrets presence
40
+ */
41
+ function classifySecretListError(error) {
42
+ const message = error instanceof Error && error.message.trim().length > 0
43
+ ? error.message
44
+ : "Unable to list repository secrets";
45
+ const lower = message.toLowerCase();
46
+ const notAuthenticated = lower.includes("401") ||
47
+ lower.includes("bad credentials") ||
48
+ lower.includes("not logged in") ||
49
+ lower.includes("authentication required") ||
50
+ lower.includes("to re-authenticate") ||
51
+ lower.includes("gh auth login");
52
+ return {
53
+ state: "unknown",
54
+ reason: notAuthenticated ? "not-authenticated" : "secret-list-failed",
55
+ message: notAuthenticated ? "GitHub CLI is not authenticated" : message,
56
+ };
57
+ }
58
+ /**
59
+ * Parse `gh secret list --json name` stdout into a presence set.
60
+ * @param stdout - Command stdout
61
+ * @returns Presence-only secret names
62
+ */
63
+ function secretNamesFromJson(stdout) {
64
+ const parsed = JSON.parse(stdout);
65
+ if (!Array.isArray(parsed)) {
66
+ throw new TypeError("gh secret list did not return an array");
67
+ }
68
+ return new Set(parsed.flatMap(entry => {
69
+ if (typeof entry !== "object" || entry === null) {
70
+ return [];
71
+ }
72
+ const name = Reflect.get(entry, "name");
73
+ return typeof name === "string" && name.trim().length > 0 ? [name] : [];
74
+ }));
75
+ }
76
+ /**
77
+ * List Actions secret *names* only via `gh secret list --json name`.
78
+ * @param cwd - Project root
79
+ * @param timeoutMs - Child-process timeout
80
+ * @param signal - Probe cancellation
81
+ * @param repo - Optional `owner/repo` for `-R`
82
+ * @returns Presence set or unknown
83
+ */
84
+ const listRepoSecretNames = async (cwd, timeoutMs, signal, repo) => await new Promise((resolve, reject) => {
85
+ const args = repo !== undefined && repo.length > 0
86
+ ? ["secret", "list", "--json", "name", "-R", repo]
87
+ : ["secret", "list", "--json", "name"];
88
+ const ghExecutable = "gh";
89
+ execFile(
90
+ // eslint-disable-next-line sonarjs/no-os-command-from-path -- fixed user-installed gh executable
91
+ ghExecutable, [...args], { cwd, signal, timeout: timeoutMs, encoding: "utf8" }, (error, stdout) => {
92
+ if (error !== null) {
93
+ reject(error);
94
+ return;
95
+ }
96
+ try {
97
+ resolve({ state: "value", names: secretNamesFromJson(stdout) });
98
+ }
99
+ catch (parseError) {
100
+ reject(parseError);
101
+ }
102
+ });
103
+ });
104
+ /**
105
+ * Load secret presence, mapping command failures to honest unknown states.
106
+ * @param listSecrets - Injectable secret lister
107
+ * @param cwd - Project root
108
+ * @param timeoutMs - Child-process timeout
109
+ * @param signal - Probe cancellation
110
+ * @param repo - Optional repo slug
111
+ * @returns Presence inventory or unknown
112
+ */
113
+ async function loadSecretsPresence(listSecrets, cwd, timeoutMs, signal, repo) {
114
+ try {
115
+ return await listSecrets(cwd, timeoutMs + 250, signal, repo);
116
+ }
117
+ catch (error) {
118
+ return classifySecretListError(error);
119
+ }
120
+ }
121
+ /**
122
+ * Create the CI quality-jobs Active-column probe.
123
+ * @param cwd - Project root
124
+ * @param config - Merged Lisa config (mutation gate, github slug)
125
+ * @param dependencies - Injectable readers for tests
126
+ * @returns Live-status probe
127
+ */
128
+ export function createCiQualityJobsProbe(cwd, config, dependencies = {}) {
129
+ const timeoutMs = 5_000;
130
+ const listSecrets = dependencies.listSecrets ?? listRepoSecretNames;
131
+ const readCiYml = dependencies.readCiYml ?? readCiYmlFile;
132
+ const resolveRepo = dependencies.resolveRepo ?? ((_projectRoot, cfg) => repoFromConfig(cfg));
133
+ return {
134
+ id: CI_QUALITY_JOBS_PROBE_ID,
135
+ timeoutMs,
136
+ run: async (signal) => {
137
+ try {
138
+ const inputs = await parseCiWorkflowInputs(cwd, readCiYml);
139
+ const secrets = await loadSecretsPresence(listSecrets, cwd, timeoutMs, signal, resolveRepo(cwd, config));
140
+ return {
141
+ state: "value",
142
+ value: computeCiQualityJobs(inputs, config, secrets),
143
+ };
144
+ }
145
+ catch (error) {
146
+ const message = error instanceof Error && error.message.trim().length > 0
147
+ ? error.message
148
+ : "Unable to read ci.yml quality inputs";
149
+ const missing = message.includes("ENOENT") ||
150
+ message.toLowerCase().includes("no such file");
151
+ return {
152
+ state: "unknown",
153
+ reason: missing ? "ci-yml-missing" : "ci-yml-unreadable",
154
+ message,
155
+ };
156
+ }
157
+ },
158
+ };
159
+ }
160
+ //# sourceMappingURL=ui-ci-quality-jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-ci-quality-jobs.js","sourceRoot":"","sources":["../../src/cli/ui-ci-quality-jobs.ts"],"names":[],"mappings":"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"}