browser-debugger-cli 0.6.10 → 0.7.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 (260) hide show
  1. package/README.md +10 -0
  2. package/dist/commands/cdp.d.ts.map +1 -1
  3. package/dist/commands/cdp.js +72 -16
  4. package/dist/commands/cdp.js.map +1 -1
  5. package/dist/commands/cleanup.js +1 -1
  6. package/dist/commands/cleanup.js.map +1 -1
  7. package/dist/commands/console.d.ts +4 -28
  8. package/dist/commands/console.d.ts.map +1 -1
  9. package/dist/commands/console.js +81 -187
  10. package/dist/commands/console.js.map +1 -1
  11. package/dist/commands/details.d.ts.map +1 -1
  12. package/dist/commands/details.js +8 -0
  13. package/dist/commands/details.js.map +1 -1
  14. package/dist/commands/dom/DomElementResolver.d.ts +2 -2
  15. package/dist/commands/dom/DomElementResolver.d.ts.map +1 -1
  16. package/dist/commands/dom/DomElementResolver.js +34 -13
  17. package/dist/commands/dom/DomElementResolver.js.map +1 -1
  18. package/dist/commands/dom/__tests__/screenshotResize.unit.test.d.ts +2 -0
  19. package/dist/commands/dom/__tests__/screenshotResize.unit.test.d.ts.map +1 -0
  20. package/dist/commands/dom/__tests__/screenshotResize.unit.test.js +184 -0
  21. package/dist/commands/dom/__tests__/screenshotResize.unit.test.js.map +1 -0
  22. package/dist/commands/dom/a11y.d.ts.map +1 -1
  23. package/dist/commands/dom/a11y.js +14 -10
  24. package/dist/commands/dom/a11y.js.map +1 -1
  25. package/dist/commands/dom/evalHelpers.d.ts.map +1 -1
  26. package/dist/commands/dom/evalHelpers.js +10 -7
  27. package/dist/commands/dom/evalHelpers.js.map +1 -1
  28. package/dist/commands/dom/form.d.ts +14 -0
  29. package/dist/commands/dom/form.d.ts.map +1 -0
  30. package/dist/commands/dom/form.js +439 -0
  31. package/dist/commands/dom/form.js.map +1 -0
  32. package/dist/commands/dom/formDiscovery.d.ts +26 -0
  33. package/dist/commands/dom/formDiscovery.d.ts.map +1 -0
  34. package/dist/commands/dom/formDiscovery.js +476 -0
  35. package/dist/commands/dom/formDiscovery.js.map +1 -0
  36. package/dist/commands/dom/formFillHelpers.d.ts +2 -1
  37. package/dist/commands/dom/formFillHelpers.d.ts.map +1 -1
  38. package/dist/commands/dom/formFillHelpers.js +54 -24
  39. package/dist/commands/dom/formFillHelpers.js.map +1 -1
  40. package/dist/commands/dom/formInteraction.d.ts.map +1 -1
  41. package/dist/commands/dom/formInteraction.js +26 -10
  42. package/dist/commands/dom/formInteraction.js.map +1 -1
  43. package/dist/commands/dom/formSubmitHelpers.d.ts +2 -1
  44. package/dist/commands/dom/formSubmitHelpers.d.ts.map +1 -1
  45. package/dist/commands/dom/formSubmitHelpers.js.map +1 -1
  46. package/dist/commands/dom/formTypes.d.ts +75 -0
  47. package/dist/commands/dom/formTypes.d.ts.map +1 -0
  48. package/dist/commands/dom/formTypes.js +7 -0
  49. package/dist/commands/dom/formTypes.js.map +1 -0
  50. package/dist/commands/dom/helpers.d.ts +11 -4
  51. package/dist/commands/dom/helpers.d.ts.map +1 -1
  52. package/dist/commands/dom/helpers.js +324 -40
  53. package/dist/commands/dom/helpers.js.map +1 -1
  54. package/dist/commands/dom/index.d.ts.map +1 -1
  55. package/dist/commands/dom/index.js +17 -5
  56. package/dist/commands/dom/index.js.map +1 -1
  57. package/dist/commands/dom/reactEventHelpers.d.ts +4 -4
  58. package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -1
  59. package/dist/commands/dom/reactEventHelpers.js +11 -11
  60. package/dist/commands/dom/screenshotResize.d.ts +81 -0
  61. package/dist/commands/dom/screenshotResize.d.ts.map +1 -0
  62. package/dist/commands/dom/screenshotResize.js +103 -0
  63. package/dist/commands/dom/screenshotResize.js.map +1 -0
  64. package/dist/commands/helpJson.d.ts +20 -0
  65. package/dist/commands/helpJson.d.ts.map +1 -1
  66. package/dist/commands/helpJson.js +21 -29
  67. package/dist/commands/helpJson.js.map +1 -1
  68. package/dist/commands/network/har.d.ts.map +1 -1
  69. package/dist/commands/network/har.js +3 -2
  70. package/dist/commands/network/har.js.map +1 -1
  71. package/dist/commands/network/list.d.ts +0 -8
  72. package/dist/commands/network/list.d.ts.map +1 -1
  73. package/dist/commands/network/list.js +131 -201
  74. package/dist/commands/network/list.js.map +1 -1
  75. package/dist/commands/network/shared.d.ts.map +1 -1
  76. package/dist/commands/network/shared.js +6 -0
  77. package/dist/commands/network/shared.js.map +1 -1
  78. package/dist/commands/optionBehaviors.d.ts +26 -0
  79. package/dist/commands/optionBehaviors.d.ts.map +1 -0
  80. package/dist/commands/optionBehaviors.js +195 -0
  81. package/dist/commands/optionBehaviors.js.map +1 -0
  82. package/dist/commands/peek.d.ts +2 -4
  83. package/dist/commands/peek.d.ts.map +1 -1
  84. package/dist/commands/peek.js +108 -92
  85. package/dist/commands/peek.js.map +1 -1
  86. package/dist/commands/shared/CommandRunner.js +1 -1
  87. package/dist/commands/shared/CommandRunner.js.map +1 -1
  88. package/dist/commands/shared/dataFetcher.d.ts +58 -0
  89. package/dist/commands/shared/dataFetcher.d.ts.map +1 -0
  90. package/dist/commands/shared/dataFetcher.js +98 -0
  91. package/dist/commands/shared/dataFetcher.js.map +1 -0
  92. package/dist/commands/shared/optionTypes.d.ts +8 -4
  93. package/dist/commands/shared/optionTypes.d.ts.map +1 -1
  94. package/dist/commands/shared/startHelpers.d.ts.map +1 -1
  95. package/dist/commands/shared/startHelpers.js +6 -5
  96. package/dist/commands/shared/startHelpers.js.map +1 -1
  97. package/dist/commands/shared/validation.d.ts +0 -45
  98. package/dist/commands/shared/validation.d.ts.map +1 -1
  99. package/dist/commands/shared/validation.js +65 -107
  100. package/dist/commands/shared/validation.js.map +1 -1
  101. package/dist/commands/status.d.ts.map +1 -1
  102. package/dist/commands/status.js +13 -4
  103. package/dist/commands/status.js.map +1 -1
  104. package/dist/commands/stop.d.ts.map +1 -1
  105. package/dist/commands/stop.js +15 -4
  106. package/dist/commands/stop.js.map +1 -1
  107. package/dist/commands/tail.d.ts +2 -7
  108. package/dist/commands/tail.d.ts.map +1 -1
  109. package/dist/commands/tail.js +61 -64
  110. package/dist/commands/tail.js.map +1 -1
  111. package/dist/connection/cdp.d.ts.map +1 -1
  112. package/dist/connection/cdp.js +5 -3
  113. package/dist/connection/cdp.js.map +1 -1
  114. package/dist/connection/diagnostics.js +1 -1
  115. package/dist/connection/diagnostics.js.map +1 -1
  116. package/dist/connection/errors.d.ts +0 -7
  117. package/dist/connection/errors.d.ts.map +1 -1
  118. package/dist/connection/errors.js +0 -7
  119. package/dist/connection/errors.js.map +1 -1
  120. package/dist/connection/launcher/binaryResolver.d.ts.map +1 -1
  121. package/dist/connection/launcher/binaryResolver.js +2 -1
  122. package/dist/connection/launcher/binaryResolver.js.map +1 -1
  123. package/dist/connection/launcher/preferencesLoader.d.ts.map +1 -1
  124. package/dist/connection/launcher/preferencesLoader.js +2 -1
  125. package/dist/connection/launcher/preferencesLoader.js.map +1 -1
  126. package/dist/connection/launcher.d.ts.map +1 -1
  127. package/dist/connection/launcher.js +2 -1
  128. package/dist/connection/launcher.js.map +1 -1
  129. package/dist/connection/pageReadiness.d.ts.map +1 -1
  130. package/dist/connection/pageReadiness.js +2 -9
  131. package/dist/connection/pageReadiness.js.map +1 -1
  132. package/dist/daemon/handlers/BaseHandler.d.ts.map +1 -1
  133. package/dist/daemon/handlers/BaseHandler.js +1 -1
  134. package/dist/daemon/handlers/BaseHandler.js.map +1 -1
  135. package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -1
  136. package/dist/daemon/handlers/QueryHandlers.js +1 -1
  137. package/dist/daemon/handlers/QueryHandlers.js.map +1 -1
  138. package/dist/daemon/handlers/SessionHandlers.d.ts.map +1 -1
  139. package/dist/daemon/handlers/SessionHandlers.js +1 -1
  140. package/dist/daemon/handlers/SessionHandlers.js.map +1 -1
  141. package/dist/daemon/ipcServer.js +1 -1
  142. package/dist/daemon/ipcServer.js.map +1 -1
  143. package/dist/daemon/launcher.d.ts.map +1 -1
  144. package/dist/daemon/launcher.js +3 -2
  145. package/dist/daemon/launcher.js.map +1 -1
  146. package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -1
  147. package/dist/daemon/lifecycle/signalHandlers.js +1 -1
  148. package/dist/daemon/lifecycle/signalHandlers.js.map +1 -1
  149. package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -1
  150. package/dist/daemon/lifecycle/workerCleanup.js +4 -3
  151. package/dist/daemon/lifecycle/workerCleanup.js.map +1 -1
  152. package/dist/daemon/lifecycle/workerConfig.d.ts.map +1 -1
  153. package/dist/daemon/lifecycle/workerConfig.js +1 -1
  154. package/dist/daemon/lifecycle/workerConfig.js.map +1 -1
  155. package/dist/daemon/lifecycle/workerIpc.d.ts.map +1 -1
  156. package/dist/daemon/lifecycle/workerIpc.js +1 -1
  157. package/dist/daemon/lifecycle/workerIpc.js.map +1 -1
  158. package/dist/daemon/server/JsonlParser.d.ts.map +1 -1
  159. package/dist/daemon/server/JsonlParser.js +1 -1
  160. package/dist/daemon/server/JsonlParser.js.map +1 -1
  161. package/dist/daemon/startSession.d.ts.map +1 -1
  162. package/dist/daemon/startSession.js +1 -1
  163. package/dist/daemon/startSession.js.map +1 -1
  164. package/dist/daemon/worker/plugins.js +3 -3
  165. package/dist/daemon/worker/plugins.js.map +1 -1
  166. package/dist/index.js +23 -7
  167. package/dist/index.js.map +1 -1
  168. package/dist/ipc/protocol/messages.d.ts +2 -2
  169. package/dist/ipc/protocol/messages.d.ts.map +1 -1
  170. package/dist/ipc/utils/errors.js +1 -1
  171. package/dist/ipc/utils/errors.js.map +1 -1
  172. package/dist/session/QueryCacheManager.d.ts.map +1 -1
  173. package/dist/session/QueryCacheManager.js +1 -1
  174. package/dist/session/QueryCacheManager.js.map +1 -1
  175. package/dist/session/chrome.js +1 -1
  176. package/dist/session/chrome.js.map +1 -1
  177. package/dist/session/cleanup.js +5 -5
  178. package/dist/session/cleanup.js.map +1 -1
  179. package/dist/session/lock.js +1 -1
  180. package/dist/session/lock.js.map +1 -1
  181. package/dist/session/metadata.d.ts.map +1 -1
  182. package/dist/session/metadata.js +1 -1
  183. package/dist/session/metadata.js.map +1 -1
  184. package/dist/session/pid.js +1 -1
  185. package/dist/session/pid.js.map +1 -1
  186. package/dist/telemetry/dom.d.ts.map +1 -1
  187. package/dist/telemetry/dom.js +1 -1
  188. package/dist/telemetry/dom.js.map +1 -1
  189. package/dist/telemetry/filterPresets.d.ts.map +1 -1
  190. package/dist/telemetry/filterPresets.js +5 -2
  191. package/dist/telemetry/filterPresets.js.map +1 -1
  192. package/dist/telemetry/network.d.ts.map +1 -1
  193. package/dist/telemetry/network.js +1 -1
  194. package/dist/telemetry/network.js.map +1 -1
  195. package/dist/types.d.ts +217 -1
  196. package/dist/types.d.ts.map +1 -1
  197. package/dist/types.js +33 -1
  198. package/dist/types.js.map +1 -1
  199. package/dist/ui/OutputBuilder.d.ts +2 -44
  200. package/dist/ui/OutputBuilder.d.ts.map +1 -1
  201. package/dist/ui/OutputBuilder.js +71 -103
  202. package/dist/ui/OutputBuilder.js.map +1 -1
  203. package/dist/ui/errors/CommandError.d.ts +0 -2
  204. package/dist/ui/errors/CommandError.d.ts.map +1 -1
  205. package/dist/ui/errors/CommandError.js.map +1 -1
  206. package/dist/ui/formatters/dom.d.ts +8 -19
  207. package/dist/ui/formatters/dom.d.ts.map +1 -1
  208. package/dist/ui/formatters/dom.js +12 -68
  209. package/dist/ui/formatters/dom.js.map +1 -1
  210. package/dist/ui/formatters/form.d.ts +15 -0
  211. package/dist/ui/formatters/form.d.ts.map +1 -0
  212. package/dist/ui/formatters/form.js +314 -0
  213. package/dist/ui/formatters/form.js.map +1 -0
  214. package/dist/ui/logging/logger.d.ts +1 -1
  215. package/dist/ui/logging/logger.d.ts.map +1 -1
  216. package/dist/ui/logging/logger.js +1 -1
  217. package/dist/ui/logging/logger.js.map +1 -1
  218. package/dist/ui/messages/dom.d.ts +14 -0
  219. package/dist/ui/messages/dom.d.ts.map +1 -0
  220. package/dist/ui/messages/dom.js +28 -0
  221. package/dist/ui/messages/dom.js.map +1 -0
  222. package/dist/ui/messages/errors.d.ts +122 -10
  223. package/dist/ui/messages/errors.d.ts.map +1 -1
  224. package/dist/ui/messages/errors.js +280 -11
  225. package/dist/ui/messages/errors.js.map +1 -1
  226. package/dist/utils/__tests__/shellDetection.unit.test.d.ts +12 -0
  227. package/dist/utils/__tests__/shellDetection.unit.test.d.ts.map +1 -0
  228. package/dist/utils/__tests__/shellDetection.unit.test.js +220 -0
  229. package/dist/utils/__tests__/shellDetection.unit.test.js.map +1 -0
  230. package/dist/utils/async.d.ts +10 -0
  231. package/dist/utils/async.d.ts.map +1 -0
  232. package/dist/utils/async.js +12 -0
  233. package/dist/utils/async.js.map +1 -0
  234. package/dist/utils/atomicFile.js +1 -1
  235. package/dist/utils/atomicFile.js.map +1 -1
  236. package/dist/utils/decisionTrees.d.ts.map +1 -1
  237. package/dist/utils/decisionTrees.js +5 -0
  238. package/dist/utils/decisionTrees.js.map +1 -1
  239. package/dist/utils/errorMapping.d.ts.map +1 -1
  240. package/dist/utils/errorMapping.js +4 -1
  241. package/dist/utils/errorMapping.js.map +1 -1
  242. package/dist/utils/exitCodes.d.ts +18 -17
  243. package/dist/utils/exitCodes.d.ts.map +1 -1
  244. package/dist/utils/exitCodes.js +97 -17
  245. package/dist/utils/exitCodes.js.map +1 -1
  246. package/dist/utils/shellDetection.d.ts +34 -0
  247. package/dist/utils/shellDetection.d.ts.map +1 -0
  248. package/dist/utils/shellDetection.js +94 -0
  249. package/dist/utils/shellDetection.js.map +1 -0
  250. package/dist/utils/suggestions.d.ts +19 -0
  251. package/dist/utils/suggestions.d.ts.map +1 -0
  252. package/dist/utils/suggestions.js +34 -0
  253. package/dist/utils/suggestions.js.map +1 -0
  254. package/dist/utils/taskMappings.d.ts.map +1 -1
  255. package/dist/utils/taskMappings.js +40 -0
  256. package/dist/utils/taskMappings.js.map +1 -1
  257. package/dist/utils/url.d.ts.map +1 -1
  258. package/dist/utils/url.js +14 -0
  259. package/dist/utils/url.js.map +1 -1
  260. package/package.json +5 -5
@@ -82,29 +82,18 @@ export declare function formatDomEval(data: {
82
82
  /**
83
83
  * Format screenshot capture result for human-readable display.
84
84
  *
85
- * Supports both page and element screenshots. Element screenshots show
86
- * the selector/index and bounding box information.
85
+ * Shows concise single-line output. Resize/capture metadata available in --json output.
87
86
  *
88
- * @param data - Screenshot metadata including optional element info
89
- * @returns Formatted string with screenshot details
87
+ * @param data - Screenshot metadata
88
+ * @returns Formatted string with screenshot path and optional viewport message
90
89
  *
91
90
  * @example
92
91
  * ```typescript
93
- * formatDomScreenshot({
94
- * path: '/path/to/screenshot.png',
95
- * format: 'png',
96
- * width: 1920,
97
- * height: 1080,
98
- * size: 245632,
99
- * fullPage: true
100
- * });
101
- * // Output:
102
- * // Screenshot captured
103
- * // Path: /path/to/screenshot.png
104
- * // Format: png
105
- * // Dimensions: 1920x1080
106
- * // Size: 240.0 KB
107
- * // Full page: yes
92
+ * formatDomScreenshot({ path: './page.png', ... });
93
+ * // Output: Screenshot saved to ./page.png
94
+ *
95
+ * formatDomScreenshot({ path: './page.png', fullPageSkipped: { reason: 'page_too_tall', ... } });
96
+ * // Output: Screenshot saved to ./page.png (viewport only - page too tall)
108
97
  * ```
109
98
  */
110
99
  export declare function formatDomScreenshot(data: ScreenshotResult): string;
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGjF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAmC3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAcvD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAgClE"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGjF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAmC3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAcvD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAQlE"}
@@ -123,81 +123,25 @@ export function formatDomEval(data) {
123
123
  /**
124
124
  * Format screenshot capture result for human-readable display.
125
125
  *
126
- * Supports both page and element screenshots. Element screenshots show
127
- * the selector/index and bounding box information.
126
+ * Shows concise single-line output. Resize/capture metadata available in --json output.
128
127
  *
129
- * @param data - Screenshot metadata including optional element info
130
- * @returns Formatted string with screenshot details
128
+ * @param data - Screenshot metadata
129
+ * @returns Formatted string with screenshot path and optional viewport message
131
130
  *
132
131
  * @example
133
132
  * ```typescript
134
- * formatDomScreenshot({
135
- * path: '/path/to/screenshot.png',
136
- * format: 'png',
137
- * width: 1920,
138
- * height: 1080,
139
- * size: 245632,
140
- * fullPage: true
141
- * });
142
- * // Output:
143
- * // Screenshot captured
144
- * // Path: /path/to/screenshot.png
145
- * // Format: png
146
- * // Dimensions: 1920x1080
147
- * // Size: 240.0 KB
148
- * // Full page: yes
133
+ * formatDomScreenshot({ path: './page.png', ... });
134
+ * // Output: Screenshot saved to ./page.png
135
+ *
136
+ * formatDomScreenshot({ path: './page.png', fullPageSkipped: { reason: 'page_too_tall', ... } });
137
+ * // Output: Screenshot saved to ./page.png (viewport only - page too tall)
149
138
  * ```
150
139
  */
151
140
  export function formatDomScreenshot(data) {
152
- const fmt = new OutputFormatter();
153
- const sizeStr = formatFileSize(data.size);
154
- const title = data.element ? 'Element screenshot captured' : 'Screenshot captured';
155
- fmt.text(title).blank();
156
- const kvPairs = [
157
- ['Path', data.path],
158
- ['Format', data.format.toUpperCase()],
159
- ];
160
- if (data.format === 'jpeg' && data.quality !== undefined) {
161
- kvPairs.push(['Quality', `${data.quality}%`]);
162
- }
163
- kvPairs.push(['Dimensions', `${data.width}x${data.height}`]);
164
- kvPairs.push(['Size', sizeStr]);
165
- if (data.element) {
166
- const elementTarget = formatElementTarget(data.element);
167
- kvPairs.push(['Element', elementTarget]);
168
- }
169
- else {
170
- kvPairs.push(['Full page', data.fullPage ? 'yes' : 'no']);
171
- if (data.viewport) {
172
- kvPairs.push(['Viewport', `${data.viewport.width}x${data.viewport.height}`]);
173
- }
174
- }
175
- fmt.keyValueList(kvPairs);
176
- return fmt.build();
177
- }
178
- /**
179
- * Format file size in human-readable units.
180
- *
181
- * @param bytes - Size in bytes
182
- * @returns Formatted size string (e.g., "240.0 KB" or "1.5 MB")
183
- */
184
- function formatFileSize(bytes) {
185
- const kb = bytes / 1024;
186
- return kb < 1024 ? `${kb.toFixed(1)} KB` : `${(kb / 1024).toFixed(1)} MB`;
187
- }
188
- /**
189
- * Format element target description.
190
- *
191
- * @param element - Element info with selector or index
192
- * @returns Formatted element description
193
- */
194
- function formatElementTarget(element) {
195
- if (element.selector !== undefined) {
196
- return element.selector;
197
- }
198
- if (element.index !== undefined) {
199
- return `index ${element.index}`;
141
+ let output = `Screenshot saved to ${data.path}`;
142
+ if (data.fullPageSkipped && !data.scrolledTo) {
143
+ output += ' (viewport only - page too tall)';
200
144
  }
201
- return 'unknown';
145
+ return output;
202
146
  }
203
147
  //# sourceMappingURL=dom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/ui/formatters/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/ui/formatters/dom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Human-readable formatter for form discovery output.
3
+ *
4
+ * Formats discovered forms with semantic tables showing fields,
5
+ * values, validation state, and suggested commands.
6
+ */
7
+ import type { FormDiscoveryResult } from '../../types.js';
8
+ /**
9
+ * Format form discovery result for human-readable display.
10
+ *
11
+ * @param result - Form discovery result
12
+ * @returns Formatted output string
13
+ */
14
+ export declare function formatFormDiscovery(result: FormDiscoveryResult): string;
15
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/form.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAKpB,MAAM,YAAY,CAAC;AA6SpB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAqDvE"}
@@ -0,0 +1,314 @@
1
+ /**
2
+ * Human-readable formatter for form discovery output.
3
+ *
4
+ * Formats discovered forms with semantic tables showing fields,
5
+ * values, validation state, and suggested commands.
6
+ */
7
+ import { OutputFormatter } from '../../ui/formatting.js';
8
+ const COLUMN_WIDTHS = {
9
+ index: 4,
10
+ type: 12,
11
+ label: 24,
12
+ value: 20,
13
+ status: 10,
14
+ };
15
+ /**
16
+ * Format field type for display.
17
+ *
18
+ * @param field - Form field
19
+ * @returns Formatted type string
20
+ */
21
+ function formatFieldType(field) {
22
+ const type = field.inputType ?? field.type;
23
+ return type.slice(0, COLUMN_WIDTHS.type - 1);
24
+ }
25
+ /**
26
+ * Format field value for display.
27
+ *
28
+ * @param field - Form field
29
+ * @returns Formatted value string
30
+ */
31
+ function formatFieldValue(field) {
32
+ if (field.state === 'checked') {
33
+ return 'checked';
34
+ }
35
+ if (field.state === 'unchecked') {
36
+ return 'unchecked';
37
+ }
38
+ if (field.maskedValue) {
39
+ return `"${field.maskedValue}"`;
40
+ }
41
+ if (typeof field.value === 'string' && field.value.length > 0) {
42
+ const truncated = field.value.slice(0, COLUMN_WIDTHS.value - 3);
43
+ return `"${truncated}${field.value.length > COLUMN_WIDTHS.value - 3 ? '...' : ''}"`;
44
+ }
45
+ if (Array.isArray(field.value) && field.value.length > 0) {
46
+ return `[${field.value.length} selected]`;
47
+ }
48
+ return 'empty';
49
+ }
50
+ /**
51
+ * Format field status with icon.
52
+ *
53
+ * @param field - Form field
54
+ * @returns Status string with icon
55
+ */
56
+ function formatFieldStatus(field) {
57
+ if (field.disabled) {
58
+ return 'disabled';
59
+ }
60
+ if (!field.validation.valid) {
61
+ return 'invalid';
62
+ }
63
+ if (field.required && (field.state === 'empty' || field.state === 'unchecked')) {
64
+ return 'required';
65
+ }
66
+ return 'ok';
67
+ }
68
+ /**
69
+ * Format required marker.
70
+ *
71
+ * @param field - Form field
72
+ * @returns Asterisk if required, empty string otherwise
73
+ */
74
+ function formatRequiredMarker(field) {
75
+ return field.required ? '*' : '';
76
+ }
77
+ /**
78
+ * Format field row for table.
79
+ *
80
+ * @param field - Form field
81
+ * @returns Formatted row string
82
+ */
83
+ function formatFieldRow(field) {
84
+ const idx = String(field.index).padStart(COLUMN_WIDTHS.index);
85
+ const type = formatFieldType(field).padEnd(COLUMN_WIDTHS.type);
86
+ const label = (field.label + formatRequiredMarker(field))
87
+ .slice(0, COLUMN_WIDTHS.label)
88
+ .padEnd(COLUMN_WIDTHS.label);
89
+ const value = formatFieldValue(field).padEnd(COLUMN_WIDTHS.value);
90
+ const status = formatFieldStatus(field);
91
+ let warning = '';
92
+ if (field.interactionWarning) {
93
+ warning = ` [custom]`;
94
+ }
95
+ return `${idx} ${type} ${label} ${value} ${status}${warning}`;
96
+ }
97
+ /**
98
+ * Format button row for table.
99
+ *
100
+ * @param button - Form button
101
+ * @returns Formatted row string
102
+ */
103
+ function formatButtonRow(button) {
104
+ const idx = String(button.index).padStart(COLUMN_WIDTHS.index);
105
+ const type = 'button'.padEnd(COLUMN_WIDTHS.type);
106
+ const label = button.label.slice(0, COLUMN_WIDTHS.label).padEnd(COLUMN_WIDTHS.label);
107
+ const primary = button.primary ? '(primary)' : '(secondary)';
108
+ const enabled = button.enabled ? 'enabled' : 'disabled';
109
+ return `${idx} ${type} ${label} ${primary.padEnd(COLUMN_WIDTHS.value)} ${enabled}`;
110
+ }
111
+ /**
112
+ * Format form header with name and step indicator.
113
+ *
114
+ * @param form - Discovered form
115
+ * @returns Header string
116
+ */
117
+ function formatFormHeader(form) {
118
+ let header = `Form: "${form.name ?? 'Unnamed'}"`;
119
+ if (form.step) {
120
+ header += ` (step ${form.step.current} of ${form.step.total})`;
121
+ }
122
+ return header;
123
+ }
124
+ /**
125
+ * Format table header row.
126
+ *
127
+ * @returns Header row string
128
+ */
129
+ function formatTableHeader() {
130
+ const idx = '#'.padStart(COLUMN_WIDTHS.index);
131
+ const type = 'Type'.padEnd(COLUMN_WIDTHS.type);
132
+ const label = 'Label'.padEnd(COLUMN_WIDTHS.label);
133
+ const value = 'Value'.padEnd(COLUMN_WIDTHS.value);
134
+ const status = 'Status';
135
+ return `${idx} ${type} ${label} ${value} ${status}`;
136
+ }
137
+ /**
138
+ * Format summary line.
139
+ *
140
+ * @param summary - Form summary
141
+ * @returns Summary string
142
+ */
143
+ function formatSummaryLine(summary) {
144
+ const parts = [];
145
+ parts.push(`${summary.filledFields}/${summary.totalFields} fields filled`);
146
+ if (summary.invalidFields > 0) {
147
+ parts.push(`${summary.invalidFields} invalid`);
148
+ }
149
+ if (summary.requiredRemaining > 0) {
150
+ parts.push(`${summary.requiredRemaining} required remaining`);
151
+ }
152
+ if (summary.readyToSubmit) {
153
+ parts.push('READY to submit');
154
+ }
155
+ else {
156
+ parts.push('NOT ready');
157
+ }
158
+ return `Summary: ${parts.join(' | ')}`;
159
+ }
160
+ /**
161
+ * Format remaining actions section.
162
+ *
163
+ * @param summary - Form summary
164
+ * @returns Array of command strings
165
+ */
166
+ function formatRemainingActions(summary) {
167
+ if (summary.blockers.length === 0) {
168
+ return [];
169
+ }
170
+ return summary.blockers.slice(0, 5).map((b) => ` ${b.command.padEnd(35)} # ${b.label}`);
171
+ }
172
+ /**
173
+ * Format single form for display.
174
+ *
175
+ * @param form - Discovered form
176
+ * @param fmt - Output formatter
177
+ */
178
+ function formatSingleForm(form, fmt, brief = false) {
179
+ fmt.text(formatFormHeader(form));
180
+ fmt.text('─'.repeat(70));
181
+ if (brief) {
182
+ formatBriefFields(form, fmt);
183
+ return;
184
+ }
185
+ fmt.text(formatTableHeader());
186
+ fmt.text('─'.repeat(70));
187
+ for (const field of form.fields) {
188
+ if (!field.hidden) {
189
+ fmt.text(formatFieldRow(field));
190
+ }
191
+ }
192
+ if (form.buttons.length > 0) {
193
+ fmt.text('─'.repeat(70));
194
+ for (const button of form.buttons) {
195
+ fmt.text(formatButtonRow(button));
196
+ }
197
+ }
198
+ fmt.text('═'.repeat(70));
199
+ fmt.text(formatSummaryLine(form.summary));
200
+ const remaining = formatRemainingActions(form.summary);
201
+ if (remaining.length > 0) {
202
+ fmt.blank();
203
+ fmt.text('Remaining:');
204
+ for (const action of remaining) {
205
+ fmt.text(action);
206
+ }
207
+ }
208
+ }
209
+ /**
210
+ * Format brief field listing.
211
+ *
212
+ * @param form - Discovered form
213
+ * @param fmt - Output formatter
214
+ */
215
+ function formatBriefFields(form, fmt) {
216
+ fmt.text('IDX TYPE LABEL REQ');
217
+ fmt.text('─'.repeat(50));
218
+ for (const field of form.fields) {
219
+ if (field.hidden)
220
+ continue;
221
+ const idx = `[${field.index}]`.padEnd(4);
222
+ const type = (field.inputType ?? field.type).slice(0, 11).padEnd(12);
223
+ const label = (field.label ?? field.name ?? '(no label)').slice(0, 23).padEnd(24);
224
+ const req = field.required ? '*' : '';
225
+ fmt.text(`${idx} ${type} ${label} ${req}`);
226
+ }
227
+ if (form.buttons.length > 0) {
228
+ fmt.text('─'.repeat(50));
229
+ for (const button of form.buttons) {
230
+ const idx = `[${button.index}]`.padEnd(4);
231
+ const type = 'button'.padEnd(12);
232
+ const label = (button.label || button.type).slice(0, 23).padEnd(24);
233
+ fmt.text(`${idx} ${type} ${label}`);
234
+ }
235
+ }
236
+ }
237
+ /**
238
+ * Format other forms summary.
239
+ *
240
+ * @param forms - All forms
241
+ * @param selectedIndex - Index of selected form
242
+ * @param fmt - Output formatter
243
+ */
244
+ function formatOtherForms(forms, selectedIndex, fmt) {
245
+ const others = forms.filter((_, i) => i !== selectedIndex);
246
+ if (others.length === 0) {
247
+ return;
248
+ }
249
+ fmt.blank();
250
+ fmt.text('Other forms on page:');
251
+ for (const form of others) {
252
+ const fieldCount = form.fields.filter((f) => !f.hidden).length;
253
+ fmt.text(` Form ${form.index}: "${form.name ?? 'Unnamed'}" - ${fieldCount} field(s)`);
254
+ }
255
+ fmt.blank();
256
+ fmt.text('Use --all to see all forms');
257
+ }
258
+ /**
259
+ * Format form discovery result for human-readable display.
260
+ *
261
+ * @param result - Form discovery result
262
+ * @returns Formatted output string
263
+ */
264
+ export function formatFormDiscovery(result) {
265
+ const fmt = new OutputFormatter();
266
+ fmt.text(`FORMS DISCOVERED: ${result.formCount}`);
267
+ fmt.text('═'.repeat(70));
268
+ fmt.blank();
269
+ for (const form of result.forms) {
270
+ formatSingleForm(form, fmt, result.brief);
271
+ fmt.blank();
272
+ }
273
+ if (result.forms.length === 1 && result.formCount > 1) {
274
+ const allForms = [];
275
+ for (let i = 0; i < result.formCount; i++) {
276
+ if (i === result.selectedForm) {
277
+ allForms.push(result.forms[0]);
278
+ }
279
+ else {
280
+ allForms.push({
281
+ index: i,
282
+ name: `Form ${i}`,
283
+ action: null,
284
+ method: 'GET',
285
+ relevanceScore: 0,
286
+ fields: [],
287
+ buttons: [],
288
+ summary: {
289
+ totalFields: 0,
290
+ filledFields: 0,
291
+ emptyFields: 0,
292
+ validFields: 0,
293
+ invalidFields: 0,
294
+ requiredTotal: 0,
295
+ requiredFilled: 0,
296
+ requiredRemaining: 0,
297
+ readyToSubmit: true,
298
+ blockers: [],
299
+ },
300
+ });
301
+ }
302
+ }
303
+ formatOtherForms(allForms, result.selectedForm, fmt);
304
+ }
305
+ fmt.blank();
306
+ fmt.text('Suggested commands:');
307
+ fmt.text(' bdg dom fill <index> "<value>" Fill a field');
308
+ fmt.text(' bdg dom click <index> Click/check a field or button');
309
+ fmt.text(' bdg dom form Refresh to see current state');
310
+ fmt.blank();
311
+ fmt.text('Tip: Re-run "bdg dom form" after clicks that may reveal hidden fields');
312
+ return fmt.build();
313
+ }
314
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../src/ui/formatters/form.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export type LogLevel = 'info' | 'debug';
29
29
  * Log contexts for different components.
30
30
  * Used to prefix log messages with component name.
31
31
  */
32
- export type LogContext = 'bdg' | 'launcher' | 'daemon' | 'worker' | 'client' | 'cleanup' | 'session' | 'chrome' | 'cdp' | 'ipc' | 'http' | 'dialogs' | 'navigation' | 'console' | 'dom' | 'network' | 'diagnostics' | 'readiness' | 'atomic-file' | 'object-expander';
32
+ export type LogContext = 'bdg' | 'launcher' | 'daemon' | 'worker' | 'client' | 'cleanup' | 'session' | 'chrome' | 'cdp' | 'ipc' | 'http' | 'dialogs' | 'navigation' | 'console' | 'dom' | 'network' | 'diagnostics' | 'readiness' | 'atomic-file' | 'object-expander' | 'fetcher';
33
33
  /**
34
34
  * Logger instance with support for different log levels.
35
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/ui/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,KAAK,GACL,KAAK,GACL,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,GACT,KAAK,GACL,SAAS,GACT,aAAa,GACb,WAAW,GACX,aAAa,GACb,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;OAGG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC;;;OAGG;IACH,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAaxD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAEhF"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/ui/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,KAAK,GACL,KAAK,GACL,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,GACT,KAAK,GACL,SAAS,GACT,aAAa,GACb,WAAW,GACX,aAAa,GACb,iBAAiB,GACjB,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;OAGG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC;;;OAGG;IACH,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAaxD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAEhF"}
@@ -5,7 +5,7 @@
5
5
  * By default, only 'info' level logs are shown. Set BDG_DEBUG=1 or use --debug
6
6
  * flag to enable verbose 'debug' level logs.
7
7
  */
8
- import { getErrorMessage } from '../../connection/errors.js';
8
+ import { getErrorMessage } from '../../utils/errors.js';
9
9
  let debugEnabled = false;
10
10
  /**
11
11
  * Enable debug logging globally.
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/ui/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC;AAC1D,CAAC;AA2DD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,QAAkB,OAAO,EAAQ,EAAE;QACtE,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAW,CAAC;IAC7E,MAAM,CAAC,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,OAAe,EAAE,KAAc;IACxE,GAAG,CAAC,KAAK,CAAC,aAAa,OAAO,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/ui/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC;AAC1D,CAAC;AA4DD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,QAAkB,OAAO,EAAQ,EAAE;QACtE,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAW,CAAC;IAC7E,MAAM,CAAC,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,OAAe,EAAE,KAAc;IACxE,GAAG,CAAC,KAAK,CAAC,aAAa,OAAO,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * DOM command messages (bdg dom)
3
+ *
4
+ * User-facing messages for DOM command output and formatting.
5
+ */
6
+ /**
7
+ * Generate resize info message for screenshot output.
8
+ *
9
+ * @param originalTokens - Token count at original size
10
+ * @param finalTokens - Token count after resize
11
+ * @returns Formatted resize info string
12
+ */
13
+ export declare function screenshotResizeInfo(originalTokens: number, finalTokens: number): string;
14
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/ui/messages/dom.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAExF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * DOM command messages (bdg dom)
3
+ *
4
+ * User-facing messages for DOM command output and formatting.
5
+ */
6
+ /**
7
+ * Format token count for display.
8
+ *
9
+ * @param tokens - Token count
10
+ * @returns Formatted string (e.g., "1.6k" or "500")
11
+ */
12
+ function formatTokenCount(tokens) {
13
+ if (tokens >= 1000) {
14
+ return `${(tokens / 1000).toFixed(1)}k`;
15
+ }
16
+ return String(tokens);
17
+ }
18
+ /**
19
+ * Generate resize info message for screenshot output.
20
+ *
21
+ * @param originalTokens - Token count at original size
22
+ * @param finalTokens - Token count after resize
23
+ * @returns Formatted resize info string
24
+ */
25
+ export function screenshotResizeInfo(originalTokens, finalTokens) {
26
+ return `resized: ${formatTokenCount(originalTokens)} → ${formatTokenCount(finalTokens)} tokens`;
27
+ }
28
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/ui/messages/dom.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,cAAsB,EAAE,WAAmB;IAC9E,OAAO,YAAY,gBAAgB,CAAC,cAAc,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC;AAClG,CAAC"}