@sky.ui/mcp 0.0.1

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 (184) hide show
  1. package/LICENSE.md +139 -0
  2. package/README.md +182 -0
  3. package/data/chart-api-sections.json +4185 -0
  4. package/data/component-tier.json +25 -0
  5. package/data/design-guidelines/p0-guidelines.json +13381 -0
  6. package/data/reactivity-readme-snapshot.json +1 -0
  7. package/data/theme-authoring-contract.json +598 -0
  8. package/data/utils-suggestion-snapshot.json +1 -0
  9. package/dist/cache.d.ts +3 -0
  10. package/dist/cache.d.ts.map +1 -0
  11. package/dist/cache.js +15 -0
  12. package/dist/cache.js.map +1 -0
  13. package/dist/catalog.d.ts +60 -0
  14. package/dist/catalog.d.ts.map +1 -0
  15. package/dist/catalog.js +343 -0
  16. package/dist/catalog.js.map +1 -0
  17. package/dist/cem.d.ts +26 -0
  18. package/dist/cem.d.ts.map +1 -0
  19. package/dist/cem.js +348 -0
  20. package/dist/cem.js.map +1 -0
  21. package/dist/chart-usage-tool.d.ts +20 -0
  22. package/dist/chart-usage-tool.d.ts.map +1 -0
  23. package/dist/chart-usage-tool.js +153 -0
  24. package/dist/chart-usage-tool.js.map +1 -0
  25. package/dist/component-docs-tool.d.ts +45 -0
  26. package/dist/component-docs-tool.d.ts.map +1 -0
  27. package/dist/component-docs-tool.js +217 -0
  28. package/dist/component-docs-tool.js.map +1 -0
  29. package/dist/component-method-filter.d.ts +3 -0
  30. package/dist/component-method-filter.d.ts.map +1 -0
  31. package/dist/component-method-filter.js +32 -0
  32. package/dist/component-method-filter.js.map +1 -0
  33. package/dist/component-tier.d.ts +20 -0
  34. package/dist/component-tier.d.ts.map +1 -0
  35. package/dist/component-tier.js +59 -0
  36. package/dist/component-tier.js.map +1 -0
  37. package/dist/component-usage-tool.d.ts +20 -0
  38. package/dist/component-usage-tool.d.ts.map +1 -0
  39. package/dist/component-usage-tool.js +90 -0
  40. package/dist/component-usage-tool.js.map +1 -0
  41. package/dist/design-guidelines/a11y-engine.d.ts +22 -0
  42. package/dist/design-guidelines/a11y-engine.d.ts.map +1 -0
  43. package/dist/design-guidelines/a11y-engine.js +78 -0
  44. package/dist/design-guidelines/a11y-engine.js.map +1 -0
  45. package/dist/design-guidelines/compatibility-engine.d.ts +20 -0
  46. package/dist/design-guidelines/compatibility-engine.d.ts.map +1 -0
  47. package/dist/design-guidelines/compatibility-engine.js +57 -0
  48. package/dist/design-guidelines/compatibility-engine.js.map +1 -0
  49. package/dist/design-guidelines/component-guideline-engine.d.ts +19 -0
  50. package/dist/design-guidelines/component-guideline-engine.d.ts.map +1 -0
  51. package/dist/design-guidelines/component-guideline-engine.js +40 -0
  52. package/dist/design-guidelines/component-guideline-engine.js.map +1 -0
  53. package/dist/design-guidelines/composition-engine.d.ts +10 -0
  54. package/dist/design-guidelines/composition-engine.d.ts.map +1 -0
  55. package/dist/design-guidelines/composition-engine.js +29 -0
  56. package/dist/design-guidelines/composition-engine.js.map +1 -0
  57. package/dist/design-guidelines/pattern-engine.d.ts +20 -0
  58. package/dist/design-guidelines/pattern-engine.d.ts.map +1 -0
  59. package/dist/design-guidelines/pattern-engine.js +58 -0
  60. package/dist/design-guidelines/pattern-engine.js.map +1 -0
  61. package/dist/design-guidelines/recommendation-engine.d.ts +11 -0
  62. package/dist/design-guidelines/recommendation-engine.d.ts.map +1 -0
  63. package/dist/design-guidelines/recommendation-engine.js +88 -0
  64. package/dist/design-guidelines/recommendation-engine.js.map +1 -0
  65. package/dist/design-guidelines/repository.d.ts +19 -0
  66. package/dist/design-guidelines/repository.d.ts.map +1 -0
  67. package/dist/design-guidelines/repository.js +71 -0
  68. package/dist/design-guidelines/repository.js.map +1 -0
  69. package/dist/design-guidelines/review-engine.d.ts +20 -0
  70. package/dist/design-guidelines/review-engine.d.ts.map +1 -0
  71. package/dist/design-guidelines/review-engine.js +179 -0
  72. package/dist/design-guidelines/review-engine.js.map +1 -0
  73. package/dist/design-guidelines/schema.d.ts +256 -0
  74. package/dist/design-guidelines/schema.d.ts.map +1 -0
  75. package/dist/design-guidelines/schema.js +124 -0
  76. package/dist/design-guidelines/schema.js.map +1 -0
  77. package/dist/design-guidelines/token-engine.d.ts +23 -0
  78. package/dist/design-guidelines/token-engine.d.ts.map +1 -0
  79. package/dist/design-guidelines/token-engine.js +119 -0
  80. package/dist/design-guidelines/token-engine.js.map +1 -0
  81. package/dist/docs-read.d.ts +28 -0
  82. package/dist/docs-read.d.ts.map +1 -0
  83. package/dist/docs-read.js +102 -0
  84. package/dist/docs-read.js.map +1 -0
  85. package/dist/docs.d.ts +73 -0
  86. package/dist/docs.d.ts.map +1 -0
  87. package/dist/docs.js +323 -0
  88. package/dist/docs.js.map +1 -0
  89. package/dist/example-site-doc-enrichment.d.ts +27 -0
  90. package/dist/example-site-doc-enrichment.d.ts.map +1 -0
  91. package/dist/example-site-doc-enrichment.js +171 -0
  92. package/dist/example-site-doc-enrichment.js.map +1 -0
  93. package/dist/example-site-fetch.d.ts +44 -0
  94. package/dist/example-site-fetch.d.ts.map +1 -0
  95. package/dist/example-site-fetch.js +255 -0
  96. package/dist/example-site-fetch.js.map +1 -0
  97. package/dist/framework-wrappers.d.ts +46 -0
  98. package/dist/framework-wrappers.d.ts.map +1 -0
  99. package/dist/framework-wrappers.js +131 -0
  100. package/dist/framework-wrappers.js.map +1 -0
  101. package/dist/mcp-response-truth.d.ts +18 -0
  102. package/dist/mcp-response-truth.d.ts.map +1 -0
  103. package/dist/mcp-response-truth.js +45 -0
  104. package/dist/mcp-response-truth.js.map +1 -0
  105. package/dist/mcp-runtime-status.d.ts +37 -0
  106. package/dist/mcp-runtime-status.d.ts.map +1 -0
  107. package/dist/mcp-runtime-status.js +96 -0
  108. package/dist/mcp-runtime-status.js.map +1 -0
  109. package/dist/mcp-stdio-entry.d.ts +3 -0
  110. package/dist/mcp-stdio-entry.d.ts.map +1 -0
  111. package/dist/mcp-stdio-entry.js +35 -0
  112. package/dist/mcp-stdio-entry.js.map +1 -0
  113. package/dist/mcp-tool-errors.d.ts +35 -0
  114. package/dist/mcp-tool-errors.d.ts.map +1 -0
  115. package/dist/mcp-tool-errors.js +42 -0
  116. package/dist/mcp-tool-errors.js.map +1 -0
  117. package/dist/parse-component-ast.d.ts +112 -0
  118. package/dist/parse-component-ast.d.ts.map +1 -0
  119. package/dist/parse-component-ast.js +695 -0
  120. package/dist/parse-component-ast.js.map +1 -0
  121. package/dist/post-endpoint-server.d.ts +19 -0
  122. package/dist/post-endpoint-server.d.ts.map +1 -0
  123. package/dist/post-endpoint-server.js +777 -0
  124. package/dist/post-endpoint-server.js.map +1 -0
  125. package/dist/reactivity-info.d.ts +22 -0
  126. package/dist/reactivity-info.d.ts.map +1 -0
  127. package/dist/reactivity-info.js +99 -0
  128. package/dist/reactivity-info.js.map +1 -0
  129. package/dist/reactivity-layer-tool.d.ts +18 -0
  130. package/dist/reactivity-layer-tool.d.ts.map +1 -0
  131. package/dist/reactivity-layer-tool.js +58 -0
  132. package/dist/reactivity-layer-tool.js.map +1 -0
  133. package/dist/reactivity-readme-topics.d.ts +46 -0
  134. package/dist/reactivity-readme-topics.d.ts.map +1 -0
  135. package/dist/reactivity-readme-topics.js +206 -0
  136. package/dist/reactivity-readme-topics.js.map +1 -0
  137. package/dist/read-only-tool-allowlist.d.ts +7 -0
  138. package/dist/read-only-tool-allowlist.d.ts.map +1 -0
  139. package/dist/read-only-tool-allowlist.js +17 -0
  140. package/dist/read-only-tool-allowlist.js.map +1 -0
  141. package/dist/server.d.ts +7 -0
  142. package/dist/server.d.ts.map +1 -0
  143. package/dist/server.js +786 -0
  144. package/dist/server.js.map +1 -0
  145. package/dist/source-read.d.ts +31 -0
  146. package/dist/source-read.d.ts.map +1 -0
  147. package/dist/source-read.js +213 -0
  148. package/dist/source-read.js.map +1 -0
  149. package/dist/theme-authoring/contract-schema.d.ts +191 -0
  150. package/dist/theme-authoring/contract-schema.d.ts.map +1 -0
  151. package/dist/theme-authoring/contract-schema.js +49 -0
  152. package/dist/theme-authoring/contract-schema.js.map +1 -0
  153. package/dist/theme-authoring/repository.d.ts +18 -0
  154. package/dist/theme-authoring/repository.d.ts.map +1 -0
  155. package/dist/theme-authoring/repository.js +55 -0
  156. package/dist/theme-authoring/repository.js.map +1 -0
  157. package/dist/theme-tool.d.ts +26 -0
  158. package/dist/theme-tool.d.ts.map +1 -0
  159. package/dist/theme-tool.js +312 -0
  160. package/dist/theme-tool.js.map +1 -0
  161. package/dist/utils-guide-topics.d.ts +39 -0
  162. package/dist/utils-guide-topics.d.ts.map +1 -0
  163. package/dist/utils-guide-topics.js +202 -0
  164. package/dist/utils-guide-topics.js.map +1 -0
  165. package/dist/utils-info.d.ts +75 -0
  166. package/dist/utils-info.d.ts.map +1 -0
  167. package/dist/utils-info.js +219 -0
  168. package/dist/utils-info.js.map +1 -0
  169. package/dist/utils-suggestion-grounding.d.ts +59 -0
  170. package/dist/utils-suggestion-grounding.d.ts.map +1 -0
  171. package/dist/utils-suggestion-grounding.js +267 -0
  172. package/dist/utils-suggestion-grounding.js.map +1 -0
  173. package/docs/agent-recipe-example-site.md +91 -0
  174. package/docs/ai-design-mcp-blueprint.md +75 -0
  175. package/docs/cross-model-mcp-playbook.md +127 -0
  176. package/docs/example-site-and-mcp-training.md +82 -0
  177. package/docs/mcp-capability-status.md +51 -0
  178. package/docs/mcp-tooling-roadmap.md +36 -0
  179. package/docs/sky-chart-option-api.md +47 -0
  180. package/docs/starter-prompt.md +17 -0
  181. package/docs/theme-config-guide.md +178 -0
  182. package/docs/utils-usage-guide.md +110 -0
  183. package/docs/vue-wrapper-v-model.md +36 -0
  184. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/theme-authoring/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export type ThemeOperation = 'guide' | 'fields' | 'field' | 'variables' | 'match_intent' | 'compose';
2
+ export type ThemeRequest = {
3
+ operation: 'guide';
4
+ } | {
5
+ operation: 'fields';
6
+ group?: string;
7
+ } | {
8
+ operation: 'field';
9
+ field_id: string;
10
+ } | {
11
+ operation: 'variables';
12
+ max_names?: number;
13
+ } | {
14
+ operation: 'match_intent';
15
+ phrase: string;
16
+ } | {
17
+ operation: 'compose';
18
+ field_ids: string[];
19
+ };
20
+ export declare function handleGetTheme(input: ThemeRequest): {
21
+ content: {
22
+ type: "text";
23
+ text: string;
24
+ }[];
25
+ };
26
+ //# sourceMappingURL=theme-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-tool.d.ts","sourceRoot":"","sources":["../src/theme-tool.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;AAErG,MAAM,MAAM,YAAY,GACpB;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GACtB;IAAE,SAAS,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,SAAS,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,SAAS,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AA6OlD,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY;;;;;EAuFjD"}
@@ -0,0 +1,312 @@
1
+ import { getMainPackageVersion } from './catalog.js';
2
+ import { THEME_CONFIG_GUIDE_RELATIVE_PATH, CROSS_MODEL_MCP_PLAYBOOK_RELATIVE_PATH } from './docs-read.js';
3
+ import { extractThemeVariableNames } from './source-read.js';
4
+ import { filterThemeAuthoringContract, loadThemeAuthoringContract, THEME_AUTHORING_CONTRACT_REPO_PATH } from './theme-authoring/repository.js';
5
+ import { McpErrorCode, mcpToolErr } from './mcp-tool-errors.js';
6
+ import { withSkyUiMcpMeta } from './mcp-response-truth.js';
7
+ const GROUP_PURPOSE = {
8
+ color: 'Canvas, text, brand accent, and semantic colors (success, warning, danger, info).',
9
+ surface: 'Frosted glass panels, hover washes, and translucent UI surfaces.',
10
+ overlay: 'Modal, drawer, and full-screen scrim tints above content.',
11
+ typography: 'Font stacks, type scale, line height, weight, and letter spacing.',
12
+ density: 'Spacing scale — padding, gaps, and layout rhythm.',
13
+ shape: 'Corner radius, borders, dividers, and elevation shadows.',
14
+ effects: 'Blur, brightness, and saturation tiers for decorative layers.',
15
+ motion: 'Transition durations and easing curves.',
16
+ stacking: 'Named z-index levels (dropdown, modal, toast, …).',
17
+ opacity: 'Disabled and muted UI opacity multipliers.'
18
+ };
19
+ const VALUE_KIND_HELP = {
20
+ css_color: 'One CSS color: #hex, rgb(), oklch(), color-mix(), etc.',
21
+ font_stack: 'CSS font-family list string.',
22
+ font_stack_optional: 'Optional font-family; omit to keep package default.',
23
+ glass_config: 'Object: baseColor + opacities { primary, secondary, tertiary, solid } for frosted surfaces.',
24
+ hover_overlay_config: 'Object: color + opacity ladder for pointer-hover on cards/tiles.',
25
+ overlay_config: 'Object: color + opacities for modal/drawer scrims (higher than glass).',
26
+ object_top_bottom: 'Object with top/bottom numbers for vertical glass gradient sheen.',
27
+ record_font_sizes: 'Partial map of scale keys (xs, sm, md, …) to CSS font-size values.',
28
+ record_line_heights: 'Partial map of named line heights to unitless or length values.',
29
+ record_weights: 'Partial map of weight names to numeric or keyword weights.',
30
+ record_letter_spacing: 'Partial map of tracking names to em/px values.',
31
+ record_css_lengths: 'Partial map of numeric spacing keys to rem/px (drives --sky-space-*).',
32
+ record_radii: 'Partial map: primary, secondary, tertiary, full → border-radius values.',
33
+ record_css_shadows: 'Partial map of shadow tier names to full box-shadow strings.',
34
+ record_length_blur: 'Partial map of blur tier names to length values (e.g. 12px).',
35
+ record_filter: 'Partial map of tier names to CSS filter multipliers (brightness/saturate).',
36
+ record_css_border: 'Partial map of tier names to complete CSS border shorthand.',
37
+ motion_config: 'Object: duration { instant, fast, normal, slow } and ease { default, in, out, … }.',
38
+ record_integers: 'Partial map of layer names to unitless z-index integers.',
39
+ record_0_1: 'Partial map of names to 0–1 opacity multipliers for disabled/muted UI.'
40
+ };
41
+ function pathInUserTheme(field, mode) {
42
+ if (field.paths)
43
+ return field.paths[mode];
44
+ if (field.pathRoot)
45
+ return field.pathRoot[mode];
46
+ return mode;
47
+ }
48
+ function compactField(field) {
49
+ return {
50
+ id: field.id,
51
+ group: field.group,
52
+ label: field.label,
53
+ whatItDoes: field.summary,
54
+ userThemePath: {
55
+ light: pathInUserTheme(field, 'light'),
56
+ dark: pathInUserTheme(field, 'dark')
57
+ },
58
+ valueKind: field.valueKind,
59
+ valueKindHelp: VALUE_KIND_HELP[field.valueKind] ?? 'See examplePatch for the expected JSON shape.',
60
+ matchPhrases: field.naturalLanguageHooks,
61
+ affectsCssVars: field.emitsVariables
62
+ };
63
+ }
64
+ function buildGuide(contract) {
65
+ const groups = [...new Set(contract.fields.map((f) => f.group))].sort();
66
+ return {
67
+ code: 'OK',
68
+ operation: 'guide',
69
+ startHere: 'Call operation fields for the full catalog, then operation field with a field_id when you need examplePatch JSON. Only include keys the user asked to change.',
70
+ userTheme: {
71
+ property: contract.themeProperty,
72
+ onElement: contract.providerElement ?? 'sky-theme-provider',
73
+ type: contract.typescriptType,
74
+ shape: {
75
+ topLevel: '{ light?: ThemeModeConfigPartial, dark?: ThemeModeConfigPartial }',
76
+ light: 'Overrides merged into the default light theme when light mode is active.',
77
+ dark: 'Overrides merged into the default dark theme when dark mode is active.',
78
+ rule: 'Omit any key you are not changing — deep merge keeps package defaults for the rest.'
79
+ },
80
+ merge: contract.mergeRules,
81
+ minimalExample: {
82
+ light: { color: { active: '#0a6cff', background: '#f4f6f8' } },
83
+ dark: { color: { active: '#4b9aff', background: '#0c0e12' } }
84
+ },
85
+ applyOnHost: '<sky-theme-provider .userTheme=${userTheme}>…</sky-theme-provider>'
86
+ },
87
+ workflow: contract.agentWorkflow,
88
+ groups: groups.map((id) => ({
89
+ id,
90
+ purpose: GROUP_PURPOSE[id] ?? 'Theme mode configuration entries.',
91
+ fieldIds: contract.fields.filter((f) => f.group === id).map((f) => f.id)
92
+ })),
93
+ fieldCount: contract.fields.length,
94
+ valueKinds: VALUE_KIND_HELP,
95
+ relatedDocs: {
96
+ proseGuide: THEME_CONFIG_GUIDE_RELATIVE_PATH,
97
+ playbook: CROSS_MODEL_MCP_PLAYBOOK_RELATIVE_PATH,
98
+ contractFile: THEME_AUTHORING_CONTRACT_REPO_PATH
99
+ },
100
+ nextSteps: [
101
+ 'get_theme operation fields — every userTheme entry with whatItDoes and paths',
102
+ 'get_theme operation field + field_id — examplePatch to copy into userTheme',
103
+ 'get_theme operation match_intent + phrase — map user wording to field_ids',
104
+ 'get_theme operation compose + field_ids — merge examplePatch objects into one userTheme',
105
+ 'get_theme operation variables — list of emitted --sky-* CSS names (do not invent new names)'
106
+ ]
107
+ };
108
+ }
109
+ function jsonResult(payload) {
110
+ return {
111
+ content: [{ type: 'text', text: JSON.stringify(withSkyUiMcpMeta(payload, 'api_source'), null, 2) }]
112
+ };
113
+ }
114
+ function scorePhraseMatch(query, phrase) {
115
+ const q = query.toLowerCase().trim();
116
+ const p = phrase.toLowerCase().trim();
117
+ if (!q || !p)
118
+ return 0;
119
+ if (q === p)
120
+ return 100;
121
+ if (q.includes(p))
122
+ return 80 + Math.min(15, p.length);
123
+ if (p.includes(q))
124
+ return 60 + Math.min(15, q.length);
125
+ const qTokens = q.split(/\s+/).filter(Boolean);
126
+ const pTokens = p.split(/\s+/).filter(Boolean);
127
+ let overlap = 0;
128
+ for (const t of qTokens) {
129
+ if (pTokens.some((pt) => pt.includes(t) || t.includes(pt)))
130
+ overlap += 1;
131
+ }
132
+ return overlap > 0 ? 20 + overlap * 10 : 0;
133
+ }
134
+ function matchThemeIntent(phrase, contract) {
135
+ const routerHits = [];
136
+ for (const router of contract.intentRouters ?? []) {
137
+ const matchedPhrases = router.phrases.filter((p) => scorePhraseMatch(phrase, p) > 0);
138
+ if (matchedPhrases.length === 0)
139
+ continue;
140
+ const score = Math.max(...matchedPhrases.map((p) => scorePhraseMatch(phrase, p)));
141
+ routerHits.push({
142
+ score,
143
+ fieldIds: router.fieldIds,
144
+ matchedPhrases,
145
+ agentHint: router.agentHint
146
+ });
147
+ }
148
+ routerHits.sort((a, b) => b.score - a.score || a.fieldIds.join(',').localeCompare(b.fieldIds.join(',')));
149
+ const fieldHits = contract.fields
150
+ .map((field) => {
151
+ const matchedHooks = field.naturalLanguageHooks.filter((h) => scorePhraseMatch(phrase, h) > 0);
152
+ if (matchedHooks.length === 0)
153
+ return null;
154
+ return {
155
+ field_id: field.id,
156
+ score: Math.max(...matchedHooks.map((h) => scorePhraseMatch(phrase, h))),
157
+ matchedHooks,
158
+ ...compactField(field)
159
+ };
160
+ })
161
+ .filter((x) => x !== null)
162
+ .sort((a, b) => b.score - a.score || a.field_id.localeCompare(b.field_id));
163
+ const suggestedFieldIds = [
164
+ ...new Set([
165
+ ...routerHits.flatMap((r) => r.fieldIds),
166
+ ...fieldHits.map((f) => f.field_id)
167
+ ])
168
+ ];
169
+ return {
170
+ code: 'OK',
171
+ operation: 'match_intent',
172
+ phrase,
173
+ suggestedFieldIds,
174
+ intentRouters: routerHits.slice(0, 5),
175
+ fields: fieldHits.slice(0, 8),
176
+ nextStep: suggestedFieldIds.length > 0
177
+ ? `Call operation compose with field_ids: ${JSON.stringify(suggestedFieldIds.slice(0, 6))} — or operation field for one entry's examplePatch.`
178
+ : 'No strong match — call operation fields and scan groups, or ask the user to clarify.'
179
+ };
180
+ }
181
+ function isPlainObject(value) {
182
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
183
+ }
184
+ function deepMergeTheme(target, source) {
185
+ for (const [key, value] of Object.entries(source)) {
186
+ if (isPlainObject(value) && isPlainObject(target[key])) {
187
+ target[key] = deepMergeTheme({ ...target[key] }, value);
188
+ }
189
+ else {
190
+ target[key] = value;
191
+ }
192
+ }
193
+ return target;
194
+ }
195
+ function composeUserTheme(fieldIds, contract) {
196
+ const userTheme = { light: {}, dark: {} };
197
+ const applied = [];
198
+ const missing = [];
199
+ for (const rawId of fieldIds) {
200
+ const id = rawId.trim();
201
+ if (!id)
202
+ continue;
203
+ const field = contract.fields.find((f) => f.id.toLowerCase() === id.toLowerCase());
204
+ if (!field) {
205
+ missing.push(id);
206
+ continue;
207
+ }
208
+ applied.push(field.id);
209
+ const patch = field.examplePatch;
210
+ if (isPlainObject(patch)) {
211
+ if (isPlainObject(patch.light))
212
+ deepMergeTheme(userTheme.light, patch.light);
213
+ if (isPlainObject(patch.dark))
214
+ deepMergeTheme(userTheme.dark, patch.dark);
215
+ }
216
+ }
217
+ return {
218
+ code: 'OK',
219
+ operation: 'compose',
220
+ field_ids: fieldIds,
221
+ appliedFieldIds: applied,
222
+ missingFieldIds: missing,
223
+ userTheme,
224
+ tip: 'Adjust placeholder values (colors, rem steps) to match the user brand before applying on sky-theme-provider.',
225
+ howToUse: [
226
+ 'Pass userTheme to sky-theme-provider (.userTheme in Lit, :userTheme in Vue, userTheme prop in React).',
227
+ 'Only keys present here override defaults; omitted theme keys keep package defaults via deep merge.'
228
+ ]
229
+ };
230
+ }
231
+ export function handleGetTheme(input) {
232
+ if (input.operation === 'variables') {
233
+ const r = extractThemeVariableNames(input.max_names ?? 200);
234
+ if (!r.ok) {
235
+ return mcpToolErr(McpErrorCode.THEME_EXTRACT_FAILED, r.error);
236
+ }
237
+ return jsonResult({
238
+ code: 'OK',
239
+ operation: 'variables',
240
+ description: 'CSS custom properties emitted by sky-theme-provider (--sky-*). Customize via userTheme, not by inventing new variable names.',
241
+ mainVersion: getMainPackageVersion(),
242
+ themeProperty: 'userTheme',
243
+ variables: r.variables,
244
+ count: r.variables.length,
245
+ sourceHint: r.sourceHint,
246
+ relatedDocs: {
247
+ themeConfigGuidePath: THEME_CONFIG_GUIDE_RELATIVE_PATH,
248
+ crossModelPlaybookPath: CROSS_MODEL_MCP_PLAYBOOK_RELATIVE_PATH
249
+ }
250
+ });
251
+ }
252
+ const loaded = loadThemeAuthoringContract();
253
+ if (!loaded.ok) {
254
+ return mcpToolErr(McpErrorCode.THEME_CONTRACT_FAILED, loaded.error);
255
+ }
256
+ if (input.operation === 'guide') {
257
+ return jsonResult(buildGuide(loaded.data));
258
+ }
259
+ if (input.operation === 'match_intent') {
260
+ const phrase = input.phrase?.trim();
261
+ if (!phrase) {
262
+ return mcpToolErr(McpErrorCode.THEME_CONTRACT_FAILED, 'Provide phrase for match_intent (e.g. "brand color", "more padding").');
263
+ }
264
+ return jsonResult(matchThemeIntent(phrase, loaded.data));
265
+ }
266
+ if (input.operation === 'compose') {
267
+ const ids = (input.field_ids ?? []).map((id) => id.trim()).filter(Boolean);
268
+ if (ids.length === 0) {
269
+ return mcpToolErr(McpErrorCode.THEME_CONTRACT_FAILED, 'Provide field_ids array (e.g. ["color_active","color_background"]).');
270
+ }
271
+ return jsonResult(composeUserTheme(ids, loaded.data));
272
+ }
273
+ if (input.operation === 'field') {
274
+ const filtered = filterThemeAuthoringContract(loaded.data, { field_id: input.field_id });
275
+ const field = filtered.fields[0];
276
+ if (!field) {
277
+ return mcpToolErr(McpErrorCode.THEME_CONTRACT_FAILED, `Unknown field_id: ${input.field_id}`, {
278
+ availableFieldIds: loaded.data.fields.map((f) => f.id)
279
+ });
280
+ }
281
+ return jsonResult({
282
+ code: 'OK',
283
+ operation: 'field',
284
+ ...compactField(field),
285
+ examplePatch: field.examplePatch,
286
+ howToUse: [
287
+ `Merge examplePatch keys into userTheme (light and/or dark). Paths: ${pathInUserTheme(field, 'light')} / ${pathInUserTheme(field, 'dark')}.`,
288
+ 'Adjust only values the user requested; keep structure from examplePatch.',
289
+ `Emitted CSS: ${field.emitsVariables.join(', ')}`
290
+ ]
291
+ });
292
+ }
293
+ const filter = {};
294
+ if (input.group?.trim())
295
+ filter.group = input.group.trim();
296
+ const contract = filterThemeAuthoringContract(loaded.data, filter);
297
+ if (input.group?.trim() && contract.fields.length === 0) {
298
+ return mcpToolErr(McpErrorCode.THEME_CONTRACT_FAILED, `No fields in group: ${input.group}`, {
299
+ availableGroups: [...new Set(loaded.data.fields.map((f) => f.group))].sort()
300
+ });
301
+ }
302
+ return jsonResult({
303
+ code: 'OK',
304
+ operation: 'fields',
305
+ themeProperty: contract.themeProperty,
306
+ groupFilter: input.group?.trim() ?? null,
307
+ count: contract.fields.length,
308
+ fields: contract.fields.map(compactField),
309
+ tip: 'Use operation field with field_id for examplePatch JSON ready to merge into userTheme.'
310
+ });
311
+ }
312
+ //# sourceMappingURL=theme-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-tool.js","sourceRoot":"","sources":["../src/theme-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /** Path to the shipped MCP guide for @sky-ui/utils (under `docs/` next to `dist/` in the MCP package). */
2
+ export declare function resolveUtilsGuideAbsolutePath(): string;
3
+ /** Short ids → canonical slug from headings in utils-system-guide.md */
4
+ export declare const UTILS_TOPIC_ALIASES: Record<string, string>;
5
+ export type ListUtilsTopicsResult = {
6
+ ok: true;
7
+ package: string;
8
+ guidePath: string;
9
+ topicCount: number;
10
+ topics: {
11
+ id: string;
12
+ level: 2 | 3;
13
+ title: string;
14
+ }[];
15
+ commonAliases: Record<string, string>;
16
+ } | {
17
+ ok: false;
18
+ error: string;
19
+ };
20
+ export declare function listUtilsTopics(): ListUtilsTopicsResult;
21
+ export type GetUtilsTopicResult = {
22
+ ok: true;
23
+ topic: string;
24
+ title: string;
25
+ level: 2 | 3;
26
+ mimeType: 'text/markdown';
27
+ content: string;
28
+ truncated: boolean;
29
+ charCount: number;
30
+ guidePath: string;
31
+ } | {
32
+ ok: false;
33
+ error: string;
34
+ availableTopicIds?: string[];
35
+ };
36
+ export declare function getUtilsTopic(topicInput: string, options?: {
37
+ max_chars?: number;
38
+ }): GetUtilsTopicResult;
39
+ //# sourceMappingURL=utils-guide-topics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-guide-topics.d.ts","sourceRoot":"","sources":["../src/utils-guide-topics.ts"],"names":[],"mappings":"AAWA,0GAA0G;AAC1G,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2EtD,CAAC;AA4DF,MAAM,MAAM,qBAAqB,GAC7B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,wBAAgB,eAAe,IAAI,qBAAqB,CAYvD;AAED,MAAM,MAAM,mBAAmB,GAC3B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE/D,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,mBAAmB,CAyCrB"}
@@ -0,0 +1,202 @@
1
+ import { readFileSync, existsSync, statSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { mcpPackageRoot } from './catalog.js';
4
+ import { parseReadmeTopicMarkers, slugifyReadmeHeading } from './reactivity-readme-topics.js';
5
+ const README_MAX_BYTES = 900_000;
6
+ /** Path to the shipped MCP guide for @sky-ui/utils (under `docs/` next to `dist/` in the MCP package). */
7
+ export function resolveUtilsGuideAbsolutePath() {
8
+ return join(mcpPackageRoot(), 'docs', 'utils-system-guide.md');
9
+ }
10
+ /** Short ids → canonical slug from headings in utils-system-guide.md */
11
+ export const UTILS_TOPIC_ALIASES = {
12
+ overview: 'overview',
13
+ intro: 'overview',
14
+ install: 'installation',
15
+ npm: 'installation',
16
+ postcss: 'postcss-plugin-reference',
17
+ plugin: 'postcss-plugin-reference',
18
+ skyuiplugin: 'postcss-plugin-reference',
19
+ options: 'plugin-identity-and-options',
20
+ useropts: 'plugin-identity-and-options',
21
+ defaults: 'plugin-identity-and-options',
22
+ config: 'config-discovery',
23
+ discovery: 'config-discovery',
24
+ skyui: 'at-rules-apply-and-skyui',
25
+ atrules: 'at-rules-apply-and-skyui',
26
+ apply: 'apply',
27
+ 'skyui-utilities': 'skyui-utilities',
28
+ reference: 'other-skyui-at-rules',
29
+ source: 'other-skyui-at-rules',
30
+ skyuiplugins: 'built-in-plugins-skyuicss',
31
+ plugins: 'built-in-plugins-skyuicss',
32
+ skyuicss: 'built-in-plugins-skyuicss',
33
+ skyuicssforms: 'built-in-plugins-skyuicss',
34
+ prose: 'built-in-plugins-skyuicss',
35
+ preflight: 'preflight-and-forms',
36
+ formsstrategy: 'preflight-and-forms',
37
+ 'skyui-base': 'jit-layers-and-generateutilities',
38
+ vite: 'installation',
39
+ prettier: 'suggestion-engine-for-tooling',
40
+ scanning: 'content-scanning-and-class-extraction',
41
+ extract: 'custom-extract',
42
+ extractor: 'default-extractor-behavior',
43
+ react: 'default-extractor-behavior',
44
+ vue: 'default-extractor-behavior',
45
+ lit: 'default-extractor-behavior',
46
+ classname: 'default-extractor-behavior',
47
+ cache: 'incremental-scan-cache',
48
+ 'skyui-cache': 'incremental-scan-cache',
49
+ safelist: 'safelist-and-pattern-expansion',
50
+ patterns: 'safelist-and-pattern-expansion',
51
+ theme: 'theme-api-configure-gettheme',
52
+ configure: 'configure-merge-rules',
53
+ gettheme: 'gettheme-and-resettheme',
54
+ resettheme: 'gettheme-and-resettheme',
55
+ themejs: 'theme-module-src-engine-theme',
56
+ darkmode: 'darkmode',
57
+ animation: 'custom-animation',
58
+ keyframes: 'custom-animation',
59
+ jit: 'jit-layers-and-generateutilities',
60
+ layers: 'jit-layers-and-generateutilities',
61
+ generateutilities: 'generateutilities-api',
62
+ arbitrary: 'arbitrary-utilities',
63
+ utilities: 'utility-categories-internal-modules',
64
+ variants: 'variant-prefixes-reference',
65
+ responsive: 'families-non-exhaustive',
66
+ hover: 'families-non-exhaustive',
67
+ breakpoints: 'families-non-exhaustive',
68
+ runtime: 'runtime-bundle-skyui-global',
69
+ cdn: 'runtime-bundle-skyui-global',
70
+ dom: 'loading-and-api',
71
+ 'skyui-global': 'runtime-bundle-skyui-global',
72
+ fouc: 'fouc-blocker',
73
+ mutationobserver: 'mutationobserver',
74
+ intellisense: 'suggestion-engine-for-tooling',
75
+ completions: 'package-sky-ui-utils-suggestion-engine',
76
+ suggestion: 'suggestion-engine-for-tooling',
77
+ catalog: 'package-sky-ui-utils-suggestion-engine',
78
+ vscode: 'intellisense-extension',
79
+ extension: 'intellisense-extension',
80
+ sky: 'sky-ui-components-and-tokens-alignment',
81
+ components: 'sky-ui-components-and-tokens-alignment',
82
+ tokens: 'sky-ui-components-and-tokens-alignment',
83
+ mcp: 'quick-mcp-workflow',
84
+ workflow: 'quick-mcp-workflow',
85
+ featuremap: 'overview'
86
+ };
87
+ function readUtilsGuideText() {
88
+ const p = resolveUtilsGuideAbsolutePath();
89
+ if (!existsSync(p) || !statSync(p).isFile()) {
90
+ return {
91
+ ok: false,
92
+ error: `utils-system-guide.md not found at ${p} (expected when MCP package docs are bundled with the monorepo).`
93
+ };
94
+ }
95
+ const st = statSync(p);
96
+ if (st.size > README_MAX_BYTES) {
97
+ return { ok: false, error: 'utils-system-guide.md exceeds size limit for topic slicing.' };
98
+ }
99
+ try {
100
+ return { ok: true, text: readFileSync(p, 'utf8') };
101
+ }
102
+ catch (e) {
103
+ const msg = e instanceof Error ? e.message : String(e);
104
+ return { ok: false, error: msg };
105
+ }
106
+ }
107
+ function normalizeTopicInput(input) {
108
+ return input
109
+ .trim()
110
+ .toLowerCase()
111
+ .replace(/_/g, '-')
112
+ .replace(/\s+/g, '-')
113
+ .replace(/-+/g, '-')
114
+ .replace(/^-|-$/g, '');
115
+ }
116
+ function resolveTopicSlug(topicInput, markers) {
117
+ const n = normalizeTopicInput(topicInput);
118
+ if (!n)
119
+ return null;
120
+ const aliased = UTILS_TOPIC_ALIASES[n];
121
+ if (aliased && markers.some((m) => m.slug === aliased))
122
+ return aliased;
123
+ if (markers.some((m) => m.slug === n))
124
+ return n;
125
+ const byPrefix = markers.filter((m) => m.slug.startsWith(n));
126
+ if (byPrefix.length === 1)
127
+ return byPrefix[0].slug;
128
+ const byContains = markers.filter((m) => m.slug.includes(n) || slugifyReadmeHeading(m.title).includes(n));
129
+ if (byContains.length === 1)
130
+ return byContains[0].slug;
131
+ return null;
132
+ }
133
+ function extractSegment(lines, markers, topicIndex) {
134
+ const start = markers[topicIndex].line;
135
+ const lv = markers[topicIndex].level;
136
+ let end = lines.length;
137
+ for (let j = topicIndex + 1; j < markers.length; j++) {
138
+ if (markers[j].level <= lv) {
139
+ end = markers[j].line;
140
+ break;
141
+ }
142
+ }
143
+ return lines.slice(start, end).join('\n');
144
+ }
145
+ export function listUtilsTopics() {
146
+ const r = readUtilsGuideText();
147
+ if (!r.ok)
148
+ return r;
149
+ const markers = parseReadmeTopicMarkers(r.text);
150
+ return {
151
+ ok: true,
152
+ package: '@sky-ui/utils',
153
+ guidePath: 'packages/mcp/docs/utils-system-guide.md',
154
+ topicCount: markers.length,
155
+ topics: markers.map((m) => ({ id: m.slug, level: m.level, title: m.title })),
156
+ commonAliases: { ...UTILS_TOPIC_ALIASES }
157
+ };
158
+ }
159
+ export function getUtilsTopic(topicInput, options) {
160
+ const maxChars = options?.max_chars ?? 80_000;
161
+ const r = readUtilsGuideText();
162
+ if (!r.ok)
163
+ return r;
164
+ const lines = r.text.split(/\r?\n/);
165
+ const markers = parseReadmeTopicMarkers(r.text);
166
+ const slug = resolveTopicSlug(topicInput, markers);
167
+ if (!slug) {
168
+ return {
169
+ ok: false,
170
+ error: `Unknown topic "${topicInput}". Use list_utils_topics for ids (slug per heading).`,
171
+ availableTopicIds: markers.map((m) => m.slug)
172
+ };
173
+ }
174
+ const idx = markers.findIndex((m) => m.slug === slug);
175
+ if (idx < 0) {
176
+ return {
177
+ ok: false,
178
+ error: 'Internal: slug not found after resolve.',
179
+ availableTopicIds: markers.map((m) => m.slug)
180
+ };
181
+ }
182
+ const mk = markers[idx];
183
+ let content = extractSegment(lines, markers, idx);
184
+ const charCount = content.length;
185
+ let truncated = false;
186
+ if (content.length > maxChars) {
187
+ content = content.slice(0, maxChars) + '\n\n… [truncated]';
188
+ truncated = true;
189
+ }
190
+ return {
191
+ ok: true,
192
+ topic: mk.slug,
193
+ title: mk.title,
194
+ level: mk.level,
195
+ mimeType: 'text/markdown',
196
+ content,
197
+ truncated,
198
+ charCount,
199
+ guidePath: 'packages/mcp/docs/utils-system-guide.md'
200
+ };
201
+ }
202
+ //# sourceMappingURL=utils-guide-topics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-guide-topics.js","sourceRoot":"","sources":["../src/utils-guide-topics.ts"],"names":[],"mappings":"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"}