@buoy-design/cli 0.2.20 → 0.2.21

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 (45) hide show
  1. package/README.md +4 -4
  2. package/dist/commands/ahoy.d.ts +14 -0
  3. package/dist/commands/ahoy.d.ts.map +1 -0
  4. package/dist/commands/ahoy.js +355 -0
  5. package/dist/commands/ahoy.js.map +1 -0
  6. package/dist/commands/begin.js +5 -5
  7. package/dist/commands/begin.js.map +1 -1
  8. package/dist/commands/billing.js +4 -4
  9. package/dist/commands/check.js +1 -1
  10. package/dist/commands/dock.d.ts.map +1 -1
  11. package/dist/commands/dock.js +44 -35
  12. package/dist/commands/dock.js.map +1 -1
  13. package/dist/commands/index.d.ts +1 -1
  14. package/dist/commands/index.js +2 -2
  15. package/dist/commands/link.js +1 -1
  16. package/dist/commands/plans.js +1 -1
  17. package/dist/commands/plans.js.map +1 -1
  18. package/dist/commands/sync.js +1 -1
  19. package/dist/commands/whoami.js +2 -2
  20. package/dist/index.js +5 -5
  21. package/dist/index.js.map +1 -1
  22. package/dist/integrations/github-formatter.js +2 -2
  23. package/dist/integrations/github-formatter.js.map +1 -1
  24. package/dist/output/formatters.js +1 -1
  25. package/dist/output/pr-comment-preview.js +1 -1
  26. package/dist/services/architect.js +1 -1
  27. package/dist/services/architect.js.map +1 -1
  28. package/dist/services/drift-analysis.d.ts +6 -0
  29. package/dist/services/drift-analysis.d.ts.map +1 -1
  30. package/dist/services/drift-analysis.js +36 -2
  31. package/dist/services/drift-analysis.js.map +1 -1
  32. package/dist/store/local-store.d.ts +19 -14
  33. package/dist/store/local-store.d.ts.map +1 -1
  34. package/dist/store/local-store.js +59 -341
  35. package/dist/store/local-store.js.map +1 -1
  36. package/dist/templates/agents.d.ts +22 -0
  37. package/dist/templates/agents.d.ts.map +1 -0
  38. package/dist/templates/agents.js +264 -0
  39. package/dist/templates/agents.js.map +1 -0
  40. package/dist/utils/upgrade-hints.js +5 -5
  41. package/dist/wizard/ci-generator.js +3 -3
  42. package/dist/wizard/ci-generator.js.map +1 -1
  43. package/package.json +17 -18
  44. package/LICENSE +0 -21
  45. package/assets/commands/contribution-loop.md +0 -195
@@ -1 +1 @@
1
- {"version":3,"file":"drift-analysis.d.ts","sourceRoot":"","sources":["../../src/services/drift-analysis.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAmB,SAAS,EAA6B,MAAM,uBAAuB,CAAC;AAK9F,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gDAAgD;IAChD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iCAAiC;IACjC,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mCAAmC;IACnC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAYD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,QAAQ,GAAG,MAAM,GACxB,OAAO,CAIT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAIzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAC1C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACpC,WAAW,EAAE,CAqBf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,EAAE,QAAQ,GACpB,WAAW,EAAE,CAGf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EAAE,EACrB,IAAI,EAAE,MAAM,GACX,WAAW,EAAE,CAEf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EAAE,EACrB,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,GACzC,WAAW,EAAE,CAMf;AAED;;GAEG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC;;OAEG;IACG,OAAO,CACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC;IA+G/B;;OAEG;YACW,sBAAsB;CA0CrC"}
1
+ {"version":3,"file":"drift-analysis.d.ts","sourceRoot":"","sources":["../../src/services/drift-analysis.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAmB,SAAS,EAA6B,MAAM,uBAAuB,CAAC;AAY9F,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gDAAgD;IAChD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iCAAiC;IACjC,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mCAAmC;IACnC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAYD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,QAAQ,GAAG,MAAM,GACxB,OAAO,CAIT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAIzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAC1C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACpC,WAAW,EAAE,CAqBf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,EAAE,QAAQ,GACpB,WAAW,EAAE,CAGf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EAAE,EACrB,IAAI,EAAE,MAAM,GACX,WAAW,EAAE,CAEf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EAAE,EACrB,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,GACzC,WAAW,EAAE,CAMf;AAED;;GAEG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC;;OAEG;IACG,OAAO,CACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC;IAqK/B;;OAEG;YACW,sBAAsB;CA0CrC"}
@@ -11,7 +11,7 @@
11
11
  import { ScanOrchestrator } from "../scan/orchestrator.js";
12
12
  import { getSeverityWeight } from "@buoy-design/core";
13
13
  import { TailwindScanner, extractStaticClassStrings } from "@buoy-design/scanners";
14
- import { detectRepeatedPatterns } from "@buoy-design/core";
14
+ import { detectRepeatedPatterns, checkVariantConsistency, checkExampleCompliance, detectTokenUtilities, checkTokenUtilityUsage, } from "@buoy-design/core";
15
15
  import { glob } from "glob";
16
16
  import { readFile } from "fs/promises";
17
17
  /**
@@ -108,7 +108,7 @@ export class DriftAnalysisService {
108
108
  * Run full drift analysis pipeline
109
109
  */
110
110
  async analyze(options = {}) {
111
- const { onProgress, includeBaseline, minSeverity, filterType, cache, experimental } = options;
111
+ const { onProgress, includeBaseline, minSeverity, filterType, cache, experimental, checkVariants, checkTokenUtilities, checkExamples, } = options;
112
112
  // Step 1: Scan components
113
113
  onProgress?.("Scanning components...");
114
114
  const orchestrator = new ScanOrchestrator(this.config, process.cwd(), {
@@ -158,6 +158,40 @@ export class DriftAnalysisService {
158
158
  }
159
159
  }
160
160
  }
161
+ // Step 2.7: Phase 4.1 - Cross-Variant Consistency Checking
162
+ const variantCheckEnabled = checkVariants ?? this.config.drift?.types?.["value-divergence"]?.checkVariants;
163
+ if (variantCheckEnabled) {
164
+ onProgress?.("Checking variant consistency...");
165
+ const variantDrifts = checkVariantConsistency(components);
166
+ if (variantDrifts.length > 0) {
167
+ drifts.push(...applySeverityOverrides(variantDrifts, this.config.drift.severity));
168
+ onProgress?.(`Found ${variantDrifts.length} variant inconsistencies`);
169
+ }
170
+ }
171
+ // Step 2.8: Phase 4.2 - Token Utility Function Detection
172
+ const tokenUtilityCheckEnabled = checkTokenUtilities ?? this.config.drift?.types?.["hardcoded-value"]?.checkUtilities;
173
+ if (tokenUtilityCheckEnabled) {
174
+ onProgress?.("Detecting token utility functions...");
175
+ const utilityAnalysis = detectTokenUtilities(components);
176
+ if (utilityAnalysis.availableUtilities.length > 0) {
177
+ onProgress?.(`Found ${utilityAnalysis.availableUtilities.length} token utilities: ${utilityAnalysis.availableUtilities.map((u) => u.name).join(", ")}`);
178
+ const utilityDrifts = checkTokenUtilityUsage(components, utilityAnalysis);
179
+ if (utilityDrifts.length > 0) {
180
+ drifts.push(...applySeverityOverrides(utilityDrifts, this.config.drift.severity));
181
+ onProgress?.(`Found ${utilityDrifts.length} hardcoded values that could use utilities`);
182
+ }
183
+ }
184
+ }
185
+ // Step 2.9: Phase 4.3 - Example Code vs Production Code Analysis
186
+ const exampleCheckEnabled = checkExamples ?? this.config.drift?.types?.["missing-documentation"]?.checkExamples;
187
+ if (exampleCheckEnabled) {
188
+ onProgress?.("Analyzing example code compliance...");
189
+ const exampleDrifts = checkExampleCompliance(components);
190
+ if (exampleDrifts.length > 0) {
191
+ drifts.push(...applySeverityOverrides(exampleDrifts, this.config.drift.severity));
192
+ onProgress?.(`Found ${exampleDrifts.length} example/documentation issues`);
193
+ }
194
+ }
161
195
  // Step 3: Apply severity filter (before other filters for efficiency)
162
196
  if (minSeverity) {
163
197
  drifts = filterBySeverity(drifts, minSeverity);
@@ -1 +1 @@
1
- {"version":3,"file":"drift-analysis.js","sourceRoot":"","sources":["../../src/services/drift-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drift-analysis.js","sourceRoot":"","sources":["../../src/services/drift-analysis.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  /**
2
- * LocalScanStore - SQLite-based implementation of ScanStore.
3
- * Uses the @buoy-design/db package for persistence.
2
+ * LocalScanStore - Stub implementation.
3
+ *
4
+ * Local history has been removed in favor of cloud storage.
5
+ * This stub exists for API compatibility - use `buoy ahoy login` for persistent history.
4
6
  */
5
7
  import type { Component, DesignToken, DriftSignal } from '@buoy-design/core';
6
8
  import type { ScanStore, StoredProject, StoredScan, ScanResults, ScanDiff, ScanSnapshot, ProjectConfig } from './types.js';
@@ -8,24 +10,27 @@ export interface LocalStoreConfig {
8
10
  dbPath?: string;
9
11
  inMemory?: boolean;
10
12
  }
13
+ /**
14
+ * Stub implementation that doesn't persist data.
15
+ * Use CloudScanStore (via `buoy ahoy login`) for persistent history.
16
+ */
11
17
  export declare class LocalScanStore implements ScanStore {
12
- private db;
13
- private closeDb;
14
- constructor(config?: LocalStoreConfig);
18
+ private projects;
19
+ private scansData;
20
+ constructor(_config?: LocalStoreConfig);
15
21
  getOrCreateProject(name: string, config?: ProjectConfig): Promise<StoredProject>;
16
22
  getProject(projectId: string): Promise<StoredProject | null>;
17
23
  startScan(projectId: string, sources: string[]): Promise<StoredScan>;
18
- completeScan(scanId: string, results: ScanResults): Promise<void>;
24
+ completeScan(scanId: string, _results: ScanResults): Promise<void>;
19
25
  failScan(scanId: string, error: string): Promise<void>;
20
- getLatestScan(projectId: string): Promise<StoredScan | null>;
21
- getScans(projectId: string, limit?: number): Promise<StoredScan[]>;
26
+ getLatestScan(_projectId: string): Promise<StoredScan | null>;
27
+ getScans(_projectId: string, _limit?: number): Promise<StoredScan[]>;
22
28
  getScan(scanId: string): Promise<StoredScan | null>;
23
- getComponents(scanId: string): Promise<Component[]>;
24
- getTokens(scanId: string): Promise<DesignToken[]>;
25
- getDriftSignals(scanId: string): Promise<DriftSignal[]>;
26
- getSnapshots(projectId: string, limit?: number): Promise<ScanSnapshot[]>;
27
- compareScan(currentScanId: string, previousScanId: string): Promise<ScanDiff>;
29
+ getComponents(_scanId: string): Promise<Component[]>;
30
+ getTokens(_scanId: string): Promise<DesignToken[]>;
31
+ getDriftSignals(_scanId: string): Promise<DriftSignal[]>;
32
+ getSnapshots(_projectId: string, _limit?: number): Promise<ScanSnapshot[]>;
33
+ compareScan(_currentScanId: string, _previousScanId: string): Promise<ScanDiff>;
28
34
  close(): void;
29
- private mapScan;
30
35
  }
31
36
  //# sourceMappingURL=local-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/store/local-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,GAAE,gBAAqB;IASnC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAiDhF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsB5D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBpE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiHjE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAa5D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAW9D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAYnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAmBnD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAmBjD,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoBvD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBpE,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4DnF,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,OAAO;CAahB"}
1
+ {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/store/local-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,SAAS,CAAiC;gBAEtC,OAAO,GAAE,gBAAqB;IAIpC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBhF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAO5D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAepE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI7D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIpE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAInD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIpD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAIlD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAIxD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1E,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQrF,KAAK,IAAI,IAAI;CAGd"}
@@ -1,56 +1,26 @@
1
1
  /**
2
- * LocalScanStore - SQLite-based implementation of ScanStore.
3
- * Uses the @buoy-design/db package for persistence.
2
+ * LocalScanStore - Stub implementation.
3
+ *
4
+ * Local history has been removed in favor of cloud storage.
5
+ * This stub exists for API compatibility - use `buoy ahoy login` for persistent history.
6
+ */
7
+ /**
8
+ * Stub implementation that doesn't persist data.
9
+ * Use CloudScanStore (via `buoy ahoy login`) for persistent history.
4
10
  */
5
- import { setupDb, projects, scans, components, tokens, driftSignals, snapshots, } from '@buoy-design/db';
6
- import { eq, desc } from 'drizzle-orm';
7
- import { randomUUID } from 'crypto';
8
11
  export class LocalScanStore {
9
- db;
10
- closeDb;
11
- constructor(config = {}) {
12
- const { db, close } = setupDb({
13
- path: config.dbPath,
14
- inMemory: config.inMemory,
15
- });
16
- this.db = db;
17
- this.closeDb = close;
12
+ projects = new Map();
13
+ scansData = new Map();
14
+ constructor(_config = {}) {
15
+ // No-op - no local persistence
18
16
  }
19
17
  async getOrCreateProject(name, config) {
20
- // Try to find existing project
21
- const existing = await this.db
22
- .select()
23
- .from(projects)
24
- .where(eq(projects.name, name))
25
- .limit(1);
26
- if (existing.length > 0 && existing[0]) {
27
- const p = existing[0];
28
- return {
29
- id: p.id,
30
- name: p.name,
31
- repoUrl: p.repoUrl ?? undefined,
32
- figmaFileKeys: p.figmaFileKeys ? JSON.parse(p.figmaFileKeys) : undefined,
33
- storybookUrl: p.storybookUrl ?? undefined,
34
- config: p.config ? JSON.parse(p.config) : undefined,
35
- createdAt: p.createdAt,
36
- updatedAt: p.updatedAt,
37
- };
38
- }
39
- // Create new project
18
+ const existing = this.projects.get(name);
19
+ if (existing)
20
+ return existing;
40
21
  const now = new Date();
41
- const id = `proj_${randomUUID().slice(0, 8)}`;
42
- await this.db.insert(projects).values({
43
- id,
44
- name,
45
- repoUrl: config?.repoUrl,
46
- figmaFileKeys: config?.figmaFileKeys ? JSON.stringify(config.figmaFileKeys) : null,
47
- storybookUrl: config?.storybookUrl,
48
- config: config?.config ? JSON.stringify(config.config) : null,
49
- createdAt: now,
50
- updatedAt: now,
51
- });
52
- return {
53
- id,
22
+ const project = {
23
+ id: `proj_${Math.random().toString(36).slice(2, 10)}`,
54
24
  name,
55
25
  repoUrl: config?.repoUrl,
56
26
  figmaFileKeys: config?.figmaFileKeys,
@@ -59,326 +29,74 @@ export class LocalScanStore {
59
29
  createdAt: now,
60
30
  updatedAt: now,
61
31
  };
32
+ this.projects.set(name, project);
33
+ return project;
62
34
  }
63
35
  async getProject(projectId) {
64
- const result = await this.db
65
- .select()
66
- .from(projects)
67
- .where(eq(projects.id, projectId))
68
- .limit(1);
69
- if (result.length === 0 || !result[0])
70
- return null;
71
- const p = result[0];
72
- return {
73
- id: p.id,
74
- name: p.name,
75
- repoUrl: p.repoUrl ?? undefined,
76
- figmaFileKeys: p.figmaFileKeys ? JSON.parse(p.figmaFileKeys) : undefined,
77
- storybookUrl: p.storybookUrl ?? undefined,
78
- config: p.config ? JSON.parse(p.config) : undefined,
79
- createdAt: p.createdAt,
80
- updatedAt: p.updatedAt,
81
- };
36
+ for (const project of this.projects.values()) {
37
+ if (project.id === projectId)
38
+ return project;
39
+ }
40
+ return null;
82
41
  }
83
42
  async startScan(projectId, sources) {
84
43
  const now = new Date();
85
- const id = `scan_${randomUUID().slice(0, 8)}`;
86
- await this.db.insert(scans).values({
87
- id,
88
- projectId,
89
- status: 'running',
90
- sources: JSON.stringify(sources),
91
- startedAt: now,
92
- createdAt: now,
93
- });
94
- return {
95
- id,
44
+ const scan = {
45
+ id: `scan_${Math.random().toString(36).slice(2, 10)}`,
96
46
  projectId,
97
47
  status: 'running',
98
48
  sources,
99
49
  startedAt: now,
100
50
  createdAt: now,
101
51
  };
102
- }
103
- async completeScan(scanId, results) {
104
- const now = new Date();
105
- // Get the scan to get projectId
106
- const scanResult = await this.db
107
- .select()
108
- .from(scans)
109
- .where(eq(scans.id, scanId))
110
- .limit(1);
111
- if (scanResult.length === 0 || !scanResult[0]) {
112
- throw new Error(`Scan not found: ${scanId}`);
113
- }
114
- const scan = scanResult[0];
115
- const projectId = scan.projectId;
116
- // Calculate stats
117
- const stats = {
118
- componentCount: results.components.length,
119
- tokenCount: results.tokens.length,
120
- driftCount: results.drifts.length,
121
- duration: scan.startedAt ? now.getTime() - scan.startedAt.getTime() : undefined,
122
- };
123
- // Update scan status
124
- await this.db
125
- .update(scans)
126
- .set({
127
- status: 'completed',
128
- stats: JSON.stringify(stats),
129
- errors: results.errors ? JSON.stringify(results.errors) : null,
130
- completedAt: now,
131
- })
132
- .where(eq(scans.id, scanId));
133
- // Store components
134
- for (const component of results.components) {
135
- await this.db.insert(components).values({
136
- id: `comp_${randomUUID().slice(0, 8)}`,
137
- projectId,
138
- scanId,
139
- externalId: component.id,
140
- name: component.name,
141
- source: component.source.type,
142
- sourceLocation: JSON.stringify(component.source),
143
- props: JSON.stringify(component.props),
144
- variants: JSON.stringify(component.variants),
145
- tokenRefs: component.tokens ? JSON.stringify(component.tokens) : null,
146
- dependencies: component.dependencies ? JSON.stringify(component.dependencies) : null,
147
- metadata: component.metadata ? JSON.stringify(component.metadata) : null,
148
- scannedAt: now,
149
- });
52
+ this.scansData.set(scan.id, scan);
53
+ return scan;
54
+ }
55
+ async completeScan(scanId, _results) {
56
+ const scan = this.scansData.get(scanId);
57
+ if (scan) {
58
+ scan.status = 'completed';
59
+ scan.completedAt = new Date();
150
60
  }
151
- // Store tokens
152
- for (const token of results.tokens) {
153
- await this.db.insert(tokens).values({
154
- id: `tok_${randomUUID().slice(0, 8)}`,
155
- projectId,
156
- scanId,
157
- externalId: token.id,
158
- name: token.name,
159
- category: token.category,
160
- value: JSON.stringify(token.value),
161
- source: JSON.stringify(token.source),
162
- aliases: token.aliases ? JSON.stringify(token.aliases) : null,
163
- usedBy: token.usedBy ? JSON.stringify(token.usedBy) : null,
164
- metadata: token.metadata ? JSON.stringify(token.metadata) : null,
165
- scannedAt: now,
166
- });
167
- }
168
- // Store drift signals
169
- for (const drift of results.drifts) {
170
- await this.db.insert(driftSignals).values({
171
- id: `drift_${randomUUID().slice(0, 8)}`,
172
- projectId,
173
- scanId,
174
- type: drift.type,
175
- severity: drift.severity,
176
- source: JSON.stringify(drift.source),
177
- target: drift.target ? JSON.stringify(drift.target) : null,
178
- message: drift.message,
179
- details: JSON.stringify(drift.details),
180
- detectedAt: drift.detectedAt,
181
- });
182
- }
183
- // Create snapshot
184
- const driftsBySeverity = {
185
- critical: results.drifts.filter(d => d.severity === 'critical').length,
186
- warning: results.drifts.filter(d => d.severity === 'warning').length,
187
- info: results.drifts.filter(d => d.severity === 'info').length,
188
- };
189
- const frameworks = [...new Set(results.components.map(c => c.source.type))];
190
- await this.db.insert(snapshots).values({
191
- id: `snap_${randomUUID().slice(0, 8)}`,
192
- projectId,
193
- scanId,
194
- componentCount: results.components.length,
195
- tokenCount: results.tokens.length,
196
- driftCount: results.drifts.length,
197
- summary: JSON.stringify({
198
- ...driftsBySeverity,
199
- frameworks,
200
- }),
201
- createdAt: now,
202
- });
203
61
  }
204
62
  async failScan(scanId, error) {
205
- await this.db
206
- .update(scans)
207
- .set({
208
- status: 'failed',
209
- errors: JSON.stringify([error]),
210
- completedAt: new Date(),
211
- })
212
- .where(eq(scans.id, scanId));
63
+ const scan = this.scansData.get(scanId);
64
+ if (scan) {
65
+ scan.status = 'failed';
66
+ scan.errors = [error];
67
+ scan.completedAt = new Date();
68
+ }
213
69
  }
214
- async getLatestScan(projectId) {
215
- const result = await this.db
216
- .select()
217
- .from(scans)
218
- .where(eq(scans.projectId, projectId))
219
- .orderBy(desc(scans.createdAt))
220
- .limit(1);
221
- if (result.length === 0 || !result[0])
222
- return null;
223
- return this.mapScan(result[0]);
70
+ async getLatestScan(_projectId) {
71
+ return null; // No persistence
224
72
  }
225
- async getScans(projectId, limit = 10) {
226
- const result = await this.db
227
- .select()
228
- .from(scans)
229
- .where(eq(scans.projectId, projectId))
230
- .orderBy(desc(scans.createdAt))
231
- .limit(limit);
232
- return result.map(this.mapScan);
73
+ async getScans(_projectId, _limit) {
74
+ return []; // No persistence
233
75
  }
234
76
  async getScan(scanId) {
235
- const result = await this.db
236
- .select()
237
- .from(scans)
238
- .where(eq(scans.id, scanId))
239
- .limit(1);
240
- if (result.length === 0 || !result[0])
241
- return null;
242
- return this.mapScan(result[0]);
77
+ return this.scansData.get(scanId) || null;
243
78
  }
244
- async getComponents(scanId) {
245
- const result = await this.db
246
- .select()
247
- .from(components)
248
- .where(eq(components.scanId, scanId));
249
- return result.map((c) => ({
250
- id: c.externalId,
251
- name: c.name,
252
- source: JSON.parse(c.sourceLocation),
253
- props: c.props ? JSON.parse(c.props) : [],
254
- variants: c.variants ? JSON.parse(c.variants) : [],
255
- tokens: c.tokenRefs ? JSON.parse(c.tokenRefs) : [],
256
- dependencies: c.dependencies ? JSON.parse(c.dependencies) : [],
257
- metadata: c.metadata ? JSON.parse(c.metadata) : {},
258
- scannedAt: c.scannedAt,
259
- }));
79
+ async getComponents(_scanId) {
80
+ return []; // No persistence
260
81
  }
261
- async getTokens(scanId) {
262
- const result = await this.db
263
- .select()
264
- .from(tokens)
265
- .where(eq(tokens.scanId, scanId));
266
- return result.map((t) => ({
267
- id: t.externalId,
268
- name: t.name,
269
- category: t.category,
270
- value: JSON.parse(t.value),
271
- source: JSON.parse(t.source),
272
- aliases: t.aliases ? JSON.parse(t.aliases) : undefined,
273
- usedBy: t.usedBy ? JSON.parse(t.usedBy) : undefined,
274
- metadata: t.metadata ? JSON.parse(t.metadata) : undefined,
275
- scannedAt: t.scannedAt,
276
- }));
82
+ async getTokens(_scanId) {
83
+ return []; // No persistence
277
84
  }
278
- async getDriftSignals(scanId) {
279
- const result = await this.db
280
- .select()
281
- .from(driftSignals)
282
- .where(eq(driftSignals.scanId, scanId));
283
- return result.map((d) => ({
284
- id: d.id,
285
- type: d.type,
286
- severity: d.severity,
287
- source: JSON.parse(d.source),
288
- target: d.target ? JSON.parse(d.target) : undefined,
289
- message: d.message,
290
- details: d.details ? JSON.parse(d.details) : {},
291
- detectedAt: d.detectedAt,
292
- resolvedAt: d.resolvedAt ?? undefined,
293
- resolution: d.resolution ? JSON.parse(d.resolution) : undefined,
294
- }));
85
+ async getDriftSignals(_scanId) {
86
+ return []; // No persistence
295
87
  }
296
- async getSnapshots(projectId, limit = 10) {
297
- const result = await this.db
298
- .select()
299
- .from(snapshots)
300
- .where(eq(snapshots.projectId, projectId))
301
- .orderBy(desc(snapshots.createdAt))
302
- .limit(limit);
303
- return result.map((s) => ({
304
- id: s.id,
305
- projectId: s.projectId,
306
- scanId: s.scanId,
307
- componentCount: s.componentCount,
308
- tokenCount: s.tokenCount,
309
- driftCount: s.driftCount,
310
- coverageScore: s.coverageScore ?? undefined,
311
- summary: JSON.parse(s.summary),
312
- createdAt: s.createdAt,
313
- }));
88
+ async getSnapshots(_projectId, _limit) {
89
+ return []; // No persistence
314
90
  }
315
- async compareScan(currentScanId, previousScanId) {
316
- const [currentComponents, previousComponents] = await Promise.all([
317
- this.getComponents(currentScanId),
318
- this.getComponents(previousScanId),
319
- ]);
320
- const [currentTokens, previousTokens] = await Promise.all([
321
- this.getTokens(currentScanId),
322
- this.getTokens(previousScanId),
323
- ]);
324
- const [currentDrifts, previousDrifts] = await Promise.all([
325
- this.getDriftSignals(currentScanId),
326
- this.getDriftSignals(previousScanId),
327
- ]);
328
- // Build maps for comparison
329
- const prevCompMap = new Map(previousComponents.map(c => [c.id, c]));
330
- const currCompMap = new Map(currentComponents.map(c => [c.id, c]));
331
- const prevTokenMap = new Map(previousTokens.map(t => [t.id, t]));
332
- const currTokenMap = new Map(currentTokens.map(t => [t.id, t]));
333
- const prevDriftMap = new Map(previousDrifts.map(d => [d.id, d]));
334
- const currDriftMap = new Map(currentDrifts.map(d => [d.id, d]));
335
- const diff = {
336
- added: {
337
- components: currentComponents.filter(c => !prevCompMap.has(c.id)),
338
- tokens: currentTokens.filter(t => !prevTokenMap.has(t.id)),
339
- drifts: currentDrifts.filter(d => !prevDriftMap.has(d.id)),
340
- },
341
- removed: {
342
- components: previousComponents.filter(c => !currCompMap.has(c.id)),
343
- tokens: previousTokens.filter(t => !currTokenMap.has(t.id)),
344
- drifts: previousDrifts.filter(d => !currDriftMap.has(d.id)),
345
- },
346
- modified: {
347
- components: [],
348
- tokens: [],
349
- },
91
+ async compareScan(_currentScanId, _previousScanId) {
92
+ return {
93
+ added: { components: [], tokens: [], drifts: [] },
94
+ removed: { components: [], tokens: [], drifts: [] },
95
+ modified: { components: [], tokens: [] },
350
96
  };
351
- // Find modified components
352
- for (const curr of currentComponents) {
353
- const prev = prevCompMap.get(curr.id);
354
- if (prev && JSON.stringify(prev) !== JSON.stringify(curr)) {
355
- diff.modified.components.push({ before: prev, after: curr });
356
- }
357
- }
358
- // Find modified tokens
359
- for (const curr of currentTokens) {
360
- const prev = prevTokenMap.get(curr.id);
361
- if (prev && JSON.stringify(prev) !== JSON.stringify(curr)) {
362
- diff.modified.tokens.push({ before: prev, after: curr });
363
- }
364
- }
365
- return diff;
366
97
  }
367
98
  close() {
368
- this.closeDb();
369
- }
370
- mapScan(s) {
371
- return {
372
- id: s.id,
373
- projectId: s.projectId,
374
- status: s.status,
375
- sources: JSON.parse(s.sources),
376
- stats: s.stats ? JSON.parse(s.stats) : undefined,
377
- errors: s.errors ? JSON.parse(s.errors) : undefined,
378
- startedAt: s.startedAt ?? undefined,
379
- completedAt: s.completedAt ?? undefined,
380
- createdAt: s.createdAt,
381
- };
99
+ // No-op
382
100
  }
383
101
  }
384
102
  //# sourceMappingURL=local-store.js.map