@bdayadev/flutter-ultra-mcp 0.0.0 → 1.0.1

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 (58) hide show
  1. package/.claude-plugin/marketplace.json +35 -0
  2. package/.claude-plugin/plugin.json +14 -14
  3. package/.mcp.json +67 -67
  4. package/CODE_OF_CONDUCT.md +83 -83
  5. package/CONTRIBUTING.md +108 -108
  6. package/LICENSE +201 -201
  7. package/README.md +77 -77
  8. package/SECURITY.md +19 -19
  9. package/dart/ultra_flutter/CHANGELOG.md +34 -34
  10. package/dart/ultra_flutter/EXTENSIONS.md +61 -61
  11. package/dart/ultra_flutter/README.md +109 -109
  12. package/dart/ultra_flutter/pubspec.yaml +37 -37
  13. package/dart/ultra_flutter_devtools/README.md +7 -7
  14. package/dart/ultra_flutter_devtools/pubspec.yaml +27 -27
  15. package/docs/UPSTREAM-PATROL-PRS.md +5 -5
  16. package/docs/UPSTREAM-SENTRY-PR.md +62 -62
  17. package/docs/discovery-empirics.md +435 -435
  18. package/examples/counter-app/README.md +24 -24
  19. package/examples/counter-app/pubspec.yaml +23 -23
  20. package/examples/oidc-app/README.md +48 -48
  21. package/examples/oidc-app/pubspec.yaml +24 -24
  22. package/package.json +82 -82
  23. package/packages/flutter-ultra-browser/README.md +29 -29
  24. package/packages/flutter-ultra-browser/package.json +39 -39
  25. package/packages/flutter-ultra-build/README.md +60 -60
  26. package/packages/flutter-ultra-build/package.json +38 -38
  27. package/packages/flutter-ultra-devtools/README.md +7 -7
  28. package/packages/flutter-ultra-devtools/package.json +36 -36
  29. package/packages/flutter-ultra-gesture/README.md +51 -51
  30. package/packages/flutter-ultra-gesture/package.json +58 -58
  31. package/packages/flutter-ultra-native-desktop/README.md +131 -131
  32. package/packages/flutter-ultra-native-desktop/package.json +81 -81
  33. package/packages/flutter-ultra-native-mobile/README.md +103 -103
  34. package/packages/flutter-ultra-native-mobile/package.json +72 -72
  35. package/packages/flutter-ultra-patrol/README.md +40 -40
  36. package/packages/flutter-ultra-patrol/package.json +38 -38
  37. package/packages/flutter-ultra-runtime/README.md +63 -63
  38. package/packages/flutter-ultra-runtime/package.json +69 -69
  39. package/shared/contracts/package.json +31 -31
  40. package/shared/device-router/README.md +51 -51
  41. package/shared/device-router/package.json +62 -62
  42. package/shared/keyring/README.md +7 -7
  43. package/shared/keyring/package.json +24 -24
  44. package/shared/mcp-runtime/README.md +116 -116
  45. package/shared/mcp-runtime/package.json +58 -58
  46. package/shared/state-store/README.md +66 -66
  47. package/shared/state-store/package.json +60 -60
  48. package/shared/vm-service-client/README.md +135 -135
  49. package/shared/vm-service-client/package.json +62 -62
  50. package/skills/_internal-on-tool-failure/SKILL.md +13 -13
  51. package/skills/_internal-session-bootstrap/SKILL.md +18 -18
  52. package/skills/debug/SKILL.md +20 -20
  53. package/skills/devtools/SKILL.md +21 -21
  54. package/skills/drive/SKILL.md +20 -20
  55. package/skills/scaffold/SKILL.md +21 -21
  56. package/skills/setup/SKILL.md +26 -26
  57. package/skills/test/SKILL.md +19 -19
  58. package/skills/tour/SKILL.md +22 -22
@@ -1,24 +1,24 @@
1
- # Counter App
2
-
3
- Minimal Flutter counter demonstrating `ultra_flutter` binding integration.
4
-
5
- Used as the primary E2E test fixture for the flutter-ultra-mcp plugin — all
6
- platform-specific CI workflows drive this app to verify gesture, runtime, and
7
- native automation servers.
8
-
9
- ## Running
10
-
11
- ```bash
12
- flutter run -d chrome
13
- ```
14
-
15
- In debug mode the `UltraFlutterBinding` is automatically initialized, exposing
16
- `ext.flutter.ultra.*` VM service extensions that the MCP servers connect to.
17
-
18
- ## Widget Keys
19
-
20
- | Key | Widget | Purpose |
21
- |-----|--------|---------|
22
- | `counter_value` | Text | Displays current count |
23
- | `increment` | FAB | Increments counter |
24
- | `decrement` | FAB | Decrements counter |
1
+ # Counter App
2
+
3
+ Minimal Flutter counter demonstrating `ultra_flutter` binding integration.
4
+
5
+ Used as the primary E2E test fixture for the flutter-ultra-mcp plugin — all
6
+ platform-specific CI workflows drive this app to verify gesture, runtime, and
7
+ native automation servers.
8
+
9
+ ## Running
10
+
11
+ ```bash
12
+ flutter run -d chrome
13
+ ```
14
+
15
+ In debug mode the `UltraFlutterBinding` is automatically initialized, exposing
16
+ `ext.flutter.ultra.*` VM service extensions that the MCP servers connect to.
17
+
18
+ ## Widget Keys
19
+
20
+ | Key | Widget | Purpose |
21
+ |-----|--------|---------|
22
+ | `counter_value` | Text | Displays current count |
23
+ | `increment` | FAB | Increments counter |
24
+ | `decrement` | FAB | Decrements counter |
@@ -1,23 +1,23 @@
1
- name: counter_app
2
- description: Minimal counter app demonstrating ultra_flutter binding for MCP-driven E2E testing.
3
- publish_to: none
4
- version: 1.0.0
5
-
6
- resolution: workspace
7
-
8
- environment:
9
- sdk: '>=3.6.0 <4.0.0'
10
- flutter: '>=3.27.0'
11
-
12
- dependencies:
13
- flutter:
14
- sdk: flutter
15
- ultra_flutter:
16
- path: ../../dart/ultra_flutter
17
-
18
- dev_dependencies:
19
- flutter_test:
20
- sdk: flutter
21
-
22
- flutter:
23
- uses-material-design: true
1
+ name: counter_app
2
+ description: Minimal counter app demonstrating ultra_flutter binding for MCP-driven E2E testing.
3
+ publish_to: none
4
+ version: 1.0.0
5
+
6
+ resolution: workspace
7
+
8
+ environment:
9
+ sdk: '>=3.6.0 <4.0.0'
10
+ flutter: '>=3.27.0'
11
+
12
+ dependencies:
13
+ flutter:
14
+ sdk: flutter
15
+ ultra_flutter:
16
+ path: ../../dart/ultra_flutter
17
+
18
+ dev_dependencies:
19
+ flutter_test:
20
+ sdk: flutter
21
+
22
+ flutter:
23
+ uses-material-design: true
@@ -1,48 +1,48 @@
1
- # OIDC App
2
-
3
- Flutter example demonstrating OIDC PKCE authorization code flow with a mock
4
- identity provider, used to verify the flutter-ultra-browser MCP server's OAuth
5
- interception and CCT (Custom Chrome Tab) OAuth solver on mobile.
6
-
7
- ## Architecture
8
-
9
- ```
10
- [Flutter App] --launch--> [Browser: /authorize]
11
- |
12
- [Mock OIDC Server]
13
- |
14
- [302 → localhost:9981/callback]
15
- |
16
- [Flutter App] <--code----- [Local HTTP server]
17
- ```
18
-
19
- ## Running
20
-
21
- 1. Start the mock OIDC server:
22
- ```bash
23
- dart run lib/mock_oidc_server.dart
24
- ```
25
-
26
- 2. Run the Flutter app:
27
- ```bash
28
- flutter run -d chrome
29
- ```
30
-
31
- 3. Click "Login with OIDC" — the browser server intercepts the redirect.
32
-
33
- ## Widget Keys
34
-
35
- | Key | Widget | Purpose |
36
- |-----|--------|---------|
37
- | `login_button` | FilledButton | Initiates OIDC flow |
38
- | `logout_button` | FilledButton.tonal | Clears token |
39
- | `auth_status` | Text | Shows "Authenticated" or "Not authenticated" |
40
- | `token_preview` | SelectableText | Truncated token display |
41
- | `loading_indicator` | CircularProgressIndicator | During OAuth exchange |
42
- | `error_text` | Text | Error message |
43
-
44
- ## CI Usage
45
-
46
- The `ci-e2e-web.yml` workflow starts `mock_oidc_server.dart` as a background
47
- process, then drives the app via Playwright to complete the full OAuth flow
48
- end-to-end.
1
+ # OIDC App
2
+
3
+ Flutter example demonstrating OIDC PKCE authorization code flow with a mock
4
+ identity provider, used to verify the flutter-ultra-browser MCP server's OAuth
5
+ interception and CCT (Custom Chrome Tab) OAuth solver on mobile.
6
+
7
+ ## Architecture
8
+
9
+ ```
10
+ [Flutter App] --launch--> [Browser: /authorize]
11
+ |
12
+ [Mock OIDC Server]
13
+ |
14
+ [302 → localhost:9981/callback]
15
+ |
16
+ [Flutter App] <--code----- [Local HTTP server]
17
+ ```
18
+
19
+ ## Running
20
+
21
+ 1. Start the mock OIDC server:
22
+ ```bash
23
+ dart run lib/mock_oidc_server.dart
24
+ ```
25
+
26
+ 2. Run the Flutter app:
27
+ ```bash
28
+ flutter run -d chrome
29
+ ```
30
+
31
+ 3. Click "Login with OIDC" — the browser server intercepts the redirect.
32
+
33
+ ## Widget Keys
34
+
35
+ | Key | Widget | Purpose |
36
+ |-----|--------|---------|
37
+ | `login_button` | FilledButton | Initiates OIDC flow |
38
+ | `logout_button` | FilledButton.tonal | Clears token |
39
+ | `auth_status` | Text | Shows "Authenticated" or "Not authenticated" |
40
+ | `token_preview` | SelectableText | Truncated token display |
41
+ | `loading_indicator` | CircularProgressIndicator | During OAuth exchange |
42
+ | `error_text` | Text | Error message |
43
+
44
+ ## CI Usage
45
+
46
+ The `ci-e2e-web.yml` workflow starts `mock_oidc_server.dart` as a background
47
+ process, then drives the app via Playwright to complete the full OAuth flow
48
+ end-to-end.
@@ -1,24 +1,24 @@
1
- name: oidc_app
2
- description: OIDC example app demonstrating browser-server OAuth flow with ultra_flutter binding.
3
- publish_to: none
4
- version: 1.0.0
5
-
6
- resolution: workspace
7
-
8
- environment:
9
- sdk: '>=3.6.0 <4.0.0'
10
- flutter: '>=3.27.0'
11
-
12
- dependencies:
13
- flutter:
14
- sdk: flutter
15
- ultra_flutter:
16
- path: ../../dart/ultra_flutter
17
- url_launcher: ^6.3.0
18
-
19
- dev_dependencies:
20
- flutter_test:
21
- sdk: flutter
22
-
23
- flutter:
24
- uses-material-design: true
1
+ name: oidc_app
2
+ description: OIDC example app demonstrating browser-server OAuth flow with ultra_flutter binding.
3
+ publish_to: none
4
+ version: 1.0.0
5
+
6
+ resolution: workspace
7
+
8
+ environment:
9
+ sdk: '>=3.6.0 <4.0.0'
10
+ flutter: '>=3.27.0'
11
+
12
+ dependencies:
13
+ flutter:
14
+ sdk: flutter
15
+ ultra_flutter:
16
+ path: ../../dart/ultra_flutter
17
+ url_launcher: ^6.3.0
18
+
19
+ dev_dependencies:
20
+ flutter_test:
21
+ sdk: flutter
22
+
23
+ flutter:
24
+ uses-material-design: true
package/package.json CHANGED
@@ -1,82 +1,82 @@
1
- {
2
- "name": "@bdayadev/flutter-ultra-mcp",
3
- "version": "0.0.0",
4
- "description": "Flutter Ultra MCP plugin monorepo \u00e2\u20ac\u201d 8 MCP servers + ultra_flutter Dart packages + skills for Claude Code.",
5
- "license": "Apache-2.0",
6
- "homepage": "https://github.com/Bdaya-Dev/flutter-ultra-mcp",
7
- "repository": {
8
- "type": "git",
9
- "url": "https://github.com/Bdaya-Dev/flutter-ultra-mcp.git"
10
- },
11
- "bugs": {
12
- "url": "https://github.com/Bdaya-Dev/flutter-ultra-mcp/issues"
13
- },
14
- "engines": {
15
- "node": ">=20"
16
- },
17
- "packageManager": "npm@10.9.0",
18
- "workspaces": [
19
- "packages/*",
20
- "shared/*"
21
- ],
22
- "scripts": {
23
- "build": "turbo run build",
24
- "lint": "turbo run lint",
25
- "test": "turbo run test",
26
- "typecheck": "turbo run typecheck",
27
- "clean": "turbo run clean && rimraf node_modules",
28
- "format": "prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"",
29
- "format:check": "prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"",
30
- "changeset": "changeset",
31
- "version": "changeset version",
32
- "release": "turbo run build && changeset publish",
33
- "prepare": "husky"
34
- },
35
- "devDependencies": {
36
- "@changesets/cli": "^2.27.0",
37
- "@commitlint/cli": "^19.0.0",
38
- "@commitlint/config-conventional": "^19.0.0",
39
- "@eslint/js": "^9.39.4",
40
- "@types/node": "^22.0.0",
41
- "eslint": "^9.0.0",
42
- "eslint-config-prettier": "^10.1.8",
43
- "husky": "^9.0.0",
44
- "prettier": "^3.3.0",
45
- "rimraf": "^6.0.0",
46
- "turbo": "^2.3.0",
47
- "typescript": "^5.6.0",
48
- "typescript-eslint": "^8.59.3",
49
- "vitest": "^3.2.4"
50
- },
51
- "publishConfig": {
52
- "access": "public",
53
- "registry": "https://registry.npmjs.org"
54
- },
55
- "files": [
56
- ".claude-plugin/",
57
- ".mcp.json",
58
- "skills/",
59
- "packages/*/dist/",
60
- "packages/*/package.json",
61
- "packages/*/README.md",
62
- "packages/*/sidecars/",
63
- "shared/*/dist/",
64
- "shared/*/package.json",
65
- "shared/*/README.md",
66
- "dart/*/lib/",
67
- "dart/*/pubspec.yaml",
68
- "dart/*/README.md",
69
- "dart/*/CHANGELOG.md",
70
- "dart/*/EXTENSIONS.md",
71
- "docs/",
72
- "examples/*/lib/",
73
- "examples/*/pubspec.yaml",
74
- "examples/*/web/",
75
- "examples/*/README.md",
76
- "README.md",
77
- "LICENSE",
78
- "CONTRIBUTING.md",
79
- "SECURITY.md",
80
- "CODE_OF_CONDUCT.md"
81
- ]
82
- }
1
+ {
2
+ "name": "@bdayadev/flutter-ultra-mcp",
3
+ "version": "1.0.1",
4
+ "description": "Flutter Ultra MCP plugin monorepo — 8 MCP servers + ultra_flutter Dart packages + skills for Claude Code.",
5
+ "license": "Apache-2.0",
6
+ "homepage": "https://github.com/Bdaya-Dev/flutter-ultra-mcp",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/Bdaya-Dev/flutter-ultra-mcp.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/Bdaya-Dev/flutter-ultra-mcp/issues"
13
+ },
14
+ "engines": {
15
+ "node": ">=20"
16
+ },
17
+ "packageManager": "npm@10.9.0",
18
+ "workspaces": [
19
+ "packages/*",
20
+ "shared/*"
21
+ ],
22
+ "scripts": {
23
+ "build": "turbo run build",
24
+ "lint": "turbo run lint",
25
+ "test": "turbo run test",
26
+ "typecheck": "turbo run typecheck",
27
+ "clean": "turbo run clean && rimraf node_modules",
28
+ "format": "prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"",
29
+ "format:check": "prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"",
30
+ "prepare": "husky"
31
+ },
32
+ "devDependencies": {
33
+ "@commitlint/cli": "^19.0.0",
34
+ "@commitlint/config-conventional": "^19.0.0",
35
+ "@eslint/js": "^9.39.4",
36
+ "@semantic-release/changelog": "6.0.3",
37
+ "@semantic-release/exec": "7.1.0",
38
+ "@semantic-release/git": "10.0.1",
39
+ "@types/node": "^22.0.0",
40
+ "eslint": "^9.0.0",
41
+ "eslint-config-prettier": "^10.1.8",
42
+ "husky": "^9.0.0",
43
+ "prettier": "^3.3.0",
44
+ "rimraf": "^6.0.0",
45
+ "semantic-release": "25.0.3",
46
+ "turbo": "^2.3.0",
47
+ "typescript": "^5.6.0",
48
+ "typescript-eslint": "^8.59.3",
49
+ "vitest": "^3.2.4"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public",
53
+ "registry": "https://registry.npmjs.org"
54
+ },
55
+ "files": [
56
+ ".claude-plugin/",
57
+ ".mcp.json",
58
+ "skills/",
59
+ "packages/*/dist/",
60
+ "packages/*/package.json",
61
+ "packages/*/README.md",
62
+ "packages/*/sidecars/",
63
+ "shared/*/dist/",
64
+ "shared/*/package.json",
65
+ "shared/*/README.md",
66
+ "dart/*/lib/",
67
+ "dart/*/pubspec.yaml",
68
+ "dart/*/README.md",
69
+ "dart/*/CHANGELOG.md",
70
+ "dart/*/EXTENSIONS.md",
71
+ "docs/",
72
+ "examples/*/lib/",
73
+ "examples/*/pubspec.yaml",
74
+ "examples/*/web/",
75
+ "examples/*/README.md",
76
+ "README.md",
77
+ "LICENSE",
78
+ "CONTRIBUTING.md",
79
+ "SECURITY.md",
80
+ "CODE_OF_CONDUCT.md"
81
+ ]
82
+ }
@@ -1,29 +1,29 @@
1
- # @flutter-ultra/flutter-ultra-browser
2
-
3
- MCP server for **Playwright-driven browser automation**: navigate, click, fill, screenshot, console / network capture, OAuth redirect handling, and sandboxed Playwright scripts for Flutter web apps.
4
-
5
- ## Tools
6
-
7
- | Tool | Purpose |
8
- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
9
- | `launch_browser` / `close_browser` | Lifecycle of a single per-session browser instance |
10
- | `new_context` / `new_tab` | Cookie/storage-isolated contexts; pages within a context |
11
- | `navigate` | `page.goto(url)` with load wait |
12
- | `intercept_redirect` / `wait_for_url` | Wait for navigation matching URL pattern; auth flows |
13
- | `click` / `fill` / `press_key` | Interaction primitives by selector |
14
- | `screenshot` | PNG screenshot of page or element (works on CanvasKit) |
15
- | `console_logs` | One-shot read of recent console events |
16
- | `start_console_capture` / `get_console_capture` / `stop_console_capture` | **rev-23** persistent buffer of `console.*` + `pageerror` + `crash`, survives navigation, captures Dart `print()` on Flutter web within 100ms (AC-Br4) |
17
- | `network_requests` | Recent network events for a page |
18
- | `evaluate_js` | Run JS expression in page context, return JSON-serialized value |
19
- | `run_playwright_script` | **Sandboxed** Node `vm` execution of Playwright TS/JS with `page` / `context` / `browser` / `expect` / `console` / `fetch` exposed; **no** `process`/`require`/`import`; CPU + wall-time watchdog |
20
- | `eval_playwright_recipe` | Run a named recipe from `${CLAUDE_PLUGIN_DATA}/recipes/*.ts` |
21
- | `set_storage` / `get_storage` | Pre-seed / export cookies + localStorage |
22
- | `link_to_flutter` | Associate this browser context with a Flutter sessionId (used by `/flutter:drive`) |
23
-
24
- See plan §5.4 lines 596-660 for the full design, AC-Br1..AC-Br4 acceptance criteria, and `run_playwright_script` sandbox boundary rationale.
25
-
26
- State files this server owns:
27
-
28
- - `${FLUTTER_ULTRA_STATE_DIR}/browsers.json` — active browser instances and their `link_to_flutter` mappings (plan §4)
29
- - `${FLUTTER_ULTRA_STATE_DIR}/captures/console-<captureId>.jsonl` — append-only console event buffer per active capture (rev-23, survives server restart)
1
+ # @flutter-ultra/flutter-ultra-browser
2
+
3
+ MCP server for **Playwright-driven browser automation**: navigate, click, fill, screenshot, console / network capture, OAuth redirect handling, and sandboxed Playwright scripts for Flutter web apps.
4
+
5
+ ## Tools
6
+
7
+ | Tool | Purpose |
8
+ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
9
+ | `launch_browser` / `close_browser` | Lifecycle of a single per-session browser instance |
10
+ | `new_context` / `new_tab` | Cookie/storage-isolated contexts; pages within a context |
11
+ | `navigate` | `page.goto(url)` with load wait |
12
+ | `intercept_redirect` / `wait_for_url` | Wait for navigation matching URL pattern; auth flows |
13
+ | `click` / `fill` / `press_key` | Interaction primitives by selector |
14
+ | `screenshot` | PNG screenshot of page or element (works on CanvasKit) |
15
+ | `console_logs` | One-shot read of recent console events |
16
+ | `start_console_capture` / `get_console_capture` / `stop_console_capture` | **rev-23** persistent buffer of `console.*` + `pageerror` + `crash`, survives navigation, captures Dart `print()` on Flutter web within 100ms (AC-Br4) |
17
+ | `network_requests` | Recent network events for a page |
18
+ | `evaluate_js` | Run JS expression in page context, return JSON-serialized value |
19
+ | `run_playwright_script` | **Sandboxed** Node `vm` execution of Playwright TS/JS with `page` / `context` / `browser` / `expect` / `console` / `fetch` exposed; **no** `process`/`require`/`import`; CPU + wall-time watchdog |
20
+ | `eval_playwright_recipe` | Run a named recipe from `${CLAUDE_PLUGIN_DATA}/recipes/*.ts` |
21
+ | `set_storage` / `get_storage` | Pre-seed / export cookies + localStorage |
22
+ | `link_to_flutter` | Associate this browser context with a Flutter sessionId (used by `/flutter:drive`) |
23
+
24
+ See plan §5.4 lines 596-660 for the full design, AC-Br1..AC-Br4 acceptance criteria, and `run_playwright_script` sandbox boundary rationale.
25
+
26
+ State files this server owns:
27
+
28
+ - `${FLUTTER_ULTRA_STATE_DIR}/browsers.json` — active browser instances and their `link_to_flutter` mappings (plan §4)
29
+ - `${FLUTTER_ULTRA_STATE_DIR}/captures/console-<captureId>.jsonl` — append-only console event buffer per active capture (rev-23, survives server restart)
@@ -1,39 +1,39 @@
1
- {
2
- "name": "@flutter-ultra/flutter-ultra-browser",
3
- "version": "0.0.0",
4
- "private": true,
5
- "description": "MCP server for Playwright-driven browser automation: OAuth redirects, popups, console capture, network, sandboxed JS.",
6
- "license": "Apache-2.0",
7
- "type": "module",
8
- "main": "dist/index.js",
9
- "types": "dist/index.d.ts",
10
- "bin": {
11
- "flutter-ultra-browser": "dist/bin.js"
12
- },
13
- "files": [
14
- "dist",
15
- "README.md"
16
- ],
17
- "scripts": {
18
- "build": "tsc -b",
19
- "lint": "eslint src",
20
- "test": "vitest run",
21
- "typecheck": "tsc -b --noEmit",
22
- "clean": "rimraf dist .turbo *.tsbuildinfo"
23
- },
24
- "dependencies": {
25
- "@modelcontextprotocol/sdk": "^1.0.4",
26
- "playwright-core": "^1.49.0",
27
- "proper-lockfile": "^4.1.2",
28
- "superjson": "^2.2.1",
29
- "zod": "^3.23.8",
30
- "zod-to-json-schema": "^3.23.5"
31
- },
32
- "devDependencies": {
33
- "@types/proper-lockfile": "^4.1.4",
34
- "playwright": "^1.49.0",
35
- "rimraf": "^6.0.0",
36
- "typescript": "^5.6.0",
37
- "vitest": "^2.0.0"
38
- }
39
- }
1
+ {
2
+ "name": "@flutter-ultra/flutter-ultra-browser",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "description": "MCP server for Playwright-driven browser automation: OAuth redirects, popups, console capture, network, sandboxed JS.",
6
+ "license": "Apache-2.0",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "bin": {
11
+ "flutter-ultra-browser": "dist/bin.js"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "README.md"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc -b",
19
+ "lint": "eslint src",
20
+ "test": "vitest run",
21
+ "typecheck": "tsc -b --noEmit",
22
+ "clean": "rimraf dist .turbo *.tsbuildinfo"
23
+ },
24
+ "dependencies": {
25
+ "@modelcontextprotocol/sdk": "^1.0.4",
26
+ "playwright-core": "^1.49.0",
27
+ "proper-lockfile": "^4.1.2",
28
+ "superjson": "^2.2.1",
29
+ "zod": "^3.23.8",
30
+ "zod-to-json-schema": "^3.23.5"
31
+ },
32
+ "devDependencies": {
33
+ "@types/proper-lockfile": "^4.1.4",
34
+ "playwright": "^1.49.0",
35
+ "rimraf": "^6.0.0",
36
+ "typescript": "^5.6.0",
37
+ "vitest": "^2.0.0"
38
+ }
39
+ }