@pure-ds/core 0.7.60 → 0.7.62

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 (31) hide show
  1. package/LOCALIZATION.md +18 -0
  2. package/dist/types/pds.d.ts +1 -0
  3. package/dist/types/public/assets/pds/components/pds-render.d.ts +21 -0
  4. package/dist/types/public/assets/pds/components/pds-render.d.ts.map +1 -0
  5. package/dist/types/src/js/common/localization-resource-provider.d.ts +2 -0
  6. package/dist/types/src/js/common/localization-resource-provider.d.ts.map +1 -1
  7. package/dist/types/src/js/pds-core/pds-config.d.ts.map +1 -1
  8. package/dist/types/src/js/pds-core/pds-enhancers-meta.d.ts.map +1 -1
  9. package/dist/types/src/js/pds-core/pds-enhancers.d.ts.map +1 -1
  10. package/dist/types/src/js/pds-core/pds-generator.d.ts.map +1 -1
  11. package/package.json +1 -1
  12. package/packages/pds-cli/bin/pds-setup-mcp.js +27 -115
  13. package/packages/pds-cli/bin/postinstall.mjs +16 -0
  14. package/packages/pds-cli/lib/pds-mcp-core.js +150 -3
  15. package/packages/pds-cli/lib/setup-mcp-config.js +72 -0
  16. package/public/assets/js/app.js +1 -1
  17. package/public/assets/js/pds-enhancers.js +1 -1
  18. package/public/assets/js/pds-localization.js +1 -1
  19. package/public/assets/js/pds-manager.js +89 -54
  20. package/public/assets/pds/components/pds-render.js +768 -0
  21. package/public/assets/pds/core/pds-enhancers.js +1 -1
  22. package/public/assets/pds/core/pds-localization.js +1 -1
  23. package/public/assets/pds/core/pds-manager.js +89 -54
  24. package/public/assets/pds/icons/pds-icons.svg +8 -0
  25. package/src/js/common/localization-resource-provider.js +3 -1
  26. package/src/js/common/localization-resource-provider.test.mjs +91 -0
  27. package/src/js/pds-core/pds-config.js +2 -0
  28. package/src/js/pds-core/pds-enhancers-meta.js +6 -0
  29. package/src/js/pds-core/pds-enhancers.js +60 -0
  30. package/src/js/pds-core/pds-generator.js +35 -0
  31. package/src/js/pds.d.ts +1 -0
package/LOCALIZATION.md CHANGED
@@ -81,6 +81,23 @@ document.body.innerHTML = `
81
81
 
82
82
  Both calls are identical. Translation is decided by nearest `lang` scope.
83
83
 
84
+ If you use message codes instead of source strings, provide a source-locale bundle too and opt into loading it:
85
+
86
+ ```javascript
87
+ const localization = PDS.createJSONLocalization({
88
+ locale: "en",
89
+ locales: ["en", "nl"],
90
+ loadDefaultLocale: true,
91
+ aliases: {
92
+ en: ["en-US", "en"],
93
+ nl: ["nl-NL", "nl"],
94
+ },
95
+ basePath: "/assets/locales",
96
+ });
97
+ ```
98
+
99
+ With `loadDefaultLocale: true`, PDS will also fetch the default/source bundle, so `msg("my-long-string-code")` can resolve in English as well as translated locales.
100
+
84
101
  ## How Context Resolution Works
85
102
 
86
103
  When `msg()` resolves a key, PDS chooses locale in this order:
@@ -187,6 +204,7 @@ From `#pds` root:
187
204
 
188
205
  - `msg()` is synchronous by design.
189
206
  - On first encounter of a new locale, text may briefly render fallback content, then update once the locale bundle loads.
207
+ - If you use code keys for the source locale, preload that locale with `await loadLocale("en-US")` or `await loadLocale("en")` before first render when you need immediate source-copy output.
190
208
  - For immediate guarantees, preload with `loadLocale("xx")` before rendering that locale scope.
191
209
 
192
210
  ## Missing Translation Warnings
@@ -164,6 +164,7 @@ export interface PDSJSONLocalizationOptions {
164
164
  locale?: string;
165
165
  locales?: string[];
166
166
  basePath?: string;
167
+ loadDefaultLocale?: boolean;
167
168
  aliases?: Record<string, string[]>;
168
169
  requestInit?: RequestInit;
169
170
  cache?: Map<string, PDSLocalizationMessages>;
@@ -0,0 +1,21 @@
1
+ export type PdsRenderContent = {
2
+ /**
3
+ * HTML string rendered in the iframe body.
4
+ */
5
+ html?: string;
6
+ /**
7
+ * CSS text injected into the iframe user stylesheet.
8
+ */
9
+ css?: string;
10
+ /**
11
+ * JavaScript module source evaluated in the iframe runtime.
12
+ */
13
+ js?: string;
14
+ };
15
+ export type PdsRenderSetContentOptions = {
16
+ /**
17
+ * Force full iframe rebuild after applying content.
18
+ */
19
+ reload?: boolean;
20
+ };
21
+ //# sourceMappingURL=pds-render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pds-render.d.ts","sourceRoot":"","sources":["../../../../../../public/assets/pds/components/pds-render.js"],"names":[],"mappings":";;;;WA+Cc,MAAM;;;;UACN,MAAM;;;;SACN,MAAM;;;;;;aAKN,OAAO"}
@@ -12,6 +12,7 @@
12
12
  * locale?: string,
13
13
  * locales?: string[],
14
14
  * basePath?: string,
15
+ * loadDefaultLocale?: boolean,
15
16
  * aliases?: Record<string, string[]>,
16
17
  * requestInit?: RequestInit,
17
18
  * cache?: Map<string, Record<string, string | { content?: string }>>,
@@ -30,6 +31,7 @@ export function createJSONLocalization(options?: {
30
31
  locale?: string;
31
32
  locales?: string[];
32
33
  basePath?: string;
34
+ loadDefaultLocale?: boolean;
33
35
  aliases?: Record<string, string[]>;
34
36
  requestInit?: RequestInit;
35
37
  cache?: Map<string, Record<string, string | {
@@ -1 +1 @@
1
- {"version":3,"file":"localization-resource-provider.d.ts","sourceRoot":"","sources":["../../../../../src/js/common/localization-resource-provider.js"],"names":[],"mappings":"AAiNA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,iDAlBW;IACN,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACpE,GACS;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;QAC1C,UAAU,EAAE,CAAC,OAAO,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,CAAC;KACrG,CAAC;CACH,CAmFH"}
1
+ {"version":3,"file":"localization-resource-provider.d.ts","sourceRoot":"","sources":["../../../../../src/js/common/localization-resource-provider.js"],"names":[],"mappings":"AAiNA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,iDAnBW;IACN,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACpE,GACS;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;QAC1C,UAAU,EAAE,CAAC,OAAO,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,CAAC;KACrG,CAAC;CACH,CAoFH"}
@@ -1 +1 @@
1
- {"version":3,"file":"pds-config.d.ts","sourceRoot":"","sources":["../../../../../src/js/pds-core/pds-config.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pds-config.d.ts","sourceRoot":"","sources":["../../../../../src/js/pds-core/pds-config.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pds-enhancers-meta.d.ts","sourceRoot":"","sources":["../../../../../src/js/pds-core/pds-enhancers-meta.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;KA8HE"}
1
+ {"version":3,"file":"pds-enhancers-meta.d.ts","sourceRoot":"","sources":["../../../../../src/js/pds-core/pds-enhancers-meta.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;KAoIE"}
@@ -1 +1 @@
1
- {"version":3,"file":"pds-enhancers.d.ts","sourceRoot":"","sources":["../../../../../src/js/pds-core/pds-enhancers.js"],"names":[],"mappings":"AAw0BA;;;;;GAKG;AACH;;;IAGI;AAlzBJ,mDAmBC"}
1
+ {"version":3,"file":"pds-enhancers.d.ts","sourceRoot":"","sources":["../../../../../src/js/pds-core/pds-enhancers.js"],"names":[],"mappings":"AAo4BA;;;;;GAKG;AACH;;;IAGI;AA92BJ,mDAmBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pds-generator.d.ts","sourceRoot":"","sources":["../../../../../src/js/pds-core/pds-generator.js"],"names":[],"mappings":"AAihMA;;;;;;;;;;;GAWG;AACH,8CAPW,MAAM,YAEd;IAAyB,WAAW,GAA5B,MAAM;IACY,cAAc,GAAhC,OAAO;IACU,WAAW,GAA5B,MAAM;CACd,GAAU;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,GAAG,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC,CAAA;CAAE,CA0VrL;AAED;;;;;;;GAOG;AACH,0CAJW,KAAK,CAAC,MAAM,CAAC,YACb,MAAM,GACJ;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAC,OAAO,EAAC,MAAM,CAAC;YAAC,KAAK,EAAC,MAAM,CAAC;YAAC,GAAG,EAAC,MAAM,CAAC;YAAC,OAAO,CAAC,EAAC,MAAM,CAAA;SAAC,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAC,OAAO,EAAC,MAAM,CAAC;YAAC,OAAO,CAAC,EAAC,MAAM,CAAA;SAAC,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,CAkGtO;AA79MD;;;GAGG;AACH;IAEE,mCAAiB;IAEjB,2BAEC;IAOD,0BA6CC;IA5CC;;MAIC;IAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAmC;IA6BrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiCC;IAiiBD;;;;OAIG;IACH,kDAyBC;IAiFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6DC;IAuqID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEC;IAGD,oBAEC;IA8yBD,qBAEC;IACD,yBAEC;IACD,yBAEC;IACD,wBAEC;IACD,yBAMC;IAED;;;;;;OAMG;IACH,oBA6JC;IAGD,4BAEC;IACD,gCAEC;IACD,gCAEC;IACD,+BAEC;IAmBD;;;OAGG;IACH;;;;;;MAoBC;;CAkBF"}
1
+ {"version":3,"file":"pds-generator.d.ts","sourceRoot":"","sources":["../../../../../src/js/pds-core/pds-generator.js"],"names":[],"mappings":"AAojMA;;;;;;;;;;;GAWG;AACH,8CAPW,MAAM,YAEd;IAAyB,WAAW,GAA5B,MAAM;IACY,cAAc,GAAhC,OAAO;IACU,WAAW,GAA5B,MAAM;CACd,GAAU;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,GAAG,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC,CAAA;CAAE,CA0VrL;AAED;;;;;;;GAOG;AACH,0CAJW,KAAK,CAAC,MAAM,CAAC,YACb,MAAM,GACJ;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAC,OAAO,EAAC,MAAM,CAAC;YAAC,KAAK,EAAC,MAAM,CAAC;YAAC,GAAG,EAAC,MAAM,CAAC;YAAC,OAAO,CAAC,EAAC,MAAM,CAAA;SAAC,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAC,IAAI,EAAC,MAAM,CAAC;YAAC,OAAO,EAAC,MAAM,CAAC;YAAC,OAAO,CAAC,EAAC,MAAM,CAAA;SAAC,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,CAkGtO;AAhgND;;;GAGG;AACH;IAEE,mCAAiB;IAEjB,2BAEC;IAOD,0BA6CC;IA5CC;;MAIC;IAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAmC;IA6BrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiCC;IAiiBD;;;;OAIG;IACH,kDAyBC;IAiFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6DC;IA0sID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEC;IAGD,oBAEC;IA8yBD,qBAEC;IACD,yBAEC;IACD,yBAEC;IACD,wBAEC;IACD,yBAMC;IAED;;;;;;OAMG;IACH,oBA6JC;IAGD,4BAEC;IACD,gCAEC;IACD,gCAEC;IACD,+BAEC;IAmBD;;;OAGG;IACH;;;;;;MAoBC;;CAkBF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pure-ds/core",
3
3
  "shortname": "pds",
4
- "version": "0.7.60",
4
+ "version": "0.7.62",
5
5
  "description": "Why develop a Design System when you can generate one?",
6
6
  "repository": {
7
7
  "type": "git",
@@ -1,116 +1,28 @@
1
1
  #!/usr/bin/env node
2
-
3
- import { mkdir, readFile, writeFile, access } from 'fs/promises';
4
- import { existsSync } from 'fs';
5
- import path from 'path';
6
-
7
- const projectRoot = process.cwd();
8
- const serverCommand = process.execPath;
9
- const args = process.argv.slice(2);
10
- const debugMode = args.includes('--debug');
11
-
12
- function getServerScriptCandidates() {
13
- return [
14
- 'node_modules/@pure-ds/core/packages/pds-cli/bin/pds-mcp-server.js',
15
- 'node_modules/pure-ds/packages/pds-cli/bin/pds-mcp-server.js',
16
- 'packages/pds-cli/bin/pds-mcp-server.js',
17
- ];
18
- }
19
-
20
- function resolveServerScriptPath() {
21
- const candidatePaths = getServerScriptCandidates();
22
-
23
- for (const candidate of candidatePaths) {
24
- const absolutePath = path.join(projectRoot, candidate);
25
- if (existsSync(absolutePath)) {
26
- return absolutePath;
27
- }
28
- }
29
-
30
- return path.join(projectRoot, candidatePaths[0]);
31
- }
32
-
33
- const serverArgs = [resolveServerScriptPath()];
34
-
35
- async function readJsonIfExists(filePath) {
36
- try {
37
- await access(filePath);
38
- const text = await readFile(filePath, 'utf8');
39
- return JSON.parse(text);
40
- } catch {
41
- return null;
42
- }
43
- }
44
-
45
- async function writeJson(filePath, value) {
46
- await mkdir(path.dirname(filePath), { recursive: true });
47
- await writeFile(filePath, `${JSON.stringify(value, null, 2)}\n`, 'utf8');
48
- }
49
-
50
- async function setupVSCodeConfig() {
51
- const configPath = path.join(projectRoot, '.vscode', 'mcp.json');
52
- const current = (await readJsonIfExists(configPath)) || {};
53
-
54
- const servers = current.servers && typeof current.servers === 'object' ? current.servers : {};
55
- servers['pure-ds'] = {
56
- type: 'stdio',
57
- command: serverCommand,
58
- args: serverArgs,
59
- ...(debugMode
60
- ? {
61
- env: {
62
- PDS_MCP_DEBUG: '1',
63
- PDS_MCP_LOG_FILE: './.pds-mcp.log',
64
- },
65
- }
66
- : {}),
67
- };
68
-
69
- await writeJson(configPath, { ...current, servers });
70
- return configPath;
71
- }
72
-
73
- async function setupCursorConfig() {
74
- const configPath = path.join(projectRoot, '.cursor', 'mcp.json');
75
- const current = (await readJsonIfExists(configPath)) || {};
76
-
77
- const mcpServers = current.mcpServers && typeof current.mcpServers === 'object' ? current.mcpServers : {};
78
- mcpServers['pure-ds'] = {
79
- command: serverCommand,
80
- args: serverArgs,
81
- ...(debugMode
82
- ? {
83
- env: {
84
- PDS_MCP_DEBUG: '1',
85
- PDS_MCP_LOG_FILE: './.pds-mcp.log',
86
- },
87
- }
88
- : {}),
89
- };
90
-
91
- await writeJson(configPath, { ...current, mcpServers });
92
- return configPath;
93
- }
94
-
95
- async function main() {
96
- console.log('🔌 Setting up local PDS MCP server configuration...');
97
-
98
- const [vscodePath, cursorPath] = await Promise.all([
99
- setupVSCodeConfig(),
100
- setupCursorConfig(),
101
- ]);
102
-
103
- console.log('✅ MCP configuration updated');
104
- console.log(` • VS Code: ${path.relative(projectRoot, vscodePath)}`);
105
- console.log(` • Cursor: ${path.relative(projectRoot, cursorPath)}`);
106
- if (debugMode) {
107
- console.log(' • Debug mode: enabled (logs to .pds-mcp.log)');
108
- }
109
- console.log('');
110
- console.log('ℹ️ Restart your AI extension/IDE so it re-reads MCP server config.');
111
- }
112
-
113
- main().catch((error) => {
114
- console.error('❌ Failed to set up MCP:', error?.message || error);
115
- process.exit(1);
116
- });
2
+
3
+ import path from 'path';
4
+ import { setupMcpConfig } from '../lib/setup-mcp-config.js';
5
+
6
+ const projectRoot = process.cwd();
7
+ const args = process.argv.slice(2);
8
+ const debugMode = args.includes('--debug');
9
+
10
+ async function main() {
11
+ console.log('🔌 Setting up local PDS MCP server configuration...');
12
+
13
+ const { vscodePath, cursorPath } = await setupMcpConfig(projectRoot, { debugMode, silent: false });
14
+
15
+ console.log('✅ MCP configuration updated');
16
+ console.log(` • VS Code: ${path.relative(projectRoot, vscodePath)}`);
17
+ console.log(` • Cursor: ${path.relative(projectRoot, cursorPath)}`);
18
+ if (debugMode) {
19
+ console.log(' • Debug mode: enabled (logs to .pds-mcp.log)');
20
+ }
21
+ console.log('');
22
+ console.log('ℹ️ Restart your AI extension/IDE so it re-reads MCP server config.');
23
+ }
24
+
25
+ main().catch((error) => {
26
+ console.error('❌ Failed to set up MCP:', error?.message || error);
27
+ process.exit(1);
28
+ });
@@ -11,6 +11,7 @@ import { createHash } from 'crypto';
11
11
  import path from 'path';
12
12
  import { fileURLToPath, pathToFileURL } from 'url';
13
13
  import { buildStarterPdsConfig } from './templates/starter-templates.js';
14
+ import { setupMcpConfig } from '../lib/setup-mcp-config.js';
14
15
 
15
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
16
17
  const repoRoot = path.resolve(__dirname, '../../../');
@@ -277,6 +278,18 @@ async function copyCopilotInstructions(consumerRoot) {
277
278
  }
278
279
  }
279
280
 
281
+ /**
282
+ * Auto-configure MCP server for AI IDE integrations (VS Code + Cursor)
283
+ */
284
+ async function ensureMcpConfig(consumerRoot) {
285
+ try {
286
+ await setupMcpConfig(consumerRoot, { silent: true });
287
+ console.log('🔌 MCP server configured (.vscode/mcp.json, .cursor/mcp.json)');
288
+ } catch (e) {
289
+ console.warn('⚠️ Could not configure MCP server:', e?.message || e);
290
+ }
291
+ }
292
+
280
293
  /**
281
294
  * Discover the web root directory using common patterns
282
295
  */
@@ -423,6 +436,9 @@ async function copyPdsAssets() {
423
436
  // Copy Copilot instructions to consumer project
424
437
  await copyCopilotInstructions(consumerRoot);
425
438
 
439
+ // Auto-configure MCP server for AI IDE integrations
440
+ await ensureMcpConfig(consumerRoot);
441
+
426
442
  // Proactively add build & build-icons scripts to consumer package.json (still helpful)
427
443
  await ensureBuildScript(consumerRoot);
428
444
  try {
@@ -584,7 +584,7 @@ function getToolSchema() {
584
584
  },
585
585
  {
586
586
  name: 'validate_pds_snippet',
587
- description: 'Validate HTML snippet for unknown classes, tokens, and pds-* tags against SSoT.',
587
+ description: 'Validate HTML snippet for unknown classes, tokens, and pds-* tags against SSoT. Also flags anti-patterns: inline style attributes, <style> injection, and browser dialog calls.',
588
588
  inputSchema: {
589
589
  type: 'object',
590
590
  required: ['html'],
@@ -593,6 +593,18 @@ function getToolSchema() {
593
593
  },
594
594
  },
595
595
  },
596
+ {
597
+ name: 'get_best_match',
598
+ description: 'Given a UI intent (e.g. "dropdown nav menu", "spinner button", "accordion"), returns ranked PDS matches across all layers: web components (pds-*) > data-* enhancers > CSS primitives/utilities. Use this FIRST when deciding which PDS element to use.',
599
+ inputSchema: {
600
+ type: 'object',
601
+ required: ['intent'],
602
+ properties: {
603
+ intent: { type: 'string', description: 'UI intent or concept, e.g. "dropdown menu in a nav", "collapsible sections", "loading spinner on a button".' },
604
+ limit: { type: 'number', minimum: 1, maximum: 20, default: 8 },
605
+ },
606
+ },
607
+ },
596
608
  ];
597
609
  }
598
610
 
@@ -866,11 +878,25 @@ async function handleGetComponentApi(ctx, args = {}) {
866
878
  }
867
879
  }
868
880
 
881
+ const components = declarations.slice(0, limit).map((comp) => {
882
+ // Components with CSS parts use shadow DOM — surface the adoptLayers requirement
883
+ const hasShadowDom = comp.cssParts && comp.cssParts.length > 0;
884
+ return {
885
+ ...comp,
886
+ ...(hasShadowDom
887
+ ? {
888
+ shadowDomNote:
889
+ 'This component uses a shadow DOM. When extending or wrapping it in a custom element, call PDS.adoptLayers(this) in the constructor to inherit all PDS adopted stylesheets. NEVER inject <style> blocks into shadow DOM.',
890
+ }
891
+ : {}),
892
+ };
893
+ });
894
+
869
895
  return {
870
896
  ssoTRoot: normalizePath(ctx.ssoTRoot),
871
897
  source: normalizePath(path.relative(ctx.ssoTRoot, ctx.files.customElements)),
872
898
  totalMatches: declarations.length,
873
- components: declarations.slice(0, limit),
899
+ components,
874
900
  };
875
901
  }
876
902
 
@@ -982,9 +1008,43 @@ async function handleValidateSnippet(ctx, args = {}) {
982
1008
  const unknownTokens = [...usedTokens].filter((token) => !knownTokens.has(token));
983
1009
  const unknownComponents = [...usedComponents].filter((tag) => !knownComponents.has(tag));
984
1010
 
1011
+ // Anti-pattern detection
1012
+ const antiPatterns = [];
1013
+
1014
+ // Inline style attributes
1015
+ if (/\bstyle\s*=\s*["'][^"']+["']/.test(html)) {
1016
+ antiPatterns.push({
1017
+ rule: 'no-inline-styles',
1018
+ message: 'Inline style attributes detected. Use CSS custom property tokens (var(--token-name)) instead.',
1019
+ fix: 'Replace style="..." with CSS custom properties. Use get_tokens to find the right token.',
1020
+ });
1021
+ }
1022
+
1023
+ // <style> tag injection (especially dangerous in shadow DOM)
1024
+ if (/<style[\s>]/i.test(html)) {
1025
+ antiPatterns.push({
1026
+ rule: 'no-style-injection',
1027
+ message: '<style> tag detected. In PDS web components, always use PDS.adoptLayers(this) in the constructor — never inject <style> blocks.',
1028
+ fix: 'Remove <style> and call PDS.adoptLayers(this) in the shadow root constructor.',
1029
+ });
1030
+ }
1031
+
1032
+ // Browser dialog calls
1033
+ if (/\b(alert|confirm|prompt)\s*\(/.test(html)) {
1034
+ antiPatterns.push({
1035
+ rule: 'no-browser-dialogs',
1036
+ message: 'Browser dialog (alert/confirm/prompt) detected.',
1037
+ fix: 'Use PDS.toast() for notifications and PDS.ask() for confirmations/prompts.',
1038
+ });
1039
+ }
1040
+
1041
+ const hasAntiPatterns = antiPatterns.length > 0;
1042
+ const valid = unknownClasses.length === 0 && unknownTokens.length === 0 && unknownComponents.length === 0 && !hasAntiPatterns;
1043
+
985
1044
  return {
986
1045
  ssoTRoot: normalizePath(ctx.ssoTRoot),
987
- valid: unknownClasses.length === 0 && unknownTokens.length === 0 && unknownComponents.length === 0,
1046
+ valid,
1047
+ antiPatterns,
988
1048
  unknown: {
989
1049
  classes: unknownClasses.map((className) => ({
990
1050
  name: className,
@@ -1002,6 +1062,92 @@ async function handleValidateSnippet(ctx, args = {}) {
1002
1062
  };
1003
1063
  }
1004
1064
 
1065
+ async function handleGetBestMatch(ctx, args = {}) {
1066
+ const intent = String(args.intent || '').trim();
1067
+ if (!intent) throw new Error('The "intent" argument is required.');
1068
+ const limit = Math.min(Math.max(Number(args.limit || 8), 1), 20);
1069
+ const needle = normalize(intent);
1070
+
1071
+ const [ontology, enhancerMeta, customElements] = await Promise.all([
1072
+ getOntology(ctx),
1073
+ getEnhancerMeta(ctx),
1074
+ getCustomElements(ctx),
1075
+ ]);
1076
+
1077
+ const results = [];
1078
+
1079
+ // Layer 3: web components
1080
+ for (const moduleEntry of customElements.modules || []) {
1081
+ for (const declaration of moduleEntry.declarations || []) {
1082
+ if (!declaration.customElement || !declaration.tagName) continue;
1083
+ const hay = normalize(`${declaration.tagName} ${declaration.description || ''}`);
1084
+ if (!hay.includes(needle)) continue;
1085
+ results.push({
1086
+ layer: 3,
1087
+ type: 'web-component',
1088
+ selector: declaration.tagName,
1089
+ description: declaration.description || '',
1090
+ usage: `<${declaration.tagName}></${declaration.tagName}>`,
1091
+ note: 'Use get_component_api for full API details.',
1092
+ });
1093
+ }
1094
+ }
1095
+
1096
+ // Layer 2: data-* enhancers
1097
+ for (const item of enhancerMeta) {
1098
+ const hay = normalize(`${item.selector} ${item.description || ''}`);
1099
+ if (!hay.includes(needle)) continue;
1100
+ results.push({
1101
+ layer: 2,
1102
+ type: 'enhancer',
1103
+ selector: item.selector,
1104
+ description: item.description || '',
1105
+ usage: item.demoHtml || item.selector,
1106
+ note: 'Use get_enhancer_metadata for full details and demo HTML.',
1107
+ });
1108
+ }
1109
+
1110
+ // Layer 1: primitives and layout patterns
1111
+ const ontologyGroups = [
1112
+ ...(ontology.primitives || []),
1113
+ ...(ontology.layoutPatterns || []),
1114
+ ...(ontology.components || []),
1115
+ ];
1116
+ for (const item of ontologyGroups) {
1117
+ const hay = normalize(`${item.name || ''} ${item.description || ''} ${(item.selectors || []).join(' ')}`);
1118
+ if (!hay.includes(needle)) continue;
1119
+ const firstSelector = (item.selectors || [])[0] || '';
1120
+ const firstClass = getSelectorClasses(firstSelector)[0] || firstSelector;
1121
+ results.push({
1122
+ layer: 1,
1123
+ type: item.category || 'primitive',
1124
+ selector: firstSelector,
1125
+ description: item.description || '',
1126
+ usage: firstClass ? `<element class="${firstClass}">...</element>` : firstSelector,
1127
+ note: 'Use find_utility_class for all selectors in this group.',
1128
+ });
1129
+ }
1130
+
1131
+ // Sort layer desc, deduplicate by selector
1132
+ const seen = new Set();
1133
+ const ranked = results
1134
+ .sort((a, b) => b.layer - a.layer)
1135
+ .filter((item) => {
1136
+ if (!item.selector || seen.has(item.selector)) return false;
1137
+ seen.add(item.selector);
1138
+ return true;
1139
+ })
1140
+ .slice(0, limit);
1141
+
1142
+ return {
1143
+ ssoTRoot: normalizePath(ctx.ssoTRoot),
1144
+ intent,
1145
+ layerGuide: 'Prefer the LOWEST sufficient layer: Layer 1 (CSS primitive/utility) > Layer 2 (data-* enhancer) > Layer 3 (pds-* web component). Only escalate when the lower layer cannot satisfy the requirement.',
1146
+ totalMatches: ranked.length,
1147
+ matches: ranked,
1148
+ };
1149
+ }
1150
+
1005
1151
  const TOOL_HANDLERS = {
1006
1152
  get_tokens: handleGetTokens,
1007
1153
  find_utility_class: handleFindUtilityClass,
@@ -1010,6 +1156,7 @@ const TOOL_HANDLERS = {
1010
1156
  get_enhancer_metadata: handleGetEnhancerMetadata,
1011
1157
  get_config_relations: handleGetConfigRelations,
1012
1158
  validate_pds_snippet: handleValidateSnippet,
1159
+ get_best_match: handleGetBestMatch,
1013
1160
  };
1014
1161
 
1015
1162
  export function getPdsMcpTools() {
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Shared MCP configuration helper — used by both pds-setup-mcp.js (CLI) and postinstall.mjs.
3
+ */
4
+
5
+ import { mkdir, readFile, writeFile, access } from 'fs/promises';
6
+ import { existsSync } from 'fs';
7
+ import path from 'path';
8
+
9
+ export function getServerScriptCandidates() {
10
+ return [
11
+ 'node_modules/@pure-ds/core/packages/pds-cli/bin/pds-mcp-server.js',
12
+ 'node_modules/pure-ds/packages/pds-cli/bin/pds-mcp-server.js',
13
+ 'packages/pds-cli/bin/pds-mcp-server.js',
14
+ ];
15
+ }
16
+
17
+ export function resolveServerScriptPath(projectRoot) {
18
+ const candidatePaths = getServerScriptCandidates();
19
+ for (const candidate of candidatePaths) {
20
+ const absolutePath = path.join(projectRoot, candidate);
21
+ if (existsSync(absolutePath)) {
22
+ return absolutePath;
23
+ }
24
+ }
25
+ return path.join(projectRoot, candidatePaths[0]);
26
+ }
27
+
28
+ async function readJsonIfExists(filePath) {
29
+ try {
30
+ await access(filePath);
31
+ const text = await readFile(filePath, 'utf8');
32
+ return JSON.parse(text);
33
+ } catch {
34
+ return null;
35
+ }
36
+ }
37
+
38
+ async function writeJson(filePath, value) {
39
+ await mkdir(path.dirname(filePath), { recursive: true });
40
+ await writeFile(filePath, `${JSON.stringify(value, null, 2)}\n`, 'utf8');
41
+ }
42
+
43
+ /**
44
+ * Write .vscode/mcp.json and .cursor/mcp.json in the given project root.
45
+ * @param {string} projectRoot
46
+ * @param {{ debugMode?: boolean, silent?: boolean }} options
47
+ * @returns {{ vscodePath: string, cursorPath: string }}
48
+ */
49
+ export async function setupMcpConfig(projectRoot, { debugMode = false, silent = false } = {}) {
50
+ const serverCommand = process.execPath;
51
+ const serverArgs = [resolveServerScriptPath(projectRoot)];
52
+ const log = silent ? () => {} : (msg) => console.log(msg);
53
+ const envBlock = debugMode ? { env: { PDS_MCP_DEBUG: '1', PDS_MCP_LOG_FILE: './.pds-mcp.log' } } : {};
54
+
55
+ // VS Code
56
+ const vscodePath = path.join(projectRoot, '.vscode', 'mcp.json');
57
+ const vscodeConfig = (await readJsonIfExists(vscodePath)) || {};
58
+ const vscodeServers = (vscodeConfig.servers && typeof vscodeConfig.servers === 'object') ? vscodeConfig.servers : {};
59
+ vscodeServers['pure-ds'] = { type: 'stdio', command: serverCommand, args: serverArgs, ...envBlock };
60
+ await writeJson(vscodePath, { ...vscodeConfig, servers: vscodeServers });
61
+ log(`🔌 MCP: .vscode/mcp.json configured`);
62
+
63
+ // Cursor
64
+ const cursorPath = path.join(projectRoot, '.cursor', 'mcp.json');
65
+ const cursorConfig = (await readJsonIfExists(cursorPath)) || {};
66
+ const cursorServers = (cursorConfig.mcpServers && typeof cursorConfig.mcpServers === 'object') ? cursorConfig.mcpServers : {};
67
+ cursorServers['pure-ds'] = { command: serverCommand, args: serverArgs, ...envBlock };
68
+ await writeJson(cursorPath, { ...cursorConfig, mcpServers: cursorServers });
69
+ log(`🔌 MCP: .cursor/mcp.json configured`);
70
+
71
+ return { vscodePath, cursorPath };
72
+ }