@aexol/spectral 0.7.1 โ 0.7.5
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/CHANGELOG.md +5 -0
- package/dist/agent/agents.js +1 -1
- package/dist/agent/index.js +199 -184
- package/dist/commands/serve.js +0 -3
- package/dist/designer/data/systems/renault/DESIGN.md +1 -1
- package/dist/designer/philosophies.js +668 -0
- package/dist/mcp/sampling-handler.js +1 -1
- package/dist/memory/commands/status.js +1 -1
- package/dist/memory/compaction.js +2 -2
- package/dist/memory/config.js +1 -1
- package/dist/memory/debug-log.js +1 -1
- package/dist/memory/hooks/compaction-hook.js +29 -0
- package/dist/memory/index.js +2 -0
- package/dist/memory/observer.js +2 -2
- package/dist/memory/project-observations-store.js +14 -0
- package/dist/memory/tokens.js +1 -1
- package/dist/memory/tools/read-project-observations.js +82 -0
- package/dist/memory/tools/recall-observation.js +2 -2
- package/dist/pi/agent-core/agent-loop.js +501 -0
- package/dist/pi/agent-core/agent.js +401 -0
- package/dist/pi/agent-core/harness/agent-harness.js +899 -0
- package/dist/pi/agent-core/harness/compaction/branch-summarization.js +173 -0
- package/dist/pi/agent-core/harness/compaction/compaction.js +532 -0
- package/dist/pi/agent-core/harness/compaction/utils.js +130 -0
- package/dist/pi/agent-core/harness/env/nodejs.js +485 -0
- package/dist/pi/agent-core/harness/messages.js +101 -0
- package/dist/pi/agent-core/harness/prompt-templates.js +229 -0
- package/dist/pi/agent-core/harness/session/jsonl-repo.js +100 -0
- package/dist/pi/agent-core/harness/session/jsonl-storage.js +230 -0
- package/dist/pi/agent-core/harness/session/memory-repo.js +41 -0
- package/dist/pi/agent-core/harness/session/memory-storage.js +113 -0
- package/dist/pi/agent-core/harness/session/repo-utils.js +38 -0
- package/dist/pi/agent-core/harness/session/session.js +196 -0
- package/dist/pi/agent-core/harness/session/uuid.js +49 -0
- package/dist/pi/agent-core/harness/skills.js +310 -0
- package/dist/pi/agent-core/harness/system-prompt.js +29 -0
- package/dist/pi/agent-core/harness/types.js +93 -0
- package/dist/pi/agent-core/harness/utils/shell-output.js +125 -0
- package/dist/pi/agent-core/harness/utils/truncate.js +289 -0
- package/dist/pi/agent-core/index.js +24 -0
- package/dist/pi/agent-core/node.js +2 -0
- package/dist/pi/agent-core/proxy.js +277 -0
- package/dist/pi/agent-core/types.js +1 -0
- package/dist/pi/ai/api-registry.js +43 -0
- package/dist/pi/ai/cli.js +120 -0
- package/dist/pi/ai/env-api-keys.js +169 -0
- package/dist/pi/ai/image-models.generated.js +441 -0
- package/dist/pi/ai/image-models.js +22 -0
- package/dist/pi/ai/images-api-registry.js +21 -0
- package/dist/pi/ai/images.js +13 -0
- package/dist/pi/ai/index.js +18 -0
- package/dist/pi/ai/models.generated.js +16220 -0
- package/dist/pi/ai/models.js +70 -0
- package/dist/pi/ai/oauth.js +1 -0
- package/dist/pi/ai/providers/anthropic.js +945 -0
- package/dist/pi/ai/providers/faux.js +367 -0
- package/dist/pi/ai/providers/github-copilot-headers.js +28 -0
- package/dist/pi/ai/providers/openai-completions.js +945 -0
- package/dist/pi/ai/providers/openai-prompt-cache.js +9 -0
- package/dist/pi/ai/providers/register-builtins.js +97 -0
- package/dist/pi/ai/providers/simple-options.js +40 -0
- package/dist/pi/ai/providers/transform-messages.js +183 -0
- package/dist/pi/ai/session-resources.js +21 -0
- package/dist/pi/ai/stream.js +26 -0
- package/dist/pi/ai/types.js +1 -0
- package/dist/pi/ai/utils/diagnostics.js +24 -0
- package/dist/pi/ai/utils/event-stream.js +80 -0
- package/dist/pi/ai/utils/hash.js +13 -0
- package/dist/pi/ai/utils/headers.js +7 -0
- package/dist/pi/ai/utils/json-parse.js +112 -0
- package/dist/pi/ai/utils/node-http-proxy.js +96 -0
- package/dist/pi/ai/utils/oauth/anthropic.js +334 -0
- package/dist/pi/ai/utils/oauth/device-code.js +54 -0
- package/dist/pi/ai/utils/oauth/github-copilot.js +270 -0
- package/dist/pi/ai/utils/oauth/index.js +121 -0
- package/dist/pi/ai/utils/oauth/oauth-page.js +104 -0
- package/dist/pi/ai/utils/oauth/openai-codex.js +384 -0
- package/dist/pi/ai/utils/oauth/pkce.js +30 -0
- package/dist/pi/ai/utils/oauth/types.js +1 -0
- package/dist/pi/ai/utils/overflow.js +150 -0
- package/dist/pi/ai/utils/sanitize-unicode.js +25 -0
- package/dist/pi/ai/utils/typebox-helpers.js +20 -0
- package/dist/pi/ai/utils/validation.js +280 -0
- package/dist/pi/coding-agent/bun/cli.js +7 -0
- package/dist/pi/coding-agent/bun/restore-sandbox-env.js +31 -0
- package/dist/pi/coding-agent/cli/args.js +340 -0
- package/dist/pi/coding-agent/cli/file-processor.js +82 -0
- package/dist/pi/coding-agent/cli/initial-message.js +21 -0
- package/dist/pi/coding-agent/cli.js +17 -0
- package/dist/pi/coding-agent/config.js +414 -0
- package/dist/pi/coding-agent/core/agent-session-runtime.js +299 -0
- package/dist/pi/coding-agent/core/agent-session-services.js +117 -0
- package/dist/pi/coding-agent/core/agent-session.js +2498 -0
- package/dist/pi/coding-agent/core/auth-guidance.js +20 -0
- package/dist/pi/coding-agent/core/auth-storage.js +441 -0
- package/dist/pi/coding-agent/core/bash-executor.js +110 -0
- package/dist/pi/coding-agent/core/compaction/branch-summarization.js +242 -0
- package/dist/pi/coding-agent/core/compaction/compaction.js +624 -0
- package/dist/pi/coding-agent/core/compaction/index.js +6 -0
- package/dist/pi/coding-agent/core/compaction/utils.js +152 -0
- package/dist/pi/coding-agent/core/defaults.js +1 -0
- package/dist/pi/coding-agent/core/diagnostics.js +1 -0
- package/dist/pi/coding-agent/core/event-bus.js +24 -0
- package/dist/pi/coding-agent/core/exec.js +74 -0
- package/dist/pi/coding-agent/core/export-html/ansi-to-html.js +248 -0
- package/dist/pi/coding-agent/core/export-html/index.js +225 -0
- package/dist/pi/coding-agent/core/export-html/tool-renderer.js +107 -0
- package/dist/pi/coding-agent/core/extensions/index.js +8 -0
- package/dist/pi/coding-agent/core/extensions/loader.js +485 -0
- package/dist/pi/coding-agent/core/extensions/runner.js +824 -0
- package/dist/pi/coding-agent/core/extensions/types.js +44 -0
- package/dist/pi/coding-agent/core/extensions/wrapper.js +21 -0
- package/dist/pi/coding-agent/core/footer-data-provider.js +309 -0
- package/dist/pi/coding-agent/core/http-dispatcher.js +47 -0
- package/dist/pi/coding-agent/core/index.js +11 -0
- package/dist/pi/coding-agent/core/keybindings.js +294 -0
- package/dist/pi/coding-agent/core/messages.js +122 -0
- package/dist/pi/coding-agent/core/model-registry.js +728 -0
- package/dist/pi/coding-agent/core/model-resolver.js +494 -0
- package/dist/pi/coding-agent/core/output-guard.js +58 -0
- package/dist/pi/coding-agent/core/package-manager.js +2020 -0
- package/dist/pi/coding-agent/core/prompt-templates.js +237 -0
- package/dist/pi/coding-agent/core/provider-display-names.js +32 -0
- package/dist/pi/coding-agent/core/resolve-config-value.js +125 -0
- package/dist/pi/coding-agent/core/resource-loader.js +733 -0
- package/dist/pi/coding-agent/core/sdk.js +282 -0
- package/dist/pi/coding-agent/core/session-cwd.js +37 -0
- package/dist/pi/coding-agent/core/session-manager.js +1146 -0
- package/dist/pi/coding-agent/core/settings-manager.js +794 -0
- package/dist/pi/coding-agent/core/skills.js +386 -0
- package/dist/pi/coding-agent/core/slash-commands.js +24 -0
- package/dist/pi/coding-agent/core/source-info.js +18 -0
- package/dist/pi/coding-agent/core/system-prompt.js +122 -0
- package/dist/pi/coding-agent/core/telemetry.js +8 -0
- package/dist/pi/coding-agent/core/timings.js +30 -0
- package/dist/pi/coding-agent/core/tools/bash.js +341 -0
- package/dist/pi/coding-agent/core/tools/edit-diff.js +344 -0
- package/dist/pi/coding-agent/core/tools/edit.js +324 -0
- package/dist/pi/coding-agent/core/tools/file-mutation-queue.js +36 -0
- package/dist/pi/coding-agent/core/tools/find.js +297 -0
- package/dist/pi/coding-agent/core/tools/grep.js +303 -0
- package/dist/pi/coding-agent/core/tools/index.js +111 -0
- package/dist/pi/coding-agent/core/tools/ls.js +168 -0
- package/dist/pi/coding-agent/core/tools/output-accumulator.js +183 -0
- package/dist/pi/coding-agent/core/tools/path-utils.js +61 -0
- package/dist/pi/coding-agent/core/tools/read.js +288 -0
- package/dist/pi/coding-agent/core/tools/render-utils.js +48 -0
- package/dist/pi/coding-agent/core/tools/tool-definition-wrapper.js +33 -0
- package/dist/pi/coding-agent/core/tools/truncate.js +214 -0
- package/dist/pi/coding-agent/core/tools/write.js +212 -0
- package/dist/pi/coding-agent/index.js +41 -0
- package/dist/pi/coding-agent/main.js +5 -0
- package/dist/pi/coding-agent/migrations.js +280 -0
- package/dist/pi/coding-agent/modes/index.js +7 -0
- package/dist/pi/coding-agent/modes/interactive/components/diff.js +132 -0
- package/dist/pi/coding-agent/modes/interactive/components/keybinding-hints.js +35 -0
- package/dist/pi/coding-agent/modes/interactive/components/visual-truncate.js +32 -0
- package/dist/pi/coding-agent/modes/interactive/interactive-mode.js +3 -0
- package/dist/pi/coding-agent/modes/interactive/theme/theme.js +1023 -0
- package/dist/pi/coding-agent/modes/print-mode.js +130 -0
- package/dist/pi/coding-agent/modes/rpc/jsonl.js +48 -0
- package/dist/pi/coding-agent/modes/rpc/rpc-client.js +409 -0
- package/dist/pi/coding-agent/modes/rpc/rpc-mode.js +600 -0
- package/dist/pi/coding-agent/modes/rpc/rpc-types.js +7 -0
- package/dist/pi/coding-agent/utils/ansi.js +51 -0
- package/dist/pi/coding-agent/utils/changelog.js +86 -0
- package/dist/pi/coding-agent/utils/child-process.js +87 -0
- package/dist/pi/coding-agent/utils/clipboard-image.js +244 -0
- package/dist/pi/coding-agent/utils/clipboard-native.js +13 -0
- package/dist/pi/coding-agent/utils/clipboard.js +116 -0
- package/dist/pi/coding-agent/utils/exif-orientation.js +157 -0
- package/dist/pi/coding-agent/utils/frontmatter.js +25 -0
- package/dist/pi/coding-agent/utils/fs-watch.js +24 -0
- package/dist/pi/coding-agent/utils/git.js +162 -0
- package/dist/pi/coding-agent/utils/html.js +39 -0
- package/dist/pi/coding-agent/utils/image-convert.js +38 -0
- package/dist/pi/coding-agent/utils/image-resize.js +136 -0
- package/dist/pi/coding-agent/utils/mime.js +68 -0
- package/dist/pi/coding-agent/utils/paths.js +91 -0
- package/dist/pi/coding-agent/utils/photon.js +120 -0
- package/dist/pi/coding-agent/utils/pi-user-agent.js +4 -0
- package/dist/pi/coding-agent/utils/shell.js +194 -0
- package/dist/pi/coding-agent/utils/sleep.js +16 -0
- package/dist/pi/coding-agent/utils/syntax-highlight.js +117 -0
- package/dist/pi/coding-agent/utils/tools-manager.js +327 -0
- package/dist/pi/coding-agent/utils/version-check.js +81 -0
- package/dist/pi/coding-agent/utils/windows-self-update.js +76 -0
- package/dist/pi/tui/autocomplete.js +631 -0
- package/dist/pi/tui/components/box.js +103 -0
- package/dist/pi/tui/components/cancellable-loader.js +34 -0
- package/dist/pi/tui/components/editor.js +1915 -0
- package/dist/pi/tui/components/image.js +88 -0
- package/dist/pi/tui/components/input.js +425 -0
- package/dist/pi/tui/components/loader.js +68 -0
- package/dist/pi/tui/components/markdown.js +633 -0
- package/dist/pi/tui/components/select-list.js +158 -0
- package/dist/pi/tui/components/settings-list.js +184 -0
- package/dist/pi/tui/components/spacer.js +22 -0
- package/dist/pi/tui/components/text.js +88 -0
- package/dist/pi/tui/components/truncated-text.js +50 -0
- package/dist/pi/tui/editor-component.js +1 -0
- package/dist/pi/tui/fuzzy.js +109 -0
- package/dist/pi/tui/index.js +31 -0
- package/dist/pi/tui/keybindings.js +173 -0
- package/dist/pi/tui/keys.js +1172 -0
- package/dist/pi/tui/kill-ring.js +43 -0
- package/dist/pi/tui/stdin-buffer.js +360 -0
- package/dist/pi/tui/terminal-image.js +335 -0
- package/dist/pi/tui/terminal.js +324 -0
- package/dist/pi/tui/tui.js +1076 -0
- package/dist/pi/tui/undo-stack.js +24 -0
- package/dist/pi/tui/utils.js +1016 -0
- package/dist/relay/dispatcher.js +30 -0
- package/dist/server/handlers/queue.js +52 -0
- package/dist/server/pi-bridge.js +9 -1
- package/dist/server/session-stream.js +76 -111
- package/dist/server/storage.js +154 -2
- package/dist/server/title-generator.js +14 -153
- package/package.json +24 -6
|
@@ -0,0 +1,668 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design Philosophy Registry โ 20 design philosophies across 5 schools
|
|
3
|
+
*
|
|
4
|
+
* Adapted from Huashu-Design (https://github.com/alchaincyf/huashu-design).
|
|
5
|
+
* These philosophies provide a vocabulary for design direction when the user
|
|
6
|
+
* hasn't specified a concrete design system. They complement the 144 curated
|
|
7
|
+
* design systems and serve as the backbone for designer_recommend.
|
|
8
|
+
*
|
|
9
|
+
* Each philosophy includes:
|
|
10
|
+
* - Core ethos (the "why")
|
|
11
|
+
* - Signature traits (the "what" โ concrete CSS-token-level characteristics)
|
|
12
|
+
* - Best medium (HTML, AI-generated, or Hybrid)
|
|
13
|
+
* - Scene affinity (which content types it shines for)
|
|
14
|
+
* - Anti-patterns (what would violate this philosophy)
|
|
15
|
+
*/
|
|
16
|
+
export const DESIGN_PHILOSOPHIES = [
|
|
17
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
18
|
+
// SCHOOL 1: Information Architecture (01-04)
|
|
19
|
+
// Philosophy: "Data is not decoration โ it is building material"
|
|
20
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
21
|
+
{
|
|
22
|
+
name: "Pentagram ยท Michael Bierut",
|
|
23
|
+
school: "Information Architecture",
|
|
24
|
+
schoolIcon: "๐",
|
|
25
|
+
designer: "Michael Bierut",
|
|
26
|
+
ethos: "Typography is language; the grid is thought.",
|
|
27
|
+
description: "Swiss grid modernism: extreme color restraint (black/white + one brand color), typography as primary visual language, 60%+ whitespace, mathematical spacing. When every pixel earns its place, the message becomes unmissable.",
|
|
28
|
+
traits: [
|
|
29
|
+
"Black + white + single brand accent",
|
|
30
|
+
"Swiss grid with precise mathematical spacing",
|
|
31
|
+
"Typography as the primary visual element",
|
|
32
|
+
"60%+ negative space",
|
|
33
|
+
"Helvetica/Univers or equivalent rationalist type",
|
|
34
|
+
],
|
|
35
|
+
keywords: [
|
|
36
|
+
"restrained", "editorial", "authoritative", "timeless", "grid-based",
|
|
37
|
+
],
|
|
38
|
+
bestMedium: "html",
|
|
39
|
+
sceneAffinity: [
|
|
40
|
+
"landing pages", "slide decks", "editorial", "brand identities",
|
|
41
|
+
],
|
|
42
|
+
antiPatterns: [
|
|
43
|
+
"Gradients of any kind",
|
|
44
|
+
"More than 3 font sizes per page",
|
|
45
|
+
"Decorative elements that don't carry information",
|
|
46
|
+
"Color palettes with more than 3 distinct hues",
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "Stamen ยท Data Poetics",
|
|
51
|
+
school: "Information Architecture",
|
|
52
|
+
schoolIcon: "๐",
|
|
53
|
+
designer: "Stamen Design",
|
|
54
|
+
ethos: "Let data become a landscape you can touch.",
|
|
55
|
+
description: "Cartographic thinking applied to information design: algorithm-generated organic patterns, warm earth-tone palettes (terracotta, sage, deep blue), layered information like topographic maps. Hand-crafted feel despite digital precision.",
|
|
56
|
+
traits: [
|
|
57
|
+
"Warm data palette: terracotta, sage green, deep blues",
|
|
58
|
+
"Algorithm-generated organic patterns",
|
|
59
|
+
"Layered information like topographic maps",
|
|
60
|
+
"Soft shadows and depth",
|
|
61
|
+
"Hand-crafted feel through digital means",
|
|
62
|
+
],
|
|
63
|
+
keywords: [
|
|
64
|
+
"organic", "layered", "warm", "cartographic", "exploratory",
|
|
65
|
+
],
|
|
66
|
+
bestMedium: "hybrid",
|
|
67
|
+
sceneAffinity: [
|
|
68
|
+
"data visualizations", "infographics", "analytics dashboards",
|
|
69
|
+
],
|
|
70
|
+
antiPatterns: [
|
|
71
|
+
"Flat, 2D-only data representation",
|
|
72
|
+
"Cold tech color palettes (neon blues, pure grays)",
|
|
73
|
+
"Over-simplification that loses nuance",
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "iA ยท Content-First",
|
|
78
|
+
school: "Information Architecture",
|
|
79
|
+
schoolIcon: "๐",
|
|
80
|
+
designer: "Information Architects",
|
|
81
|
+
ethos: "Design is not decoration โ it is the architecture of content.",
|
|
82
|
+
description: "Radical content-first hierarchy: system fonts only, classic blue hyperlinks, 66-character reading line length, zero decorative elements. Performance and readability are the only metrics that matter.",
|
|
83
|
+
traits: [
|
|
84
|
+
"System fonts only (SF Pro / Roboto / Inter as fallback)",
|
|
85
|
+
"Classic #0000EE hyperlinks",
|
|
86
|
+
"66-character optimal line length",
|
|
87
|
+
"Zero decorative elements",
|
|
88
|
+
"Progressive disclosure of depth",
|
|
89
|
+
],
|
|
90
|
+
keywords: [
|
|
91
|
+
"clean", "readable", "functional", "fast", "text-heavy",
|
|
92
|
+
],
|
|
93
|
+
bestMedium: "html",
|
|
94
|
+
sceneAffinity: [
|
|
95
|
+
"documentation", "blogs", "long-form content", "knowledge bases",
|
|
96
|
+
],
|
|
97
|
+
antiPatterns: [
|
|
98
|
+
"Custom decorative fonts",
|
|
99
|
+
"Gratuitous images that don't add information",
|
|
100
|
+
"Animation for animation's sake",
|
|
101
|
+
"Fixed-ratio hero images",
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "Fathom ยท Scientific Narrative",
|
|
106
|
+
school: "Information Architecture",
|
|
107
|
+
schoolIcon: "๐",
|
|
108
|
+
designer: "Fathom Information Design",
|
|
109
|
+
ethos: "Every pixel must carry information.",
|
|
110
|
+
description: "Scientific journal rigor meets modern design: precise quantitative visualization, cool neutral palette (grays, navy), footnotes integrated into layout, clean sans-serif. Information density without clutter.",
|
|
111
|
+
traits: [
|
|
112
|
+
"Neutral scheme: grays, navy, one highlight color",
|
|
113
|
+
"Precise charts, timelines, scatter plots",
|
|
114
|
+
"Footnote/citation design integrated into layout",
|
|
115
|
+
"Clean sans-serif (GT America / Graphik family)",
|
|
116
|
+
"Information density without visual clutter",
|
|
117
|
+
],
|
|
118
|
+
keywords: [
|
|
119
|
+
"precise", "scholarly", "neutral", "data-dense", "trustworthy",
|
|
120
|
+
],
|
|
121
|
+
bestMedium: "html",
|
|
122
|
+
sceneAffinity: [
|
|
123
|
+
"reports", "white papers", "annual reviews", "research publications",
|
|
124
|
+
],
|
|
125
|
+
antiPatterns: [
|
|
126
|
+
"Vague or hand-wavy data visualization",
|
|
127
|
+
"Playful/whimsical color choices",
|
|
128
|
+
"Low information density per screen",
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
132
|
+
// SCHOOL 2: Motion Poetics (05-08)
|
|
133
|
+
// Philosophy: "Technology itself is a flowing poem"
|
|
134
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
135
|
+
{
|
|
136
|
+
name: "Locomotive ยท Scroll Narrative",
|
|
137
|
+
school: "Motion Poetics",
|
|
138
|
+
schoolIcon: "๐ฌ",
|
|
139
|
+
designer: "Locomotive",
|
|
140
|
+
ethos: "Scrolling is not browsing โ it is a journey.",
|
|
141
|
+
description: "Film-like scene composition with parallax depth, bold typography emerging from darkness, smooth motion blur, generous vertical spacing. Every scroll event is a scene transition in a cinematic narrative.",
|
|
142
|
+
traits: [
|
|
143
|
+
"Dark mode: near-black backgrounds with strategic glowing accents",
|
|
144
|
+
"Parallax depth layering",
|
|
145
|
+
"Bold typography emerging from darkness",
|
|
146
|
+
"100vh hero sections",
|
|
147
|
+
"Film-like scene transitions",
|
|
148
|
+
],
|
|
149
|
+
keywords: [
|
|
150
|
+
"cinematic", "immersive", "dark", "dramatic", "parallax",
|
|
151
|
+
],
|
|
152
|
+
bestMedium: "hybrid",
|
|
153
|
+
sceneAffinity: [
|
|
154
|
+
"portfolio sites", "brand stories", "product launches", "immersive landing pages",
|
|
155
|
+
],
|
|
156
|
+
antiPatterns: [
|
|
157
|
+
"Flat layouts with no depth",
|
|
158
|
+
"Light/white backgrounds (kills the cinematic feel)",
|
|
159
|
+
"Static content with no scroll response",
|
|
160
|
+
],
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: "Active Theory ยท WebGL Poetics",
|
|
164
|
+
school: "Motion Poetics",
|
|
165
|
+
schoolIcon: "๐ฌ",
|
|
166
|
+
designer: "Active Theory",
|
|
167
|
+
ethos: "Making technology visible is making it understandable.",
|
|
168
|
+
description: "3D particle systems representing data flow, real-time WebGL rendering, mouse-reactive environments, neon gradients (cyan/magenta/electric blue) on dark, floating UI with glassmorphism touches.",
|
|
169
|
+
traits: [
|
|
170
|
+
"Particle systems representing data/code flow",
|
|
171
|
+
"3D visualization in depth space",
|
|
172
|
+
"Neon gradients: cyan, magenta, electric blue",
|
|
173
|
+
"Mouse-reactive interactive environments",
|
|
174
|
+
"Depth of field and bokeh effects",
|
|
175
|
+
],
|
|
176
|
+
keywords: [
|
|
177
|
+
"futuristic", "interactive", "neon", "particle", "3D",
|
|
178
|
+
],
|
|
179
|
+
bestMedium: "ai-generated",
|
|
180
|
+
sceneAffinity: [
|
|
181
|
+
"hero animations", "tech product showcases", "conference visuals",
|
|
182
|
+
],
|
|
183
|
+
antiPatterns: [
|
|
184
|
+
"Flat/static layouts",
|
|
185
|
+
"Traditional earth-tone or muted color schemes",
|
|
186
|
+
"Low-contrast, text-heavy designs",
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: "Field.io ยท Generative Aesthetic",
|
|
191
|
+
school: "Motion Poetics",
|
|
192
|
+
schoolIcon: "๐ฌ",
|
|
193
|
+
designer: "Field.io",
|
|
194
|
+
ethos: "Code is the designer.",
|
|
195
|
+
description: "Abstract geometric patterns generated by algorithms, monochromatic base with vibrant accents, mathematical precision in spacing. Voronoi tessellations, Delaunay triangulations, computational beauty as visual language.",
|
|
196
|
+
traits: [
|
|
197
|
+
"Monochromatic base + one vibrant accent",
|
|
198
|
+
"Voronoi/Delaunay pattern systems",
|
|
199
|
+
"Mathematical precision in all spacing",
|
|
200
|
+
"Clean code-as-aesthetic sensibility",
|
|
201
|
+
"Dynamic, algorithm-responsive compositions",
|
|
202
|
+
],
|
|
203
|
+
keywords: [
|
|
204
|
+
"generative", "mathematical", "abstract", "precise", "computational",
|
|
205
|
+
],
|
|
206
|
+
bestMedium: "ai-generated",
|
|
207
|
+
sceneAffinity: [
|
|
208
|
+
"brand visuals", "event graphics", "music/art festival sites",
|
|
209
|
+
],
|
|
210
|
+
antiPatterns: [
|
|
211
|
+
"Hand-drawn or sketch-like aesthetics",
|
|
212
|
+
"Rounded, friendly, organic shapes",
|
|
213
|
+
"Traditional photographic hero images",
|
|
214
|
+
],
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: "Resn ยท Interactive Storytelling",
|
|
218
|
+
school: "Motion Poetics",
|
|
219
|
+
schoolIcon: "๐ฌ",
|
|
220
|
+
designer: "Resn",
|
|
221
|
+
ethos: "Every click advances the story.",
|
|
222
|
+
description: "Gamified user journeys with illustrative + UI hybrid style, scroll-triggered animations, character-driven design, warm color palettes. The interface is a narrative engine โ users progress through a story, they don't just browse.",
|
|
223
|
+
traits: [
|
|
224
|
+
"Illustrative + UI element hybrid style",
|
|
225
|
+
"Gamified exploration with progress indicators",
|
|
226
|
+
"Warm color palette despite tech subject matter",
|
|
227
|
+
"Character-driven design with editorial illustration",
|
|
228
|
+
"Scroll-triggered narrative beats",
|
|
229
|
+
],
|
|
230
|
+
keywords: [
|
|
231
|
+
"playful", "narrative", "illustrative", "gamified", "warm",
|
|
232
|
+
],
|
|
233
|
+
bestMedium: "hybrid",
|
|
234
|
+
sceneAffinity: [
|
|
235
|
+
"interactive stories", "game-like experiences", "educational content",
|
|
236
|
+
],
|
|
237
|
+
antiPatterns: [
|
|
238
|
+
"Static, non-interactive layouts",
|
|
239
|
+
"Cold corporate color schemes",
|
|
240
|
+
"Generic SaaS landing page patterns",
|
|
241
|
+
],
|
|
242
|
+
},
|
|
243
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
244
|
+
// SCHOOL 3: Minimalism (09-12)
|
|
245
|
+
// Philosophy: "Subtract until nothing more can be removed"
|
|
246
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
247
|
+
{
|
|
248
|
+
name: "Experimental Jetset ยท Conceptual Minimalism",
|
|
249
|
+
school: "Minimalism",
|
|
250
|
+
schoolIcon: "โป๏ธ",
|
|
251
|
+
designer: "Experimental Jetset",
|
|
252
|
+
ethos: "One idea = one form.",
|
|
253
|
+
description: "Single visual metaphor per design, Mondrian-esque primary colors (red/blue/yellow + black/white), typography as the only graphic element, grid-based with deliberate rule-breaking. Anti-commercial honesty as aesthetic.",
|
|
254
|
+
traits: [
|
|
255
|
+
"Primary colors only: red, blue, yellow + black/white",
|
|
256
|
+
"Typography as the only graphic element",
|
|
257
|
+
"Grid-based with deliberate rule-breaking moments",
|
|
258
|
+
"No photography โ type and geometry only",
|
|
259
|
+
"Single visual metaphor per design",
|
|
260
|
+
],
|
|
261
|
+
keywords: [
|
|
262
|
+
"conceptual", "bold", "primary", "typographic", "anti-commercial",
|
|
263
|
+
],
|
|
264
|
+
bestMedium: "hybrid",
|
|
265
|
+
sceneAffinity: [
|
|
266
|
+
"posters", "editorial design", "brand identities", "album art",
|
|
267
|
+
],
|
|
268
|
+
antiPatterns: [
|
|
269
|
+
"Photography",
|
|
270
|
+
"Gradients or soft textures",
|
|
271
|
+
"More than 4 colors in the palette",
|
|
272
|
+
"Generic sans-serif body type",
|
|
273
|
+
],
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: "Mรผller-Brockmann ยท Swiss Grid Purism",
|
|
277
|
+
school: "Minimalism",
|
|
278
|
+
schoolIcon: "โป๏ธ",
|
|
279
|
+
designer: "Josef Mรผller-Brockmann",
|
|
280
|
+
ethos: "Objectivity is beauty.",
|
|
281
|
+
description: "Mathematical 8pt baseline grid, absolute left-alignment or centered, two-color maximum (black + one accent), Akzidenz-Grotesk or similar rationalist typeface. No decoration. Functionalism is the only aesthetic principle.",
|
|
282
|
+
traits: [
|
|
283
|
+
"Mathematical 8pt baseline grid",
|
|
284
|
+
"Two colors maximum: black + one accent",
|
|
285
|
+
"Absolute alignment (flush left or centered)",
|
|
286
|
+
"Akzidenz-Grotesk / Univers rationalist type",
|
|
287
|
+
"Zero decorative elements",
|
|
288
|
+
],
|
|
289
|
+
keywords: [
|
|
290
|
+
"geometric", "rational", "objective", "grid", "pure",
|
|
291
|
+
],
|
|
292
|
+
bestMedium: "html",
|
|
293
|
+
sceneAffinity: [
|
|
294
|
+
"slide decks", "posters", "editorial layouts", "corporate identity",
|
|
295
|
+
],
|
|
296
|
+
antiPatterns: [
|
|
297
|
+
"Any decoration that doesn't serve function",
|
|
298
|
+
"Asymmetry without purpose",
|
|
299
|
+
"Color used emotionally rather than systematically",
|
|
300
|
+
"More than 2 type families",
|
|
301
|
+
],
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
name: "Build ยท Luxury Minimalism",
|
|
305
|
+
school: "Minimalism",
|
|
306
|
+
schoolIcon: "โป๏ธ",
|
|
307
|
+
designer: "Build Studio",
|
|
308
|
+
ethos: "Refined simplicity is harder than complexity.",
|
|
309
|
+
description: "Luxury-level whitespace (70%+), subtle type weight shifts (200โ600), single accent color used sparingly, high-end product photography aesthetic, golden-ratio proportions. The object itself is the hero.",
|
|
310
|
+
traits: [
|
|
311
|
+
"70%+ whitespace",
|
|
312
|
+
"Subtle type weight shifts (200 to 600)",
|
|
313
|
+
"Single accent color used sparingly",
|
|
314
|
+
"Golden ratio proportions",
|
|
315
|
+
"High-end photography aesthetic",
|
|
316
|
+
],
|
|
317
|
+
keywords: [
|
|
318
|
+
"luxurious", "refined", "spacious", "premium", "photographic",
|
|
319
|
+
],
|
|
320
|
+
bestMedium: "html",
|
|
321
|
+
sceneAffinity: [
|
|
322
|
+
"luxury brand sites", "premium product pages", "fashion", "architecture",
|
|
323
|
+
],
|
|
324
|
+
antiPatterns: [
|
|
325
|
+
"Crowded layouts",
|
|
326
|
+
"Multiple competing accent colors",
|
|
327
|
+
"Bold, chunky type that fights the photography",
|
|
328
|
+
"Low-resolution or stock photography",
|
|
329
|
+
],
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
name: "Sagmeister & Walsh ยท Joyful Minimalism",
|
|
333
|
+
school: "Minimalism",
|
|
334
|
+
schoolIcon: "โป๏ธ",
|
|
335
|
+
designer: "Sagmeister & Walsh",
|
|
336
|
+
ethos: "Beauty is the emotional dimension of function.",
|
|
337
|
+
description: "Unexpected color bursts on a minimal base, handmade elements mixed with digital precision, optimistic visual language, experimental typography that stays readable. Imperfection as human warmth โ analog meets digital.",
|
|
338
|
+
traits: [
|
|
339
|
+
"Unexpected color bursts on minimal base",
|
|
340
|
+
"Handmade elements + digital precision",
|
|
341
|
+
"Optimistic, warm visual language",
|
|
342
|
+
"Experimental but readable typography",
|
|
343
|
+
"Imperfection as deliberate human touch",
|
|
344
|
+
],
|
|
345
|
+
keywords: [
|
|
346
|
+
"joyful", "experimental", "human", "colorful", "bold",
|
|
347
|
+
],
|
|
348
|
+
bestMedium: "ai-generated",
|
|
349
|
+
sceneAffinity: [
|
|
350
|
+
"brand campaigns", "posters", "festival graphics", "creative portfolios",
|
|
351
|
+
],
|
|
352
|
+
antiPatterns: [
|
|
353
|
+
"Sterile, machine-perfect execution",
|
|
354
|
+
"Muted, corporate color palettes",
|
|
355
|
+
"Safe, predictable layout choices",
|
|
356
|
+
],
|
|
357
|
+
},
|
|
358
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
359
|
+
// SCHOOL 4: Experimental Avant-Garde (13-16)
|
|
360
|
+
// Philosophy: "Breaking rules is creating rules"
|
|
361
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
362
|
+
{
|
|
363
|
+
name: "Zach Lieberman ยท Code Poetry",
|
|
364
|
+
school: "Experimental Avant-Garde",
|
|
365
|
+
schoolIcon: "โก",
|
|
366
|
+
designer: "Zach Lieberman",
|
|
367
|
+
ethos: "Programming is painting.",
|
|
368
|
+
description: "Hand-drawn aesthetic generated by code, black-and-white purity, real-time generative systems, visible process lines and construction grids. The algorithm itself becomes the art โ poetic interpretation of computation.",
|
|
369
|
+
traits: [
|
|
370
|
+
"Black and white only โ zero color",
|
|
371
|
+
"Hand-drawn aesthetic from algorithmic generation",
|
|
372
|
+
"Visible process/grid/construction lines",
|
|
373
|
+
"Sketch-like line quality",
|
|
374
|
+
"Poetic interpretation of algorithms",
|
|
375
|
+
],
|
|
376
|
+
keywords: [
|
|
377
|
+
"generative", "sketch-like", "monochrome", "algorithmic", "poetic",
|
|
378
|
+
],
|
|
379
|
+
bestMedium: "ai-generated",
|
|
380
|
+
sceneAffinity: [
|
|
381
|
+
"code art", "creative coding demos", "experimental posters",
|
|
382
|
+
],
|
|
383
|
+
antiPatterns: [
|
|
384
|
+
"Any use of color",
|
|
385
|
+
"Polished, commercial finish",
|
|
386
|
+
"Hidden process โ the construction should be visible",
|
|
387
|
+
],
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
name: "Raven Kwok ยท Parametric Aesthetic",
|
|
391
|
+
school: "Experimental Avant-Garde",
|
|
392
|
+
schoolIcon: "โก",
|
|
393
|
+
designer: "Raven Kwok",
|
|
394
|
+
ethos: "The beauty of the system surpasses the beauty of the individual.",
|
|
395
|
+
description: "Fractal and recursive structures, high-contrast black and white, architectural information visualization, Chinese garden principles translated into algorithms. Intricate detail that rewards zooming.",
|
|
396
|
+
traits: [
|
|
397
|
+
"Fractal and recursive structures",
|
|
398
|
+
"High-contrast black and white",
|
|
399
|
+
"Architectural information visualization",
|
|
400
|
+
"Chinese garden spatial principles in algorithmic form",
|
|
401
|
+
"Intricate detail rewarding exploration",
|
|
402
|
+
],
|
|
403
|
+
keywords: [
|
|
404
|
+
"fractal", "recursive", "intricate", "spatial", "parametric",
|
|
405
|
+
],
|
|
406
|
+
bestMedium: "ai-generated",
|
|
407
|
+
sceneAffinity: [
|
|
408
|
+
"generative art", "installation visuals", "scientific visualization",
|
|
409
|
+
],
|
|
410
|
+
antiPatterns: [
|
|
411
|
+
"Simple, flat compositions",
|
|
412
|
+
"Pastel or muted color schemes",
|
|
413
|
+
"Low-detail, fast-to-process visuals",
|
|
414
|
+
],
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
name: "Ash Thorp ยท Cinematic Cyberpunk",
|
|
418
|
+
school: "Experimental Avant-Garde",
|
|
419
|
+
schoolIcon: "โก",
|
|
420
|
+
designer: "Ash Thorp",
|
|
421
|
+
ethos: "The future is not cold โ it is a lonely poem.",
|
|
422
|
+
description: "Film-grade lighting and atmospheric effects, warm cyberpunk (orange/teal โ NOT cold blue), narrative concept art feel, volumetric lighting with god rays. Blade Runner warmth over Tron coldness.",
|
|
423
|
+
traits: [
|
|
424
|
+
"Warm cyberpunk: orange + teal, not cold blue",
|
|
425
|
+
"Film-grade volumetric lighting and god rays",
|
|
426
|
+
"Industrial design meets luxury",
|
|
427
|
+
"Narrative concept art feel",
|
|
428
|
+
"Atmospheric depth and mood",
|
|
429
|
+
],
|
|
430
|
+
keywords: [
|
|
431
|
+
"cinematic", "atmospheric", "cyberpunk", "warm", "conceptual",
|
|
432
|
+
],
|
|
433
|
+
bestMedium: "ai-generated",
|
|
434
|
+
sceneAffinity: [
|
|
435
|
+
"concept art", "sci-fi visuals", "product launch films", "game visuals",
|
|
436
|
+
],
|
|
437
|
+
antiPatterns: [
|
|
438
|
+
"Cold blue/purple cyberpunk clichรฉs",
|
|
439
|
+
"Flat, unlit compositions",
|
|
440
|
+
"Overly clean, sterile sci-fi",
|
|
441
|
+
],
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
name: "Territory ยท FUI (Fantasy UI)",
|
|
445
|
+
school: "Experimental Avant-Garde",
|
|
446
|
+
schoolIcon: "โก",
|
|
447
|
+
designer: "Territory Studio",
|
|
448
|
+
ethos: "Tomorrow's interfaces, imagined today.",
|
|
449
|
+
description: "Sci-fi screen graphics: holographic projection aesthetics, orange/amber monochrome or cyan accents, multiple overlapping data layers. Believable future technology โ the UI from Blade Runner 2049 made real.",
|
|
450
|
+
traits: [
|
|
451
|
+
"Holographic projection aesthetic",
|
|
452
|
+
"Orange/amber monochrome or cyan accents",
|
|
453
|
+
"Multiple overlapping data layers",
|
|
454
|
+
"Technical readouts and data streams",
|
|
455
|
+
"Believable near-future technology",
|
|
456
|
+
],
|
|
457
|
+
keywords: [
|
|
458
|
+
"futuristic", "holographic", "technical", "layered", "sci-fi",
|
|
459
|
+
],
|
|
460
|
+
bestMedium: "ai-generated",
|
|
461
|
+
sceneAffinity: [
|
|
462
|
+
"tech dashboards", "sci-fi interfaces", "cybersecurity visuals",
|
|
463
|
+
],
|
|
464
|
+
antiPatterns: [
|
|
465
|
+
"Minimal, flat UI patterns",
|
|
466
|
+
"Traditional SaaS dashboard conventions",
|
|
467
|
+
"Rounded, friendly shapes",
|
|
468
|
+
],
|
|
469
|
+
},
|
|
470
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
471
|
+
// SCHOOL 5: Eastern Philosophy (17-20)
|
|
472
|
+
// Philosophy: "Emptiness is content"
|
|
473
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
474
|
+
{
|
|
475
|
+
name: "Takram ยท Japanese Speculative Design",
|
|
476
|
+
school: "Eastern Philosophy",
|
|
477
|
+
schoolIcon: "๐",
|
|
478
|
+
designer: "Takram",
|
|
479
|
+
ethos: "Technology is a medium for thinking.",
|
|
480
|
+
description: "Elegant concept prototypes rendered as design artifacts, soft tech aesthetic (rounded corners, gentle shadows), charts as art pieces, modest sophistication. Design as philosophical inquiry rather than commercial output.",
|
|
481
|
+
traits: [
|
|
482
|
+
"Soft tech: rounded corners, gentle shadows",
|
|
483
|
+
"Elegant concept prototypes as design artifacts",
|
|
484
|
+
"Neutral natural colors: beige, soft gray, muted green",
|
|
485
|
+
"Charts and diagrams as art pieces",
|
|
486
|
+
"Modest, understated sophistication",
|
|
487
|
+
],
|
|
488
|
+
keywords: [
|
|
489
|
+
"speculative", "elegant", "soft", "diagrammatic", "philosophical",
|
|
490
|
+
],
|
|
491
|
+
bestMedium: "html",
|
|
492
|
+
sceneAffinity: [
|
|
493
|
+
"concept presentations", "research showcases", "product visions",
|
|
494
|
+
],
|
|
495
|
+
antiPatterns: [
|
|
496
|
+
"Aggressive, loud marketing language",
|
|
497
|
+
"Hard-edged, sharp-cornered components",
|
|
498
|
+
"Bright, saturated commercial palettes",
|
|
499
|
+
],
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
name: "Kenya Hara ยท Emptiness Design",
|
|
503
|
+
school: "Eastern Philosophy",
|
|
504
|
+
schoolIcon: "๐",
|
|
505
|
+
designer: "Kenya Hara",
|
|
506
|
+
ethos: "Design is not filling โ it is emptying.",
|
|
507
|
+
description: "Extreme whitespace (80%+), paper texture in digital form, layers of white (warm white, cool white, off-white), minimal color (desaturated if any). Zen simplicity โ design by subtraction, never by addition.",
|
|
508
|
+
traits: [
|
|
509
|
+
"80%+ whitespace",
|
|
510
|
+
"Paper texture and tactility in digital form",
|
|
511
|
+
"Layers of white: warm, cool, off-white",
|
|
512
|
+
"Minimal color โ if any, very desaturated",
|
|
513
|
+
"Design by subtraction, never addition",
|
|
514
|
+
],
|
|
515
|
+
keywords: [
|
|
516
|
+
"empty", "zen", "white", "tactile", "subtle",
|
|
517
|
+
],
|
|
518
|
+
bestMedium: "html",
|
|
519
|
+
sceneAffinity: [
|
|
520
|
+
"brand identities", "lifestyle products", "editorial", "minimalist sites",
|
|
521
|
+
],
|
|
522
|
+
antiPatterns: [
|
|
523
|
+
"Any unnecessary element",
|
|
524
|
+
"Dark backgrounds",
|
|
525
|
+
"Multiple competing colors",
|
|
526
|
+
"Busy or information-dense layouts",
|
|
527
|
+
],
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
name: "Irma Boom ยท Book Architecture",
|
|
531
|
+
school: "Eastern Philosophy",
|
|
532
|
+
schoolIcon: "๐",
|
|
533
|
+
designer: "Irma Boom",
|
|
534
|
+
ethos: "Information is physical poetry.",
|
|
535
|
+
description: "Non-linear information structures, play with edges/margins/boundaries, unexpected color combinations (pink+red, orange+brown), handcraft translated to digital. Dense information that invites exploration.",
|
|
536
|
+
traits: [
|
|
537
|
+
"Non-linear information architecture",
|
|
538
|
+
"Play with edges, margins, page boundaries",
|
|
539
|
+
"Unexpected color combos: pink+red, orange+brown",
|
|
540
|
+
"Handcraft feeling in digital execution",
|
|
541
|
+
"Dense, exploration-inviting information design",
|
|
542
|
+
],
|
|
543
|
+
keywords: [
|
|
544
|
+
"editorial", "unconventional", "tactile", "dense", "boundary-pushing",
|
|
545
|
+
],
|
|
546
|
+
bestMedium: "hybrid",
|
|
547
|
+
sceneAffinity: [
|
|
548
|
+
"books", "editorial design", "art catalogs", "experimental publications",
|
|
549
|
+
],
|
|
550
|
+
antiPatterns: [
|
|
551
|
+
"Standard, predictable layouts",
|
|
552
|
+
"Safe, tested color harmonies",
|
|
553
|
+
"Linear, sequential information architecture",
|
|
554
|
+
],
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
name: "Neo Shen ยท Eastern Light Poetry",
|
|
558
|
+
school: "Eastern Philosophy",
|
|
559
|
+
schoolIcon: "๐",
|
|
560
|
+
designer: "Neo Shen",
|
|
561
|
+
ethos: "Technology needs human warmth.",
|
|
562
|
+
description: "Digital ink-wash painting, soft glow and light diffusion, poetic negative space, emotional palette (deep blues, warm grays, soft gold). Calligraphic influences in typography, atmospheric depth, tradition in digital form.",
|
|
563
|
+
traits: [
|
|
564
|
+
"Digital ink-wash painting aesthetic",
|
|
565
|
+
"Soft glow and light diffusion effects",
|
|
566
|
+
"Poetic negative space",
|
|
567
|
+
"Emotional palette: deep blues, warm grays, soft gold",
|
|
568
|
+
"Calligraphic typography influences",
|
|
569
|
+
],
|
|
570
|
+
keywords: [
|
|
571
|
+
"atmospheric", "poetic", "ink-wash", "emotional", "diffused",
|
|
572
|
+
],
|
|
573
|
+
bestMedium: "ai-generated",
|
|
574
|
+
sceneAffinity: [
|
|
575
|
+
"art direction", "cultural content", "atmospheric brand visuals",
|
|
576
|
+
],
|
|
577
|
+
antiPatterns: [
|
|
578
|
+
"Hard, sharp edges and borders",
|
|
579
|
+
"Cold, clinical color palettes",
|
|
580
|
+
"Western sans-serif typography dominance",
|
|
581
|
+
],
|
|
582
|
+
},
|
|
583
|
+
];
|
|
584
|
+
// ---------------------------------------------------------------------------
|
|
585
|
+
// Lookup
|
|
586
|
+
// ---------------------------------------------------------------------------
|
|
587
|
+
export function findPhilosophy(name) {
|
|
588
|
+
const lower = name.toLowerCase().trim();
|
|
589
|
+
return (DESIGN_PHILOSOPHIES.find((p) => p.name.toLowerCase() === lower) ??
|
|
590
|
+
DESIGN_PHILOSOPHIES.find((p) => p.name.toLowerCase().includes(lower)));
|
|
591
|
+
}
|
|
592
|
+
// ---------------------------------------------------------------------------
|
|
593
|
+
// LLM formatters
|
|
594
|
+
// ---------------------------------------------------------------------------
|
|
595
|
+
export function formatPhilosophyForLLM(p) {
|
|
596
|
+
return [
|
|
597
|
+
`# ${p.name}`,
|
|
598
|
+
`> ${p.schoolIcon} School: ${p.school} ยท Designer: ${p.designer}`,
|
|
599
|
+
"",
|
|
600
|
+
`## Ethos`,
|
|
601
|
+
`"${p.ethos}"`,
|
|
602
|
+
"",
|
|
603
|
+
`## Description`,
|
|
604
|
+
p.description,
|
|
605
|
+
"",
|
|
606
|
+
`## Signature Traits`,
|
|
607
|
+
...p.traits.map((t) => `- ${t}`),
|
|
608
|
+
"",
|
|
609
|
+
`## Keywords`,
|
|
610
|
+
p.keywords.join(" ยท "),
|
|
611
|
+
"",
|
|
612
|
+
`## Best Medium`,
|
|
613
|
+
p.bestMedium === "html"
|
|
614
|
+
? "HTML/CSS (precise layout control)"
|
|
615
|
+
: p.bestMedium === "ai-generated"
|
|
616
|
+
? "AI-generated imagery (visual-first compositions)"
|
|
617
|
+
: "Hybrid (HTML layout + AI-generated imagery)",
|
|
618
|
+
"",
|
|
619
|
+
`## Scene Affinity`,
|
|
620
|
+
p.sceneAffinity.join(", "),
|
|
621
|
+
"",
|
|
622
|
+
`## Anti-Patterns (what NOT to do when using this philosophy)`,
|
|
623
|
+
...p.antiPatterns.map((a) => `- โ ${a}`),
|
|
624
|
+
"",
|
|
625
|
+
`## Quick Prompt DNA`,
|
|
626
|
+
"```",
|
|
627
|
+
`${p.designer} style:`,
|
|
628
|
+
...p.traits.map((t) => `- ${t}`),
|
|
629
|
+
"```",
|
|
630
|
+
].join("\n");
|
|
631
|
+
}
|
|
632
|
+
export function listPhilosophiesForLLM() {
|
|
633
|
+
// Group by school
|
|
634
|
+
const bySchool = new Map();
|
|
635
|
+
for (const p of DESIGN_PHILOSOPHIES) {
|
|
636
|
+
const s = p.school;
|
|
637
|
+
if (!bySchool.has(s))
|
|
638
|
+
bySchool.set(s, []);
|
|
639
|
+
bySchool.get(s).push(p);
|
|
640
|
+
}
|
|
641
|
+
const lines = [
|
|
642
|
+
`# Available Design Philosophies (${DESIGN_PHILOSOPHIES.length} total)`,
|
|
643
|
+
"",
|
|
644
|
+
"Grouped by school. Each philosophy is a complete design direction with specific traits, anti-patterns, and scene affinity. Use `designer_get_philosophy` to load the full philosophy guide.",
|
|
645
|
+
"",
|
|
646
|
+
"## School Overview",
|
|
647
|
+
"",
|
|
648
|
+
];
|
|
649
|
+
for (const [school, philosophies] of bySchool) {
|
|
650
|
+
const icon = philosophies[0]?.schoolIcon ?? "";
|
|
651
|
+
lines.push(`### ${icon} ${school}`);
|
|
652
|
+
lines.push("");
|
|
653
|
+
lines.push(`| Philosophy | Designer | Best For | Medium |`);
|
|
654
|
+
lines.push(`|---|---|---|---|`);
|
|
655
|
+
for (const p of philosophies) {
|
|
656
|
+
lines.push(`| **${p.name}** | ${p.designer} | ${p.sceneAffinity.slice(0, 2).join(", ")} | ${p.bestMedium} |`);
|
|
657
|
+
}
|
|
658
|
+
lines.push("");
|
|
659
|
+
}
|
|
660
|
+
lines.push("---");
|
|
661
|
+
lines.push("");
|
|
662
|
+
lines.push("## Quick Reference: All Philosophies");
|
|
663
|
+
lines.push("");
|
|
664
|
+
for (const p of DESIGN_PHILOSOPHIES) {
|
|
665
|
+
lines.push(`- **${p.name}** (${p.school}) โ ${p.ethos}`);
|
|
666
|
+
}
|
|
667
|
+
return lines.join("\n");
|
|
668
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { complete } from "
|
|
1
|
+
import { complete } from "../pi/ai/index.js";
|
|
2
2
|
import { truncateAtWord } from "./utils.js";
|
|
3
3
|
import { CreateMessageRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
4
4
|
export function registerSamplingHandler(client, options) {
|