@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,75 @@
1
+ /** Monorepo `packages/utils` or installed `@sky-ui/utils` root. */
2
+ export declare function resolveUtilsPackageRoot(): string | null;
3
+ /** Structured reference for agents: complements `get_utils_topic` slices. */
4
+ export declare function buildUtilsFeatureReference(): {
5
+ peerDependency: {
6
+ name: string;
7
+ note: string;
8
+ };
9
+ postcssPlugin: {
10
+ exportName: string;
11
+ postcssPluginId: string;
12
+ configFileNames: string[];
13
+ scanCache: {
14
+ relativePath: string;
15
+ purpose: string;
16
+ };
17
+ };
18
+ themeModule: {
19
+ modulePath: string;
20
+ exports: string[];
21
+ darkModeStrategies: readonly ["data", "class", "media"];
22
+ preflightModes: readonly ["true", "minimal", "full"];
23
+ formsStrategyValues: readonly ["class", "base", "both"];
24
+ };
25
+ utilityCore: {
26
+ modulePath: string;
27
+ generateUtilities: string;
28
+ };
29
+ atRules: string[];
30
+ cssLayers: string[];
31
+ builtInPlugins: string[];
32
+ postcssOptionKeys: {
33
+ name: string;
34
+ summary: string;
35
+ }[];
36
+ runtimeGlobal: {
37
+ objectName: string;
38
+ members: string[];
39
+ fouc: string;
40
+ domObservers: string;
41
+ };
42
+ suggestionEngine: {
43
+ entry: string;
44
+ capabilities: string[];
45
+ vscodeExtensionPath: string;
46
+ };
47
+ variantFamilies: string[];
48
+ proseTypography: {
49
+ utilities: string[];
50
+ cssVariables: string;
51
+ };
52
+ mcpWorkflow: string[];
53
+ };
54
+ export type UtilsFeatureReference = ReturnType<typeof buildUtilsFeatureReference>;
55
+ export type UtilsPackageInfoResult = {
56
+ ok: true;
57
+ packageName: string;
58
+ version?: string;
59
+ description?: string;
60
+ entryImport: string;
61
+ packageRoot: string;
62
+ exportsMap: Record<string, string>;
63
+ suggestionEngineExports: string[];
64
+ postcssDefaultExport: string;
65
+ peerDependencies?: Record<string, string>;
66
+ utilsGuideDocPath: string;
67
+ featureReference: UtilsFeatureReference;
68
+ } | {
69
+ ok: false;
70
+ error: string;
71
+ };
72
+ export declare function getUtilsPackageInfo(options?: {
73
+ export_substring?: string;
74
+ }): UtilsPackageInfoResult;
75
+ //# sourceMappingURL=utils-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-info.d.ts","sourceRoot":"","sources":["../src/utils-info.ts"],"names":[],"mappings":"AASA,mEAAmE;AACnE,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAkBvD;AAiBD,6EAA6E;AAC7E,wBAAgB,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+GzC;AAsBD,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAElF,MAAM,MAAM,sBAAsB,GAC9B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,qBAAqB,CAAC;CACzC,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,sBAAsB,CA+CnG"}
@@ -0,0 +1,219 @@
1
+ import { existsSync, readFileSync, statSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { createRequire } from 'node:module';
4
+ import { packagesDir } from './catalog.js';
5
+ function requireFromHere() {
6
+ return createRequire(import.meta.url);
7
+ }
8
+ /** Monorepo `packages/utils` or installed `@sky-ui/utils` root. */
9
+ export function resolveUtilsPackageRoot() {
10
+ const mono = join(packagesDir(), 'utils');
11
+ const pkgMono = join(mono, 'package.json');
12
+ if (existsSync(pkgMono)) {
13
+ try {
14
+ const j = JSON.parse(readFileSync(pkgMono, 'utf8'));
15
+ if (j.name === '@sky-ui/utils')
16
+ return mono;
17
+ }
18
+ catch {
19
+ /* ignore */
20
+ }
21
+ }
22
+ try {
23
+ const req = requireFromHere();
24
+ const resolved = req.resolve('@sky-ui/utils/package.json');
25
+ return dirname(resolved);
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ /** Flatten `package.json` "exports" for MCP responses. */
32
+ function summarizePackageExports(exportsField) {
33
+ const out = {};
34
+ if (!exportsField || typeof exportsField !== 'object')
35
+ return out;
36
+ for (const [subpath, val] of Object.entries(exportsField)) {
37
+ if (typeof val === 'string') {
38
+ out[subpath] = val;
39
+ }
40
+ else if (val && typeof val === 'object' && !Array.isArray(val)) {
41
+ const v = val;
42
+ out[subpath] = v.import ?? v.require ?? v.default ?? JSON.stringify(val);
43
+ }
44
+ }
45
+ return out;
46
+ }
47
+ /** Structured reference for agents: complements `get_utils_topic` slices. */
48
+ export function buildUtilsFeatureReference() {
49
+ return {
50
+ peerDependency: { name: 'postcss', note: '>= 8.4 required for PostCSS plugin integration' },
51
+ postcssPlugin: {
52
+ exportName: 'SkyUIPlugin',
53
+ postcssPluginId: 'sky-ui-utils',
54
+ configFileNames: ['skyui.config.js', 'skyui.config.cjs', 'skyui.config.mjs'],
55
+ scanCache: {
56
+ relativePath: '.cache/.skyui-cache.json',
57
+ purpose: 'Per-file hash/mtime + extracted classes for incremental content scans'
58
+ }
59
+ },
60
+ themeModule: {
61
+ modulePath: 'packages/utils/src/engine/theme/',
62
+ exports: [
63
+ 'defaultScreens',
64
+ 'defaultColors',
65
+ 'defaultSpacing',
66
+ 'configure',
67
+ 'getTheme',
68
+ 'resetTheme'
69
+ ],
70
+ darkModeStrategies: ['data', 'class', 'media'],
71
+ preflightModes: ['true', 'minimal', 'full'],
72
+ formsStrategyValues: ['class', 'base', 'both']
73
+ },
74
+ utilityCore: {
75
+ modulePath: 'packages/utils/src/engine/generate-all.ts',
76
+ generateUtilities: '(usedClasses: Set<string> | null, options?: { layered?: boolean }) => string — null emits full catalog; Set enables JIT'
77
+ },
78
+ atRules: [
79
+ '@apply',
80
+ '@skyui utilities',
81
+ '@skyui theme',
82
+ '@skyui source',
83
+ '@skyui source inline',
84
+ '@skyui reference',
85
+ '@skyui utility',
86
+ '@skyui variant',
87
+ '@skyui plugin'
88
+ ],
89
+ cssLayers: ['skyui.base', 'skyui.components', 'skyui.utilities'],
90
+ builtInPlugins: [
91
+ '@skyuicss/forms',
92
+ '@skyuicss/typography',
93
+ '@skyuicss/container-queries',
94
+ 'forms',
95
+ 'typography',
96
+ 'container-queries'
97
+ ],
98
+ postcssOptionKeys: [
99
+ { name: 'cwd', summary: 'Project root for globs and cache resolution' },
100
+ { name: 'config', summary: 'skyui.config filename (resolved relative to cwd)' },
101
+ { name: 'content', summary: 'Glob patterns of source files to scan for class strings' },
102
+ { name: 'ignore', summary: 'Glob excludes (node_modules, dist, …)' },
103
+ { name: 'safelist', summary: 'Strings or { pattern, variants } — pattern expansion + optional generator for "all"' },
104
+ { name: 'generator', summary: 'Function returning all class names — enables safelist pattern "all" / prefix expansion' },
105
+ { name: 'extract', summary: 'Custom (source) => Set<string> class extractor' },
106
+ { name: 'watchDirs', summary: 'Emit PostCSS dir-dependency messages for file watchers' },
107
+ { name: 'breakpoints', summary: 'Inline screens map merged with skyui.config and theme' },
108
+ { name: 'theme', summary: 'Inline theme override passed to configure()' },
109
+ { name: 'fgConcurrency', summary: 'Parallel fast-glob concurrency' },
110
+ { name: 'readConcurrency', summary: 'Parallel file read batch size' },
111
+ { name: 'outLog', summary: 'Verbose logging' },
112
+ { name: 'sourceName', summary: 'Synthetic filename label for generated CSS' }
113
+ ],
114
+ runtimeGlobal: {
115
+ objectName: 'skyui',
116
+ members: ['run', 'scan', 'scanDOM', 'injectCSS', 'config'],
117
+ fouc: 'visibility:hidden on body until html.sky-ui-ready unless config.blockFOUC === false',
118
+ domObservers: 'MutationObserver on class changes after first run (debounced)'
119
+ },
120
+ suggestionEngine: {
121
+ entry: '@sky-ui/utils/suggestion-engine',
122
+ capabilities: [
123
+ 'Completions + completion context for partial tokens',
124
+ 'CSS preview and resolved colors for hover docs',
125
+ 'Class catalog build/invalidate aligned with theme',
126
+ 'getAllVariants() — full variant prefix list',
127
+ 'Re-exports configure() from theme for editor/build parity'
128
+ ],
129
+ vscodeExtensionPath: 'packages/utils/extensions/sky-ui-intellisense (monorepo)'
130
+ },
131
+ variantFamilies: [
132
+ 'responsive + max-*',
133
+ 'container query @ variants',
134
+ 'theme (light/dark)',
135
+ 'state pseudos (hover, focus, disabled, …)',
136
+ 'not-* state negation',
137
+ 'media (motion, print, orientation)',
138
+ 'starting:',
139
+ 'dir (rtl/ltr)',
140
+ 'aria-*',
141
+ 'child/count (first, odd, …)',
142
+ 'pseudo-elements (before, after, …)',
143
+ 'group-* / peer-*',
144
+ 'placeholder',
145
+ 'has-[] / not-[] / supports-[] / arbitrary selectors'
146
+ ],
147
+ proseTypography: {
148
+ utilities: ['prose', 'prose-sm', 'prose-invert', 'not-prose', 'prose-slate', '…'],
149
+ cssVariables: '--sky-prose-* (not --tw-prose-*)'
150
+ },
151
+ mcpWorkflow: [
152
+ 'utils_catalog operation package_info — exports + this featureReference',
153
+ 'utils_catalog operation list_topics — section ids from utils-system-guide.md',
154
+ 'utils_catalog operation get_topic — one subsection markdown',
155
+ 'get_theme (aspect variables | contract) — align with components'
156
+ ]
157
+ };
158
+ }
159
+ function readSuggestionEngineExports(root) {
160
+ const p = join(root, 'src', 'suggestion-engine', 'index.js');
161
+ if (!existsSync(p) || !statSync(p).isFile())
162
+ return [];
163
+ try {
164
+ const text = readFileSync(p, 'utf8');
165
+ const names = [];
166
+ for (const line of text.split(/\r?\n/)) {
167
+ const m = /^\s*export\s*\{([^}]+)\}\s*from\s*/.exec(line);
168
+ if (!m)
169
+ continue;
170
+ for (const part of m[1].split(',')) {
171
+ const name = part.replace(/\s+as\s+\w+$/i, '').trim();
172
+ if (/^[a-zA-Z_$][\w$]*$/.test(name))
173
+ names.push(name);
174
+ }
175
+ }
176
+ return names;
177
+ }
178
+ catch {
179
+ return [];
180
+ }
181
+ }
182
+ export function getUtilsPackageInfo(options) {
183
+ const root = resolveUtilsPackageRoot();
184
+ if (!root) {
185
+ return {
186
+ ok: false,
187
+ error: 'Could not resolve @sky-ui/utils (install the package or run MCP from the sky-ui monorepo with packages/utils present).'
188
+ };
189
+ }
190
+ let pkgJson;
191
+ try {
192
+ pkgJson = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'));
193
+ }
194
+ catch {
195
+ return { ok: false, error: 'Failed to read @sky-ui/utils package.json' };
196
+ }
197
+ let suggestionEngineExports = readSuggestionEngineExports(root);
198
+ const sub = options?.export_substring?.trim().toLowerCase();
199
+ if (sub) {
200
+ suggestionEngineExports = suggestionEngineExports.filter((n) => n.toLowerCase().includes(sub));
201
+ }
202
+ const exportsMap = summarizePackageExports(pkgJson.exports);
203
+ const out = {
204
+ ok: true,
205
+ packageName: pkgJson.name ?? '@sky-ui/utils',
206
+ version: pkgJson.version,
207
+ description: pkgJson.description,
208
+ entryImport: '@sky-ui/utils',
209
+ packageRoot: root,
210
+ exportsMap,
211
+ suggestionEngineExports,
212
+ postcssDefaultExport: 'SkyUIPlugin',
213
+ peerDependencies: pkgJson.peerDependencies,
214
+ utilsGuideDocPath: 'packages/mcp/docs/utils-system-guide.md',
215
+ featureReference: buildUtilsFeatureReference()
216
+ };
217
+ return out;
218
+ }
219
+ //# sourceMappingURL=utils-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-info.js","sourceRoot":"","sources":["../src/utils-info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /** Resolve installed `@sky.ui/utils` or monorepo `packages/utils` (for loading suggestion-engine only). */
2
+ export declare function resolveUtilsPackageRoot(): string | null;
3
+ type SuggestionEngine = {
4
+ getClassCatalog: () => string[];
5
+ getAllVariants: () => string[];
6
+ ARBITRARY_PREFIXES: readonly string[];
7
+ };
8
+ export declare function loadSuggestionEngine(): Promise<SuggestionEngine | null>;
9
+ export declare function utilityEngineSource(): 'live' | 'snapshot' | 'none';
10
+ export declare function parseUtilityToken(raw: string): {
11
+ variants: string[];
12
+ base: string;
13
+ };
14
+ export type CheckUtilityClassResult = {
15
+ ok: true;
16
+ input: string;
17
+ variants: string[];
18
+ base: string;
19
+ knownInCatalog: boolean;
20
+ matchKind: 'catalog' | 'arbitrary_value' | 'arbitrary_property' | 'unknown';
21
+ arbitraryPrefix?: string;
22
+ unknownVariants: string[];
23
+ variantNote: string;
24
+ disclaimer: string;
25
+ } | {
26
+ ok: false;
27
+ error: string;
28
+ };
29
+ export declare function checkUtilityClass(token: string): Promise<CheckUtilityClassResult>;
30
+ export type SearchUtilityClassesResult = {
31
+ ok: true;
32
+ starts_with: string;
33
+ limit: number;
34
+ offset: number;
35
+ totalMatches: number;
36
+ returned: number;
37
+ classes: string[];
38
+ disclaimer: string;
39
+ } | {
40
+ ok: false;
41
+ error: string;
42
+ };
43
+ export declare function searchUtilityClasses(options: {
44
+ starts_with: string;
45
+ limit: number;
46
+ offset: number;
47
+ }): Promise<SearchUtilityClassesResult>;
48
+ export type UtilityVariantPrefixesResult = {
49
+ ok: true;
50
+ variants: string[];
51
+ count: number;
52
+ disclaimer: string;
53
+ } | {
54
+ ok: false;
55
+ error: string;
56
+ };
57
+ export declare function getUtilityVariantPrefixes(): Promise<UtilityVariantPrefixesResult>;
58
+ export {};
59
+ //# sourceMappingURL=utils-suggestion-grounding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-suggestion-grounding.d.ts","sourceRoot":"","sources":["../src/utils-suggestion-grounding.ts"],"names":[],"mappings":"AAeA,2GAA2G;AAC3G,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAkBvD;AAED,KAAK,gBAAgB,GAAG;IACtB,eAAe,EAAE,MAAM,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,MAAM,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AA6DF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgC7E;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,UAAU,GAAG,MAAM,CAElE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAMnF;AAiBD,MAAM,MAAM,uBAAuB,GAC/B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,SAAS,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,SAAS,CAAC;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA8EvF;AAED,MAAM,MAAM,0BAA0B,GAClC;IACE,EAAE,EAAE,IAAI,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAuCtC;AAED,MAAM,MAAM,4BAA4B,GACpC;IACE,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,4BAA4B,CAAC,CAiBvF"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Grounding helpers: load @sky.ui/utils/suggestion-engine at runtime so MCP answers
3
+ * match the same catalog / variants as editor completions.
4
+ * Falls back to shipped snapshot when the package is missing or dist is not built.
5
+ */
6
+ import { existsSync, readFileSync } from 'node:fs';
7
+ import { dirname, join } from 'node:path';
8
+ import { pathToFileURL } from 'node:url';
9
+ import { createRequire } from 'node:module';
10
+ import { packagesDir } from './catalog.js';
11
+ function requireFromHere() {
12
+ return createRequire(import.meta.url);
13
+ }
14
+ /** Resolve installed `@sky.ui/utils` or monorepo `packages/utils` (for loading suggestion-engine only). */
15
+ export function resolveUtilsPackageRoot() {
16
+ const mono = join(packagesDir(), 'utils');
17
+ const pkgMono = join(mono, 'package.json');
18
+ if (existsSync(pkgMono)) {
19
+ try {
20
+ const j = JSON.parse(readFileSync(pkgMono, 'utf8'));
21
+ if (j.name === '@sky.ui/utils')
22
+ return mono;
23
+ }
24
+ catch {
25
+ /* ignore */
26
+ }
27
+ }
28
+ try {
29
+ const req = requireFromHere();
30
+ const resolved = req.resolve('@sky.ui/utils/package.json');
31
+ return dirname(resolved);
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ let engineCache;
38
+ let snapshotCache;
39
+ let engineSource = 'none';
40
+ function snapshotPath() {
41
+ return join(packagesDir(), 'mcp', 'data', 'utils-suggestion-snapshot.json');
42
+ }
43
+ function loadSnapshot() {
44
+ if (snapshotCache !== undefined)
45
+ return snapshotCache;
46
+ const path = snapshotPath();
47
+ if (!existsSync(path)) {
48
+ snapshotCache = null;
49
+ return null;
50
+ }
51
+ try {
52
+ const parsed = JSON.parse(readFileSync(path, 'utf8'));
53
+ if (!Array.isArray(parsed.catalog) || !Array.isArray(parsed.variants)) {
54
+ snapshotCache = null;
55
+ return null;
56
+ }
57
+ snapshotCache = parsed;
58
+ return parsed;
59
+ }
60
+ catch {
61
+ snapshotCache = null;
62
+ return null;
63
+ }
64
+ }
65
+ function engineFromSnapshot(snapshot) {
66
+ return {
67
+ getClassCatalog: () => snapshot.catalog,
68
+ getAllVariants: () => snapshot.variants,
69
+ ARBITRARY_PREFIXES: snapshot.arbitraryPrefixes
70
+ };
71
+ }
72
+ async function importEngineFromUtilsRoot(utilsRoot) {
73
+ const distEntry = join(utilsRoot, 'dist', 'suggestion-engine', 'index.js');
74
+ if (existsSync(distEntry)) {
75
+ try {
76
+ return (await import(pathToFileURL(distEntry).href));
77
+ }
78
+ catch {
79
+ /* try package export next */
80
+ }
81
+ }
82
+ try {
83
+ return (await import('@sky.ui/utils/suggestion-engine'));
84
+ }
85
+ catch {
86
+ return null;
87
+ }
88
+ }
89
+ export async function loadSuggestionEngine() {
90
+ if (engineCache !== undefined)
91
+ return engineCache;
92
+ const utilsRoot = resolveUtilsPackageRoot();
93
+ if (utilsRoot) {
94
+ const live = await importEngineFromUtilsRoot(utilsRoot);
95
+ if (live) {
96
+ engineCache = live;
97
+ engineSource = 'live';
98
+ return live;
99
+ }
100
+ }
101
+ else {
102
+ try {
103
+ const live = (await import('@sky.ui/utils/suggestion-engine'));
104
+ engineCache = live;
105
+ engineSource = 'live';
106
+ return live;
107
+ }
108
+ catch {
109
+ /* fall through to snapshot */
110
+ }
111
+ }
112
+ const snapshot = loadSnapshot();
113
+ if (snapshot) {
114
+ engineCache = engineFromSnapshot(snapshot);
115
+ engineSource = 'snapshot';
116
+ return engineCache;
117
+ }
118
+ engineCache = null;
119
+ engineSource = 'none';
120
+ return null;
121
+ }
122
+ export function utilityEngineSource() {
123
+ return engineSource;
124
+ }
125
+ export function parseUtilityToken(raw) {
126
+ const trimmed = raw.trim();
127
+ if (!trimmed)
128
+ return { variants: [], base: '' };
129
+ const parts = trimmed.split(':').filter((p) => p.length > 0);
130
+ if (parts.length === 1)
131
+ return { variants: [], base: parts[0] };
132
+ return { variants: parts.slice(0, -1), base: parts[parts.length - 1] };
133
+ }
134
+ /** `[prop:value]` arbitrary CSS form */
135
+ function isArbitraryPropertyClass(base) {
136
+ return base.startsWith('[') && base.endsWith(']') && base.length > 2;
137
+ }
138
+ /** `prefix-[value]` arbitrary value form (same rules as suggestion-engine complete.js) */
139
+ function parseArbitraryValue(base) {
140
+ const open = base.lastIndexOf('-[');
141
+ if (open < 1 || !base.endsWith(']'))
142
+ return null;
143
+ return {
144
+ prefix: base.slice(0, open),
145
+ inner: base.slice(open + 2, -1)
146
+ };
147
+ }
148
+ export async function checkUtilityClass(token) {
149
+ const eng = await loadSuggestionEngine();
150
+ if (!eng) {
151
+ return {
152
+ ok: false,
153
+ error: 'Could not load @sky.ui/utils/suggestion-engine (install @sky.ui/utils or run MCP from the sky-ui monorepo).'
154
+ };
155
+ }
156
+ const catalogSet = new Set(eng.getClassCatalog());
157
+ const variantSet = new Set(eng.getAllVariants());
158
+ const arbitraryPrefixes = new Set(eng.ARBITRARY_PREFIXES);
159
+ const { variants, base } = parseUtilityToken(token);
160
+ if (!base) {
161
+ return { ok: false, error: 'Empty utility token after parsing.' };
162
+ }
163
+ const unknownVariants = variants.filter((v) => !variantSet.has(v));
164
+ if (isArbitraryPropertyClass(base)) {
165
+ return {
166
+ ok: true,
167
+ input: token.trim(),
168
+ variants,
169
+ base,
170
+ knownInCatalog: true,
171
+ matchKind: 'arbitrary_property',
172
+ unknownVariants,
173
+ variantNote: unknownVariants.length === 0
174
+ ? 'All variant segments match suggestion-engine variant prefixes.'
175
+ : 'Some variant segments are not in getAllVariants(); build may still accept or reject depending on generateCSS.',
176
+ disclaimer: 'Arbitrary property classes [prop:value] are a supported pattern. Values are not validated here.'
177
+ };
178
+ }
179
+ const arb = parseArbitraryValue(base);
180
+ if (arb) {
181
+ const known = arbitraryPrefixes.has(arb.prefix);
182
+ return {
183
+ ok: true,
184
+ input: token.trim(),
185
+ variants,
186
+ base,
187
+ knownInCatalog: known,
188
+ matchKind: 'arbitrary_value',
189
+ arbitraryPrefix: arb.prefix,
190
+ unknownVariants,
191
+ variantNote: unknownVariants.length === 0
192
+ ? 'All variant segments match suggestion-engine variant prefixes.'
193
+ : 'Unknown variant segment(s) listed in unknownVariants.',
194
+ disclaimer: known
195
+ ? `Prefix "${arb.prefix}" supports arbitrary bracket values per suggestion-engine ARBITRARY_PREFIXES. Inner value is not validated.`
196
+ : `Prefix "${arb.prefix}" is not in ARBITRARY_PREFIXES; this pattern may not be supported.`
197
+ };
198
+ }
199
+ const inCat = catalogSet.has(base);
200
+ return {
201
+ ok: true,
202
+ input: token.trim(),
203
+ variants,
204
+ base,
205
+ knownInCatalog: inCat,
206
+ matchKind: inCat ? 'catalog' : 'unknown',
207
+ unknownVariants,
208
+ variantNote: unknownVariants.length === 0
209
+ ? 'All variant segments match suggestion-engine variant prefixes.'
210
+ : 'Unknown variant segment(s) listed in unknownVariants.',
211
+ disclaimer: inCat
212
+ ? 'Base class appears in the suggestion-engine static catalog (default theme / bundled scales).'
213
+ : 'Base class is not in the static catalog. It may still work via theme or safelist, or it may be invalid — use utility_classes search_classes for similar names or confirm in your build output.'
214
+ };
215
+ }
216
+ export async function searchUtilityClasses(options) {
217
+ const eng = await loadSuggestionEngine();
218
+ if (!eng) {
219
+ return {
220
+ ok: false,
221
+ error: 'Could not load @sky.ui/utils/suggestion-engine (install @sky.ui/utils or run MCP from the sky-ui monorepo).'
222
+ };
223
+ }
224
+ const sw = options.starts_with.trim().toLowerCase();
225
+ if (sw.length < 2) {
226
+ return {
227
+ ok: false,
228
+ error: 'Provide starts_with with at least 2 characters (full catalog is large). Example: "flex", "bg-", "rounded".'
229
+ };
230
+ }
231
+ const catalog = eng.getClassCatalog();
232
+ const matches = [];
233
+ for (const cls of catalog) {
234
+ if (cls.toLowerCase().startsWith(sw))
235
+ matches.push(cls);
236
+ }
237
+ matches.sort((a, b) => a.localeCompare(b));
238
+ const totalMatches = matches.length;
239
+ const slice = matches.slice(options.offset, options.offset + options.limit);
240
+ return {
241
+ ok: true,
242
+ starts_with: options.starts_with.trim(),
243
+ limit: options.limit,
244
+ offset: options.offset,
245
+ totalMatches,
246
+ returned: slice.length,
247
+ classes: slice,
248
+ disclaimer: 'Results are from suggestion-engine getClassCatalog() (default bundled scales). Project theme extensions may add names not listed here.'
249
+ };
250
+ }
251
+ export async function getUtilityVariantPrefixes() {
252
+ const eng = await loadSuggestionEngine();
253
+ if (!eng) {
254
+ return {
255
+ ok: false,
256
+ error: 'Could not load @sky.ui/utils/suggestion-engine (install @sky.ui/utils or run MCP from the sky-ui monorepo).'
257
+ };
258
+ }
259
+ const variants = [...eng.getAllVariants()].sort((a, b) => a.localeCompare(b));
260
+ return {
261
+ ok: true,
262
+ variants,
263
+ count: variants.length,
264
+ disclaimer: 'Same variant list as getAllVariants() in @sky.ui/utils/suggestion-engine (used for completions). Combine with base utilities using variant:base (e.g. sm:hover:flex).'
265
+ };
266
+ }
267
+ //# sourceMappingURL=utils-suggestion-grounding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-suggestion-grounding.js","sourceRoot":"","sources":["../src/utils-suggestion-grounding.ts"],"names":[],"mappings":"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"}