camoufox-cli 0.6.0__tar.gz → 0.7.0__tar.gz

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 (122) hide show
  1. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/PKG-INFO +20 -6
  2. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/README.md +18 -4
  3. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/package-lock.json +130 -64
  4. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/package.json +3 -3
  5. camoufox_cli-0.7.0/js/src/browser.ts +371 -0
  6. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/cli.ts +31 -17
  7. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/commands.ts +56 -44
  8. camoufox_cli-0.7.0/js/src/server.ts +200 -0
  9. camoufox_cli-0.7.0/js/tests/browser.test.ts +98 -0
  10. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/js/tests/cli.test.ts +16 -5
  11. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/tests/commands.test.ts +1 -6
  12. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/js/tests/e2e.test.ts +83 -5
  13. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/tests/server.test.ts +64 -0
  14. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/pyproject.toml +2 -2
  15. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/skills/camoufox-cli/SKILL.md +58 -24
  16. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/skills/camoufox-cli/references/commands.md +12 -6
  17. camoufox_cli-0.7.0/src/camoufox_cli/browser.py +316 -0
  18. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/src/camoufox_cli/cli.py +35 -19
  19. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/commands.py +59 -43
  20. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/server.py +68 -24
  21. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/tests/test_cli.py +14 -4
  22. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/tests/test_commands.py +8 -8
  23. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/tests/test_e2e.py +90 -5
  24. camoufox_cli-0.7.0/tests/test_server.py +101 -0
  25. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/.claude-plugin/marketplace.json +0 -20
  26. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/js/src/browser.ts +0 -199
  27. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/js/src/server.ts +0 -131
  28. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/js/tests/browser.test.ts +0 -61
  29. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/js/tests/cli.test.ts +0 -455
  30. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/js/tests/e2e.test.ts +0 -216
  31. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/pyproject.toml +0 -46
  32. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/skills/camoufox-cli/SKILL.md +0 -351
  33. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/skills/camoufox-cli/references/commands.md +0 -143
  34. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/src/camoufox_cli/browser.py +0 -197
  35. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/src/camoufox_cli/cli.py +0 -517
  36. camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6/tests/test_cli.py +0 -392
  37. camoufox_cli-0.6.0/.gitignore +0 -30
  38. camoufox_cli-0.6.0/LICENSE +0 -21
  39. camoufox_cli-0.6.0/Makefile +0 -30
  40. camoufox_cli-0.6.0/README.md +0 -257
  41. camoufox_cli-0.6.0/js/.gitignore +0 -2
  42. camoufox_cli-0.6.0/js/LICENSE +0 -21
  43. camoufox_cli-0.6.0/js/package-lock.json +0 -2719
  44. camoufox_cli-0.6.0/js/package.json +0 -47
  45. camoufox_cli-0.6.0/js/pnpm-lock.yaml +0 -1599
  46. camoufox_cli-0.6.0/js/scripts/postinstall.js +0 -11
  47. camoufox_cli-0.6.0/js/src/browser.ts +0 -199
  48. camoufox_cli-0.6.0/js/src/cli.ts +0 -506
  49. camoufox_cli-0.6.0/js/src/commands.ts +0 -352
  50. camoufox_cli-0.6.0/js/src/config.ts +0 -140
  51. camoufox_cli-0.6.0/js/src/daemon.ts +0 -27
  52. camoufox_cli-0.6.0/js/src/identity.ts +0 -206
  53. camoufox_cli-0.6.0/js/src/install.ts +0 -126
  54. camoufox_cli-0.6.0/js/src/protocol.ts +0 -32
  55. camoufox_cli-0.6.0/js/src/proxy.ts +0 -40
  56. camoufox_cli-0.6.0/js/src/refs.ts +0 -65
  57. camoufox_cli-0.6.0/js/src/server.ts +0 -131
  58. camoufox_cli-0.6.0/js/tests/browser.test.ts +0 -61
  59. camoufox_cli-0.6.0/js/tests/commands.test.ts +0 -194
  60. camoufox_cli-0.6.0/js/tests/install.test.ts +0 -153
  61. camoufox_cli-0.6.0/js/tests/protocol.test.ts +0 -98
  62. camoufox_cli-0.6.0/js/tests/proxy.test.ts +0 -55
  63. camoufox_cli-0.6.0/js/tests/refs.test.ts +0 -150
  64. camoufox_cli-0.6.0/js/tests/server.test.ts +0 -193
  65. camoufox_cli-0.6.0/js/tsconfig.json +0 -14
  66. camoufox_cli-0.6.0/js/vitest.config.ts +0 -7
  67. camoufox_cli-0.6.0/skills/camoufox-cli/references/snapshot-refs.md +0 -221
  68. camoufox_cli-0.6.0/src/camoufox_cli/__init__.py +0 -0
  69. camoufox_cli-0.6.0/src/camoufox_cli/__main__.py +0 -38
  70. camoufox_cli-0.6.0/src/camoufox_cli/browser.py +0 -197
  71. camoufox_cli-0.6.0/src/camoufox_cli/commands.py +0 -390
  72. camoufox_cli-0.6.0/src/camoufox_cli/config.py +0 -130
  73. camoufox_cli-0.6.0/src/camoufox_cli/identity.py +0 -215
  74. camoufox_cli-0.6.0/src/camoufox_cli/install.py +0 -127
  75. camoufox_cli-0.6.0/src/camoufox_cli/protocol.py +0 -24
  76. camoufox_cli-0.6.0/src/camoufox_cli/proxy.py +0 -30
  77. camoufox_cli-0.6.0/src/camoufox_cli/refs.py +0 -83
  78. camoufox_cli-0.6.0/src/camoufox_cli/server.py +0 -145
  79. camoufox_cli-0.6.0/tests/__init__.py +0 -0
  80. camoufox_cli-0.6.0/tests/fixture.html +0 -22
  81. camoufox_cli-0.6.0/tests/test_commands.py +0 -556
  82. camoufox_cli-0.6.0/tests/test_e2e.py +0 -217
  83. camoufox_cli-0.6.0/tests/test_install.py +0 -150
  84. camoufox_cli-0.6.0/tests/test_protocol.py +0 -63
  85. camoufox_cli-0.6.0/tests/test_proxy.py +0 -37
  86. camoufox_cli-0.6.0/tests/test_refs.py +0 -112
  87. {camoufox_cli-0.6.0 → camoufox_cli-0.7.0}/.claude-plugin/marketplace.json +0 -0
  88. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/.gitignore +0 -0
  89. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/LICENSE +0 -0
  90. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/Makefile +0 -0
  91. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/.gitignore +0 -0
  92. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/LICENSE +0 -0
  93. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/pnpm-lock.yaml +0 -0
  94. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/scripts/postinstall.js +0 -0
  95. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/config.ts +0 -0
  96. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/daemon.ts +0 -0
  97. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/identity.ts +0 -0
  98. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/install.ts +0 -0
  99. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/protocol.ts +0 -0
  100. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/proxy.ts +0 -0
  101. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/src/refs.ts +0 -0
  102. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/tests/install.test.ts +0 -0
  103. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/tests/protocol.test.ts +0 -0
  104. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/tests/proxy.test.ts +0 -0
  105. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/tests/refs.test.ts +0 -0
  106. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/tsconfig.json +0 -0
  107. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/js/vitest.config.ts +0 -0
  108. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/skills/camoufox-cli/references/snapshot-refs.md +0 -0
  109. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/__init__.py +0 -0
  110. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/__main__.py +0 -0
  111. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/config.py +0 -0
  112. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/identity.py +0 -0
  113. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/install.py +0 -0
  114. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/protocol.py +0 -0
  115. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/proxy.py +0 -0
  116. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/src/camoufox_cli/refs.py +0 -0
  117. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/tests/__init__.py +0 -0
  118. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/tests/fixture.html +0 -0
  119. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/tests/test_install.py +0 -0
  120. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/tests/test_protocol.py +0 -0
  121. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/tests/test_proxy.py +0 -0
  122. {camoufox_cli-0.6.0/.claude/worktrees/busy-darwin-6b67a6 → camoufox_cli-0.7.0}/tests/test_refs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camoufox-cli
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Anti-detect browser CLI & Skills for AI agents, powered by Camoufox
5
5
  Project-URL: Homepage, https://github.com/Bin-Huang/camoufox-cli
6
6
  Project-URL: Repository, https://github.com/Bin-Huang/camoufox-cli
@@ -17,7 +17,7 @@ Classifier: Topic :: Software Development :: Testing
17
17
  Requires-Python: >=3.10
18
18
  Requires-Dist: camoufox[geoip]
19
19
  Requires-Dist: pillow
20
- Requires-Dist: playwright
20
+ Requires-Dist: playwright==1.52.0
21
21
  Description-Content-Type: text/markdown
22
22
 
23
23
  # camoufox-cli
@@ -94,7 +94,7 @@ camoufox-cli forward # Go forward
94
94
  camoufox-cli reload # Reload page
95
95
  camoufox-cli url # Print current URL
96
96
  camoufox-cli title # Print page title
97
- camoufox-cli close # Close browser and stop daemon
97
+ camoufox-cli close # Close your tab (browser exits when the last tab closes)
98
98
  ```
99
99
 
100
100
  ### Snapshot
@@ -150,17 +150,29 @@ camoufox-cli wait --url "*/dashboard" # Wait for URL pattern
150
150
  ### Tabs
151
151
 
152
152
  ```bash
153
- camoufox-cli tabs # List open tabs
153
+ camoufox-cli tabs # List open tabs (with owner names)
154
154
  camoufox-cli switch 2 # Switch to tab by index
155
- camoufox-cli close-tab # Close current tab
156
155
  ```
157
156
 
157
+ Named tabs let concurrent agents share one browser — same fingerprint, same cookies/login state — while each keeps its own page, element refs, and history. Tabs share one browser process (commands from different tabs may queue behind a slow one); separate sessions run as independent processes in parallel:
158
+
159
+ ```bash
160
+ camoufox-cli --tab inbox-scan-x4q open https://app.example.com/a
161
+ camoufox-cli --tab report-pull-9kf open https://app.example.com/b
162
+ camoufox-cli --tab inbox-scan-x4q snapshot -i # refs are per tab
163
+ camoufox-cli --tab inbox-scan-x4q close # frees only this tab; browser exits when the last tab closes
164
+ ```
165
+
166
+ Tab names must be unique per agent (nothing enforces this): use a task slug plus a short shell-generated random suffix (e.g. `price-scan-$(openssl rand -hex 2)`), chosen once and reused.
167
+
158
168
  ### Sessions
159
169
 
170
+ Each named session is a separate browser process with its own randomly-generated fingerprint and its own cookies. Use sessions for isolated identities, named tabs (above) for cheap parallelism under one identity. For real multi-account isolation, combine sessions with a per-session proxy (config file) and `--persistent` — see Persistent Identity below:
171
+
160
172
  ```bash
161
173
  camoufox-cli sessions # List active sessions
162
174
  camoufox-cli --session work open <url> # Use named session
163
- camoufox-cli close --all # Close all sessions
175
+ camoufox-cli close --all # Force-close all sessions
164
176
  ```
165
177
 
166
178
  ### Cookies
@@ -175,6 +187,8 @@ camoufox-cli cookies export file.json # Export cookies
175
187
 
176
188
  ```
177
189
  --session <name> Named session (default: "default")
190
+ --tab <name> Named tab within the session's shared browser: same fingerprint and
191
+ cookies/login, independent page/refs/history (default: "default")
178
192
  --headed Show browser window (default: headless)
179
193
  --timeout <seconds> Daemon idle timeout (default: 1800)
180
194
  --json Output as JSON
@@ -72,7 +72,7 @@ camoufox-cli forward # Go forward
72
72
  camoufox-cli reload # Reload page
73
73
  camoufox-cli url # Print current URL
74
74
  camoufox-cli title # Print page title
75
- camoufox-cli close # Close browser and stop daemon
75
+ camoufox-cli close # Close your tab (browser exits when the last tab closes)
76
76
  ```
77
77
 
78
78
  ### Snapshot
@@ -128,17 +128,29 @@ camoufox-cli wait --url "*/dashboard" # Wait for URL pattern
128
128
  ### Tabs
129
129
 
130
130
  ```bash
131
- camoufox-cli tabs # List open tabs
131
+ camoufox-cli tabs # List open tabs (with owner names)
132
132
  camoufox-cli switch 2 # Switch to tab by index
133
- camoufox-cli close-tab # Close current tab
134
133
  ```
135
134
 
135
+ Named tabs let concurrent agents share one browser — same fingerprint, same cookies/login state — while each keeps its own page, element refs, and history. Tabs share one browser process (commands from different tabs may queue behind a slow one); separate sessions run as independent processes in parallel:
136
+
137
+ ```bash
138
+ camoufox-cli --tab inbox-scan-x4q open https://app.example.com/a
139
+ camoufox-cli --tab report-pull-9kf open https://app.example.com/b
140
+ camoufox-cli --tab inbox-scan-x4q snapshot -i # refs are per tab
141
+ camoufox-cli --tab inbox-scan-x4q close # frees only this tab; browser exits when the last tab closes
142
+ ```
143
+
144
+ Tab names must be unique per agent (nothing enforces this): use a task slug plus a short shell-generated random suffix (e.g. `price-scan-$(openssl rand -hex 2)`), chosen once and reused.
145
+
136
146
  ### Sessions
137
147
 
148
+ Each named session is a separate browser process with its own randomly-generated fingerprint and its own cookies. Use sessions for isolated identities, named tabs (above) for cheap parallelism under one identity. For real multi-account isolation, combine sessions with a per-session proxy (config file) and `--persistent` — see Persistent Identity below:
149
+
138
150
  ```bash
139
151
  camoufox-cli sessions # List active sessions
140
152
  camoufox-cli --session work open <url> # Use named session
141
- camoufox-cli close --all # Close all sessions
153
+ camoufox-cli close --all # Force-close all sessions
142
154
  ```
143
155
 
144
156
  ### Cookies
@@ -153,6 +165,8 @@ camoufox-cli cookies export file.json # Export cookies
153
165
 
154
166
  ```
155
167
  --session <name> Named session (default: "default")
168
+ --tab <name> Named tab within the session's shared browser: same fingerprint and
169
+ cookies/login, independent page/refs/history (default: "default")
156
170
  --headed Show browser window (default: headless)
157
171
  --timeout <seconds> Daemon idle timeout (default: 1800)
158
172
  --json Output as JSON
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "camoufox-cli",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "camoufox-cli",
9
- "version": "0.5.0",
9
+ "version": "0.7.0",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "camoufox-js": "^0.8.5",
13
+ "camoufox-js": "^0.11.1",
14
14
  "pdf-lib": "^1.17.1",
15
- "playwright-core": "^1.52.0"
15
+ "playwright-core": "1.52.0"
16
16
  },
17
17
  "bin": {
18
18
  "camoufox-cli": "dist/cli.js"
@@ -1017,6 +1017,15 @@
1017
1017
  "node": ">=12.0"
1018
1018
  }
1019
1019
  },
1020
+ "node_modules/ansi-regex": {
1021
+ "version": "5.0.1",
1022
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1023
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1024
+ "license": "MIT",
1025
+ "engines": {
1026
+ "node": ">=8"
1027
+ }
1028
+ },
1020
1029
  "node_modules/assertion-error": {
1021
1030
  "version": "2.0.1",
1022
1031
  "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
@@ -1069,9 +1078,9 @@
1069
1078
  }
1070
1079
  },
1071
1080
  "node_modules/better-sqlite3": {
1072
- "version": "12.6.2",
1073
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.6.2.tgz",
1074
- "integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==",
1081
+ "version": "12.11.1",
1082
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz",
1083
+ "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==",
1075
1084
  "hasInstallScript": true,
1076
1085
  "license": "MIT",
1077
1086
  "dependencies": {
@@ -1079,7 +1088,7 @@
1079
1088
  "prebuild-install": "^7.1.1"
1080
1089
  },
1081
1090
  "engines": {
1082
- "node": "20.x || 22.x || 23.x || 24.x || 25.x"
1091
+ "node": "20.x || 22.x || 23.x || 24.x || 25.x || 26.x"
1083
1092
  }
1084
1093
  },
1085
1094
  "node_modules/bindings": {
@@ -1181,20 +1190,21 @@
1181
1190
  }
1182
1191
  },
1183
1192
  "node_modules/camoufox-js": {
1184
- "version": "0.8.5",
1185
- "resolved": "https://registry.npmjs.org/camoufox-js/-/camoufox-js-0.8.5.tgz",
1186
- "integrity": "sha512-20ihPbspAcOVSUTX9Drxxp0C116DON1n8OVA1eUDglWZiHwiHwFVFOMrIEBwAHMZpU11mIEH/kawJtstRIrDPA==",
1193
+ "version": "0.11.1",
1194
+ "resolved": "https://registry.npmjs.org/camoufox-js/-/camoufox-js-0.11.1.tgz",
1195
+ "integrity": "sha512-/tSgFAgjcbxudXFLd+u5VARZHOK9fm5bg1QRAP/2NySdaq6Vf7UTk2aMEUqaXAfnV7ncf4y87KjIFVpWVbZ+RQ==",
1187
1196
  "license": "MPL-2.0",
1188
1197
  "dependencies": {
1189
1198
  "adm-zip": "^0.5.16",
1190
- "better-sqlite3": "^12.2.0",
1199
+ "better-sqlite3": "^12.10.0",
1200
+ "cli-progress": "^3.12.0",
1191
1201
  "commander": "^14.0.0",
1192
1202
  "fingerprint-generator": "^2.1.66",
1193
1203
  "glob": "^13.0.0",
1194
- "impit": "^0.7.0",
1204
+ "impit": "^0.14.1",
1195
1205
  "language-tags": "^2.0.1",
1196
1206
  "maxmind": "^5.0.0",
1197
- "progress": "^2.0.3",
1207
+ "pretty-bytes": "^7.1.0",
1198
1208
  "ua-parser-js": "^2.0.2",
1199
1209
  "xml2js": "^0.6.2"
1200
1210
  },
@@ -1202,7 +1212,7 @@
1202
1212
  "camoufox-js": "dist/__main__.js"
1203
1213
  },
1204
1214
  "engines": {
1205
- "node": ">= 20"
1215
+ "node": ">= 22"
1206
1216
  },
1207
1217
  "peerDependencies": {
1208
1218
  "playwright-core": "*"
@@ -1244,6 +1254,18 @@
1244
1254
  "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
1245
1255
  "license": "ISC"
1246
1256
  },
1257
+ "node_modules/cli-progress": {
1258
+ "version": "3.12.0",
1259
+ "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz",
1260
+ "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==",
1261
+ "license": "MIT",
1262
+ "dependencies": {
1263
+ "string-width": "^4.2.3"
1264
+ },
1265
+ "engines": {
1266
+ "node": ">=4"
1267
+ }
1268
+ },
1247
1269
  "node_modules/commander": {
1248
1270
  "version": "14.0.3",
1249
1271
  "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
@@ -1327,6 +1349,12 @@
1327
1349
  "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==",
1328
1350
  "license": "ISC"
1329
1351
  },
1352
+ "node_modules/emoji-regex": {
1353
+ "version": "8.0.0",
1354
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1355
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1356
+ "license": "MIT"
1357
+ },
1330
1358
  "node_modules/end-of-stream": {
1331
1359
  "version": "1.4.5",
1332
1360
  "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
@@ -1551,28 +1579,28 @@
1551
1579
  "license": "BSD-3-Clause"
1552
1580
  },
1553
1581
  "node_modules/impit": {
1554
- "version": "0.7.6",
1555
- "resolved": "https://registry.npmjs.org/impit/-/impit-0.7.6.tgz",
1556
- "integrity": "sha512-AkS6Gv63+E6GMvBrcRhMmOREKpq5oJ0J5m3xwfkHiEs97UIsbpEqFmW3sFw/sdyOTDGRF5q4EjaLxtb922Ta8g==",
1582
+ "version": "0.14.1",
1583
+ "resolved": "https://registry.npmjs.org/impit/-/impit-0.14.1.tgz",
1584
+ "integrity": "sha512-ooFuGjrJzV16S5y4t7ICpfaAapNRrrUCv3cd5xIPKUqbbgKtx7CbVB+w+YRDMntoHwjuZ9ijI2AM8hMKISbvcw==",
1557
1585
  "license": "Apache-2.0",
1558
1586
  "engines": {
1559
1587
  "node": ">= 20"
1560
1588
  },
1561
1589
  "optionalDependencies": {
1562
- "impit-darwin-arm64": "0.7.6",
1563
- "impit-darwin-x64": "0.7.6",
1564
- "impit-linux-arm64-gnu": "0.7.6",
1565
- "impit-linux-arm64-musl": "0.7.6",
1566
- "impit-linux-x64-gnu": "0.7.6",
1567
- "impit-linux-x64-musl": "0.7.6",
1568
- "impit-win32-arm64-msvc": "0.7.6",
1569
- "impit-win32-x64-msvc": "0.7.6"
1590
+ "impit-darwin-arm64": "0.14.1",
1591
+ "impit-darwin-x64": "0.14.1",
1592
+ "impit-linux-arm64-gnu": "0.14.1",
1593
+ "impit-linux-arm64-musl": "0.14.1",
1594
+ "impit-linux-x64-gnu": "0.14.1",
1595
+ "impit-linux-x64-musl": "0.14.1",
1596
+ "impit-win32-arm64-msvc": "0.14.1",
1597
+ "impit-win32-x64-msvc": "0.14.1"
1570
1598
  }
1571
1599
  },
1572
1600
  "node_modules/impit-darwin-arm64": {
1573
- "version": "0.7.6",
1574
- "resolved": "https://registry.npmjs.org/impit-darwin-arm64/-/impit-darwin-arm64-0.7.6.tgz",
1575
- "integrity": "sha512-M7NQXkttyzqilWfzVkNCp7hApT69m0etyJkVpHze4bR5z1kJnHhdsb8BSdDv2dzvZL4u1JyqZNxq+qoMn84eUw==",
1601
+ "version": "0.14.1",
1602
+ "resolved": "https://registry.npmjs.org/impit-darwin-arm64/-/impit-darwin-arm64-0.14.1.tgz",
1603
+ "integrity": "sha512-K3KXto3gzR60kOFFxRmuxPNl3sPhdTLLpjBIW3RKD6vJFiGV5YH/T218WBECygPxRaIhESfsxfcOYrP53bHgFw==",
1576
1604
  "cpu": [
1577
1605
  "arm64"
1578
1606
  ],
@@ -1586,9 +1614,9 @@
1586
1614
  }
1587
1615
  },
1588
1616
  "node_modules/impit-darwin-x64": {
1589
- "version": "0.7.6",
1590
- "resolved": "https://registry.npmjs.org/impit-darwin-x64/-/impit-darwin-x64-0.7.6.tgz",
1591
- "integrity": "sha512-kikTesWirAwJp9JPxzGLoGVc+heBlEabWS5AhTkQedACU153vmuL90OBQikVr3ul2N0LPImvnuB+51wV0zDE6g==",
1617
+ "version": "0.14.1",
1618
+ "resolved": "https://registry.npmjs.org/impit-darwin-x64/-/impit-darwin-x64-0.14.1.tgz",
1619
+ "integrity": "sha512-k+w8SBHUtLX3KbzsCqSmcwitHfbOXXsLryL++KVahtFqU5D93T1buoTANnd63/mm5dNyadecIGG0MQ7SwvWx8g==",
1592
1620
  "cpu": [
1593
1621
  "x64"
1594
1622
  ],
@@ -1602,9 +1630,9 @@
1602
1630
  }
1603
1631
  },
1604
1632
  "node_modules/impit-linux-arm64-gnu": {
1605
- "version": "0.7.6",
1606
- "resolved": "https://registry.npmjs.org/impit-linux-arm64-gnu/-/impit-linux-arm64-gnu-0.7.6.tgz",
1607
- "integrity": "sha512-H6GHjVr/0lG9VEJr6IHF8YLq+YkSIOF4k7Dfue2ygzUAj1+jZ5ZwnouhG/XrZHYW6EWsZmEAjjRfWE56Q0wDRQ==",
1633
+ "version": "0.14.1",
1634
+ "resolved": "https://registry.npmjs.org/impit-linux-arm64-gnu/-/impit-linux-arm64-gnu-0.14.1.tgz",
1635
+ "integrity": "sha512-yBT7h6cVHL/hefzI/qjJc22fKP386O0inReOpUzCnb4SGnwhEHvL9nJk3OzU2prO9vvKNKSb6vfRBcvQ8HHH1g==",
1608
1636
  "cpu": [
1609
1637
  "arm64"
1610
1638
  ],
@@ -1618,9 +1646,9 @@
1618
1646
  }
1619
1647
  },
1620
1648
  "node_modules/impit-linux-arm64-musl": {
1621
- "version": "0.7.6",
1622
- "resolved": "https://registry.npmjs.org/impit-linux-arm64-musl/-/impit-linux-arm64-musl-0.7.6.tgz",
1623
- "integrity": "sha512-1sCB/UBVXLZTpGJsXRdNNSvhN9xmmQcYLMWAAB4Itb7w684RHX1pLoCb6ichv7bfAf6tgaupcFIFZNBp3ghmQA==",
1649
+ "version": "0.14.1",
1650
+ "resolved": "https://registry.npmjs.org/impit-linux-arm64-musl/-/impit-linux-arm64-musl-0.14.1.tgz",
1651
+ "integrity": "sha512-lFatihYntVIN814AnoNm/hSw5iONLKt6XtaAaJahZNdJOU+zsclcg9pbK0/61aENamkpIBpok/H8j5Sw/Xjuuw==",
1624
1652
  "cpu": [
1625
1653
  "arm64"
1626
1654
  ],
@@ -1634,9 +1662,9 @@
1634
1662
  }
1635
1663
  },
1636
1664
  "node_modules/impit-linux-x64-gnu": {
1637
- "version": "0.7.6",
1638
- "resolved": "https://registry.npmjs.org/impit-linux-x64-gnu/-/impit-linux-x64-gnu-0.7.6.tgz",
1639
- "integrity": "sha512-yYhlRnZ4fhKt8kuGe0JK2WSHc8TkR6BEH0wn+guevmu8EOn9Xu43OuRvkeOyVAkRqvFnlZtMyySUo/GuSLz9Gw==",
1665
+ "version": "0.14.1",
1666
+ "resolved": "https://registry.npmjs.org/impit-linux-x64-gnu/-/impit-linux-x64-gnu-0.14.1.tgz",
1667
+ "integrity": "sha512-oioVQzHqSi68BzxRpVLbNv9HRgOxAA21QNlzCMyeEM3/c02MkURCQ1W66yAlEFOR1gaqPZDJi/ymnmIGk6+PjQ==",
1640
1668
  "cpu": [
1641
1669
  "x64"
1642
1670
  ],
@@ -1650,9 +1678,9 @@
1650
1678
  }
1651
1679
  },
1652
1680
  "node_modules/impit-linux-x64-musl": {
1653
- "version": "0.7.6",
1654
- "resolved": "https://registry.npmjs.org/impit-linux-x64-musl/-/impit-linux-x64-musl-0.7.6.tgz",
1655
- "integrity": "sha512-sdGWyu+PCLmaOXy7Mzo4WP61ZLl5qpZ1L+VeXW+Ycazgu0e7ox0NZLdiLRunIrEzD+h0S+e4CyzNwaiP3yIolg==",
1681
+ "version": "0.14.1",
1682
+ "resolved": "https://registry.npmjs.org/impit-linux-x64-musl/-/impit-linux-x64-musl-0.14.1.tgz",
1683
+ "integrity": "sha512-v7fBi405zZepQo0LqH51H+aXc/MYEtrQviIK+34kEqFBYOaSC9+wFZrs6A4WwrF9DaUuRZ3klisljwglN7rxDQ==",
1656
1684
  "cpu": [
1657
1685
  "x64"
1658
1686
  ],
@@ -1666,9 +1694,9 @@
1666
1694
  }
1667
1695
  },
1668
1696
  "node_modules/impit-win32-arm64-msvc": {
1669
- "version": "0.7.6",
1670
- "resolved": "https://registry.npmjs.org/impit-win32-arm64-msvc/-/impit-win32-arm64-msvc-0.7.6.tgz",
1671
- "integrity": "sha512-sM5deBqo0EuXg5GACBUMKEua9jIau/i34bwNlfrf/Amnw1n0GB4/RkuUh+sKiUcbNAntrRq+YhCq8qDP8IW19w==",
1697
+ "version": "0.14.1",
1698
+ "resolved": "https://registry.npmjs.org/impit-win32-arm64-msvc/-/impit-win32-arm64-msvc-0.14.1.tgz",
1699
+ "integrity": "sha512-W4kPvvra8dXDdtJQbkxWPCCouUlZpOrLqHsJ7gc8CwAr69ljZqw6v+qB395nCD1rn3u32dV4d4fjBsyMdolQoA==",
1672
1700
  "cpu": [
1673
1701
  "arm64"
1674
1702
  ],
@@ -1682,9 +1710,9 @@
1682
1710
  }
1683
1711
  },
1684
1712
  "node_modules/impit-win32-x64-msvc": {
1685
- "version": "0.7.6",
1686
- "resolved": "https://registry.npmjs.org/impit-win32-x64-msvc/-/impit-win32-x64-msvc-0.7.6.tgz",
1687
- "integrity": "sha512-ry63ADGLCB/PU/vNB1VioRt2V+klDJ34frJUXUZBEv1kA96HEAg9AxUk+604o+UHS3ttGH2rkLmrbwHOdAct5Q==",
1713
+ "version": "0.14.1",
1714
+ "resolved": "https://registry.npmjs.org/impit-win32-x64-msvc/-/impit-win32-x64-msvc-0.14.1.tgz",
1715
+ "integrity": "sha512-gwzWsaORyzq294t8CCxfHAmqulnQNQZK8ad8YM6oQaGVXeUFa8r/ZnR+PglfYcrYF/GbYwGrf9U8StUU8KFLmQ==",
1688
1716
  "cpu": [
1689
1717
  "x64"
1690
1718
  ],
@@ -1709,6 +1737,15 @@
1709
1737
  "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
1710
1738
  "license": "ISC"
1711
1739
  },
1740
+ "node_modules/is-fullwidth-code-point": {
1741
+ "version": "3.0.0",
1742
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1743
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1744
+ "license": "MIT",
1745
+ "engines": {
1746
+ "node": ">=8"
1747
+ }
1748
+ },
1712
1749
  "node_modules/is-obj": {
1713
1750
  "version": "2.0.0",
1714
1751
  "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
@@ -1883,9 +1920,9 @@
1883
1920
  "license": "MIT"
1884
1921
  },
1885
1922
  "node_modules/node-abi": {
1886
- "version": "3.87.0",
1887
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz",
1888
- "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==",
1923
+ "version": "3.92.0",
1924
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz",
1925
+ "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==",
1889
1926
  "license": "MIT",
1890
1927
  "dependencies": {
1891
1928
  "semver": "^7.3.5"
@@ -2006,9 +2043,9 @@
2006
2043
  }
2007
2044
  },
2008
2045
  "node_modules/playwright-core": {
2009
- "version": "1.58.2",
2010
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz",
2011
- "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==",
2046
+ "version": "1.52.0",
2047
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz",
2048
+ "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==",
2012
2049
  "license": "Apache-2.0",
2013
2050
  "bin": {
2014
2051
  "playwright-core": "cli.js"
@@ -2073,13 +2110,16 @@
2073
2110
  "node": ">=10"
2074
2111
  }
2075
2112
  },
2076
- "node_modules/progress": {
2077
- "version": "2.0.3",
2078
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
2079
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
2113
+ "node_modules/pretty-bytes": {
2114
+ "version": "7.1.0",
2115
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-7.1.0.tgz",
2116
+ "integrity": "sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==",
2080
2117
  "license": "MIT",
2081
2118
  "engines": {
2082
- "node": ">=0.4.0"
2119
+ "node": ">=20"
2120
+ },
2121
+ "funding": {
2122
+ "url": "https://github.com/sponsors/sindresorhus"
2083
2123
  }
2084
2124
  },
2085
2125
  "node_modules/pump": {
@@ -2196,9 +2236,9 @@
2196
2236
  }
2197
2237
  },
2198
2238
  "node_modules/semver": {
2199
- "version": "7.7.4",
2200
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
2201
- "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
2239
+ "version": "7.8.4",
2240
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
2241
+ "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
2202
2242
  "license": "ISC",
2203
2243
  "bin": {
2204
2244
  "semver": "bin/semver.js"
@@ -2292,6 +2332,32 @@
2292
2332
  "safe-buffer": "~5.2.0"
2293
2333
  }
2294
2334
  },
2335
+ "node_modules/string-width": {
2336
+ "version": "4.2.3",
2337
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2338
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2339
+ "license": "MIT",
2340
+ "dependencies": {
2341
+ "emoji-regex": "^8.0.0",
2342
+ "is-fullwidth-code-point": "^3.0.0",
2343
+ "strip-ansi": "^6.0.1"
2344
+ },
2345
+ "engines": {
2346
+ "node": ">=8"
2347
+ }
2348
+ },
2349
+ "node_modules/strip-ansi": {
2350
+ "version": "6.0.1",
2351
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2352
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2353
+ "license": "MIT",
2354
+ "dependencies": {
2355
+ "ansi-regex": "^5.0.1"
2356
+ },
2357
+ "engines": {
2358
+ "node": ">=8"
2359
+ }
2360
+ },
2295
2361
  "node_modules/strip-json-comments": {
2296
2362
  "version": "2.0.1",
2297
2363
  "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camoufox-cli",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Anti-detect headless browser automation CLI & Skills for AI agents, powered by Camoufox",
5
5
  "type": "module",
6
6
  "bin": {
@@ -27,9 +27,9 @@
27
27
  "homepage": "https://github.com/Bin-Huang/camoufox-cli",
28
28
  "bugs": "https://github.com/Bin-Huang/camoufox-cli/issues",
29
29
  "dependencies": {
30
- "camoufox-js": "^0.8.5",
30
+ "camoufox-js": "^0.11.1",
31
31
  "pdf-lib": "^1.17.1",
32
- "playwright-core": "^1.52.0"
32
+ "playwright-core": "1.52.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/node": "^22.0.0",