@everydaydevopsio/pilot 0.5.2 → 0.6.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 (280) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/CLAUDE.md +7 -7
  3. package/README.md +108 -53
  4. package/dist/browser/browser-manager.d.ts +60 -0
  5. package/dist/browser/browser-manager.d.ts.map +1 -0
  6. package/dist/browser/browser-manager.js +348 -0
  7. package/dist/browser/browser-manager.js.map +1 -0
  8. package/dist/browser/chrome-launcher.d.ts +30 -0
  9. package/dist/browser/chrome-launcher.d.ts.map +1 -0
  10. package/dist/browser/chrome-launcher.js +217 -0
  11. package/dist/browser/chrome-launcher.js.map +1 -0
  12. package/dist/browser/connection.d.ts +23 -0
  13. package/dist/browser/connection.d.ts.map +1 -0
  14. package/dist/browser/connection.js +53 -0
  15. package/dist/browser/connection.js.map +1 -0
  16. package/dist/browser/events.d.ts +9 -0
  17. package/dist/browser/events.d.ts.map +1 -0
  18. package/dist/browser/events.js +99 -0
  19. package/dist/browser/events.js.map +1 -0
  20. package/dist/browser/index.d.ts +4 -0
  21. package/dist/browser/index.d.ts.map +1 -0
  22. package/dist/browser/index.js +4 -0
  23. package/dist/browser/index.js.map +1 -0
  24. package/dist/browser/inspect/element-ref.d.ts +23 -0
  25. package/dist/browser/inspect/element-ref.d.ts.map +1 -0
  26. package/dist/browser/inspect/element-ref.js +52 -0
  27. package/dist/browser/inspect/element-ref.js.map +1 -0
  28. package/dist/browser/inspect/snapshot.d.ts +11 -0
  29. package/dist/browser/inspect/snapshot.d.ts.map +1 -0
  30. package/dist/browser/inspect/snapshot.js +282 -0
  31. package/dist/browser/inspect/snapshot.js.map +1 -0
  32. package/dist/browser/inspect/styles.d.ts +45 -0
  33. package/dist/browser/inspect/styles.d.ts.map +1 -0
  34. package/dist/browser/inspect/styles.js +190 -0
  35. package/dist/browser/inspect/styles.js.map +1 -0
  36. package/dist/browser/inspect/types.d.ts +35 -0
  37. package/dist/browser/inspect/types.d.ts.map +1 -0
  38. package/dist/browser/inspect/types.js +2 -0
  39. package/dist/browser/inspect/types.js.map +1 -0
  40. package/dist/browser/interaction/dialogs.d.ts +18 -0
  41. package/dist/browser/interaction/dialogs.d.ts.map +1 -0
  42. package/dist/browser/interaction/dialogs.js +35 -0
  43. package/dist/browser/interaction/dialogs.js.map +1 -0
  44. package/dist/browser/interaction/downloads.d.ts +23 -0
  45. package/dist/browser/interaction/downloads.d.ts.map +1 -0
  46. package/dist/browser/interaction/downloads.js +87 -0
  47. package/dist/browser/interaction/downloads.js.map +1 -0
  48. package/dist/browser/interaction/events.d.ts +17 -0
  49. package/dist/browser/interaction/events.d.ts.map +1 -0
  50. package/dist/browser/interaction/events.js +66 -0
  51. package/dist/browser/interaction/events.js.map +1 -0
  52. package/dist/browser/interaction/ref-resolver.d.ts +18 -0
  53. package/dist/browser/interaction/ref-resolver.d.ts.map +1 -0
  54. package/dist/browser/interaction/ref-resolver.js +32 -0
  55. package/dist/browser/interaction/ref-resolver.js.map +1 -0
  56. package/dist/browser/interaction/uploads.d.ts +4 -0
  57. package/dist/browser/interaction/uploads.d.ts.map +1 -0
  58. package/dist/browser/interaction/uploads.js +43 -0
  59. package/dist/browser/interaction/uploads.js.map +1 -0
  60. package/dist/browser/network/network-buffer.d.ts +19 -0
  61. package/dist/browser/network/network-buffer.d.ts.map +1 -0
  62. package/dist/browser/network/network-buffer.js +118 -0
  63. package/dist/browser/network/network-buffer.js.map +1 -0
  64. package/dist/browser/network/network-monitor.d.ts +8 -0
  65. package/dist/browser/network/network-monitor.d.ts.map +1 -0
  66. package/dist/browser/network/network-monitor.js +85 -0
  67. package/dist/browser/network/network-monitor.js.map +1 -0
  68. package/dist/browser/network/redaction.d.ts +3 -0
  69. package/dist/browser/network/redaction.d.ts.map +1 -0
  70. package/dist/browser/network/redaction.js +36 -0
  71. package/dist/browser/network/redaction.js.map +1 -0
  72. package/dist/browser/network/types.d.ts +45 -0
  73. package/dist/browser/network/types.d.ts.map +1 -0
  74. package/dist/browser/network/types.js +2 -0
  75. package/dist/browser/network/types.js.map +1 -0
  76. package/dist/browser/performance/analyze.d.ts +5 -0
  77. package/dist/browser/performance/analyze.d.ts.map +1 -0
  78. package/dist/browser/performance/analyze.js +230 -0
  79. package/dist/browser/performance/analyze.js.map +1 -0
  80. package/dist/browser/performance/trace.d.ts +10 -0
  81. package/dist/browser/performance/trace.d.ts.map +1 -0
  82. package/dist/browser/performance/trace.js +38 -0
  83. package/dist/browser/performance/trace.js.map +1 -0
  84. package/dist/browser/performance/types.d.ts +31 -0
  85. package/dist/browser/performance/types.d.ts.map +1 -0
  86. package/dist/browser/performance/types.js +2 -0
  87. package/dist/browser/performance/types.js.map +1 -0
  88. package/dist/browser/security/origins.d.ts +18 -0
  89. package/dist/browser/security/origins.d.ts.map +1 -0
  90. package/dist/browser/security/origins.js +84 -0
  91. package/dist/browser/security/origins.js.map +1 -0
  92. package/dist/browser/tabs.d.ts +15 -0
  93. package/dist/browser/tabs.d.ts.map +1 -0
  94. package/dist/browser/tabs.js +71 -0
  95. package/dist/browser/tabs.js.map +1 -0
  96. package/dist/browser/types.d.ts +31 -0
  97. package/dist/browser/types.d.ts.map +1 -0
  98. package/dist/browser/types.js +2 -0
  99. package/dist/browser/types.js.map +1 -0
  100. package/dist/browser.d.ts +2 -99
  101. package/dist/browser.d.ts.map +1 -1
  102. package/dist/browser.js +3 -653
  103. package/dist/browser.js.map +1 -1
  104. package/dist/commands/check.d.ts +17 -0
  105. package/dist/commands/check.d.ts.map +1 -0
  106. package/dist/commands/check.js +38 -0
  107. package/dist/commands/check.js.map +1 -0
  108. package/dist/commands/click.d.ts +3 -1
  109. package/dist/commands/click.d.ts.map +1 -1
  110. package/dist/commands/click.js +16 -4
  111. package/dist/commands/click.js.map +1 -1
  112. package/dist/commands/connect.d.ts +14 -0
  113. package/dist/commands/connect.d.ts.map +1 -0
  114. package/dist/commands/connect.js +19 -0
  115. package/dist/commands/connect.js.map +1 -0
  116. package/dist/commands/dialog.d.ts +19 -0
  117. package/dist/commands/dialog.d.ts.map +1 -0
  118. package/dist/commands/dialog.js +51 -0
  119. package/dist/commands/dialog.js.map +1 -0
  120. package/dist/commands/downloads.d.ts +30 -0
  121. package/dist/commands/downloads.d.ts.map +1 -0
  122. package/dist/commands/downloads.js +66 -0
  123. package/dist/commands/downloads.js.map +1 -0
  124. package/dist/commands/fill.d.ts +16 -0
  125. package/dist/commands/fill.d.ts.map +1 -0
  126. package/dist/commands/fill.js +15 -0
  127. package/dist/commands/fill.js.map +1 -0
  128. package/dist/commands/find.d.ts +14 -0
  129. package/dist/commands/find.d.ts.map +1 -0
  130. package/dist/commands/find.js +26 -0
  131. package/dist/commands/find.js.map +1 -0
  132. package/dist/commands/hover.d.ts +13 -0
  133. package/dist/commands/hover.d.ts.map +1 -0
  134. package/dist/commands/hover.js +24 -0
  135. package/dist/commands/hover.js.map +1 -0
  136. package/dist/commands/navigate.d.ts.map +1 -1
  137. package/dist/commands/navigate.js +13 -0
  138. package/dist/commands/navigate.js.map +1 -1
  139. package/dist/commands/network.d.ts +33 -0
  140. package/dist/commands/network.d.ts.map +1 -0
  141. package/dist/commands/network.js +84 -0
  142. package/dist/commands/network.js.map +1 -0
  143. package/dist/commands/performance.d.ts +12 -0
  144. package/dist/commands/performance.d.ts.map +1 -0
  145. package/dist/commands/performance.js +26 -0
  146. package/dist/commands/performance.js.map +1 -0
  147. package/dist/commands/press_key.d.ts +10 -0
  148. package/dist/commands/press_key.d.ts.map +1 -0
  149. package/dist/commands/press_key.js +103 -0
  150. package/dist/commands/press_key.js.map +1 -0
  151. package/dist/commands/scroll.d.ts +21 -0
  152. package/dist/commands/scroll.d.ts.map +1 -0
  153. package/dist/commands/scroll.js +54 -0
  154. package/dist/commands/scroll.js.map +1 -0
  155. package/dist/commands/select.d.ts +18 -0
  156. package/dist/commands/select.d.ts.map +1 -0
  157. package/dist/commands/select.js +53 -0
  158. package/dist/commands/select.js.map +1 -0
  159. package/dist/commands/snapshot.d.ts +9 -0
  160. package/dist/commands/snapshot.d.ts.map +1 -0
  161. package/dist/commands/snapshot.js +7 -0
  162. package/dist/commands/snapshot.js.map +1 -0
  163. package/dist/commands/styles.d.ts +13 -0
  164. package/dist/commands/styles.d.ts.map +1 -0
  165. package/dist/commands/styles.js +7 -0
  166. package/dist/commands/styles.js.map +1 -0
  167. package/dist/commands/type.d.ts +3 -1
  168. package/dist/commands/type.d.ts.map +1 -1
  169. package/dist/commands/type.js +11 -2
  170. package/dist/commands/type.js.map +1 -1
  171. package/dist/commands/upload.d.ts +12 -0
  172. package/dist/commands/upload.d.ts.map +1 -0
  173. package/dist/commands/upload.js +13 -0
  174. package/dist/commands/upload.js.map +1 -0
  175. package/dist/mcp/console-buffer.d.ts +9 -0
  176. package/dist/mcp/console-buffer.d.ts.map +1 -1
  177. package/dist/mcp/console-buffer.js.map +1 -1
  178. package/dist/mcp/server.d.ts +10 -0
  179. package/dist/mcp/server.d.ts.map +1 -1
  180. package/dist/mcp/server.js +63 -2
  181. package/dist/mcp/server.js.map +1 -1
  182. package/dist/mcp/tools/browser.d.ts.map +1 -1
  183. package/dist/mcp/tools/browser.js +99 -8
  184. package/dist/mcp/tools/browser.js.map +1 -1
  185. package/dist/mcp/tools/connect.d.ts +5 -0
  186. package/dist/mcp/tools/connect.d.ts.map +1 -0
  187. package/dist/mcp/tools/connect.js +48 -0
  188. package/dist/mcp/tools/connect.js.map +1 -0
  189. package/dist/mcp/tools/files.d.ts +4 -0
  190. package/dist/mcp/tools/files.d.ts.map +1 -0
  191. package/dist/mcp/tools/files.js +85 -0
  192. package/dist/mcp/tools/files.js.map +1 -0
  193. package/dist/mcp/tools/interaction.d.ts +4 -0
  194. package/dist/mcp/tools/interaction.d.ts.map +1 -0
  195. package/dist/mcp/tools/interaction.js +176 -0
  196. package/dist/mcp/tools/interaction.js.map +1 -0
  197. package/dist/mcp/tools/names.d.ts +1 -1
  198. package/dist/mcp/tools/names.d.ts.map +1 -1
  199. package/dist/mcp/tools/names.js +19 -1
  200. package/dist/mcp/tools/names.js.map +1 -1
  201. package/dist/mcp/tools/network.d.ts +4 -0
  202. package/dist/mcp/tools/network.d.ts.map +1 -0
  203. package/dist/mcp/tools/network.js +68 -0
  204. package/dist/mcp/tools/network.js.map +1 -0
  205. package/dist/mcp/tools/performance.d.ts +4 -0
  206. package/dist/mcp/tools/performance.d.ts.map +1 -0
  207. package/dist/mcp/tools/performance.js +26 -0
  208. package/dist/mcp/tools/performance.js.map +1 -0
  209. package/dist/mcp/tools/runtime.d.ts +4 -0
  210. package/dist/mcp/tools/runtime.d.ts.map +1 -0
  211. package/dist/mcp/tools/runtime.js +128 -0
  212. package/dist/mcp/tools/runtime.js.map +1 -0
  213. package/dist/mcp/tools/snapshot.d.ts +4 -0
  214. package/dist/mcp/tools/snapshot.d.ts.map +1 -0
  215. package/dist/mcp/tools/snapshot.js +42 -0
  216. package/dist/mcp/tools/snapshot.js.map +1 -0
  217. package/dist/mcp/tools/styles.d.ts +4 -0
  218. package/dist/mcp/tools/styles.d.ts.map +1 -0
  219. package/dist/mcp/tools/styles.js +27 -0
  220. package/dist/mcp/tools/styles.js.map +1 -0
  221. package/dist/util/config.d.ts.map +1 -1
  222. package/dist/util/config.js +3 -2
  223. package/dist/util/config.js.map +1 -1
  224. package/package.json +3 -3
  225. package/src/browser/browser-manager.ts +457 -0
  226. package/src/browser/chrome-launcher.ts +271 -0
  227. package/src/browser/connection.ts +84 -0
  228. package/src/browser/events.ts +121 -0
  229. package/src/browser/index.ts +20 -0
  230. package/src/browser/inspect/element-ref.ts +68 -0
  231. package/src/browser/inspect/snapshot.ts +348 -0
  232. package/src/browser/inspect/styles.ts +258 -0
  233. package/src/browser/inspect/types.ts +37 -0
  234. package/src/browser/interaction/dialogs.ts +54 -0
  235. package/src/browser/interaction/downloads.ts +116 -0
  236. package/src/browser/interaction/events.ts +79 -0
  237. package/src/browser/interaction/ref-resolver.ts +53 -0
  238. package/src/browser/interaction/uploads.ts +60 -0
  239. package/src/browser/network/network-buffer.ts +133 -0
  240. package/src/browser/network/network-monitor.ts +107 -0
  241. package/src/browser/network/redaction.ts +42 -0
  242. package/src/browser/network/types.ts +47 -0
  243. package/src/browser/performance/analyze.ts +298 -0
  244. package/src/browser/performance/trace.ts +60 -0
  245. package/src/browser/performance/types.ts +34 -0
  246. package/src/browser/security/origins.ts +102 -0
  247. package/src/browser/tabs.ts +110 -0
  248. package/src/browser/types.ts +31 -0
  249. package/src/browser.ts +22 -798
  250. package/src/commands/check.ts +59 -0
  251. package/src/commands/click.ts +18 -4
  252. package/src/commands/connect.ts +40 -0
  253. package/src/commands/dialog.ts +79 -0
  254. package/src/commands/downloads.ts +111 -0
  255. package/src/commands/fill.ts +34 -0
  256. package/src/commands/find.ts +52 -0
  257. package/src/commands/hover.ts +42 -0
  258. package/src/commands/navigate.ts +20 -0
  259. package/src/commands/network.ts +141 -0
  260. package/src/commands/performance.ts +51 -0
  261. package/src/commands/press_key.ts +134 -0
  262. package/src/commands/scroll.ts +79 -0
  263. package/src/commands/select.ts +78 -0
  264. package/src/commands/snapshot.ts +18 -0
  265. package/src/commands/styles.ts +24 -0
  266. package/src/commands/type.ts +12 -2
  267. package/src/commands/upload.ts +36 -0
  268. package/src/mcp/console-buffer.ts +10 -0
  269. package/src/mcp/server.ts +74 -2
  270. package/src/mcp/tools/browser.ts +113 -7
  271. package/src/mcp/tools/connect.ts +62 -0
  272. package/src/mcp/tools/files.ts +120 -0
  273. package/src/mcp/tools/interaction.ts +232 -0
  274. package/src/mcp/tools/names.ts +19 -1
  275. package/src/mcp/tools/network.ts +86 -0
  276. package/src/mcp/tools/performance.ts +40 -0
  277. package/src/mcp/tools/runtime.ts +164 -0
  278. package/src/mcp/tools/snapshot.ts +64 -0
  279. package/src/mcp/tools/styles.ts +41 -0
  280. package/src/util/config.ts +3 -2
@@ -0,0 +1,38 @@
1
+ const MAX_TRACE_EVENTS = 100000;
2
+ export function createTraceState() {
3
+ return { tracing: false, events: [], listenerClient: null };
4
+ }
5
+ export async function startTrace(client, state) {
6
+ if (state.tracing) {
7
+ throw new Error('Tracing is already active. Stop it first.');
8
+ }
9
+ state.events = [];
10
+ state.tracing = true;
11
+ // Only attach listener if not already attached to this client
12
+ if (state.listenerClient?.deref() !== client) {
13
+ client.Tracing.dataCollected((params) => {
14
+ if (state.events.length < MAX_TRACE_EVENTS) {
15
+ state.events.push(...params.value);
16
+ }
17
+ });
18
+ state.listenerClient = new WeakRef(client);
19
+ }
20
+ await client.Tracing.start({
21
+ categories: 'devtools.timeline,loading,v8,v8.execute,blink.user_timing,navigation',
22
+ transferMode: 'ReportEvents'
23
+ });
24
+ }
25
+ export async function stopTrace(client, state) {
26
+ if (!state.tracing) {
27
+ throw new Error('No active trace. Call start first.');
28
+ }
29
+ await new Promise((resolve) => {
30
+ client.Tracing.tracingComplete(() => {
31
+ resolve();
32
+ });
33
+ void client.Tracing.end();
34
+ });
35
+ state.tracing = false;
36
+ return state.events;
37
+ }
38
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/browser/performance/trace.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAQhC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,KAAiB;IAEjB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAErB,8DAA8D;IAC9D,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE;YACtC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;gBAC3C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,UAAU,EACR,sEAAsE;QACxE,YAAY,EAAE,cAAc;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAc,EACd,KAAiB;IAEjB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC"}
@@ -0,0 +1,31 @@
1
+ export interface NavigationTiming {
2
+ domContentLoaded?: number;
3
+ load?: number;
4
+ firstPaint?: number;
5
+ firstContentfulPaint?: number;
6
+ }
7
+ export interface LongTask {
8
+ name: string;
9
+ duration: number;
10
+ startTime: number;
11
+ }
12
+ export interface SlowRequest {
13
+ url: string;
14
+ duration: number;
15
+ method?: string;
16
+ }
17
+ export interface LargeResource {
18
+ url: string;
19
+ size: number;
20
+ type?: string;
21
+ }
22
+ export interface PerformanceSummary {
23
+ navigationTiming: NavigationTiming;
24
+ metrics: Record<string, number>;
25
+ longTasks: LongTask[];
26
+ slowRequests: SlowRequest[];
27
+ largeResources: LargeResource[];
28
+ totalJsExecutionMs?: number;
29
+ traceEventCount?: number;
30
+ }
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser/performance/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/browser/performance/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Origin allow/block list evaluation.
3
+ *
4
+ * Rules:
5
+ * - Block wins over allow.
6
+ * - Both empty = everything allowed.
7
+ * - Supports wildcard patterns: *.example.com matches sub.example.com
8
+ * - Patterns with a scheme (https://...) match the full origin.
9
+ * - Patterns without a scheme match the host (+port) only, any scheme.
10
+ */
11
+ export declare function extractOrigin(url: string): string;
12
+ export declare function extractHost(url: string): string;
13
+ export interface OriginCheckResult {
14
+ allowed: boolean;
15
+ reason?: string;
16
+ }
17
+ export declare function checkOrigin(url: string): OriginCheckResult;
18
+ //# sourceMappingURL=origins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origins.d.ts","sourceRoot":"","sources":["../../../src/browser/security/origins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAwCH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CA6B1D"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Origin allow/block list evaluation.
3
+ *
4
+ * Rules:
5
+ * - Block wins over allow.
6
+ * - Both empty = everything allowed.
7
+ * - Supports wildcard patterns: *.example.com matches sub.example.com
8
+ * - Patterns with a scheme (https://...) match the full origin.
9
+ * - Patterns without a scheme match the host (+port) only, any scheme.
10
+ */
11
+ function getOriginList(envVar) {
12
+ const env = process.env[envVar];
13
+ if (!env)
14
+ return [];
15
+ return env
16
+ .split(',')
17
+ .map((p) => p.trim())
18
+ .filter((p) => p.length > 0);
19
+ }
20
+ function patternToRegex(pattern) {
21
+ // Escape regex special chars except *
22
+ const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
23
+ // Replace * with regex wildcard
24
+ const regexStr = escaped.replace(/\*/g, '.*');
25
+ return new RegExp(`^${regexStr}$`, 'i');
26
+ }
27
+ function hasScheme(pattern) {
28
+ return /^[a-z][a-z0-9+.-]*:\/\//i.test(pattern);
29
+ }
30
+ function matchesPattern(origin, host, pattern) {
31
+ if (hasScheme(pattern)) {
32
+ // Pattern includes scheme — match against full origin
33
+ return patternToRegex(pattern).test(origin);
34
+ }
35
+ // Scheme-less pattern — match against host (+port) only
36
+ return patternToRegex(pattern).test(host);
37
+ }
38
+ function matchesAny(origin, host, patterns) {
39
+ return patterns.some((p) => matchesPattern(origin, host, p));
40
+ }
41
+ export function extractOrigin(url) {
42
+ try {
43
+ const parsed = new URL(url);
44
+ return parsed.origin;
45
+ }
46
+ catch {
47
+ return url;
48
+ }
49
+ }
50
+ export function extractHost(url) {
51
+ try {
52
+ const parsed = new URL(url);
53
+ return parsed.host;
54
+ }
55
+ catch {
56
+ return url;
57
+ }
58
+ }
59
+ export function checkOrigin(url) {
60
+ const blocked = getOriginList('PILOT_BLOCKED_ORIGINS');
61
+ const allowed = getOriginList('PILOT_ALLOWED_ORIGINS');
62
+ // Both empty = everything allowed
63
+ if (blocked.length === 0 && allowed.length === 0) {
64
+ return { allowed: true };
65
+ }
66
+ const origin = extractOrigin(url);
67
+ const host = extractHost(url);
68
+ // Block wins over allow
69
+ if (blocked.length > 0 && matchesAny(origin, host, blocked)) {
70
+ return {
71
+ allowed: false,
72
+ reason: `Origin "${origin}" is blocked by PILOT_BLOCKED_ORIGINS`
73
+ };
74
+ }
75
+ // If allow list exists, origin must match it
76
+ if (allowed.length > 0 && !matchesAny(origin, host, allowed)) {
77
+ return {
78
+ allowed: false,
79
+ reason: `Origin "${origin}" is not in PILOT_ALLOWED_ORIGINS`
80
+ };
81
+ }
82
+ return { allowed: true };
83
+ }
84
+ //# sourceMappingURL=origins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origins.js","sourceRoot":"","sources":["../../../src/browser/security/origins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Client } from 'chrome-remote-interface';
2
+ import type { TabInfo } from './types.js';
3
+ import type { ConnectionInfo } from './connection.js';
4
+ import { attachEventListeners } from './events.js';
5
+ import type { ViewportConfig } from '../viewport.js';
6
+ export declare function listTabs(connInfo: ConnectionInfo, activeTargetId: string | null): Promise<TabInfo[]>;
7
+ export declare function createTab(connInfo: ConnectionInfo, url?: string): Promise<TabInfo>;
8
+ export declare function closeTab(connInfo: ConnectionInfo, targetId: string, activeTargetId: string | null): Promise<void>;
9
+ export interface SwitchTabResult {
10
+ client: Client;
11
+ targetId: string;
12
+ url: string;
13
+ }
14
+ export declare function switchTab(connInfo: ConnectionInfo, targetId: string, currentTargetId: string | null, currentClient: Client | null, viewportConfig: ViewportConfig | null, eventListenerOpts: Parameters<typeof attachEventListeners>[1]): Promise<SwitchTabResult>;
15
+ //# sourceMappingURL=tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/browser/tabs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,OAAO,CAAC,OAAO,EAAE,CAAC,CAUpB;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,cAAc,EACxB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,iBAAiB,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC,eAAe,CAAC,CAyC1B"}
@@ -0,0 +1,71 @@
1
+ import CDP from 'chrome-remote-interface';
2
+ import { getLogger } from '../util/logger.js';
3
+ import { enableDomains } from './connection.js';
4
+ import { attachEventListeners } from './events.js';
5
+ export async function listTabs(connInfo, activeTargetId) {
6
+ const targets = await CDP.List({ host: connInfo.host, port: connInfo.port });
7
+ return targets
8
+ .filter((t) => t.type === 'page')
9
+ .map((t) => ({
10
+ targetId: t.id,
11
+ url: t.url,
12
+ title: t.title,
13
+ active: t.id === activeTargetId
14
+ }));
15
+ }
16
+ export async function createTab(connInfo, url) {
17
+ const encodedUrl = url ? encodeURI(url) : undefined;
18
+ const target = await CDP.New({
19
+ host: connInfo.host,
20
+ port: connInfo.port,
21
+ url: encodedUrl
22
+ });
23
+ return {
24
+ targetId: target.id,
25
+ url: target.url,
26
+ title: target.title,
27
+ active: false
28
+ };
29
+ }
30
+ export async function closeTab(connInfo, targetId, activeTargetId) {
31
+ if (targetId === activeTargetId) {
32
+ throw new Error('Cannot close the active tab. Switch to another tab first.');
33
+ }
34
+ await CDP.Close({ host: connInfo.host, port: connInfo.port, id: targetId });
35
+ }
36
+ export async function switchTab(connInfo, targetId, currentTargetId, currentClient, viewportConfig, eventListenerOpts) {
37
+ if (targetId === currentTargetId && currentClient) {
38
+ return {
39
+ client: currentClient,
40
+ targetId,
41
+ url: ''
42
+ };
43
+ }
44
+ // Verify the target exists
45
+ const targets = await CDP.List({
46
+ host: connInfo.host,
47
+ port: connInfo.port
48
+ });
49
+ const target = targets.find((t) => t.id === targetId && t.type === 'page');
50
+ if (!target) {
51
+ throw new Error(`No page tab found with targetId: ${targetId}`);
52
+ }
53
+ // Close old client connection (but not the tab)
54
+ if (currentClient) {
55
+ await currentClient.close();
56
+ }
57
+ // Connect to the new target
58
+ const client = await CDP({
59
+ host: connInfo.host,
60
+ port: connInfo.port,
61
+ target: targetId
62
+ });
63
+ await enableDomains(client, viewportConfig);
64
+ attachEventListeners(client, eventListenerOpts);
65
+ // Activate the tab in the browser UI
66
+ await client.Target.activateTarget({ targetId });
67
+ const logger = getLogger();
68
+ logger.info({ targetId, url: target.url }, 'Switched to tab');
69
+ return { client, targetId, url: target.url };
70
+ }
71
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/browser/tabs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Client } from 'chrome-remote-interface';
2
+ export type BrowserEventCallback = (event: string, data: unknown) => void;
3
+ export interface TabInfo {
4
+ targetId: string;
5
+ url: string;
6
+ title: string;
7
+ active: boolean;
8
+ }
9
+ export interface BrowserState {
10
+ client: Client | null;
11
+ targetId: string | null;
12
+ url: string | null;
13
+ connected: boolean;
14
+ }
15
+ export interface LaunchOptions {
16
+ headless?: boolean;
17
+ chromePath?: string;
18
+ profileName?: string;
19
+ viewport?: string;
20
+ viewportWidth?: number;
21
+ viewportHeight?: number;
22
+ deviceScaleFactor?: number;
23
+ responsive?: boolean;
24
+ }
25
+ export type SandboxDecision = {
26
+ disable: false;
27
+ } | {
28
+ disable: true;
29
+ reason: 'env_override' | 'root_user';
30
+ };
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/browser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAE1E,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GACzB;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,cAAc,GAAG,WAAW,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/browser/types.ts"],"names":[],"mappings":""}
package/dist/browser.d.ts CHANGED
@@ -1,100 +1,3 @@
1
- import type { Client } from 'chrome-remote-interface';
2
- import type { Config } from './util/config.js';
3
- import { type ViewportConfig } from './viewport.js';
4
- export type BrowserEventCallback = (event: string, data: unknown) => void;
5
- export interface TabInfo {
6
- targetId: string;
7
- url: string;
8
- title: string;
9
- active: boolean;
10
- }
11
- export interface BrowserState {
12
- client: Client | null;
13
- targetId: string | null;
14
- url: string | null;
15
- connected: boolean;
16
- }
17
- export interface LaunchOptions {
18
- headless?: boolean;
19
- chromePath?: string;
20
- profileName?: string;
21
- viewport?: string;
22
- viewportWidth?: number;
23
- viewportHeight?: number;
24
- deviceScaleFactor?: number;
25
- responsive?: boolean;
26
- }
27
- export type SandboxDecision = {
28
- disable: false;
29
- } | {
30
- disable: true;
31
- reason: 'env_override' | 'root_user';
32
- };
33
- export declare function sandboxDecision(): SandboxDecision;
34
- export declare function shouldDisableSandbox(): boolean;
35
- export declare const PROFILE_NAME_RE: RegExp;
36
- export declare function resolveUserDataDir(profileName: string): string;
37
- /**
38
- * Extract the PID from a Chrome SingletonLock symlink target.
39
- * On Linux, Chrome writes the symlink target as "hostname-pid".
40
- * Returns the PID if extraction succeeds, or null otherwise.
41
- */
42
- export declare function extractLockPid(lockPath: string): {
43
- pid: number;
44
- lockHost: string;
45
- } | null;
46
- /**
47
- * Check whether a process with the given PID is still running.
48
- * Returns true if the process exists (even if we lack permission to signal it).
49
- * Returns false only when the OS confirms the process does not exist (ESRCH).
50
- */
51
- export declare function isProcessAlive(pid: number): boolean;
52
- export declare function isProfileLocked(userDataDir: string): boolean;
53
- export declare class BrowserManager {
54
- private readonly config;
55
- private client;
56
- private targetId;
57
- private currentUrl;
58
- private retryTimer;
59
- private retryMs;
60
- private destroyed;
61
- private intentionalClose;
62
- private eventCallback;
63
- private pendingNetworkRequests;
64
- private networkIdleTimer;
65
- private networkIdleResolvers;
66
- private chromeProcess;
67
- private launchedCdpPort;
68
- private viewportConfig;
69
- private launchedUserDataDir;
70
- constructor(config: Config);
71
- setEventCallback(cb: BrowserEventCallback): void;
72
- private emit;
73
- getState(): BrowserState;
74
- getClient(): Client | null;
75
- isConnected(): boolean;
76
- isLaunched(): boolean;
77
- getViewportConfig(): ViewportConfig | null;
78
- setViewportConfig(config: ViewportConfig): void;
79
- static findChromeExecutable(override?: string): string;
80
- static findFreePort(): Promise<number>;
81
- launch(opts?: LaunchOptions): Promise<{
82
- headless: boolean;
83
- viewport: string;
84
- }>;
85
- private waitForChromeReady;
86
- connect(): Promise<void>;
87
- private enableDomains;
88
- private attachEventListeners;
89
- private checkNetworkIdle;
90
- waitForNetworkIdle(timeoutMs?: number): Promise<void>;
91
- private getCdpConnectionInfo;
92
- listTabs(): Promise<TabInfo[]>;
93
- createTab(url?: string): Promise<TabInfo>;
94
- closeTab(targetId: string): Promise<void>;
95
- switchTab(targetId: string): Promise<void>;
96
- private scheduleReconnect;
97
- private cleanupUserDataDir;
98
- destroy(): Promise<void>;
99
- }
1
+ export { BrowserManager, PROFILE_NAME_RE, sandboxDecision, shouldDisableSandbox, resolveUserDataDir, extractLockPid, isProcessAlive, isProfileLocked, findChromeExecutable, findFreePort } from './browser/index.js';
2
+ export type { BrowserEventCallback, TabInfo, BrowserState, LaunchOptions, SandboxDecision } from './browser/index.js';
100
3
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,YAAY,EACb,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,oBAAoB,EACpB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,MAAM,oBAAoB,CAAC"}