@houtini/lm 1.0.13 → 2.0.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 (262) hide show
  1. package/dist/index.d.ts +5 -3
  2. package/dist/index.js +142 -213
  3. package/dist/index.js.map +1 -1
  4. package/package.json +10 -33
  5. package/CHANGELOG.md +0 -282
  6. package/dist/cache/analysis-cache.d.ts +0 -33
  7. package/dist/cache/analysis-cache.d.ts.map +0 -1
  8. package/dist/cache/analysis-cache.js +0 -56
  9. package/dist/cache/analysis-cache.js.map +0 -1
  10. package/dist/cache/cache-manager.d.ts +0 -29
  11. package/dist/cache/cache-manager.d.ts.map +0 -1
  12. package/dist/cache/cache-manager.js +0 -85
  13. package/dist/cache/cache-manager.js.map +0 -1
  14. package/dist/cache/index.d.ts +0 -16
  15. package/dist/cache/index.d.ts.map +0 -1
  16. package/dist/cache/index.js +0 -17
  17. package/dist/cache/index.js.map +0 -1
  18. package/dist/cache/prompt-cache.d.ts +0 -33
  19. package/dist/cache/prompt-cache.d.ts.map +0 -1
  20. package/dist/cache/prompt-cache.js +0 -61
  21. package/dist/cache/prompt-cache.js.map +0 -1
  22. package/dist/config.d.ts +0 -41
  23. package/dist/config.d.ts.map +0 -1
  24. package/dist/config.js +0 -71
  25. package/dist/config.js.map +0 -1
  26. package/dist/core/ThreeStagePromptManager.d.ts +0 -23
  27. package/dist/core/ThreeStagePromptManager.d.ts.map +0 -1
  28. package/dist/core/ThreeStagePromptManager.js +0 -118
  29. package/dist/core/ThreeStagePromptManager.js.map +0 -1
  30. package/dist/index.d.ts.map +0 -1
  31. package/dist/plugins/base-plugin.d.ts +0 -55
  32. package/dist/plugins/base-plugin.d.ts.map +0 -1
  33. package/dist/plugins/base-plugin.js +0 -120
  34. package/dist/plugins/base-plugin.js.map +0 -1
  35. package/dist/plugins/index.d.ts +0 -58
  36. package/dist/plugins/index.d.ts.map +0 -1
  37. package/dist/plugins/index.js +0 -162
  38. package/dist/plugins/index.js.map +0 -1
  39. package/dist/plugins/types.d.ts +0 -5
  40. package/dist/plugins/types.d.ts.map +0 -1
  41. package/dist/plugins/types.js +0 -5
  42. package/dist/plugins/types.js.map +0 -1
  43. package/dist/prompts/analyze/code-quality.d.ts +0 -116
  44. package/dist/prompts/analyze/code-quality.d.ts.map +0 -1
  45. package/dist/prompts/analyze/code-quality.js +0 -437
  46. package/dist/prompts/analyze/code-quality.js.map +0 -1
  47. package/dist/prompts/analyze/compare-integration.d.ts +0 -130
  48. package/dist/prompts/analyze/compare-integration.d.ts.map +0 -1
  49. package/dist/prompts/analyze/compare-integration.js +0 -547
  50. package/dist/prompts/analyze/compare-integration.js.map +0 -1
  51. package/dist/prompts/analyze/count-files.d.ts +0 -109
  52. package/dist/prompts/analyze/count-files.d.ts.map +0 -1
  53. package/dist/prompts/analyze/count-files.js +0 -403
  54. package/dist/prompts/analyze/count-files.js.map +0 -1
  55. package/dist/prompts/analyze/database-queries.d.ts +0 -156
  56. package/dist/prompts/analyze/database-queries.d.ts.map +0 -1
  57. package/dist/prompts/analyze/database-queries.js +0 -763
  58. package/dist/prompts/analyze/database-queries.js.map +0 -1
  59. package/dist/prompts/analyze/dependencies.d.ts +0 -97
  60. package/dist/prompts/analyze/dependencies.d.ts.map +0 -1
  61. package/dist/prompts/analyze/dependencies.js +0 -337
  62. package/dist/prompts/analyze/dependencies.js.map +0 -1
  63. package/dist/prompts/analyze/diff-signatures.d.ts +0 -139
  64. package/dist/prompts/analyze/diff-signatures.d.ts.map +0 -1
  65. package/dist/prompts/analyze/diff-signatures.js +0 -708
  66. package/dist/prompts/analyze/diff-signatures.js.map +0 -1
  67. package/dist/prompts/analyze/find-patterns.d.ts +0 -128
  68. package/dist/prompts/analyze/find-patterns.d.ts.map +0 -1
  69. package/dist/prompts/analyze/find-patterns.js +0 -524
  70. package/dist/prompts/analyze/find-patterns.js.map +0 -1
  71. package/dist/prompts/analyze/find-unused-css.d.ts +0 -151
  72. package/dist/prompts/analyze/find-unused-css.d.ts.map +0 -1
  73. package/dist/prompts/analyze/find-unused-css.js +0 -760
  74. package/dist/prompts/analyze/find-unused-css.js.map +0 -1
  75. package/dist/prompts/analyze/n8n-workflow.d.ts +0 -137
  76. package/dist/prompts/analyze/n8n-workflow.d.ts.map +0 -1
  77. package/dist/prompts/analyze/n8n-workflow.js +0 -533
  78. package/dist/prompts/analyze/n8n-workflow.js.map +0 -1
  79. package/dist/prompts/analyze/project-structure.d.ts +0 -126
  80. package/dist/prompts/analyze/project-structure.d.ts.map +0 -1
  81. package/dist/prompts/analyze/project-structure.js +0 -573
  82. package/dist/prompts/analyze/project-structure.js.map +0 -1
  83. package/dist/prompts/analyze/security-audit.d.ts +0 -142
  84. package/dist/prompts/analyze/security-audit.d.ts.map +0 -1
  85. package/dist/prompts/analyze/security-audit.js +0 -641
  86. package/dist/prompts/analyze/security-audit.js.map +0 -1
  87. package/dist/prompts/analyze/single-file.d.ts +0 -162
  88. package/dist/prompts/analyze/single-file.d.ts.map +0 -1
  89. package/dist/prompts/analyze/single-file.js +0 -669
  90. package/dist/prompts/analyze/single-file.js.map +0 -1
  91. package/dist/prompts/analyze/trace-execution.d.ts +0 -126
  92. package/dist/prompts/analyze/trace-execution.d.ts.map +0 -1
  93. package/dist/prompts/analyze/trace-execution.js +0 -613
  94. package/dist/prompts/analyze/trace-execution.js.map +0 -1
  95. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +0 -116
  96. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +0 -1
  97. package/dist/prompts/analyze/wordpress-plugin-audit.js +0 -456
  98. package/dist/prompts/analyze/wordpress-plugin-audit.js.map +0 -1
  99. package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts +0 -103
  100. package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts.map +0 -1
  101. package/dist/prompts/analyze/wordpress-plugin-readiness.js +0 -506
  102. package/dist/prompts/analyze/wordpress-plugin-readiness.js.map +0 -1
  103. package/dist/prompts/analyze/wordpress-security.d.ts +0 -146
  104. package/dist/prompts/analyze/wordpress-security.d.ts.map +0 -1
  105. package/dist/prompts/analyze/wordpress-security.js +0 -702
  106. package/dist/prompts/analyze/wordpress-security.js.map +0 -1
  107. package/dist/prompts/analyze/wordpress-theme-audit.d.ts +0 -114
  108. package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +0 -1
  109. package/dist/prompts/analyze/wordpress-theme-audit.js +0 -540
  110. package/dist/prompts/analyze/wordpress-theme-audit.js.map +0 -1
  111. package/dist/prompts/custom/custom-prompt.d.ts +0 -135
  112. package/dist/prompts/custom/custom-prompt.d.ts.map +0 -1
  113. package/dist/prompts/custom/custom-prompt.js +0 -421
  114. package/dist/prompts/custom/custom-prompt.js.map +0 -1
  115. package/dist/prompts/fun/arcade-game.d.ts +0 -152
  116. package/dist/prompts/fun/arcade-game.d.ts.map +0 -1
  117. package/dist/prompts/fun/arcade-game.js +0 -657
  118. package/dist/prompts/fun/arcade-game.js.map +0 -1
  119. package/dist/prompts/fun/create_text_adventure.d.ts +0 -100
  120. package/dist/prompts/fun/create_text_adventure.d.ts.map +0 -1
  121. package/dist/prompts/fun/create_text_adventure.js +0 -401
  122. package/dist/prompts/fun/create_text_adventure.js.map +0 -1
  123. package/dist/prompts/fun/css-art-generator.d.ts +0 -168
  124. package/dist/prompts/fun/css-art-generator.d.ts.map +0 -1
  125. package/dist/prompts/fun/css-art-generator.js +0 -831
  126. package/dist/prompts/fun/css-art-generator.js.map +0 -1
  127. package/dist/prompts/generate/project-documentation.d.ts +0 -137
  128. package/dist/prompts/generate/project-documentation.d.ts.map +0 -1
  129. package/dist/prompts/generate/project-documentation.js +0 -670
  130. package/dist/prompts/generate/project-documentation.js.map +0 -1
  131. package/dist/prompts/generate/refactoring.d.ts +0 -164
  132. package/dist/prompts/generate/refactoring.d.ts.map +0 -1
  133. package/dist/prompts/generate/refactoring.js +0 -625
  134. package/dist/prompts/generate/refactoring.js.map +0 -1
  135. package/dist/prompts/generate/responsive-component.d.ts +0 -147
  136. package/dist/prompts/generate/responsive-component.d.ts.map +0 -1
  137. package/dist/prompts/generate/responsive-component.js +0 -957
  138. package/dist/prompts/generate/responsive-component.js.map +0 -1
  139. package/dist/prompts/generate/typescript-conversion.d.ts +0 -144
  140. package/dist/prompts/generate/typescript-conversion.d.ts.map +0 -1
  141. package/dist/prompts/generate/typescript-conversion.js +0 -531
  142. package/dist/prompts/generate/typescript-conversion.js.map +0 -1
  143. package/dist/prompts/generate/unit-tests.d.ts +0 -139
  144. package/dist/prompts/generate/unit-tests.d.ts.map +0 -1
  145. package/dist/prompts/generate/unit-tests.js +0 -582
  146. package/dist/prompts/generate/unit-tests.js.map +0 -1
  147. package/dist/prompts/generate/wordpress-plugin.d.ts +0 -179
  148. package/dist/prompts/generate/wordpress-plugin.d.ts.map +0 -1
  149. package/dist/prompts/generate/wordpress-plugin.js +0 -767
  150. package/dist/prompts/generate/wordpress-plugin.js.map +0 -1
  151. package/dist/prompts/generate/wordpress-theme-from-static.d.ts +0 -177
  152. package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +0 -1
  153. package/dist/prompts/generate/wordpress-theme-from-static.js +0 -699
  154. package/dist/prompts/generate/wordpress-theme-from-static.js.map +0 -1
  155. package/dist/prompts/shared/cache-manager.d.ts +0 -45
  156. package/dist/prompts/shared/cache-manager.d.ts.map +0 -1
  157. package/dist/prompts/shared/cache-manager.js +0 -129
  158. package/dist/prompts/shared/cache-manager.js.map +0 -1
  159. package/dist/prompts/shared/helpers.d.ts +0 -39
  160. package/dist/prompts/shared/helpers.d.ts.map +0 -1
  161. package/dist/prompts/shared/helpers.js +0 -151
  162. package/dist/prompts/shared/helpers.js.map +0 -1
  163. package/dist/prompts/shared/templates.d.ts +0 -35
  164. package/dist/prompts/shared/templates.d.ts.map +0 -1
  165. package/dist/prompts/shared/templates.js +0 -77
  166. package/dist/prompts/shared/templates.js.map +0 -1
  167. package/dist/prompts/shared/types.d.ts +0 -112
  168. package/dist/prompts/shared/types.d.ts.map +0 -1
  169. package/dist/prompts/shared/types.js +0 -5
  170. package/dist/prompts/shared/types.js.map +0 -1
  171. package/dist/prompts/system/find-unused-files.d.ts +0 -106
  172. package/dist/prompts/system/find-unused-files.d.ts.map +0 -1
  173. package/dist/prompts/system/find-unused-files.js +0 -357
  174. package/dist/prompts/system/find-unused-files.js.map +0 -1
  175. package/dist/security/index.d.ts +0 -39
  176. package/dist/security/index.d.ts.map +0 -1
  177. package/dist/security/index.js +0 -46
  178. package/dist/security/index.js.map +0 -1
  179. package/dist/security/integration-helpers.d.ts +0 -121
  180. package/dist/security/integration-helpers.d.ts.map +0 -1
  181. package/dist/security/integration-helpers.js +0 -190
  182. package/dist/security/integration-helpers.js.map +0 -1
  183. package/dist/security/output-encoder.d.ts +0 -94
  184. package/dist/security/output-encoder.d.ts.map +0 -1
  185. package/dist/security/output-encoder.js +0 -295
  186. package/dist/security/output-encoder.js.map +0 -1
  187. package/dist/security/prompt-injection-guard.d.ts +0 -59
  188. package/dist/security/prompt-injection-guard.d.ts.map +0 -1
  189. package/dist/security/prompt-injection-guard.js +0 -249
  190. package/dist/security/prompt-injection-guard.js.map +0 -1
  191. package/dist/security/sanitisation.d.ts +0 -67
  192. package/dist/security/sanitisation.d.ts.map +0 -1
  193. package/dist/security/sanitisation.js +0 -398
  194. package/dist/security/sanitisation.js.map +0 -1
  195. package/dist/security/security-service.d.ts +0 -103
  196. package/dist/security/security-service.d.ts.map +0 -1
  197. package/dist/security/security-service.js +0 -303
  198. package/dist/security/security-service.js.map +0 -1
  199. package/dist/security-config.d.ts +0 -45
  200. package/dist/security-config.d.ts.map +0 -1
  201. package/dist/security-config.js +0 -63
  202. package/dist/security-config.js.map +0 -1
  203. package/dist/system/function-list.d.ts +0 -61
  204. package/dist/system/function-list.d.ts.map +0 -1
  205. package/dist/system/function-list.js +0 -111
  206. package/dist/system/function-list.js.map +0 -1
  207. package/dist/system/function-registry.d.ts +0 -23
  208. package/dist/system/function-registry.d.ts.map +0 -1
  209. package/dist/system/function-registry.js +0 -136
  210. package/dist/system/function-registry.js.map +0 -1
  211. package/dist/system/health-check.d.ts +0 -33
  212. package/dist/system/health-check.d.ts.map +0 -1
  213. package/dist/system/health-check.js +0 -98
  214. package/dist/system/health-check.js.map +0 -1
  215. package/dist/system/path-resolver.d.ts +0 -55
  216. package/dist/system/path-resolver.d.ts.map +0 -1
  217. package/dist/system/path-resolver.js +0 -90
  218. package/dist/system/path-resolver.js.map +0 -1
  219. package/dist/templates/plugin-template.d.ts +0 -121
  220. package/dist/templates/plugin-template.d.ts.map +0 -1
  221. package/dist/templates/plugin-template.js +0 -454
  222. package/dist/templates/plugin-template.js.map +0 -1
  223. package/dist/types/chunking-types.d.ts +0 -88
  224. package/dist/types/chunking-types.d.ts.map +0 -1
  225. package/dist/types/chunking-types.js +0 -18
  226. package/dist/types/chunking-types.js.map +0 -1
  227. package/dist/types/prompt-stages.d.ts +0 -30
  228. package/dist/types/prompt-stages.d.ts.map +0 -1
  229. package/dist/types/prompt-stages.js +0 -6
  230. package/dist/types/prompt-stages.js.map +0 -1
  231. package/dist/types.d.ts +0 -45
  232. package/dist/types.d.ts.map +0 -1
  233. package/dist/types.js +0 -6
  234. package/dist/types.js.map +0 -1
  235. package/dist/utils/css-parser.d.ts +0 -26
  236. package/dist/utils/css-parser.d.ts.map +0 -1
  237. package/dist/utils/css-parser.js +0 -117
  238. package/dist/utils/css-parser.js.map +0 -1
  239. package/dist/utils/path-resolver.d.ts +0 -13
  240. package/dist/utils/path-resolver.d.ts.map +0 -1
  241. package/dist/utils/path-resolver.js +0 -78
  242. package/dist/utils/path-resolver.js.map +0 -1
  243. package/dist/utils/plugin-utilities.d.ts +0 -176
  244. package/dist/utils/plugin-utilities.d.ts.map +0 -1
  245. package/dist/utils/plugin-utilities.js +0 -269
  246. package/dist/utils/plugin-utilities.js.map +0 -1
  247. package/dist/utils/streamHandler.d.ts +0 -3
  248. package/dist/utils/streamHandler.d.ts.map +0 -1
  249. package/dist/utils/streamHandler.js +0 -137
  250. package/dist/utils/streamHandler.js.map +0 -1
  251. package/dist/validation/output-validator.d.ts +0 -136
  252. package/dist/validation/output-validator.d.ts.map +0 -1
  253. package/dist/validation/output-validator.js +0 -262
  254. package/dist/validation/output-validator.js.map +0 -1
  255. package/dist/validation/response-factory.d.ts +0 -44
  256. package/dist/validation/response-factory.d.ts.map +0 -1
  257. package/dist/validation/response-factory.js +0 -202
  258. package/dist/validation/response-factory.js.map +0 -1
  259. package/dist/validation/schemas.d.ts +0 -519
  260. package/dist/validation/schemas.d.ts.map +0 -1
  261. package/dist/validation/schemas.js +0 -6
  262. package/dist/validation/schemas.js.map +0 -1
@@ -1,831 +0,0 @@
1
- /**
2
- * CSS Art Generator Plugin - Modern v4.3
3
- *
4
- * Creates pure CSS drawings, animations, and interactive art
5
- * Automatically detects single-art or multi-art generation mode
6
- *
7
- * Built with the universal template for consistency and performance
8
- */
9
- import { BasePlugin } from '../../plugins/base-plugin.js';
10
- import { ThreeStagePromptManager } from '../../core/ThreeStagePromptManager.js';
11
- import { withSecurity } from '../../security/integration-helpers.js';
12
- import { readFileContent } from '../shared/helpers.js';
13
- import { ModelSetup, ResponseProcessor, ParameterValidator, ErrorHandler, MultiFileAnalysis, TokenCalculator } from '../../utils/plugin-utilities.js';
14
- import { getAnalysisCache } from '../../cache/index.js';
15
- export class CSSArtGenerator extends BasePlugin {
16
- constructor() {
17
- super();
18
- this.name = 'css_art_generator';
19
- this.category = 'generate';
20
- this.description = 'Create pure CSS drawings, animations, and interactive art with no images required - just clever CSS techniques';
21
- // Universal parameter set - supports both single and multi-art scenarios
22
- this.parameters = {
23
- // Single-art parameters
24
- code: {
25
- type: 'string',
26
- description: 'Existing CSS art code to enhance (for single-art analysis)',
27
- required: false
28
- },
29
- filePath: {
30
- type: 'string',
31
- description: 'Path to existing CSS art file to enhance',
32
- required: false
33
- },
34
- // Multi-art parameters
35
- projectPath: {
36
- type: 'string',
37
- description: 'Working directory for CSS art project (e.g., C:\\dev\\css-art)',
38
- required: false
39
- },
40
- files: {
41
- type: 'array',
42
- description: 'Array of specific CSS art files (for multi-art analysis)',
43
- required: false,
44
- items: { type: 'string' }
45
- },
46
- maxDepth: {
47
- type: 'number',
48
- description: 'Maximum directory depth for art file discovery (1-3)',
49
- required: false,
50
- default: 2
51
- },
52
- // CSS Art specific parameters
53
- artType: {
54
- type: 'string',
55
- description: 'Type of CSS art to create',
56
- enum: ['drawing', 'animation', 'interactive', 'logo', 'character', 'landscape', 'abstract', 'custom'],
57
- default: 'drawing',
58
- required: false
59
- },
60
- complexity: {
61
- type: 'string',
62
- description: 'Art complexity level',
63
- enum: ['simple', 'intermediate', 'advanced', 'masterpiece'],
64
- default: 'intermediate',
65
- required: false
66
- },
67
- animationStyle: {
68
- type: 'string',
69
- description: 'Animation style (if applicable)',
70
- enum: ['none', 'subtle', 'smooth', 'bouncy', 'dramatic', 'infinite'],
71
- default: 'smooth',
72
- required: false
73
- },
74
- colorScheme: {
75
- type: 'string',
76
- description: 'Color palette for the art',
77
- enum: ['vibrant', 'pastel', 'monochrome', 'neon', 'earth', 'sunset', 'ocean', 'custom'],
78
- default: 'vibrant',
79
- required: false
80
- },
81
- theme: {
82
- type: 'string',
83
- description: 'Art theme or subject',
84
- enum: ['nature', 'geometric', 'character', 'space', 'retro', 'modern', 'fantasy', 'custom'],
85
- default: 'modern',
86
- required: false
87
- },
88
- techniques: {
89
- type: 'array',
90
- description: 'CSS techniques to showcase',
91
- items: { type: 'string' },
92
- default: ['gradients', 'shadows', 'transforms', 'pseudo-elements'],
93
- required: false
94
- },
95
- responsive: {
96
- type: 'boolean',
97
- description: 'Make art responsive to screen size',
98
- default: true,
99
- required: false
100
- },
101
- // Universal parameters
102
- language: {
103
- type: 'string',
104
- description: 'Programming language',
105
- required: false,
106
- default: 'css'
107
- },
108
- analysisDepth: {
109
- type: 'string',
110
- description: 'Level of art complexity',
111
- enum: ['basic', 'detailed', 'comprehensive'],
112
- default: 'detailed',
113
- required: false
114
- },
115
- analysisType: {
116
- type: 'string',
117
- description: 'Type of art generation to perform',
118
- enum: ['showcase', 'educational', 'comprehensive'],
119
- default: 'comprehensive',
120
- required: false
121
- }
122
- };
123
- this.analysisCache = getAnalysisCache();
124
- this.multiFileAnalysis = new MultiFileAnalysis();
125
- // Cache and analysis utilities are initialized above
126
- }
127
- async execute(params, llmClient) {
128
- return await withSecurity(this, params, llmClient, async (secureParams) => {
129
- try {
130
- // 1. Auto-detect analysis mode based on parameters
131
- const analysisMode = this.detectAnalysisMode(secureParams);
132
- // 2. Validate parameters based on detected mode
133
- this.validateParameters(secureParams, analysisMode);
134
- // 3. Setup model
135
- const { model, contextLength } = await ModelSetup.getReadyModel(llmClient);
136
- // 4. Route to appropriate generation method
137
- if (analysisMode === 'single-file') {
138
- return await this.executeSingleArtGeneration(secureParams, model, contextLength);
139
- }
140
- else {
141
- return await this.executeMultiArtGeneration(secureParams, model, contextLength);
142
- }
143
- }
144
- catch (error) {
145
- return ErrorHandler.createExecutionError('css_art_generator', error);
146
- }
147
- });
148
- }
149
- /**
150
- * Auto-detect whether this is single-art or multi-art generation
151
- */
152
- detectAnalysisMode(params) {
153
- // Single-file indicators take priority (avoids default parameter issues)
154
- if (params.code || params.filePath) {
155
- return 'single-file';
156
- }
157
- // Multi-file indicators (art collections, project enhancement)
158
- if (params.projectPath || params.files) {
159
- return 'multi-file';
160
- }
161
- // Default to single-file for CSS art generation (art-focused)
162
- return 'single-file';
163
- }
164
- /**
165
- * Validate parameters based on detected analysis mode
166
- */
167
- validateParameters(params, mode) {
168
- if (mode === 'single-file') {
169
- // Single-art generation doesn't require code/file - can generate from scratch
170
- }
171
- else {
172
- ParameterValidator.validateProjectPath(params);
173
- ParameterValidator.validateDepth(params);
174
- }
175
- // Universal validations
176
- ParameterValidator.validateEnum(params, 'analysisType', ['showcase', 'educational', 'comprehensive']);
177
- ParameterValidator.validateEnum(params, 'analysisDepth', ['basic', 'detailed', 'comprehensive']);
178
- ParameterValidator.validateEnum(params, 'artType', ['drawing', 'animation', 'interactive', 'logo', 'character', 'landscape', 'abstract', 'custom']);
179
- }
180
- /**
181
- * Execute single-art generation
182
- */
183
- async executeSingleArtGeneration(params, model, contextLength) {
184
- // Process existing art input (if any)
185
- let existingArtCode = params.code;
186
- if (params.filePath) {
187
- existingArtCode = await readFileContent(params.filePath);
188
- }
189
- // Generate prompt stages for single art piece
190
- const promptStages = this.getSingleArtPromptStages({
191
- ...params,
192
- code: existingArtCode
193
- });
194
- // Execute with appropriate method
195
- const promptManager = new ThreeStagePromptManager();
196
- const needsChunking = TokenCalculator.needsChunking(promptStages, contextLength);
197
- if (needsChunking) {
198
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
199
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
200
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
201
- const messages = [
202
- conversation.systemMessage,
203
- ...conversation.dataMessages,
204
- conversation.analysisMessage
205
- ];
206
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'css_art_generator', 'single');
207
- }
208
- else {
209
- return await ResponseProcessor.executeDirect(promptStages, model, contextLength, 'css_art_generator');
210
- }
211
- }
212
- /**
213
- * Execute multi-art generation
214
- */
215
- async executeMultiArtGeneration(params, model, contextLength) {
216
- // Discover existing art files
217
- let filesToAnalyze = params.files ||
218
- await this.discoverRelevantFiles(params.projectPath, params.maxDepth, params.analysisType);
219
- // Perform multi-art analysis with caching
220
- const analysisResult = await this.performMultiArtAnalysis(filesToAnalyze, params, model, contextLength);
221
- // Generate prompt stages for multi-art
222
- const promptStages = this.getMultiArtPromptStages({
223
- ...params,
224
- analysisResult,
225
- artCount: filesToAnalyze.length
226
- });
227
- // Always use chunking for multi-art
228
- const promptManager = new ThreeStagePromptManager();
229
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
230
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
231
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
232
- const messages = [
233
- conversation.systemMessage,
234
- ...conversation.dataMessages,
235
- conversation.analysisMessage
236
- ];
237
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'css_art_generator', 'multifile');
238
- }
239
- /**
240
- * Single-art prompt stages - Generate a beautiful CSS art piece
241
- */
242
- getSingleArtPromptStages(params) {
243
- const { artType, complexity, animationStyle, colorScheme, theme, techniques, responsive, analysisDepth, analysisType, code } = params;
244
- const systemAndContext = `You are a visionary CSS artist and master of web technologies specializing in ${analysisDepth} ${analysisType} pure CSS art creation.
245
-
246
- **Your Mission**: Create stunning, mind-blowing CSS art that pushes the absolute boundaries of what's possible with pure CSS - no images, no JavaScript, just pure creative genius.
247
-
248
- **CSS Art Context:**
249
- - Art Type: ${artType}
250
- - Complexity: ${complexity}
251
- - Animation Style: ${animationStyle}
252
- - Color Scheme: ${colorScheme}
253
- - Theme: ${theme}
254
- - CSS Techniques: ${JSON.stringify(techniques)}
255
- - Responsive Design: ${responsive}
256
- - Artistic Depth: ${analysisDepth}
257
- - Showcase Level: ${analysisType}
258
-
259
- **Your Legendary Expertise:**
260
- - 15+ years creating impossible CSS art that makes developers say "How did they DO that?!"
261
- - Master of advanced CSS properties: clip-path, filter, transform-3d, custom properties
262
- - Expert in CSS animations and keyframes that bring art to life
263
- - Pioneer of pseudo-element wizardry (:before, :after) for complex illustrations
264
- - Specialist in gradient artistry and shadow manipulation for photorealistic effects
265
- - Genius of responsive CSS art that adapts beautifully to any screen size
266
- - Teacher of advanced CSS techniques through beautiful, educational examples
267
-
268
- **CSS Art Philosophy:**
269
- 1. **Pure CSS Magic** - No images, no SVG, no JavaScript - just CSS superpowers
270
- 2. **Visual Impact** - Art should make viewers stop and stare in amazement
271
- 3. **Technical Mastery** - Showcase advanced CSS techniques creatively
272
- 4. **Educational Value** - Code should inspire and teach other developers
273
- 5. **Responsive Beauty** - Art looks perfect on phones, tablets, and desktops
274
- 6. **Performance** - Smooth animations, optimized rendering, hardware acceleration
275
- 7. **Creative Innovation** - Push boundaries of what people think CSS can do
276
-
277
- **Advanced CSS Techniques Mastery:**
278
- - **Gradients**: Linear, radial, conic - create complex lighting and textures
279
- - **Clip-path**: Cut out complex shapes and create stunning geometry
280
- - **Filters**: blur(), drop-shadow(), hue-rotate() for photographic effects
281
- - **Transforms**: 3D rotation, perspective, scaling for dimensional art
282
- - **Pseudo-elements**: :before and :after for layered compositions
283
- - **CSS Variables**: Dynamic colors and responsive scaling
284
- - **Keyframes**: Smooth, captivating animations that tell stories
285
- - **Box-shadow**: Multiple shadows for depth, glow, and complex shapes
286
- - **Border-radius**: Create organic curves and perfect circles
287
- - **Position absolute/relative**: Precise layering and composition
288
-
289
- **${colorScheme.charAt(0).toUpperCase() + colorScheme.slice(1)} Color Psychology:**
290
- ${this.getColorSchemeGuidelines(colorScheme)}
291
-
292
- **${theme.charAt(0).toUpperCase() + theme.slice(1)} Theme Inspiration:**
293
- ${this.getThemeInspiration(theme)}
294
-
295
- Your task is to create CSS art so beautiful and technically impressive that it becomes a masterpiece showcase of pure CSS potential.`;
296
- const dataPayload = code ? `**Existing CSS Art to Enhance:**
297
-
298
- \`\`\`css
299
- ${code}
300
- \`\`\`
301
-
302
- **Enhancement Request:**
303
- Please analyze the existing CSS art and enhance it with the requested features while maintaining the artistic vision and improving the technical execution.` :
304
- `**New CSS Art Generation Request:**
305
- Create a brand new ${artType} artwork from scratch with the specified parameters.
306
-
307
- **${artType.charAt(0).toUpperCase() + artType.slice(1)} Art Inspiration:**
308
- ${this.getArtTypeInspiration(artType)}
309
-
310
- **${complexity.charAt(0).toUpperCase() + complexity.slice(1)} Complexity Guidelines:**
311
- ${this.getComplexityGuidelines(complexity)}
312
-
313
- **Animation Style - ${animationStyle}:**
314
- ${this.getAnimationGuidelines(animationStyle)}`;
315
- const outputInstructions = `**Generate a complete, stunning CSS art piece as a single HTML file:**
316
-
317
- \`\`\`html
318
- <!DOCTYPE html>
319
- <html lang="en">
320
- <head>
321
- <meta charset="UTF-8">
322
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
323
- <title>CSS Art: ${artType.charAt(0).toUpperCase() + artType.slice(1)} - ${theme.charAt(0).toUpperCase() + theme.slice(1)} Theme</title>
324
- <style>
325
- /* RESET AND BASE STYLES */
326
- * {
327
- margin: 0;
328
- padding: 0;
329
- box-sizing: border-box;
330
- }
331
-
332
- body {
333
- background: ${this.getBackgroundSuggestion(colorScheme, theme)};
334
- display: flex;
335
- justify-content: center;
336
- align-items: center;
337
- min-height: 100vh;
338
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
339
- overflow: hidden; /* For full-screen art */
340
- }
341
-
342
- /* MAIN ARTWORK CONTAINER */
343
- .css-art {
344
- /* Primary art container with perfect centering */
345
- position: relative;
346
- /* Responsive scaling based on screen size */
347
- }
348
-
349
- /* ADVANCED CSS ART TECHNIQUES */
350
-
351
- /* 1. COMPLEX SHAPES WITH CLIP-PATH */
352
- .shape-layer {
353
- /* Use clip-path for impossible geometric shapes */
354
- }
355
-
356
- /* 2. GRADIENT MASTERY */
357
- .gradient-layer {
358
- /* Multiple gradients for lighting and texture */
359
- background:
360
- linear-gradient(...),
361
- radial-gradient(...),
362
- conic-gradient(...);
363
- }
364
-
365
- /* 3. PSEUDO-ELEMENT WIZARDRY */
366
- .detail::before,
367
- .detail::after {
368
- /* Create complex layered compositions */
369
- content: '';
370
- position: absolute;
371
- /* Intricate shapes and details */
372
- }
373
-
374
- /* 4. 3D TRANSFORMS AND PERSPECTIVE */
375
- .dimensional {
376
- transform-style: preserve-3d;
377
- perspective: 1000px;
378
- /* 3D rotation and depth effects */
379
- }
380
-
381
- /* 5. ADVANCED ANIMATIONS */
382
- @keyframes ${animationStyle}Animation {
383
- /* Smooth, captivating animation keyframes */
384
- 0% { /* Initial state */ }
385
- 50% { /* Mid-point transformation */ }
386
- 100% { /* Final state */ }
387
- }
388
-
389
- /* 6. MULTIPLE BOX-SHADOWS FOR DEPTH */
390
- .shadow-art {
391
- box-shadow:
392
- /* Multiple shadows for complex shapes */
393
- inset 0 0 20px rgba(...),
394
- 0 0 40px rgba(...),
395
- 0 0 80px rgba(...);
396
- }
397
-
398
- /* 7. CSS FILTERS FOR EFFECTS */
399
- .filter-effects {
400
- filter:
401
- blur(2px)
402
- drop-shadow(0 0 10px rgba(...))
403
- hue-rotate(45deg)
404
- saturate(1.5);
405
- }
406
-
407
- /* 8. RESPONSIVE DESIGN */
408
- @media (max-width: 768px) {
409
- .css-art {
410
- /* Mobile-optimized scaling */
411
- transform: scale(0.8);
412
- }
413
- }
414
-
415
- @media (max-width: 480px) {
416
- .css-art {
417
- /* Small screen adaptations */
418
- transform: scale(0.6);
419
- }
420
- }
421
-
422
- /* 9. CSS CUSTOM PROPERTIES FOR THEMING */
423
- :root {
424
- --primary-color: ${this.getPrimaryColor(colorScheme)};
425
- --secondary-color: ${this.getSecondaryColor(colorScheme)};
426
- --accent-color: ${this.getAccentColor(colorScheme)};
427
- --art-size: clamp(200px, 50vw, 600px);
428
- }
429
-
430
- /* 10. INTERACTIVE HOVER EFFECTS (IF APPLICABLE) */
431
- .css-art:hover {
432
- /* Subtle interactive enhancements */
433
- }
434
-
435
- /* ARTWORK-SPECIFIC STYLES */
436
- /* [Generate detailed, creative CSS for the specific ${artType} artwork] */
437
-
438
- </style>
439
- </head>
440
- <body>
441
- <div class="css-art">
442
- <!-- HTML structure for the CSS art -->
443
- <!-- Minimal, semantic markup that enables CSS magic -->
444
- <div class="main-element">
445
- <div class="detail layer-1"></div>
446
- <div class="detail layer-2"></div>
447
- <div class="detail layer-3"></div>
448
- <!-- Additional elements as needed for complex compositions -->
449
- </div>
450
- </div>
451
-
452
- <!-- Optional: Art information overlay -->
453
- <div class="art-info" style="position: fixed; bottom: 20px; left: 20px; color: white; font-size: 14px; opacity: 0.7;">
454
- <strong>Pure CSS Art:</strong> ${artType} • ${theme} theme • ${colorScheme} colors
455
- <br><small>No images • No JavaScript • Just CSS magic ✨</small>
456
- </div>
457
- </body>
458
- </html>
459
- \`\`\`
460
-
461
- **Critical CSS Art Requirements:**
462
- ✅ **Pure CSS Only** - No images, no SVG, no JavaScript dependencies
463
- ✅ **Visual Impact** - Art should be immediately stunning and memorable
464
- ✅ **Advanced Techniques** - Showcase at least 5 advanced CSS properties creatively
465
- ✅ **${colorScheme} Color Mastery** - Beautiful, cohesive color palette execution
466
- ✅ **${animationStyle} Animation** - Smooth, purposeful animations that enhance the art
467
- ✅ **Responsive Design** - Perfect scaling on all devices (mobile to desktop)
468
- ✅ **Performance Optimized** - Smooth 60fps animations, hardware acceleration
469
- ✅ **Educational Value** - Code comments explaining advanced techniques
470
- ✅ **Technical Innovation** - Push boundaries of CSS art possibilities
471
-
472
- **Advanced CSS Showcase Standards:**
473
- - **Clip-path mastery** for impossible geometric shapes
474
- - **Multiple gradient layers** for realistic lighting and texture
475
- - **Pseudo-element wizardry** for complex layered compositions
476
- - **3D transforms** for dimensional depth and perspective
477
- - **Filter combinations** for photographic effects and atmosphere
478
- - **Custom property theming** for responsive and dynamic styling
479
- - **Animation orchestration** for smooth, captivating movement
480
- - **Box-shadow artistry** for depth, glow, and complex forms
481
-
482
- **Artistic Excellence Standards:**
483
- - Museum-quality visual composition and balance
484
- - Color harmony that evokes emotion and atmosphere
485
- - Technical execution that inspires other developers
486
- - Responsive behavior that maintains artistic integrity
487
- - Performance that runs smoothly on any device
488
-
489
- Create CSS art so incredible that developers will study your code to learn how it's possible!`;
490
- return { systemAndContext, dataPayload, outputInstructions };
491
- }
492
- /**
493
- * Multi-art prompt stages - Generate CSS art collections or enhance projects
494
- */
495
- getMultiArtPromptStages(params) {
496
- const { analysisResult, analysisType, analysisDepth, artCount, artType, theme, colorScheme } = params;
497
- const systemAndContext = `You are a master CSS art curator and gallery director specializing in ${analysisDepth} ${analysisType} CSS art collection development.
498
-
499
- **Your Mission**: Create a comprehensive CSS art gallery or enhance an existing art project with multiple interconnected artworks that tell a cohesive visual story.
500
-
501
- **Art Collection Context:**
502
- - Collection Type: ${analysisType}
503
- - Collection Depth: ${analysisDepth}
504
- - Art Pieces in Collection: ${artCount}
505
- - Primary Art Type: ${artType}
506
- - Unifying Theme: ${theme}
507
- - Color Harmony: ${colorScheme}
508
- - Mode: Multi-Art Collection Development
509
-
510
- **Your Elite Expertise:**
511
- - 20+ years curating digital art galleries and interactive experiences
512
- - Expert in creating cohesive visual narratives across multiple artworks
513
- - Master of scalable CSS architectures with shared design systems
514
- - Specialized in progressive art experiences that guide viewer journeys
515
- - Pioneer of elegant multi-art frameworks with unified aesthetics
516
-
517
- **Collection Architecture Philosophy:**
518
- 1. **Visual Cohesion** - Unified color palette and artistic style across all pieces
519
- 2. **Progressive Complexity** - Artworks build artistic narrative and technical sophistication
520
- 3. **Shared Design System** - Common CSS variables and reusable art components
521
- 4. **Interactive Gallery** - Elegant navigation between individual art pieces
522
- 5. **Responsive Exhibition** - Beautiful presentation on all devices and screen sizes
523
- 6. **Educational Journey** - Each artwork teaches different advanced CSS techniques
524
-
525
- Your task is to create a masterful CSS art collection that showcases both individual artistic brilliance and cohesive gallery experience.`;
526
- const dataPayload = `**CSS Art Collection Analysis Results:**
527
-
528
- ${JSON.stringify(analysisResult, null, 2)}`;
529
- const outputInstructions = `**Generate a comprehensive CSS art gallery as multiple coordinated files:**
530
-
531
- \`\`\`
532
- // File Structure for CSS Art Collection:
533
- index.html // Main gallery navigation and overview
534
- shared/
535
- art-gallery.css // Shared gallery framework and navigation
536
- css-variables.css // Unified color schemes and design tokens
537
- responsive-gallery.css // Mobile-friendly gallery layouts
538
- artworks/
539
- ${artType}-piece-1.html // Individual art pieces as standalone files
540
- ${artType}-piece-2.html // Each showcasing different CSS techniques
541
- ${artType}-piece-3.html // Progressive complexity and innovation
542
- animations/
543
- gallery-transitions.css // Smooth navigation animations
544
- artwork-interactions.css // Interactive hover and focus effects
545
- \`\`\`
546
-
547
- **Gallery Collection Features:**
548
- - **Art Navigation**: Beautiful gallery interface for browsing artworks
549
- - **Unified Theme**: Cohesive ${theme} aesthetic with ${colorScheme} color harmony
550
- - **Progressive Showcase**: Each artwork demonstrates different advanced CSS techniques
551
- - **Interactive Experience**: Smooth transitions and elegant art presentation
552
- - **Educational Value**: Gallery teaches CSS artistry through visual examples
553
- - **Responsive Design**: Perfect viewing experience on all devices
554
- - **Performance Optimized**: Fast loading, smooth animations throughout
555
-
556
- **Individual Artwork Quality:**
557
- Each art piece in the collection must be:
558
- ✅ **Visually Stunning** - Museum-quality CSS art execution
559
- ✅ **Technically Advanced** - Showcases unique CSS techniques and innovation
560
- ✅ **Thematically Consistent** - Follows the unified ${theme} visual narrative
561
- ✅ **Educationally Valuable** - Teaches specific advanced CSS concepts
562
- ✅ **Performance Optimized** - Smooth, hardware-accelerated animations
563
- ✅ **Responsive Excellence** - Beautiful on all screen sizes
564
-
565
- **Gallery Architecture:**
566
- - **CSS Design System**: Shared variables for colors, spacing, and typography
567
- - **Modular Structure**: Each artwork as independent, reusable component
568
- - **Navigation Framework**: Elegant transitions between art pieces
569
- - **Progressive Enhancement**: Advanced features for capable browsers
570
- - **Educational Documentation**: Code comments explaining artistic techniques
571
-
572
- **Collection Themes:**
573
- - **${theme} Artistic Vision**: Unified visual story across all artworks
574
- - **Technical Progression**: From foundational to advanced CSS techniques
575
- - **Interactive Narrative**: User journey through CSS art possibilities
576
- - **Responsive Gallery**: Adaptive layouts for optimal art viewing
577
-
578
- Create a CSS art collection that establishes a new standard for web-based digital art galleries!`;
579
- return { systemAndContext, dataPayload, outputInstructions };
580
- }
581
- /**
582
- * Backwards compatibility method - routes to appropriate stages
583
- */
584
- getPromptStages(params) {
585
- const mode = this.detectAnalysisMode(params);
586
- if (mode === 'single-file') {
587
- return this.getSingleArtPromptStages(params);
588
- }
589
- else {
590
- return this.getMultiArtPromptStages(params);
591
- }
592
- }
593
- // Multi-art helper methods
594
- async discoverRelevantFiles(projectPath, maxDepth, analysisType) {
595
- const extensions = this.getFileExtensions(analysisType);
596
- return await this.multiFileAnalysis.discoverFiles(projectPath, extensions, maxDepth);
597
- }
598
- async performMultiArtAnalysis(files, params, model, contextLength) {
599
- const cacheKey = this.analysisCache.generateKey('css_art_generator', params, files);
600
- const cached = await this.analysisCache.get(cacheKey);
601
- if (cached)
602
- return cached;
603
- const artAnalysisResults = await this.multiFileAnalysis.analyzeBatch(files, (file) => this.analyzeArtFile(file, params, model), contextLength);
604
- // Aggregate results into art collection analysis
605
- const aggregatedResult = {
606
- summary: `CSS art collection analysis of ${files.length} art files`,
607
- findings: artAnalysisResults,
608
- data: {
609
- artCount: files.length,
610
- totalArtSize: artAnalysisResults.reduce((sum, result) => sum + (result.size || 0), 0),
611
- artTypes: this.identifyArtTypes(artAnalysisResults),
612
- cssFeatures: this.identifyCSSFeatures(artAnalysisResults),
613
- collectionTheme: params.theme || 'modern',
614
- colorScheme: params.colorScheme || 'vibrant',
615
- analysisTimestamp: new Date().toISOString()
616
- }
617
- };
618
- await this.analysisCache.cacheAnalysis(cacheKey, aggregatedResult, {
619
- modelUsed: model.identifier || 'unknown',
620
- executionTime: Date.now() - Date.now(),
621
- timestamp: new Date().toISOString()
622
- });
623
- return aggregatedResult;
624
- }
625
- async analyzeArtFile(file, params, model) {
626
- const content = await readFileContent(file);
627
- return {
628
- filePath: file,
629
- size: content.length,
630
- lines: content.split('\n').length,
631
- hasAnimations: /@keyframes|animation:|transition:/.test(content),
632
- hasGradients: /gradient\(/.test(content),
633
- hasTransforms: /transform:/.test(content),
634
- hasPseudoElements: /::?(?:before|after)/.test(content),
635
- hasClipPath: /clip-path:/.test(content),
636
- hasFilters: /filter:/.test(content),
637
- artComplexity: this.assessArtComplexity(content),
638
- detectedTheme: this.detectTheme(content)
639
- };
640
- }
641
- identifyArtTypes(results) {
642
- const types = new Set();
643
- results.forEach(result => {
644
- if (result.hasAnimations)
645
- types.add('animated');
646
- if (result.hasGradients)
647
- types.add('gradient-based');
648
- if (result.hasTransforms)
649
- types.add('transformed');
650
- if (result.hasPseudoElements)
651
- types.add('layered');
652
- });
653
- return Array.from(types);
654
- }
655
- identifyCSSFeatures(results) {
656
- const features = [];
657
- const hasAnimations = results.some(r => r.hasAnimations);
658
- const hasGradients = results.some(r => r.hasGradients);
659
- const hasTransforms = results.some(r => r.hasTransforms);
660
- const hasPseudoElements = results.some(r => r.hasPseudoElements);
661
- const hasClipPath = results.some(r => r.hasClipPath);
662
- const hasFilters = results.some(r => r.hasFilters);
663
- if (hasAnimations)
664
- features.push('CSS Animations & Keyframes');
665
- if (hasGradients)
666
- features.push('Advanced Gradients');
667
- if (hasTransforms)
668
- features.push('3D Transforms');
669
- if (hasPseudoElements)
670
- features.push('Pseudo-element Artistry');
671
- if (hasClipPath)
672
- features.push('Clip-path Mastery');
673
- if (hasFilters)
674
- features.push('CSS Filters & Effects');
675
- return features;
676
- }
677
- assessArtComplexity(content) {
678
- let complexity = 0;
679
- if (/@keyframes/.test(content))
680
- complexity += 2;
681
- if (/gradient\(/.test(content))
682
- complexity += 1;
683
- if (/transform:/.test(content))
684
- complexity += 1;
685
- if (/::?(?:before|after)/.test(content))
686
- complexity += 2;
687
- if (/clip-path:/.test(content))
688
- complexity += 3;
689
- if (/filter:/.test(content))
690
- complexity += 2;
691
- if (/box-shadow:/.test(content))
692
- complexity += 1;
693
- if (complexity >= 8)
694
- return 'masterpiece';
695
- if (complexity >= 5)
696
- return 'advanced';
697
- if (complexity >= 3)
698
- return 'intermediate';
699
- return 'simple';
700
- }
701
- detectTheme(content) {
702
- if (/space|star|galaxy|cosmic/.test(content))
703
- return 'space';
704
- if (/nature|leaf|tree|forest|flower/.test(content))
705
- return 'nature';
706
- if (/geometric|polygon|triangle|circle/.test(content))
707
- return 'geometric';
708
- if (/neon|glow|bright|electric/.test(content))
709
- return 'neon';
710
- if (/retro|vintage|old|classic/.test(content))
711
- return 'retro';
712
- return 'modern';
713
- }
714
- getArtTypeInspiration(artType) {
715
- const inspirations = {
716
- 'drawing': 'Hand-drawn illustrations recreated in pure CSS - portraits, sketches, line art with creative pseudo-elements',
717
- 'animation': 'Moving art that tells a story - rotating elements, morphing shapes, particle systems in CSS',
718
- 'interactive': 'Art that responds to user interaction - hover effects, click transformations, dynamic color changes',
719
- 'logo': 'Brand identities and iconography - scalable vector-style logos using CSS shapes and typography',
720
- 'character': 'Cartoon characters and mascots - expressive faces, body proportions, personality through CSS',
721
- 'landscape': 'Scenic environments and vistas - mountains, oceans, cities using layered CSS techniques',
722
- 'abstract': 'Non-representational artistic expression - geometric patterns, color studies, experimental forms',
723
- 'custom': 'Unique artistic vision that pushes the boundaries of CSS art possibilities'
724
- };
725
- return inspirations[artType] || inspirations.custom;
726
- }
727
- getComplexityGuidelines(complexity) {
728
- const guidelines = {
729
- 'simple': 'Clean, elegant art using basic CSS properties - focus on composition and color harmony',
730
- 'intermediate': 'Moderate use of advanced techniques - gradients, transforms, basic animations for visual interest',
731
- 'advanced': 'Sophisticated CSS mastery - multiple advanced properties, complex animations, layered compositions',
732
- 'masterpiece': 'Pushing absolute limits of CSS - mind-bending techniques, photorealistic effects, impossible geometries'
733
- };
734
- return guidelines[complexity] || guidelines.intermediate;
735
- }
736
- getAnimationGuidelines(animationStyle) {
737
- const guidelines = {
738
- 'none': 'Static art with no movement - focus on composition, color, and form',
739
- 'subtle': 'Gentle, barely noticeable animations - breathing effects, soft glows, minimal movement',
740
- 'smooth': 'Fluid, purposeful animations that enhance the art - smooth transitions and organic motion',
741
- 'bouncy': 'Playful, elastic animations with spring physics - fun, energetic movement patterns',
742
- 'dramatic': 'Bold, attention-grabbing animations - striking transformations and dynamic effects',
743
- 'infinite': 'Continuous looping animations - hypnotic patterns, rotating elements, endless motion'
744
- };
745
- return guidelines[animationStyle] || guidelines.smooth;
746
- }
747
- getColorSchemeGuidelines(colorScheme) {
748
- const guidelines = {
749
- 'vibrant': 'Bold, saturated colors that pop - electric blues, hot pinks, bright greens for maximum visual impact',
750
- 'pastel': 'Soft, dreamy colors - pale pinks, light blues, gentle yellows for calming, elegant aesthetics',
751
- 'monochrome': 'Single-color variations - different shades and tones of one hue for sophisticated, focused art',
752
- 'neon': 'Glowing, electric colors - bright magentas, cyber greens, electric blues with glow effects',
753
- 'earth': 'Natural, organic colors - browns, greens, oranges inspired by nature and landscapes',
754
- 'sunset': 'Warm gradient transitions - oranges, pinks, purples, yellows like golden hour lighting',
755
- 'ocean': 'Cool blue and teal variations - deep navy, turquoise, seafoam for aquatic, serene moods',
756
- 'custom': 'Unique color palette that perfectly matches the artistic vision and theme'
757
- };
758
- return guidelines[colorScheme] || guidelines.vibrant;
759
- }
760
- getThemeInspiration(theme) {
761
- const inspirations = {
762
- 'nature': 'Organic forms, flowing lines, botanical elements - trees, leaves, flowers, landscapes with natural textures',
763
- 'geometric': 'Mathematical precision, clean lines, perfect shapes - triangles, circles, polygons in harmonious compositions',
764
- 'character': 'Expressive personalities, faces, figures - cartoon styles, mascots, portraits with emotional depth',
765
- 'space': 'Cosmic wonder, celestial bodies, sci-fi elements - stars, planets, galaxies, futuristic designs',
766
- 'retro': 'Nostalgic aesthetics, vintage vibes - 80s neon, art deco patterns, classic design elements',
767
- 'modern': 'Contemporary design principles - minimalism, bold typography, clean layouts, current trends',
768
- 'fantasy': 'Magical, mythical elements - dragons, castles, enchanted forests, otherworldly creatures',
769
- 'custom': 'Original thematic vision that creates a unique artistic narrative and visual identity'
770
- };
771
- return inspirations[theme] || inspirations.modern;
772
- }
773
- getBackgroundSuggestion(colorScheme, theme) {
774
- const backgrounds = {
775
- 'vibrant': 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
776
- 'pastel': 'linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%)',
777
- 'monochrome': 'linear-gradient(135deg, #2c3e50 0%, #34495e 100%)',
778
- 'neon': 'radial-gradient(circle, #0f0f23 0%, #000000 100%)',
779
- 'earth': 'linear-gradient(135deg, #8B4513 0%, #228B22 100%)',
780
- 'sunset': 'linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%)',
781
- 'ocean': 'linear-gradient(135deg, #667db6 0%, #0082c8 100%)'
782
- };
783
- return backgrounds[colorScheme] || backgrounds.vibrant;
784
- }
785
- getPrimaryColor(colorScheme) {
786
- const colors = {
787
- 'vibrant': '#ff6b6b',
788
- 'pastel': '#ffeaa7',
789
- 'monochrome': '#2d3436',
790
- 'neon': '#00f0ff',
791
- 'earth': '#8b4513',
792
- 'sunset': '#ff7675',
793
- 'ocean': '#0984e3'
794
- };
795
- return colors[colorScheme] || colors.vibrant;
796
- }
797
- getSecondaryColor(colorScheme) {
798
- const colors = {
799
- 'vibrant': '#4ecdc4',
800
- 'pastel': '#fab1a0',
801
- 'monochrome': '#636e72',
802
- 'neon': '#ff00ff',
803
- 'earth': '#228b22',
804
- 'sunset': '#fd79a8',
805
- 'ocean': '#00cec9'
806
- };
807
- return colors[colorScheme] || colors.vibrant;
808
- }
809
- getAccentColor(colorScheme) {
810
- const colors = {
811
- 'vibrant': '#ffe66d',
812
- 'pastel': '#81ecec',
813
- 'monochrome': '#ddd',
814
- 'neon': '#39ff14',
815
- 'earth': '#d2691e',
816
- 'sunset': '#fdcb6e',
817
- 'ocean': '#74b9ff'
818
- };
819
- return colors[colorScheme] || colors.vibrant;
820
- }
821
- getFileExtensions(analysisType) {
822
- const extensionMap = {
823
- 'showcase': ['.html', '.css'],
824
- 'educational': ['.html', '.css', '.md'],
825
- 'comprehensive': ['.html', '.css', '.md', '.js']
826
- };
827
- return extensionMap[analysisType] || extensionMap.comprehensive;
828
- }
829
- }
830
- export default CSSArtGenerator;
831
- //# sourceMappingURL=css-art-generator.js.map