@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
@@ -17,8 +17,8 @@ import yaml from 'yaml';
17
17
  * 2 = State file missing (run validation)
18
18
  * 3 = Git tree hash mismatch (run validation)
19
19
  */
20
- export async function checkValidationStatus(config) {
21
- const stateFilePath = config.validation.caching?.statePath || '.vibe-validate-state.yaml';
20
+ export async function checkValidationStatus(_config) {
21
+ const stateFilePath = '.vibe-validate-state.yaml';
22
22
  // Check if state file exists
23
23
  if (!existsSync(stateFilePath)) {
24
24
  console.log(chalk.yellow('⚠️ Validation state file not found'));
@@ -1 +1 @@
1
- {"version":3,"file":"check-validation.js","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-validation.js","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,7 @@ import type { VibeValidateConfig } from '@vibe-validate/config';
7
7
  /**
8
8
  * Load vibe-validate configuration from project root
9
9
  *
10
- * Searches for configuration files:
11
- * - vibe-validate.config.yaml (primary format)
12
- * - vibe-validate.config.mjs (deprecated, legacy support only)
10
+ * Searches for vibe-validate.config.yaml in the current directory.
13
11
  *
14
12
  * @param cwd Current working directory (defaults to process.cwd())
15
13
  * @returns Configuration object or null if not found
@@ -29,4 +27,18 @@ export declare function configExists(cwd?: string): boolean;
29
27
  * @returns Config file path or null if not found
30
28
  */
31
29
  export declare function findConfigPath(cwd?: string): string | null;
30
+ /**
31
+ * Load configuration with detailed validation errors
32
+ *
33
+ * When config loading fails, this function attempts to parse the file
34
+ * and validate it to provide specific error messages.
35
+ *
36
+ * @param cwd Current working directory (defaults to process.cwd())
37
+ * @returns Object with config, errors, and file path
38
+ */
39
+ export declare function loadConfigWithErrors(cwd?: string): Promise<{
40
+ config: VibeValidateConfig | null;
41
+ errors: string[] | null;
42
+ filePath: string | null;
43
+ }>;
32
44
  //# sourceMappingURL=config-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAajF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAQlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe1D"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAajF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAKlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1D;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC,CAoDD"}
@@ -10,9 +10,7 @@ import chalk from 'chalk';
10
10
  /**
11
11
  * Load vibe-validate configuration from project root
12
12
  *
13
- * Searches for configuration files:
14
- * - vibe-validate.config.yaml (primary format)
15
- * - vibe-validate.config.mjs (deprecated, legacy support only)
13
+ * Searches for vibe-validate.config.yaml in the current directory.
16
14
  *
17
15
  * @param cwd Current working directory (defaults to process.cwd())
18
16
  * @returns Configuration object or null if not found
@@ -39,11 +37,8 @@ export async function loadConfig(cwd) {
39
37
  */
40
38
  export function configExists(cwd) {
41
39
  const searchDir = cwd ?? process.cwd();
42
- const configPaths = [
43
- 'vibe-validate.config.yaml',
44
- 'vibe-validate.config.mjs', // Legacy (deprecated)
45
- ];
46
- return configPaths.some(path => existsSync(join(searchDir, path)));
40
+ const configPath = 'vibe-validate.config.yaml';
41
+ return existsSync(join(searchDir, configPath));
47
42
  }
48
43
  /**
49
44
  * Find config file path if it exists
@@ -53,16 +48,65 @@ export function configExists(cwd) {
53
48
  */
54
49
  export function findConfigPath(cwd) {
55
50
  const searchDir = cwd ?? process.cwd();
56
- const configPaths = [
57
- 'vibe-validate.config.yaml',
58
- 'vibe-validate.config.mjs', // Legacy (deprecated)
59
- ];
60
- for (const path of configPaths) {
61
- const fullPath = join(searchDir, path);
62
- if (existsSync(fullPath)) {
63
- return fullPath;
51
+ const configPath = 'vibe-validate.config.yaml';
52
+ const fullPath = join(searchDir, configPath);
53
+ return existsSync(fullPath) ? fullPath : null;
54
+ }
55
+ /**
56
+ * Load configuration with detailed validation errors
57
+ *
58
+ * When config loading fails, this function attempts to parse the file
59
+ * and validate it to provide specific error messages.
60
+ *
61
+ * @param cwd Current working directory (defaults to process.cwd())
62
+ * @returns Object with config, errors, and file path
63
+ */
64
+ export async function loadConfigWithErrors(cwd) {
65
+ const searchDir = cwd ?? process.cwd();
66
+ const configPath = findConfigPath(searchDir);
67
+ if (!configPath) {
68
+ return { config: null, errors: null, filePath: null };
69
+ }
70
+ // Always parse and validate to get detailed errors
71
+ try {
72
+ const { readFileSync } = await import('fs');
73
+ const { parse: parseYaml } = await import('yaml');
74
+ const { safeValidateConfig } = await import('@vibe-validate/config');
75
+ const content = readFileSync(configPath, 'utf-8');
76
+ const raw = parseYaml(content);
77
+ // Remove $schema property if present (used for IDE support only)
78
+ if (raw && typeof raw === 'object' && '$schema' in raw) {
79
+ delete raw['$schema'];
80
+ }
81
+ const validation = safeValidateConfig(raw);
82
+ if (!validation.success) {
83
+ return {
84
+ config: null,
85
+ errors: validation.errors || ['Unknown validation error'],
86
+ filePath: configPath
87
+ };
88
+ }
89
+ // Validation succeeded
90
+ return {
91
+ config: validation.data || null,
92
+ errors: null,
93
+ filePath: configPath
94
+ };
95
+ }
96
+ catch (parseError) {
97
+ // YAML parsing failed
98
+ if (parseError instanceof Error) {
99
+ return {
100
+ config: null,
101
+ errors: [`YAML syntax error: ${parseError.message}`],
102
+ filePath: configPath
103
+ };
64
104
  }
105
+ return {
106
+ config: null,
107
+ errors: ['YAML syntax error - check for missing colons, indentation, or invalid characters'],
108
+ filePath: configPath
109
+ };
65
110
  }
66
- return null;
67
111
  }
68
112
  //# sourceMappingURL=config-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY;IAC3C,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,mFAAmF;QACnF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,MAAM,IAAI,IAAI,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG;QAClB,2BAA2B;QAC3B,0BAA0B,EAAE,sBAAsB;KACnD,CAAC;IAEF,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG;QAClB,2BAA2B;QAC3B,0BAA0B,EAAE,sBAAsB;KACnD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Agent Context Detection
3
3
  *
4
4
  * Detects if running in an agent context (Claude Code, Cursor, CI, etc.)
5
- * and adapts output format accordingly.
5
+ * and adapts output verbosity accordingly (minimal for agents, verbose for interactive).
6
6
  */
7
7
  export interface AgentContext {
8
8
  isAgent: boolean;
@@ -2,7 +2,7 @@
2
2
  * Agent Context Detection
3
3
  *
4
4
  * Detects if running in an agent context (Claude Code, Cursor, CI, etc.)
5
- * and adapts output format accordingly.
5
+ * and adapts output verbosity accordingly (minimal for agents, verbose for interactive).
6
6
  */
7
7
  /**
8
8
  * Detect the current execution context
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Cross-Platform Line Ending Normalization
3
+ *
4
+ * Provides utilities for handling line endings across different platforms.
5
+ * Windows uses CRLF (\r\n), Unix/macOS uses LF (\n).
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ /**
10
+ * Normalize line endings to LF (\n)
11
+ *
12
+ * Converts Windows CRLF (\r\n) to Unix LF (\n) for consistent string processing.
13
+ * This is critical for:
14
+ * - Cross-platform string comparisons
15
+ * - File content parsing (split by '\n')
16
+ * - Test assertions that compare strings
17
+ *
18
+ * @param content - String with potentially mixed line endings
19
+ * @returns String with normalized LF line endings
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const windowsText = "line1\r\nline2\r\nline3";
24
+ * const normalized = normalizeLineEndings(windowsText);
25
+ * // Result: "line1\nline2\nline3"
26
+ *
27
+ * const lines = normalized.split('\n');
28
+ * // Works correctly on all platforms
29
+ * ```
30
+ *
31
+ * @public
32
+ */
33
+ export declare function normalizeLineEndings(content: string): string;
34
+ /**
35
+ * Split content by lines (cross-platform)
36
+ *
37
+ * Splits string by line breaks, handling both Windows (CRLF) and Unix (LF)
38
+ * line endings automatically.
39
+ *
40
+ * @param content - String to split into lines
41
+ * @returns Array of lines
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * // Works on all platforms
46
+ * const lines = splitLines("line1\r\nline2\nline3");
47
+ * // Result: ["line1", "line2", "line3"]
48
+ * ```
49
+ *
50
+ * @public
51
+ */
52
+ export declare function splitLines(content: string): string[];
53
+ //# sourceMappingURL=normalize-line-endings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-line-endings.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-line-endings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Cross-Platform Line Ending Normalization
3
+ *
4
+ * Provides utilities for handling line endings across different platforms.
5
+ * Windows uses CRLF (\r\n), Unix/macOS uses LF (\n).
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ /**
10
+ * Normalize line endings to LF (\n)
11
+ *
12
+ * Converts Windows CRLF (\r\n) to Unix LF (\n) for consistent string processing.
13
+ * This is critical for:
14
+ * - Cross-platform string comparisons
15
+ * - File content parsing (split by '\n')
16
+ * - Test assertions that compare strings
17
+ *
18
+ * @param content - String with potentially mixed line endings
19
+ * @returns String with normalized LF line endings
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const windowsText = "line1\r\nline2\r\nline3";
24
+ * const normalized = normalizeLineEndings(windowsText);
25
+ * // Result: "line1\nline2\nline3"
26
+ *
27
+ * const lines = normalized.split('\n');
28
+ * // Works correctly on all platforms
29
+ * ```
30
+ *
31
+ * @public
32
+ */
33
+ export function normalizeLineEndings(content) {
34
+ return content.replace(/\r\n/g, '\n');
35
+ }
36
+ /**
37
+ * Split content by lines (cross-platform)
38
+ *
39
+ * Splits string by line breaks, handling both Windows (CRLF) and Unix (LF)
40
+ * line endings automatically.
41
+ *
42
+ * @param content - String to split into lines
43
+ * @returns Array of lines
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * // Works on all platforms
48
+ * const lines = splitLines("line1\r\nline2\nline3");
49
+ * // Result: ["line1", "line2", "line3"]
50
+ * ```
51
+ *
52
+ * @public
53
+ */
54
+ export function splitLines(content) {
55
+ return normalizeLineEndings(content).split('\n');
56
+ }
57
+ //# sourceMappingURL=normalize-line-endings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-line-endings.js","sourceRoot":"","sources":["../../src/utils/normalize-line-endings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gitignore-check.d.ts","sourceRoot":"","sources":["../../../src/utils/setup-checks/gitignore-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,oBAAoB,CAAC;AAI5B,qBAAa,mBAAoB,YAAW,UAAU;IACpD,QAAQ,CAAC,EAAE,eAAe;IAC1B,QAAQ,CAAC,IAAI,qBAAqB;IAE5B,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAmCjD,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IA4CrD,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA8DnD;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAMnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAY5B"}
1
+ {"version":3,"file":"gitignore-check.d.ts","sourceRoot":"","sources":["../../../src/utils/setup-checks/gitignore-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,oBAAoB,CAAC;AAI5B,qBAAa,mBAAoB,YAAW,UAAU;IACpD,QAAQ,CAAC,EAAE,eAAe;IAC1B,QAAQ,CAAC,IAAI,qBAAqB;IAE5B,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAkCjD,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IA4CrD,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA6DnD;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAMnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -7,6 +7,7 @@
7
7
  import { readFile, writeFile } from 'fs/promises';
8
8
  import { existsSync } from 'fs';
9
9
  import { join } from 'path';
10
+ import { splitLines } from '../normalize-line-endings.js';
10
11
  const STATE_FILE_ENTRY = '.vibe-validate-state.yaml';
11
12
  export class GitignoreSetupCheck {
12
13
  id = 'gitignore';
@@ -25,8 +26,7 @@ export class GitignoreSetupCheck {
25
26
  // Read .gitignore content
26
27
  const content = await readFile(gitignorePath, 'utf-8');
27
28
  // Check if state file entry exists (with flexible whitespace)
28
- const hasEntry = content
29
- .split('\n')
29
+ const hasEntry = splitLines(content)
30
30
  .some(line => line.trim() === STATE_FILE_ENTRY);
31
31
  if (!hasEntry) {
32
32
  return {
@@ -111,8 +111,7 @@ export class GitignoreSetupCheck {
111
111
  }
112
112
  // If .gitignore exists, add entry if missing
113
113
  const content = await readFile(gitignorePath, 'utf-8');
114
- const hasEntry = content
115
- .split('\n')
114
+ const hasEntry = splitLines(content)
116
115
  .some(line => line.trim() === STATE_FILE_ENTRY);
117
116
  if (hasEntry) {
118
117
  // Entry already exists (idempotent)
@@ -1 +1 @@
1
- {"version":3,"file":"gitignore-check.js","sourceRoot":"","sources":["../../../src/utils/setup-checks/gitignore-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitignore-check.js","sourceRoot":"","sources":["../../../src/utils/setup-checks/gitignore-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAS1D,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAErD,MAAM,OAAO,mBAAmB;IACrB,EAAE,GAAG,WAAW,CAAC;IACjB,IAAI,GAAG,iBAAiB,CAAC;IAElC,KAAK,CAAC,KAAK,CAAC,OAAoB;QAC9B,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAE9C,6BAA6B;QAC7B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,sBAAsB;gBAC/B,UAAU,EAAE,6BAA6B,gBAAgB,EAAE;aAC5D,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEvD,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;aACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,gBAAgB,CAAC,CAAC;QAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,sBAAsB,gBAAgB,QAAQ;gBACvD,UAAU,EAAE,OAAO,gBAAgB,gBAAgB;aACpD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,uDAAuD;SACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoB;QAChC,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAE9C,sBAAsB;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO;gBACL,WAAW,EAAE,yCAAyC;gBACtD,aAAa,EAAE,EAAE;gBACjB,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnD,OAAO;gBACL,WAAW,EAAE,2DAA2D;gBACxE,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,QAAQ;wBAChB,OAAO;qBACR;iBACF;aACF,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,OAAO;YACL,WAAW,EAAE,OAAO,gBAAgB,+BAA+B;YACnE,aAAa,EAAE,CAAC,YAAY,CAAC;YAC7B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAoB;QAC5B,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;QAExC,sBAAsB;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,yCAAyC;gBAClD,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,mCAAmC;gBAC5C,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnD,MAAM,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAEjD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,0CAA0C;gBACnD,YAAY,EAAE,CAAC,YAAY,CAAC;aAC7B,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;aACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,gBAAgB,CAAC,CAAC;QAElD,IAAI,QAAQ,EAAE,CAAC;YACb,oCAAoC;YACpC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,8CAA8C;gBACvD,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAExD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,SAAS,gBAAgB,gBAAgB;YAClD,YAAY,EAAE,CAAC,YAAY,CAAC;SAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,2BAA2B;QACjC,OAAO;EACT,gBAAgB;CACjB,CAAC;IACA,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,OAAe;QACzC,mCAAmC;QACnC,IAAI,cAAc,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,cAAc,IAAI,IAAI,CAAC;QACzB,CAAC;QAED,4BAA4B;QAC5B,cAAc,IAAI,sBAAsB,gBAAgB,IAAI,CAAC;QAE7D,OAAO,cAAc,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Template Discovery Utility
3
+ *
4
+ * Discovers and reads metadata from config templates in the config-templates/ directory.
5
+ */
6
+ /**
7
+ * Metadata for a config template
8
+ */
9
+ export interface TemplateMetadata {
10
+ /** Template filename (e.g., "typescript-nodejs.yaml") */
11
+ filename: string;
12
+ /** Display name extracted from header comment (e.g., "TypeScript for Node.js") */
13
+ displayName: string;
14
+ /** Short description extracted from template (e.g., "Node.js apps, APIs, and backend services") */
15
+ description: string;
16
+ }
17
+ /**
18
+ * Discover all available config templates
19
+ *
20
+ * Scans the config-templates/ directory and extracts metadata from each template.
21
+ * Results are sorted alphabetically by filename.
22
+ *
23
+ * @returns Array of template metadata
24
+ */
25
+ export declare function discoverTemplates(): TemplateMetadata[];
26
+ /**
27
+ * Format template list for CLI output
28
+ *
29
+ * Creates a human-readable list of templates with descriptions.
30
+ *
31
+ * Example output:
32
+ * ```
33
+ * • typescript-library.yaml - TypeScript libraries and npm packages
34
+ * • typescript-nodejs.yaml - Node.js apps, APIs, and backend services
35
+ * ```
36
+ *
37
+ * @returns Formatted template list (one template per line)
38
+ */
39
+ export declare function formatTemplateList(): string[];
40
+ //# sourceMappingURL=template-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/template-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,WAAW,EAAE,MAAM,CAAC;CACrB;AAoFD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,gBAAgB,EAAE,CAsBtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAa7C"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Template Discovery Utility
3
+ *
4
+ * Discovers and reads metadata from config templates in the config-templates/ directory.
5
+ */
6
+ import { readdirSync, readFileSync, existsSync } from 'fs';
7
+ import { join, dirname } from 'path';
8
+ import { fileURLToPath } from 'url';
9
+ import { splitLines } from './normalize-line-endings.js';
10
+ /**
11
+ * Get the absolute path to the config-templates directory
12
+ *
13
+ * This function works both in development (from source) and when installed as npm package.
14
+ *
15
+ * @returns Absolute path to config-templates directory
16
+ */
17
+ function getTemplatesDir() {
18
+ // In production (npm package), templates are at <package-root>/config-templates
19
+ // In development, templates are at <repo-root>/config-templates
20
+ const __filename = fileURLToPath(import.meta.url);
21
+ const __dirname = dirname(__filename);
22
+ // Try paths in order:
23
+ // 1. Development: packages/cli/src/utils/../../../config-templates
24
+ const devPath = join(__dirname, '../../../../config-templates');
25
+ if (existsSync(devPath)) {
26
+ return devPath;
27
+ }
28
+ // 2. Production: packages/cli/dist/utils/../../config-templates
29
+ const prodPath = join(__dirname, '../../../config-templates');
30
+ if (existsSync(prodPath)) {
31
+ return prodPath;
32
+ }
33
+ // 3. Fallback: assume monorepo root
34
+ const fallbackPath = join(process.cwd(), 'config-templates');
35
+ return fallbackPath;
36
+ }
37
+ /**
38
+ * Extract template metadata from YAML file
39
+ *
40
+ * Parses the header comment block to extract display name and description.
41
+ *
42
+ * Expected format:
43
+ * ```yaml
44
+ * # ============================================================================
45
+ * # CONFIGURATION TEMPLATE - vibe-validate for TypeScript Libraries
46
+ * # ============================================================================
47
+ * # ...
48
+ * # This template is optimized for TypeScript libraries and npm packages.
49
+ * ```
50
+ *
51
+ * @param filename - Template filename
52
+ * @param content - Template file content
53
+ * @returns Template metadata
54
+ */
55
+ function parseTemplateMetadata(filename, content) {
56
+ const lines = splitLines(content);
57
+ // Find the title line (line 2, format: "# CONFIGURATION TEMPLATE - <title>")
58
+ let displayName = filename.replace('.yaml', '');
59
+ const titleLine = lines.find(line => line.includes('CONFIGURATION TEMPLATE -'));
60
+ if (titleLine) {
61
+ const match = titleLine.match(/CONFIGURATION TEMPLATE\s*-\s*(.+)/);
62
+ if (match) {
63
+ displayName = match[1].trim();
64
+ // Remove "vibe-validate for " prefix if present
65
+ displayName = displayName.replace(/^vibe-validate for\s+/i, '');
66
+ }
67
+ }
68
+ // Find the description (first line starting with "# This template is")
69
+ let description = '';
70
+ const descLine = lines.find(line => line.trim().startsWith('# This template is'));
71
+ if (descLine) {
72
+ description = descLine.replace(/^#\s*This template is\s+/, '').replace(/\.$/, '').trim();
73
+ // Capitalize first letter
74
+ if (description.length > 0) {
75
+ description = description.charAt(0).toUpperCase() + description.slice(1);
76
+ }
77
+ }
78
+ return {
79
+ filename,
80
+ displayName,
81
+ description,
82
+ };
83
+ }
84
+ /**
85
+ * Discover all available config templates
86
+ *
87
+ * Scans the config-templates/ directory and extracts metadata from each template.
88
+ * Results are sorted alphabetically by filename.
89
+ *
90
+ * @returns Array of template metadata
91
+ */
92
+ export function discoverTemplates() {
93
+ const templatesDir = getTemplatesDir();
94
+ // Check if directory exists
95
+ if (!existsSync(templatesDir)) {
96
+ return [];
97
+ }
98
+ // Read all .yaml files
99
+ const files = readdirSync(templatesDir)
100
+ .filter(file => file.endsWith('.yaml'))
101
+ .sort();
102
+ // Parse metadata from each template
103
+ const templates = [];
104
+ for (const file of files) {
105
+ const filePath = join(templatesDir, file);
106
+ const content = readFileSync(filePath, 'utf-8');
107
+ templates.push(parseTemplateMetadata(file, content));
108
+ }
109
+ return templates;
110
+ }
111
+ /**
112
+ * Format template list for CLI output
113
+ *
114
+ * Creates a human-readable list of templates with descriptions.
115
+ *
116
+ * Example output:
117
+ * ```
118
+ * • typescript-library.yaml - TypeScript libraries and npm packages
119
+ * • typescript-nodejs.yaml - Node.js apps, APIs, and backend services
120
+ * ```
121
+ *
122
+ * @returns Formatted template list (one template per line)
123
+ */
124
+ export function formatTemplateList() {
125
+ const templates = discoverTemplates();
126
+ if (templates.length === 0) {
127
+ return ['No templates found'];
128
+ }
129
+ return templates.map(t => {
130
+ if (t.description) {
131
+ return `• ${t.filename} - ${t.description}`;
132
+ }
133
+ return `• ${t.filename}`;
134
+ });
135
+ }
136
+ //# sourceMappingURL=template-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-discovery.js","sourceRoot":"","sources":["../../src/utils/template-discovery.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-validate/cli",
3
- "version": "0.10.3",
3
+ "version": "0.11.0",
4
4
  "description": "Command-line interface for vibe-validate validation framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "files": [
19
19
  "dist",
20
+ "watch-pr-result.schema.json",
20
21
  "README.md"
21
22
  ],
22
23
  "keywords": [
@@ -53,22 +54,22 @@
53
54
  "access": "public"
54
55
  },
55
56
  "dependencies": {
56
- "commander": "^12.1.0",
57
57
  "chalk": "^5.3.0",
58
+ "commander": "^12.1.0",
58
59
  "yaml": "^2.6.1",
59
- "js-yaml": "^4.1.0",
60
- "@vibe-validate/core": "0.10.3",
61
- "@vibe-validate/config": "0.10.3",
62
- "@vibe-validate/git": "0.10.3"
60
+ "zod": "^3.24.1",
61
+ "zod-to-json-schema": "^3.24.6",
62
+ "@vibe-validate/config": "0.11.0",
63
+ "@vibe-validate/git": "0.11.0",
64
+ "@vibe-validate/core": "0.11.0"
63
65
  },
64
66
  "devDependencies": {
65
67
  "@types/node": "^20.14.8",
66
- "@types/js-yaml": "^4.0.9",
67
68
  "typescript": "^5.5.2",
68
69
  "vitest": "^2.0.5"
69
70
  },
70
71
  "scripts": {
71
- "build": "tsc",
72
+ "build": "tsc && node dist/scripts/generate-watch-pr-schema.js",
72
73
  "test": "vitest run",
73
74
  "test:watch": "vitest",
74
75
  "test:coverage": "vitest run --coverage",