claude-chrome-parallel 3.0.3 → 3.4.0

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 (315) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +398 -464
  3. package/assets/demo.svg +278 -173
  4. package/dist/cdp/client.d.ts +60 -2
  5. package/dist/cdp/client.d.ts.map +1 -1
  6. package/dist/cdp/client.js +344 -5
  7. package/dist/cdp/client.js.map +1 -1
  8. package/dist/cdp/connection-pool.d.ts.map +1 -1
  9. package/dist/cdp/connection-pool.js +20 -4
  10. package/dist/cdp/connection-pool.js.map +1 -1
  11. package/dist/chrome/launcher.d.ts +11 -0
  12. package/dist/chrome/launcher.d.ts.map +1 -1
  13. package/dist/chrome/launcher.js +124 -10
  14. package/dist/chrome/launcher.js.map +1 -1
  15. package/dist/chrome/pool.d.ts +54 -0
  16. package/dist/chrome/pool.d.ts.map +1 -0
  17. package/dist/chrome/pool.js +301 -0
  18. package/dist/chrome/pool.js.map +1 -0
  19. package/dist/chrome/profile-detector.d.ts +52 -0
  20. package/dist/chrome/profile-detector.d.ts.map +1 -0
  21. package/dist/chrome/profile-detector.js +246 -0
  22. package/dist/chrome/profile-detector.js.map +1 -0
  23. package/dist/cli/claude-session.js +15 -15
  24. package/dist/cli/index.js +162 -37
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/update-check.d.ts +9 -0
  27. package/dist/cli/update-check.js +141 -0
  28. package/dist/cli/update-check.js.map +1 -0
  29. package/dist/config/global.d.ts +31 -0
  30. package/dist/config/global.d.ts.map +1 -1
  31. package/dist/config/global.js.map +1 -1
  32. package/dist/dashboard/activity-tracker.d.ts +60 -0
  33. package/dist/dashboard/activity-tracker.d.ts.map +1 -0
  34. package/dist/dashboard/activity-tracker.js +178 -0
  35. package/dist/dashboard/activity-tracker.js.map +1 -0
  36. package/dist/dashboard/ansi.d.ts +117 -0
  37. package/dist/dashboard/ansi.d.ts.map +1 -0
  38. package/dist/dashboard/ansi.js +199 -0
  39. package/dist/dashboard/ansi.js.map +1 -0
  40. package/dist/dashboard/index.d.ts +110 -0
  41. package/dist/dashboard/index.d.ts.map +1 -0
  42. package/dist/dashboard/index.js +412 -0
  43. package/dist/dashboard/index.js.map +1 -0
  44. package/dist/dashboard/keyboard-handler.d.ts +43 -0
  45. package/dist/dashboard/keyboard-handler.d.ts.map +1 -0
  46. package/dist/dashboard/keyboard-handler.js +215 -0
  47. package/dist/dashboard/keyboard-handler.js.map +1 -0
  48. package/dist/dashboard/operation-controller.d.ts +76 -0
  49. package/dist/dashboard/operation-controller.d.ts.map +1 -0
  50. package/dist/dashboard/operation-controller.js +167 -0
  51. package/dist/dashboard/operation-controller.js.map +1 -0
  52. package/dist/dashboard/renderer.d.ts +76 -0
  53. package/dist/dashboard/renderer.d.ts.map +1 -0
  54. package/dist/dashboard/renderer.js +193 -0
  55. package/dist/dashboard/renderer.js.map +1 -0
  56. package/dist/dashboard/types.d.ts +56 -0
  57. package/dist/dashboard/types.d.ts.map +1 -0
  58. package/dist/dashboard/types.js +12 -0
  59. package/dist/dashboard/types.js.map +1 -0
  60. package/dist/dashboard/views/main-view.d.ts +23 -0
  61. package/dist/dashboard/views/main-view.d.ts.map +1 -0
  62. package/dist/dashboard/views/main-view.js +143 -0
  63. package/dist/dashboard/views/main-view.js.map +1 -0
  64. package/dist/dashboard/views/sessions-view.d.ts +22 -0
  65. package/dist/dashboard/views/sessions-view.d.ts.map +1 -0
  66. package/dist/dashboard/views/sessions-view.js +104 -0
  67. package/dist/dashboard/views/sessions-view.js.map +1 -0
  68. package/dist/dashboard/views/tabs-view.d.ts +21 -0
  69. package/dist/dashboard/views/tabs-view.d.ts.map +1 -0
  70. package/dist/dashboard/views/tabs-view.js +92 -0
  71. package/dist/dashboard/views/tabs-view.js.map +1 -0
  72. package/dist/hints/hint-engine.d.ts +65 -0
  73. package/dist/hints/hint-engine.d.ts.map +1 -0
  74. package/dist/hints/hint-engine.js +156 -0
  75. package/dist/hints/hint-engine.js.map +1 -0
  76. package/dist/hints/index.d.ts +8 -0
  77. package/dist/hints/index.d.ts.map +1 -0
  78. package/dist/hints/index.js +11 -0
  79. package/dist/hints/index.js.map +1 -0
  80. package/dist/hints/pattern-learner.d.ts +76 -0
  81. package/dist/hints/pattern-learner.d.ts.map +1 -0
  82. package/dist/hints/pattern-learner.js +254 -0
  83. package/dist/hints/pattern-learner.js.map +1 -0
  84. package/dist/hints/rules/composite-suggestions.d.ts +6 -0
  85. package/dist/hints/rules/composite-suggestions.d.ts.map +1 -0
  86. package/dist/hints/rules/composite-suggestions.js +66 -0
  87. package/dist/hints/rules/composite-suggestions.js.map +1 -0
  88. package/dist/hints/rules/error-recovery.d.ts +7 -0
  89. package/dist/hints/rules/error-recovery.d.ts.map +1 -0
  90. package/dist/hints/rules/error-recovery.js +47 -0
  91. package/dist/hints/rules/error-recovery.js.map +1 -0
  92. package/dist/hints/rules/learned-rules.d.ts +13 -0
  93. package/dist/hints/rules/learned-rules.d.ts.map +1 -0
  94. package/dist/hints/rules/learned-rules.js +27 -0
  95. package/dist/hints/rules/learned-rules.js.map +1 -0
  96. package/dist/hints/rules/repetition-detection.d.ts +7 -0
  97. package/dist/hints/rules/repetition-detection.d.ts.map +1 -0
  98. package/dist/hints/rules/repetition-detection.js +82 -0
  99. package/dist/hints/rules/repetition-detection.js.map +1 -0
  100. package/dist/hints/rules/sequence-detection.d.ts +6 -0
  101. package/dist/hints/rules/sequence-detection.d.ts.map +1 -0
  102. package/dist/hints/rules/sequence-detection.js +61 -0
  103. package/dist/hints/rules/sequence-detection.js.map +1 -0
  104. package/dist/hints/rules/success-hints.d.ts +6 -0
  105. package/dist/hints/rules/success-hints.d.ts.map +1 -0
  106. package/dist/hints/rules/success-hints.js +62 -0
  107. package/dist/hints/rules/success-hints.js.map +1 -0
  108. package/dist/index.js +190 -55
  109. package/dist/index.js.map +1 -1
  110. package/dist/lightpanda/launcher.d.ts +58 -0
  111. package/dist/lightpanda/launcher.d.ts.map +1 -0
  112. package/dist/lightpanda/launcher.js +199 -0
  113. package/dist/lightpanda/launcher.js.map +1 -0
  114. package/dist/mcp-server.d.ts +38 -1
  115. package/dist/mcp-server.d.ts.map +1 -1
  116. package/dist/mcp-server.js +220 -6
  117. package/dist/mcp-server.js.map +1 -1
  118. package/dist/orchestration/state-manager.js +46 -46
  119. package/dist/orchestration/workflow-engine.d.ts +1 -0
  120. package/dist/orchestration/workflow-engine.d.ts.map +1 -1
  121. package/dist/orchestration/workflow-engine.js +112 -114
  122. package/dist/orchestration/workflow-engine.js.map +1 -1
  123. package/dist/resources/usage-guide.d.ts +13 -0
  124. package/dist/resources/usage-guide.d.ts.map +1 -0
  125. package/dist/resources/usage-guide.js +101 -0
  126. package/dist/resources/usage-guide.js.map +1 -0
  127. package/dist/router/browser-router.d.ts +51 -0
  128. package/dist/router/browser-router.d.ts.map +1 -0
  129. package/dist/router/browser-router.js +178 -0
  130. package/dist/router/browser-router.js.map +1 -0
  131. package/dist/router/cookie-sync.d.ts +48 -0
  132. package/dist/router/cookie-sync.d.ts.map +1 -0
  133. package/dist/router/cookie-sync.js +106 -0
  134. package/dist/router/cookie-sync.js.map +1 -0
  135. package/dist/router/index.d.ts +5 -0
  136. package/dist/router/index.d.ts.map +1 -0
  137. package/dist/router/index.js +10 -0
  138. package/dist/router/index.js.map +1 -0
  139. package/dist/router/tool-routing-registry.d.ts +21 -0
  140. package/dist/router/tool-routing-registry.d.ts.map +1 -0
  141. package/dist/router/tool-routing-registry.js +90 -0
  142. package/dist/router/tool-routing-registry.js.map +1 -0
  143. package/dist/session-manager.d.ts +41 -1
  144. package/dist/session-manager.d.ts.map +1 -1
  145. package/dist/session-manager.js +216 -21
  146. package/dist/session-manager.js.map +1 -1
  147. package/dist/tools/click-element.d.ts +8 -0
  148. package/dist/tools/click-element.d.ts.map +1 -0
  149. package/dist/tools/click-element.js +383 -0
  150. package/dist/tools/click-element.js.map +1 -0
  151. package/dist/tools/computer.d.ts.map +1 -1
  152. package/dist/tools/computer.js +198 -34
  153. package/dist/tools/computer.js.map +1 -1
  154. package/dist/tools/console-capture.d.ts +6 -0
  155. package/dist/tools/console-capture.d.ts.map +1 -0
  156. package/dist/tools/console-capture.js +320 -0
  157. package/dist/tools/console-capture.js.map +1 -0
  158. package/dist/tools/cookies.d.ts +6 -0
  159. package/dist/tools/cookies.d.ts.map +1 -0
  160. package/dist/tools/cookies.js +263 -0
  161. package/dist/tools/cookies.js.map +1 -0
  162. package/dist/tools/drag-drop.d.ts +6 -0
  163. package/dist/tools/drag-drop.d.ts.map +1 -0
  164. package/dist/tools/drag-drop.js +252 -0
  165. package/dist/tools/drag-drop.js.map +1 -0
  166. package/dist/tools/emulate-device.d.ts +6 -0
  167. package/dist/tools/emulate-device.d.ts.map +1 -0
  168. package/dist/tools/emulate-device.js +221 -0
  169. package/dist/tools/emulate-device.js.map +1 -0
  170. package/dist/tools/file-upload.d.ts +6 -0
  171. package/dist/tools/file-upload.d.ts.map +1 -0
  172. package/dist/tools/file-upload.js +208 -0
  173. package/dist/tools/file-upload.js.map +1 -0
  174. package/dist/tools/fill-form.d.ts +8 -0
  175. package/dist/tools/fill-form.d.ts.map +1 -0
  176. package/dist/tools/fill-form.js +342 -0
  177. package/dist/tools/fill-form.js.map +1 -0
  178. package/dist/tools/find.d.ts.map +1 -1
  179. package/dist/tools/find.js +153 -65
  180. package/dist/tools/find.js.map +1 -1
  181. package/dist/tools/form-input.js +52 -52
  182. package/dist/tools/form-input.js.map +1 -1
  183. package/dist/tools/geolocation.d.ts +6 -0
  184. package/dist/tools/geolocation.d.ts.map +1 -0
  185. package/dist/tools/geolocation.js +172 -0
  186. package/dist/tools/geolocation.js.map +1 -0
  187. package/dist/tools/http-auth.d.ts +6 -0
  188. package/dist/tools/http-auth.d.ts.map +1 -0
  189. package/dist/tools/http-auth.js +136 -0
  190. package/dist/tools/http-auth.js.map +1 -0
  191. package/dist/tools/index.d.ts.map +1 -1
  192. package/dist/tools/index.js +50 -0
  193. package/dist/tools/index.js.map +1 -1
  194. package/dist/tools/javascript.js +1 -1
  195. package/dist/tools/javascript.js.map +1 -1
  196. package/dist/tools/navigate.d.ts.map +1 -1
  197. package/dist/tools/navigate.js +5 -2
  198. package/dist/tools/navigate.js.map +1 -1
  199. package/dist/tools/network.js +4 -4
  200. package/dist/tools/network.js.map +1 -1
  201. package/dist/tools/orchestration.d.ts.map +1 -1
  202. package/dist/tools/orchestration.js +13 -8
  203. package/dist/tools/orchestration.js.map +1 -1
  204. package/dist/tools/page-content.d.ts +6 -0
  205. package/dist/tools/page-content.d.ts.map +1 -0
  206. package/dist/tools/page-content.js +120 -0
  207. package/dist/tools/page-content.js.map +1 -0
  208. package/dist/tools/page-pdf.d.ts +6 -0
  209. package/dist/tools/page-pdf.d.ts.map +1 -0
  210. package/dist/tools/page-pdf.js +245 -0
  211. package/dist/tools/page-pdf.js.map +1 -0
  212. package/dist/tools/page-reload.d.ts +6 -0
  213. package/dist/tools/page-reload.d.ts.map +1 -0
  214. package/dist/tools/page-reload.js +89 -0
  215. package/dist/tools/page-reload.js.map +1 -0
  216. package/dist/tools/performance-metrics.d.ts +6 -0
  217. package/dist/tools/performance-metrics.d.ts.map +1 -0
  218. package/dist/tools/performance-metrics.js +158 -0
  219. package/dist/tools/performance-metrics.js.map +1 -0
  220. package/dist/tools/read-page.d.ts.map +1 -1
  221. package/dist/tools/read-page.js +4 -2
  222. package/dist/tools/read-page.js.map +1 -1
  223. package/dist/tools/request-intercept.d.ts +6 -0
  224. package/dist/tools/request-intercept.d.ts.map +1 -0
  225. package/dist/tools/request-intercept.js +439 -0
  226. package/dist/tools/request-intercept.js.map +1 -0
  227. package/dist/tools/selector-query.d.ts +6 -0
  228. package/dist/tools/selector-query.d.ts.map +1 -0
  229. package/dist/tools/selector-query.js +206 -0
  230. package/dist/tools/selector-query.js.map +1 -0
  231. package/dist/tools/storage.d.ts +6 -0
  232. package/dist/tools/storage.d.ts.map +1 -0
  233. package/dist/tools/storage.js +264 -0
  234. package/dist/tools/storage.js.map +1 -0
  235. package/dist/tools/tabs-close.d.ts +6 -0
  236. package/dist/tools/tabs-close.d.ts.map +1 -0
  237. package/dist/tools/tabs-close.js +124 -0
  238. package/dist/tools/tabs-close.js.map +1 -0
  239. package/dist/tools/tabs-context.js +1 -1
  240. package/dist/tools/tabs-context.js.map +1 -1
  241. package/dist/tools/user-agent.d.ts +6 -0
  242. package/dist/tools/user-agent.d.ts.map +1 -0
  243. package/dist/tools/user-agent.js +128 -0
  244. package/dist/tools/user-agent.js.map +1 -0
  245. package/dist/tools/wait-and-click.d.ts +8 -0
  246. package/dist/tools/wait-and-click.d.ts.map +1 -0
  247. package/dist/tools/wait-and-click.js +290 -0
  248. package/dist/tools/wait-and-click.js.map +1 -0
  249. package/dist/tools/wait-for.d.ts +6 -0
  250. package/dist/tools/wait-for.d.ts.map +1 -0
  251. package/dist/tools/wait-for.js +248 -0
  252. package/dist/tools/wait-for.js.map +1 -0
  253. package/dist/tools/xpath-query.d.ts +6 -0
  254. package/dist/tools/xpath-query.d.ts.map +1 -0
  255. package/dist/tools/xpath-query.js +230 -0
  256. package/dist/tools/xpath-query.js.map +1 -0
  257. package/dist/types/browser-backend.d.ts +30 -0
  258. package/dist/types/browser-backend.d.ts.map +1 -0
  259. package/dist/types/browser-backend.js +9 -0
  260. package/dist/types/browser-backend.js.map +1 -0
  261. package/dist/types/profile.d.ts +76 -0
  262. package/dist/types/profile.d.ts.map +1 -0
  263. package/dist/types/profile.js +35 -0
  264. package/dist/types/profile.js.map +1 -0
  265. package/dist/types/session.d.ts +7 -3
  266. package/dist/types/session.d.ts.map +1 -1
  267. package/package.json +78 -75
  268. package/dist/master/index.d.ts +0 -18
  269. package/dist/master/index.d.ts.map +0 -1
  270. package/dist/master/index.js +0 -75
  271. package/dist/master/index.js.map +0 -1
  272. package/dist/master/ipc-server.d.ts +0 -21
  273. package/dist/master/ipc-server.d.ts.map +0 -1
  274. package/dist/master/ipc-server.js +0 -175
  275. package/dist/master/ipc-server.js.map +0 -1
  276. package/dist/master/request-handler.d.ts +0 -17
  277. package/dist/master/request-handler.d.ts.map +0 -1
  278. package/dist/master/request-handler.js +0 -134
  279. package/dist/master/request-handler.js.map +0 -1
  280. package/dist/master/session-registry.d.ts +0 -120
  281. package/dist/master/session-registry.d.ts.map +0 -1
  282. package/dist/master/session-registry.js +0 -247
  283. package/dist/master/session-registry.js.map +0 -1
  284. package/dist/shared/ipc-constants.d.ts +0 -16
  285. package/dist/shared/ipc-constants.d.ts.map +0 -1
  286. package/dist/shared/ipc-constants.js +0 -66
  287. package/dist/shared/ipc-constants.js.map +0 -1
  288. package/dist/shared/ipc-protocol.d.ts +0 -33
  289. package/dist/shared/ipc-protocol.d.ts.map +0 -1
  290. package/dist/shared/ipc-protocol.js +0 -20
  291. package/dist/shared/ipc-protocol.js.map +0 -1
  292. package/dist/worker/auto-master.d.ts +0 -24
  293. package/dist/worker/auto-master.d.ts.map +0 -1
  294. package/dist/worker/auto-master.js +0 -135
  295. package/dist/worker/auto-master.js.map +0 -1
  296. package/dist/worker/index.d.ts +0 -25
  297. package/dist/worker/index.d.ts.map +0 -1
  298. package/dist/worker/index.js +0 -93
  299. package/dist/worker/index.js.map +0 -1
  300. package/dist/worker/ipc-client.d.ts +0 -26
  301. package/dist/worker/ipc-client.d.ts.map +0 -1
  302. package/dist/worker/ipc-client.js +0 -211
  303. package/dist/worker/ipc-client.js.map +0 -1
  304. package/dist/worker/remote-session-manager.d.ts +0 -114
  305. package/dist/worker/remote-session-manager.d.ts.map +0 -1
  306. package/dist/worker/remote-session-manager.js +0 -151
  307. package/dist/worker/remote-session-manager.js.map +0 -1
  308. package/dist/worker/tools.d.ts +0 -7
  309. package/dist/worker/tools.d.ts.map +0 -1
  310. package/dist/worker/tools.js +0 -340
  311. package/dist/worker/tools.js.map +0 -1
  312. package/dist/worker/worker-mcp-server.d.ts +0 -70
  313. package/dist/worker/worker-mcp-server.d.ts.map +0 -1
  314. package/dist/worker/worker-mcp-server.js +0 -295
  315. package/dist/worker/worker-mcp-server.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-handler.js","sourceRoot":"","sources":["../../src/dashboard/keyboard-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Operation Controller - Pause/Resume/Cancel control for operations
3
+ */
4
+ import { EventEmitter } from 'events';
5
+ export interface OperationControllerEvents {
6
+ 'paused': () => void;
7
+ 'resumed': () => void;
8
+ 'cancelled': (callId: string) => void;
9
+ }
10
+ export declare class OperationController extends EventEmitter {
11
+ private _isPaused;
12
+ private pendingGates;
13
+ private cancelledCalls;
14
+ private gateCounter;
15
+ /**
16
+ * Check if operations are paused
17
+ */
18
+ get isPaused(): boolean;
19
+ /**
20
+ * Pause all new operations
21
+ */
22
+ pause(): void;
23
+ /**
24
+ * Resume operations
25
+ */
26
+ resume(): void;
27
+ /**
28
+ * Toggle pause state
29
+ */
30
+ toggle(): boolean;
31
+ /**
32
+ * Gate for controlling operation execution
33
+ * Call this before executing a tool - it will wait if paused
34
+ * @param callId Optional call ID for cancellation support
35
+ * @returns Promise that resolves when operation can proceed
36
+ * @throws Error if operation is cancelled
37
+ */
38
+ gate(callId?: string): Promise<void>;
39
+ /**
40
+ * Cancel a specific operation by call ID
41
+ * If the operation is waiting at the gate, it will be rejected
42
+ * If the operation is in progress, this just marks it for cancellation
43
+ */
44
+ cancel(callId: string): boolean;
45
+ /**
46
+ * Cancel all pending operations
47
+ */
48
+ cancelAll(): number;
49
+ /**
50
+ * Check if a call has been cancelled
51
+ */
52
+ isCancelled(callId: string): boolean;
53
+ /**
54
+ * Clear cancelled status for a call ID
55
+ */
56
+ clearCancelled(callId: string): void;
57
+ /**
58
+ * Get number of operations waiting at the gate
59
+ */
60
+ get pendingCount(): number;
61
+ /**
62
+ * Get status
63
+ */
64
+ getStatus(): {
65
+ isPaused: boolean;
66
+ pendingCount: number;
67
+ cancelledCount: number;
68
+ };
69
+ /**
70
+ * Reset controller state
71
+ */
72
+ reset(): void;
73
+ }
74
+ export declare function getOperationController(): OperationController;
75
+ export declare function setOperationController(controller: OperationController): void;
76
+ //# sourceMappingURL=operation-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-controller.d.ts","sourceRoot":"","sources":["../../src/dashboard/operation-controller.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAOD,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,WAAW,CAAa;IAEhC;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,MAAM,IAAI,IAAI;IAcd;;OAEG;IACH,MAAM,IAAI,OAAO;IASjB;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B1C;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAe/B;;OAEG;IACH,SAAS,IAAI,MAAM;IAWnB;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,SAAS,IAAI;QACX,QAAQ,EAAE,OAAO,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB;IAQD;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd;AAKD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAE5E"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /**
3
+ * Operation Controller - Pause/Resume/Cancel control for operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OperationController = void 0;
7
+ exports.getOperationController = getOperationController;
8
+ exports.setOperationController = setOperationController;
9
+ const events_1 = require("events");
10
+ class OperationController extends events_1.EventEmitter {
11
+ _isPaused = false;
12
+ pendingGates = new Map();
13
+ cancelledCalls = new Set();
14
+ gateCounter = 0;
15
+ /**
16
+ * Check if operations are paused
17
+ */
18
+ get isPaused() {
19
+ return this._isPaused;
20
+ }
21
+ /**
22
+ * Pause all new operations
23
+ */
24
+ pause() {
25
+ if (!this._isPaused) {
26
+ this._isPaused = true;
27
+ this.emit('paused');
28
+ }
29
+ }
30
+ /**
31
+ * Resume operations
32
+ */
33
+ resume() {
34
+ if (this._isPaused) {
35
+ this._isPaused = false;
36
+ // Release all pending gates
37
+ for (const [gateId, gate] of this.pendingGates) {
38
+ if (!this.cancelledCalls.has(gateId)) {
39
+ gate.resolve();
40
+ }
41
+ }
42
+ this.pendingGates.clear();
43
+ this.emit('resumed');
44
+ }
45
+ }
46
+ /**
47
+ * Toggle pause state
48
+ */
49
+ toggle() {
50
+ if (this._isPaused) {
51
+ this.resume();
52
+ }
53
+ else {
54
+ this.pause();
55
+ }
56
+ return this._isPaused;
57
+ }
58
+ /**
59
+ * Gate for controlling operation execution
60
+ * Call this before executing a tool - it will wait if paused
61
+ * @param callId Optional call ID for cancellation support
62
+ * @returns Promise that resolves when operation can proceed
63
+ * @throws Error if operation is cancelled
64
+ */
65
+ async gate(callId) {
66
+ // Check if already cancelled
67
+ if (callId && this.cancelledCalls.has(callId)) {
68
+ this.cancelledCalls.delete(callId);
69
+ throw new Error('Operation cancelled');
70
+ }
71
+ // If not paused, proceed immediately
72
+ if (!this._isPaused) {
73
+ return;
74
+ }
75
+ // Wait for resume or cancellation
76
+ const gateId = callId || `gate-${++this.gateCounter}`;
77
+ return new Promise((resolve, reject) => {
78
+ this.pendingGates.set(gateId, { resolve, reject });
79
+ // If cancelled while we're setting up, reject immediately
80
+ if (this.cancelledCalls.has(gateId)) {
81
+ this.cancelledCalls.delete(gateId);
82
+ this.pendingGates.delete(gateId);
83
+ reject(new Error('Operation cancelled'));
84
+ }
85
+ });
86
+ }
87
+ /**
88
+ * Cancel a specific operation by call ID
89
+ * If the operation is waiting at the gate, it will be rejected
90
+ * If the operation is in progress, this just marks it for cancellation
91
+ */
92
+ cancel(callId) {
93
+ this.cancelledCalls.add(callId);
94
+ const gate = this.pendingGates.get(callId);
95
+ if (gate) {
96
+ this.pendingGates.delete(callId);
97
+ gate.reject(new Error('Operation cancelled'));
98
+ this.emit('cancelled', callId);
99
+ return true;
100
+ }
101
+ this.emit('cancelled', callId);
102
+ return false;
103
+ }
104
+ /**
105
+ * Cancel all pending operations
106
+ */
107
+ cancelAll() {
108
+ let count = 0;
109
+ for (const [gateId, gate] of this.pendingGates) {
110
+ this.cancelledCalls.add(gateId);
111
+ gate.reject(new Error('Operation cancelled'));
112
+ count++;
113
+ }
114
+ this.pendingGates.clear();
115
+ return count;
116
+ }
117
+ /**
118
+ * Check if a call has been cancelled
119
+ */
120
+ isCancelled(callId) {
121
+ return this.cancelledCalls.has(callId);
122
+ }
123
+ /**
124
+ * Clear cancelled status for a call ID
125
+ */
126
+ clearCancelled(callId) {
127
+ this.cancelledCalls.delete(callId);
128
+ }
129
+ /**
130
+ * Get number of operations waiting at the gate
131
+ */
132
+ get pendingCount() {
133
+ return this.pendingGates.size;
134
+ }
135
+ /**
136
+ * Get status
137
+ */
138
+ getStatus() {
139
+ return {
140
+ isPaused: this._isPaused,
141
+ pendingCount: this.pendingGates.size,
142
+ cancelledCount: this.cancelledCalls.size,
143
+ };
144
+ }
145
+ /**
146
+ * Reset controller state
147
+ */
148
+ reset() {
149
+ this._isPaused = false;
150
+ this.cancelAll();
151
+ this.cancelledCalls.clear();
152
+ this.gateCounter = 0;
153
+ }
154
+ }
155
+ exports.OperationController = OperationController;
156
+ // Singleton instance
157
+ let instance = null;
158
+ function getOperationController() {
159
+ if (!instance) {
160
+ instance = new OperationController();
161
+ }
162
+ return instance;
163
+ }
164
+ function setOperationController(controller) {
165
+ instance = controller;
166
+ }
167
+ //# sourceMappingURL=operation-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-controller.js","sourceRoot":"","sources":["../../src/dashboard/operation-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Renderer - Screen rendering to stderr
3
+ */
4
+ import type { ScreenSize } from './types.js';
5
+ export declare class Renderer {
6
+ private lastFrame;
7
+ private lastSize;
8
+ /**
9
+ * Get current terminal size
10
+ */
11
+ getSize(): ScreenSize;
12
+ /**
13
+ * Check if stderr is a TTY
14
+ */
15
+ isTTY(): boolean;
16
+ /**
17
+ * Write to stderr
18
+ */
19
+ write(content: string): void;
20
+ /**
21
+ * Clear the screen
22
+ */
23
+ clear(): void;
24
+ /**
25
+ * Hide cursor
26
+ */
27
+ hideCursor(): void;
28
+ /**
29
+ * Show cursor
30
+ */
31
+ showCursor(): void;
32
+ /**
33
+ * Render a frame (with differential update support)
34
+ */
35
+ render(lines: string[]): void;
36
+ /**
37
+ * Force render without differential check
38
+ */
39
+ forceRender(lines: string[]): void;
40
+ private buildFrame;
41
+ private truncateLine;
42
+ /**
43
+ * Create a box-style header line
44
+ */
45
+ header(text: string, width: number): string;
46
+ /**
47
+ * Create a separator line
48
+ */
49
+ separator(width: number): string;
50
+ /**
51
+ * Create a footer line
52
+ */
53
+ footer(width: number): string;
54
+ /**
55
+ * Create a content line with borders
56
+ */
57
+ contentLine(content: string, width: number): string;
58
+ /**
59
+ * Create an empty line with borders
60
+ */
61
+ emptyLine(width: number): string;
62
+ /**
63
+ * Create a status badge
64
+ */
65
+ badge(text: string, color: string): string;
66
+ /**
67
+ * Create a progress indicator
68
+ */
69
+ spinner(frame: number): string;
70
+ /**
71
+ * Create a key hint
72
+ */
73
+ keyHint(key: string, description: string): string;
74
+ }
75
+ export declare function getRenderer(): Renderer;
76
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/dashboard/renderer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,QAAQ,CAAyC;IAEzD;;OAEG;IACH,OAAO,IAAI,UAAU;IAOrB;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAW7B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAOlC,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,YAAY;IAkCpB;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAe3C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIhC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAMnD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIhC;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI1C;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK9B;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;CAGlD;AAKD,wBAAgB,WAAW,IAAI,QAAQ,CAKtC"}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ /**
3
+ * Renderer - Screen rendering to stderr
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Renderer = void 0;
7
+ exports.getRenderer = getRenderer;
8
+ const ansi_js_1 = require("./ansi.js");
9
+ class Renderer {
10
+ lastFrame = '';
11
+ lastSize = { columns: 80, rows: 24 };
12
+ /**
13
+ * Get current terminal size
14
+ */
15
+ getSize() {
16
+ const columns = process.stderr.columns || 80;
17
+ const rows = process.stderr.rows || 24;
18
+ this.lastSize = { columns, rows };
19
+ return this.lastSize;
20
+ }
21
+ /**
22
+ * Check if stderr is a TTY
23
+ */
24
+ isTTY() {
25
+ return process.stderr.isTTY === true;
26
+ }
27
+ /**
28
+ * Write to stderr
29
+ */
30
+ write(content) {
31
+ process.stderr.write(content);
32
+ }
33
+ /**
34
+ * Clear the screen
35
+ */
36
+ clear() {
37
+ this.write(ansi_js_1.ANSI.clear + ansi_js_1.ANSI.home);
38
+ this.lastFrame = '';
39
+ }
40
+ /**
41
+ * Hide cursor
42
+ */
43
+ hideCursor() {
44
+ this.write(ansi_js_1.ANSI.hideCursor);
45
+ }
46
+ /**
47
+ * Show cursor
48
+ */
49
+ showCursor() {
50
+ this.write(ansi_js_1.ANSI.showCursor);
51
+ }
52
+ /**
53
+ * Render a frame (with differential update support)
54
+ */
55
+ render(lines) {
56
+ const size = this.getSize();
57
+ const frame = this.buildFrame(lines, size);
58
+ // Only update if changed (simple comparison)
59
+ if (frame !== this.lastFrame) {
60
+ this.write(ansi_js_1.ANSI.home + frame);
61
+ this.lastFrame = frame;
62
+ }
63
+ }
64
+ /**
65
+ * Force render without differential check
66
+ */
67
+ forceRender(lines) {
68
+ const size = this.getSize();
69
+ const frame = this.buildFrame(lines, size);
70
+ this.write(ansi_js_1.ANSI.home + frame);
71
+ this.lastFrame = frame;
72
+ }
73
+ buildFrame(lines, size) {
74
+ const output = [];
75
+ for (let i = 0; i < size.rows; i++) {
76
+ const line = lines[i] || '';
77
+ const visibleLength = (0, ansi_js_1.stripAnsi)(line).length;
78
+ if (visibleLength < size.columns) {
79
+ // Pad to fill the line (to clear previous content)
80
+ output.push(line + ' '.repeat(size.columns - visibleLength));
81
+ }
82
+ else if (visibleLength > size.columns) {
83
+ // Truncate if too long
84
+ output.push(this.truncateLine(line, size.columns));
85
+ }
86
+ else {
87
+ output.push(line);
88
+ }
89
+ }
90
+ return output.join('\n');
91
+ }
92
+ truncateLine(line, maxWidth) {
93
+ // Handle ANSI codes properly
94
+ let visibleLength = 0;
95
+ let result = '';
96
+ let inEscape = false;
97
+ let escapeSeq = '';
98
+ for (const char of line) {
99
+ if (char === '\x1b') {
100
+ inEscape = true;
101
+ escapeSeq = char;
102
+ }
103
+ else if (inEscape) {
104
+ escapeSeq += char;
105
+ if (char === 'm') {
106
+ result += escapeSeq;
107
+ inEscape = false;
108
+ escapeSeq = '';
109
+ }
110
+ }
111
+ else {
112
+ if (visibleLength >= maxWidth - 1) {
113
+ result += '…';
114
+ break;
115
+ }
116
+ result += char;
117
+ visibleLength++;
118
+ }
119
+ }
120
+ // Always reset at end
121
+ result += ansi_js_1.ANSI.reset;
122
+ return result;
123
+ }
124
+ /**
125
+ * Create a box-style header line
126
+ */
127
+ header(text, width) {
128
+ const paddedText = ` ${text} `;
129
+ const lineLength = width - paddedText.length - 2;
130
+ const leftLine = Math.floor(lineLength / 2);
131
+ const rightLine = lineLength - leftLine;
132
+ return (ansi_js_1.BOX.topLeft +
133
+ (0, ansi_js_1.horizontalLine)(leftLine) +
134
+ ansi_js_1.ANSI.bold + paddedText + ansi_js_1.ANSI.reset +
135
+ (0, ansi_js_1.horizontalLine)(rightLine) +
136
+ ansi_js_1.BOX.topRight);
137
+ }
138
+ /**
139
+ * Create a separator line
140
+ */
141
+ separator(width) {
142
+ return ansi_js_1.BOX.teeRight + (0, ansi_js_1.horizontalLine)(width - 2) + ansi_js_1.BOX.teeLeft;
143
+ }
144
+ /**
145
+ * Create a footer line
146
+ */
147
+ footer(width) {
148
+ return ansi_js_1.BOX.bottomLeft + (0, ansi_js_1.horizontalLine)(width - 2) + ansi_js_1.BOX.bottomRight;
149
+ }
150
+ /**
151
+ * Create a content line with borders
152
+ */
153
+ contentLine(content, width) {
154
+ const visibleLength = (0, ansi_js_1.stripAnsi)(content).length;
155
+ const padding = Math.max(0, width - visibleLength - 2);
156
+ return ansi_js_1.BOX.vertical + content + ' '.repeat(padding) + ansi_js_1.BOX.vertical;
157
+ }
158
+ /**
159
+ * Create an empty line with borders
160
+ */
161
+ emptyLine(width) {
162
+ return ansi_js_1.BOX.vertical + ' '.repeat(width - 2) + ansi_js_1.BOX.vertical;
163
+ }
164
+ /**
165
+ * Create a status badge
166
+ */
167
+ badge(text, color) {
168
+ return `${color}[${text}]${ansi_js_1.ANSI.reset}`;
169
+ }
170
+ /**
171
+ * Create a progress indicator
172
+ */
173
+ spinner(frame) {
174
+ const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
175
+ return frames[frame % frames.length];
176
+ }
177
+ /**
178
+ * Create a key hint
179
+ */
180
+ keyHint(key, description) {
181
+ return `${ansi_js_1.ANSI.bold}[${key}]${ansi_js_1.ANSI.reset}${description}`;
182
+ }
183
+ }
184
+ exports.Renderer = Renderer;
185
+ // Singleton instance
186
+ let instance = null;
187
+ function getRenderer() {
188
+ if (!instance) {
189
+ instance = new Renderer();
190
+ }
191
+ return instance;
192
+ }
193
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/dashboard/renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Dashboard Type Definitions
3
+ */
4
+ export interface DashboardConfig {
5
+ enabled: boolean;
6
+ refreshInterval: number;
7
+ maxLogEntries: number;
8
+ }
9
+ export type ViewMode = 'activity' | 'sessions' | 'tabs';
10
+ export type ToolCallResult = 'success' | 'error' | 'pending';
11
+ export interface ToolCallEvent {
12
+ id: string;
13
+ requestId?: number | string;
14
+ toolName: string;
15
+ sessionId: string;
16
+ args?: Record<string, unknown>;
17
+ startTime: number;
18
+ endTime?: number;
19
+ duration?: number;
20
+ result: ToolCallResult;
21
+ error?: string;
22
+ }
23
+ export interface DashboardStats {
24
+ sessions: number;
25
+ workers: number;
26
+ tabs: number;
27
+ queueSize: number;
28
+ memoryUsage: number;
29
+ uptime: number;
30
+ status: 'running' | 'paused' | 'stopped';
31
+ }
32
+ export interface SessionInfo {
33
+ id: string;
34
+ workerCount: number;
35
+ tabCount: number;
36
+ createdAt: number;
37
+ lastActivity: number;
38
+ }
39
+ export interface TabInfo {
40
+ targetId: string;
41
+ sessionId: string;
42
+ workerId: string;
43
+ url: string;
44
+ title: string;
45
+ }
46
+ export interface KeyBinding {
47
+ key: string;
48
+ description: string;
49
+ action: () => void;
50
+ }
51
+ export interface ScreenSize {
52
+ columns: number;
53
+ rows: number;
54
+ }
55
+ export declare const DEFAULT_CONFIG: DashboardConfig;
56
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,cAAc,EAAE,eAI5B,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Dashboard Type Definitions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_CONFIG = void 0;
7
+ exports.DEFAULT_CONFIG = {
8
+ enabled: true,
9
+ refreshInterval: 100,
10
+ maxLogEntries: 50,
11
+ };
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA8DU,QAAA,cAAc,GAAoB;IAC7C,OAAO,EAAE,IAAI;IACb,eAAe,EAAE,GAAG;IACpB,aAAa,EAAE,EAAE;CAClB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Main View - Activity log and stats display
3
+ */
4
+ import type { ToolCallEvent, DashboardStats, ScreenSize } from '../types.js';
5
+ import { Renderer } from '../renderer.js';
6
+ export interface MainViewData {
7
+ stats: DashboardStats;
8
+ calls: ToolCallEvent[];
9
+ version: string;
10
+ spinnerFrame: number;
11
+ }
12
+ export declare class MainView {
13
+ private renderer;
14
+ constructor(renderer: Renderer);
15
+ render(data: MainViewData, size: ScreenSize): string[];
16
+ private renderHeader;
17
+ private renderStatsBar;
18
+ private renderSeparator;
19
+ private renderActivityLog;
20
+ private renderCallLine;
21
+ private renderKeyHints;
22
+ }
23
+ //# sourceMappingURL=main-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-view.d.ts","sourceRoot":"","sources":["../../../src/dashboard/views/main-view.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,EAAE,QAAQ;IAI9B,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE;IAgCtD,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,cAAc;IA+CtB,OAAO,CAAC,cAAc;CAcvB"}