@vibe-validate/cli 0.10.3 → 0.11.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 (71) hide show
  1. package/README.md +70 -88
  2. package/dist/bin.js +51 -9
  3. package/dist/bin.js.map +1 -1
  4. package/dist/commands/cleanup.d.ts.map +1 -1
  5. package/dist/commands/cleanup.js +5 -16
  6. package/dist/commands/cleanup.js.map +1 -1
  7. package/dist/commands/config.js +0 -15
  8. package/dist/commands/config.js.map +1 -1
  9. package/dist/commands/doctor.d.ts.map +1 -1
  10. package/dist/commands/doctor.js +83 -58
  11. package/dist/commands/doctor.js.map +1 -1
  12. package/dist/commands/generate-workflow.d.ts +2 -2
  13. package/dist/commands/generate-workflow.d.ts.map +1 -1
  14. package/dist/commands/generate-workflow.js +67 -21
  15. package/dist/commands/generate-workflow.js.map +1 -1
  16. package/dist/commands/init.d.ts.map +1 -1
  17. package/dist/commands/init.js +71 -109
  18. package/dist/commands/init.js.map +1 -1
  19. package/dist/commands/state.d.ts.map +1 -1
  20. package/dist/commands/state.js +0 -5
  21. package/dist/commands/state.js.map +1 -1
  22. package/dist/commands/sync-check.d.ts.map +1 -1
  23. package/dist/commands/sync-check.js +5 -14
  24. package/dist/commands/sync-check.js.map +1 -1
  25. package/dist/commands/watch-pr.d.ts +6 -0
  26. package/dist/commands/watch-pr.d.ts.map +1 -0
  27. package/dist/commands/watch-pr.js +282 -0
  28. package/dist/commands/watch-pr.js.map +1 -0
  29. package/dist/schemas/watch-pr-schema.d.ts +261 -0
  30. package/dist/schemas/watch-pr-schema.d.ts.map +1 -0
  31. package/dist/schemas/watch-pr-schema.js +58 -0
  32. package/dist/schemas/watch-pr-schema.js.map +1 -0
  33. package/dist/scripts/generate-watch-pr-schema.d.ts +12 -0
  34. package/dist/scripts/generate-watch-pr-schema.d.ts.map +1 -0
  35. package/dist/scripts/generate-watch-pr-schema.js +35 -0
  36. package/dist/scripts/generate-watch-pr-schema.js.map +1 -0
  37. package/dist/services/ci-provider-registry.d.ts +38 -0
  38. package/dist/services/ci-provider-registry.d.ts.map +1 -0
  39. package/dist/services/ci-provider-registry.js +53 -0
  40. package/dist/services/ci-provider-registry.js.map +1 -0
  41. package/dist/services/ci-provider.d.ts +160 -0
  42. package/dist/services/ci-provider.d.ts.map +1 -0
  43. package/dist/services/ci-provider.js +11 -0
  44. package/dist/services/ci-provider.js.map +1 -0
  45. package/dist/services/ci-providers/github-actions.d.ts +40 -0
  46. package/dist/services/ci-providers/github-actions.d.ts.map +1 -0
  47. package/dist/services/ci-providers/github-actions.js +305 -0
  48. package/dist/services/ci-providers/github-actions.js.map +1 -0
  49. package/dist/utils/check-validation.d.ts +1 -1
  50. package/dist/utils/check-validation.d.ts.map +1 -1
  51. package/dist/utils/check-validation.js +2 -2
  52. package/dist/utils/check-validation.js.map +1 -1
  53. package/dist/utils/config-loader.d.ts +15 -3
  54. package/dist/utils/config-loader.d.ts.map +1 -1
  55. package/dist/utils/config-loader.js +61 -17
  56. package/dist/utils/config-loader.js.map +1 -1
  57. package/dist/utils/context-detector.d.ts +1 -1
  58. package/dist/utils/context-detector.js +1 -1
  59. package/dist/utils/normalize-line-endings.d.ts +53 -0
  60. package/dist/utils/normalize-line-endings.d.ts.map +1 -0
  61. package/dist/utils/normalize-line-endings.js +57 -0
  62. package/dist/utils/normalize-line-endings.js.map +1 -0
  63. package/dist/utils/setup-checks/gitignore-check.d.ts.map +1 -1
  64. package/dist/utils/setup-checks/gitignore-check.js +3 -4
  65. package/dist/utils/setup-checks/gitignore-check.js.map +1 -1
  66. package/dist/utils/template-discovery.d.ts +40 -0
  67. package/dist/utils/template-discovery.d.ts.map +1 -0
  68. package/dist/utils/template-discovery.js +136 -0
  69. package/dist/utils/template-discovery.js.map +1 -0
  70. package/package.json +9 -8
  71. package/watch-pr-result.schema.json +204 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-watch-pr-schema.js","sourceRoot":"","sources":["../../src/scripts/generate-watch-pr-schema.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,uBAAuB;AACvB,MAAM,UAAU,GAAG,eAAe,CAAC,mBAAmB,EAAE;IACtD,IAAI,EAAE,eAAe;IACrB,YAAY,EAAE,MAAM,EAAE,4CAA4C;CACnE,CAAC,CAAC;AAEH,eAAe;AACf,MAAM,kBAAkB,GAAG;IACzB,OAAO,EAAE,yCAAyC;IAClD,GAAG,EAAE,6FAA6F;IAClG,KAAK,EAAE,sCAAsC;IAC7C,WAAW,EAAE,4DAA4D;IACzE,GAAG,UAAU;CACd,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,mCAAmC,CAAC,CAAC;AACxE,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { CIProvider } from './ci-provider.js';
2
+ /**
3
+ * Registry for CI providers with auto-detection
4
+ *
5
+ * Manages available CI providers and provides auto-detection
6
+ * to determine which provider is usable in current context.
7
+ *
8
+ * Future providers can be added here:
9
+ * - GitLab CI
10
+ * - CircleCI
11
+ * - Jenkins
12
+ * - etc.
13
+ */
14
+ export declare class CIProviderRegistry {
15
+ private providers;
16
+ /**
17
+ * Auto-detect which CI provider is available in current context
18
+ *
19
+ * Checks each registered provider in order until one reports availability.
20
+ *
21
+ * @returns First available provider, or null if none available
22
+ */
23
+ detectProvider(): Promise<CIProvider | null>;
24
+ /**
25
+ * Get specific provider by name
26
+ *
27
+ * @param name - Provider name (e.g., 'github-actions', 'gitlab-ci')
28
+ * @returns Provider instance if found, undefined otherwise
29
+ */
30
+ getProvider(name: string): CIProvider | undefined;
31
+ /**
32
+ * Get all registered provider names
33
+ *
34
+ * @returns Array of provider names
35
+ */
36
+ getProviderNames(): string[];
37
+ }
38
+ //# sourceMappingURL=ci-provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-provider-registry.d.ts","sourceRoot":"","sources":["../../src/services/ci-provider-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAIf;IAEF;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASlD;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,EAAE;CAG7B"}
@@ -0,0 +1,53 @@
1
+ import { GitHubActionsProvider } from './ci-providers/github-actions.js';
2
+ /**
3
+ * Registry for CI providers with auto-detection
4
+ *
5
+ * Manages available CI providers and provides auto-detection
6
+ * to determine which provider is usable in current context.
7
+ *
8
+ * Future providers can be added here:
9
+ * - GitLab CI
10
+ * - CircleCI
11
+ * - Jenkins
12
+ * - etc.
13
+ */
14
+ export class CIProviderRegistry {
15
+ providers = [
16
+ new GitHubActionsProvider(),
17
+ // new GitLabCIProvider(),
18
+ // new CircleCIProvider(),
19
+ ];
20
+ /**
21
+ * Auto-detect which CI provider is available in current context
22
+ *
23
+ * Checks each registered provider in order until one reports availability.
24
+ *
25
+ * @returns First available provider, or null if none available
26
+ */
27
+ async detectProvider() {
28
+ for (const provider of this.providers) {
29
+ if (await provider.isAvailable()) {
30
+ return provider;
31
+ }
32
+ }
33
+ return null;
34
+ }
35
+ /**
36
+ * Get specific provider by name
37
+ *
38
+ * @param name - Provider name (e.g., 'github-actions', 'gitlab-ci')
39
+ * @returns Provider instance if found, undefined otherwise
40
+ */
41
+ getProvider(name) {
42
+ return this.providers.find((p) => p.name === name);
43
+ }
44
+ /**
45
+ * Get all registered provider names
46
+ *
47
+ * @returns Array of provider names
48
+ */
49
+ getProviderNames() {
50
+ return this.providers.map((p) => p.name);
51
+ }
52
+ }
53
+ //# sourceMappingURL=ci-provider-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-provider-registry.js","sourceRoot":"","sources":["../../src/services/ci-provider-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,kBAAkB;IACrB,SAAS,GAAiB;QAChC,IAAI,qBAAqB,EAAE;QAC3B,0BAA0B;QAC1B,0BAA0B;KAC3B,CAAC;IAEF;;;;;;OAMG;IACH,KAAK,CAAC,cAAc;QAClB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Abstract CI provider interface for platform-agnostic PR/MR watching
3
+ *
4
+ * This allows vibe-validate to support multiple CI platforms:
5
+ * - GitHub Actions (initial implementation)
6
+ * - GitLab CI (future)
7
+ * - Jenkins (future)
8
+ * - CircleCI (future)
9
+ */
10
+ /**
11
+ * Pull/Merge Request information
12
+ */
13
+ export interface PullRequest {
14
+ /** PR/MR number or ID */
15
+ id: number | string;
16
+ /** PR/MR title */
17
+ title: string;
18
+ /** URL to view PR/MR in browser */
19
+ url: string;
20
+ /** Source branch name */
21
+ branch: string;
22
+ }
23
+ /**
24
+ * Individual check/job result
25
+ */
26
+ export interface CheckResult {
27
+ /** Unique identifier for this check/job */
28
+ id: string;
29
+ /** Human-readable name (e.g., "ubuntu-latest (Node 20)") */
30
+ name: string;
31
+ /** Current execution status */
32
+ status: 'queued' | 'in_progress' | 'completed';
33
+ /** Final result (null if not completed) */
34
+ conclusion: 'success' | 'failure' | 'cancelled' | 'skipped' | 'neutral' | null;
35
+ /** Duration string (e.g., "2m 15s") */
36
+ duration?: string;
37
+ /** URL to view check details */
38
+ url?: string;
39
+ }
40
+ /**
41
+ * Overall status of all checks for a PR/MR
42
+ */
43
+ export interface CheckStatus {
44
+ /** Associated PR/MR */
45
+ pr: PullRequest;
46
+ /** Overall status across all checks */
47
+ status: 'pending' | 'in_progress' | 'completed';
48
+ /** Overall result (only meaningful when status is 'completed') */
49
+ result: 'success' | 'failure' | 'cancelled' | 'unknown';
50
+ /** Individual check results */
51
+ checks: CheckResult[];
52
+ }
53
+ /**
54
+ * Parsed contents of vibe-validate state file
55
+ */
56
+ export interface StateFileContents {
57
+ /** Whether validation passed */
58
+ passed: boolean;
59
+ /** Timestamp of validation */
60
+ timestamp?: string;
61
+ /** Git tree hash */
62
+ treeHash?: string;
63
+ /** Name of step that failed */
64
+ failedStep?: string;
65
+ /** Command to re-run failed step */
66
+ rerunCommand?: string;
67
+ /** Output from failed step */
68
+ failedStepOutput?: string;
69
+ /** All phases (if available) */
70
+ phases?: Array<{
71
+ name: string;
72
+ passed: boolean;
73
+ durationSecs?: number;
74
+ output?: string;
75
+ steps?: Array<{
76
+ name: string;
77
+ passed: boolean;
78
+ durationSecs?: number;
79
+ output?: string;
80
+ }>;
81
+ }>;
82
+ }
83
+ /**
84
+ * Detailed failure information including logs
85
+ */
86
+ export interface FailureLogs {
87
+ /** ID of the failed check/run */
88
+ checkId: string;
89
+ /** Name of the failed check */
90
+ checkName: string;
91
+ /** Raw log output (may be very large) */
92
+ rawLogs: string;
93
+ /** Name of the step that failed */
94
+ failedStep?: string;
95
+ /** Concise error summary */
96
+ errorSummary?: string;
97
+ /** Parsed vibe-validate state file (if present) */
98
+ stateFile?: StateFileContents;
99
+ }
100
+ /**
101
+ * Abstract CI provider interface
102
+ *
103
+ * Implementations must support:
104
+ * - Detecting if the provider is available in current context
105
+ * - Finding PR/MR from current branch
106
+ * - Fetching check status
107
+ * - Fetching failure logs with error extraction
108
+ */
109
+ export interface CIProvider {
110
+ /** Provider name (e.g., 'github-actions', 'gitlab-ci') */
111
+ readonly name: string;
112
+ /**
113
+ * Detect if this provider is available in current context
114
+ *
115
+ * Should check:
116
+ * - Required CLI tools (gh, glab, etc.)
117
+ * - Git remote matches provider (github.com, gitlab.com, etc.)
118
+ *
119
+ * @returns true if provider is available and usable
120
+ */
121
+ isAvailable(): Promise<boolean>;
122
+ /**
123
+ * Detect PR/MR from current branch
124
+ *
125
+ * Uses provider CLI or API to find open PR/MR for current branch.
126
+ *
127
+ * @returns PR/MR info if found, null otherwise
128
+ */
129
+ detectPullRequest(): Promise<PullRequest | null>;
130
+ /**
131
+ * Fetch current check status for a PR/MR
132
+ *
133
+ * @param _prId - PR/MR number or ID
134
+ * @returns Current status of all checks
135
+ */
136
+ fetchCheckStatus(_prId: number | string): Promise<CheckStatus>;
137
+ /**
138
+ * Fetch detailed logs for a failed check
139
+ *
140
+ * Should attempt to:
141
+ * - Extract vibe-validate state file if present
142
+ * - Identify failed step
143
+ * - Provide concise error summary
144
+ *
145
+ * @param _checkId - Unique identifier for the check/run
146
+ * @returns Detailed failure information
147
+ */
148
+ fetchFailureLogs(_checkId: string): Promise<FailureLogs>;
149
+ /**
150
+ * Extract vibe-validate state file from logs
151
+ *
152
+ * Looks for the state file display section in workflow logs.
153
+ * This is provider-specific as log formats differ.
154
+ *
155
+ * @param _logs - Raw log output
156
+ * @returns Parsed state file contents if found, null otherwise
157
+ */
158
+ extractStateFile(_logs: string): StateFileContents | null;
159
+ }
160
+ //# sourceMappingURL=ci-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-provider.d.ts","sourceRoot":"","sources":["../../src/services/ci-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Abstract CI provider interface for platform-agnostic PR/MR watching
3
+ *
4
+ * This allows vibe-validate to support multiple CI platforms:
5
+ * - GitHub Actions (initial implementation)
6
+ * - GitLab CI (future)
7
+ * - Jenkins (future)
8
+ * - CircleCI (future)
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=ci-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-provider.js","sourceRoot":"","sources":["../../src/services/ci-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,40 @@
1
+ import type { CIProvider, PullRequest, CheckStatus, FailureLogs, StateFileContents } from '../ci-provider.js';
2
+ /**
3
+ * GitHub Actions CI provider implementation
4
+ *
5
+ * Uses GitHub CLI (gh) to interact with GitHub API.
6
+ * Requires:
7
+ * - gh CLI installed and authenticated
8
+ * - Git repository with github.com remote
9
+ */
10
+ export declare class GitHubActionsProvider implements CIProvider {
11
+ readonly name = "github-actions";
12
+ isAvailable(): Promise<boolean>;
13
+ detectPullRequest(): Promise<PullRequest | null>;
14
+ fetchCheckStatus(prId: number | string): Promise<CheckStatus>;
15
+ fetchFailureLogs(runId: string): Promise<FailureLogs>;
16
+ extractStateFile(logs: string): StateFileContents | null;
17
+ /**
18
+ * Transform GitHub check format to common CheckResult format
19
+ */
20
+ private transformCheck;
21
+ /**
22
+ * Determine overall status from individual checks
23
+ */
24
+ private determineOverallStatus;
25
+ /**
26
+ * Determine overall result from individual checks
27
+ */
28
+ private determineOverallResult;
29
+ /**
30
+ * Extract failed step name from GitHub Actions logs
31
+ */
32
+ private extractFailedStep;
33
+ /**
34
+ * Extract concise error summary from logs
35
+ *
36
+ * Prioritizes vibe-validate state file extraction for most actionable errors.
37
+ */
38
+ private extractErrorSummary;
39
+ }
40
+ //# sourceMappingURL=github-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-actions.d.ts","sourceRoot":"","sources":["../../../src/services/ci-providers/github-actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,WAAW,EAEX,WAAW,EACX,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,UAAU;IACtD,QAAQ,CAAC,IAAI,oBAAoB;IAE3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,iBAAiB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAoBhD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAyB7D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAkC3D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IA+DxD;;OAEG;IACH,OAAO,CAAC,cAAc;IAkEtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAkC5B"}
@@ -0,0 +1,305 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { parse as parseYaml } from 'yaml';
3
+ /**
4
+ * GitHub Actions CI provider implementation
5
+ *
6
+ * Uses GitHub CLI (gh) to interact with GitHub API.
7
+ * Requires:
8
+ * - gh CLI installed and authenticated
9
+ * - Git repository with github.com remote
10
+ */
11
+ export class GitHubActionsProvider {
12
+ name = 'github-actions';
13
+ async isAvailable() {
14
+ try {
15
+ // Check if gh CLI is available
16
+ execSync('gh --version', { stdio: 'ignore' });
17
+ // Check if we're in a GitHub repo
18
+ const remote = execSync('git remote get-url origin', { encoding: 'utf8' });
19
+ return remote.includes('github.com');
20
+ }
21
+ catch {
22
+ return false;
23
+ }
24
+ }
25
+ async detectPullRequest() {
26
+ try {
27
+ const prData = JSON.parse(execSync('gh pr view --json number,title,url,headRefName', {
28
+ encoding: 'utf8',
29
+ stdio: ['pipe', 'pipe', 'pipe'],
30
+ }));
31
+ return {
32
+ id: prData.number,
33
+ title: prData.title,
34
+ url: prData.url,
35
+ branch: prData.headRefName,
36
+ };
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ async fetchCheckStatus(prId) {
43
+ const data = JSON.parse(execSync(`gh pr view ${prId} --json number,title,url,statusCheckRollup,headRefName`, {
44
+ encoding: 'utf8',
45
+ stdio: ['pipe', 'pipe', 'pipe'],
46
+ }));
47
+ const checks = (data.statusCheckRollup || []).map((check) => this.transformCheck(check));
48
+ return {
49
+ pr: {
50
+ id: data.number,
51
+ title: data.title,
52
+ url: data.url,
53
+ branch: data.headRefName || '',
54
+ },
55
+ status: this.determineOverallStatus(checks),
56
+ result: this.determineOverallResult(checks),
57
+ checks,
58
+ };
59
+ }
60
+ async fetchFailureLogs(runId) {
61
+ // Get run details to find the check name
62
+ let checkName = 'Unknown';
63
+ try {
64
+ const runData = JSON.parse(execSync(`gh run view ${runId} --json name`, {
65
+ encoding: 'utf8',
66
+ stdio: ['pipe', 'pipe', 'pipe'],
67
+ }));
68
+ checkName = runData.name || checkName;
69
+ }
70
+ catch {
71
+ // Ignore error, use default name
72
+ }
73
+ // Fetch full logs (includes "Display validation state on failure" step)
74
+ const logs = execSync(`gh run view ${runId} --log`, {
75
+ encoding: 'utf8',
76
+ stdio: ['pipe', 'pipe', 'pipe'],
77
+ maxBuffer: 50 * 1024 * 1024, // 50MB buffer to handle large logs
78
+ });
79
+ const stateFile = this.extractStateFile(logs);
80
+ return {
81
+ checkId: runId,
82
+ checkName,
83
+ rawLogs: logs,
84
+ failedStep: this.extractFailedStep(logs),
85
+ errorSummary: this.extractErrorSummary(logs),
86
+ stateFile: stateFile ?? undefined,
87
+ };
88
+ }
89
+ extractStateFile(logs) {
90
+ // GitHub Actions logs have format: "Run name\tStep name\tTimestamp <content>"
91
+ // We need to strip prefixes to get actual output
92
+ const lines = logs.split('\n');
93
+ // Helper to extract content from a GitHub Actions log line
94
+ const extractContent = (line) => {
95
+ const parts = line.split('\t');
96
+ if (parts.length < 3)
97
+ return '';
98
+ const contentWithTimestamp = parts.slice(2).join('\t');
99
+ // Strip timestamp (format: "2025-10-21T00:56:24.8654285Z <content>")
100
+ return contentWithTimestamp.replace(/^[0-9T:.Z-]+ /, '').replace(/^[0-9T:.Z-]+$/, '');
101
+ };
102
+ // Find the start: line containing "VALIDATION STATE FILE CONTENTS"
103
+ // Skip lines with ANSI codes (those are the commands being echoed, not the output)
104
+ const startIdx = lines.findIndex(l => {
105
+ return l.includes('VALIDATION STATE FILE CONTENTS') && !l.includes('[36;1m') && !l.includes('[0m');
106
+ });
107
+ if (startIdx < 0) {
108
+ return null;
109
+ }
110
+ // Find the closing separator (next line with ==== that comes after some YAML content)
111
+ // Look for a line with just ========== (40+ chars) after we've seen some YAML (passed:, timestamp:, etc.)
112
+ let endIdx = -1;
113
+ let foundYamlContent = false;
114
+ for (let i = startIdx + 1; i < lines.length; i++) {
115
+ const content = extractContent(lines[i]).trim();
116
+ // Check if we've seen YAML content
117
+ if (content.startsWith('passed:') || content.startsWith('timestamp:') || content.startsWith('treeHash:')) {
118
+ foundYamlContent = true;
119
+ }
120
+ // Look for closing separator after we've seen YAML content
121
+ if (foundYamlContent && content.match(/^={40,}$/)) {
122
+ endIdx = i;
123
+ break;
124
+ }
125
+ }
126
+ if (endIdx < 0) {
127
+ return null;
128
+ }
129
+ // Extract YAML content (skip the header separator line, start from actual YAML)
130
+ const yamlLines = [];
131
+ for (let i = startIdx + 2; i < endIdx; i++) {
132
+ // Strip the prefix (job name + step + timestamp) to get actual content
133
+ const content = extractContent(lines[i]);
134
+ yamlLines.push(content);
135
+ }
136
+ try {
137
+ const stateYaml = yamlLines.join('\n').trim();
138
+ return parseYaml(stateYaml);
139
+ }
140
+ catch (_error) {
141
+ // Failed to parse YAML, return null
142
+ return null;
143
+ }
144
+ }
145
+ /**
146
+ * Transform GitHub check format to common CheckResult format
147
+ */
148
+ transformCheck(ghCheck) {
149
+ // Type guard to ensure ghCheck is an object with expected properties
150
+ const check = ghCheck;
151
+ // GitHub check structure (from statusCheckRollup):
152
+ // {
153
+ // __typename: "CheckRun" | "StatusContext",
154
+ // name: string,
155
+ // status: "QUEUED" | "IN_PROGRESS" | "COMPLETED",
156
+ // conclusion: "SUCCESS" | "FAILURE" | "CANCELLED" | etc,
157
+ // detailsUrl: string
158
+ // }
159
+ let status;
160
+ switch (check.status) {
161
+ case 'QUEUED':
162
+ status = 'queued';
163
+ break;
164
+ case 'IN_PROGRESS':
165
+ status = 'in_progress';
166
+ break;
167
+ case 'COMPLETED':
168
+ status = 'completed';
169
+ break;
170
+ default:
171
+ status = 'queued';
172
+ }
173
+ let conclusion = null;
174
+ if (check.conclusion) {
175
+ switch (check.conclusion) {
176
+ case 'SUCCESS':
177
+ conclusion = 'success';
178
+ break;
179
+ case 'FAILURE':
180
+ conclusion = 'failure';
181
+ break;
182
+ case 'CANCELLED':
183
+ conclusion = 'cancelled';
184
+ break;
185
+ case 'SKIPPED':
186
+ conclusion = 'skipped';
187
+ break;
188
+ case 'NEUTRAL':
189
+ conclusion = 'neutral';
190
+ break;
191
+ }
192
+ }
193
+ // Extract run ID from details URL if available
194
+ let checkId = 'unknown';
195
+ if (typeof check.detailsUrl === 'string') {
196
+ const runIdMatch = check.detailsUrl.match(/\/runs\/(\d+)/);
197
+ if (runIdMatch) {
198
+ checkId = runIdMatch[1];
199
+ }
200
+ }
201
+ return {
202
+ id: checkId,
203
+ name: check.name || 'Unknown',
204
+ status,
205
+ conclusion,
206
+ url: check.detailsUrl,
207
+ };
208
+ }
209
+ /**
210
+ * Determine overall status from individual checks
211
+ */
212
+ determineOverallStatus(checks) {
213
+ if (checks.length === 0) {
214
+ return 'pending';
215
+ }
216
+ const allCompleted = checks.every((c) => c.status === 'completed');
217
+ if (allCompleted) {
218
+ return 'completed';
219
+ }
220
+ const anyInProgress = checks.some((c) => c.status === 'in_progress');
221
+ if (anyInProgress) {
222
+ return 'in_progress';
223
+ }
224
+ return 'pending';
225
+ }
226
+ /**
227
+ * Determine overall result from individual checks
228
+ */
229
+ determineOverallResult(checks) {
230
+ if (checks.length === 0) {
231
+ return 'unknown';
232
+ }
233
+ const anyFailure = checks.some((c) => c.conclusion === 'failure');
234
+ if (anyFailure) {
235
+ return 'failure';
236
+ }
237
+ const anyCancelled = checks.some((c) => c.conclusion === 'cancelled');
238
+ if (anyCancelled) {
239
+ return 'cancelled';
240
+ }
241
+ const allSuccess = checks.every((c) => c.conclusion === 'success');
242
+ if (allSuccess) {
243
+ return 'success';
244
+ }
245
+ return 'unknown';
246
+ }
247
+ /**
248
+ * Extract failed step name from GitHub Actions logs
249
+ */
250
+ extractFailedStep(logs) {
251
+ // GitHub Actions marks failed steps with ##[error]
252
+ const errorMatch = logs.match(/##\[error\]Process completed with exit code \d+\./);
253
+ if (!errorMatch) {
254
+ return undefined;
255
+ }
256
+ // Try to find the step name before the error
257
+ // Look for lines like: "Run pnpm test" or "##[group]Run pnpm test"
258
+ const lines = logs.split('\n');
259
+ const errorIndex = lines.findIndex((line) => line.includes('##[error]'));
260
+ if (errorIndex > 0) {
261
+ // Look backwards for step name
262
+ for (let i = errorIndex - 1; i >= 0; i--) {
263
+ const runMatch = lines[i].match(/##\[group\]Run (.+)/);
264
+ if (runMatch) {
265
+ return runMatch[1];
266
+ }
267
+ }
268
+ }
269
+ return undefined;
270
+ }
271
+ /**
272
+ * Extract concise error summary from logs
273
+ *
274
+ * Prioritizes vibe-validate state file extraction for most actionable errors.
275
+ */
276
+ extractErrorSummary(logs) {
277
+ // First, try to extract the full state file (most detailed)
278
+ const stateFile = this.extractStateFile(logs);
279
+ if (stateFile && !stateFile.passed && stateFile.phases) {
280
+ // Find the first failed phase
281
+ const failedPhase = stateFile.phases.find(p => !p.passed);
282
+ if (failedPhase && failedPhase.steps) {
283
+ // Find the first failed step in that phase
284
+ const failedStep = failedPhase.steps.find(s => !s.passed);
285
+ if (failedStep && failedPhase.output) {
286
+ // Return a concise summary with the failed step and its output
287
+ const outputPreview = failedPhase.output
288
+ .split('\n')
289
+ .slice(0, 20) // First 20 lines of output
290
+ .join('\n');
291
+ return `Phase: ${failedPhase.name}\nFailed Step: ${failedStep.name}\n\n${outputPreview}`;
292
+ }
293
+ }
294
+ }
295
+ // Fallback: Look for ##[error] lines
296
+ const errorLines = logs
297
+ .split('\n')
298
+ .filter((line) => line.includes('##[error]'))
299
+ .slice(0, 10) // First 10 error lines
300
+ .map((line) => line.replace(/##\[error\]/g, '').trim())
301
+ .join('\n');
302
+ return errorLines || undefined;
303
+ }
304
+ }
305
+ //# sourceMappingURL=github-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-actions.js","sourceRoot":"","sources":["../../../src/services/ci-providers/github-actions.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,5 @@ import type { VibeValidateConfig } from '@vibe-validate/config';
14
14
  * 2 = State file missing (run validation)
15
15
  * 3 = Git tree hash mismatch (run validation)
16
16
  */
17
- export declare function checkValidationStatus(config: VibeValidateConfig): Promise<void>;
17
+ export declare function checkValidationStatus(_config: VibeValidateConfig): Promise<void>;
18
18
  //# sourceMappingURL=check-validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-validation.d.ts","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAKhE;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgErF"}
1
+ {"version":3,"file":"check-validation.d.ts","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAKhE;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEtF"}