design-brain-memory 0.9.3 → 0.9.4
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.
- package/README.md +273 -0
- package/dist/agentBrowser.d.ts +0 -1
- package/dist/agentBrowser.js +13 -31
- package/dist/agentBrowser.js.map +1 -1
- package/dist/aggregate.d.ts +9 -0
- package/dist/aggregate.js +53 -0
- package/dist/aggregate.js.map +1 -0
- package/dist/batch.d.ts +16 -0
- package/dist/batch.js +44 -0
- package/dist/batch.js.map +1 -0
- package/dist/cli.js +250 -216
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +60 -1
- package/dist/commands.js +323 -10
- package/dist/commands.js.map +1 -1
- package/dist/compare.d.ts +33 -0
- package/dist/compare.js +83 -0
- package/dist/compare.js.map +1 -0
- package/dist/componentGraph.d.ts +22 -0
- package/dist/componentGraph.js +106 -0
- package/dist/componentGraph.js.map +1 -0
- package/dist/contextLayer.d.ts +12 -0
- package/dist/contextLayer.js +263 -0
- package/dist/contextLayer.js.map +1 -0
- package/dist/cssInJs.d.ts +9 -0
- package/dist/cssInJs.js +124 -0
- package/dist/cssInJs.js.map +1 -0
- package/dist/extractFromUrl.d.ts +8 -0
- package/dist/extractFromUrl.js +508 -414
- package/dist/extractFromUrl.js.map +1 -1
- package/dist/graphView.d.ts +21 -0
- package/dist/graphView.js +492 -0
- package/dist/graphView.js.map +1 -0
- package/dist/index.d.ts +26 -11
- package/dist/index.js +17 -10
- package/dist/index.js.map +1 -1
- package/dist/knowledge.d.ts +20 -0
- package/dist/knowledge.js +208 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/liveView.d.ts +15 -0
- package/dist/liveView.js +475 -0
- package/dist/liveView.js.map +1 -0
- package/dist/llm.js +1 -9
- package/dist/llm.js.map +1 -1
- package/dist/moodboard.d.ts +3 -0
- package/dist/moodboard.js +152 -0
- package/dist/moodboard.js.map +1 -0
- package/dist/persona.d.ts +2 -2
- package/dist/persona.js +82 -210
- package/dist/persona.js.map +1 -1
- package/dist/query.js +1 -6
- package/dist/query.js.map +1 -1
- package/dist/render.d.ts +2 -10
- package/dist/render.js +80 -175
- package/dist/render.js.map +1 -1
- package/dist/reviewChecklist.d.ts +17 -0
- package/dist/reviewChecklist.js +126 -0
- package/dist/reviewChecklist.js.map +1 -0
- package/dist/scan.d.ts +19 -7
- package/dist/scan.js +132 -374
- package/dist/scan.js.map +1 -1
- package/dist/scorecard.d.ts +53 -0
- package/dist/scorecard.js +325 -0
- package/dist/scorecard.js.map +1 -0
- package/dist/skillPrompt.d.ts +1 -3
- package/dist/skillPrompt.js +22 -148
- package/dist/skillPrompt.js.map +1 -1
- package/dist/store.d.ts +2 -2
- package/dist/store.js +7 -9
- package/dist/store.js.map +1 -1
- package/dist/styleDictionary.d.ts +16 -0
- package/dist/styleDictionary.js +89 -0
- package/dist/styleDictionary.js.map +1 -0
- package/dist/svg.d.ts +5 -0
- package/dist/svg.js +162 -0
- package/dist/svg.js.map +1 -0
- package/dist/systemDiff.d.ts +28 -0
- package/dist/systemDiff.js +107 -0
- package/dist/systemDiff.js.map +1 -0
- package/dist/tailwind.d.ts +2 -0
- package/dist/tailwind.js +122 -0
- package/dist/tailwind.js.map +1 -0
- package/dist/taste.d.ts +3 -2
- package/dist/taste.js +349 -536
- package/dist/taste.js.map +1 -1
- package/dist/tasteRenderer.d.ts +2 -3
- package/dist/tasteRenderer.js +123 -119
- package/dist/tasteRenderer.js.map +1 -1
- package/dist/tokenNaming.d.ts +5 -0
- package/dist/tokenNaming.js +229 -0
- package/dist/tokenNaming.js.map +1 -0
- package/dist/tokens.d.ts +17 -0
- package/dist/tokens.js +44 -0
- package/dist/tokens.js.map +1 -0
- package/dist/trends.d.ts +12 -0
- package/dist/trends.js +178 -0
- package/dist/trends.js.map +1 -0
- package/dist/types.d.ts +47 -101
- package/dist/wiki.d.ts +10 -0
- package/dist/wiki.js +346 -0
- package/dist/wiki.js.map +1 -0
- package/dist/writingStyle.d.ts +38 -0
- package/dist/writingStyle.js +224 -0
- package/dist/writingStyle.js.map +1 -0
- package/package.json +5 -4
- package/dist/classify.d.ts +0 -21
- package/dist/classify.js +0 -205
- package/dist/classify.js.map +0 -1
- package/dist/scanRenderer.d.ts +0 -2
- package/dist/scanRenderer.js +0 -155
- package/dist/scanRenderer.js.map +0 -1
- package/dist/tasteDiff.d.ts +0 -19
- package/dist/tasteDiff.js +0 -340
- package/dist/tasteDiff.js.map +0 -1
- package/dist/tasteGenerate.d.ts +0 -12
- package/dist/tasteGenerate.js +0 -140
- package/dist/tasteGenerate.js.map +0 -1
- package/dist/tasteRefine.d.ts +0 -13
- package/dist/tasteRefine.js +0 -351
- package/dist/tasteRefine.js.map +0 -1
- package/dist/theatrical.d.ts +0 -5
- package/dist/theatrical.js +0 -258
- package/dist/theatrical.js.map +0 -1
- package/skills/SKILL.md +0 -36
- package/skills/design-brain/SKILL.md +0 -77
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { aggregateColors, aggregateTypography, aggregateMotion, } from './aggregate.js';
|
|
2
|
+
const CSS_NAMED_COLORS = [
|
|
3
|
+
['black', 0, 0, 0],
|
|
4
|
+
['white', 255, 255, 255],
|
|
5
|
+
['red', 255, 0, 0],
|
|
6
|
+
['lime', 0, 255, 0],
|
|
7
|
+
['blue', 0, 0, 255],
|
|
8
|
+
['yellow', 255, 255, 0],
|
|
9
|
+
['cyan', 0, 255, 255],
|
|
10
|
+
['magenta', 255, 0, 255],
|
|
11
|
+
['silver', 192, 192, 192],
|
|
12
|
+
['gray', 128, 128, 128],
|
|
13
|
+
['maroon', 128, 0, 0],
|
|
14
|
+
['olive', 128, 128, 0],
|
|
15
|
+
['green', 0, 128, 0],
|
|
16
|
+
['purple', 128, 0, 128],
|
|
17
|
+
['teal', 0, 128, 128],
|
|
18
|
+
['navy', 0, 0, 128],
|
|
19
|
+
['orange', 255, 165, 0],
|
|
20
|
+
['pink', 255, 192, 203],
|
|
21
|
+
['coral', 255, 127, 80],
|
|
22
|
+
['salmon', 250, 128, 114],
|
|
23
|
+
['tomato', 255, 99, 71],
|
|
24
|
+
['crimson', 220, 20, 60],
|
|
25
|
+
['firebrick', 178, 34, 34],
|
|
26
|
+
['darkred', 139, 0, 0],
|
|
27
|
+
['indianred', 205, 92, 92],
|
|
28
|
+
['lightcoral', 240, 128, 128],
|
|
29
|
+
['orangered', 255, 69, 0],
|
|
30
|
+
['darkorange', 255, 140, 0],
|
|
31
|
+
['gold', 255, 215, 0],
|
|
32
|
+
['khaki', 240, 230, 140],
|
|
33
|
+
['darkkhaki', 189, 183, 107],
|
|
34
|
+
['peachpuff', 255, 218, 185],
|
|
35
|
+
['moccasin', 255, 228, 181],
|
|
36
|
+
['papayawhip', 245, 222, 179],
|
|
37
|
+
['lemonchiffon', 255, 250, 205],
|
|
38
|
+
['lightyellow', 255, 255, 224],
|
|
39
|
+
['wheat', 245, 222, 179],
|
|
40
|
+
['tan', 210, 180, 140],
|
|
41
|
+
['chocolate', 210, 105, 30],
|
|
42
|
+
['saddlebrown', 139, 69, 19],
|
|
43
|
+
['sienna', 160, 82, 45],
|
|
44
|
+
['brown', 165, 42, 42],
|
|
45
|
+
['peru', 205, 133, 63],
|
|
46
|
+
['sandybrown', 244, 164, 96],
|
|
47
|
+
['rosybrown', 188, 143, 143],
|
|
48
|
+
['burlywood', 222, 184, 135],
|
|
49
|
+
['bisque', 255, 228, 196],
|
|
50
|
+
['blanchedalmond', 255, 235, 205],
|
|
51
|
+
['antiquewhite', 250, 235, 215],
|
|
52
|
+
['linen', 250, 240, 230],
|
|
53
|
+
['lavenderblush', 255, 240, 245],
|
|
54
|
+
['mistyrose', 255, 228, 225],
|
|
55
|
+
['snow', 255, 250, 250],
|
|
56
|
+
['seashell', 255, 245, 238],
|
|
57
|
+
['floralwhite', 255, 250, 240],
|
|
58
|
+
['ivory', 255, 255, 240],
|
|
59
|
+
['honeydew', 240, 255, 240],
|
|
60
|
+
['mintcream', 245, 255, 250],
|
|
61
|
+
['azure', 240, 255, 255],
|
|
62
|
+
['aliceblue', 240, 248, 255],
|
|
63
|
+
['ghostwhite', 248, 248, 255],
|
|
64
|
+
['whitesmoke', 245, 245, 245],
|
|
65
|
+
['gainsboro', 220, 220, 220],
|
|
66
|
+
['lightgray', 211, 211, 211],
|
|
67
|
+
['darkgray', 169, 169, 169],
|
|
68
|
+
['dimgray', 105, 105, 105],
|
|
69
|
+
['lightslategray', 119, 136, 153],
|
|
70
|
+
['slategray', 112, 128, 144],
|
|
71
|
+
['darkslategray', 47, 79, 79],
|
|
72
|
+
['greenyellow', 173, 255, 47],
|
|
73
|
+
['chartreuse', 127, 255, 0],
|
|
74
|
+
['lawngreen', 124, 252, 0],
|
|
75
|
+
['limegreen', 50, 205, 50],
|
|
76
|
+
['palegreen', 152, 251, 152],
|
|
77
|
+
['lightgreen', 144, 238, 144],
|
|
78
|
+
['springgreen', 0, 255, 127],
|
|
79
|
+
['mediumspringgreen', 0, 250, 154],
|
|
80
|
+
['darkgreen', 0, 100, 0],
|
|
81
|
+
['forestgreen', 34, 139, 34],
|
|
82
|
+
['seagreen', 46, 139, 87],
|
|
83
|
+
['mediumseagreen', 60, 179, 113],
|
|
84
|
+
['mediumaquamarine', 102, 205, 170],
|
|
85
|
+
['darkseagreen', 143, 188, 143],
|
|
86
|
+
['aquamarine', 127, 255, 212],
|
|
87
|
+
['paleturquoise', 175, 238, 238],
|
|
88
|
+
['lightcyan', 224, 255, 255],
|
|
89
|
+
['darkturquoise', 0, 206, 209],
|
|
90
|
+
['turquoise', 64, 224, 208],
|
|
91
|
+
['mediumturquoise', 72, 209, 204],
|
|
92
|
+
['lightseagreen', 32, 178, 170],
|
|
93
|
+
['cadetblue', 95, 158, 160],
|
|
94
|
+
['darkcyan', 0, 139, 139],
|
|
95
|
+
['steelblue', 70, 130, 180],
|
|
96
|
+
['lightsteelblue', 176, 196, 222],
|
|
97
|
+
['powderblue', 176, 224, 230],
|
|
98
|
+
['lightblue', 173, 216, 230],
|
|
99
|
+
['skyblue', 135, 206, 235],
|
|
100
|
+
['lightskyblue', 135, 206, 250],
|
|
101
|
+
['deepskyblue', 0, 191, 255],
|
|
102
|
+
['dodgerblue', 30, 144, 255],
|
|
103
|
+
['cornflowerblue', 100, 149, 237],
|
|
104
|
+
['mediumslateblue', 123, 104, 238],
|
|
105
|
+
['royalblue', 65, 105, 225],
|
|
106
|
+
['mediumblue', 0, 0, 205],
|
|
107
|
+
['darkblue', 0, 0, 139],
|
|
108
|
+
['midnightblue', 25, 25, 112],
|
|
109
|
+
['indigo', 75, 0, 130],
|
|
110
|
+
['darkslateblue', 72, 61, 139],
|
|
111
|
+
['slateblue', 106, 90, 205],
|
|
112
|
+
['blueviolet', 138, 43, 226],
|
|
113
|
+
['mediumpurple', 147, 112, 219],
|
|
114
|
+
['darkorchid', 153, 50, 204],
|
|
115
|
+
['darkviolet', 148, 0, 211],
|
|
116
|
+
['darkmagenta', 139, 0, 139],
|
|
117
|
+
['plum', 221, 160, 221],
|
|
118
|
+
['violet', 238, 130, 238],
|
|
119
|
+
['orchid', 218, 112, 214],
|
|
120
|
+
['mediumorchid', 186, 85, 211],
|
|
121
|
+
['mediumvioletred', 199, 21, 133],
|
|
122
|
+
['deeppink', 255, 20, 147],
|
|
123
|
+
['hotpink', 255, 105, 180],
|
|
124
|
+
['lavender', 230, 230, 250],
|
|
125
|
+
['thistle', 216, 191, 216],
|
|
126
|
+
['fuchsia', 255, 0, 255],
|
|
127
|
+
['aqua', 0, 255, 255],
|
|
128
|
+
['cornsilk', 255, 248, 220],
|
|
129
|
+
['oldlace', 253, 245, 230],
|
|
130
|
+
['navajowhite', 255, 222, 173],
|
|
131
|
+
['goldenrod', 218, 165, 32],
|
|
132
|
+
['darkgoldenrod', 184, 134, 11],
|
|
133
|
+
['yellowgreen', 154, 205, 50],
|
|
134
|
+
['olivedrab', 107, 142, 35],
|
|
135
|
+
['darkolivegreen', 85, 107, 47],
|
|
136
|
+
];
|
|
137
|
+
function parseHex(hex) {
|
|
138
|
+
let h = hex.replace(/^#/, '');
|
|
139
|
+
if (h.length === 3) {
|
|
140
|
+
h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];
|
|
141
|
+
}
|
|
142
|
+
const r = Number.parseInt(h.slice(0, 2), 16);
|
|
143
|
+
const g = Number.parseInt(h.slice(2, 4), 16);
|
|
144
|
+
const b = Number.parseInt(h.slice(4, 6), 16);
|
|
145
|
+
return [r, g, b];
|
|
146
|
+
}
|
|
147
|
+
function colorDistance(r1, g1, b1, r2, g2, b2) {
|
|
148
|
+
return (r1 - r2) ** 2 + (g1 - g2) ** 2 + (b1 - b2) ** 2;
|
|
149
|
+
}
|
|
150
|
+
export function nameColor(hex) {
|
|
151
|
+
const [r, g, b] = parseHex(hex);
|
|
152
|
+
let bestName = 'unknown';
|
|
153
|
+
let bestDist = Infinity;
|
|
154
|
+
for (const [name, cr, cg, cb] of CSS_NAMED_COLORS) {
|
|
155
|
+
const dist = colorDistance(r, g, b, cr, cg, cb);
|
|
156
|
+
if (dist < bestDist) {
|
|
157
|
+
bestDist = dist;
|
|
158
|
+
bestName = name;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return bestName;
|
|
162
|
+
}
|
|
163
|
+
export function nameTypographySize(fontSize) {
|
|
164
|
+
const match = fontSize.match(/^(\d+(?:\.\d+)?)\s*px$/i);
|
|
165
|
+
if (!match)
|
|
166
|
+
return fontSize;
|
|
167
|
+
const px = parseFloat(match[1]);
|
|
168
|
+
if (px < 12)
|
|
169
|
+
return 'xs';
|
|
170
|
+
if (px < 15)
|
|
171
|
+
return 'sm';
|
|
172
|
+
if (px < 19)
|
|
173
|
+
return 'md';
|
|
174
|
+
if (px < 25)
|
|
175
|
+
return 'lg';
|
|
176
|
+
return 'xl';
|
|
177
|
+
}
|
|
178
|
+
function parseDurationMs(duration) {
|
|
179
|
+
const msMatch = duration.match(/^(\d+(?:\.\d+)?)\s*ms$/i);
|
|
180
|
+
if (msMatch)
|
|
181
|
+
return parseFloat(msMatch[1]);
|
|
182
|
+
const sMatch = duration.match(/^(\d+(?:\.\d+)?)\s*s$/i);
|
|
183
|
+
if (sMatch)
|
|
184
|
+
return parseFloat(sMatch[1]) * 1000;
|
|
185
|
+
return -1;
|
|
186
|
+
}
|
|
187
|
+
export function nameMotionDuration(duration) {
|
|
188
|
+
const ms = parseDurationMs(duration);
|
|
189
|
+
if (ms < 0)
|
|
190
|
+
return duration;
|
|
191
|
+
if (ms < 100)
|
|
192
|
+
return 'instant';
|
|
193
|
+
if (ms <= 200)
|
|
194
|
+
return 'quick';
|
|
195
|
+
if (ms <= 400)
|
|
196
|
+
return 'normal';
|
|
197
|
+
return 'slow';
|
|
198
|
+
}
|
|
199
|
+
export function nameTokens(project) {
|
|
200
|
+
const map = new Map();
|
|
201
|
+
const usedNames = new Map();
|
|
202
|
+
function uniqueName(base) {
|
|
203
|
+
const count = usedNames.get(base) ?? 0;
|
|
204
|
+
usedNames.set(base, count + 1);
|
|
205
|
+
return count === 0 ? base : `${base}-${count + 1}`;
|
|
206
|
+
}
|
|
207
|
+
for (const color of aggregateColors(project.inspirations)) {
|
|
208
|
+
const name = uniqueName(nameColor(color.hex));
|
|
209
|
+
map.set(color.hex, name);
|
|
210
|
+
}
|
|
211
|
+
const seenSizes = new Set();
|
|
212
|
+
for (const typo of aggregateTypography(project.inspirations)) {
|
|
213
|
+
if (!seenSizes.has(typo.fontSize)) {
|
|
214
|
+
seenSizes.add(typo.fontSize);
|
|
215
|
+
map.set(typo.fontSize, nameTypographySize(typo.fontSize));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const seenDurations = new Set();
|
|
219
|
+
for (const motion of aggregateMotion(project.inspirations)) {
|
|
220
|
+
for (const t of motion.transitions ?? []) {
|
|
221
|
+
if (t.duration && !seenDurations.has(t.duration)) {
|
|
222
|
+
seenDurations.add(t.duration);
|
|
223
|
+
map.set(t.duration, nameMotionDuration(t.duration));
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return map;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=tokenNaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenNaming.js","sourceRoot":"","sources":["../src/tokenNaming.ts"],"names":[],"mappings":"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"}
|
package/dist/tokens.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ProjectRecord } from './types.js';
|
|
2
|
+
export interface TokenVariant {
|
|
3
|
+
selector: string;
|
|
4
|
+
tag: string;
|
|
5
|
+
text: string;
|
|
6
|
+
className: string;
|
|
7
|
+
html: string;
|
|
8
|
+
styles: Record<string, string>;
|
|
9
|
+
sources: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface ComponentTokenFile {
|
|
12
|
+
kind: string;
|
|
13
|
+
project: string;
|
|
14
|
+
count: number;
|
|
15
|
+
variants: TokenVariant[];
|
|
16
|
+
}
|
|
17
|
+
export declare function generateComponentTokens(project: ProjectRecord): Record<string, ComponentTokenFile>;
|
package/dist/tokens.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export function generateComponentTokens(project) {
|
|
2
|
+
const kindMap = new Map();
|
|
3
|
+
for (const inspiration of project.inspirations) {
|
|
4
|
+
for (const component of inspiration.analysis.components) {
|
|
5
|
+
let selectorMap = kindMap.get(component.kind);
|
|
6
|
+
if (!selectorMap) {
|
|
7
|
+
selectorMap = new Map();
|
|
8
|
+
kindMap.set(component.kind, selectorMap);
|
|
9
|
+
}
|
|
10
|
+
const existing = selectorMap.get(component.selector);
|
|
11
|
+
if (existing) {
|
|
12
|
+
existing.sources.add(inspiration.id);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
selectorMap.set(component.selector, {
|
|
16
|
+
component,
|
|
17
|
+
sources: new Set([inspiration.id]),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const result = {};
|
|
23
|
+
for (const [kind, selectorMap] of kindMap) {
|
|
24
|
+
const variants = [...selectorMap.values()]
|
|
25
|
+
.sort((a, b) => b.sources.size - a.sources.size)
|
|
26
|
+
.map(({ component, sources }) => ({
|
|
27
|
+
selector: component.selector,
|
|
28
|
+
tag: component.tag,
|
|
29
|
+
text: component.text,
|
|
30
|
+
className: component.className,
|
|
31
|
+
html: component.html ?? '',
|
|
32
|
+
styles: component.styles,
|
|
33
|
+
sources: [...sources],
|
|
34
|
+
}));
|
|
35
|
+
result[kind] = {
|
|
36
|
+
kind,
|
|
37
|
+
project: project.id,
|
|
38
|
+
count: variants.reduce((sum, v) => sum + v.sources.length, 0),
|
|
39
|
+
variants,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,uBAAuB,CACrC,OAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4E,CAAC;IAEpG,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC/C,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxD,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAClC,SAAS;oBACT,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAmB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;aACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;aAC/C,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAChC,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE;YAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;SACtB,CAAC,CAAC,CAAC;QAEN,MAAM,CAAC,IAAI,CAAC,GAAG;YACb,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,EAAE;YACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/trends.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { InspirationRecord } from './types.js';
|
|
2
|
+
export interface TrendNote {
|
|
3
|
+
title: string;
|
|
4
|
+
signal: 'rising' | 'stable' | 'declining';
|
|
5
|
+
domain: string;
|
|
6
|
+
evidence: string[];
|
|
7
|
+
firstSeen: string;
|
|
8
|
+
lastSeen: string;
|
|
9
|
+
occurrences: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function detectTrends(inspirations: InspirationRecord[]): TrendNote[];
|
|
12
|
+
export declare function writeTrendNotes(rootDir: string, trends: TrendNote[]): Promise<number>;
|
package/dist/trends.js
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import { brainRoot } from './store.js';
|
|
4
|
+
function determineSignal(captures, allCaptures) {
|
|
5
|
+
if (captures.length < 3)
|
|
6
|
+
return 'stable';
|
|
7
|
+
const sorted = [...allCaptures].sort();
|
|
8
|
+
const mid = Math.floor(sorted.length / 2);
|
|
9
|
+
const firstHalf = new Set(sorted.slice(0, mid));
|
|
10
|
+
const secondHalf = new Set(sorted.slice(mid));
|
|
11
|
+
const countFirst = captures.filter((c) => firstHalf.has(c)).length;
|
|
12
|
+
const countSecond = captures.filter((c) => secondHalf.has(c)).length;
|
|
13
|
+
if (countSecond > countFirst)
|
|
14
|
+
return 'rising';
|
|
15
|
+
if (countFirst > countSecond)
|
|
16
|
+
return 'declining';
|
|
17
|
+
return 'stable';
|
|
18
|
+
}
|
|
19
|
+
export function detectTrends(inspirations) {
|
|
20
|
+
if (inspirations.length < 3)
|
|
21
|
+
return [];
|
|
22
|
+
const sorted = [...inspirations].sort((a, b) => a.capturedAt.localeCompare(b.capturedAt));
|
|
23
|
+
const allIds = sorted.map((i) => i.id);
|
|
24
|
+
const trends = [];
|
|
25
|
+
// Color trends — colors appearing in 3+ captures
|
|
26
|
+
const colorMap = new Map();
|
|
27
|
+
for (const inspo of sorted) {
|
|
28
|
+
for (const color of inspo.analysis.colors) {
|
|
29
|
+
const hex = color.hex.toUpperCase();
|
|
30
|
+
const list = colorMap.get(hex) ?? [];
|
|
31
|
+
list.push(inspo.id);
|
|
32
|
+
colorMap.set(hex, list);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
for (const [hex, ids] of colorMap) {
|
|
36
|
+
if (ids.length >= 3) {
|
|
37
|
+
const captures = sorted.filter((i) => ids.includes(i.id));
|
|
38
|
+
trends.push({
|
|
39
|
+
title: `Color ${hex} appearing across ${ids.length} captures`,
|
|
40
|
+
signal: determineSignal(ids, allIds),
|
|
41
|
+
domain: 'color',
|
|
42
|
+
evidence: ids.map((id) => `[[${id}]]`),
|
|
43
|
+
firstSeen: captures[0].capturedAt.slice(0, 10),
|
|
44
|
+
lastSeen: captures.at(-1).capturedAt.slice(0, 10),
|
|
45
|
+
occurrences: ids.length,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Typography trends — font families in 3+ captures
|
|
50
|
+
const fontMap = new Map();
|
|
51
|
+
for (const inspo of sorted) {
|
|
52
|
+
const families = new Set(inspo.analysis.typography.map((t) => t.fontFamily.split(',')[0].trim().replace(/['"]/g, '')));
|
|
53
|
+
for (const family of families) {
|
|
54
|
+
const list = fontMap.get(family) ?? [];
|
|
55
|
+
list.push(inspo.id);
|
|
56
|
+
fontMap.set(family, list);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
for (const [family, ids] of fontMap) {
|
|
60
|
+
if (ids.length >= 3) {
|
|
61
|
+
const captures = sorted.filter((i) => ids.includes(i.id));
|
|
62
|
+
trends.push({
|
|
63
|
+
title: `Font "${family}" used in ${ids.length} captures`,
|
|
64
|
+
signal: determineSignal(ids, allIds),
|
|
65
|
+
domain: 'typography',
|
|
66
|
+
evidence: ids.map((id) => `[[${id}]]`),
|
|
67
|
+
firstSeen: captures[0].capturedAt.slice(0, 10),
|
|
68
|
+
lastSeen: captures.at(-1).capturedAt.slice(0, 10),
|
|
69
|
+
occurrences: ids.length,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Component kind trends
|
|
74
|
+
const kindMap = new Map();
|
|
75
|
+
for (const inspo of sorted) {
|
|
76
|
+
const kinds = new Set(inspo.analysis.components.map((c) => c.kind));
|
|
77
|
+
for (const kind of kinds) {
|
|
78
|
+
const list = kindMap.get(kind) ?? [];
|
|
79
|
+
list.push(inspo.id);
|
|
80
|
+
kindMap.set(kind, list);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
for (const [kind, ids] of kindMap) {
|
|
84
|
+
if (ids.length >= 3) {
|
|
85
|
+
const captures = sorted.filter((i) => ids.includes(i.id));
|
|
86
|
+
trends.push({
|
|
87
|
+
title: `Component kind "${kind}" in ${ids.length} captures`,
|
|
88
|
+
signal: determineSignal(ids, allIds),
|
|
89
|
+
domain: 'components',
|
|
90
|
+
evidence: ids.map((id) => `[[${id}]]`),
|
|
91
|
+
firstSeen: captures[0].capturedAt.slice(0, 10),
|
|
92
|
+
lastSeen: captures.at(-1).capturedAt.slice(0, 10),
|
|
93
|
+
occurrences: ids.length,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Motion trends — easing curves in 3+ captures
|
|
98
|
+
const easingMap = new Map();
|
|
99
|
+
for (const inspo of sorted) {
|
|
100
|
+
const easings = new Set(inspo.analysis.motion.flatMap((m) => (m.transitions ?? []).map((t) => t.timingFunction)).filter(Boolean));
|
|
101
|
+
for (const easing of easings) {
|
|
102
|
+
const list = easingMap.get(easing) ?? [];
|
|
103
|
+
list.push(inspo.id);
|
|
104
|
+
easingMap.set(easing, list);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
for (const [easing, ids] of easingMap) {
|
|
108
|
+
if (ids.length >= 3) {
|
|
109
|
+
const captures = sorted.filter((i) => ids.includes(i.id));
|
|
110
|
+
trends.push({
|
|
111
|
+
title: `Easing "${easing}" in ${ids.length} captures`,
|
|
112
|
+
signal: determineSignal(ids, allIds),
|
|
113
|
+
domain: 'motion',
|
|
114
|
+
evidence: ids.map((id) => `[[${id}]]`),
|
|
115
|
+
firstSeen: captures[0].capturedAt.slice(0, 10),
|
|
116
|
+
lastSeen: captures.at(-1).capturedAt.slice(0, 10),
|
|
117
|
+
occurrences: ids.length,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return trends;
|
|
122
|
+
}
|
|
123
|
+
function renderTrendNote(trend, today) {
|
|
124
|
+
return `---
|
|
125
|
+
type: trend
|
|
126
|
+
title: "${trend.title}"
|
|
127
|
+
signal: ${trend.signal}
|
|
128
|
+
domain: ${trend.domain}
|
|
129
|
+
evidence: [${trend.evidence.map((e) => `"${e}"`).join(', ')}]
|
|
130
|
+
first_seen: ${trend.firstSeen}
|
|
131
|
+
last_seen: ${trend.lastSeen}
|
|
132
|
+
occurrences: ${trend.occurrences}
|
|
133
|
+
created: ${today}
|
|
134
|
+
updated: ${today}
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
# ${trend.title}
|
|
138
|
+
|
|
139
|
+
**Signal:** ${trend.signal}
|
|
140
|
+
**Domain:** ${trend.domain}
|
|
141
|
+
**Occurrences:** ${trend.occurrences}
|
|
142
|
+
**First seen:** ${trend.firstSeen}
|
|
143
|
+
**Last seen:** ${trend.lastSeen}
|
|
144
|
+
|
|
145
|
+
## Evidence
|
|
146
|
+
|
|
147
|
+
${trend.evidence.map((e) => `- ${e}`).join('\n')}
|
|
148
|
+
`;
|
|
149
|
+
}
|
|
150
|
+
function slugifyTrend(title) {
|
|
151
|
+
return title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 80);
|
|
152
|
+
}
|
|
153
|
+
export async function writeTrendNotes(rootDir, trends) {
|
|
154
|
+
const root = brainRoot(rootDir);
|
|
155
|
+
const trendDir = path.join(root, 'notes', 'trends');
|
|
156
|
+
await fs.ensureDir(trendDir);
|
|
157
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
158
|
+
let written = 0;
|
|
159
|
+
for (const trend of trends) {
|
|
160
|
+
const filename = `${slugifyTrend(trend.title)}.md`;
|
|
161
|
+
const filepath = path.join(trendDir, filename);
|
|
162
|
+
await fs.writeFile(filepath, renderTrendNote(trend, today));
|
|
163
|
+
written++;
|
|
164
|
+
}
|
|
165
|
+
// Update trends MOC
|
|
166
|
+
const mocPath = path.join(root, 'notes', 'mocs', 'trends.md');
|
|
167
|
+
const mocLines = [
|
|
168
|
+
'# Trends Map of Content\n',
|
|
169
|
+
`Updated: ${today}\n`,
|
|
170
|
+
`## Active Trends (${trends.length})\n`,
|
|
171
|
+
];
|
|
172
|
+
for (const trend of trends) {
|
|
173
|
+
mocLines.push(`- **${trend.signal}** ${trend.title} (${trend.occurrences} occurrences)`);
|
|
174
|
+
}
|
|
175
|
+
await fs.writeFile(mocPath, mocLines.join('\n') + '\n');
|
|
176
|
+
return written;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=trends.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trends.js","sourceRoot":"","sources":["../src/trends.ts"],"names":[],"mappings":"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"}
|