@vibe-validate/cli 0.9.7 → 0.9.9

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 (39) hide show
  1. package/README.md +56 -23
  2. package/dist/commands/config.d.ts.map +1 -1
  3. package/dist/commands/config.js +16 -21
  4. package/dist/commands/config.js.map +1 -1
  5. package/dist/commands/doctor.d.ts.map +1 -1
  6. package/dist/commands/doctor.js +166 -3
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/generate-workflow.d.ts.map +1 -1
  9. package/dist/commands/generate-workflow.js +20 -18
  10. package/dist/commands/generate-workflow.js.map +1 -1
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +101 -17
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/pre-commit.d.ts.map +1 -1
  15. package/dist/commands/pre-commit.js +21 -20
  16. package/dist/commands/pre-commit.js.map +1 -1
  17. package/dist/commands/state.d.ts.map +1 -1
  18. package/dist/commands/state.js +19 -28
  19. package/dist/commands/state.js.map +1 -1
  20. package/dist/commands/sync-check.d.ts +1 -1
  21. package/dist/commands/sync-check.d.ts.map +1 -1
  22. package/dist/commands/sync-check.js +19 -5
  23. package/dist/commands/sync-check.js.map +1 -1
  24. package/dist/commands/validate.d.ts.map +1 -1
  25. package/dist/commands/validate.js +11 -6
  26. package/dist/commands/validate.js.map +1 -1
  27. package/dist/utils/check-validation.d.ts +18 -0
  28. package/dist/utils/check-validation.d.ts.map +1 -0
  29. package/dist/utils/check-validation.js +78 -0
  30. package/dist/utils/check-validation.js.map +1 -0
  31. package/dist/utils/context-detector.d.ts +3 -3
  32. package/dist/utils/context-detector.d.ts.map +1 -1
  33. package/dist/utils/context-detector.js +11 -7
  34. package/dist/utils/context-detector.js.map +1 -1
  35. package/dist/utils/runner-adapter.d.ts +1 -1
  36. package/dist/utils/runner-adapter.d.ts.map +1 -1
  37. package/dist/utils/runner-adapter.js +11 -22
  38. package/dist/utils/runner-adapter.js.map +1 -1
  39. package/package.json +7 -5
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Validation Status Checker
3
+ *
4
+ * Provides programmatic interface to check if validation has already passed
5
+ * for the current working tree state, without exposing state file implementation details.
6
+ */
7
+ import type { VibeValidateConfig } from '@vibe-validate/config';
8
+ /**
9
+ * Check validation status for current working tree
10
+ *
11
+ * Exit codes:
12
+ * 0 = Validation already passed (skip validation)
13
+ * 1 = Validation not passed or needed (run validation)
14
+ * 2 = State file missing (run validation)
15
+ * 3 = Git tree hash mismatch (run validation)
16
+ */
17
+ export declare function checkValidationStatus(config: VibeValidateConfig): Promise<void>;
18
+ //# sourceMappingURL=check-validation.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Validation Status Checker
3
+ *
4
+ * Provides programmatic interface to check if validation has already passed
5
+ * for the current working tree state, without exposing state file implementation details.
6
+ */
7
+ import { existsSync, readFileSync } from 'fs';
8
+ import { getGitTreeHash } from '@vibe-validate/git';
9
+ import chalk from 'chalk';
10
+ import yaml from 'yaml';
11
+ /**
12
+ * Check validation status for current working tree
13
+ *
14
+ * Exit codes:
15
+ * 0 = Validation already passed (skip validation)
16
+ * 1 = Validation not passed or needed (run validation)
17
+ * 2 = State file missing (run validation)
18
+ * 3 = Git tree hash mismatch (run validation)
19
+ */
20
+ export async function checkValidationStatus(config) {
21
+ const stateFilePath = config.validation.caching?.statePath || '.vibe-validate-state.yaml';
22
+ // Check if state file exists
23
+ if (!existsSync(stateFilePath)) {
24
+ console.log(chalk.yellow('⚠️ Validation state file not found'));
25
+ console.log(chalk.gray(` Expected: ${stateFilePath}`));
26
+ console.log(chalk.blue('\n💡 Run validation:'), chalk.white('npx vibe-validate validate'));
27
+ process.exit(2);
28
+ }
29
+ // Get current tree hash
30
+ const currentTreeHash = await getGitTreeHash();
31
+ // Read state file
32
+ let state;
33
+ try {
34
+ const content = readFileSync(stateFilePath, 'utf8');
35
+ // Try parsing as YAML first (CLI default), fallback to JSON
36
+ try {
37
+ state = yaml.parse(content);
38
+ }
39
+ catch {
40
+ state = JSON.parse(content);
41
+ }
42
+ }
43
+ catch (error) {
44
+ console.error(chalk.red('❌ Failed to parse validation state file'));
45
+ console.error(chalk.gray(` File: ${stateFilePath}`));
46
+ console.error(chalk.gray(` Error: ${error instanceof Error ? error.message : String(error)}`));
47
+ process.exit(2);
48
+ }
49
+ // Check if tree hash matches
50
+ if (state.treeHash !== currentTreeHash) {
51
+ console.log(chalk.yellow('⚠️ Working tree has changed since last validation'));
52
+ console.log(chalk.gray(` Last validated: ${state.treeHash.substring(0, 12)}...`));
53
+ console.log(chalk.gray(` Current state: ${currentTreeHash.substring(0, 12)}...`));
54
+ console.log(chalk.blue('\n💡 Run validation:'), chalk.white('npx vibe-validate validate'));
55
+ process.exit(3);
56
+ }
57
+ // Check if validation passed
58
+ if (!state.passed) {
59
+ console.log(chalk.red('❌ Last validation failed'));
60
+ console.log(chalk.gray(` Tree hash: ${state.treeHash.substring(0, 12)}...`));
61
+ console.log(chalk.gray(` Last validated: ${state.timestamp}`));
62
+ if (state.failedStep) {
63
+ console.log(chalk.gray(` Failed step: ${state.failedStep}`));
64
+ }
65
+ console.log(chalk.blue('\n💡 Fix errors and run validation:'), chalk.white('npx vibe-validate validate'));
66
+ process.exit(1);
67
+ }
68
+ // Validation passed!
69
+ console.log(chalk.green('✅ Validation already passed for current working tree'));
70
+ console.log(chalk.gray(` Tree hash: ${state.treeHash.substring(0, 12)}...`));
71
+ console.log(chalk.gray(` Last validated: ${state.timestamp}`));
72
+ if (state.phases) {
73
+ const totalSteps = state.phases.reduce((sum, phase) => sum + (phase.steps?.length || 0), 0);
74
+ console.log(chalk.gray(` Phases: ${state.phases.length}, Steps: ${totalSteps}`));
75
+ }
76
+ process.exit(0);
77
+ }
78
+ //# sourceMappingURL=check-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-validation.js","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"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"}
@@ -17,10 +17,10 @@ export interface AgentContext {
17
17
  */
18
18
  export declare function detectContext(): AgentContext;
19
19
  /**
20
- * Get recommended output format based on context
20
+ * Determine if verbose output should be used based on context
21
21
  *
22
22
  * @param context Agent context
23
- * @returns Recommended output format
23
+ * @returns True if verbose output is recommended, false for minimal
24
24
  */
25
- export declare function getRecommendedFormat(context: AgentContext): 'human' | 'yaml' | 'json';
25
+ export declare function shouldBeVerbose(context: AgentContext): boolean;
26
26
  //# sourceMappingURL=context-detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-detector.d.ts","sourceRoot":"","sources":["../../src/utils/context-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,YAAY,CAuD5C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAcrF"}
1
+ {"version":3,"file":"context-detector.d.ts","sourceRoot":"","sources":["../../src/utils/context-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,YAAY,CAuD5C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAkB9D"}
@@ -60,21 +60,25 @@ export function detectContext() {
60
60
  };
61
61
  }
62
62
  /**
63
- * Get recommended output format based on context
63
+ * Determine if verbose output should be used based on context
64
64
  *
65
65
  * @param context Agent context
66
- * @returns Recommended output format
66
+ * @returns True if verbose output is recommended, false for minimal
67
67
  */
68
- export function getRecommendedFormat(context) {
68
+ export function shouldBeVerbose(context) {
69
+ // Agents (Claude Code, Cursor, etc.) prefer minimal output
69
70
  if (context.isAgent) {
70
- return 'yaml'; // Agent-friendly structured format
71
+ return false;
71
72
  }
73
+ // CI environments prefer minimal output
72
74
  if (context.isCI) {
73
- return 'json'; // Machine-readable for CI/CD pipelines
75
+ return false;
74
76
  }
77
+ // Interactive terminals can handle verbose output
75
78
  if (context.isInteractive) {
76
- return 'human'; // Colorful, verbose output for terminals
79
+ return true;
77
80
  }
78
- return 'human'; // Default fallback
81
+ // Default to minimal for non-interactive contexts
82
+ return false;
79
83
  }
80
84
  //# sourceMappingURL=context-detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-detector.js","sourceRoot":"","sources":["../../src/utils/context-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,wCAAwC;IACxC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,aAAa;YACxB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,OAAO;YAClB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;QACxC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK;KAC7C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAqB;IACxD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,CAAC,mCAAmC;IACpD,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,CAAC,uCAAuC;IACxD,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,CAAC,yCAAyC;IAC3D,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,mBAAmB;AACrC,CAAC"}
1
+ {"version":3,"file":"context-detector.js","sourceRoot":"","sources":["../../src/utils/context-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,wCAAwC;IACxC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,aAAa;YACxB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,OAAO;YAClB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;QACxC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK;KAC7C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAqB;IACnD,2DAA2D;IAC3D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wCAAwC;IACxC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kDAAkD;IAClD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kDAAkD;IAClD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -8,7 +8,7 @@ import type { ValidationConfig } from '@vibe-validate/core';
8
8
  import type { AgentContext } from './context-detector.js';
9
9
  export interface RunnerOptions {
10
10
  force?: boolean;
11
- format: 'human' | 'yaml' | 'json';
11
+ verbose: boolean;
12
12
  context: AgentContext;
13
13
  }
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"runner-adapter.d.ts","sourceRoot":"","sources":["../../src/utils/runner-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAA4D,MAAM,qBAAqB,CAAC;AACtH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,aAAa,GACrB,gBAAgB,CA0BlB"}
1
+ {"version":3,"file":"runner-adapter.d.ts","sourceRoot":"","sources":["../../src/utils/runner-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAA4D,MAAM,qBAAqB,CAAC;AACtH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,aAAa,GACrB,gBAAgB,CAuBlB"}
@@ -19,26 +19,24 @@ export function createRunnerConfig(config, options) {
19
19
  envVars[key] = value;
20
20
  }
21
21
  }
22
- // Add force flag to environment if set
23
- if (options.force) {
24
- envVars.VIBE_VALIDATE_FORCE = '1';
25
- }
26
- // Choose callbacks based on output format
27
- const callbacks = options.format === 'human'
28
- ? createHumanCallbacks()
29
- : createAgentCallbacks(options.format);
22
+ // Choose callbacks based on verbosity
23
+ const callbacks = options.verbose
24
+ ? createVerboseCallbacks()
25
+ : createMinimalCallbacks();
30
26
  return {
31
27
  phases: config.validation?.phases || [],
32
28
  enableFailFast: true, // Default to fail-fast (individual phases can override)
29
+ forceRun: options.force, // Pass force flag to runner
30
+ verbose: options.verbose, // Pass verbose flag to runner for output streaming
33
31
  env: envVars,
34
32
  stateFilePath: '.vibe-validate-state.yaml',
35
33
  ...callbacks,
36
34
  };
37
35
  }
38
36
  /**
39
- * Create human-friendly console callbacks (colorful, verbose)
37
+ * Create verbose console callbacks (colorful, detailed progress)
40
38
  */
41
- function createHumanCallbacks() {
39
+ function createVerboseCallbacks() {
42
40
  return {
43
41
  onPhaseStart: (phase) => {
44
42
  console.log(chalk.blue(`\n🔄 Running phase: ${phase.name}`));
@@ -68,19 +66,10 @@ function createHumanCallbacks() {
68
66
  };
69
67
  }
70
68
  /**
71
- * Create agent-friendly callbacks (minimal, structured)
69
+ * Create minimal callbacks (agent-friendly YAML output)
72
70
  */
73
- function createAgentCallbacks(format) {
74
- if (format === 'json') {
75
- // JSON format: output structured data only at the end
76
- return {
77
- onPhaseStart: () => { }, // Silent
78
- onPhaseComplete: () => { }, // Silent
79
- onStepStart: () => { }, // Silent
80
- onStepComplete: () => { }, // Silent
81
- };
82
- }
83
- // YAML format: minimal progress output
71
+ function createMinimalCallbacks() {
72
+ // Minimal YAML-structured progress output
84
73
  return {
85
74
  onPhaseStart: (phase) => {
86
75
  console.log(`phase_start: ${phase.name}`);
@@ -1 +1 @@
1
- {"version":3,"file":"runner-adapter.js","sourceRoot":"","sources":["../../src/utils/runner-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-adapter.js","sourceRoot":"","sources":["../../src/utils/runner-adapter.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.9.7",
3
+ "version": "0.9.9",
4
4
  "description": "Command-line interface for vibe-validate validation framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -61,15 +61,17 @@
61
61
  "access": "public"
62
62
  },
63
63
  "dependencies": {
64
- "@vibe-validate/core": "^0.9.0",
65
- "@vibe-validate/git": "^0.9.0",
66
- "@vibe-validate/config": "^0.9.0",
64
+ "@vibe-validate/core": "workspace:*",
65
+ "@vibe-validate/git": "workspace:*",
66
+ "@vibe-validate/config": "workspace:*",
67
67
  "commander": "^12.1.0",
68
68
  "chalk": "^5.3.0",
69
- "yaml": "^2.6.1"
69
+ "yaml": "^2.6.1",
70
+ "js-yaml": "^4.1.0"
70
71
  },
71
72
  "devDependencies": {
72
73
  "@types/node": "^20.14.8",
74
+ "@types/js-yaml": "^4.0.9",
73
75
  "typescript": "^5.5.2",
74
76
  "vitest": "^2.0.5"
75
77
  }