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
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Shell Detection Unit Tests
3
+ *
4
+ * Tests shell quote damage detection for selectors and scripts.
5
+ *
6
+ * Following testing philosophy:
7
+ * - Test the BEHAVIOR: "Detects damaged input, provides actionable suggestions"
8
+ * - Test the PROPERTY: "Never throws, always returns valid result"
9
+ * - No mocking needed - pure utility functions
10
+ */
11
+ import assert from 'node:assert/strict';
12
+ import { describe, it } from 'node:test';
13
+ import { detectSelectorQuoteDamage, detectScriptQuoteDamage, hasAttributeSelector, } from '../../utils/shellDetection.js';
14
+ void describe('Shell Detection Utilities', () => {
15
+ void describe('hasAttributeSelector()', () => {
16
+ void it('returns true for attribute selectors', () => {
17
+ assert.equal(hasAttributeSelector('[data-test=value]'), true);
18
+ assert.equal(hasAttributeSelector('[type=submit]'), true);
19
+ assert.equal(hasAttributeSelector('input[name=email]'), true);
20
+ });
21
+ void it('returns false for simple selectors', () => {
22
+ assert.equal(hasAttributeSelector('#id'), false);
23
+ assert.equal(hasAttributeSelector('.class'), false);
24
+ assert.equal(hasAttributeSelector('button'), false);
25
+ assert.equal(hasAttributeSelector('div.class#id'), false);
26
+ });
27
+ void it('returns true for quoted attribute selectors', () => {
28
+ assert.equal(hasAttributeSelector('[data-test="value"]'), true);
29
+ assert.equal(hasAttributeSelector("[type='submit']"), true);
30
+ });
31
+ });
32
+ void describe('detectSelectorQuoteDamage()', () => {
33
+ void describe('detects damaged selectors', () => {
34
+ void it('detects unquoted attribute value', () => {
35
+ const result = detectSelectorQuoteDamage('[data-test=value]');
36
+ assert.equal(result.damaged, true);
37
+ assert.equal(result.type, 'attribute-selector');
38
+ assert.ok(result.details?.includes('data-test'));
39
+ assert.ok(result.details?.includes('value'));
40
+ assert.ok(result.suggestion?.includes('bdg dom query'));
41
+ });
42
+ void it('detects unquoted type attribute', () => {
43
+ const result = detectSelectorQuoteDamage('[type=submit]');
44
+ assert.equal(result.damaged, true);
45
+ assert.ok(result.details?.includes('type'));
46
+ assert.ok(result.details?.includes('submit'));
47
+ });
48
+ void it('detects nested selector with unquoted attribute', () => {
49
+ const result = detectSelectorQuoteDamage('form [name=email]');
50
+ assert.equal(result.damaged, true);
51
+ assert.ok(result.details?.includes('name'));
52
+ });
53
+ });
54
+ void describe('accepts valid selectors', () => {
55
+ void it('accepts properly quoted double quotes', () => {
56
+ const result = detectSelectorQuoteDamage('[data-test="value"]');
57
+ assert.equal(result.damaged, false);
58
+ });
59
+ void it('accepts properly quoted single quotes', () => {
60
+ const result = detectSelectorQuoteDamage("[data-test='value']");
61
+ assert.equal(result.damaged, false);
62
+ });
63
+ void it('accepts simple selectors without attributes', () => {
64
+ assert.equal(detectSelectorQuoteDamage('#id').damaged, false);
65
+ assert.equal(detectSelectorQuoteDamage('.class').damaged, false);
66
+ assert.equal(detectSelectorQuoteDamage('button').damaged, false);
67
+ assert.equal(detectSelectorQuoteDamage('div > p').damaged, false);
68
+ });
69
+ void it('accepts empty selector', () => {
70
+ const result = detectSelectorQuoteDamage('');
71
+ assert.equal(result.damaged, false);
72
+ });
73
+ });
74
+ void describe('suggestion quality', () => {
75
+ void it('provides two-step discovery path', () => {
76
+ const result = detectSelectorQuoteDamage('[data-test=value]');
77
+ assert.ok(result.suggestion?.includes('bdg dom query'));
78
+ assert.ok(result.suggestion?.includes('bdg dom a11y describe 0'));
79
+ });
80
+ void it('includes original selector in suggestion', () => {
81
+ const selector = '[custom-attr=myvalue]';
82
+ const result = detectSelectorQuoteDamage(selector);
83
+ assert.ok(result.suggestion?.includes(selector));
84
+ });
85
+ });
86
+ });
87
+ void describe('detectScriptQuoteDamage()', () => {
88
+ void describe('detects bare function arguments', () => {
89
+ void it('detects querySelector with bare argument', () => {
90
+ const result = detectScriptQuoteDamage('document.querySelector(input)');
91
+ assert.equal(result.damaged, true);
92
+ assert.equal(result.type, 'unquoted-argument');
93
+ assert.ok(result.details?.includes('querySelector'));
94
+ assert.ok(result.details?.includes('input'));
95
+ });
96
+ void it('detects getElementById with bare argument', () => {
97
+ const result = detectScriptQuoteDamage('document.getElementById(myId)');
98
+ assert.equal(result.damaged, true);
99
+ assert.ok(result.details?.includes('getElementById'));
100
+ assert.ok(result.details?.includes('myId'));
101
+ });
102
+ void it('detects closest with bare argument', () => {
103
+ const result = detectScriptQuoteDamage('element.closest(div)');
104
+ assert.equal(result.damaged, true);
105
+ assert.ok(result.details?.includes('closest'));
106
+ assert.ok(result.details?.includes('div'));
107
+ });
108
+ void it('detects getAttribute with bare argument', () => {
109
+ const result = detectScriptQuoteDamage('el.getAttribute(href)');
110
+ assert.equal(result.damaged, true);
111
+ assert.ok(result.details?.includes('getAttribute'));
112
+ assert.ok(result.details?.includes('href'));
113
+ });
114
+ void it('detects classList.add with bare argument', () => {
115
+ const result = detectScriptQuoteDamage('el.classList.add(active)');
116
+ assert.equal(result.damaged, true);
117
+ assert.ok(result.details?.includes('add'));
118
+ assert.ok(result.details?.includes('active'));
119
+ });
120
+ void it('detects matches with bare argument', () => {
121
+ const result = detectScriptQuoteDamage('element.matches(button)');
122
+ assert.equal(result.damaged, true);
123
+ assert.ok(result.details?.includes('matches'));
124
+ });
125
+ });
126
+ void describe('accepts valid scripts', () => {
127
+ void it('accepts properly quoted strings', () => {
128
+ assert.equal(detectScriptQuoteDamage('document.querySelector("input")').damaged, false);
129
+ assert.equal(detectScriptQuoteDamage("document.querySelector('input')").damaged, false);
130
+ assert.equal(detectScriptQuoteDamage('el.getAttribute("href")').damaged, false);
131
+ });
132
+ void it('accepts scripts without function calls', () => {
133
+ assert.equal(detectScriptQuoteDamage('document.title').damaged, false);
134
+ assert.equal(detectScriptQuoteDamage('window.location.href').damaged, false);
135
+ assert.equal(detectScriptQuoteDamage('1 + 2').damaged, false);
136
+ });
137
+ void it('accepts numeric arguments', () => {
138
+ assert.equal(detectScriptQuoteDamage('array.slice(0, 5)').damaged, false);
139
+ assert.equal(detectScriptQuoteDamage('Math.max(1, 2, 3)').damaged, false);
140
+ });
141
+ void it('accepts empty script', () => {
142
+ const result = detectScriptQuoteDamage('');
143
+ assert.equal(result.damaged, false);
144
+ });
145
+ });
146
+ void describe('suggestion quality', () => {
147
+ void it('provides corrected full expression', () => {
148
+ const result = detectScriptQuoteDamage('document.querySelector(input).value');
149
+ assert.ok(result.suggestion?.includes('document.querySelector("input").value'));
150
+ });
151
+ void it('preserves context around damaged part', () => {
152
+ const result = detectScriptQuoteDamage('element.closest(div).textContent');
153
+ assert.ok(result.suggestion?.includes('element.closest("div").textContent'));
154
+ });
155
+ void it('includes bdg dom eval command', () => {
156
+ const result = detectScriptQuoteDamage('func(arg)');
157
+ assert.ok(result.suggestion?.includes('bdg dom eval'));
158
+ });
159
+ });
160
+ void describe('unexpected identifier fallback', () => {
161
+ void it('detects unexpected identifier error pattern', () => {
162
+ const result = detectScriptQuoteDamage("Unexpected identifier 'foo'");
163
+ assert.equal(result.damaged, true);
164
+ assert.ok(result.suggestion?.includes('single quotes'));
165
+ });
166
+ });
167
+ });
168
+ void describe('Type safety and edge cases', () => {
169
+ void it('never throws for any string input', () => {
170
+ const edgeCases = [
171
+ '',
172
+ ' ',
173
+ '[]',
174
+ '()',
175
+ '[=]',
176
+ 'func()',
177
+ '[[nested]]',
178
+ 'a'.repeat(1000),
179
+ '🚀',
180
+ '\n\t',
181
+ 'null',
182
+ 'undefined',
183
+ ];
184
+ for (const input of edgeCases) {
185
+ assert.doesNotThrow(() => {
186
+ detectSelectorQuoteDamage(input);
187
+ detectScriptQuoteDamage(input);
188
+ hasAttributeSelector(input);
189
+ }, `Should not throw for input: ${JSON.stringify(input)}`);
190
+ }
191
+ });
192
+ void it('always returns valid ShellDamageResult structure', () => {
193
+ const inputs = ['[test=value]', '#simple', 'func(arg)', 'valid()'];
194
+ for (const input of inputs) {
195
+ const selectorResult = detectSelectorQuoteDamage(input);
196
+ const scriptResult = detectScriptQuoteDamage(input);
197
+ assert.equal(typeof selectorResult.damaged, 'boolean');
198
+ assert.equal(typeof scriptResult.damaged, 'boolean');
199
+ if (selectorResult.damaged) {
200
+ assert.equal(typeof selectorResult.details, 'string');
201
+ assert.equal(typeof selectorResult.suggestion, 'string');
202
+ }
203
+ if (scriptResult.damaged) {
204
+ assert.equal(typeof scriptResult.details, 'string');
205
+ assert.equal(typeof scriptResult.suggestion, 'string');
206
+ }
207
+ }
208
+ });
209
+ void it('handles special regex characters safely', () => {
210
+ const specialChars = ['[test.value]', '[test*=value]', '[test^=value]', 'func(a|b)'];
211
+ for (const input of specialChars) {
212
+ assert.doesNotThrow(() => {
213
+ detectSelectorQuoteDamage(input);
214
+ detectScriptQuoteDamage(input);
215
+ });
216
+ }
217
+ });
218
+ });
219
+ });
220
+ //# sourceMappingURL=shellDetection.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shellDetection.unit.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/shellDetection.unit.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,KAAK,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC9C,KAAK,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC3C,KAAK,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,KAAK,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,KAAK,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YAC1D,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAChD,KAAK,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;YAC9C,KAAK,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;gBAC/C,MAAM,MAAM,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;gBAE9D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBAChD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC9C,MAAM,MAAM,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;gBAE1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBAC9D,MAAM,MAAM,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;gBAE9D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;YAC5C,KAAK,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBACpD,MAAM,MAAM,GAAG,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;gBAEhE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBACpD,MAAM,MAAM,GAAG,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;gBAEhE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;gBAC1D,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACrC,MAAM,MAAM,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC;gBAE7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACvC,KAAK,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;gBAC/C,MAAM,MAAM,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;gBAE9D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;gBACxD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;gBACvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC;gBACzC,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBAEnD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAC9C,KAAK,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACpD,KAAK,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;gBACvD,MAAM,MAAM,GAAG,uBAAuB,CAAC,+BAA+B,CAAC,CAAC;gBAExE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;gBAC/C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;gBACxD,MAAM,MAAM,GAAG,uBAAuB,CAAC,+BAA+B,CAAC,CAAC;gBAExE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACtD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;gBACjD,MAAM,MAAM,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;gBAE/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;gBACtD,MAAM,MAAM,GAAG,uBAAuB,CAAC,uBAAuB,CAAC,CAAC;gBAEhE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;gBACpD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;gBACvD,MAAM,MAAM,GAAG,uBAAuB,CAAC,0BAA0B,CAAC,CAAC;gBAEnE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;gBACjD,MAAM,MAAM,GAAG,uBAAuB,CAAC,yBAAyB,CAAC,CAAC;gBAElE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC1C,KAAK,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC9C,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,iCAAiC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACxF,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,iCAAiC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACxF,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBACrD,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvE,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC7E,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;gBACxC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC1E,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBACnC,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;gBAE3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACvC,KAAK,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;gBACjD,MAAM,MAAM,GAAG,uBAAuB,CAAC,qCAAqC,CAAC,CAAC;gBAE9E,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBACpD,MAAM,MAAM,GAAG,uBAAuB,CAAC,kCAAkC,CAAC,CAAC;gBAE3E,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YAEH,KAAK,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;gBAC5C,MAAM,MAAM,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;gBAEpD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACnD,KAAK,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;gBAC1D,MAAM,MAAM,GAAG,uBAAuB,CAAC,6BAA6B,CAAC,CAAC;gBAEtE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC/C,KAAK,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAChD,MAAM,SAAS,GAAG;gBAChB,EAAE;gBACF,GAAG;gBACH,IAAI;gBACJ,IAAI;gBACJ,KAAK;gBACL,QAAQ;gBACR,YAAY;gBACZ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChB,IAAI;gBACJ,MAAM;gBACN,MAAM;gBACN,WAAW;aACZ,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,YAAY,CACjB,GAAG,EAAE;oBACH,yBAAyB,CAAC,KAAK,CAAC,CAAC;oBACjC,uBAAuB,CAAC,KAAK,CAAC,CAAC;oBAC/B,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,EACD,+BAA+B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CACvD,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC/D,MAAM,MAAM,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YAEnE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,cAAc,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBAEpD,MAAM,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACvD,MAAM,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAErD,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC3B,MAAM,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACtD,MAAM,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC3D,CAAC;gBAED,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;oBACzB,MAAM,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACpD,MAAM,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACtD,MAAM,YAAY,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;YAErF,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACjC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;oBACvB,yBAAyB,CAAC,KAAK,CAAC,CAAC;oBACjC,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Async utilities for common patterns.
3
+ */
4
+ /**
5
+ * Delay execution for a specified duration.
6
+ *
7
+ * @param ms - Milliseconds to delay
8
+ */
9
+ export declare function delay(ms: number): Promise<void>;
10
+ //# sourceMappingURL=async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Async utilities for common patterns.
3
+ */
4
+ /**
5
+ * Delay execution for a specified duration.
6
+ *
7
+ * @param ms - Milliseconds to delay
8
+ */
9
+ export function delay(ms) {
10
+ return new Promise((resolve) => setTimeout(resolve, ms));
11
+ }
12
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import * as crypto from 'crypto';
2
2
  import * as fs from 'fs';
3
- import { getErrorMessage } from '../connection/errors.js';
4
3
  import { createLogger } from '../ui/logging/index.js';
4
+ import { getErrorMessage } from '../utils/errors.js';
5
5
  const log = createLogger('atomic-file');
6
6
  /**
7
7
  * Atomic file operations using tmp-file-then-rename pattern.
@@ -1 +1 @@
1
- {"version":3,"file":"atomicFile.js","sourceRoot":"","sources":["../../src/utils/atomicFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atomicFile.js","sourceRoot":"","sources":["../../src/utils/atomicFile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"decisionTrees.d.ts","sourceRoot":"","sources":["../../src/utils/decisionTrees.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA2JvD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAElE"}
1
+ {"version":3,"file":"decisionTrees.d.ts","sourceRoot":"","sources":["../../src/utils/decisionTrees.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgKvD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAElE"}
@@ -11,6 +11,11 @@ export const DECISION_TREES = {
11
11
  dom_interaction: {
12
12
  intent: 'Interact with page elements and DOM',
13
13
  steps: [
14
+ {
15
+ question: 'Need to discover forms with semantic labels?',
16
+ yesCommand: 'dom form',
17
+ noAction: 'next',
18
+ },
14
19
  {
15
20
  question: 'Need to capture a screenshot?',
16
21
  yesCommand: 'dom screenshot',
@@ -1 +1 @@
1
- {"version":3,"file":"decisionTrees.js","sourceRoot":"","sources":["../../src/utils/decisionTrees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decisionTrees.js","sourceRoot":"","sources":["../../src/utils/decisionTrees.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"errorMapping.d.ts","sourceRoot":"","sources":["../../src/utils/errorMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,MAAM,CAoBvE;AASD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAgB1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAErE"}
1
+ {"version":3,"file":"errorMapping.d.ts","sourceRoot":"","sources":["../../src/utils/errorMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,MAAM,CA0BvE;AASD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAgB1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAErE"}
@@ -34,10 +34,13 @@ export function getExitCodeForIPCError(errorCode) {
34
34
  case IPCErrorCode.CDP_TIMEOUT:
35
35
  return EXIT_CODES.CDP_TIMEOUT;
36
36
  case IPCErrorCode.SESSION_KILL_FAILED:
37
+ return EXIT_CODES.SESSION_FILE_ERROR;
37
38
  case IPCErrorCode.WORKER_START_FAILED:
39
+ return EXIT_CODES.CDP_CONNECTION_FAILURE;
38
40
  case IPCErrorCode.DAEMON_ERROR:
41
+ return EXIT_CODES.SOFTWARE_ERROR;
39
42
  case undefined:
40
- return EXIT_CODES.UNHANDLED_EXCEPTION;
43
+ return EXIT_CODES.SOFTWARE_ERROR;
41
44
  }
42
45
  }
43
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errorMapping.js","sourceRoot":"","sources":["../../src/utils/errorMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAwB;IAC7D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,YAAY,CAAC,UAAU;YAC1B,OAAO,UAAU,CAAC,kBAAkB,CAAC;QAEvC,KAAK,YAAY,CAAC,uBAAuB;YACvC,OAAO,UAAU,CAAC,uBAAuB,CAAC;QAE5C,KAAK,YAAY,CAAC,oBAAoB;YACpC,OAAO,UAAU,CAAC,qBAAqB,CAAC;QAE1C,KAAK,YAAY,CAAC,WAAW;YAC3B,OAAO,UAAU,CAAC,WAAW,CAAC;QAEhC,KAAK,YAAY,CAAC,mBAAmB,CAAC;QACtC,KAAK,YAAY,CAAC,mBAAmB,CAAC;QACtC,KAAK,YAAY,CAAC,YAAY,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,mBAAmB,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,YAAoB;IACnD,OAAO,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,6BAA6B,CAAC,YAAoB;IAChE,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAEhD,IAAI,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,kBAAkB,CAAC;IACvC,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/C,OAAO,UAAU,CAAC,kBAAkB,CAAC;IACvC,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,WAAW,CAAC;IAChC,CAAC;IAED,OAAO,UAAU,CAAC,kBAAkB,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IAC1D,OAAO,uBAAuB,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"errorMapping.js","sourceRoot":"","sources":["../../src/utils/errorMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAwB;IAC7D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,YAAY,CAAC,UAAU;YAC1B,OAAO,UAAU,CAAC,kBAAkB,CAAC;QAEvC,KAAK,YAAY,CAAC,uBAAuB;YACvC,OAAO,UAAU,CAAC,uBAAuB,CAAC;QAE5C,KAAK,YAAY,CAAC,oBAAoB;YACpC,OAAO,UAAU,CAAC,qBAAqB,CAAC;QAE1C,KAAK,YAAY,CAAC,WAAW;YAC3B,OAAO,UAAU,CAAC,WAAW,CAAC;QAEhC,KAAK,YAAY,CAAC,mBAAmB;YACnC,OAAO,UAAU,CAAC,kBAAkB,CAAC;QAEvC,KAAK,YAAY,CAAC,mBAAmB;YACnC,OAAO,UAAU,CAAC,sBAAsB,CAAC;QAE3C,KAAK,YAAY,CAAC,YAAY;YAC5B,OAAO,UAAU,CAAC,cAAc,CAAC;QAEnC,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,cAAc,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,YAAoB;IACnD,OAAO,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,6BAA6B,CAAC,YAAoB;IAChE,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAEhD,IAAI,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,kBAAkB,CAAC;IACvC,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/C,OAAO,UAAU,CAAC,kBAAkB,CAAC;IACvC,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,WAAW,CAAC;IAChC,CAAC;IAED,OAAO,UAAU,CAAC,kBAAkB,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IAC1D,OAAO,uBAAuB,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC"}
@@ -32,39 +32,40 @@
32
32
  * **These values are stable API** - use confidently in automation scripts.
33
33
  */
34
34
  export declare const EXIT_CODES: {
35
- /** Command completed successfully */
36
35
  readonly SUCCESS: 0;
37
- /** Generic failure (use specific codes when possible) */
38
36
  readonly GENERIC_FAILURE: 1;
39
- /** Invalid URL format or unreachable URL */
40
37
  readonly INVALID_URL: 80;
41
- /** Invalid command-line arguments or options */
42
38
  readonly INVALID_ARGUMENTS: 81;
43
- /** Insufficient permissions for operation */
44
39
  readonly PERMISSION_DENIED: 82;
45
- /** Requested resource not found (session, file, etc.) */
46
40
  readonly RESOURCE_NOT_FOUND: 83;
47
- /** Resource already exists (duplicate session, etc.) */
48
41
  readonly RESOURCE_ALREADY_EXISTS: 84;
49
- /** Resource is locked or busy */
50
42
  readonly RESOURCE_BUSY: 85;
51
- /** Daemon already running when trying to start */
52
43
  readonly DAEMON_ALREADY_RUNNING: 86;
53
- /** Cache invalidated by navigation or DOM changes */
54
44
  readonly STALE_CACHE: 87;
55
- /** Chrome browser failed to launch */
45
+ readonly NO_FORMS_FOUND: 88;
46
+ readonly FORM_IN_IFRAME: 89;
56
47
  readonly CHROME_LAUNCH_FAILURE: 100;
57
- /** CDP connection failed */
58
48
  readonly CDP_CONNECTION_FAILURE: 101;
59
- /** CDP operation timed out */
60
49
  readonly CDP_TIMEOUT: 102;
61
- /** Session file read/write error */
62
50
  readonly SESSION_FILE_ERROR: 103;
63
- /** Unhandled exception in code */
64
51
  readonly UNHANDLED_EXCEPTION: 104;
65
- /** Signal handler error */
66
52
  readonly SIGNAL_HANDLER_ERROR: 105;
67
- /** Generic software error (use specific codes when possible) */
68
53
  readonly SOFTWARE_ERROR: 110;
69
54
  };
55
+ /**
56
+ * Exit code registry entry with code, name, and description.
57
+ */
58
+ interface ExitCodeEntry {
59
+ readonly code: number;
60
+ readonly name: string;
61
+ readonly description: string;
62
+ }
63
+ /**
64
+ * Exit code registry - provides documentation for all exit codes.
65
+ *
66
+ * This registry is derived from EXIT_CODES to ensure consistency.
67
+ * Used by help --json for machine-readable documentation.
68
+ */
69
+ export declare const EXIT_CODE_REGISTRY: readonly ExitCodeEntry[];
70
+ export {};
70
71
  //# sourceMappingURL=exitCodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exitCodes.d.ts","sourceRoot":"","sources":["../../src/utils/exitCodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;GAIG;AACH,eAAO,MAAM,UAAU;IACrB,qCAAqC;;IAGrC,yDAAyD;;IAGzD,4CAA4C;;IAG5C,gDAAgD;;IAGhD,6CAA6C;;IAG7C,yDAAyD;;IAGzD,wDAAwD;;IAGxD,iCAAiC;;IAGjC,kDAAkD;;IAGlD,qDAAqD;;IAGrD,sCAAsC;;IAGtC,4BAA4B;;IAG5B,8BAA8B;;IAG9B,oCAAoC;;IAGpC,kCAAkC;;IAGlC,2BAA2B;;IAG3B,gEAAgE;;CAExD,CAAC"}
1
+ {"version":3,"file":"exitCodes.d.ts","sourceRoot":"","sources":["../../src/utils/exitCodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;CAoBb,CAAC;AAEX;;GAEG;AACH,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,aAAa,EAwFtD,CAAC"}
@@ -32,39 +32,119 @@
32
32
  * **These values are stable API** - use confidently in automation scripts.
33
33
  */
34
34
  export const EXIT_CODES = {
35
- /** Command completed successfully */
36
35
  SUCCESS: 0,
37
- /** Generic failure (use specific codes when possible) */
38
36
  GENERIC_FAILURE: 1,
39
- /** Invalid URL format or unreachable URL */
40
37
  INVALID_URL: 80,
41
- /** Invalid command-line arguments or options */
42
38
  INVALID_ARGUMENTS: 81,
43
- /** Insufficient permissions for operation */
44
39
  PERMISSION_DENIED: 82,
45
- /** Requested resource not found (session, file, etc.) */
46
40
  RESOURCE_NOT_FOUND: 83,
47
- /** Resource already exists (duplicate session, etc.) */
48
41
  RESOURCE_ALREADY_EXISTS: 84,
49
- /** Resource is locked or busy */
50
42
  RESOURCE_BUSY: 85,
51
- /** Daemon already running when trying to start */
52
43
  DAEMON_ALREADY_RUNNING: 86,
53
- /** Cache invalidated by navigation or DOM changes */
54
44
  STALE_CACHE: 87,
55
- /** Chrome browser failed to launch */
45
+ NO_FORMS_FOUND: 88,
46
+ FORM_IN_IFRAME: 89,
56
47
  CHROME_LAUNCH_FAILURE: 100,
57
- /** CDP connection failed */
58
48
  CDP_CONNECTION_FAILURE: 101,
59
- /** CDP operation timed out */
60
49
  CDP_TIMEOUT: 102,
61
- /** Session file read/write error */
62
50
  SESSION_FILE_ERROR: 103,
63
- /** Unhandled exception in code */
64
51
  UNHANDLED_EXCEPTION: 104,
65
- /** Signal handler error */
66
52
  SIGNAL_HANDLER_ERROR: 105,
67
- /** Generic software error (use specific codes when possible) */
68
53
  SOFTWARE_ERROR: 110,
69
54
  };
55
+ /**
56
+ * Exit code registry - provides documentation for all exit codes.
57
+ *
58
+ * This registry is derived from EXIT_CODES to ensure consistency.
59
+ * Used by help --json for machine-readable documentation.
60
+ */
61
+ export const EXIT_CODE_REGISTRY = [
62
+ { code: EXIT_CODES.SUCCESS, name: 'SUCCESS', description: 'Operation completed successfully' },
63
+ {
64
+ code: EXIT_CODES.GENERIC_FAILURE,
65
+ name: 'GENERIC_FAILURE',
66
+ description: 'Generic failure (use specific codes when possible)',
67
+ },
68
+ {
69
+ code: EXIT_CODES.INVALID_URL,
70
+ name: 'INVALID_URL',
71
+ description: 'Invalid URL format or unreachable URL',
72
+ },
73
+ {
74
+ code: EXIT_CODES.INVALID_ARGUMENTS,
75
+ name: 'INVALID_ARGUMENTS',
76
+ description: 'Invalid command-line arguments or options',
77
+ },
78
+ {
79
+ code: EXIT_CODES.PERMISSION_DENIED,
80
+ name: 'PERMISSION_DENIED',
81
+ description: 'Insufficient permissions for operation',
82
+ },
83
+ {
84
+ code: EXIT_CODES.RESOURCE_NOT_FOUND,
85
+ name: 'RESOURCE_NOT_FOUND',
86
+ description: 'Requested resource not found (session, file, etc.)',
87
+ },
88
+ {
89
+ code: EXIT_CODES.RESOURCE_ALREADY_EXISTS,
90
+ name: 'RESOURCE_ALREADY_EXISTS',
91
+ description: 'Resource already exists (duplicate session, etc.)',
92
+ },
93
+ {
94
+ code: EXIT_CODES.RESOURCE_BUSY,
95
+ name: 'RESOURCE_BUSY',
96
+ description: 'Resource is locked or busy',
97
+ },
98
+ {
99
+ code: EXIT_CODES.DAEMON_ALREADY_RUNNING,
100
+ name: 'DAEMON_ALREADY_RUNNING',
101
+ description: 'Daemon is already running',
102
+ },
103
+ {
104
+ code: EXIT_CODES.STALE_CACHE,
105
+ name: 'STALE_CACHE',
106
+ description: 'Cache invalidated by navigation or DOM changes',
107
+ },
108
+ {
109
+ code: EXIT_CODES.NO_FORMS_FOUND,
110
+ name: 'NO_FORMS_FOUND',
111
+ description: 'No forms discovered on the page',
112
+ },
113
+ {
114
+ code: EXIT_CODES.FORM_IN_IFRAME,
115
+ name: 'FORM_IN_IFRAME',
116
+ description: 'Form is inside an iframe (cross-origin or same-origin)',
117
+ },
118
+ {
119
+ code: EXIT_CODES.CHROME_LAUNCH_FAILURE,
120
+ name: 'CHROME_LAUNCH_FAILURE',
121
+ description: 'Chrome browser failed to launch',
122
+ },
123
+ {
124
+ code: EXIT_CODES.CDP_CONNECTION_FAILURE,
125
+ name: 'CDP_CONNECTION_FAILURE',
126
+ description: 'Failed to connect to Chrome DevTools Protocol',
127
+ },
128
+ { code: EXIT_CODES.CDP_TIMEOUT, name: 'CDP_TIMEOUT', description: 'CDP operation timed out' },
129
+ {
130
+ code: EXIT_CODES.SESSION_FILE_ERROR,
131
+ name: 'SESSION_FILE_ERROR',
132
+ description: 'Session file read/write error',
133
+ },
134
+ {
135
+ code: EXIT_CODES.UNHANDLED_EXCEPTION,
136
+ name: 'UNHANDLED_EXCEPTION',
137
+ description: 'Unhandled exception in code',
138
+ },
139
+ {
140
+ code: EXIT_CODES.SIGNAL_HANDLER_ERROR,
141
+ name: 'SIGNAL_HANDLER_ERROR',
142
+ description: 'Signal handler error',
143
+ },
144
+ {
145
+ code: EXIT_CODES.SOFTWARE_ERROR,
146
+ name: 'SOFTWARE_ERROR',
147
+ description: 'Generic software error (use specific codes when possible)',
148
+ },
149
+ ];
70
150
  //# sourceMappingURL=exitCodes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../../src/utils/exitCodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,qCAAqC;IACrC,OAAO,EAAE,CAAC;IAEV,yDAAyD;IACzD,eAAe,EAAE,CAAC;IAElB,4CAA4C;IAC5C,WAAW,EAAE,EAAE;IAEf,gDAAgD;IAChD,iBAAiB,EAAE,EAAE;IAErB,6CAA6C;IAC7C,iBAAiB,EAAE,EAAE;IAErB,yDAAyD;IACzD,kBAAkB,EAAE,EAAE;IAEtB,wDAAwD;IACxD,uBAAuB,EAAE,EAAE;IAE3B,iCAAiC;IACjC,aAAa,EAAE,EAAE;IAEjB,kDAAkD;IAClD,sBAAsB,EAAE,EAAE;IAE1B,qDAAqD;IACrD,WAAW,EAAE,EAAE;IAEf,sCAAsC;IACtC,qBAAqB,EAAE,GAAG;IAE1B,4BAA4B;IAC5B,sBAAsB,EAAE,GAAG;IAE3B,8BAA8B;IAC9B,WAAW,EAAE,GAAG;IAEhB,oCAAoC;IACpC,kBAAkB,EAAE,GAAG;IAEvB,kCAAkC;IAClC,mBAAmB,EAAE,GAAG;IAExB,2BAA2B;IAC3B,oBAAoB,EAAE,GAAG;IAEzB,gEAAgE;IAChE,cAAc,EAAE,GAAG;CACX,CAAC"}
1
+ {"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../../src/utils/exitCodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Shell quote damage detection utilities.
3
+ *
4
+ * Detects when shell quote handling has corrupted selectors or scripts,
5
+ * providing actionable suggestions for recovery.
6
+ */
7
+ export interface ShellDamageResult {
8
+ damaged: boolean;
9
+ type?: 'attribute-selector' | 'unquoted-argument';
10
+ details?: string;
11
+ suggestion?: string;
12
+ }
13
+ /**
14
+ * Checks if a selector contains attribute syntax.
15
+ *
16
+ * @param selector - CSS selector to check
17
+ * @returns True if selector contains attribute syntax
18
+ */
19
+ export declare function hasAttributeSelector(selector: string): boolean;
20
+ /**
21
+ * Detects shell quote damage in CSS selectors.
22
+ *
23
+ * @param selector - The selector as received by the command
24
+ * @returns Detection result with details and suggestions
25
+ */
26
+ export declare function detectSelectorQuoteDamage(selector: string): ShellDamageResult;
27
+ /**
28
+ * Detects shell quote damage in JavaScript expressions.
29
+ *
30
+ * @param script - The script as received by the command
31
+ * @returns Detection result with details and suggestions
32
+ */
33
+ export declare function detectScriptQuoteDamage(script: string): ShellDamageResult;
34
+ //# sourceMappingURL=shellDetection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shellDetection.d.ts","sourceRoot":"","sources":["../../src/utils/shellDetection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CAAC;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAM7E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAOzE"}