@hanzo/browser-extension 1.7.2

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 (134) hide show
  1. package/.github/workflows/docs.yml +44 -0
  2. package/.github/workflows/release.yml +55 -0
  3. package/LICENSE +21 -0
  4. package/README.md +126 -0
  5. package/dist/browser-extension/README.md +43 -0
  6. package/dist/browser-extension/ai-worker.js +30 -0
  7. package/dist/browser-extension/background-firefox.js +617 -0
  8. package/dist/browser-extension/background.js +2737 -0
  9. package/dist/browser-extension/browser-control.js +683 -0
  10. package/dist/browser-extension/cdp-bridge-server.js +444 -0
  11. package/dist/browser-extension/chrome/ai-worker.js +571 -0
  12. package/dist/browser-extension/chrome/background.js +2737 -0
  13. package/dist/browser-extension/chrome/callback.html +17 -0
  14. package/dist/browser-extension/chrome/content-script.js +1270 -0
  15. package/dist/browser-extension/chrome/icon128.png +0 -0
  16. package/dist/browser-extension/chrome/icon16.png +0 -0
  17. package/dist/browser-extension/chrome/icon32.png +0 -0
  18. package/dist/browser-extension/chrome/icon48.png +0 -0
  19. package/dist/browser-extension/chrome/manifest.json +57 -0
  20. package/dist/browser-extension/chrome/popup.css +519 -0
  21. package/dist/browser-extension/chrome/popup.html +242 -0
  22. package/dist/browser-extension/chrome/popup.js +267 -0
  23. package/dist/browser-extension/chrome/sidebar.css +1176 -0
  24. package/dist/browser-extension/chrome/sidebar.html +280 -0
  25. package/dist/browser-extension/chrome/sidebar.js +778 -0
  26. package/dist/browser-extension/cli.js +233 -0
  27. package/dist/browser-extension/content-script.js +1270 -0
  28. package/dist/browser-extension/firefox/ai-worker.js +571 -0
  29. package/dist/browser-extension/firefox/background.js +617 -0
  30. package/dist/browser-extension/firefox/callback.html +17 -0
  31. package/dist/browser-extension/firefox/content-script.js +1270 -0
  32. package/dist/browser-extension/firefox/icon128.png +0 -0
  33. package/dist/browser-extension/firefox/icon16.png +0 -0
  34. package/dist/browser-extension/firefox/icon32.png +0 -0
  35. package/dist/browser-extension/firefox/icon48.png +0 -0
  36. package/dist/browser-extension/firefox/manifest.json +66 -0
  37. package/dist/browser-extension/firefox/popup.css +519 -0
  38. package/dist/browser-extension/firefox/popup.html +242 -0
  39. package/dist/browser-extension/firefox/popup.js +267 -0
  40. package/dist/browser-extension/firefox/sidebar.css +1176 -0
  41. package/dist/browser-extension/firefox/sidebar.html +280 -0
  42. package/dist/browser-extension/firefox/sidebar.js +778 -0
  43. package/dist/browser-extension/hanzo-browser-extension-firefox-1.1.0.zip +0 -0
  44. package/dist/browser-extension/icon128.png +0 -0
  45. package/dist/browser-extension/icon16.png +0 -0
  46. package/dist/browser-extension/icon32.png +0 -0
  47. package/dist/browser-extension/icon48.png +0 -0
  48. package/dist/browser-extension/manifest.json +57 -0
  49. package/dist/browser-extension/package.json +41 -0
  50. package/dist/browser-extension/popup.css +468 -0
  51. package/dist/browser-extension/popup.html +191 -0
  52. package/dist/browser-extension/popup.js +267 -0
  53. package/dist/browser-extension/safari/Info.plist +21 -0
  54. package/dist/browser-extension/safari/ai-worker.js +571 -0
  55. package/dist/browser-extension/safari/background.js +2737 -0
  56. package/dist/browser-extension/safari/callback.html +17 -0
  57. package/dist/browser-extension/safari/content-script.js +1270 -0
  58. package/dist/browser-extension/safari/icon128.png +0 -0
  59. package/dist/browser-extension/safari/icon16.png +0 -0
  60. package/dist/browser-extension/safari/icon32.png +0 -0
  61. package/dist/browser-extension/safari/icon48.png +0 -0
  62. package/dist/browser-extension/safari/popup.css +519 -0
  63. package/dist/browser-extension/safari/popup.html +242 -0
  64. package/dist/browser-extension/safari/popup.js +267 -0
  65. package/dist/browser-extension/safari/sidebar.css +1176 -0
  66. package/dist/browser-extension/safari/sidebar.html +280 -0
  67. package/dist/browser-extension/safari/sidebar.js +778 -0
  68. package/dist/browser-extension/sidebar.css +718 -0
  69. package/dist/browser-extension/sidebar.html +184 -0
  70. package/dist/browser-extension/sidebar.js +778 -0
  71. package/dist/browser-extension/webgpu-ai.js +495 -0
  72. package/dist/cdp-bridge-server.js +411 -0
  73. package/dist/safari/Hanzo AI/Hanzo AI.xcodeproj/project.pbxproj +1047 -0
  74. package/dist/safari/Hanzo AI/Hanzo AI.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  75. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  76. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  77. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-128@1x.png +0 -0
  78. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-128@2x.png +0 -0
  79. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-16@1x.png +0 -0
  80. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-16@2x.png +0 -0
  81. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-256@1x.png +0 -0
  82. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-256@2x.png +0 -0
  83. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-32@1x.png +0 -0
  84. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-32@2x.png +0 -0
  85. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-512@1x.png +0 -0
  86. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-512@2x.png +0 -0
  87. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/universal-icon-1024@1x.png +0 -0
  88. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/Contents.json +6 -0
  89. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/LargeIcon.imageset/Contents.json +21 -0
  90. package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/LargeIcon.imageset/icon128.png +0 -0
  91. package/dist/safari/Hanzo AI/Shared (App)/Resources/Base.lproj/Main.html +20 -0
  92. package/dist/safari/Hanzo AI/Shared (App)/Resources/Icon.png +0 -0
  93. package/dist/safari/Hanzo AI/Shared (App)/Resources/Script.js +24 -0
  94. package/dist/safari/Hanzo AI/Shared (App)/Resources/Style.css +61 -0
  95. package/dist/safari/Hanzo AI/Shared (App)/ViewController.swift +81 -0
  96. package/dist/safari/Hanzo AI/Shared (Extension)/SafariWebExtensionHandler.swift +42 -0
  97. package/dist/safari/Hanzo AI/iOS (App)/AppDelegate.swift +24 -0
  98. package/dist/safari/Hanzo AI/iOS (App)/Base.lproj/LaunchScreen.storyboard +36 -0
  99. package/dist/safari/Hanzo AI/iOS (App)/Base.lproj/Main.storyboard +38 -0
  100. package/dist/safari/Hanzo AI/iOS (App)/Info.plist +27 -0
  101. package/dist/safari/Hanzo AI/iOS (App)/SceneDelegate.swift +18 -0
  102. package/dist/safari/Hanzo AI/iOS (Extension)/Info.plist +13 -0
  103. package/dist/safari/Hanzo AI/macOS (App)/AppDelegate.swift +21 -0
  104. package/dist/safari/Hanzo AI/macOS (App)/Base.lproj/Main.storyboard +124 -0
  105. package/dist/safari/Hanzo AI/macOS (App)/Info.plist +8 -0
  106. package/dist/safari/Hanzo AI/macOS (Extension)/Info.plist +13 -0
  107. package/docs/_config.yml +13 -0
  108. package/docs/_layouts/default.html +435 -0
  109. package/docs/index.md +54 -0
  110. package/install-extension.sh +75 -0
  111. package/manifest.json +29 -0
  112. package/package.json +32 -0
  113. package/src/ai-worker.js +571 -0
  114. package/src/callback.html +17 -0
  115. package/src/chat-widget.tsx +93 -0
  116. package/src/icon128.png +0 -0
  117. package/src/icon16.png +0 -0
  118. package/src/icon32.png +0 -0
  119. package/src/icon48.png +0 -0
  120. package/src/manifest-firefox.json +66 -0
  121. package/src/manifest.json +57 -0
  122. package/src/package.json +41 -0
  123. package/src/popup.css +519 -0
  124. package/src/popup.html +242 -0
  125. package/src/popup.js +192 -0
  126. package/src/sidebar.css +1176 -0
  127. package/src/sidebar.html +280 -0
  128. package/src/sidebar.js +884 -0
  129. package/src/webgpu.d.ts +131 -0
  130. package/test/claude-integration.test.ts +251 -0
  131. package/test/server-frameworks-edge-cases.test.ts +145 -0
  132. package/test/server-frameworks.test.ts +395 -0
  133. package/test-cdp-connection.js +140 -0
  134. package/tsconfig.json +19 -0
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Hanzo AI — Signing in...</title>
6
+ <style>
7
+ body { background: #000; color: #fff; font-family: system-ui, sans-serif; display: flex; align-items: center; justify-content: center; height: 100vh; margin: 0; }
8
+ .msg { text-align: center; opacity: 0.7; }
9
+ </style>
10
+ </head>
11
+ <body>
12
+ <div class="msg">
13
+ <p>Signing in to Hanzo AI...</p>
14
+ <p><small>This tab will close automatically.</small></p>
15
+ </div>
16
+ </body>
17
+ </html>
@@ -0,0 +1,93 @@
1
+ import React from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+ import { flushSync } from 'react-dom';
4
+ import {
5
+ Button,
6
+ Card,
7
+ CardContent,
8
+ CardDescription,
9
+ CardHeader,
10
+ CardTitle,
11
+ Textarea,
12
+ } from '@hanzo/ui/primitives-common';
13
+
14
+ function LoginPrompt() {
15
+ return (
16
+ <Card className="chat-modern-login-card">
17
+ <CardHeader>
18
+ <CardTitle>Chat with Zen AI models</CardTitle>
19
+ <CardDescription>Models enabled in Hanzo Cloud are loaded automatically.</CardDescription>
20
+ </CardHeader>
21
+ <CardContent>
22
+ <Button id="auth-btn" className="chat-modern-auth-btn" type="button">
23
+ Sign in
24
+ </Button>
25
+ <p className="auth-note">
26
+ Browser tools work without sign-in.{' '}
27
+ <a href="https://docs.hanzo.ai" target="_blank" rel="noreferrer">
28
+ Learn more
29
+ </a>
30
+ </p>
31
+ </CardContent>
32
+ </Card>
33
+ );
34
+ }
35
+
36
+ function ChatComposer() {
37
+ return (
38
+ <div className="chat-modern-composer">
39
+ <div className="model-selector">
40
+ <select id="model-select">
41
+ <option value="claude-sonnet-4-20250514">Claude Sonnet 4</option>
42
+ <option value="claude-opus-4-20250514">Claude Opus 4</option>
43
+ <option value="gpt-4o">GPT-4o</option>
44
+ <option value="zen-coder-flash">Zen Coder Flash</option>
45
+ <option value="zen-max">Zen Max</option>
46
+ </select>
47
+ </div>
48
+
49
+ <div className="chat-flags">
50
+ <label className="flag-toggle">
51
+ <input type="checkbox" id="rag-enabled" defaultChecked />
52
+ <span>RAG</span>
53
+ </label>
54
+ <label className="flag-toggle">
55
+ <input type="checkbox" id="tab-context-enabled" defaultChecked />
56
+ <span>Tab Context</span>
57
+ </label>
58
+ <span id="rag-status" className="rag-status">
59
+ Ready
60
+ </span>
61
+ </div>
62
+
63
+ <div className="input-row">
64
+ <Textarea id="chat-input" className="chat-modern-input" placeholder="Ask anything..." rows={1} />
65
+ <Button id="send-btn" className="send-btn chat-modern-send" title="Send" type="button">
66
+ <svg viewBox="0 0 20 20" fill="none" stroke="currentColor" aria-hidden="true">
67
+ <path d="M4 10l12-6-6 12-2-6-4-2z" strokeWidth="1.5" fill="currentColor" />
68
+ </svg>
69
+ </Button>
70
+ </div>
71
+ </div>
72
+ );
73
+ }
74
+
75
+ export function mountModernChatWidget() {
76
+ const loginTarget = document.getElementById('chat-login-prompt');
77
+ if (loginTarget) {
78
+ loginTarget.innerHTML = '';
79
+ const loginRoot = createRoot(loginTarget);
80
+ flushSync(() => {
81
+ loginRoot.render(<LoginPrompt />);
82
+ });
83
+ }
84
+
85
+ const composerTarget = document.getElementById('chat-composer');
86
+ if (composerTarget) {
87
+ composerTarget.innerHTML = '';
88
+ const composerRoot = createRoot(composerTarget);
89
+ flushSync(() => {
90
+ composerRoot.render(<ChatComposer />);
91
+ });
92
+ }
93
+ }
Binary file
package/src/icon16.png ADDED
Binary file
package/src/icon32.png ADDED
Binary file
package/src/icon48.png ADDED
Binary file
@@ -0,0 +1,66 @@
1
+ {
2
+ "manifest_version": 3,
3
+ "name": "Hanzo AI",
4
+ "version": "1.7.2",
5
+ "description": "AI-powered dev assistant — click-to-code navigation, source maps, WebGPU AI, and MCP integration for Claude Code.",
6
+ "permissions": [
7
+ "activeTab",
8
+ "identity",
9
+ "storage",
10
+ "tabs",
11
+ "webNavigation",
12
+ "scripting"
13
+ ],
14
+ "host_permissions": [
15
+ "http://localhost/*",
16
+ "https://localhost/*",
17
+ "<all_urls>"
18
+ ],
19
+ "content_security_policy": {
20
+ "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
21
+ },
22
+ "content_scripts": [
23
+ {
24
+ "matches": ["<all_urls>"],
25
+ "js": ["content-script.js"],
26
+ "run_at": "document_idle"
27
+ }
28
+ ],
29
+ "background": {
30
+ "scripts": ["background.js"],
31
+ "type": "module"
32
+ },
33
+ "action": {
34
+ "default_popup": "popup.html",
35
+ "default_icon": {
36
+ "16": "icon16.png",
37
+ "48": "icon48.png",
38
+ "128": "icon128.png"
39
+ }
40
+ },
41
+ "sidebar_action": {
42
+ "default_title": "Hanzo AI",
43
+ "default_panel": "sidebar.html",
44
+ "default_icon": {
45
+ "16": "icon16.png",
46
+ "48": "icon48.png"
47
+ }
48
+ },
49
+ "web_accessible_resources": [
50
+ {
51
+ "resources": ["ai-worker.js", "models/*"],
52
+ "matches": ["<all_urls>"]
53
+ }
54
+ ],
55
+ "browser_specific_settings": {
56
+ "gecko": {
57
+ "id": "hanzo-ai@hanzo.ai",
58
+ "strict_min_version": "109.0"
59
+ },
60
+ "gecko_android": {}
61
+ },
62
+ "data_collection_permissions": {
63
+ "purposes": ["functionality"],
64
+ "data_categories": ["technical_data"]
65
+ }
66
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "manifest_version": 3,
3
+ "name": "Hanzo AI",
4
+ "version": "1.7.2",
5
+ "description": "AI-powered dev assistant — click-to-code navigation, source maps, WebGPU AI, and MCP integration for Claude Code.",
6
+ "permissions": [
7
+ "activeTab",
8
+ "identity",
9
+ "sidePanel",
10
+ "storage",
11
+ "tabs",
12
+ "webNavigation",
13
+ "scripting",
14
+ "debugger"
15
+ ],
16
+ "host_permissions": [
17
+ "http://localhost/*",
18
+ "https://localhost/*",
19
+ "<all_urls>"
20
+ ],
21
+ "content_security_policy": {
22
+ "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
23
+ },
24
+ "content_scripts": [
25
+ {
26
+ "matches": ["<all_urls>"],
27
+ "js": ["content-script.js"],
28
+ "run_at": "document_idle"
29
+ }
30
+ ],
31
+ "background": {
32
+ "service_worker": "background.js",
33
+ "type": "module"
34
+ },
35
+ "action": {
36
+ "default_popup": "popup.html",
37
+ "default_icon": {
38
+ "16": "icon16.png",
39
+ "48": "icon48.png",
40
+ "128": "icon128.png"
41
+ }
42
+ },
43
+ "side_panel": {
44
+ "default_path": "sidebar.html"
45
+ },
46
+ "icons": {
47
+ "16": "icon16.png",
48
+ "48": "icon48.png",
49
+ "128": "icon128.png"
50
+ },
51
+ "web_accessible_resources": [
52
+ {
53
+ "resources": ["ai-worker.js", "models/*"],
54
+ "matches": ["<all_urls>"]
55
+ }
56
+ ]
57
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@hanzo/browser-extension",
3
+ "version": "1.7.2",
4
+ "description": "Browser extension for click-to-code navigation with MCP integration",
5
+ "main": "cli.js",
6
+ "bin": {
7
+ "hanzo-browser-server": "./cli.js"
8
+ },
9
+ "scripts": {
10
+ "start": "node cli.js"
11
+ },
12
+ "files": [
13
+ "cli.js",
14
+ "browser-extension-server.js",
15
+ "content-script.js",
16
+ "manifest.json",
17
+ "README.md"
18
+ ],
19
+ "keywords": [
20
+ "mcp",
21
+ "browser",
22
+ "devtools",
23
+ "source-maps",
24
+ "react",
25
+ "vue",
26
+ "developer-tools"
27
+ ],
28
+ "dependencies": {
29
+ "ws": "^8.18.0",
30
+ "commander": "^11.0.0",
31
+ "chalk": "^5.3.0"
32
+ },
33
+ "devDependencies": {
34
+ "@types/ws": "^8.5.0",
35
+ "typescript": "^5.0.0",
36
+ "esbuild": "^0.25.0"
37
+ },
38
+ "peerDependencies": {
39
+ "@modelcontextprotocol/sdk": "^1.0.0"
40
+ }
41
+ }