craftdriver 1.7.0 → 1.8.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 (175) hide show
  1. package/CHANGELOG.md +23 -11
  2. package/README.md +13 -4
  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 +42 -0
  71. package/dist/cli/pageSemantics.d.ts.map +1 -0
  72. package/dist/cli/pageSemantics.js +194 -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/sessionRegistry.d.ts +42 -0
  81. package/dist/cli/sessionRegistry.d.ts.map +1 -0
  82. package/dist/cli/sessionRegistry.js +99 -0
  83. package/dist/cli/sessionRegistry.js.map +1 -0
  84. package/dist/cli/snapshot.d.ts +100 -18
  85. package/dist/cli/snapshot.d.ts.map +1 -1
  86. package/dist/cli/snapshot.js +248 -102
  87. package/dist/cli/snapshot.js.map +1 -1
  88. package/dist/cli/stateStore.d.ts +50 -0
  89. package/dist/cli/stateStore.d.ts.map +1 -0
  90. package/dist/cli/stateStore.js +122 -0
  91. package/dist/cli/stateStore.js.map +1 -0
  92. package/dist/index.d.ts +1 -1
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/lib/bidi/index.d.ts +1 -1
  96. package/dist/lib/bidi/index.d.ts.map +1 -1
  97. package/dist/lib/bidi/index.js +2 -2
  98. package/dist/lib/bidi/index.js.map +1 -1
  99. package/dist/lib/bidi/logs.d.ts +3 -0
  100. package/dist/lib/bidi/logs.d.ts.map +1 -1
  101. package/dist/lib/bidi/logs.js +7 -0
  102. package/dist/lib/bidi/logs.js.map +1 -1
  103. package/dist/lib/bidi/network.d.ts +14 -1
  104. package/dist/lib/bidi/network.d.ts.map +1 -1
  105. package/dist/lib/bidi/network.js +45 -7
  106. package/dist/lib/bidi/network.js.map +1 -1
  107. package/dist/lib/bidi/storage.d.ts +30 -6
  108. package/dist/lib/bidi/storage.d.ts.map +1 -1
  109. package/dist/lib/bidi/storage.js +190 -45
  110. package/dist/lib/bidi/storage.js.map +1 -1
  111. package/dist/lib/bidi/types.d.ts +7 -2
  112. package/dist/lib/bidi/types.d.ts.map +1 -1
  113. package/dist/lib/browser.d.ts +6 -3
  114. package/dist/lib/browser.d.ts.map +1 -1
  115. package/dist/lib/browser.js +140 -30
  116. package/dist/lib/browser.js.map +1 -1
  117. package/dist/lib/browserContext.d.ts +54 -18
  118. package/dist/lib/browserContext.d.ts.map +1 -1
  119. package/dist/lib/browserContext.js +295 -92
  120. package/dist/lib/browserContext.js.map +1 -1
  121. package/dist/lib/by.d.ts +3 -3
  122. package/dist/lib/by.d.ts.map +1 -1
  123. package/dist/lib/by.js +7 -3
  124. package/dist/lib/by.js.map +1 -1
  125. package/dist/lib/driver.d.ts +7 -0
  126. package/dist/lib/driver.d.ts.map +1 -1
  127. package/dist/lib/driver.js +12 -0
  128. package/dist/lib/driver.js.map +1 -1
  129. package/dist/lib/errors.d.ts +8 -0
  130. package/dist/lib/errors.d.ts.map +1 -1
  131. package/dist/lib/errors.js +8 -0
  132. package/dist/lib/errors.js.map +1 -1
  133. package/dist/lib/initScript.d.ts +9 -0
  134. package/dist/lib/initScript.d.ts.map +1 -0
  135. package/dist/lib/initScript.js +14 -0
  136. package/dist/lib/initScript.js.map +1 -0
  137. package/dist/lib/page.d.ts +22 -0
  138. package/dist/lib/page.d.ts.map +1 -1
  139. package/dist/lib/page.js +48 -0
  140. package/dist/lib/page.js.map +1 -1
  141. package/dist/lib/secureFile.d.ts +8 -0
  142. package/dist/lib/secureFile.d.ts.map +1 -0
  143. package/dist/lib/secureFile.js +67 -0
  144. package/dist/lib/secureFile.js.map +1 -0
  145. package/dist/lib/sessionStateValidation.d.ts +35 -0
  146. package/dist/lib/sessionStateValidation.d.ts.map +1 -0
  147. package/dist/lib/sessionStateValidation.js +223 -0
  148. package/dist/lib/sessionStateValidation.js.map +1 -0
  149. package/dist/lib/tracing.d.ts +2 -1
  150. package/dist/lib/tracing.d.ts.map +1 -1
  151. package/dist/lib/tracing.js +12 -1
  152. package/dist/lib/tracing.js.map +1 -1
  153. package/docs/agents.md +56 -61
  154. package/docs/api-reference.md +2 -1
  155. package/docs/browser-api.md +24 -4
  156. package/docs/browser-context.md +18 -12
  157. package/docs/cli.md +346 -26
  158. package/docs/error-codes.md +5 -4
  159. package/docs/getting-started.md +6 -1
  160. package/docs/index.md +1 -1
  161. package/docs/mcp.md +129 -62
  162. package/docs/public/examples/agent-actions.html +48 -0
  163. package/docs/public/examples/agent-debug.html +86 -0
  164. package/docs/public/examples/agent-late-mutation.html +18 -0
  165. package/docs/public/examples/agent-ref-shift.html +33 -0
  166. package/docs/recipes/login-once-reuse-session.md +32 -4
  167. package/docs/session-management.md +64 -3
  168. package/docs/why-craftdriver.md +1 -1
  169. package/package.json +3 -1
  170. package/skills/craftdriver/SKILL.md +59 -75
  171. package/skills/craftdriver/agents/openai.yaml +4 -0
  172. package/skills/craftdriver/cheatsheet.md +18 -4
  173. package/skills/craftdriver/cli.md +194 -68
  174. package/skills/craftdriver/patterns.md +14 -8
  175. package/skills/craftdriver/workflow.md +149 -0
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/cli/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/cli/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Page-side role and accessible-name extraction, shared by the snapshot and
3
+ * the locator-candidate builder.
4
+ *
5
+ * These two surfaces must agree, and both must agree with `By.role` — that is
6
+ * the whole point of the module. The snapshot tells an agent an element is a
7
+ * `listbox`; the candidate builder proposes `role=listbox[name=Colors]`; and
8
+ * `By.role('listbox', { name: 'Colors' })` has to actually resolve it in the
9
+ * committed test. When those three drifted apart, the recommended locator for
10
+ * a multi-select was a brittle `text=RedBlue`.
11
+ *
12
+ * So the mapping lives here once, `src/lib/by.ts` stays the resolution
13
+ * authority, and `tests/cli/role-conformance.test.ts` pins the agreement
14
+ * against a real browser.
15
+ *
16
+ * Emitted as JS **source text**: both callers assemble a body for
17
+ * `page.evaluate`, and the build has no DOM lib. Keep it dependency-free and
18
+ * side-effect-free — it is concatenated into larger scripts.
19
+ *
20
+ * ## The ARIA role / display token split
21
+ *
22
+ * `ariaRole` returns a real ARIA role or `null`. `null` is not a failure: an
23
+ * `<input type="password">` genuinely has no ARIA role, and pretending it is a
24
+ * `textbox` produces a `role=textbox[name=Password]` that resolves to nothing.
25
+ * The snapshot falls back to `displayRole` (the tag name) so the element still
26
+ * appears, while the candidate builder proposes a role locator only when
27
+ * `ariaRole` is non-null. Honest over convenient.
28
+ */
29
+ /**
30
+ * Function declarations injected into a page-side script.
31
+ *
32
+ * Provides `firstRoleToken`, `hasSectioningAncestor`, `ariaRole`,
33
+ * `displayRole`, `associatedLabel` and `accName`.
34
+ */
35
+ export declare const PAGE_SEMANTICS_JS = "\nfunction firstRoleToken(el) {\n const role = (el.getAttribute('role') || '').trim();\n return role ? role.split(/\\s+/)[0] : null;\n}\n// Mirrors HAS_SECTIONING_ANCESTOR in src/lib/by.ts: header/footer are only\n// banner/contentinfo when not nested in sectioning content.\nfunction hasSectioningAncestor(el) {\n for (let p = el.parentElement; p; p = p.parentElement) {\n const t = p.tagName.toLowerCase();\n if (t === 'article' || t === 'aside' || t === 'main' || t === 'nav' || t === 'section') {\n return true;\n }\n const role = firstRoleToken(p);\n if (\n role === 'article' ||\n role === 'complementary' ||\n role === 'main' ||\n role === 'navigation' ||\n role === 'region'\n ) {\n return true;\n }\n }\n return false;\n}\n// The ARIA role, or null when the element has none that By.role can resolve.\n// Every branch here must have a counterpart in IMPLICIT_ROLE_XPATH.\nfunction ariaRole(el) {\n const explicit = firstRoleToken(el);\n if (explicit) return explicit;\n const t = el.tagName.toLowerCase();\n if (t === 'a' || t === 'area') return el.hasAttribute('href') ? 'link' : null;\n if (t === 'button' || t === 'summary') return 'button';\n if (t === 'input') {\n const it = (el.getAttribute('type') || 'text').toLowerCase();\n if (it === 'submit' || it === 'button' || it === 'reset' || it === 'image') return 'button';\n if (it === 'checkbox') return 'checkbox';\n if (it === 'radio') return 'radio';\n if (it === 'search') return 'searchbox';\n if (it === 'number') return 'spinbutton';\n if (it === 'range') return 'slider';\n if (it === 'text' || it === 'email' || it === 'tel' || it === 'url') return 'textbox';\n // password, date, file, color, hidden\u2026 have no corresponding ARIA role.\n return el.hasAttribute('type') ? null : 'textbox';\n }\n if (t === 'textarea') return 'textbox';\n // multiple/size are reflected IDL attributes, so reading the properties\n // stays equivalent to the attribute test By.role compiles to XPath.\n if (t === 'select') return el.multiple || el.size > 1 ? 'listbox' : 'combobox';\n if (/^h[1-6]$/.test(t)) return 'heading';\n if (t === 'img') return 'img';\n if (t === 'ul' || t === 'ol') return 'list';\n if (t === 'li') return 'listitem';\n if (t === 'table') return 'table';\n if (t === 'tr') return 'row';\n if (t === 'td') return 'cell';\n if (t === 'th') return 'columnheader';\n if (t === 'nav') return 'navigation';\n if (t === 'main') return 'main';\n if (t === 'article') return 'article';\n if (t === 'form') return 'form';\n if (t === 'header') return hasSectioningAncestor(el) ? null : 'banner';\n if (t === 'footer') return hasSectioningAncestor(el) ? null : 'contentinfo';\n return null;\n}\n// What the snapshot prints. Falls back to the tag name so an element with no\n// ARIA role is still listed and still addressable by ref.\nfunction displayRole(el) {\n return ariaRole(el) || el.tagName.toLowerCase();\n}\n// The <label> a user reads for a form control, independent of accName \u2014\n// By.labelText resolves against exactly this.\nfunction associatedLabel(el) {\n const t = el.tagName;\n if (t !== 'INPUT' && t !== 'TEXTAREA' && t !== 'SELECT') return null;\n if (el.id) {\n const forLabel = document.querySelector('label[for=' + JSON.stringify(el.id) + ']');\n if (forLabel) return (forLabel.textContent || '').trim() || null;\n }\n const parentLabel = el.closest('label');\n if (parentLabel) return (parentLabel.textContent || '').trim() || null;\n return null;\n}\n// Approximates the accessible name, in the same source order By.role's name\n// predicate checks. Sources By.role cannot match must not appear here.\nfunction accName(el) {\n const aria = el.getAttribute('aria-label');\n if (aria && aria.trim()) return aria.trim();\n const labelledby = el.getAttribute('aria-labelledby');\n if (labelledby) {\n // Single id only \u2014 By.role's @aria-labelledby test is an equality match.\n const ref = document.getElementById(labelledby);\n if (ref) {\n const t = (ref.textContent || '').trim();\n if (t) return t;\n }\n }\n const label = associatedLabel(el);\n if (label) return label;\n const tag = el.tagName;\n if (tag === 'INPUT') {\n const it = (el.getAttribute('type') || 'text').toLowerCase();\n // Native buttons carry their name in value=, not in text content.\n if (it === 'submit' || it === 'button' || it === 'reset') {\n const v = el.getAttribute('value');\n if (v && v.trim()) return v.trim();\n }\n if (it === 'image') {\n const alt = el.getAttribute('alt');\n if (alt && alt.trim()) return alt.trim();\n }\n }\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') {\n const placeholder = el.getAttribute('placeholder');\n if (placeholder && placeholder.trim()) return placeholder.trim();\n }\n if (tag === 'IMG') {\n const alt = el.getAttribute('alt');\n if (alt && alt.trim()) return alt.trim();\n }\n const text = (el.textContent || '').trim().replace(/\\s+/g, ' ');\n if (text) return text;\n const title = el.getAttribute('title');\n if (title && title.trim()) return title.trim();\n return '';\n}\n";
36
+ /**
37
+ * Every role `ariaRole` can emit for a native element. The conformance test
38
+ * walks this list, so a new branch above without a `By.role` counterpart
39
+ * fails CI rather than shipping an unresolvable recommendation.
40
+ */
41
+ export declare const EMITTABLE_ROLES: readonly ["link", "button", "checkbox", "radio", "searchbox", "spinbutton", "slider", "textbox", "listbox", "combobox", "heading", "img", "list", "listitem", "table", "row", "cell", "columnheader", "navigation", "main", "article", "form", "banner", "contentinfo"];
42
+ //# sourceMappingURL=pageSemantics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageSemantics.d.ts","sourceRoot":"","sources":["../../src/cli/pageSemantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,+nKA+H7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,yQAyBlB,CAAC"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Page-side role and accessible-name extraction, shared by the snapshot and
3
+ * the locator-candidate builder.
4
+ *
5
+ * These two surfaces must agree, and both must agree with `By.role` — that is
6
+ * the whole point of the module. The snapshot tells an agent an element is a
7
+ * `listbox`; the candidate builder proposes `role=listbox[name=Colors]`; and
8
+ * `By.role('listbox', { name: 'Colors' })` has to actually resolve it in the
9
+ * committed test. When those three drifted apart, the recommended locator for
10
+ * a multi-select was a brittle `text=RedBlue`.
11
+ *
12
+ * So the mapping lives here once, `src/lib/by.ts` stays the resolution
13
+ * authority, and `tests/cli/role-conformance.test.ts` pins the agreement
14
+ * against a real browser.
15
+ *
16
+ * Emitted as JS **source text**: both callers assemble a body for
17
+ * `page.evaluate`, and the build has no DOM lib. Keep it dependency-free and
18
+ * side-effect-free — it is concatenated into larger scripts.
19
+ *
20
+ * ## The ARIA role / display token split
21
+ *
22
+ * `ariaRole` returns a real ARIA role or `null`. `null` is not a failure: an
23
+ * `<input type="password">` genuinely has no ARIA role, and pretending it is a
24
+ * `textbox` produces a `role=textbox[name=Password]` that resolves to nothing.
25
+ * The snapshot falls back to `displayRole` (the tag name) so the element still
26
+ * appears, while the candidate builder proposes a role locator only when
27
+ * `ariaRole` is non-null. Honest over convenient.
28
+ */
29
+ /**
30
+ * Function declarations injected into a page-side script.
31
+ *
32
+ * Provides `firstRoleToken`, `hasSectioningAncestor`, `ariaRole`,
33
+ * `displayRole`, `associatedLabel` and `accName`.
34
+ */
35
+ export const PAGE_SEMANTICS_JS = `
36
+ function firstRoleToken(el) {
37
+ const role = (el.getAttribute('role') || '').trim();
38
+ return role ? role.split(/\\s+/)[0] : null;
39
+ }
40
+ // Mirrors HAS_SECTIONING_ANCESTOR in src/lib/by.ts: header/footer are only
41
+ // banner/contentinfo when not nested in sectioning content.
42
+ function hasSectioningAncestor(el) {
43
+ for (let p = el.parentElement; p; p = p.parentElement) {
44
+ const t = p.tagName.toLowerCase();
45
+ if (t === 'article' || t === 'aside' || t === 'main' || t === 'nav' || t === 'section') {
46
+ return true;
47
+ }
48
+ const role = firstRoleToken(p);
49
+ if (
50
+ role === 'article' ||
51
+ role === 'complementary' ||
52
+ role === 'main' ||
53
+ role === 'navigation' ||
54
+ role === 'region'
55
+ ) {
56
+ return true;
57
+ }
58
+ }
59
+ return false;
60
+ }
61
+ // The ARIA role, or null when the element has none that By.role can resolve.
62
+ // Every branch here must have a counterpart in IMPLICIT_ROLE_XPATH.
63
+ function ariaRole(el) {
64
+ const explicit = firstRoleToken(el);
65
+ if (explicit) return explicit;
66
+ const t = el.tagName.toLowerCase();
67
+ if (t === 'a' || t === 'area') return el.hasAttribute('href') ? 'link' : null;
68
+ if (t === 'button' || t === 'summary') return 'button';
69
+ if (t === 'input') {
70
+ const it = (el.getAttribute('type') || 'text').toLowerCase();
71
+ if (it === 'submit' || it === 'button' || it === 'reset' || it === 'image') return 'button';
72
+ if (it === 'checkbox') return 'checkbox';
73
+ if (it === 'radio') return 'radio';
74
+ if (it === 'search') return 'searchbox';
75
+ if (it === 'number') return 'spinbutton';
76
+ if (it === 'range') return 'slider';
77
+ if (it === 'text' || it === 'email' || it === 'tel' || it === 'url') return 'textbox';
78
+ // password, date, file, color, hidden… have no corresponding ARIA role.
79
+ return el.hasAttribute('type') ? null : 'textbox';
80
+ }
81
+ if (t === 'textarea') return 'textbox';
82
+ // multiple/size are reflected IDL attributes, so reading the properties
83
+ // stays equivalent to the attribute test By.role compiles to XPath.
84
+ if (t === 'select') return el.multiple || el.size > 1 ? 'listbox' : 'combobox';
85
+ if (/^h[1-6]$/.test(t)) return 'heading';
86
+ if (t === 'img') return 'img';
87
+ if (t === 'ul' || t === 'ol') return 'list';
88
+ if (t === 'li') return 'listitem';
89
+ if (t === 'table') return 'table';
90
+ if (t === 'tr') return 'row';
91
+ if (t === 'td') return 'cell';
92
+ if (t === 'th') return 'columnheader';
93
+ if (t === 'nav') return 'navigation';
94
+ if (t === 'main') return 'main';
95
+ if (t === 'article') return 'article';
96
+ if (t === 'form') return 'form';
97
+ if (t === 'header') return hasSectioningAncestor(el) ? null : 'banner';
98
+ if (t === 'footer') return hasSectioningAncestor(el) ? null : 'contentinfo';
99
+ return null;
100
+ }
101
+ // What the snapshot prints. Falls back to the tag name so an element with no
102
+ // ARIA role is still listed and still addressable by ref.
103
+ function displayRole(el) {
104
+ return ariaRole(el) || el.tagName.toLowerCase();
105
+ }
106
+ // The <label> a user reads for a form control, independent of accName —
107
+ // By.labelText resolves against exactly this.
108
+ function associatedLabel(el) {
109
+ const t = el.tagName;
110
+ if (t !== 'INPUT' && t !== 'TEXTAREA' && t !== 'SELECT') return null;
111
+ if (el.id) {
112
+ const forLabel = document.querySelector('label[for=' + JSON.stringify(el.id) + ']');
113
+ if (forLabel) return (forLabel.textContent || '').trim() || null;
114
+ }
115
+ const parentLabel = el.closest('label');
116
+ if (parentLabel) return (parentLabel.textContent || '').trim() || null;
117
+ return null;
118
+ }
119
+ // Approximates the accessible name, in the same source order By.role's name
120
+ // predicate checks. Sources By.role cannot match must not appear here.
121
+ function accName(el) {
122
+ const aria = el.getAttribute('aria-label');
123
+ if (aria && aria.trim()) return aria.trim();
124
+ const labelledby = el.getAttribute('aria-labelledby');
125
+ if (labelledby) {
126
+ // Single id only — By.role's @aria-labelledby test is an equality match.
127
+ const ref = document.getElementById(labelledby);
128
+ if (ref) {
129
+ const t = (ref.textContent || '').trim();
130
+ if (t) return t;
131
+ }
132
+ }
133
+ const label = associatedLabel(el);
134
+ if (label) return label;
135
+ const tag = el.tagName;
136
+ if (tag === 'INPUT') {
137
+ const it = (el.getAttribute('type') || 'text').toLowerCase();
138
+ // Native buttons carry their name in value=, not in text content.
139
+ if (it === 'submit' || it === 'button' || it === 'reset') {
140
+ const v = el.getAttribute('value');
141
+ if (v && v.trim()) return v.trim();
142
+ }
143
+ if (it === 'image') {
144
+ const alt = el.getAttribute('alt');
145
+ if (alt && alt.trim()) return alt.trim();
146
+ }
147
+ }
148
+ if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') {
149
+ const placeholder = el.getAttribute('placeholder');
150
+ if (placeholder && placeholder.trim()) return placeholder.trim();
151
+ }
152
+ if (tag === 'IMG') {
153
+ const alt = el.getAttribute('alt');
154
+ if (alt && alt.trim()) return alt.trim();
155
+ }
156
+ const text = (el.textContent || '').trim().replace(/\\s+/g, ' ');
157
+ if (text) return text;
158
+ const title = el.getAttribute('title');
159
+ if (title && title.trim()) return title.trim();
160
+ return '';
161
+ }
162
+ `;
163
+ /**
164
+ * Every role `ariaRole` can emit for a native element. The conformance test
165
+ * walks this list, so a new branch above without a `By.role` counterpart
166
+ * fails CI rather than shipping an unresolvable recommendation.
167
+ */
168
+ export const EMITTABLE_ROLES = [
169
+ 'link',
170
+ 'button',
171
+ 'checkbox',
172
+ 'radio',
173
+ 'searchbox',
174
+ 'spinbutton',
175
+ 'slider',
176
+ 'textbox',
177
+ 'listbox',
178
+ 'combobox',
179
+ 'heading',
180
+ 'img',
181
+ 'list',
182
+ 'listitem',
183
+ 'table',
184
+ 'row',
185
+ 'cell',
186
+ 'columnheader',
187
+ 'navigation',
188
+ 'main',
189
+ 'article',
190
+ 'form',
191
+ 'banner',
192
+ 'contentinfo',
193
+ ];
194
+ //# sourceMappingURL=pageSemantics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageSemantics.js","sourceRoot":"","sources":["../../src/cli/pageSemantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HhC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM;IACN,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;IACV,SAAS;IACT,KAAK;IACL,MAAM;IACN,UAAU;IACV,OAAO;IACP,KAAK;IACL,MAAM;IACN,cAAc;IACd,YAAY;IACZ,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,aAAa;CACL,CAAC"}
@@ -1,24 +1,7 @@
1
- /**
2
- * Translate raw `argv` into a `(cmd, args)` pair that the dispatcher
3
- * understands. Hand-rolled because v1 has ~20 commands; pulling in
4
- * `commander`/`yargs` would dwarf the library footprint.
5
- *
6
- * Recognised global flags (anywhere on the command line):
7
- * --timeout <ms> per-call timeout override
8
- * --json force JSON output even on a TTY
9
- * --pretty force pretty output even when piped
10
- * --explain include one-line BiDi step log (placeholder)
11
- * --headless / --headed launch option (only honoured for ephemeral / first daemon start)
12
- * --browser <name> chrome|chromium|firefox|safari
13
- * --ephemeral run from stdin, don't talk to daemon
14
- *
15
- * Returns `null` when the user only asked for help / version.
16
- */
17
1
  import type { LaunchOptions } from '../lib/browser.js';
18
2
  export interface GlobalFlags {
19
3
  json?: boolean;
20
4
  pretty?: boolean;
21
- explain?: boolean;
22
5
  ephemeral?: boolean;
23
6
  help?: boolean;
24
7
  version?: boolean;
@@ -26,12 +9,17 @@ export interface GlobalFlags {
26
9
  /** When set, `craftdriver` should set `process.env.HEADLESS` before launch. */
27
10
  headless?: boolean;
28
11
  timeout?: number;
12
+ /**
13
+ * Named daemon session. Raw and unvalidated here — `main` validates it
14
+ * before opening a socket, so a bad name never starts a daemon.
15
+ */
16
+ session?: string;
29
17
  }
30
18
  export interface ParsedCommand {
31
19
  cmd: string;
32
20
  args: Record<string, unknown>;
33
21
  flags: GlobalFlags;
34
22
  }
35
- export declare const HELP_TEXT = "craftdriver \u2014 agent-first WebDriver CLI\n\nUSAGE\n craftdriver <command> [args...] [flags]\n\nCOMMON COMMANDS\n go <url> navigate the active page\n find <selector> [--all] [--limit N] [--offset M]\n click <selector>\n fill <selector> <value>\n press <key> [selector]\n hover <selector>\n text [selector] [--limit N]\n attr <selector> <name>\n value <selector>\n is visible|enabled|checked <selector>\n wait <selector> [--state visible|hidden|attached|detached] [--timeout ms]\n wait load [--state load|domcontentloaded|networkidle]\n exists <selector> 0-wait probe; exit 0 if any match\n pages list open pages\n snapshot sanitized DOM summary with refs\n (use ref=eN as a selector)\n screenshot [-o file.png] [--full-page] [--selector S]\n eval <js> advanced; evaluate JS on active page\n back | forward | reload | status | quit\n\nDAEMON\n daemon start launch background browser (Unix socket)\n daemon status PID, browser, active page URL\n daemon stop graceful shutdown\n\nINIT (agent guide files for the current project)\n init <flavor> [--force] [--dry-run]\n flavors: agents | copilot | claude | cursor | gemini | all\n writes a short rules file under the path each tool expects:\n agents \u2192 AGENTS.md\n copilot \u2192 .github/copilot-instructions.md\n claude \u2192 CLAUDE.md\n cursor \u2192 .cursor/rules/craftdriver.mdc\n gemini \u2192 GEMINI.md\n all \u2192 every file above\n\nMCP SERVER (for hosted / sandboxed AI agents)\n mcp speak Model Context Protocol on stdio\n install snippet (Claude Code):\n claude mcp add craftdriver -- npx -y craftdriver mcp\n install snippet (Cursor / Windsurf / Zed):\n { \"mcpServers\": { \"craftdriver\": {\n \"command\": \"npx\", \"args\": [\"-y\", \"craftdriver\", \"mcp\"] } } }\n\nEPHEMERAL MODE (sandboxed agents)\n craftdriver --ephemeral < script.txt\n (one command per line; same syntax as on the CLI)\n\nSELECTOR SYNTAX\n CSS by default. Prefix to switch kind:\n role=button[name=Submit] text=Sign In label=Email\n placeholder=Search\u2026 testid=login-btn xpath=//div[1]\n\nFLAGS\n --timeout <ms> per-call timeout (default 5000ms)\n --json | --pretty force output format\n --headless / --headed override headless mode (first launch only)\n --browser <chrome|chromium|firefox|safari>\n --ephemeral no daemon; read commands from stdin\n\nEXIT CODES\n 0 success 1 assertion/timeout/no-match 2 usage error\n";
23
+ export declare const HELP_TEXT = "craftdriver \u2014 agent-first WebDriver CLI\n\nUSAGE\n craftdriver <command> [args...] [flags]\n\nCOMMON COMMANDS\n go <url> navigate the active page\n find <selector> [--all] [--limit N] [--offset M]\n click <selector>\n dblclick <selector>\n fill <selector> <value> clear, then enter the value\n type <text> type into the focused element\n clear <selector>\n check <selector> | uncheck <selector>\n select <selector> <value> pick an <option> by its value attribute\n focus <selector> focus a field (caret to end), then type\n scroll <selector>\n press <key> [selector]\n hover <selector>\n text [selector] [--limit N]\n attr <selector> <name>\n value <selector>\n is visible|enabled|checked <selector>\n wait <selector> [--state visible|hidden|attached|detached] [--timeout ms]\n wait load [--state load|domcontentloaded|networkidle]\n exists <selector> 0-wait probe; exit 0 if any match\n pages list open pages\n page list open pages, marking the active one\n page open [url] open a tab and select it\n page select <index|id> send later commands to that tab\n page close <index|id> close a tab\n snapshot sanitized DOM summary with refs\n (use ref=eN as a selector)\n locators <selector> durable selectors for an element,\n each re-checked against the live page\n logs [list] [--kind console,error,request,response] [--level error]\n [--contains text] [--since N] [--limit N]\n what the page logged and requested\n logs wait --contains <text> [--kind k] [--timeout ms]\n logs clear\n mock add <url-pattern> [--status N] [--body S] [--content-type T]\n reply with a fixed response\n mock block <url-pattern> fail matching requests\n mock list | mock remove <id> | mock clear\n trace start [name] [--no-screenshots]\n record actions, console and network\n trace stop [--zip] stop and report where it landed\n trace status\n state save <name> [--session-storage]\n save cookies + local storage for reuse\n state load <name> restore saved login state (pre-navigation on BiDi)\n state list saved state names\n screenshot [-o file.png] [--full-page] [--selector S]\n eval <js> advanced; evaluate JS on active page\n back | forward | reload | status | quit\n\nKEYBOARD / MOUSE / DIALOGS / UPLOAD\n key press|down|up <key> [--selector S]\n mouse move|click [selector] [--x N --y N] [--button left|middle|right]\n mouse down|up [--button left|middle|right]\n mouse wheel [selector] [--delta-x N] [--delta-y N]\n dialog inspect | dialog accept [text] | dialog dismiss\n upload <selector> <file> [file...]\n\nREFS VS. DURABLE LOCATORS\n Refs (e1, e2, \u2026) come from \"snapshot\" and are for exploration only. They\n bind to one element in one document: if it is removed, duplicated, or the\n page navigates, the ref fails with STALE_REF instead of quietly acting on\n a different element. Never put a ref in a committed test \u2014 run\n \"locators <ref>\" and use a candidate it reports as unique.\n\nDAEMON\n daemon start launch background browser (Unix socket)\n daemon status PID, browser, active page URL\n daemon stop graceful shutdown\n Not available on Windows; use --ephemeral or MCP there.\n\nNAMED SESSIONS\n --session <name> route a command to its own browser\n session list open sessions and the limit\n session close [name] quit one session's browser, free the slot\n\n Each session owns a browser, page selection, snapshot baseline and refs.\n Sessions number their refs independently, so \"e4\" exists in more than one\n session and always acts on the session you addressed \u2014 never carry a ref\n between sessions. Sessions are created on first use and run independently,\n so a slow command in one does not block another. Not available with\n --ephemeral, which is a single browser that exits with the command.\n\nINIT (safe project-local skill)\n init codex [--dry-run] [--mcp]\n installs .agents/skills/craftdriver without reading or changing\n AGENTS.md, CLAUDE.md, other repository instructions, or Codex config\n --mcp prints a project-pinned config snippet for manual installation\n\nMCP SERVER (for hosted / sandboxed AI agents)\n mcp speak Model Context Protocol on stdio\n install snippet (Claude Code):\n claude mcp add craftdriver -- npx --no-install craftdriver mcp\n install snippet (Cursor / Windsurf / Zed):\n { \"mcpServers\": { \"craftdriver\": {\n \"command\": \"npx\", \"args\": [\"--no-install\", \"craftdriver\", \"mcp\"] } } }\n\nEPHEMERAL MODE (sandboxed agents)\n craftdriver --ephemeral < script.txt\n (one command per line; same syntax as on the CLI)\n\nSELECTOR SYNTAX\n CSS by default. Prefix to switch kind:\n role=button[name=Submit] text=Sign In label=Email\n placeholder=Search\u2026 testid=login-btn xpath=//div[1]\n\nFLAGS\n --timeout <ms> per-call timeout (default 5000ms)\n --json | --pretty force output format\n --headless / --headed override headless mode (first launch only)\n --browser <chrome|chromium|firefox|safari>\n --session <name> named daemon session (default: default)\n --ephemeral no daemon; read commands from stdin\n\nEXIT CODES\n 0 success 1 assertion/timeout/no-match 2 usage error\n";
36
24
  export declare function parseArgv(argv: string[]): ParsedCommand | null;
37
25
  //# sourceMappingURL=parseArgs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseArgs.d.ts","sourceRoot":"","sources":["../../src/cli/parseArgs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,kwFAoErB,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,GAAG,IAAI,CA2I9D"}
1
+ {"version":3,"file":"parseArgs.d.ts","sourceRoot":"","sources":["../../src/cli/parseArgs.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,+0LA0HrB,CAAC;AAmTF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,GAAG,IAAI,CAqe9D"}