cursorflow 2.7.8__py3-none-any.whl → 2.7.9__py3-none-any.whl
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.
- cursorflow/cli.py +55 -10
- cursorflow/rules/cursorflow-usage.mdc +3 -1
- {cursorflow-2.7.8.dist-info → cursorflow-2.7.9.dist-info}/METADATA +4 -1
- {cursorflow-2.7.8.dist-info → cursorflow-2.7.9.dist-info}/RECORD +8 -8
- {cursorflow-2.7.8.dist-info → cursorflow-2.7.9.dist-info}/WHEEL +0 -0
- {cursorflow-2.7.8.dist-info → cursorflow-2.7.9.dist-info}/entry_points.txt +0 -0
- {cursorflow-2.7.8.dist-info → cursorflow-2.7.9.dist-info}/licenses/LICENSE +0 -0
- {cursorflow-2.7.8.dist-info → cursorflow-2.7.9.dist-info}/top_level.txt +0 -0
cursorflow/cli.py
CHANGED
@@ -1121,7 +1121,8 @@ def sessions(subcommand, name):
|
|
1121
1121
|
@click.option('--path', '-p', default='/', help='Path to navigate to after login (e.g., /dashboard)')
|
1122
1122
|
@click.option('--output', '-o', default='auth-capture.json', help='Output file for captured auth state')
|
1123
1123
|
@click.option('--wait', type=int, default=60, help='Seconds to wait for manual login (default: 60)')
|
1124
|
-
|
1124
|
+
@click.option('--browser', type=click.Choice(['chromium', 'chrome', 'firefox']), default='chromium', help='Browser to use (default: chromium)')
|
1125
|
+
def capture_auth(base_url, path, output, wait, browser):
|
1125
1126
|
"""
|
1126
1127
|
Capture authentication state after manual SSO/OAuth login
|
1127
1128
|
|
@@ -1143,25 +1144,30 @@ def capture_auth(base_url, path, output, wait):
|
|
1143
1144
|
# Capture Google SSO auth
|
1144
1145
|
cursorflow capture-auth --base-url http://localhost:3000 --path /dashboard
|
1145
1146
|
|
1147
|
+
# Use system Chrome (more visible on macOS)
|
1148
|
+
cursorflow capture-auth -u http://localhost:3000 --browser chrome
|
1149
|
+
|
1146
1150
|
# Capture with custom wait time
|
1147
1151
|
cursorflow capture-auth -u http://localhost:3000 -p /dashboard --wait 120
|
1148
1152
|
|
1149
1153
|
# Save to custom file
|
1150
1154
|
cursorflow capture-auth -u http://localhost:3000 --output google-sso.json
|
1151
1155
|
"""
|
1152
|
-
console.print(f"\n🔐 SSO Authentication Capture")
|
1156
|
+
console.print(f"\n🔐 [bold]SSO Authentication Capture[/bold]")
|
1153
1157
|
console.print(f"📍 Base URL: [cyan]{base_url}[/cyan]")
|
1154
1158
|
console.print(f"🎯 Target path: [cyan]{path}[/cyan]")
|
1155
1159
|
console.print(f"⏱️ Wait time: [yellow]{wait}[/yellow] seconds")
|
1156
1160
|
console.print(f"📄 Output file: [green]{output}[/green]\n")
|
1157
1161
|
|
1158
|
-
console.print("📋 [bold]Instructions:[/bold]")
|
1159
|
-
console.print(" 1.
|
1160
|
-
console.print(" 2. [yellow]Complete SSO login manually[/yellow]
|
1162
|
+
console.print("📋 [bold yellow]Instructions:[/bold yellow]")
|
1163
|
+
console.print(" 1. [bold]A Chromium browser window will open[/bold]")
|
1164
|
+
console.print(" 2. [yellow]Complete SSO login manually[/yellow] in that browser window")
|
1161
1165
|
console.print(" 3. Navigate to a protected page (e.g., /dashboard)")
|
1162
|
-
console.print(" 4. [green]
|
1166
|
+
console.print(" 4. Return here and [green]press Enter[/green] when fully logged in")
|
1163
1167
|
console.print(" 5. CursorFlow will capture all auth state\n")
|
1164
1168
|
|
1169
|
+
console.print("[bold red]⚠️ Look for the browser window - it may open behind other windows![/bold red]\n")
|
1170
|
+
|
1165
1171
|
input("Press Enter to open browser and start capture...")
|
1166
1172
|
|
1167
1173
|
try:
|
@@ -1169,14 +1175,53 @@ def capture_auth(base_url, path, output, wait):
|
|
1169
1175
|
import json
|
1170
1176
|
|
1171
1177
|
async def capture_process():
|
1178
|
+
console.print("\n🚀 Starting Playwright...")
|
1172
1179
|
async with async_playwright() as p:
|
1180
|
+
# Select browser based on user choice
|
1181
|
+
if browser == 'chrome':
|
1182
|
+
browser_type = p.chromium
|
1183
|
+
channel = 'chrome' # Use system Chrome if available
|
1184
|
+
elif browser == 'firefox':
|
1185
|
+
browser_type = p.firefox
|
1186
|
+
channel = None
|
1187
|
+
else: # chromium
|
1188
|
+
browser_type = p.chromium
|
1189
|
+
channel = None
|
1190
|
+
|
1173
1191
|
# Launch browser in HEADED mode (user needs to interact)
|
1174
|
-
browser
|
1175
|
-
|
1192
|
+
console.print(f"🌐 Launching [bold]{browser}[/bold] browser (headed mode)...")
|
1193
|
+
console.print("[yellow]👀 Watch for browser window - it should appear shortly...[/yellow]")
|
1194
|
+
|
1195
|
+
try:
|
1196
|
+
launch_options = {
|
1197
|
+
'headless': False,
|
1198
|
+
'slow_mo': 50,
|
1199
|
+
'args': ['--start-maximized']
|
1200
|
+
}
|
1201
|
+
if channel:
|
1202
|
+
launch_options['channel'] = channel
|
1203
|
+
|
1204
|
+
browser_instance = await browser_type.launch(**launch_options)
|
1205
|
+
except Exception as e:
|
1206
|
+
console.print(f"[red]❌ Failed to launch browser: {e}[/red]")
|
1207
|
+
console.print("\n💡 Try installing Chromium:")
|
1208
|
+
console.print(" [cyan]playwright install chromium[/cyan]")
|
1209
|
+
raise
|
1210
|
+
|
1211
|
+
# Create context with viewport to ensure it's visible
|
1212
|
+
context = await browser_instance.new_context(
|
1213
|
+
viewport={'width': 1280, 'height': 720}
|
1214
|
+
)
|
1176
1215
|
page = await context.new_page()
|
1177
1216
|
|
1178
|
-
|
1217
|
+
# Bring page to front
|
1218
|
+
await page.bring_to_front()
|
1219
|
+
|
1220
|
+
console.print(f"\n✅ [bold green]Browser window opened![/bold green]")
|
1221
|
+
console.print(f" 👉 [bold]If you don't see it, check behind other windows or different desktop spaces[/bold]")
|
1222
|
+
console.print(f"\n🌐 Navigating to: [cyan]{base_url}[/cyan]...")
|
1179
1223
|
await page.goto(base_url)
|
1224
|
+
console.print(f"✅ Page loaded!")
|
1180
1225
|
|
1181
1226
|
console.print(f"\n⏳ [yellow]Complete your SSO login in the browser...[/yellow]")
|
1182
1227
|
console.print(f" Waiting up to {wait} seconds...")
|
@@ -1259,7 +1304,7 @@ def capture_auth(base_url, path, output, wait):
|
|
1259
1304
|
console.print(f'\n {{\n "auth": {{\n "method": "cookies",\n "cookies": [... paste here ...]\n }}\n }}\n')
|
1260
1305
|
console.print(f" 4. Test with: [cyan]cursorflow test --use-session sso-user[/cyan]\n")
|
1261
1306
|
|
1262
|
-
await
|
1307
|
+
await browser_instance.close()
|
1263
1308
|
|
1264
1309
|
asyncio.run(capture_process())
|
1265
1310
|
|
@@ -1084,9 +1084,11 @@ cursorflow test --actions '[
|
|
1084
1084
|
# 1. Capture SSO auth (opens browser, you login manually)
|
1085
1085
|
cursorflow capture-auth --base-url http://localhost:3000 \
|
1086
1086
|
--path /dashboard \
|
1087
|
+
--browser chrome \
|
1087
1088
|
--output google-sso.json
|
1088
1089
|
|
1089
|
-
# Browser opens
|
1090
|
+
# Browser opens (use --browser chrome for better visibility on macOS)
|
1091
|
+
# You complete SSO login, CursorFlow captures cookies
|
1090
1092
|
|
1091
1093
|
# 2. Copy cookies from google-sso.json to .cursorflow/config.json:
|
1092
1094
|
{
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: cursorflow
|
3
|
-
Version: 2.7.
|
3
|
+
Version: 2.7.9
|
4
4
|
Summary: 🔥 Complete page intelligence for AI-driven development with Hot Reload Intelligence - captures DOM, network, console, performance, HMR events, and comprehensive page analysis
|
5
5
|
Author-email: GeekWarrior Development <rbush@cooltheory.com>
|
6
6
|
License-Expression: MIT
|
@@ -184,6 +184,7 @@ cursorflow test --use-session "user" \
|
|
184
184
|
# Capture SSO auth (opens browser for manual login)
|
185
185
|
cursorflow capture-auth --base-url http://localhost:3000 \
|
186
186
|
--path /dashboard \
|
187
|
+
--browser chrome \
|
187
188
|
--output google-sso.json
|
188
189
|
|
189
190
|
# Use captured auth
|
@@ -191,6 +192,8 @@ cursorflow capture-auth --base-url http://localhost:3000 \
|
|
191
192
|
cursorflow test --use-session "sso-user" --path /dashboard
|
192
193
|
```
|
193
194
|
|
195
|
+
**Tip:** Use `--browser chrome` on macOS for better window visibility
|
196
|
+
|
194
197
|
**See:** [Complete Authentication Guide](docs/user/USAGE_GUIDE.md#authentication--session-management)
|
195
198
|
|
196
199
|
---
|
@@ -1,7 +1,7 @@
|
|
1
1
|
cursorflow/__init__.py,sha256=2V9xzG2tYxVWOTmSw2v9Jdbr7lSrMi_y2SMUMuNZdvw,2990
|
2
2
|
cursorflow/auto_init.py,sha256=dXQaXXiXe4wkUP-jd8fcJ5fYVt7ASdTb47b7SzXymOM,6122
|
3
3
|
cursorflow/auto_updater.py,sha256=oQ12TIMZ6Cm3HF-x9iRWFtvOLkRh-JWPqitS69-4roE,7851
|
4
|
-
cursorflow/cli.py,sha256=
|
4
|
+
cursorflow/cli.py,sha256=M9TVyDEyi-2WVG4FxF2eAld9o0f35mbNBVFJeZ5Cyug,89736
|
5
5
|
cursorflow/install_cursorflow_rules.py,sha256=DsZ0680y9JMuTKFXjdgYtOKIEAjBMsdwL8LmA9WEb5A,11864
|
6
6
|
cursorflow/post_install.py,sha256=WieBiKWG0qBAQpF8iMVWUyb9Fr2Xky9qECTMPrlAbpE,2678
|
7
7
|
cursorflow/updater.py,sha256=SroSQHQi5cYyzcOK_bf-WzmQmE7yeOs8qo3r__j-Z6E,19583
|
@@ -33,10 +33,10 @@ cursorflow/log_sources/local_file.py,sha256=GVnhsaifIdc41twXwbxRM9-fBeRDsknDpk5I
|
|
33
33
|
cursorflow/log_sources/ssh_remote.py,sha256=_Kwh0bhRpKgq-0c98oaX2hN6h9cT-wCHlqY5NiWVCoY,8388
|
34
34
|
cursorflow/rules/__init__.py,sha256=gPcA-IkhXj03sl7cvZV0wwo7CtEkcyuKs4y0F5oQbqE,458
|
35
35
|
cursorflow/rules/cursorflow-installation.mdc,sha256=D55pzzDPAVVbE3gAtKPUGoT-2fvB-FI2l6yrTdzUIEo,10208
|
36
|
-
cursorflow/rules/cursorflow-usage.mdc,sha256=
|
37
|
-
cursorflow-2.7.
|
38
|
-
cursorflow-2.7.
|
39
|
-
cursorflow-2.7.
|
40
|
-
cursorflow-2.7.
|
41
|
-
cursorflow-2.7.
|
42
|
-
cursorflow-2.7.
|
36
|
+
cursorflow/rules/cursorflow-usage.mdc,sha256=b1hhZ9S6Oc5bElTM75QOLIgwbX0jCc1_25MwEd8Z--k,38844
|
37
|
+
cursorflow-2.7.9.dist-info/licenses/LICENSE,sha256=e4QbjAsj3bW-xgQOvQelr8sGLYDoqc48k6cKgCr_pBU,1080
|
38
|
+
cursorflow-2.7.9.dist-info/METADATA,sha256=9wRJgyI0SRgdHxsYH0Zq5bywy5bNwP1RYP33yDDsS-U,21329
|
39
|
+
cursorflow-2.7.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
40
|
+
cursorflow-2.7.9.dist-info/entry_points.txt,sha256=-Ed_n4Uff7wClEtWS-Py6xmQabecB9f0QAOjX0w7ljA,51
|
41
|
+
cursorflow-2.7.9.dist-info/top_level.txt,sha256=t1UZwRyZP4u-ng2CEcNHmk_ZT4ibQxoihB2IjTF7ovc,11
|
42
|
+
cursorflow-2.7.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|