@vscode/component-explorer-cli 0.1.1-1 → 0.1.1-10

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 (131) hide show
  1. package/README.md +177 -0
  2. package/dist/commands/acceptCommand.d.ts +2 -1
  3. package/dist/commands/acceptCommand.d.ts.map +1 -1
  4. package/dist/commands/acceptCommand.js +12 -6
  5. package/dist/commands/acceptCommand.js.map +1 -1
  6. package/dist/commands/compareCommand.d.ts +5 -1
  7. package/dist/commands/compareCommand.d.ts.map +1 -1
  8. package/dist/commands/compareCommand.js +43 -71
  9. package/dist/commands/compareCommand.js.map +1 -1
  10. package/dist/commands/mcpCommand.d.ts +10 -0
  11. package/dist/commands/mcpCommand.d.ts.map +1 -0
  12. package/dist/commands/mcpCommand.js +58 -0
  13. package/dist/commands/mcpCommand.js.map +1 -0
  14. package/dist/commands/screenshotCommand.d.ts +7 -2
  15. package/dist/commands/screenshotCommand.d.ts.map +1 -1
  16. package/dist/commands/screenshotCommand.js +61 -14
  17. package/dist/commands/screenshotCommand.js.map +1 -1
  18. package/dist/commands/serveCommand.d.ts +19 -0
  19. package/dist/commands/serveCommand.d.ts.map +1 -0
  20. package/dist/commands/serveCommand.js +194 -0
  21. package/dist/commands/serveCommand.js.map +1 -0
  22. package/dist/commands/watchCommand.d.ts +1 -2
  23. package/dist/commands/watchCommand.d.ts.map +1 -1
  24. package/dist/commands/watchCommand.js +23 -19
  25. package/dist/commands/watchCommand.js.map +1 -1
  26. package/dist/comparison.d.ts +60 -0
  27. package/dist/comparison.d.ts.map +1 -0
  28. package/dist/comparison.js +250 -0
  29. package/dist/comparison.js.map +1 -0
  30. package/dist/component-explorer-config.schema.json +183 -0
  31. package/dist/componentExplorer.d.ts +44 -2
  32. package/dist/componentExplorer.d.ts.map +1 -1
  33. package/dist/componentExplorer.js +98 -16
  34. package/dist/componentExplorer.js.map +1 -1
  35. package/dist/daemon/DaemonContext.d.ts +4 -0
  36. package/dist/daemon/DaemonContext.d.ts.map +1 -0
  37. package/dist/daemon/DaemonService.d.ts +188 -0
  38. package/dist/daemon/DaemonService.d.ts.map +1 -0
  39. package/dist/daemon/DaemonService.js +610 -0
  40. package/dist/daemon/DaemonService.js.map +1 -0
  41. package/dist/daemon/approvalStore.d.ts +51 -0
  42. package/dist/daemon/approvalStore.d.ts.map +1 -0
  43. package/dist/daemon/approvalStore.js +58 -0
  44. package/dist/daemon/approvalStore.js.map +1 -0
  45. package/dist/daemon/lifecycle.d.ts +13 -0
  46. package/dist/daemon/lifecycle.d.ts.map +1 -0
  47. package/dist/daemon/lifecycle.js +68 -0
  48. package/dist/daemon/lifecycle.js.map +1 -0
  49. package/dist/daemon/pipeClient.d.ts +9 -0
  50. package/dist/daemon/pipeClient.d.ts.map +1 -0
  51. package/dist/daemon/pipeClient.js +111 -0
  52. package/dist/daemon/pipeClient.js.map +1 -0
  53. package/dist/daemon/pipeName.d.ts +2 -0
  54. package/dist/daemon/pipeName.d.ts.map +1 -0
  55. package/dist/daemon/pipeName.js +14 -0
  56. package/dist/daemon/pipeName.js.map +1 -0
  57. package/dist/daemon/pipeServer.d.ts +4 -0
  58. package/dist/daemon/pipeServer.d.ts.map +1 -0
  59. package/dist/daemon/pipeServer.js +25 -0
  60. package/dist/daemon/pipeServer.js.map +1 -0
  61. package/dist/daemon/types.d.ts +12 -0
  62. package/dist/daemon/types.d.ts.map +1 -0
  63. package/dist/dependencyInstaller.js +1 -1
  64. package/dist/dependencyInstaller.js.map +1 -1
  65. package/dist/explorerSession.d.ts +5 -3
  66. package/dist/explorerSession.d.ts.map +1 -1
  67. package/dist/explorerSession.js +6 -3
  68. package/dist/explorerSession.js.map +1 -1
  69. package/dist/external/vscode-observables/observables/dist/disposables.js +24 -1
  70. package/dist/external/vscode-observables/observables/dist/disposables.js.map +1 -1
  71. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js +1 -4
  72. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -1
  73. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js +3 -0
  74. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -1
  75. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js +2 -5
  76. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +1 -1
  77. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js +30 -6
  78. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -1
  79. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js +1 -1
  80. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -1
  81. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js +12 -1
  82. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -1
  83. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js +55 -0
  84. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  85. package/dist/formatValue.d.ts +2 -0
  86. package/dist/formatValue.d.ts.map +1 -0
  87. package/dist/formatValue.js +96 -0
  88. package/dist/formatValue.js.map +1 -0
  89. package/dist/formatValue.test.d.ts +2 -0
  90. package/dist/formatValue.test.d.ts.map +1 -0
  91. package/dist/git/gitUtils.js +1 -1
  92. package/dist/git/gitUtils.js.map +1 -1
  93. package/dist/httpServer.d.ts +8 -7
  94. package/dist/httpServer.d.ts.map +1 -1
  95. package/dist/httpServer.js +59 -12
  96. package/dist/httpServer.js.map +1 -1
  97. package/dist/index.js +4 -0
  98. package/dist/index.js.map +1 -1
  99. package/dist/mcp/McpServer.d.ts +58 -0
  100. package/dist/mcp/McpServer.d.ts.map +1 -0
  101. package/dist/mcp/McpServer.js +820 -0
  102. package/dist/mcp/McpServer.js.map +1 -0
  103. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js +137 -0
  104. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +1 -0
  105. package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js +27 -0
  106. package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js.map +1 -0
  107. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js +24 -0
  108. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +1 -0
  109. package/dist/packages/simple-api/dist/express.js +104 -0
  110. package/dist/packages/simple-api/dist/express.js.map +1 -0
  111. package/dist/resolveProject.d.ts +21 -0
  112. package/dist/resolveProject.d.ts.map +1 -0
  113. package/dist/resolveProject.js +39 -0
  114. package/dist/resolveProject.js.map +1 -0
  115. package/dist/utils.d.ts +24 -0
  116. package/dist/utils.d.ts.map +1 -0
  117. package/dist/utils.js +50 -0
  118. package/dist/utils.js.map +1 -0
  119. package/dist/watchConfig.d.ts +41 -0
  120. package/dist/watchConfig.d.ts.map +1 -1
  121. package/dist/watchConfig.js +41 -19
  122. package/dist/watchConfig.js.map +1 -1
  123. package/package.json +16 -6
  124. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js +0 -72
  125. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js.map +0 -1
  126. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js +0 -447
  127. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js.map +0 -1
  128. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js +0 -64
  129. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js.map +0 -1
  130. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js +0 -52
  131. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js.map +0 -1
@@ -8,8 +8,8 @@ import { nullLogger } from './logger.js';
8
8
  import { SourceTreeId } from './sourceTreeId.js';
9
9
 
10
10
  class DefaultComponentExplorerHttpServerFactory {
11
- async createViteServer(project, resolveViteFrom, logger) {
12
- return ViteComponentExplorerHttpServer.create(project, resolveViteFrom, logger);
11
+ async createViteServer(project, options) {
12
+ return ViteComponentExplorerHttpServer.create(project, options);
13
13
  }
14
14
  async createStaticServer(_distDir) {
15
15
  throw new Error('Static server not yet implemented');
@@ -25,38 +25,75 @@ class ViteComponentExplorerHttpServer {
25
25
  this.url = url;
26
26
  this.sourceTreeId = sourceTreeId;
27
27
  }
28
- static async create(project, resolveViteFrom, logger) {
29
- const log = logger ?? nullLogger;
28
+ static async create(project, options) {
29
+ const log = options?.logger ?? nullLogger;
30
+ const resolveViteFrom = options?.resolveViteFrom;
31
+ const hmrAllowedPaths = options?.hmrAllowedPaths;
30
32
  // Import Vite from the target project's node_modules, not ours.
31
33
  // This ensures the config is loaded with the same Vite version and
32
34
  // module resolution context as the target project.
33
35
  // For worktree sessions, resolveViteFrom points to the main worktree's
34
36
  // project dir so both sessions share the same Vite.
35
37
  const { pathToFileURL } = await import('node:url');
36
- const resolveFrom = resolveViteFrom ?? project.cwd;
37
- const parentUrl = pathToFileURL(resolveFrom + '/').href;
38
- // Vitest's SSR transform replaces import.meta with a shim that lacks .resolve
38
+ const { createRequire } = await import('node:module');
39
+ // Resolve vite from the config file location (as importer) so it finds
40
+ // the correct node_modules even when the CLI is installed elsewhere.
41
+ // We always use createRequire because import.meta.resolve's second
42
+ // argument is ignored in some Node.js versions (it resolves from
43
+ // the calling file instead of the specified parentUrl).
44
+ const resolveFrom = resolveViteFrom ?? project.configFile ?? project.cwd;
45
+ const parentUrl = pathToFileURL(resolveFrom).href;
46
+ log.debug(`Resolving vite from: ${resolveFrom} (parentUrl: ${parentUrl})`);
39
47
  let viteUrl;
40
- if (typeof import.meta.resolve === 'function') {
41
- viteUrl = import.meta.resolve('vite', parentUrl);
42
- }
43
- else {
44
- const { createRequire } = await import('node:module');
48
+ try {
45
49
  viteUrl = pathToFileURL(createRequire(parentUrl).resolve('vite')).href;
46
50
  }
51
+ catch (e) {
52
+ log.log(`Failed to resolve vite from parentUrl=${parentUrl}: ${e}`);
53
+ throw e;
54
+ }
47
55
  log.trace(`Resolved vite: ${viteUrl}`);
48
56
  const { createServer } = await import(/* @vite-ignore */ viteUrl);
57
+ // Build a custom Vite logger that strips ANSI escape codes and routes
58
+ // through our ILogger so output stays clean in non-TTY terminals.
59
+ const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '').replace(/\x1b\].*?\x07/g, '');
60
+ const customLogger = {
61
+ info: (msg) => log.trace(stripAnsi(msg)),
62
+ warn: (msg) => log.info(`[warn] ${stripAnsi(msg)}`),
63
+ warnOnce: (msg) => log.info(`[warn] ${stripAnsi(msg)}`),
64
+ error: (msg) => log.info(`[error] ${stripAnsi(msg)}`),
65
+ clearScreen: () => { },
66
+ hasErrorLogged: () => false,
67
+ hasWarned: false,
68
+ };
49
69
  // Change CWD so Vite resolves any relative `root` in the config correctly.
50
70
  // We must NOT pass `root` as inline config because inline config
51
71
  // takes precedence over the config file, which would break configs
52
72
  // that set their own `root` (e.g. `root: '../..'`).
53
73
  const prevCwd = process.cwd();
54
74
  process.chdir(project.cwd);
75
+ const plugins = [];
76
+ if (hmrAllowedPaths) {
77
+ const matchers = hmrAllowedPaths.map(globToRegExp);
78
+ plugins.push({
79
+ name: 'component-explorer-hmr-filter',
80
+ handleHotUpdate({ file, server: s }) {
81
+ if (!matchers.some(re => re.test(file))) {
82
+ log.debug(`Full reload for: ${file}`);
83
+ s.ws.send({ type: 'full-reload' });
84
+ return [];
85
+ }
86
+ },
87
+ });
88
+ }
55
89
  let server;
56
90
  try {
57
91
  server = await createServer({
58
92
  configFile: project.configFile,
59
93
  server: { port: 0, strictPort: false },
94
+ customLogger,
95
+ clearScreen: false,
96
+ plugins,
60
97
  });
61
98
  await server.listen();
62
99
  }
@@ -65,6 +102,7 @@ class ViteComponentExplorerHttpServer {
65
102
  }
66
103
  const resolvedUrls = server.resolvedUrls;
67
104
  const url = resolvedUrls?.local[0] ?? `http://localhost:${server.httpServer?.address()?.port}`;
105
+ log.debug(`Vite server started: ${url}`);
68
106
  const treeId = observableValue('sourceTreeId', new SourceTreeId(Date.now().toString()));
69
107
  server.watcher.on('change', () => {
70
108
  treeId.set(new SourceTreeId(Date.now().toString()), undefined);
@@ -75,6 +113,15 @@ class ViteComponentExplorerHttpServer {
75
113
  await this._server.close();
76
114
  }
77
115
  }
116
+ /** Convert a simple glob pattern (e.g. `*.css`) to a RegExp. */
117
+ function globToRegExp(glob) {
118
+ const escaped = glob.replace(/[.+^${}()|[\]\\]/g, '\\$&')
119
+ .replace(/\*\*/g, '⧫') // placeholder for **
120
+ .replace(/\*/g, '[^/]*')
121
+ .replace(/⧫/g, '.*')
122
+ .replace(/\?/g, '.');
123
+ return new RegExp(`(?:^|/)${escaped}$`);
124
+ }
78
125
 
79
126
  export { DefaultComponentExplorerHttpServerFactory };
80
127
  //# sourceMappingURL=httpServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpServer.js","sources":["../src/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpServer.js","sources":["../src/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;MAyBa,yCAAyC,CAAA;AACrD,IAAA,MAAM,gBAAgB,CAAC,OAAuB,EAAE,OAA2B,EAAA;QAC1E,OAAO,+BAA+B,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;IAChE;IAEA,MAAM,kBAAkB,CAAC,QAAgB,EAAA;AACxC,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;IACrD;AACA;AAED,MAAM,+BAA+B,CAAA;AAIlB,IAAA,OAAA;AACR,IAAA,GAAA;AACA,IAAA,YAAA;IALD,QAAQ,GAAG,KAAK;AAEzB,IAAA,WAAA,CACkB,OAAqC,EAC7C,GAAW,EACX,YAAuC,EAAA;QAF/B,IAAA,CAAA,OAAO,GAAP,OAAO;QACf,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,YAAY,GAAZ,YAAY;IACnB;AAEH,IAAA,aAAa,MAAM,CAAC,OAAuB,EAAE,OAA2B,EAAA;AACvE,QAAA,MAAM,GAAG,GAAG,OAAO,EAAE,MAAM,IAAI,UAAU;AACzC,QAAA,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe;AAChD,QAAA,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe;;;;;;QAMhD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,OAAO,UAAU,CAAC;QAClD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,OAAO,aAAa,CAAC;;;;;;QAMrD,MAAM,WAAW,GAAG,eAAe,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG;QACxE,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI;QACjD,GAAG,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,WAAW,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,CAAG,CAAC;AAC1E,QAAA,IAAI,OAAe;AACnB,QAAA,IAAI;AACH,YAAA,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACvE;QAAE,OAAO,CAAC,EAAE;YACX,GAAG,CAAC,GAAG,CAAC,CAAA,sCAAA,EAAyC,SAAS,CAAA,EAAA,EAAK,CAAC,CAAA,CAAE,CAAC;AACnE,YAAA,MAAM,CAAC;QACR;AACA,QAAA,GAAG,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAA,CAAE,CAAC;QACtC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,0BAA0B,OAAO,CAA0B;;;QAI1F,MAAM,SAAS,GAAG,CAAC,CAAS,KAAK,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;AACtG,QAAA,MAAM,YAAY,GAA0B;AAC3C,YAAA,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACnD,YAAA,QAAQ,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACvD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACrD,YAAA,WAAW,EAAE,MAAK,EAAE,CAAC;AACrB,YAAA,cAAc,EAAE,MAAM,KAAK;AAC3B,YAAA,SAAS,EAAE,KAAK;SAChB;;;;;AAMD,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;AAC7B,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAE1B,MAAM,OAAO,GAA4B,EAAE;QAC3C,IAAI,eAAe,EAAE;YACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC;AACZ,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA;AAClC,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AACxC,wBAAA,GAAG,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAA,CAAE,CAAC;wBACrC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAClC,wBAAA,OAAO,EAAE;oBACV;gBACD,CAAC;AACD,aAAA,CAAC;QACH;AAEA,QAAA,IAAI,MAAoC;AACxC,QAAA,IAAI;YACH,MAAM,GAAG,MAAM,YAAY,CAAC;gBAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;gBACtC,YAAY;AACZ,gBAAA,WAAW,EAAE,KAAK;gBAClB,OAAO;AACP,aAAA,CAAC;AACF,YAAA,MAAM,MAAM,CAAC,MAAM,EAAE;QACtB;gBAAU;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QACvB;AAEA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY;AACxC,QAAA,MAAM,GAAG,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,oBAAqB,MAAM,CAAC,UAAU,EAAE,OAAO,EAAuB,EAAE,IAAI,EAAE;AACpH,QAAA,GAAG,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAA,CAAE,CAAC;AAExC,QAAA,MAAM,MAAM,GAAG,eAAe,CAAe,cAAc,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAK;AAChC,YAAA,MAAM,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC;AAC/D,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI,+BAA+B,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IACnF;AAEA,IAAA,MAAM,OAAO,GAAA;AACZ,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IAC3B;AACA;AAED;AACA,SAAS,YAAY,CAAC,IAAY,EAAA;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM;AACtD,SAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACrB,SAAA,OAAO,CAAC,KAAK,EAAE,OAAO;AACtB,SAAA,OAAO,CAAC,IAAI,EAAE,IAAI;AAClB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACrB,IAAA,OAAO,IAAI,MAAM,CAAC,UAAU,OAAO,CAAA,CAAA,CAAG,CAAC;AACxC;;;;"}
package/dist/index.js CHANGED
@@ -4,6 +4,8 @@ import { ScreenshotCommand } from './commands/screenshotCommand.js';
4
4
  import { CompareCommand } from './commands/compareCommand.js';
5
5
  import { AcceptCommand } from './commands/acceptCommand.js';
6
6
  import { WatchCommand } from './commands/watchCommand.js';
7
+ import { ServeCommand } from './commands/serveCommand.js';
8
+ import { McpCommand } from './commands/mcpCommand.js';
7
9
 
8
10
  const cli = new Cli({
9
11
  binaryLabel: 'component-explorer',
@@ -14,6 +16,8 @@ cli.register(ScreenshotCommand);
14
16
  cli.register(CompareCommand);
15
17
  cli.register(AcceptCommand);
16
18
  cli.register(WatchCommand);
19
+ cli.register(ServeCommand);
20
+ cli.register(McpCommand);
17
21
  const [, , ...args] = process.argv;
18
22
  await cli.runExit(args);
19
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAQA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;AACnB,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,UAAU,EAAE,oBAAoB;AAChC,CAAA,CAAC;AAEF,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC/B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC5B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAE1B,MAAM,KAAI,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI;AACjC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAUA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;AACnB,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,UAAU,EAAE,oBAAoB;AAChC,CAAA,CAAC;AAEF,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC/B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC5B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AAExB,MAAM,KAAI,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI;AACjC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC"}
@@ -0,0 +1,58 @@
1
+ import type { ProxyApiClient } from '@hediet/simple-api/client';
2
+ import { Disposable, type IObservable } from '@vscode/observables';
3
+ import type { DaemonApiType } from '../daemon/DaemonService.js';
4
+ export declare class DaemonConnection {
5
+ readonly client: ProxyApiClient<DaemonApiType>;
6
+ private _stale;
7
+ constructor(client: ProxyApiClient<DaemonApiType>);
8
+ get isStale(): boolean;
9
+ markStale(): void;
10
+ }
11
+ export interface McpServerOptions {
12
+ pollFn?: () => Promise<void>;
13
+ noAutostartHint?: string;
14
+ }
15
+ export declare class ComponentExplorerMcpServer extends Disposable {
16
+ private readonly _daemonConnection;
17
+ static create(daemon: IObservable<DaemonConnection | undefined>, options?: McpServerOptions): Promise<ComponentExplorerMcpServer>;
18
+ private readonly _mcp;
19
+ private readonly _watchList;
20
+ private readonly _pollFn?;
21
+ private readonly _noAutostartHint?;
22
+ private readonly _multiSessionTools;
23
+ private _sessions;
24
+ private _eventStreamAbortController;
25
+ private constructor();
26
+ private _onDaemonChanged;
27
+ private _getConnection;
28
+ private _waitForDaemon;
29
+ private _handleDisconnect;
30
+ private _noDaemonError;
31
+ private _withDaemon;
32
+ private _log;
33
+ private _startEventListener;
34
+ private _defaultSessionName;
35
+ private _defaultBaselineSessionName;
36
+ private _defaultCurrentSessionName;
37
+ private _sourceTreeId;
38
+ private _updateSessionSourceTreeId;
39
+ private _refreshSessions;
40
+ private _updateMultiSessionToolVisibility;
41
+ private _withSourceTreeRetry;
42
+ private _registerTools;
43
+ private _registerListFixtures;
44
+ private _registerScreenshot;
45
+ private _registerCompareScreenshot;
46
+ private _registerApproveDiff;
47
+ private _registerEvaluateJs;
48
+ private _registerDebugReloadPage;
49
+ private _registerWatchAdd;
50
+ private _registerWatchRemove;
51
+ private _registerWatchSet;
52
+ private _registerWatchCompare;
53
+ private _registerWaitForUpdate;
54
+ private _waitForUpdateResult;
55
+ private _registerSessions;
56
+ private _registerGetUrl;
57
+ }
58
+ //# sourceMappingURL=McpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpServer.d.ts","sourceRoot":"","sources":["../../src/mcp/McpServer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAW,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,4BAA4B,CAAC;AAoE7E,qBAAa,gBAAgB;IAEhB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC;IAD1D,OAAO,CAAC,MAAM,CAAS;gBACF,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC;IAC1D,IAAI,OAAO,IAAI,OAAO,CAAwB;IAC9C,SAAS,IAAI,IAAI;CACjB;AAWD,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,qBAAa,0BAA2B,SAAQ,UAAU;IAoBxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;WAnBtB,MAAM,CAClB,MAAM,EAAE,WAAW,CAAC,gBAAgB,GAAG,SAAS,CAAC,EACjD,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,0BAA0B,CAAC;IAOtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,2BAA2B,CAA8B;IAEjE,OAAO;YAkBO,gBAAgB;IAqB9B,OAAO,CAAC,cAAc;YAMR,cAAc;IAkB5B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,cAAc;YAIR,WAAW;IAezB,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,2BAA2B;IAKnC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,0BAA0B;YAOpB,gBAAgB;IAmB9B,OAAO,CAAC,iCAAiC;YAW3B,oBAAoB;IAelC,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,mBAAmB;IAwE3B,OAAO,CAAC,0BAA0B;IAoElC,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,mBAAmB;IAsC3B,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,qBAAqB;IA2E7B,OAAO,CAAC,sBAAsB;YAyDhB,oBAAoB;IA6ClC,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;CAiFvB"}