design-brain-memory 0.8.2 → 0.9.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 (126) hide show
  1. package/dist/agentBrowser.d.ts +1 -0
  2. package/dist/agentBrowser.js +1 -0
  3. package/dist/agentBrowser.js.map +1 -1
  4. package/dist/classify.d.ts +21 -0
  5. package/dist/classify.js +205 -0
  6. package/dist/classify.js.map +1 -0
  7. package/dist/cli.js +216 -219
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands.d.ts +1 -60
  10. package/dist/commands.js +10 -322
  11. package/dist/commands.js.map +1 -1
  12. package/dist/extractFromUrl.d.ts +0 -7
  13. package/dist/extractFromUrl.js +353 -82
  14. package/dist/extractFromUrl.js.map +1 -1
  15. package/dist/index.d.ts +12 -24
  16. package/dist/index.js +11 -16
  17. package/dist/index.js.map +1 -1
  18. package/dist/llm.d.ts +6 -0
  19. package/dist/llm.js +12 -1
  20. package/dist/llm.js.map +1 -1
  21. package/dist/persona.d.ts +2 -0
  22. package/dist/persona.js +234 -0
  23. package/dist/persona.js.map +1 -0
  24. package/dist/query.js +6 -1
  25. package/dist/query.js.map +1 -1
  26. package/dist/render.d.ts +10 -2
  27. package/dist/render.js +175 -80
  28. package/dist/render.js.map +1 -1
  29. package/dist/scan.d.ts +10 -0
  30. package/dist/scan.js +393 -0
  31. package/dist/scan.js.map +1 -0
  32. package/dist/scanRenderer.d.ts +2 -0
  33. package/dist/scanRenderer.js +155 -0
  34. package/dist/scanRenderer.js.map +1 -0
  35. package/dist/skillPrompt.d.ts +3 -1
  36. package/dist/skillPrompt.js +148 -22
  37. package/dist/skillPrompt.js.map +1 -1
  38. package/dist/store.d.ts +5 -1
  39. package/dist/store.js +19 -0
  40. package/dist/store.js.map +1 -1
  41. package/dist/taste.d.ts +9 -0
  42. package/dist/taste.js +598 -0
  43. package/dist/taste.js.map +1 -0
  44. package/dist/tasteDiff.d.ts +19 -0
  45. package/dist/tasteDiff.js +340 -0
  46. package/dist/tasteDiff.js.map +1 -0
  47. package/dist/tasteGenerate.d.ts +12 -0
  48. package/dist/tasteGenerate.js +140 -0
  49. package/dist/tasteGenerate.js.map +1 -0
  50. package/dist/tasteRefine.d.ts +13 -0
  51. package/dist/tasteRefine.js +351 -0
  52. package/dist/tasteRefine.js.map +1 -0
  53. package/dist/tasteRenderer.d.ts +4 -0
  54. package/dist/tasteRenderer.js +133 -0
  55. package/dist/tasteRenderer.js.map +1 -0
  56. package/dist/theatrical.d.ts +5 -0
  57. package/dist/theatrical.js +258 -0
  58. package/dist/theatrical.js.map +1 -0
  59. package/dist/types.d.ts +196 -27
  60. package/package.json +4 -3
  61. package/skills/SKILL.md +36 -0
  62. package/skills/design-brain/SKILL.md +77 -0
  63. package/README.md +0 -242
  64. package/dist/aggregate.d.ts +0 -9
  65. package/dist/aggregate.js +0 -53
  66. package/dist/aggregate.js.map +0 -1
  67. package/dist/batch.d.ts +0 -16
  68. package/dist/batch.js +0 -44
  69. package/dist/batch.js.map +0 -1
  70. package/dist/compare.d.ts +0 -33
  71. package/dist/compare.js +0 -83
  72. package/dist/compare.js.map +0 -1
  73. package/dist/componentGraph.d.ts +0 -22
  74. package/dist/componentGraph.js +0 -106
  75. package/dist/componentGraph.js.map +0 -1
  76. package/dist/contextLayer.d.ts +0 -12
  77. package/dist/contextLayer.js +0 -263
  78. package/dist/contextLayer.js.map +0 -1
  79. package/dist/cssInJs.d.ts +0 -9
  80. package/dist/cssInJs.js +0 -124
  81. package/dist/cssInJs.js.map +0 -1
  82. package/dist/graphView.d.ts +0 -21
  83. package/dist/graphView.js +0 -492
  84. package/dist/graphView.js.map +0 -1
  85. package/dist/knowledge.d.ts +0 -20
  86. package/dist/knowledge.js +0 -208
  87. package/dist/knowledge.js.map +0 -1
  88. package/dist/liveView.d.ts +0 -15
  89. package/dist/liveView.js +0 -476
  90. package/dist/liveView.js.map +0 -1
  91. package/dist/moodboard.d.ts +0 -3
  92. package/dist/moodboard.js +0 -139
  93. package/dist/moodboard.js.map +0 -1
  94. package/dist/reviewChecklist.d.ts +0 -17
  95. package/dist/reviewChecklist.js +0 -126
  96. package/dist/reviewChecklist.js.map +0 -1
  97. package/dist/scorecard.d.ts +0 -48
  98. package/dist/scorecard.js +0 -201
  99. package/dist/scorecard.js.map +0 -1
  100. package/dist/styleDictionary.d.ts +0 -16
  101. package/dist/styleDictionary.js +0 -89
  102. package/dist/styleDictionary.js.map +0 -1
  103. package/dist/svg.d.ts +0 -5
  104. package/dist/svg.js +0 -162
  105. package/dist/svg.js.map +0 -1
  106. package/dist/systemDiff.d.ts +0 -28
  107. package/dist/systemDiff.js +0 -107
  108. package/dist/systemDiff.js.map +0 -1
  109. package/dist/tailwind.d.ts +0 -2
  110. package/dist/tailwind.js +0 -122
  111. package/dist/tailwind.js.map +0 -1
  112. package/dist/tokenNaming.d.ts +0 -5
  113. package/dist/tokenNaming.js +0 -229
  114. package/dist/tokenNaming.js.map +0 -1
  115. package/dist/tokens.d.ts +0 -17
  116. package/dist/tokens.js +0 -44
  117. package/dist/tokens.js.map +0 -1
  118. package/dist/trends.d.ts +0 -12
  119. package/dist/trends.js +0 -178
  120. package/dist/trends.js.map +0 -1
  121. package/dist/wiki.d.ts +0 -10
  122. package/dist/wiki.js +0 -346
  123. package/dist/wiki.js.map +0 -1
  124. package/dist/writingStyle.d.ts +0 -38
  125. package/dist/writingStyle.js +0 -224
  126. package/dist/writingStyle.js.map +0 -1
@@ -1,16 +1,14 @@
1
- import { execSync } from 'node:child_process';
2
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
2
  import { homedir } from 'node:os';
4
- import { join } from 'node:path';
3
+ import { join, dirname } from 'node:path';
5
4
  import { confirmPrompt } from './interactive.js';
6
5
  const CONFIG_DIRECTORY = join(homedir(), '.design-brain-memory');
7
6
  const CONFIG_FILE = join(CONFIG_DIRECTORY, 'config.json');
8
7
  const DEFAULT_SKILL_REPO = 'design-brain/design-brain';
9
8
  function readConfig() {
10
9
  try {
11
- if (!existsSync(CONFIG_FILE)) {
10
+ if (!existsSync(CONFIG_FILE))
12
11
  return {};
13
- }
14
12
  return JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
15
13
  }
16
14
  catch {
@@ -25,42 +23,170 @@ function writeConfig(config) {
25
23
  writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
26
24
  }
27
25
  catch {
28
- // no-op: prompt persistence should never block command execution
26
+ // no-op: config persistence should never block command execution
29
27
  }
30
28
  }
29
+ /* ─── Backward-compatible export ─── */
31
30
  export function getDefaultSkillRepo() {
32
31
  return process.env.DESIGN_BRAIN_SKILL_REPO?.trim() || DEFAULT_SKILL_REPO;
33
32
  }
34
- export function installSkill(repo = getDefaultSkillRepo()) {
33
+ /* ─── SKILL.md content ─── */
34
+ function getSkillContent() {
35
+ // Try to load from bundled skills/SKILL.md first
36
+ const bundledPath = join(dirname(new URL(import.meta.url).pathname), '..', 'skills', 'SKILL.md');
35
37
  try {
36
- execSync(`npx -y skills add ${repo}`, { stdio: 'inherit' });
37
- return true;
38
+ if (existsSync(bundledPath)) {
39
+ return readFileSync(bundledPath, 'utf-8');
40
+ }
38
41
  }
39
42
  catch {
40
- return false;
43
+ // fall through to inline content
44
+ }
45
+ // Inline fallback
46
+ return `---
47
+ name: design-brain
48
+ description: Design system awareness for AI coding agents. Provides design token guidance, component patterns, and design principles extracted from your codebase.
49
+ ---
50
+
51
+ # Design Brain Skill
52
+
53
+ You have access to design system knowledge extracted by design-brain-memory.
54
+
55
+ ## When to Use This Skill
56
+
57
+ - When writing UI components, reference the color palette and typography system
58
+ - When adding spacing/layout, follow the established spacing scale
59
+ - When creating new components, follow existing component patterns
60
+ - When adding transitions/animations, match existing motion patterns
61
+
62
+ ## Design Principles
63
+
64
+ 1. **Consistency** — Use existing design tokens rather than ad-hoc values
65
+ 2. **Systematic spacing** — Prefer multiples of 4px (4, 8, 12, 16, 24, 32, 48, 64)
66
+ 3. **Color discipline** — Use palette colors from CSS variables or design tokens
67
+ 4. **Typography scale** — Stick to the established font size scale
68
+ 5. **Motion restraint** — Use consistent transition timing across the UI
69
+
70
+ ## Quick Reference
71
+
72
+ - Run \`npx design-brain-memory scan\` to see your design health score
73
+ - Run \`npx design-brain-memory scan .\` to scan the current directory
74
+ - Design tokens are extracted from CSS, SCSS, and component files
75
+
76
+ ## Tips for Code Generation
77
+
78
+ - Prefer CSS custom properties (--var-name) over hardcoded values
79
+ - Use the project's existing color palette — don't introduce new colors without reason
80
+ - Match existing component patterns before creating new abstractions
81
+ - Keep transition durations consistent (prefer 150ms, 200ms, or 300ms)
82
+ `;
83
+ }
84
+ /* ─── Agent detection ─── */
85
+ const AGENT_DEFS = [
86
+ {
87
+ name: 'Claude Code',
88
+ configCheck: join(homedir(), '.claude'),
89
+ skillSubpath: join('.claude', 'skills', 'design-brain', 'SKILL.md'),
90
+ },
91
+ {
92
+ name: 'Cursor',
93
+ configCheck: join(homedir(), '.cursor'),
94
+ skillSubpath: join('.cursor', 'skills', 'design-brain', 'SKILL.md'),
95
+ },
96
+ {
97
+ name: 'Windsurf',
98
+ configCheck: join(homedir(), '.codeium', 'windsurf'),
99
+ skillSubpath: join('.codeium', 'windsurf', 'skills', 'design-brain', 'SKILL.md'),
100
+ },
101
+ {
102
+ name: 'Amp',
103
+ configCheck: join(homedir(), '.amp'),
104
+ skillSubpath: join('.amp', 'skills', 'design-brain', 'SKILL.md'),
105
+ },
106
+ {
107
+ name: 'Codex',
108
+ configCheck: join(homedir(), '.codex'),
109
+ skillSubpath: join('.codex', 'skills', 'design-brain', 'SKILL.md'),
110
+ },
111
+ ];
112
+ export function detectAgents() {
113
+ const agents = [];
114
+ for (const def of AGENT_DEFS) {
115
+ if (existsSync(def.configCheck)) {
116
+ agents.push({
117
+ name: def.name,
118
+ configDir: def.configCheck,
119
+ skillDir: join(homedir(), def.skillSubpath),
120
+ });
121
+ }
122
+ }
123
+ return agents;
124
+ }
125
+ export function installSkillToAgents(agents) {
126
+ const content = getSkillContent();
127
+ const results = [];
128
+ for (const agent of agents) {
129
+ try {
130
+ const dir = dirname(agent.skillDir);
131
+ if (!existsSync(dir)) {
132
+ mkdirSync(dir, { recursive: true });
133
+ }
134
+ writeFileSync(agent.skillDir, content, 'utf-8');
135
+ results.push({ agent, success: true });
136
+ }
137
+ catch (err) {
138
+ results.push({
139
+ agent,
140
+ success: false,
141
+ error: err instanceof Error ? err.message : String(err),
142
+ });
143
+ }
41
144
  }
145
+ return results;
42
146
  }
147
+ /* ─── ANSI helpers ─── */
148
+ const USE_COLOR = process.stdout.isTTY !== false;
149
+ const RESET = USE_COLOR ? '\x1b[0m' : '';
150
+ const BOLD = USE_COLOR ? '\x1b[1m' : '';
151
+ const GREEN = USE_COLOR ? '\x1b[32m' : '';
152
+ const DIM = USE_COLOR ? '\x1b[2m' : '';
153
+ const RED = USE_COLOR ? '\x1b[31m' : '';
154
+ /* ─── Main prompt flow ─── */
43
155
  export async function maybePromptSkillInstall(skipPrompts) {
44
156
  const config = readConfig();
45
- if (config.skillPromptDismissed) {
157
+ if (config.skillPromptDismissed)
46
158
  return;
47
- }
48
- if (skipPrompts) {
159
+ if (skipPrompts)
49
160
  return;
50
- }
51
- console.log('\nTip: install the Design Brain skill for coding agents (Cursor/Claude/Copilot).');
52
- console.log(`Run via skills registry: npx -y skills add ${getDefaultSkillRepo()}\n`);
53
- const shouldInstall = await confirmPrompt('Install Design Brain skill now?', true);
54
- if (!shouldInstall) {
161
+ const agents = detectAgents();
162
+ if (agents.length === 0) {
163
+ console.log(`\n${DIM}No AI agents detected. Skill installation skipped.${RESET}`);
55
164
  return;
56
165
  }
57
- const installed = installSkill();
58
- if (installed) {
59
- console.log('Design Brain skill installed.');
166
+ console.log(`\n ${BOLD}Detected AI agents:${RESET}`);
167
+ for (const agent of agents) {
168
+ console.log(` ${DIM}\u2022${RESET} ${agent.name}`);
169
+ }
170
+ console.log('');
171
+ const shouldInstall = await confirmPrompt(`Install design-brain skill to ${agents.length} agent${agents.length > 1 ? 's' : ''}?`, true);
172
+ if (!shouldInstall) {
60
173
  writeConfig({ ...config, skillPromptDismissed: true });
61
174
  return;
62
175
  }
63
- console.log('Skill install failed. You can install manually:');
64
- console.log(` npx -y skills add ${getDefaultSkillRepo()}`);
176
+ const results = installSkillToAgents(agents);
177
+ console.log('');
178
+ for (const r of results) {
179
+ if (r.success) {
180
+ console.log(` ${GREEN}\u2714${RESET} ${r.agent.name}`);
181
+ }
182
+ else {
183
+ console.log(` ${RED}\u2718${RESET} ${r.agent.name} — ${r.error}`);
184
+ }
185
+ }
186
+ const allOk = results.every(r => r.success);
187
+ if (allOk) {
188
+ console.log(`\n ${GREEN}Design Brain skill installed to all agents.${RESET}\n`);
189
+ }
190
+ writeConfig({ ...config, skillPromptDismissed: true });
65
191
  }
66
192
  //# sourceMappingURL=skillPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillPrompt.js","sourceRoot":"","sources":["../src/skillPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,sBAAsB,CAAC,CAAC;AACjE,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1D,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAEvD,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAe,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAkB;IACrC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,kBAAkB,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAI,GAAG,mBAAmB,EAAE;IACvD,IAAI,CAAC;QACH,QAAQ,CAAC,qBAAqB,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,WAAoB;IAChE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,8CAA8C,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAErF,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;IACnF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,uBAAuB,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"skillPrompt.js","sourceRoot":"","sources":["../src/skillPrompt.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -1,8 +1,10 @@
1
- import type { DesignBrainDatabase, ProjectRecord } from './types.js';
1
+ import type { DesignBrainDatabase, ProjectRecord, TasteProfile } from './types.js';
2
2
  export declare function brainRoot(rootDir: string): string;
3
3
  export declare function databasePath(rootDir: string): string;
4
4
  export declare function projectDir(rootDir: string, projectId: string): string;
5
5
  export declare function projectAssetDir(rootDir: string, projectId: string): string;
6
+ export declare function tasteDir(rootDir: string): string;
7
+ export declare function tasteProfilePath(rootDir: string, projectId: string): string;
6
8
  export declare function ensureBrainExists(rootDir: string): Promise<void>;
7
9
  export declare function loadDatabase(rootDir: string): Promise<DesignBrainDatabase>;
8
10
  export declare function saveDatabase(rootDir: string, db: DesignBrainDatabase): Promise<void>;
@@ -12,3 +14,5 @@ export declare function ensureProject(db: DesignBrainDatabase, options: {
12
14
  projectName?: string;
13
15
  description?: string;
14
16
  }): ProjectRecord;
17
+ export declare function loadTasteProfile(rootDir: string, projectId: string): Promise<TasteProfile | null>;
18
+ export declare function saveTasteProfile(rootDir: string, profile: TasteProfile): Promise<void>;
package/dist/store.js CHANGED
@@ -13,11 +13,18 @@ export function projectDir(rootDir, projectId) {
13
13
  export function projectAssetDir(rootDir, projectId) {
14
14
  return path.join(brainRoot(rootDir), 'assets', projectId);
15
15
  }
16
+ export function tasteDir(rootDir) {
17
+ return path.join(brainRoot(rootDir), 'taste');
18
+ }
19
+ export function tasteProfilePath(rootDir, projectId) {
20
+ return path.join(tasteDir(rootDir), `${slugify(projectId)}.json`);
21
+ }
16
22
  export async function ensureBrainExists(rootDir) {
17
23
  const base = brainRoot(rootDir);
18
24
  await fs.ensureDir(path.join(base, 'projects'));
19
25
  await fs.ensureDir(path.join(base, 'assets'));
20
26
  await fs.ensureDir(path.join(base, 'graph'));
27
+ await fs.ensureDir(path.join(base, 'taste'));
21
28
  const dbFile = databasePath(rootDir);
22
29
  if (!(await fs.pathExists(dbFile))) {
23
30
  const db = {
@@ -66,4 +73,16 @@ export function ensureProject(db, options) {
66
73
  project.updatedAt = now;
67
74
  return project;
68
75
  }
76
+ export async function loadTasteProfile(rootDir, projectId) {
77
+ const filePath = tasteProfilePath(rootDir, projectId);
78
+ if (!await fs.pathExists(filePath)) {
79
+ return null;
80
+ }
81
+ return fs.readJson(filePath);
82
+ }
83
+ export async function saveTasteProfile(rootDir, profile) {
84
+ const dir = tasteDir(rootDir);
85
+ await fs.ensureDir(dir);
86
+ await fs.writeJson(tasteProfilePath(rootDir, profile.id), profile, { spaces: 2 });
87
+ }
69
88
  //# sourceMappingURL=store.js.map
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { LlmConfig, TasteProfile } from './types.js';
2
+ export declare function buildTasteProfile(options: {
3
+ rootDir: string;
4
+ projectId: string;
5
+ projectName?: string;
6
+ urls: string[];
7
+ headed?: boolean;
8
+ llm?: LlmConfig;
9
+ }): Promise<TasteProfile>;