chromeflow 0.9.10 → 0.9.11

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.
@@ -24782,7 +24782,7 @@ After tabs.onUpdated fires status=complete, chromeflow also runs a 6s settle che
24782
24782
  url: external_exports.string().url().describe("The URL to navigate to"),
24783
24783
  new_tab: external_exports.boolean().optional().describe("Open in a new tab instead of replacing the current one (default false)"),
24784
24784
  background: external_exports.boolean().optional().describe("If new_tab=true, do not switch focus to the new tab. Default false. Ignored when new_tab is false."),
24785
- expect_selector: external_exports.string().optional().describe("CSS selector for an element that must be present before the page is considered settled. The settle check waits up to 6s for it; if it never appears, the response carries expect_selector_appeared:false so you can detect dead-spinner routes (e.g. Outlier /en/expert/tasks).")
24785
+ expect_selector: external_exports.string().optional().describe("CSS selector for an element that must be present before the page is considered settled. The settle check waits up to 6s for it; if it never appears, the response carries expect_selector_appeared:false so you can detect dead-spinner routes (SPAs that leave a permanent spinner when the underlying API request dies).")
24786
24786
  },
24787
24787
  async ({ url, new_tab, background, expect_selector }) => {
24788
24788
  const block = isBlockedUrl(url);
@@ -24802,7 +24802,7 @@ After tabs.onUpdated fires status=complete, chromeflow also runs a 6s settle che
24802
24802
  if (r.stuck_spinner) {
24803
24803
  text += `
24804
24804
 
24805
- \u26A0 stuck_spinner: true \u2014 page settled with a visible spinner (${r.spinner_selector ?? "unknown selector"}) still on screen after 6s. Current URL: ${r.current_url ?? url}. The route may be dead (Outlier /en/expert/tasks pattern) \u2014 navigate elsewhere instead of reloading, or wait and try get_page_text to see if it ever recovers.`;
24805
+ \u26A0 stuck_spinner: true \u2014 page settled with a visible spinner (${r.spinner_selector ?? "unknown selector"}) still on screen after 6s. Current URL: ${r.current_url ?? url}. The route may be dead (some SPAs leave a permanent spinner when the underlying API request fails) \u2014 navigate elsewhere instead of reloading, or wait and try get_page_text to see if it ever recovers.`;
24806
24806
  }
24807
24807
  if (expect_selector && r.expect_selector_appeared === false) {
24808
24808
  text += `
@@ -25076,7 +25076,7 @@ ${lines.join("\n")}${r.warning ?? ""}${captchaLine}${oauthLine}` }] };
25076
25076
  {
25077
25077
  text: external_exports.string().describe("The text to type into the focused element"),
25078
25078
  into_selector: external_exports.string().optional().describe(
25079
- "CSS selector for the element to focus before typing (shadow-piercing \u2014 resolves selectors that find_text returns for closed-shadow-root content, e.g. Outlier-style Radix portals). When omitted, types into whatever is currently focused (the caller is responsible for focusing first via click_element)."
25079
+ "CSS selector for the element to focus before typing (shadow-piercing \u2014 resolves selectors that find_text returns for closed-shadow-root content, e.g. Radix portals). When omitted, types into whatever is currently focused (the caller is responsible for focusing first via click_element)."
25080
25080
  ),
25081
25081
  clear_first: external_exports.boolean().optional().describe(
25082
25082
  "Only with into_selector: run document.execCommand('selectAll') + 'delete' on the focused element before typing. Use to overwrite tiptap / ProseMirror editors and similar contenteditable surfaces in one call."
@@ -25900,7 +25900,7 @@ ${lines.join("\n")}${shadowSection}` }] };
25900
25900
  }
25901
25901
 
25902
25902
  // packages/mcp-server/src/index.ts
25903
- var PACKAGE_VERSION = true ? "0.9.10" : "dev";
25903
+ var PACKAGE_VERSION = true ? "0.9.11" : "dev";
25904
25904
  main().catch((err) => {
25905
25905
  console.error("[chromeflow] Fatal error:", err);
25906
25906
  process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chromeflow",
3
- "version": "0.9.10",
3
+ "version": "0.9.11",
4
4
  "description": "MCP server for chromeflow — lets Claude Code or Codex CLI drive your real Chrome browser with sessions intact. Plugin install recommended; npx chromeflow for manual MCP wiring.",
5
5
  "type": "module",
6
6
  "main": "./bin/chromeflow.mjs",