@vscode/component-explorer-cli 0.1.1-2 → 0.1.1-20

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 (169) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +177 -0
  3. package/SECURITY.md +14 -0
  4. package/dist/WorktreePool.d.ts +22 -0
  5. package/dist/WorktreePool.d.ts.map +1 -0
  6. package/dist/WorktreePool.js +58 -0
  7. package/dist/WorktreePool.js.map +1 -0
  8. package/dist/WorktreePool.test.d.ts +2 -0
  9. package/dist/WorktreePool.test.d.ts.map +1 -0
  10. package/dist/_virtual/_build-info.js +4 -0
  11. package/dist/_virtual/_build-info.js.map +1 -0
  12. package/dist/browserPage.d.ts +5 -0
  13. package/dist/browserPage.d.ts.map +1 -1
  14. package/dist/browserPage.js +28 -2
  15. package/dist/browserPage.js.map +1 -1
  16. package/dist/commands/acceptCommand.d.ts +2 -1
  17. package/dist/commands/acceptCommand.d.ts.map +1 -1
  18. package/dist/commands/acceptCommand.js +15 -8
  19. package/dist/commands/acceptCommand.js.map +1 -1
  20. package/dist/commands/checkStabilityCommand.d.ts +12 -0
  21. package/dist/commands/checkStabilityCommand.d.ts.map +1 -0
  22. package/dist/commands/checkStabilityCommand.js +84 -0
  23. package/dist/commands/checkStabilityCommand.js.map +1 -0
  24. package/dist/commands/compareCommand.d.ts +5 -1
  25. package/dist/commands/compareCommand.d.ts.map +1 -1
  26. package/dist/commands/compareCommand.js +56 -71
  27. package/dist/commands/compareCommand.js.map +1 -1
  28. package/dist/commands/mcpCommand.d.ts +4 -1
  29. package/dist/commands/mcpCommand.d.ts.map +1 -1
  30. package/dist/commands/mcpCommand.js +51 -8
  31. package/dist/commands/mcpCommand.js.map +1 -1
  32. package/dist/commands/screenshotCommand.d.ts +9 -2
  33. package/dist/commands/screenshotCommand.d.ts.map +1 -1
  34. package/dist/commands/screenshotCommand.js +73 -15
  35. package/dist/commands/screenshotCommand.js.map +1 -1
  36. package/dist/commands/serveCommand.d.ts +6 -1
  37. package/dist/commands/serveCommand.d.ts.map +1 -1
  38. package/dist/commands/serveCommand.js +104 -23
  39. package/dist/commands/serveCommand.js.map +1 -1
  40. package/dist/commands/watchCommand.d.ts +3 -2
  41. package/dist/commands/watchCommand.d.ts.map +1 -1
  42. package/dist/commands/watchCommand.js +28 -80
  43. package/dist/commands/watchCommand.js.map +1 -1
  44. package/dist/comparison.d.ts +70 -0
  45. package/dist/comparison.d.ts.map +1 -0
  46. package/dist/comparison.js +264 -0
  47. package/dist/comparison.js.map +1 -0
  48. package/dist/component-explorer-config.schema.json +222 -0
  49. package/dist/componentExplorer.d.ts +40 -2
  50. package/dist/componentExplorer.d.ts.map +1 -1
  51. package/dist/componentExplorer.js +118 -24
  52. package/dist/componentExplorer.js.map +1 -1
  53. package/dist/daemon/DaemonContext.d.ts +4 -0
  54. package/dist/daemon/DaemonContext.d.ts.map +1 -0
  55. package/dist/daemon/DaemonService.d.ts +146 -21
  56. package/dist/daemon/DaemonService.d.ts.map +1 -1
  57. package/dist/daemon/DaemonService.js +620 -123
  58. package/dist/daemon/DaemonService.js.map +1 -1
  59. package/dist/daemon/dynamicSessions.test.d.ts +2 -0
  60. package/dist/daemon/dynamicSessions.test.d.ts.map +1 -0
  61. package/dist/daemon/lifecycle.d.ts +8 -3
  62. package/dist/daemon/lifecycle.d.ts.map +1 -1
  63. package/dist/daemon/lifecycle.js +27 -10
  64. package/dist/daemon/lifecycle.js.map +1 -1
  65. package/dist/daemon/pipeClient.d.ts +6 -1
  66. package/dist/daemon/pipeClient.d.ts.map +1 -1
  67. package/dist/daemon/pipeClient.js +101 -8
  68. package/dist/daemon/pipeClient.js.map +1 -1
  69. package/dist/daemon/pipeServer.d.ts +2 -1
  70. package/dist/daemon/pipeServer.d.ts.map +1 -1
  71. package/dist/daemon/pipeServer.js +56 -6
  72. package/dist/daemon/pipeServer.js.map +1 -1
  73. package/dist/daemon/types.d.ts +12 -0
  74. package/dist/daemon/types.d.ts.map +1 -0
  75. package/dist/daemon/version.d.ts +10 -0
  76. package/dist/daemon/version.d.ts.map +1 -0
  77. package/dist/daemon/version.js +17 -0
  78. package/dist/daemon/version.js.map +1 -0
  79. package/dist/dependencyInstaller.d.ts +2 -2
  80. package/dist/dependencyInstaller.d.ts.map +1 -1
  81. package/dist/dependencyInstaller.js +1 -1
  82. package/dist/dependencyInstaller.js.map +1 -1
  83. package/dist/external/vscode-observables/observables/dist/disposables.js +24 -1
  84. package/dist/external/vscode-observables/observables/dist/disposables.js.map +1 -1
  85. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js +1 -4
  86. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -1
  87. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js +2 -5
  88. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +1 -1
  89. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js +30 -6
  90. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -1
  91. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js +1 -1
  92. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -1
  93. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js +12 -1
  94. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -1
  95. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js +55 -0
  96. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  97. package/dist/formatValue.d.ts +2 -0
  98. package/dist/formatValue.d.ts.map +1 -0
  99. package/dist/formatValue.js +96 -0
  100. package/dist/formatValue.js.map +1 -0
  101. package/dist/formatValue.test.d.ts +2 -0
  102. package/dist/formatValue.test.d.ts.map +1 -0
  103. package/dist/git/gitIndexResolver.d.ts +25 -0
  104. package/dist/git/gitIndexResolver.d.ts.map +1 -0
  105. package/dist/git/gitIndexResolver.js +91 -0
  106. package/dist/git/gitIndexResolver.js.map +1 -0
  107. package/dist/git/gitIndexResolver.test.d.ts +2 -0
  108. package/dist/git/gitIndexResolver.test.d.ts.map +1 -0
  109. package/dist/git/gitService.d.ts +2 -0
  110. package/dist/git/gitService.d.ts.map +1 -1
  111. package/dist/git/gitService.js +6 -0
  112. package/dist/git/gitService.js.map +1 -1
  113. package/dist/git/gitUtils.js +1 -1
  114. package/dist/git/gitUtils.js.map +1 -1
  115. package/dist/git/gitWorktreeManager.d.ts +6 -0
  116. package/dist/git/gitWorktreeManager.d.ts.map +1 -1
  117. package/dist/git/gitWorktreeManager.js +42 -13
  118. package/dist/git/gitWorktreeManager.js.map +1 -1
  119. package/dist/git/gitWorktreeManager.test.d.ts +2 -0
  120. package/dist/git/gitWorktreeManager.test.d.ts.map +1 -0
  121. package/dist/git/testUtils.d.ts +13 -0
  122. package/dist/git/testUtils.d.ts.map +1 -0
  123. package/dist/httpServer.d.ts +6 -1
  124. package/dist/httpServer.d.ts.map +1 -1
  125. package/dist/httpServer.js +30 -10
  126. package/dist/httpServer.js.map +1 -1
  127. package/dist/index.js +11 -2
  128. package/dist/index.js.map +1 -1
  129. package/dist/logger.d.ts +1 -0
  130. package/dist/logger.d.ts.map +1 -1
  131. package/dist/logger.js +7 -1
  132. package/dist/logger.js.map +1 -1
  133. package/dist/mcp/McpServer.d.ts +47 -4
  134. package/dist/mcp/McpServer.d.ts.map +1 -1
  135. package/dist/mcp/McpServer.js +913 -155
  136. package/dist/mcp/McpServer.js.map +1 -1
  137. package/dist/mcp/TaskManager.d.ts +28 -0
  138. package/dist/mcp/TaskManager.d.ts.map +1 -0
  139. package/dist/mcp/TaskManager.js +54 -0
  140. package/dist/mcp/TaskManager.js.map +1 -0
  141. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js +137 -0
  142. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +1 -0
  143. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js +24 -0
  144. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +1 -0
  145. package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js +27 -0
  146. package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js.map +1 -0
  147. package/dist/packages/simple-api/dist/express.js +104 -0
  148. package/dist/packages/simple-api/dist/express.js.map +1 -0
  149. package/dist/resolveProject.d.ts +21 -0
  150. package/dist/resolveProject.d.ts.map +1 -0
  151. package/dist/resolveProject.js +39 -0
  152. package/dist/resolveProject.js.map +1 -0
  153. package/dist/utils.d.ts +31 -0
  154. package/dist/utils.d.ts.map +1 -0
  155. package/dist/utils.js +49 -0
  156. package/dist/utils.js.map +1 -0
  157. package/dist/watchConfig.d.ts +52 -9
  158. package/dist/watchConfig.d.ts.map +1 -1
  159. package/dist/watchConfig.js +67 -62
  160. package/dist/watchConfig.js.map +1 -1
  161. package/package.json +31 -8
  162. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js +0 -72
  163. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js.map +0 -1
  164. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js +0 -447
  165. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js.map +0 -1
  166. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js +0 -64
  167. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js.map +0 -1
  168. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js +0 -52
  169. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js.map +0 -1
@@ -1,4 +1,6 @@
1
1
  import { nullLogger } from './logger.js';
2
+ import { buildExplorerUrl } from './utils.js';
3
+ import { parseVersion, isCompatibleVersion, runtimeVersionNeededByCliText } from './daemon/version.js';
2
4
 
3
5
  class BrowserComponentExplorer {
4
6
  _browserPageFactory;
@@ -6,6 +8,7 @@ class BrowserComponentExplorer {
6
8
  _logger;
7
9
  _page;
8
10
  _lastState;
11
+ _screenshotMutex = Promise.resolve();
9
12
  constructor(_browserPageFactory, _server, _logger = nullLogger) {
10
13
  this._browserPageFactory = _browserPageFactory;
11
14
  this._server = _server;
@@ -13,69 +16,159 @@ class BrowserComponentExplorer {
13
16
  }
14
17
  async _ensureReady() {
15
18
  if (!this._page) {
16
- const cliUrl = this._server.url + '/___explorer?mode=render';
17
- this._logger.log(`Opening browser page: ${cliUrl}`);
19
+ const cliUrl = buildExplorerUrl({ baseUrl: this._server.url, rawRender: true });
20
+ this._logger.debug(`Opening browser page: ${cliUrl}`);
18
21
  this._page = await this._browserPageFactory.openPage(cliUrl);
19
22
  await this._waitForCliApi(this._page);
20
23
  }
21
24
  return this._page;
22
25
  }
23
26
  async _waitForCliApi(page) {
24
- this._logger.log('Waiting for __componentExplorerCli__ to initialize...');
27
+ this._logger.trace('Polling for __componentExplorer__ to initialize...');
25
28
  await page.evaluateJs(`
26
29
  new Promise(resolve => {
27
30
  function check() {
28
- if (window.__componentExplorerCli__) resolve();
31
+ if (window.__componentExplorer__) resolve();
29
32
  else setTimeout(check, 50);
30
33
  }
31
34
  check();
32
35
  })
33
36
  `);
34
37
  this._lastState = await this._getState(page);
35
- this._logger.log(`CLI API ready, sessionId=${this._lastState.sessionId}, version=${this._lastState.updateVersion}`);
38
+ this._assertRuntimeVersionCompatibility(this._lastState.runtimeVersion);
39
+ this._logger.debug(`CLI API ready, sessionId=${this._lastState.sessionId}, version=${this._lastState.updateVersion}`);
40
+ }
41
+ _assertRuntimeVersionCompatibility(runtimeVersion) {
42
+ const expected = parseVersion(runtimeVersionNeededByCliText);
43
+ const actual = parseVersion(runtimeVersion);
44
+ if (!isCompatibleVersion(expected, actual)) {
45
+ throw new Error(`Explorer runtime version mismatch. CLI requires ${runtimeVersionNeededByCliText}, browser runtime provides ${runtimeVersion}. Update CLI and explorer runtime together.`);
46
+ }
36
47
  }
37
48
  async _getState(page) {
38
49
  return page.evaluateJs(`({
39
- sessionId: window.__componentExplorerCli__.sessionId,
40
- updateVersion: window.__componentExplorerCli__.updateVersion,
50
+ sessionId: window.__componentExplorer__.sessionId,
51
+ updateVersion: window.__componentExplorer__.updateVersion,
52
+ runtimeVersion: window.__componentExplorer__.runtimeVersion,
41
53
  })`);
42
54
  }
43
55
  async listFixtures() {
44
56
  const page = await this._ensureReady();
45
- return page.evaluateJs('window.__componentExplorerCli__.listFixtures()');
57
+ return page.evaluateJs('window.__componentExplorer__.listFixtures()');
46
58
  }
47
59
  async screenshotFixture(fixtureId) {
48
- const page = await this._ensureReady();
49
- const escapedId = JSON.stringify(fixtureId);
50
- const debugUrl = `${this._server.url}/___explorer?mode=render&fixture=${encodeURIComponent(fixtureId)}`;
51
- this._logger.log(`Rendering fixture: ${debugUrl}`);
52
- await page.evaluateJs(`window.__componentExplorerCli__.renderFixture(${escapedId})`);
53
- return page.screenshot(`document.getElementById('root').lastElementChild`);
60
+ // Serialize screenshot calls — the single browser page can only render one fixture at a time
61
+ const prev = this._screenshotMutex;
62
+ let resolve;
63
+ this._screenshotMutex = new Promise(r => { resolve = r; });
64
+ this._logger.trace(`Screenshot mutex: waiting for ${fixtureId}`);
65
+ await prev;
66
+ this._logger.trace(`Screenshot mutex: acquired for ${fixtureId}`);
67
+ const startTime = Date.now();
68
+ try {
69
+ const page = await this._ensureReady();
70
+ const escapedId = JSON.stringify(fixtureId);
71
+ const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, rawRender: true, fixtureId });
72
+ this._logger.debug(`Rendering fixture: ${debugUrl}`);
73
+ const renderResult = await page.evaluateJs(`window.__componentExplorer__.renderFixture(${escapedId})`);
74
+ const image = await page.screenshot(`document.getElementById('root').lastElementChild`);
75
+ this._logger.debug(`Screenshot done: ${fixtureId} (${Date.now() - startTime}ms)`);
76
+ return { image, ...renderResult };
77
+ }
78
+ finally {
79
+ this._logger.trace(`Screenshot mutex: released for ${fixtureId}`);
80
+ resolve();
81
+ }
82
+ }
83
+ async screenshotFixtureStabilityCheck(fixtureId) {
84
+ const prev = this._screenshotMutex;
85
+ let resolve;
86
+ this._screenshotMutex = new Promise(r => { resolve = r; });
87
+ this._logger.trace(`Screenshot mutex: waiting for stability check ${fixtureId}`);
88
+ await prev;
89
+ this._logger.trace(`Screenshot mutex: acquired for stability check ${fixtureId}`);
90
+ try {
91
+ const page = await this._ensureReady();
92
+ const escapedId = JSON.stringify(fixtureId);
93
+ const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, rawRender: true, fixtureId });
94
+ this._logger.debug(`Stability check: ${debugUrl}`);
95
+ await page.evaluateJs(`window.__componentExplorer__.disposeCurrentFixture?.()`);
96
+ const startTime = Date.now();
97
+ const renderResult = await page.evaluateJs(`window.__componentExplorer__.renderFixture(${escapedId})`);
98
+ const domExpr = `document.getElementById('root').lastElementChild`;
99
+ const image0 = await page.screenshot(domExpr);
100
+ const delay0 = Date.now() - startTime;
101
+ this._logger.debug(`Stability screenshot 1/3 at ${delay0}ms`);
102
+ const elapsed1 = Date.now() - startTime;
103
+ if (elapsed1 < 500) {
104
+ await new Promise(r => setTimeout(r, 500 - elapsed1));
105
+ }
106
+ const image1 = await page.screenshot(domExpr);
107
+ const delay1 = Date.now() - startTime;
108
+ this._logger.debug(`Stability screenshot 2/3 at ${delay1}ms`);
109
+ const elapsed2 = Date.now() - startTime;
110
+ if (elapsed2 < 3000) {
111
+ await new Promise(r => setTimeout(r, 3000 - elapsed2));
112
+ }
113
+ const image2 = await page.screenshot(domExpr);
114
+ const delay2 = Date.now() - startTime;
115
+ this._logger.debug(`Stability check done: ${fixtureId} (${delay2}ms total)`);
116
+ return {
117
+ screenshots: [
118
+ { image: image0, delayMs: delay0 },
119
+ { image: image1, delayMs: delay1 },
120
+ { image: image2, delayMs: delay2 },
121
+ ],
122
+ ...renderResult,
123
+ };
124
+ }
125
+ finally {
126
+ this._logger.trace(`Screenshot mutex: released for stability check ${fixtureId}`);
127
+ resolve();
128
+ }
129
+ }
130
+ async evaluateJs(expression, fixtureId) {
131
+ const prev = this._screenshotMutex;
132
+ let resolve;
133
+ this._screenshotMutex = new Promise(r => { resolve = r; });
134
+ await prev;
135
+ try {
136
+ this._logger.trace(`evaluateJs: expression length=${expression.length}${fixtureId ? `, fixtureId=${fixtureId}` : ''}`);
137
+ const page = await this._ensureReady();
138
+ if (fixtureId !== undefined) {
139
+ const escapedId = JSON.stringify(fixtureId);
140
+ await page.evaluateJs(`window.__componentExplorer__.renderFixture(${escapedId})`);
141
+ }
142
+ const result = await page.evaluateJs(expression);
143
+ this._logger.trace(`evaluateJs: result length=${JSON.stringify(result)?.length ?? 0}`);
144
+ return result;
145
+ }
146
+ finally {
147
+ resolve();
148
+ }
54
149
  }
55
150
  async codeCoverage(_id) {
56
151
  throw new Error('Code coverage not yet implemented');
57
152
  }
58
153
  async waitForUpdate(timeoutMs = 0) {
59
154
  const page = await this._ensureReady();
60
- // Read the current state NOW, not from _lastState. This ensures any
61
- // spurious version bumps that happened during prior operations (e.g.
62
- // initial screenshot capture, Vite dependency optimization) are ignored.
63
155
  const prev = await this._getState(page);
64
- this._logger.log(`Waiting for update (sessionId=${prev.sessionId}, version=${prev.updateVersion})...`);
156
+ this._logger.debug(`Waiting for update (sessionId=${prev.sessionId}, version=${prev.updateVersion})...`);
65
157
  const newState = await page.evaluateJs(`
66
158
  new Promise((resolve, reject) => {
67
159
  ${timeoutMs > 0 ? `const timeout = setTimeout(() => reject(new Error('Timeout waiting for HMR update')), ${timeoutMs});` : ''}
68
160
  function check() {
69
- if (!window.__componentExplorerCli__) {
161
+ if (!window.__componentExplorer__) {
70
162
  // Page reloaded — CLI not yet re-initialized, keep waiting
71
163
  setTimeout(check, 50);
72
164
  return;
73
165
  }
74
- const s = window.__componentExplorerCli__.sessionId;
75
- const v = window.__componentExplorerCli__.updateVersion;
166
+ const s = window.__componentExplorer__.sessionId;
167
+ const v = window.__componentExplorer__.updateVersion;
168
+ const r = window.__componentExplorer__.runtimeVersion;
76
169
  if (s !== '${prev.sessionId}' || v > ${prev.updateVersion}) {
77
170
  ${timeoutMs > 0 ? 'clearTimeout(timeout);' : ''}
78
- resolve({ sessionId: s, updateVersion: v });
171
+ resolve({ sessionId: s, updateVersion: v, runtimeVersion: r });
79
172
  } else {
80
173
  setTimeout(check, 50);
81
174
  }
@@ -83,12 +176,13 @@ class BrowserComponentExplorer {
83
176
  check();
84
177
  })
85
178
  `);
179
+ this._assertRuntimeVersionCompatibility(newState.runtimeVersion);
86
180
  const reloaded = newState.sessionId !== prev.sessionId;
87
181
  if (reloaded) {
88
- this._logger.log(`Page reloaded: sessionId ${prev.sessionId} → ${newState.sessionId}`);
182
+ this._logger.debug(`Page reloaded: sessionId ${prev.sessionId} → ${newState.sessionId}`);
89
183
  }
90
184
  else {
91
- this._logger.log(`HMR update: version ${prev.updateVersion} → ${newState.updateVersion}`);
185
+ this._logger.debug(`HMR update: version ${prev.updateVersion} → ${newState.updateVersion}`);
92
186
  }
93
187
  this._lastState = newState;
94
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"componentExplorer.js","sources":["../src/componentExplorer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"componentExplorer.js","sources":["../src/componentExplorer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface DaemonContext {
2
+ readonly clientName: string;
3
+ }
4
+ //# sourceMappingURL=DaemonContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaemonContext.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonContext.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B"}
@@ -1,8 +1,27 @@
1
+ import { type IDisposable, type IReader } from '@vscode/observables';
1
2
  import { AsyncStream } from '@hediet/simple-api';
2
3
  import { ExplorerSession } from '../explorerSession.js';
3
4
  import type { ResolvedWatchConfig } from '../watchConfig.js';
4
5
  import { type ILogger } from '../logger.js';
5
6
  import { type ApprovalStore } from './approvalStore.js';
7
+ import type { DaemonContext } from './DaemonContext.js';
8
+ export { daemonApiVersionText, pluginProtocolVersionText, parseVersion, isCompatibleVersion, } from './version.js';
9
+ export declare class ActivityTracker implements IDisposable {
10
+ private readonly _idleTimeoutMs;
11
+ private readonly _onIdle;
12
+ private readonly _logger;
13
+ private _lastActivityTime;
14
+ private _idleCheckInterval;
15
+ private _autorunDisposable;
16
+ private _disposed;
17
+ private _started;
18
+ private _activeCount;
19
+ constructor(_idleTimeoutMs: number, _onIdle: () => void, _logger: ILogger);
20
+ setActive(value: boolean): void;
21
+ reportActivity(): void;
22
+ start(): void;
23
+ dispose(): void;
24
+ }
6
25
  export type DaemonEvent = {
7
26
  readonly type: 'source-change';
8
27
  readonly sessionName: string;
@@ -11,51 +30,90 @@ export type DaemonEvent = {
11
30
  readonly type: 'ref-change';
12
31
  readonly sessionName: string;
13
32
  readonly newCommit: string;
33
+ } | {
34
+ readonly type: 'session-change';
14
35
  } | {
15
36
  readonly type: 'log';
16
37
  readonly level: 'info' | 'debug' | 'trace';
17
38
  readonly message: string;
18
39
  };
19
- export interface SessionInfo {
40
+ export type SessionInfo = {
41
+ readonly name: string;
42
+ readonly sourceKind: 'current' | 'worktree';
43
+ readonly isLoading: true;
44
+ } | {
20
45
  readonly name: string;
21
46
  readonly sourceKind: 'current' | 'worktree';
47
+ readonly isLoading?: false;
22
48
  readonly serverUrl: string;
23
49
  readonly sourceTreeId: string;
24
- }
50
+ readonly worktreePath?: string;
51
+ readonly ref?: string;
52
+ };
25
53
  export declare class SourceTreeChangedError extends Error {
26
54
  constructor(sessionName: string);
27
55
  }
28
56
  export type DaemonApiType = DaemonService['api']['TMethods'];
57
+ export interface DaemonVersionInfo {
58
+ readonly daemonApiVersion: string;
59
+ readonly pluginProtocolVersion: string;
60
+ }
29
61
  export declare class DaemonService {
30
62
  private readonly _config;
63
+ private readonly _pipeName;
31
64
  private readonly _logger;
32
65
  private readonly _browserFactory;
33
66
  private readonly _serverFactory;
34
67
  private readonly _sessions;
35
68
  private readonly _sessionConfigs;
69
+ private readonly _dynamicSessionMeta;
36
70
  private readonly _resolvers;
71
+ private readonly _eventListenerCount;
37
72
  private readonly _eventListeners;
38
73
  private _shutdownRequested;
39
74
  private _shutdownResolvers;
75
+ private readonly _activityTracker;
76
+ private readonly _worktreePool;
40
77
  readonly approvals: ApprovalStore;
41
78
  readonly api: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
42
79
  fixtures: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
43
80
  list: import("@hediet/simple-api").IMethod<{
44
81
  sessionName: string;
45
82
  sourceTreeId: string;
46
- }, import("../componentExplorer.js").FixtureInfo[], undefined>;
47
- }>, undefined>;
83
+ }, import("../componentExplorer.js").FixtureInfo[], DaemonContext>;
84
+ }>, DaemonContext>;
48
85
  screenshots: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
49
86
  take: import("@hediet/simple-api").IMethod<{
50
87
  fixtureId: string;
51
88
  sourceTreeId: string;
52
89
  sessionName: string;
53
90
  includeImage?: boolean | undefined;
91
+ stabilityCheck?: boolean | undefined;
54
92
  }, {
55
93
  hash: string;
56
94
  sourceTreeId: string;
57
95
  image: string | undefined;
58
- }, undefined>;
96
+ hasError: boolean;
97
+ error: import("../componentExplorer.js").ExceptionError | undefined;
98
+ events: import("../componentExplorer.js").RenderEvent[] | undefined;
99
+ resultData: unknown;
100
+ isStable: boolean;
101
+ stabilityScreenshots: {
102
+ hash: string;
103
+ delayMs: number;
104
+ image: string | undefined;
105
+ }[];
106
+ } | {
107
+ hash: string;
108
+ sourceTreeId: string;
109
+ image: string | undefined;
110
+ hasError: boolean;
111
+ error: import("../componentExplorer.js").ExceptionError | undefined;
112
+ events: import("../componentExplorer.js").RenderEvent[] | undefined;
113
+ resultData: unknown;
114
+ isStable?: undefined;
115
+ stabilityScreenshots?: undefined;
116
+ }, DaemonContext>;
59
117
  takeBatch: import("@hediet/simple-api").IMethod<{
60
118
  fixtureIds: string[];
61
119
  sourceTreeId: string;
@@ -67,8 +125,12 @@ export declare class DaemonService {
67
125
  fixtureId: string;
68
126
  hash: string;
69
127
  image: string | undefined;
128
+ hasError: boolean;
129
+ error: import("../componentExplorer.js").ExceptionError | undefined;
130
+ events: import("../componentExplorer.js").RenderEvent[] | undefined;
131
+ resultData: unknown;
70
132
  }[];
71
- }, undefined>;
133
+ }, DaemonContext>;
72
134
  compare: import("@hediet/simple-api").IMethod<{
73
135
  fixtureId: string;
74
136
  baselineSessionName: string;
@@ -82,50 +144,113 @@ export declare class DaemonService {
82
144
  currentHash: string;
83
145
  baselineImage: string | undefined;
84
146
  currentImage: string | undefined;
147
+ baselineHasError: boolean;
148
+ baselineError: import("../componentExplorer.js").ExceptionError | undefined;
149
+ baselineEvents: import("../componentExplorer.js").RenderEvent[] | undefined;
150
+ baselineResultData: unknown;
151
+ currentHasError: boolean;
152
+ currentError: import("../componentExplorer.js").ExceptionError | undefined;
153
+ currentEvents: import("../componentExplorer.js").RenderEvent[] | undefined;
154
+ currentResultData: unknown;
155
+ labels: readonly string[] | undefined;
156
+ labelsBefore: readonly string[] | undefined;
85
157
  approval: import("./approvalStore.js").ApprovalInfo | undefined;
86
- }, undefined>;
87
- }>, undefined>;
158
+ }, DaemonContext>;
159
+ }>, DaemonContext>;
88
160
  approvals: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
89
161
  approve: import("@hediet/simple-api").IMethod<{
90
162
  fixtureId: string;
91
163
  originalHash: string;
92
164
  modifiedHash: string;
93
165
  comment: string;
94
- }, void, undefined>;
166
+ }, void, DaemonContext>;
95
167
  revoke: import("@hediet/simple-api").IMethod<{
96
168
  fixtureId: string;
97
169
  originalHash: string;
98
170
  modifiedHash: string;
99
- }, void, undefined>;
171
+ }, void, DaemonContext>;
100
172
  list: import("@hediet/simple-api").IMethod<{
101
173
  fixtureId?: string | undefined;
102
- }, import("./approvalStore.js").ApprovalInfo[], undefined>;
174
+ }, import("./approvalStore.js").ApprovalInfo[], DaemonContext>;
103
175
  lookup: import("@hediet/simple-api").IMethod<{
104
176
  fixtureId: string;
105
177
  originalHash: string;
106
178
  modifiedHash: string;
107
- }, import("./approvalStore.js").ApprovalInfo | null, undefined>;
108
- }>, undefined>;
109
- events: import("@hediet/simple-api").IMethod<Record<string, never>, AsyncStream<DaemonEvent>, undefined>;
110
- sessions: import("@hediet/simple-api").IMethod<Record<string, never>, SessionInfo[], undefined>;
111
- shutdown: import("@hediet/simple-api").IMethod<Record<string, never>, void, undefined>;
112
- }>, undefined>;
179
+ }, import("./approvalStore.js").ApprovalInfo | null, DaemonContext>;
180
+ }>, DaemonContext>;
181
+ evaluate: import("@hediet/simple-api").IMethod<{
182
+ sessionName: string;
183
+ sourceTreeId: string;
184
+ expression: string;
185
+ fixtureId?: string | undefined;
186
+ }, {
187
+ result: unknown;
188
+ }, DaemonContext>;
189
+ events: import("@hediet/simple-api").IMethod<Record<string, never>, AsyncStream<DaemonEvent>, DaemonContext>;
190
+ sessions: import("@hediet/simple-api").IMethod<Record<string, never>, SessionInfo[], DaemonContext>;
191
+ version: import("@hediet/simple-api").IMethod<Record<string, never>, {
192
+ daemonApiVersion: string;
193
+ pluginProtocolVersion: string;
194
+ }, DaemonContext>;
195
+ restartSession: import("@hediet/simple-api").IMethod<{
196
+ sessionName: string;
197
+ }, SessionInfo[], DaemonContext>;
198
+ openSession: import("@hediet/simple-api").IMethod<{
199
+ name: string;
200
+ ref: string;
201
+ }, {
202
+ sessions: SessionInfo[];
203
+ } | {
204
+ error: string;
205
+ }, DaemonContext>;
206
+ closeSession: import("@hediet/simple-api").IMethod<{
207
+ name: string;
208
+ }, {
209
+ sessions: SessionInfo[];
210
+ } | {
211
+ error: string;
212
+ }, DaemonContext>;
213
+ updateSessionRef: import("@hediet/simple-api").IMethod<{
214
+ name: string;
215
+ ref: string;
216
+ }, {
217
+ sessions: SessionInfo[];
218
+ } | {
219
+ error: string;
220
+ }, DaemonContext>;
221
+ shutdown: import("@hediet/simple-api").IMethod<Record<string, never>, void, DaemonContext>;
222
+ }>, DaemonContext>;
113
223
  private constructor();
114
- static create(config: ResolvedWatchConfig, logger: ILogger): Promise<DaemonService>;
224
+ static create(config: ResolvedWatchConfig, logger: ILogger, pipeName?: string, options?: {
225
+ idleTimeoutMs?: number;
226
+ }): Promise<DaemonService>;
115
227
  private _buildApi;
116
228
  getSession(name: string): ExplorerSession;
117
- getSessionInfos(): SessionInfo[];
229
+ getSessionInfos(reader?: IReader): SessionInfo[];
230
+ waitForSession(sessionName: string | undefined): Promise<SessionInfo & {
231
+ isLoading?: false;
232
+ }>;
118
233
  getSourceTreeId(sessionName: string): string;
119
234
  assertSourceTreeId(sessionName: string, expected: string): void;
120
235
  eventStream(): AsyncIterable<DaemonEvent>;
121
236
  runEventLoop(): Promise<void>;
122
237
  private _sourceChangeDisposables;
123
238
  private _startSourceChangeWatchers;
239
+ private _addSourceChangeWatcher;
124
240
  private _handleRefChange;
241
+ private _getChangedFiles;
125
242
  requestShutdown(): void;
126
243
  dispose(): Promise<void>;
127
- /** @internal — also called by EventStreamLogger */
128
- _emit(event: DaemonEvent): void;
244
+ private _emit;
245
+ private _restartSession;
246
+ private _createExplorerSession;
247
+ private _createWorktreeExplorerSession;
129
248
  private _setupSession;
249
+ private _setupWorktreeSession;
250
+ private _openDynamicSession;
251
+ private _closeDynamicSession;
252
+ private _updateDynamicSessionRef;
253
+ private readonly _dynamicRefWatchers;
254
+ private _addDynamicRefWatcher;
130
255
  }
131
256
  //# sourceMappingURL=DaemonService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DaemonService.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAyB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAIpF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAO3E,MAAM,MAAM,WAAW,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC/F;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzF;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElG,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACpC,WAAW,EAAE,MAAM;CAI/B;AAED,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;AAM7D,qBAAa,aAAa;IAYxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAdhC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyC;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAC3E,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAC;IAEb,OAAO;WAWM,MAAM,CAClB,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,OAAO,GACb,OAAO,CAAC,aAAa,CAAC;IAsBzB,OAAO,CAAC,SAAS;IAkKjB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAQzC,eAAe,IAAI,WAAW,EAAE;IAYhC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAI5C,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS/D,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC;IAoDnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IASnC,OAAO,CAAC,wBAAwB,CAAqB;IAErD,OAAO,CAAC,0BAA0B;YA2BpB,gBAAgB;IA4C9B,eAAe,IAAI,IAAI;IAQjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B,mDAAmD;IACnD,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;YAMjB,aAAa;CA2C3B"}
1
+ {"version":3,"file":"DaemonService.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonService.ts"],"names":[],"mappings":"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"}