craftdriver 1.7.0 → 1.9.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 (234) hide show
  1. package/CHANGELOG.md +25 -12
  2. package/README.md +16 -6
  3. package/dist/cli/agentSession.d.ts +62 -0
  4. package/dist/cli/agentSession.d.ts.map +1 -0
  5. package/dist/cli/agentSession.js +100 -0
  6. package/dist/cli/agentSession.js.map +1 -0
  7. package/dist/cli/artifactPaths.d.ts +42 -0
  8. package/dist/cli/artifactPaths.d.ts.map +1 -0
  9. package/dist/cli/artifactPaths.js +144 -0
  10. package/dist/cli/artifactPaths.js.map +1 -0
  11. package/dist/cli/bounds.d.ts +88 -0
  12. package/dist/cli/bounds.d.ts.map +1 -0
  13. package/dist/cli/bounds.js +128 -0
  14. package/dist/cli/bounds.js.map +1 -0
  15. package/dist/cli/client.d.ts +3 -0
  16. package/dist/cli/client.d.ts.map +1 -1
  17. package/dist/cli/client.js +24 -8
  18. package/dist/cli/client.js.map +1 -1
  19. package/dist/cli/daemon.d.ts +3 -0
  20. package/dist/cli/daemon.d.ts.map +1 -1
  21. package/dist/cli/daemon.js +152 -39
  22. package/dist/cli/daemon.js.map +1 -1
  23. package/dist/cli/defaults.d.ts +23 -3
  24. package/dist/cli/defaults.d.ts.map +1 -1
  25. package/dist/cli/defaults.js +50 -5
  26. package/dist/cli/defaults.js.map +1 -1
  27. package/dist/cli/dispatcher.d.ts +54 -11
  28. package/dist/cli/dispatcher.d.ts.map +1 -1
  29. package/dist/cli/dispatcher.js +851 -54
  30. package/dist/cli/dispatcher.js.map +1 -1
  31. package/dist/cli/index.d.ts.map +1 -1
  32. package/dist/cli/index.js +305 -56
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/init.d.ts +14 -14
  35. package/dist/cli/init.d.ts.map +1 -1
  36. package/dist/cli/init.js +328 -180
  37. package/dist/cli/init.js.map +1 -1
  38. package/dist/cli/journal.d.ts +153 -0
  39. package/dist/cli/journal.d.ts.map +1 -0
  40. package/dist/cli/journal.js +252 -0
  41. package/dist/cli/journal.js.map +1 -0
  42. package/dist/cli/lineReader.d.ts +33 -0
  43. package/dist/cli/lineReader.d.ts.map +1 -0
  44. package/dist/cli/lineReader.js +66 -0
  45. package/dist/cli/lineReader.js.map +1 -0
  46. package/dist/cli/locatorCandidates.d.ts +44 -0
  47. package/dist/cli/locatorCandidates.d.ts.map +1 -0
  48. package/dist/cli/locatorCandidates.js +190 -0
  49. package/dist/cli/locatorCandidates.js.map +1 -0
  50. package/dist/cli/mcp/artifacts.d.ts +39 -1
  51. package/dist/cli/mcp/artifacts.d.ts.map +1 -1
  52. package/dist/cli/mcp/artifacts.js +104 -9
  53. package/dist/cli/mcp/artifacts.js.map +1 -1
  54. package/dist/cli/mcp/bounds.d.ts +65 -0
  55. package/dist/cli/mcp/bounds.d.ts.map +1 -0
  56. package/dist/cli/mcp/bounds.js +124 -0
  57. package/dist/cli/mcp/bounds.js.map +1 -0
  58. package/dist/cli/mcp/params.d.ts +38 -0
  59. package/dist/cli/mcp/params.d.ts.map +1 -0
  60. package/dist/cli/mcp/params.js +174 -0
  61. package/dist/cli/mcp/params.js.map +1 -0
  62. package/dist/cli/mcp/server.d.ts +94 -16
  63. package/dist/cli/mcp/server.d.ts.map +1 -1
  64. package/dist/cli/mcp/server.js +304 -150
  65. package/dist/cli/mcp/server.js.map +1 -1
  66. package/dist/cli/mcp/tools.d.ts +62 -17
  67. package/dist/cli/mcp/tools.d.ts.map +1 -1
  68. package/dist/cli/mcp/tools.js +373 -158
  69. package/dist/cli/mcp/tools.js.map +1 -1
  70. package/dist/cli/pageSemantics.d.ts +6 -0
  71. package/dist/cli/pageSemantics.d.ts.map +1 -0
  72. package/dist/cli/pageSemantics.js +6 -0
  73. package/dist/cli/pageSemantics.js.map +1 -0
  74. package/dist/cli/parseArgs.d.ts +6 -18
  75. package/dist/cli/parseArgs.d.ts.map +1 -1
  76. package/dist/cli/parseArgs.js +689 -45
  77. package/dist/cli/parseArgs.js.map +1 -1
  78. package/dist/cli/protocol.d.ts +8 -0
  79. package/dist/cli/protocol.d.ts.map +1 -1
  80. package/dist/cli/selector.d.ts +3 -3
  81. package/dist/cli/selector.d.ts.map +1 -1
  82. package/dist/cli/selector.js +6 -9
  83. package/dist/cli/selector.js.map +1 -1
  84. package/dist/cli/sessionRegistry.d.ts +42 -0
  85. package/dist/cli/sessionRegistry.d.ts.map +1 -0
  86. package/dist/cli/sessionRegistry.js +99 -0
  87. package/dist/cli/sessionRegistry.js.map +1 -0
  88. package/dist/cli/snapshot.d.ts +100 -19
  89. package/dist/cli/snapshot.d.ts.map +1 -1
  90. package/dist/cli/snapshot.js +295 -108
  91. package/dist/cli/snapshot.js.map +1 -1
  92. package/dist/cli/stateStore.d.ts +50 -0
  93. package/dist/cli/stateStore.d.ts.map +1 -0
  94. package/dist/cli/stateStore.js +122 -0
  95. package/dist/cli/stateStore.js.map +1 -0
  96. package/dist/index.d.ts +3 -2
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +1 -0
  99. package/dist/index.js.map +1 -1
  100. package/dist/lib/a11y.d.ts +6 -2
  101. package/dist/lib/a11y.d.ts.map +1 -1
  102. package/dist/lib/a11y.js +3 -1
  103. package/dist/lib/a11y.js.map +1 -1
  104. package/dist/lib/bidi/evaluate.d.ts +11 -0
  105. package/dist/lib/bidi/evaluate.d.ts.map +1 -0
  106. package/dist/lib/bidi/evaluate.js +25 -0
  107. package/dist/lib/bidi/evaluate.js.map +1 -0
  108. package/dist/lib/bidi/index.d.ts +1 -1
  109. package/dist/lib/bidi/index.d.ts.map +1 -1
  110. package/dist/lib/bidi/index.js +2 -2
  111. package/dist/lib/bidi/index.js.map +1 -1
  112. package/dist/lib/bidi/logs.d.ts +3 -0
  113. package/dist/lib/bidi/logs.d.ts.map +1 -1
  114. package/dist/lib/bidi/logs.js +7 -0
  115. package/dist/lib/bidi/logs.js.map +1 -1
  116. package/dist/lib/bidi/network.d.ts +14 -1
  117. package/dist/lib/bidi/network.d.ts.map +1 -1
  118. package/dist/lib/bidi/network.js +45 -7
  119. package/dist/lib/bidi/network.js.map +1 -1
  120. package/dist/lib/bidi/storage.d.ts +30 -6
  121. package/dist/lib/bidi/storage.d.ts.map +1 -1
  122. package/dist/lib/bidi/storage.js +190 -45
  123. package/dist/lib/bidi/storage.js.map +1 -1
  124. package/dist/lib/bidi/types.d.ts +9 -2
  125. package/dist/lib/bidi/types.d.ts.map +1 -1
  126. package/dist/lib/browser.d.ts +7 -4
  127. package/dist/lib/browser.d.ts.map +1 -1
  128. package/dist/lib/browser.js +186 -65
  129. package/dist/lib/browser.js.map +1 -1
  130. package/dist/lib/browserContext.d.ts +58 -24
  131. package/dist/lib/browserContext.d.ts.map +1 -1
  132. package/dist/lib/browserContext.js +300 -99
  133. package/dist/lib/browserContext.js.map +1 -1
  134. package/dist/lib/by.d.ts +68 -30
  135. package/dist/lib/by.d.ts.map +1 -1
  136. package/dist/lib/by.js +54 -23
  137. package/dist/lib/by.js.map +1 -1
  138. package/dist/lib/clearFastPath.d.ts.map +1 -1
  139. package/dist/lib/clearFastPath.js +2 -0
  140. package/dist/lib/clearFastPath.js.map +1 -1
  141. package/dist/lib/clickFastPath.d.ts.map +1 -1
  142. package/dist/lib/clickFastPath.js +2 -0
  143. package/dist/lib/clickFastPath.js.map +1 -1
  144. package/dist/lib/driver.d.ts +26 -0
  145. package/dist/lib/driver.d.ts.map +1 -1
  146. package/dist/lib/driver.js +123 -4
  147. package/dist/lib/driver.js.map +1 -1
  148. package/dist/lib/elementHandle.d.ts +13 -10
  149. package/dist/lib/elementHandle.d.ts.map +1 -1
  150. package/dist/lib/elementHandle.js +119 -50
  151. package/dist/lib/elementHandle.js.map +1 -1
  152. package/dist/lib/errors.d.ts +12 -0
  153. package/dist/lib/errors.d.ts.map +1 -1
  154. package/dist/lib/errors.js +12 -0
  155. package/dist/lib/errors.js.map +1 -1
  156. package/dist/lib/expect.d.ts +10 -0
  157. package/dist/lib/expect.d.ts.map +1 -1
  158. package/dist/lib/expect.js +76 -49
  159. package/dist/lib/expect.js.map +1 -1
  160. package/dist/lib/fillFastPath.d.ts.map +1 -1
  161. package/dist/lib/fillFastPath.js +2 -0
  162. package/dist/lib/fillFastPath.js.map +1 -1
  163. package/dist/lib/frame.d.ts.map +1 -1
  164. package/dist/lib/frame.js +29 -17
  165. package/dist/lib/frame.js.map +1 -1
  166. package/dist/lib/initScript.d.ts +9 -0
  167. package/dist/lib/initScript.d.ts.map +1 -0
  168. package/dist/lib/initScript.js +14 -0
  169. package/dist/lib/initScript.js.map +1 -0
  170. package/dist/lib/locator.d.ts +21 -54
  171. package/dist/lib/locator.d.ts.map +1 -1
  172. package/dist/lib/locator.js +165 -208
  173. package/dist/lib/locator.js.map +1 -1
  174. package/dist/lib/page.d.ts +22 -0
  175. package/dist/lib/page.d.ts.map +1 -1
  176. package/dist/lib/page.js +71 -13
  177. package/dist/lib/page.js.map +1 -1
  178. package/dist/lib/pageSemantics.d.ts +42 -0
  179. package/dist/lib/pageSemantics.d.ts.map +1 -0
  180. package/dist/lib/pageSemantics.js +216 -0
  181. package/dist/lib/pageSemantics.js.map +1 -0
  182. package/dist/lib/query.d.ts +68 -0
  183. package/dist/lib/query.d.ts.map +1 -0
  184. package/dist/lib/query.js +590 -0
  185. package/dist/lib/query.js.map +1 -0
  186. package/dist/lib/secureFile.d.ts +8 -0
  187. package/dist/lib/secureFile.d.ts.map +1 -0
  188. package/dist/lib/secureFile.js +67 -0
  189. package/dist/lib/secureFile.js.map +1 -0
  190. package/dist/lib/sessionStateValidation.d.ts +35 -0
  191. package/dist/lib/sessionStateValidation.d.ts.map +1 -0
  192. package/dist/lib/sessionStateValidation.js +223 -0
  193. package/dist/lib/sessionStateValidation.js.map +1 -0
  194. package/dist/lib/shadowRoot.d.ts +21 -0
  195. package/dist/lib/shadowRoot.d.ts.map +1 -0
  196. package/dist/lib/shadowRoot.js +29 -0
  197. package/dist/lib/shadowRoot.js.map +1 -0
  198. package/dist/lib/shadowRootLocator.d.ts +31 -0
  199. package/dist/lib/shadowRootLocator.d.ts.map +1 -0
  200. package/dist/lib/shadowRootLocator.js +55 -0
  201. package/dist/lib/shadowRootLocator.js.map +1 -0
  202. package/dist/lib/timing.d.ts +2 -2
  203. package/dist/lib/timing.js +2 -2
  204. package/dist/lib/tracing.d.ts +2 -1
  205. package/dist/lib/tracing.d.ts.map +1 -1
  206. package/dist/lib/tracing.js +12 -1
  207. package/dist/lib/tracing.js.map +1 -1
  208. package/docs/accessibility.md +9 -1
  209. package/docs/agents.md +56 -61
  210. package/docs/api-reference.md +5 -1
  211. package/docs/browser-api.md +27 -7
  212. package/docs/browser-context.md +21 -15
  213. package/docs/cli.md +353 -30
  214. package/docs/error-codes.md +7 -4
  215. package/docs/getting-started.md +6 -1
  216. package/docs/index.md +1 -1
  217. package/docs/mcp.md +136 -65
  218. package/docs/public/examples/agent-actions.html +48 -0
  219. package/docs/public/examples/agent-debug.html +86 -0
  220. package/docs/public/examples/agent-late-mutation.html +18 -0
  221. package/docs/public/examples/agent-ref-shift.html +33 -0
  222. package/docs/public/examples/iframe-child.html +12 -1
  223. package/docs/public/examples/shadow-dom.html +137 -0
  224. package/docs/recipes/login-once-reuse-session.md +33 -5
  225. package/docs/selectors.md +61 -0
  226. package/docs/session-management.md +80 -12
  227. package/docs/why-craftdriver.md +1 -1
  228. package/package.json +5 -3
  229. package/skills/craftdriver/SKILL.md +59 -75
  230. package/skills/craftdriver/agents/openai.yaml +4 -0
  231. package/skills/craftdriver/cheatsheet.md +18 -4
  232. package/skills/craftdriver/cli.md +194 -68
  233. package/skills/craftdriver/patterns.md +17 -8
  234. package/skills/craftdriver/workflow.md +149 -0
@@ -12,6 +12,8 @@ export class NetworkInterceptor {
12
12
  context;
13
13
  requestListeners = [];
14
14
  responseListeners = [];
15
+ isInternalContext = () => false;
16
+ internalRequestIds = new Set();
15
17
  /** Set of request IDs currently in-flight (sent but not yet completed/errored). */
16
18
  inFlightRequests = new Set();
17
19
  /** Callbacks to notify when inFlightRequests changes — used by waitForNetworkIdle. */
@@ -20,6 +22,10 @@ export class NetworkInterceptor {
20
22
  this.connection = connection;
21
23
  this.context = context;
22
24
  }
25
+ /** @internal Exclude library-owned contexts from public network observation. */
26
+ setInternalContextPredicate(predicate) {
27
+ this.isInternalContext = predicate;
28
+ }
23
29
  /**
24
30
  * Mark the WS subscription as already armed — e.g. done as part of
25
31
  * `BiDiSession.connect()`'s merged connect-time batch — without sending a
@@ -50,11 +56,14 @@ export class NetworkInterceptor {
50
56
  // Handle intercepted requests + track in-flight
51
57
  this.connection.on('network.beforeRequestSent', async (params) => {
52
58
  const event = params;
53
- // Track in-flight (before intercept handling, so count is always accurate)
54
- this.inFlightRequests.add(event.request.request);
59
+ const internal = this.isInternalContext(event.context);
60
+ if (internal)
61
+ this.internalRequestIds.add(event.request.request);
62
+ else
63
+ this.inFlightRequests.add(event.request.request);
55
64
  await this.handleBeforeRequestSent(event);
56
65
  // Notify passive request listeners (waitForRequest)
57
- if (this.requestListeners.length > 0) {
66
+ if (!internal && this.requestListeners.length > 0) {
58
67
  const req = {
59
68
  id: event.request.request,
60
69
  url: event.request.url,
@@ -70,6 +79,8 @@ export class NetworkInterceptor {
70
79
  // Track completed responses + notify waitForResponse listeners
71
80
  this.connection.on('network.responseCompleted', (params) => {
72
81
  const event = params;
82
+ if (this.internalRequestIds.delete(event.request.request))
83
+ return;
73
84
  this.inFlightRequests.delete(event.request.request);
74
85
  this._notifyIdleListeners();
75
86
  if (this.responseListeners.length > 0) {
@@ -95,6 +106,8 @@ export class NetworkInterceptor {
95
106
  this.connection.on('network.fetchError', (params) => {
96
107
  const reqId = params?.request?.request;
97
108
  if (reqId) {
109
+ if (this.internalRequestIds.delete(reqId))
110
+ return;
98
111
  this.inFlightRequests.delete(reqId);
99
112
  this._notifyIdleListeners();
100
113
  }
@@ -104,7 +117,7 @@ export class NetworkInterceptor {
104
117
  /**
105
118
  * Add a network intercept for specific URL patterns
106
119
  */
107
- async intercept(patterns, handler, phases = ['beforeRequestSent'], contexts) {
120
+ async intercept(patterns, handler, phases = ['beforeRequestSent'], contexts, opts) {
108
121
  await this.initialize();
109
122
  const urlPatterns = this.normalizePatterns(patterns);
110
123
  const ctxs = contexts ?? (this.context ? [this.context] : undefined);
@@ -119,6 +132,7 @@ export class NetworkInterceptor {
119
132
  patterns: urlPatterns,
120
133
  phases,
121
134
  handler,
135
+ strict: opts?.strict,
122
136
  });
123
137
  this.handlers.set(interceptId, handler);
124
138
  return interceptId;
@@ -409,8 +423,15 @@ export class NetworkInterceptor {
409
423
  if (!event.isBlocked || !event.intercepts?.length)
410
424
  return;
411
425
  const requestId = event.request.request;
426
+ const internal = this.isInternalContext(event.context);
427
+ // Internal contexts are owned by strict library intercepts. Never invoke a
428
+ // user's browser-global mock/route for those requests, even when its URL
429
+ // pattern also matches the reserved hydration URL.
430
+ const interceptIds = internal
431
+ ? event.intercepts.filter((id) => this.intercepts.get(id)?.strict === true)
432
+ : event.intercepts;
412
433
  // Find matching handler
413
- for (const interceptId of event.intercepts) {
434
+ for (const interceptId of interceptIds) {
414
435
  const handler = this.handlers.get(interceptId);
415
436
  if (!handler)
416
437
  continue;
@@ -422,12 +443,18 @@ export class NetworkInterceptor {
422
443
  isBlocked: event.isBlocked,
423
444
  context: event.context,
424
445
  };
446
+ const strict = this.intercepts.get(interceptId)?.strict === true;
425
447
  try {
426
448
  const result = await handler(interceptedRequest);
427
449
  if (result) {
428
450
  // Provide mock response
429
451
  await this.provideResponse(requestId, result);
430
452
  }
453
+ else if (strict) {
454
+ // A strict internal intercept must own every request it matches — a
455
+ // handler returning nothing is a bug, not a pass-through.
456
+ await this.failRequest(requestId);
457
+ }
431
458
  else {
432
459
  // Continue with original request
433
460
  await this.continueRequest(requestId);
@@ -435,13 +462,24 @@ export class NetworkInterceptor {
435
462
  return;
436
463
  }
437
464
  catch (err) {
465
+ if (strict) {
466
+ // Never fall through to the real network for a strict internal
467
+ // intercept: fail the request so the caller sees the error rather
468
+ // than a surprise real response reaching the origin server.
469
+ await this.failRequest(requestId).catch(() => { });
470
+ return;
471
+ }
438
472
  console.error('Error in network intercept handler:', err);
439
473
  await this.continueRequest(requestId);
440
474
  return;
441
475
  }
442
476
  }
443
- // No handler found, continue request
444
- await this.continueRequest(requestId);
477
+ // A library-owned request without its strict owner must never escape to the
478
+ // real origin. Public requests retain the normal pass-through behavior.
479
+ if (internal)
480
+ await this.failRequest(requestId);
481
+ else
482
+ await this.continueRequest(requestId);
445
483
  }
446
484
  normalizePatterns(patterns) {
447
485
  // Handle single UrlPattern object
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/lib/bidi/network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/lib/bidi/network.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Session State Manager
3
- * Playwright-style session persistence - save login state, cookies, localStorage
3
+ * CraftDriver session persistence - save login state, cookies, localStorage
4
4
  */
5
5
  import type { BiDiConnection } from './connection.js';
6
6
  import type { Driver } from '../driver.js';
@@ -15,28 +15,47 @@ export interface StorageStateOptions {
15
15
  /** Specific origins to capture (default: all) */
16
16
  origins?: string[];
17
17
  }
18
+ export interface SessionStateManagerOptions {
19
+ browserName?: string;
20
+ protocol?: 'bidi' | 'classic';
21
+ runSerializedRestore?: <T>(task: () => Promise<T>) => Promise<T>;
22
+ }
18
23
  export declare class SessionStateManager {
19
24
  private connection;
20
25
  private driver;
21
26
  private context?;
22
- constructor(driver: Driver, connection: BiDiConnection | null, context?: BrowsingContext);
27
+ private options;
28
+ private restoreTail;
29
+ constructor(driver: Driver, connection: BiDiConnection | null, context?: BrowsingContext, options?: SessionStateManagerOptions);
23
30
  /**
24
- * Save current session state to a file (Playwright-style)
31
+ * Save current session state to a file
25
32
  * Captures cookies and optionally localStorage/sessionStorage
26
33
  */
27
34
  saveState(path: string, options?: StorageStateOptions): Promise<SessionState>;
28
35
  /**
29
36
  * Load session state from a file
30
37
  */
31
- loadState(path: string): Promise<void>;
38
+ loadState(source: string | SessionState): Promise<void>;
32
39
  /**
33
40
  * Get current session state
34
41
  */
35
42
  getState(options?: StorageStateOptions): Promise<SessionState>;
36
43
  /**
37
- * Set session state (cookies + storage)
44
+ * Set session state (cookies + storage) onto the active page.
45
+ *
46
+ * This is the active-page restore path: origin-scoped storage can only be
47
+ * written to the page currently open. When the snapshot carries
48
+ * sessionStorage, the whole restore must target a single origin that matches
49
+ * the active http(s) page — validated before any mutation.
50
+ */
51
+ setState(source: SessionState | string, operation?: string): Promise<void>;
52
+ /**
53
+ * Guard for the active-page restore: when a snapshot carries sessionStorage
54
+ * (tab-scoped, writable only to the current page), require exactly one
55
+ * applicable origin and that it matches the active http(s) origin. Throws
56
+ * before any mutation on a mismatch or a multi-origin snapshot.
38
57
  */
39
- setState(state: SessionState): Promise<void>;
58
+ private _validateActivePageRestore;
40
59
  /**
41
60
  * Get all cookies using BiDi or fallback to Classic
42
61
  */
@@ -79,6 +98,11 @@ export declare class SessionStateManager {
79
98
  private classicCookieToCookie;
80
99
  private setCookiesBiDi;
81
100
  private setCookiesClassic;
101
+ private _setCookieStrict;
102
+ private _cookieCanBeSetForUrl;
103
+ private _errorContext;
104
+ private _runSerializedRestore;
105
+ private _restoreDriverError;
82
106
  /**
83
107
  * Convert this module's lowercase sameSite (`strict`/`lax`/`none`/`default`)
84
108
  * to the W3C Classic capitalized form. `default`/undefined is dropped so the
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EACV,eAAe,EACf,MAAM,EACN,WAAW,EACX,YAAY,EAKb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAC,CAAkB;gBAEtB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe;IAMxF;;;OAGG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IAMvF;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BxE;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlD;;OAEG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOhF;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE;;OAEG;IACG,YAAY,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9E;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;QACrC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsBH,cAAc;YAgBd,iBAAiB;IAQ/B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;YAqBf,cAAc;YAiCd,iBAAiB;IAqC/B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;YAId,eAAe;YAuBf,iBAAiB;YAuBjB,eAAe;YAef,iBAAiB;YAcjB,gBAAgB;CAG/B"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/storage.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,36 @@
1
1
  /**
2
2
  * Session State Manager
3
- * Playwright-style session persistence - save login state, cookies, localStorage
3
+ * CraftDriver session persistence - save login state, cookies, localStorage
4
4
  */
5
- import fs from 'fs/promises';
6
5
  import { CraftdriverError, ErrorCode } from '../errors.js';
6
+ import { writeSecureFile } from '../secureFile.js';
7
+ import { nonEmptyOrigins, isHttpOrigin, isSessionStateEmpty, isStorageStateError, normalizeCookieForRestore, parseSessionState, storageStateDetail, } from '../sessionStateValidation.js';
7
8
  export class SessionStateManager {
8
9
  connection;
9
10
  driver;
10
11
  context;
11
- constructor(driver, connection, context) {
12
+ options;
13
+ restoreTail = Promise.resolve();
14
+ constructor(driver, connection, context, options = {}) {
12
15
  this.driver = driver;
13
16
  this.connection = connection;
14
17
  this.context = context;
18
+ this.options = options;
15
19
  }
16
20
  /**
17
- * Save current session state to a file (Playwright-style)
21
+ * Save current session state to a file
18
22
  * Captures cookies and optionally localStorage/sessionStorage
19
23
  */
20
24
  async saveState(path, options = {}) {
21
25
  const state = await this.getState(options);
22
- await fs.writeFile(path, JSON.stringify(state, null, 2), 'utf-8');
26
+ await writeSecureFile(path, JSON.stringify(state, null, 2));
23
27
  return state;
24
28
  }
25
29
  /**
26
30
  * Load session state from a file
27
31
  */
28
- async loadState(path) {
29
- const data = await fs.readFile(path, 'utf-8');
30
- const state = JSON.parse(data);
31
- await this.setState(state);
32
+ async loadState(source) {
33
+ await this.setState(source, 'browser.storage.loadState');
32
34
  }
33
35
  /**
34
36
  * Get current session state
@@ -60,20 +62,103 @@ export class SessionStateManager {
60
62
  return state;
61
63
  }
62
64
  /**
63
- * Set session state (cookies + storage)
65
+ * Set session state (cookies + storage) onto the active page.
66
+ *
67
+ * This is the active-page restore path: origin-scoped storage can only be
68
+ * written to the page currently open. When the snapshot carries
69
+ * sessionStorage, the whole restore must target a single origin that matches
70
+ * the active http(s) page — validated before any mutation.
64
71
  */
65
- async setState(state) {
66
- // Set cookies
67
- if (state.cookies?.length) {
68
- await this.setCookies(state.cookies);
72
+ async setState(source, operation = 'browser.storage.setState') {
73
+ const errorContext = this._errorContext(operation);
74
+ const state = await parseSessionState(source, errorContext);
75
+ if (isSessionStateEmpty(state))
76
+ return;
77
+ await this._runSerializedRestore(async () => {
78
+ try {
79
+ await this._validateActivePageRestore(state, errorContext);
80
+ }
81
+ catch (err) {
82
+ if (isStorageStateError(err))
83
+ throw err;
84
+ throw this._restoreDriverError(err, errorContext, 'preflight', false);
85
+ }
86
+ let partialApplied = false;
87
+ if (nonEmptyOrigins(state.localStorage).length > 0) {
88
+ try {
89
+ partialApplied = true; // a quota/security failure may follow earlier key writes
90
+ await this.setLocalStorage(state.localStorage);
91
+ }
92
+ catch (err) {
93
+ throw this._restoreDriverError(err, errorContext, 'localStorage', partialApplied);
94
+ }
95
+ }
96
+ if (nonEmptyOrigins(state.sessionStorage).length > 0) {
97
+ try {
98
+ partialApplied = true;
99
+ await this.setSessionStorage(state.sessionStorage);
100
+ }
101
+ catch (err) {
102
+ throw this._restoreDriverError(err, errorContext, 'sessionStorage', partialApplied);
103
+ }
104
+ }
105
+ if (state.cookies?.length) {
106
+ for (const captured of state.cookies) {
107
+ try {
108
+ await this._setCookieStrict(normalizeCookieForRestore(captured));
109
+ partialApplied = true;
110
+ }
111
+ catch (err) {
112
+ throw this._restoreDriverError(err, errorContext, 'cookies', partialApplied);
113
+ }
114
+ }
115
+ }
116
+ });
117
+ }
118
+ /**
119
+ * Guard for the active-page restore: when a snapshot carries sessionStorage
120
+ * (tab-scoped, writable only to the current page), require exactly one
121
+ * applicable origin and that it matches the active http(s) origin. Throws
122
+ * before any mutation on a mismatch or a multi-origin snapshot.
123
+ */
124
+ async _validateActivePageRestore(state, errorContext) {
125
+ const sessionOrigins = nonEmptyOrigins(state.sessionStorage);
126
+ if (sessionOrigins.length > 1) {
127
+ throw new CraftdriverError(ErrorCode.INVALID_ARGUMENT, 'cannot restore multi-origin sessionStorage on the active page — restore one origin at a time', { detail: storageStateDetail(errorContext, 'validation', { section: 'sessionStorage' }) });
69
128
  }
70
- // Set localStorage
71
- if (state.localStorage) {
72
- await this.setLocalStorage(state.localStorage);
129
+ const activeOrigin = await this.driver.executeScript('return location.origin');
130
+ if (!isHttpOrigin(activeOrigin)) {
131
+ throw new CraftdriverError(ErrorCode.STATE_INVALID, 'active-page state restore requires an HTTP(S) page', {
132
+ detail: storageStateDetail(errorContext, 'preflight', { activeOrigin }),
133
+ hint: 'Navigate to the snapshot origin first, then call browser.loadState().',
134
+ });
73
135
  }
74
- // Set sessionStorage
75
- if (state.sessionStorage) {
76
- await this.setSessionStorage(state.sessionStorage);
136
+ const storageOrigins = [
137
+ ...new Set([
138
+ ...nonEmptyOrigins(state.localStorage),
139
+ ...sessionOrigins,
140
+ ]),
141
+ ];
142
+ for (const origin of storageOrigins) {
143
+ if (origin !== activeOrigin) {
144
+ throw new CraftdriverError(ErrorCode.STATE_INVALID, `snapshot origin ${origin} does not match the active page origin ${activeOrigin}`, {
145
+ detail: storageStateDetail(errorContext, 'preflight', { origin, activeOrigin }),
146
+ hint: 'Enable BiDi for multi-origin restore, or navigate to the sole origin first.',
147
+ });
148
+ }
149
+ }
150
+ const activeUrl = new URL(await this.driver.executeScript('return location.href'));
151
+ for (const captured of state.cookies ?? []) {
152
+ const cookie = normalizeCookieForRestore(captured);
153
+ if (!this._cookieCanBeSetForUrl(cookie, activeUrl)) {
154
+ throw new CraftdriverError(ErrorCode.STATE_INVALID, `a snapshot cookie for domain ${cookie.domain} cannot be set from ${activeOrigin}`, {
155
+ detail: storageStateDetail(errorContext, 'preflight', {
156
+ cookieDomain: cookie.domain,
157
+ activeOrigin,
158
+ }),
159
+ hint: 'Enable BiDi for out-of-band cookies, or load a snapshot scoped to this origin.',
160
+ });
161
+ }
77
162
  }
78
163
  }
79
164
  /**
@@ -188,22 +273,16 @@ export class SessionStateManager {
188
273
  };
189
274
  }
190
275
  async setCookiesBiDi(cookies) {
191
- for (const cookie of cookies) {
192
- // Note: sameSite: 'none' requires secure: true, so adjust if needed
193
- let sameSite = cookie.sameSite;
194
- let secure = cookie.secure;
195
- if (sameSite === 'none' && !secure) {
196
- // Invalid combo - either set secure to true or change sameSite
197
- sameSite = 'lax'; // Default to lax for non-secure cookies
198
- }
276
+ for (const captured of cookies) {
277
+ const cookie = normalizeCookieForRestore(captured);
199
278
  const partialCookie = {
200
279
  name: cookie.name,
201
280
  value: { type: 'string', value: this.normalizeCookieValue(cookie.value) },
202
281
  domain: cookie.domain,
203
282
  path: cookie.path,
204
283
  httpOnly: cookie.httpOnly,
205
- secure: secure,
206
- sameSite: sameSite,
284
+ secure: cookie.secure,
285
+ sameSite: cookie.sameSite,
207
286
  expiry: cookie.expiry,
208
287
  };
209
288
  try {
@@ -219,7 +298,8 @@ export class SessionStateManager {
219
298
  }
220
299
  }
221
300
  async setCookiesClassic(cookies) {
222
- for (const cookie of cookies) {
301
+ for (const captured of cookies) {
302
+ const cookie = normalizeCookieForRestore(captured);
223
303
  const input = {
224
304
  name: cookie.name,
225
305
  value: this.normalizeCookieValue(cookie.value),
@@ -258,6 +338,67 @@ export class SessionStateManager {
258
338
  }
259
339
  }
260
340
  }
341
+ async _setCookieStrict(cookie) {
342
+ if (this.connection?.isConnected()) {
343
+ await this.setCookiesBiDi([cookie]);
344
+ return;
345
+ }
346
+ const input = {
347
+ name: cookie.name,
348
+ value: this.normalizeCookieValue(cookie.value),
349
+ };
350
+ if (cookie.domain)
351
+ input.domain = cookie.domain;
352
+ if (cookie.path)
353
+ input.path = cookie.path;
354
+ if (cookie.secure !== undefined)
355
+ input.secure = cookie.secure;
356
+ if (cookie.httpOnly !== undefined)
357
+ input.httpOnly = cookie.httpOnly;
358
+ if (cookie.expiry !== undefined)
359
+ input.expiry = cookie.expiry;
360
+ const sameSite = this.toClassicSameSite(cookie.sameSite);
361
+ if (sameSite)
362
+ input.sameSite = sameSite;
363
+ await this.driver.addCookie(input);
364
+ }
365
+ _cookieCanBeSetForUrl(cookie, activeUrl) {
366
+ const host = activeUrl.hostname.toLowerCase();
367
+ const domain = cookie.domain.replace(/^\./, '').toLowerCase();
368
+ const hostIsIp = /^\d+(?:\.\d+){3}$/.test(host) || host.includes(':');
369
+ const domainMatches = host === domain || (!hostIsIp && host.endsWith(`.${domain}`));
370
+ if (!domainMatches)
371
+ return false;
372
+ if (cookie.secure) {
373
+ const trustworthyLocal = host === 'localhost' || host === '127.0.0.1' || host === '::1';
374
+ if (activeUrl.protocol !== 'https:' && !trustworthyLocal)
375
+ return false;
376
+ }
377
+ return true;
378
+ }
379
+ _errorContext(operation) {
380
+ return {
381
+ operation,
382
+ browserName: this.options.browserName ?? 'unknown',
383
+ protocol: this.options.protocol ?? (this.connection?.isConnected() ? 'bidi' : 'classic'),
384
+ };
385
+ }
386
+ _runSerializedRestore(task) {
387
+ if (this.options.runSerializedRestore)
388
+ return this.options.runSerializedRestore(task);
389
+ const run = this.restoreTail.then(task, task);
390
+ this.restoreTail = run.then(() => undefined, () => undefined);
391
+ return run;
392
+ }
393
+ _restoreDriverError(cause, context, phase, partialApplied) {
394
+ return new CraftdriverError(ErrorCode.DRIVER_ERROR, `storage state restore failed while applying ${phase}`, {
395
+ cause,
396
+ detail: storageStateDetail(context, phase, { partialApplied }),
397
+ hint: partialApplied
398
+ ? 'Use a fresh browser context when failure isolation is required.'
399
+ : undefined,
400
+ });
401
+ }
261
402
  /**
262
403
  * Convert this module's lowercase sameSite (`strict`/`lax`/`none`/`default`)
263
404
  * to the W3C Classic capitalized form. `default`/undefined is dropped so the
@@ -277,8 +418,15 @@ export class SessionStateManager {
277
418
  }
278
419
  normalizeCookie(cookie) {
279
420
  return {
280
- ...cookie,
421
+ name: cookie.name,
281
422
  value: this.normalizeCookieValue(cookie.value),
423
+ domain: cookie.domain,
424
+ path: cookie.path,
425
+ size: cookie.size,
426
+ httpOnly: cookie.httpOnly,
427
+ secure: cookie.secure,
428
+ sameSite: cookie.sameSite,
429
+ expiry: cookie.expiry,
282
430
  };
283
431
  }
284
432
  normalizeCookieValue(value) {
@@ -321,24 +469,21 @@ export class SessionStateManager {
321
469
  return result;
322
470
  }
323
471
  async setLocalStorage(storage) {
324
- const currentOrigin = await this.driver.executeScript('return location.origin');
325
472
  for (const [origin, data] of Object.entries(storage)) {
326
- if (origin === currentOrigin) {
327
- for (const [key, value] of Object.entries(data)) {
328
- await this.driver.executeScript(`localStorage.setItem(${JSON.stringify(key)}, ${JSON.stringify(value)})`);
329
- }
330
- }
331
- // For other origins, we'd need to navigate there first - complex case
473
+ if (Object.keys(data).length === 0)
474
+ continue;
475
+ await this.driver.executeScript(`if (location.origin !== arguments[0]) throw new Error('active origin changed during restore');
476
+ const entries = arguments[1];
477
+ for (const key of Object.keys(entries)) localStorage.setItem(key, entries[key]);`, [origin, data]);
332
478
  }
333
479
  }
334
480
  async setSessionStorage(storage) {
335
- const currentOrigin = await this.driver.executeScript('return location.origin');
336
481
  for (const [origin, data] of Object.entries(storage)) {
337
- if (origin === currentOrigin) {
338
- for (const [key, value] of Object.entries(data)) {
339
- await this.driver.executeScript(`sessionStorage.setItem(${JSON.stringify(key)}, ${JSON.stringify(value)})`);
340
- }
341
- }
482
+ if (Object.keys(data).length === 0)
483
+ continue;
484
+ await this.driver.executeScript(`if (location.origin !== arguments[0]) throw new Error('active origin changed during restore');
485
+ const entries = arguments[1];
486
+ for (const key of Object.keys(entries)) sessionStorage.setItem(key, entries[key]);`, [origin, data]);
342
487
  }
343
488
  }
344
489
  async getCurrentDomain() {