@buoy-design/cli 0.2.4 → 0.2.6

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 (56) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bin.js +0 -0
  3. package/dist/commands/begin.d.ts.map +1 -1
  4. package/dist/commands/begin.js +2 -3
  5. package/dist/commands/begin.js.map +1 -1
  6. package/dist/commands/check.d.ts +1 -11
  7. package/dist/commands/check.d.ts.map +1 -1
  8. package/dist/commands/check.js +32 -74
  9. package/dist/commands/check.js.map +1 -1
  10. package/dist/commands/drift.d.ts.map +1 -1
  11. package/dist/commands/drift.js +42 -46
  12. package/dist/commands/drift.js.map +1 -1
  13. package/dist/commands/index.d.ts +0 -1
  14. package/dist/commands/index.d.ts.map +1 -1
  15. package/dist/commands/index.js +0 -1
  16. package/dist/commands/index.js.map +1 -1
  17. package/dist/commands/ship.js +13 -0
  18. package/dist/commands/ship.js.map +1 -1
  19. package/dist/commands/show.d.ts.map +1 -1
  20. package/dist/commands/show.js +85 -11
  21. package/dist/commands/show.js.map +1 -1
  22. package/dist/config/auto-detect.d.ts.map +1 -1
  23. package/dist/config/auto-detect.js +9 -1
  24. package/dist/config/auto-detect.js.map +1 -1
  25. package/dist/config/schema.d.ts +79 -0
  26. package/dist/config/schema.d.ts.map +1 -1
  27. package/dist/config/schema.js +10 -0
  28. package/dist/config/schema.js.map +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/output/formatters.d.ts +1 -0
  33. package/dist/output/formatters.d.ts.map +1 -1
  34. package/dist/output/formatters.js +125 -0
  35. package/dist/output/formatters.js.map +1 -1
  36. package/dist/output/pr-comment-preview.d.ts +12 -0
  37. package/dist/output/pr-comment-preview.d.ts.map +1 -0
  38. package/dist/output/pr-comment-preview.js +54 -0
  39. package/dist/output/pr-comment-preview.js.map +1 -0
  40. package/dist/output/reporters.d.ts +9 -0
  41. package/dist/output/reporters.d.ts.map +1 -1
  42. package/dist/output/reporters.js +28 -0
  43. package/dist/output/reporters.js.map +1 -1
  44. package/dist/services/drift-analysis.d.ts +0 -2
  45. package/dist/services/drift-analysis.d.ts.map +1 -1
  46. package/dist/services/drift-analysis.js +1 -2
  47. package/dist/services/drift-analysis.js.map +1 -1
  48. package/dist/utils/index.d.ts +2 -0
  49. package/dist/utils/index.d.ts.map +1 -0
  50. package/dist/utils/index.js +3 -0
  51. package/dist/utils/index.js.map +1 -0
  52. package/dist/utils/upgrade-hints.d.ts +14 -0
  53. package/dist/utils/upgrade-hints.d.ts.map +1 -0
  54. package/dist/utils/upgrade-hints.js +67 -0
  55. package/dist/utils/upgrade-hints.js.map +1 -0
  56. package/package.json +15 -15
@@ -0,0 +1,14 @@
1
+ export type HintContext = 'after-drift-found' | 'after-health-score' | 'after-check-fail' | 'after-scan' | 'after-fix';
2
+ /**
3
+ * Get a random applicable hint for the given context
4
+ * Returns undefined if no hints apply or user is already on paid plan
5
+ */
6
+ export declare function getUpgradeHint(context: HintContext): {
7
+ message: string;
8
+ cta: string;
9
+ } | undefined;
10
+ /**
11
+ * Format an upgrade hint for CLI output
12
+ */
13
+ export declare function formatUpgradeHint(context: HintContext): string | undefined;
14
+ //# sourceMappingURL=upgrade-hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-hints.d.ts","sourceRoot":"","sources":["../../src/utils/upgrade-hints.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,YAAY,GACZ,WAAW,CAAC;AA8ChB;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAWjG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAK1E"}
@@ -0,0 +1,67 @@
1
+ // apps/cli/src/utils/upgrade-hints.ts
2
+ import chalk from 'chalk';
3
+ import { isLoggedIn } from '../cloud/index.js';
4
+ const HINTS = {
5
+ 'after-drift-found': [
6
+ {
7
+ condition: () => !isLoggedIn(),
8
+ message: 'Get PR comments that catch drift before it ships',
9
+ cta: 'buoy ship login',
10
+ },
11
+ ],
12
+ 'after-health-score': [
13
+ {
14
+ condition: () => !isLoggedIn(),
15
+ message: 'Track health score trends over time',
16
+ cta: 'buoy ship login',
17
+ },
18
+ ],
19
+ 'after-check-fail': [
20
+ {
21
+ condition: () => !isLoggedIn(),
22
+ message: 'Block PRs with drift automatically',
23
+ cta: 'buoy ship github',
24
+ },
25
+ ],
26
+ 'after-scan': [
27
+ {
28
+ condition: () => !isLoggedIn(),
29
+ message: 'Share scan results with your team',
30
+ cta: 'buoy ship login',
31
+ },
32
+ ],
33
+ 'after-fix': [
34
+ {
35
+ condition: () => !isLoggedIn(),
36
+ message: 'Auto-fix suggestions in PRs',
37
+ cta: 'buoy ship login',
38
+ },
39
+ ],
40
+ };
41
+ /**
42
+ * Get a random applicable hint for the given context
43
+ * Returns undefined if no hints apply or user is already on paid plan
44
+ */
45
+ export function getUpgradeHint(context) {
46
+ const contextHints = HINTS[context];
47
+ if (!contextHints)
48
+ return undefined;
49
+ const applicable = contextHints.filter(h => h.condition());
50
+ if (applicable.length === 0)
51
+ return undefined;
52
+ // Return random applicable hint
53
+ const hint = applicable[Math.floor(Math.random() * applicable.length)];
54
+ if (!hint)
55
+ return undefined;
56
+ return { message: hint.message, cta: hint.cta };
57
+ }
58
+ /**
59
+ * Format an upgrade hint for CLI output
60
+ */
61
+ export function formatUpgradeHint(context) {
62
+ const hintData = getUpgradeHint(context);
63
+ if (!hintData)
64
+ return undefined;
65
+ return chalk.dim(`Tip: ${hintData.message} → ${chalk.cyan(hintData.cta)}`);
66
+ }
67
+ //# sourceMappingURL=upgrade-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-hints.js","sourceRoot":"","sources":["../../src/utils/upgrade-hints.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAe/C,MAAM,KAAK,GAAuC;IAChD,mBAAmB,EAAE;QACnB;YACE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE;YAC9B,OAAO,EAAE,kDAAkD;YAC3D,GAAG,EAAE,iBAAiB;SACvB;KACF;IACD,oBAAoB,EAAE;QACpB;YACE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE;YAC9B,OAAO,EAAE,qCAAqC;YAC9C,GAAG,EAAE,iBAAiB;SACvB;KACF;IACD,kBAAkB,EAAE;QAClB;YACE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE;YAC9B,OAAO,EAAE,oCAAoC;YAC7C,GAAG,EAAE,kBAAkB;SACxB;KACF;IACD,YAAY,EAAE;QACZ;YACE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE;YAC9B,OAAO,EAAE,mCAAmC;YAC5C,GAAG,EAAE,iBAAiB;SACvB;KACF;IACD,WAAW,EAAE;QACX;YACE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE;YAC9B,OAAO,EAAE,6BAA6B;YACtC,GAAG,EAAE,iBAAiB;SACvB;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAoB;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9C,gCAAgC;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-design/cli",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "Buoy CLI - Design drift detection for the AI era",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -31,20 +31,8 @@
31
31
  },
32
32
  "main": "./dist/index.js",
33
33
  "types": "./dist/index.d.ts",
34
- "scripts": {
35
- "build": "tsc",
36
- "dev": "tsc --watch",
37
- "typecheck": "tsc --noEmit",
38
- "clean": "rm -rf dist",
39
- "start": "node ./dist/bin.js",
40
- "test": "vitest run",
41
- "test:watch": "vitest"
42
- },
43
34
  "dependencies": {
44
35
  "@anthropic-ai/sdk": "^0.71.2",
45
- "@buoy-design/core": "workspace:*",
46
- "@buoy-design/db": "workspace:*",
47
- "@buoy-design/scanners": "workspace:*",
48
36
  "@inquirer/prompts": "^8.1.0",
49
37
  "@octokit/rest": "^21.0.0",
50
38
  "chalk": "^5.3.0",
@@ -56,10 +44,22 @@
56
44
  "ora": "^8.1.1",
57
45
  "yaml": "^2.7.0",
58
46
  "zod": "^3.24.1",
59
- "zod-validation-error": "^5.0.0"
47
+ "zod-validation-error": "^5.0.0",
48
+ "@buoy-design/core": "0.1.10",
49
+ "@buoy-design/db": "0.1.4",
50
+ "@buoy-design/scanners": "0.1.8"
60
51
  },
61
52
  "devDependencies": {
62
53
  "@types/node": "^22.10.2",
63
54
  "typescript": "^5.7.2"
55
+ },
56
+ "scripts": {
57
+ "build": "tsc",
58
+ "dev": "tsc --watch",
59
+ "typecheck": "tsc --noEmit",
60
+ "clean": "rm -rf dist",
61
+ "start": "node ./dist/bin.js",
62
+ "test": "vitest run",
63
+ "test:watch": "vitest"
64
64
  }
65
- }
65
+ }