@komatikai/trailhead 3.0.3 → 4.2.2

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/README.md CHANGED
@@ -1,52 +1,85 @@
1
1
  # Trailhead CLI
2
2
 
3
- Interactive setup wizard for Trailhead. Generates `.trailhead.yml` and the GitHub Actions workflow YAML with all v3 features configured.
3
+ Interactive setup wizard and diagnostics for Trailhead. Generates `.trailhead.yml`, validates policy files, and compares configured CI check names against GitHub.
4
4
 
5
5
  ## Usage
6
6
 
7
7
  ```bash
8
8
  npx @komatikai/trailhead init
9
+ npx @komatikai/trailhead doctor
9
10
  ```
10
11
 
12
+ ### `trailhead init`
13
+
11
14
  No installation required. The wizard walks you through:
12
15
 
13
- 1. **Sensitivity patterns** — which file paths are high/medium risk (auth, payments, migrations)
14
- 2. **Thresholds** — risk and warn scores (defaults: 70/55)
15
- 3. **Freeze windows** — days and hours when deployments are blocked
16
- 4. **Environments** — per-environment threshold overrides (production, staging, etc.)
17
- 5. **Services** — monorepo service boundaries with path patterns
18
- 6. **Security gate** — whether to include Code Scanning alerts as a risk factor
19
- 7. **Canary tracking** — Vercel or generic deploy outcome webhook type
20
- 8. **DORA metrics** — whether to compute DORA-5 alongside gate evaluations
21
- 9. **Health checks** — URLs to probe before scoring
22
- 10. **Webhooks** — Slack/Discord notification URL and trigger events
23
- 11. **OpenTelemetry** — OTLP endpoint for evaluation span export
24
- 12. **Evaluation store** — URL for persisting evaluations to a trend dashboard
25
-
26
- ## Output
16
+ 1. **Gate mode** — release-ready, advisory, or risk-only
17
+ 2. **Branch model** — main-only or progressive promotion paths
18
+ 3. **Required checks** — CI job names for release-ready contexts
19
+ 4. **Sensitivity patterns** — which file paths are high/medium risk
20
+ 5. **Thresholds** — risk and warn scores
21
+ 6. **Freeze windows** — days and hours when deployments are blocked
22
+ 7. **Environments** — per-environment threshold overrides
23
+ 8. **Services** — monorepo service boundaries with path patterns
24
+ 9. **Security gate** — Code Scanning alerts as a risk factor
25
+ 10. **Canary tracking** — deploy outcome webhook type
26
+ 11. **DORA metrics** — compute DORA-5 alongside gate evaluations
27
+ 12. **Health checks** — URLs to probe before scoring
28
+ 13. **OpenTelemetry** — OTLP endpoint for evaluation span export
29
+ 14. **Evaluation store** — URL for persisting evaluations to a trend dashboard
30
+
31
+ ### `trailhead doctor`
32
+
33
+ Validates `.trailhead.yml` (or legacy `.deployguard.yml`) and optionally compares `contexts[].ci.required_checks` against recent GitHub check runs.
34
+
35
+ ```bash
36
+ # Config-only validation (no GitHub API)
37
+ trailhead doctor --offline
38
+
39
+ # Compare against GitHub (needs token + repo)
40
+ GITHUB_TOKEN=ghp_... trailhead doctor --repo owner/repo
41
+
42
+ # Machine-readable output
43
+ trailhead doctor --json
44
+ ```
45
+
46
+ Options:
47
+
48
+ | Flag | Description |
49
+ | --------------------- | -------------------------------------- |
50
+ | `--path <dir>` | Directory to scan (default: cwd) |
51
+ | `--repo <owner/name>` | GitHub repository for check lookup |
52
+ | `--token <token>` | GitHub token (default: `GITHUB_TOKEN`) |
53
+ | `--ref <sha>` | Commit SHA for check runs |
54
+ | `--offline` | Skip GitHub API comparison |
55
+ | `--json` | Output report as JSON |
56
+
57
+ Exit code `0` when there are no errors; `1` when config is missing/invalid or structural errors are found. Warnings do not fail the command.
58
+
59
+ ## Output (`init`)
27
60
 
28
61
  The wizard generates two files:
29
62
 
30
- - **`.trailhead.yml`** — per-repo configuration (sensitivity, thresholds, freeze windows, environments, services, security, canary)
31
- - **`.github/workflows/trailhead.yml`** — GitHub Actions workflow with all selected features
63
+ - **`.trailhead.yml`** — per-repo configuration
64
+ - **`.github/workflows/trailhead.yml`** — GitHub Actions workflow with selected features
32
65
 
33
66
  ## Development
34
67
 
35
68
  ```bash
36
69
  cd cli
37
70
  npm install
38
- npx tsc
39
- node dist/index.js
71
+ npm run build
72
+ node dist/index.js doctor --offline --path ..
40
73
  ```
41
74
 
42
- The CLI is a zero-dependency ESM module. Build output goes to `cli/dist/` (gitignored — build before npm publish).
75
+ The CLI copies shared validation modules from `src/` during prebuild. Build output goes to `cli/dist/` (gitignored — build before npm publish).
43
76
 
44
77
  ## Publishing
45
78
 
46
79
  ```bash
47
80
  cd cli
48
- npx tsc
81
+ npm run build
49
82
  npm publish
50
83
  ```
51
84
 
52
- The package is published as `@komatikai/trailhead` on npm, making `npx @komatikai/trailhead init` work without installation.
85
+ The package is published as `@komatikai/trailhead` on npm.
package/dist/index.js CHANGED
@@ -2,6 +2,8 @@
2
2
  import * as readline from "node:readline";
3
3
  import * as fs from "node:fs";
4
4
  import * as path from "node:path";
5
+ import { runDoctorCommand } from "./run-doctor.js";
6
+ const CLI_VERSION = "4.2.1";
5
7
  const BOLD = "\x1b[1m";
6
8
  const GREEN = "\x1b[32m";
7
9
  const YELLOW = "\x1b[33m";
@@ -98,6 +100,152 @@ function generateTrailheadYml(options) {
98
100
  }
99
101
  return lines.join("\n") + "\n";
100
102
  }
103
+ function parseCheckList(input, fallback) {
104
+ const list = input
105
+ .split(",")
106
+ .map((s) => s.trim())
107
+ .filter(Boolean);
108
+ return list.length > 0 ? list : fallback;
109
+ }
110
+ function generateTrailheadYmlV2(options) {
111
+ const lines = [
112
+ "# Trailhead v4 configuration",
113
+ "# https://github.com/KomatikAI/trailhead",
114
+ "",
115
+ "schema_version: 2",
116
+ "",
117
+ "gate:",
118
+ ` mode: ${options.gateMode}`,
119
+ ` check_name: "Trailhead — Release Ready"`,
120
+ "",
121
+ "thresholds:",
122
+ ` risk: ${options.riskThreshold}`,
123
+ ` warn: ${options.warnThreshold}`,
124
+ "",
125
+ ];
126
+ if (options.gateMode !== "risk-only") {
127
+ lines.push("contexts:");
128
+ if (options.branchModel === "progressive") {
129
+ lines.push(" - name: feature");
130
+ lines.push(" match:");
131
+ lines.push(" base_branch:");
132
+ lines.push(" - dev");
133
+ lines.push(" - develop");
134
+ lines.push(" environment: dev");
135
+ lines.push(" thresholds:");
136
+ lines.push(` risk: ${options.featureRisk}`);
137
+ lines.push(` warn: ${options.featureWarn}`);
138
+ lines.push(" ci:");
139
+ lines.push(" required_checks:");
140
+ for (const c of options.featureChecks)
141
+ lines.push(` - ${c}`);
142
+ lines.push(" missing_required: skip");
143
+ lines.push("");
144
+ lines.push(" - name: staging-promotion");
145
+ lines.push(" match:");
146
+ lines.push(" base_branch:");
147
+ lines.push(" - staging");
148
+ lines.push(" environment: staging");
149
+ lines.push(" thresholds:");
150
+ lines.push(` risk: ${options.stagingRisk}`);
151
+ lines.push(` warn: ${options.stagingWarn}`);
152
+ lines.push(" ci:");
153
+ lines.push(" required_checks:");
154
+ for (const c of options.promotionChecks)
155
+ lines.push(` - ${c}`);
156
+ lines.push(" missing_required: fail");
157
+ lines.push("");
158
+ lines.push(" - name: production-promotion");
159
+ lines.push(" match:");
160
+ lines.push(" base_branch:");
161
+ lines.push(" - main");
162
+ lines.push(" - master");
163
+ lines.push(" environment: production");
164
+ lines.push(" thresholds:");
165
+ lines.push(` risk: ${options.productionRisk}`);
166
+ lines.push(` warn: ${options.productionWarn}`);
167
+ lines.push(" ci:");
168
+ lines.push(" required_checks:");
169
+ for (const c of options.promotionChecks)
170
+ lines.push(` - ${c}`);
171
+ lines.push(" missing_required: fail");
172
+ lines.push("");
173
+ }
174
+ else {
175
+ lines.push(" - name: main");
176
+ lines.push(" match:");
177
+ lines.push(" base_branch:");
178
+ lines.push(" - main");
179
+ lines.push(" - master");
180
+ lines.push(" environment: production");
181
+ lines.push(" thresholds:");
182
+ lines.push(` risk: ${options.productionRisk}`);
183
+ lines.push(` warn: ${options.productionWarn}`);
184
+ lines.push(" ci:");
185
+ lines.push(" required_checks:");
186
+ for (const c of options.promotionChecks)
187
+ lines.push(` - ${c}`);
188
+ lines.push(" missing_required: fail");
189
+ lines.push("");
190
+ }
191
+ }
192
+ if (options.highSensitivity.length > 0 || options.mediumSensitivity.length > 0) {
193
+ lines.push("sensitivity:");
194
+ if (options.highSensitivity.length > 0) {
195
+ lines.push(" high:");
196
+ for (const p of options.highSensitivity)
197
+ lines.push(` - "${p}"`);
198
+ }
199
+ if (options.mediumSensitivity.length > 0) {
200
+ lines.push(" medium:");
201
+ for (const p of options.mediumSensitivity)
202
+ lines.push(` - "${p}"`);
203
+ }
204
+ lines.push("");
205
+ }
206
+ if (options.environments.length > 0) {
207
+ lines.push("environments:");
208
+ for (const env of options.environments) {
209
+ lines.push(` ${env.name}:`);
210
+ lines.push(` risk: ${env.risk}`);
211
+ lines.push(` warn: ${env.warn}`);
212
+ }
213
+ lines.push("");
214
+ }
215
+ if (options.services.length > 0) {
216
+ lines.push("services:");
217
+ for (const svc of options.services) {
218
+ lines.push(` ${svc.name}:`);
219
+ lines.push(" paths:");
220
+ for (const p of svc.paths)
221
+ lines.push(` - "${p}"`);
222
+ if (svc.env)
223
+ lines.push(` environment: ${svc.env}`);
224
+ }
225
+ lines.push("");
226
+ }
227
+ if (options.securityGate) {
228
+ lines.push("security:");
229
+ lines.push(" severity_threshold: warning");
230
+ lines.push(" block_on_critical: true");
231
+ lines.push("");
232
+ }
233
+ if (options.canaryType) {
234
+ lines.push("canary:");
235
+ lines.push(` webhook_type: ${options.canaryType}`);
236
+ lines.push("");
237
+ }
238
+ if (options.freezeDays.length > 0 && options.freezeAfterHour !== null) {
239
+ lines.push("freeze:");
240
+ lines.push(" - days:");
241
+ for (const d of options.freezeDays)
242
+ lines.push(` - "${d}"`);
243
+ lines.push(` afterHour: ${options.freezeAfterHour}`);
244
+ lines.push(` message: "No deploys during freeze window"`);
245
+ lines.push("");
246
+ }
247
+ return lines.join("\n") + "\n";
248
+ }
101
249
  function generateWorkflowYml(options) {
102
250
  const lines = [
103
251
  "name: Trailhead",
@@ -118,11 +266,18 @@ function generateWorkflowYml(options) {
118
266
  " steps:",
119
267
  " - uses: actions/checkout@v4",
120
268
  "",
121
- " - uses: KomatikAI/trailhead@v3",
269
+ " - uses: KomatikAI/trailhead@v4",
122
270
  " id: gate",
123
271
  " with:",
124
- ` risk-threshold: "${options.riskThreshold}"`,
125
272
  ];
273
+ if (options.gateMode !== "risk-only") {
274
+ lines.push(` gate-mode: "${options.gateMode}"`);
275
+ if (options.waitForChecks) {
276
+ lines.push(' wait-for-checks: "true"');
277
+ lines.push(' wait-timeout-minutes: "30"');
278
+ }
279
+ }
280
+ lines.push(` risk-threshold: "${options.riskThreshold}"`);
126
281
  if (options.healthCheckUrls.length > 0) {
127
282
  lines.push(` health-check-urls: "${options.healthCheckUrls.join(",")}"`);
128
283
  }
@@ -178,12 +333,17 @@ function generateWorkflowYml(options) {
178
333
  async function main() {
179
334
  const args = process.argv.slice(2);
180
335
  const command = args[0];
336
+ if (command === "doctor") {
337
+ const code = await runDoctorCommand(args.slice(1));
338
+ process.exit(code);
339
+ }
181
340
  if (command !== "init") {
182
341
  print(`
183
- ${BOLD}${GREEN}Trailhead CLI v3.0.2${RESET}
342
+ ${BOLD}${GREEN}Trailhead CLI v${CLI_VERSION}${RESET}
184
343
 
185
344
  ${BOLD}Usage:${RESET}
186
- npx @komatikai/trailhead init Interactive setup wizard
345
+ npx @komatikai/trailhead init Interactive setup wizard
346
+ npx @komatikai/trailhead doctor Validate config and CI check names
187
347
 
188
348
  ${BOLD}Learn more:${RESET}
189
349
  https://github.com/KomatikAI/trailhead
@@ -194,8 +354,28 @@ ${BOLD}Learn more:${RESET}
194
354
  input: process.stdin,
195
355
  output: process.stdout,
196
356
  });
197
- print(`\n${BOLD}${GREEN}Trailhead v3 Setup Wizard${RESET}\n`);
198
- print(`${DIM}This will create .trailhead.yml and a GitHub Actions workflow.${RESET}\n`);
357
+ print(`\n${BOLD}${GREEN}Trailhead v4 Setup Wizard${RESET}\n`);
358
+ print(`${DIM}Creates .trailhead.yml and a GitHub Actions workflow.${RESET}\n`);
359
+ print(`${BOLD}Gate mode${RESET}`);
360
+ print(` ${DIM}1) release-ready — single required check (CI + risk)${RESET}`);
361
+ print(` ${DIM}2) advisory — report only, never blocks${RESET}`);
362
+ print(` ${DIM}3) risk-only — v3 behavior (risk score only)${RESET}`);
363
+ const modeInput = await ask(rl, `${CYAN}Choose gate mode${RESET}`, "1");
364
+ const gateMode = modeInput === "2" ? "advisory" : modeInput === "3" ? "risk-only" : "release-ready";
365
+ let branchModel = "main-only";
366
+ let featureChecks = ["CI Gate", "Build"];
367
+ let promotionChecks = ["CI Gate", "Build", "Playwright"];
368
+ if (gateMode !== "risk-only") {
369
+ print(`\n${BOLD}Branch model${RESET}`);
370
+ print(` ${DIM}1) main-only — PRs target main/master${RESET}`);
371
+ print(` ${DIM}2) progressive — dev → staging → main promotion${RESET}`);
372
+ const branchInput = await ask(rl, `${CYAN}Choose branch model${RESET}`, "1");
373
+ branchModel = branchInput === "2" ? "progressive" : "main-only";
374
+ const featureChecksInput = await ask(rl, `${CYAN}Feature PR required checks${RESET} (comma-separated)`, "CI Gate, Build");
375
+ featureChecks = parseCheckList(featureChecksInput, featureChecks);
376
+ const promotionChecksInput = await ask(rl, `${CYAN}Promotion PR required checks${RESET} (comma-separated)`, "CI Gate, Build, Playwright");
377
+ promotionChecks = parseCheckList(promotionChecksInput, promotionChecks);
378
+ }
199
379
  const riskStr = await ask(rl, `${CYAN}Risk threshold${RESET} (block above this score, 0-100)`, "70");
200
380
  const riskThreshold = Math.max(0, Math.min(100, parseInt(riskStr, 10) || 70));
201
381
  const warnStr = await ask(rl, `${CYAN}Warn threshold${RESET} (warn above this score)`, String(riskThreshold - 15));
@@ -302,18 +482,42 @@ ${BOLD}Learn more:${RESET}
302
482
  }
303
483
  rl.close();
304
484
  print(`\n${BOLD}Writing files...${RESET}\n`);
305
- const configContent = generateTrailheadYml({
306
- highSensitivity,
307
- mediumSensitivity,
308
- riskThreshold,
309
- warnThreshold,
310
- freezeDays,
311
- freezeAfterHour,
312
- environments,
313
- services,
314
- securityGate,
315
- canaryType,
316
- });
485
+ const useV2 = gateMode !== "risk-only";
486
+ const configContent = useV2
487
+ ? generateTrailheadYmlV2({
488
+ gateMode,
489
+ branchModel,
490
+ riskThreshold,
491
+ warnThreshold,
492
+ featureRisk: Math.min(100, riskThreshold + 5),
493
+ featureWarn: warnThreshold,
494
+ stagingRisk: Math.max(0, riskThreshold - 5),
495
+ stagingWarn: Math.max(0, warnThreshold - 10),
496
+ productionRisk: Math.max(0, riskThreshold - 10),
497
+ productionWarn: Math.max(0, warnThreshold - 15),
498
+ featureChecks,
499
+ promotionChecks,
500
+ highSensitivity,
501
+ mediumSensitivity,
502
+ freezeDays,
503
+ freezeAfterHour,
504
+ environments,
505
+ services,
506
+ securityGate,
507
+ canaryType,
508
+ })
509
+ : generateTrailheadYml({
510
+ highSensitivity,
511
+ mediumSensitivity,
512
+ riskThreshold,
513
+ warnThreshold,
514
+ freezeDays,
515
+ freezeAfterHour,
516
+ environments,
517
+ services,
518
+ securityGate,
519
+ canaryType,
520
+ });
317
521
  const configPath = path.join(process.cwd(), ".trailhead.yml");
318
522
  fs.writeFileSync(configPath, configContent, "utf-8");
319
523
  print(` ${GREEN}✓${RESET} .trailhead.yml`);
@@ -330,6 +534,8 @@ ${BOLD}Learn more:${RESET}
330
534
  supabaseFallback,
331
535
  securityGate,
332
536
  environment,
537
+ gateMode,
538
+ waitForChecks: gateMode === "release-ready",
333
539
  });
334
540
  const workflowPath = path.join(workflowDir, "trailhead.yml");
335
541
  if (fs.existsSync(workflowPath)) {
@@ -346,7 +552,8 @@ ${BOLD}${GREEN}Setup complete!${RESET}
346
552
  ${BOLD}Next steps:${RESET}
347
553
  1. Review the generated files
348
554
  2. Commit and push to your repository
349
- 3. Open a PR to see Trailhead in action
555
+ 3. Add branch protection requiring ${BOLD}Trailhead Release Ready${RESET} (v4 mode)
556
+ 4. Open a PR to see Trailhead in action
350
557
 
351
558
  ${DIM}Docs: https://github.com/KomatikAI/trailhead${RESET}
352
559
  `);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function runDoctorCommand(args: string[]): Promise<number>;
@@ -0,0 +1,83 @@
1
+ import { formatDoctorReport, runDoctor } from "./shared/doctor.js";
2
+ function printUsage() {
3
+ process.stdout.write(`
4
+ Trailhead Doctor — validate .trailhead.yml and compare CI check names
5
+
6
+ Usage:
7
+ trailhead doctor [options]
8
+
9
+ Options:
10
+ --path <dir> Directory to scan (default: cwd)
11
+ --repo <owner/name> GitHub repository for check lookup
12
+ --token <token> GitHub token (default: GITHUB_TOKEN)
13
+ --ref <sha> Commit SHA for check runs (default: latest open PR or default branch)
14
+ --offline Skip GitHub API check comparison
15
+ --json Output report as JSON
16
+ -h, --help Show this help
17
+
18
+ Environment:
19
+ GITHUB_TOKEN Personal access token with checks:read
20
+ GITHUB_REPOSITORY owner/repo when running in GitHub Actions
21
+ `);
22
+ }
23
+ export async function runDoctorCommand(args) {
24
+ if (args.includes("-h") || args.includes("--help")) {
25
+ printUsage();
26
+ return 0;
27
+ }
28
+ let cwd = process.cwd();
29
+ let repo;
30
+ let token;
31
+ let ref;
32
+ let offline = false;
33
+ let json = false;
34
+ for (let i = 0; i < args.length; i += 1) {
35
+ const arg = args[i];
36
+ if (arg === "--offline") {
37
+ offline = true;
38
+ continue;
39
+ }
40
+ if (arg === "--json") {
41
+ json = true;
42
+ continue;
43
+ }
44
+ if (arg === "--path" && args[i + 1]) {
45
+ cwd = args[i + 1];
46
+ i += 1;
47
+ continue;
48
+ }
49
+ if (arg === "--repo" && args[i + 1]) {
50
+ repo = args[i + 1];
51
+ i += 1;
52
+ continue;
53
+ }
54
+ if (arg === "--token" && args[i + 1]) {
55
+ token = args[i + 1];
56
+ i += 1;
57
+ continue;
58
+ }
59
+ if (arg === "--ref" && args[i + 1]) {
60
+ ref = args[i + 1];
61
+ i += 1;
62
+ continue;
63
+ }
64
+ process.stderr.write(`Unknown option: ${arg}\n`);
65
+ printUsage();
66
+ return 2;
67
+ }
68
+ const report = await runDoctor({
69
+ cwd,
70
+ offline,
71
+ githubToken: token,
72
+ repo,
73
+ ref,
74
+ });
75
+ if (json) {
76
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
77
+ }
78
+ else {
79
+ process.stdout.write(`${formatDoctorReport(report)}\n`);
80
+ }
81
+ return report.ok ? 0 : 1;
82
+ }
83
+ //# sourceMappingURL=run-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-doctor.js","sourceRoot":"","sources":["../src/run-doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { CiCheck, CiCheckStatusEnum, CiSummary, ContextCiConfig } from "./types.js";
2
+ import type { CiManifest } from "./ci-manifest.js";
3
+ export declare const DEFAULT_SELF_CHECK_NAMES: string[];
4
+ export interface RawCheckRun {
5
+ name: string;
6
+ status: string;
7
+ conclusion: string | null;
8
+ html_url?: string | null;
9
+ details_url?: string | null;
10
+ }
11
+ /**
12
+ * Map GitHub check conclusion/status to Trailhead CI status (ADR-009).
13
+ */
14
+ export declare function classifyCheck(status: string, conclusion: string | null): CiCheckStatusEnum;
15
+ export declare function checkNameMatches(configured: string, actual: string): boolean;
16
+ export declare function normalizeCheckRuns(runs: RawCheckRun[], excludeCheckNames?: string[]): CiCheck[];
17
+ export declare function evaluateRequiredChecks(allChecks: CiCheck[], ciConfig: ContextCiConfig, manifest?: CiManifest | null): CiSummary;
18
+ export declare function formatCiStatusIcon(status: CiCheckStatusEnum): string;