@hanzo/browser-extension 1.9.34 → 1.9.36

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 (71) hide show
  1. package/package.json +1 -1
  2. package/src/answer/AnswerEngine.tsx +8 -0
  3. package/src/onboarding.css +78 -0
  4. package/src/onboarding.html +45 -0
  5. package/src/popup.html +28 -0
  6. package/dist/browser-extension/README.md +0 -43
  7. package/dist/browser-extension/background-firefox.js +0 -5983
  8. package/dist/browser-extension/background.js +0 -8670
  9. package/dist/browser-extension/browser-control.js +0 -1317
  10. package/dist/browser-extension/chrome/ai-worker.js +0 -571
  11. package/dist/browser-extension/chrome/background.js +0 -8670
  12. package/dist/browser-extension/chrome/callback.html +0 -17
  13. package/dist/browser-extension/chrome/content-script.js +0 -2789
  14. package/dist/browser-extension/chrome/icon128.png +0 -0
  15. package/dist/browser-extension/chrome/icon16.png +0 -0
  16. package/dist/browser-extension/chrome/icon48.png +0 -0
  17. package/dist/browser-extension/chrome/manifest.json +0 -81
  18. package/dist/browser-extension/chrome/newtab.css +0 -277
  19. package/dist/browser-extension/chrome/newtab.html +0 -13
  20. package/dist/browser-extension/chrome/newtab.js +0 -64
  21. package/dist/browser-extension/chrome/popup.css +0 -761
  22. package/dist/browser-extension/chrome/popup.html +0 -381
  23. package/dist/browser-extension/chrome/popup.js +0 -1716
  24. package/dist/browser-extension/chrome/sidebar.css +0 -1792
  25. package/dist/browser-extension/chrome/sidebar.html +0 -463
  26. package/dist/browser-extension/chrome/sidebar.js +0 -26541
  27. package/dist/browser-extension/cli.js +0 -233
  28. package/dist/browser-extension/content-script.js +0 -2789
  29. package/dist/browser-extension/firefox/ai-worker.js +0 -571
  30. package/dist/browser-extension/firefox/background.js +0 -5983
  31. package/dist/browser-extension/firefox/callback.html +0 -17
  32. package/dist/browser-extension/firefox/content-script.js +0 -2789
  33. package/dist/browser-extension/firefox/icon128.png +0 -0
  34. package/dist/browser-extension/firefox/icon16.png +0 -0
  35. package/dist/browser-extension/firefox/icon48.png +0 -0
  36. package/dist/browser-extension/firefox/manifest.json +0 -85
  37. package/dist/browser-extension/firefox/newtab.css +0 -277
  38. package/dist/browser-extension/firefox/newtab.html +0 -13
  39. package/dist/browser-extension/firefox/newtab.js +0 -64
  40. package/dist/browser-extension/firefox/popup.css +0 -761
  41. package/dist/browser-extension/firefox/popup.html +0 -381
  42. package/dist/browser-extension/firefox/popup.js +0 -1716
  43. package/dist/browser-extension/firefox/sidebar.css +0 -1792
  44. package/dist/browser-extension/firefox/sidebar.html +0 -463
  45. package/dist/browser-extension/firefox/sidebar.js +0 -26541
  46. package/dist/browser-extension/icon128.png +0 -0
  47. package/dist/browser-extension/icon16.png +0 -0
  48. package/dist/browser-extension/icon48.png +0 -0
  49. package/dist/browser-extension/manifest.json +0 -81
  50. package/dist/browser-extension/newtab.js +0 -64
  51. package/dist/browser-extension/package.json +0 -41
  52. package/dist/browser-extension/popup.js +0 -1716
  53. package/dist/browser-extension/safari/Info.plist +0 -21
  54. package/dist/browser-extension/safari/ai-worker.js +0 -571
  55. package/dist/browser-extension/safari/background.js +0 -8670
  56. package/dist/browser-extension/safari/callback.html +0 -17
  57. package/dist/browser-extension/safari/content-script.js +0 -2789
  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/icon48.png +0 -0
  61. package/dist/browser-extension/safari/newtab.css +0 -277
  62. package/dist/browser-extension/safari/newtab.html +0 -13
  63. package/dist/browser-extension/safari/newtab.js +0 -64
  64. package/dist/browser-extension/safari/popup.css +0 -761
  65. package/dist/browser-extension/safari/popup.html +0 -381
  66. package/dist/browser-extension/safari/popup.js +0 -1716
  67. package/dist/browser-extension/safari/sidebar.css +0 -1792
  68. package/dist/browser-extension/safari/sidebar.html +0 -463
  69. package/dist/browser-extension/safari/sidebar.js +0 -26541
  70. package/dist/browser-extension/sidebar.js +0 -26541
  71. package/dist/browser-extension/webgpu-ai.js +0 -568
@@ -1,381 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Hanzo AI</title>
7
- <link rel="stylesheet" href="popup.css">
8
- </head>
9
- <body>
10
- <div class="container">
11
- <header>
12
- <svg class="logo" viewBox="0 0 67 67" xmlns="http://www.w3.org/2000/svg">
13
- <path d="M22.21 67V44.6369H0V67H22.21Z" fill="currentColor"/>
14
- <path d="M66.7038 22.3184H22.2534L0.0878906 44.6367H44.4634L66.7038 22.3184Z" fill="currentColor"/>
15
- <path d="M22.21 0H0V22.3184H22.21V0Z" fill="currentColor"/>
16
- <path d="M66.7198 0H44.5098V22.3184H66.7198V0Z" fill="currentColor"/>
17
- <path d="M66.7198 67V44.6369H44.5098V67H66.7198Z" fill="currentColor"/>
18
- </svg>
19
- <h1>Hanzo AI</h1>
20
- </header>
21
-
22
- <!-- Login Section -->
23
- <div id="login-section" class="section login-section">
24
- <div class="login-card">
25
- <svg class="login-logo" viewBox="0 0 67 67" xmlns="http://www.w3.org/2000/svg">
26
- <path d="M22.21 67V44.6369H0V67H22.21Z" fill="currentColor"/>
27
- <path d="M66.7038 22.3184H22.2534L0.0878906 44.6367H44.4634L66.7038 22.3184Z" fill="currentColor"/>
28
- <path d="M22.21 0H0V22.3184H22.21V0Z" fill="currentColor"/>
29
- <path d="M66.7198 0H44.5098V22.3184H66.7198V0Z" fill="currentColor"/>
30
- <path d="M66.7198 67V44.6369H44.5098V67H66.7198Z" fill="currentColor"/>
31
- </svg>
32
- <h2 class="login-headline">Sign in to Hanzo AI</h2>
33
- <p class="login-sub">Chat with AI, use browser tools, and build with agents.</p>
34
- <button id="login-btn" class="login-signin-btn">Sign In</button>
35
- <button id="signup-btn-popup" class="login-create-btn">Create account</button>
36
- <p class="login-note">
37
- Browser tools work without sign-in. <a href="https://docs.hanzo.ai" target="_blank">Learn more</a>
38
- </p>
39
- </div>
40
- </div>
41
-
42
- <!-- Main Section (shown after login) -->
43
- <div id="main-section" class="section hidden">
44
- <div id="user-info-section" class="hidden">
45
- <div class="user-info">
46
- <img id="user-avatar" class="avatar" src="" alt="">
47
- <div>
48
- <div id="user-name" class="user-name"></div>
49
- <div id="user-email" class="user-email"></div>
50
- </div>
51
- <button id="logout-btn" class="btn-icon" title="Sign out">
52
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
53
- <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9"/>
54
- </svg>
55
- </button>
56
- </div>
57
- <div class="divider"></div>
58
- </div>
59
-
60
- <!-- Embedded search: run a query through the Hanzo answer engine. -->
61
- <form id="search-form" style="display:flex;gap:6px;margin-bottom:10px;">
62
- <input id="search-input" type="text" placeholder="Search Hanzo AI…" autocomplete="off"
63
- style="flex:1;min-width:0;padding:9px 12px;background:var(--surface-light,#171717);border:1px solid var(--border,rgba(255,255,255,0.12));border-radius:8px;color:var(--text,#fafafa);font-size:13px;font-family:inherit;outline:none;">
64
- <button id="search-btn" type="submit" title="Search" aria-label="Search"
65
- style="width:36px;height:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--primary,#fafafa);border:none;border-radius:8px;color:#000;cursor:pointer;">
66
- <svg viewBox="0 0 16 16" width="15" height="15" fill="none" stroke="currentColor" stroke-width="1.8">
67
- <circle cx="7" cy="7" r="4.5"/><path d="M11 11l3.5 3.5" stroke-linecap="round"/>
68
- </svg>
69
- </button>
70
- </form>
71
-
72
- <!-- Actions: single Open Chat button + on-page surface settings. -->
73
- <button id="open-panel" class="btn btn-secondary" style="margin-bottom: 8px;">
74
- <svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor">
75
- <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
76
- </svg>
77
- Open Chat
78
- </button>
79
-
80
- <!-- On-page chat config -->
81
- <div class="onpage-config" style="display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:11px;">
82
- <div class="feature-toggle" style="display:flex;justify-content:space-between;align-items:center;">
83
- <label style="display:flex;align-items:center;gap:6px;cursor:pointer;">
84
- <input type="checkbox" id="overlay-enabled" checked>
85
- <span>On-page chat panel</span>
86
- </label>
87
- <span style="color:var(--text-muted,#888);font-size:10px;">overlay vs new tab</span>
88
- </div>
89
-
90
- <div id="overlay-side-row" class="side-picker" style="display:flex;gap:6px;align-items:center;">
91
- <span style="color:var(--text-muted,#888);">Pin:</span>
92
- <button id="pin-left" class="btn btn-ghost" style="flex:1;padding:4px 8px;font-size:11px;">Left</button>
93
- <button id="pin-right" class="btn btn-ghost" style="flex:1;padding:4px 8px;font-size:11px;" data-active="true">Right</button>
94
- </div>
95
-
96
- <div id="overlay-width-row" style="display:flex;gap:6px;align-items:center;">
97
- <span style="color:var(--text-muted,#888);">Width:</span>
98
- <button class="btn btn-ghost width-btn" data-width="compact" style="flex:1;padding:4px 8px;font-size:11px;">Compact</button>
99
- <button class="btn btn-ghost width-btn" data-width="default" style="flex:1;padding:4px 8px;font-size:11px;" data-active="true">Default</button>
100
- <button class="btn btn-ghost width-btn" data-width="wide" style="flex:1;padding:4px 8px;font-size:11px;">Wide</button>
101
- </div>
102
-
103
- <span style="color:var(--text-muted,#888);font-size:10px;line-height:1.4;">
104
- FF native sidebar: View → Sidebar → Hanzo AI.<br>
105
- Disable to fall back to a standalone tab — useful on sites with strict CSP.
106
- </span>
107
- </div>
108
-
109
- <div class="divider"></div>
110
-
111
- <!-- AI Usage (Claude + Codex, from the current browser session) -->
112
- <div class="usage-header" style="display:flex;align-items:center;justify-content:space-between;">
113
- <h3>AI Usage</h3>
114
- <button id="usage-refresh" class="btn-icon" title="Refresh usage">
115
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
116
- <path d="M23 4v6h-6M1 20v-6h6"/>
117
- <path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/>
118
- </svg>
119
- </button>
120
- </div>
121
- <div id="usage-list" class="usage-list" style="display:flex;flex-direction:column;gap:8px;"></div>
122
- <a href="https://console.hanzo.ai/ai-accounts" target="_blank"
123
- style="display:inline-block;margin-top:8px;font-size:11px;color:var(--text-muted,#888);">Manage AI accounts →</a>
124
-
125
- <div class="divider"></div>
126
-
127
- <!-- Tools -->
128
- <h3>Tools</h3>
129
- <div class="tools-grid">
130
- <button id="tool-picker" class="tool-btn" title="Pick an element on the page">
131
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
132
- <path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"/>
133
- <path d="M13 13l6 6"/>
134
- </svg>
135
- <span>Selector</span>
136
- </button>
137
- <button id="tool-screenshot" class="tool-btn" title="Capture visible page">
138
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
139
- <path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/>
140
- <circle cx="12" cy="13" r="4"/>
141
- </svg>
142
- <span>Screenshot</span>
143
- </button>
144
- <button id="tool-pageinfo" class="tool-btn" title="Copy page info to clipboard">
145
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
146
- <circle cx="12" cy="12" r="10"/>
147
- <path d="M12 16v-4M12 8h.01"/>
148
- </svg>
149
- <span>Page Info</span>
150
- </button>
151
- <button id="tool-accessibility" class="tool-btn" title="Run accessibility audit">
152
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
153
- <circle cx="12" cy="4" r="2"/>
154
- <path d="M12 6v6M8 8l4 2 4-2M8 22l2-6h4l2 6"/>
155
- </svg>
156
- <span>A11y Audit</span>
157
- </button>
158
- <button id="tool-performance" class="tool-btn" title="Run performance audit">
159
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
160
- <path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/>
161
- </svg>
162
- <span>Perf Audit</span>
163
- </button>
164
- <button id="tool-console" class="tool-btn" title="Evaluate JS in page context">
165
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
166
- <polyline points="4 17 10 11 4 5"/>
167
- <line x1="12" y1="19" x2="20" y2="19"/>
168
- </svg>
169
- <span>Console</span>
170
- </button>
171
- </div>
172
-
173
- <div class="divider"></div>
174
-
175
- <!-- Features -->
176
- <h3>Features</h3>
177
- <div class="features">
178
- <div class="feature-toggle">
179
- <label>
180
- <input type="checkbox" id="source-maps" checked>
181
- <span class="toggle"></span>
182
- <div class="feature-info">
183
- <strong>Source Maps</strong>
184
- <small>Click-to-code navigation</small>
185
- </div>
186
- </label>
187
- </div>
188
-
189
- <div class="feature-toggle">
190
- <label>
191
- <input type="checkbox" id="webgpu-ai" checked>
192
- <span class="toggle"></span>
193
- <div class="feature-info">
194
- <strong>WebGPU AI</strong>
195
- <small>Local AI inference</small>
196
- </div>
197
- </label>
198
- </div>
199
-
200
- <div class="feature-toggle">
201
- <label>
202
- <input type="checkbox" id="browser-control">
203
- <span class="toggle"></span>
204
- <div class="feature-info">
205
- <strong>Browser Control</strong>
206
- <small>AI browser automation</small>
207
- </div>
208
- </label>
209
- </div>
210
-
211
- <div class="feature-toggle">
212
- <label>
213
- <input type="checkbox" id="tab-filesystem">
214
- <span class="toggle"></span>
215
- <div class="feature-info">
216
- <strong>Tab Filesystem</strong>
217
- <small>Mount tabs as files</small>
218
- </div>
219
- </label>
220
- </div>
221
- </div>
222
-
223
- <div class="divider"></div>
224
-
225
- <!-- Browser Backend -->
226
- <div class="setting-group backend-picker">
227
- <h3>Backend</h3>
228
- <div class="backend-select-wrapper">
229
- <select id="browser-backend">
230
- <option value="auto">Auto (default)</option>
231
- <option value="this">This Browser</option>
232
- <option value="firefox">Firefox</option>
233
- <option value="chrome">Chrome</option>
234
- <option value="playwright">Playwright Only</option>
235
- </select>
236
- </div>
237
- <div class="backend-status">
238
- <span class="status-dot" id="bridge-status"></span>
239
- <span id="bridge-detail" class="status-detail">Checking bridge...</span>
240
- </div>
241
- </div>
242
-
243
- <div class="divider"></div>
244
-
245
- <!-- Connection Status -->
246
- <h3>Status</h3>
247
- <div class="status">
248
- <div class="status-item">
249
- <span class="status-dot" id="zap-status"></span>
250
- <span>ZAP Bridge</span>
251
- <span id="zap-detail" class="status-detail">Discovering...</span>
252
- </div>
253
- <div class="status-item">
254
- <span class="status-dot" id="cdp-status"></span>
255
- <span>CDP Bridge</span>
256
- <span id="cdp-detail" class="status-detail">Checking...</span>
257
- </div>
258
- <div class="status-item">
259
- <span class="status-dot" id="mcp-status"></span>
260
- <span>MCP Bridge</span>
261
- <span id="mcp-port" class="status-detail">:9224</span>
262
- </div>
263
- <div class="status-item">
264
- <span class="status-dot" id="gpu-status"></span>
265
- <span>WebGPU</span>
266
- <span id="gpu-detail" class="status-detail">Checking...</span>
267
- </div>
268
- </div>
269
-
270
- <div class="divider"></div>
271
-
272
- <!-- Actions -->
273
- <div class="actions">
274
- <button id="test-connection" class="btn btn-ghost">Test Connection</button>
275
- <button id="open-settings" class="btn btn-ghost">Settings</button>
276
- </div>
277
-
278
- <!-- Quick Guide -->
279
- <div class="guide" style="margin-top: 12px;">
280
- <h3 style="text-transform: none; letter-spacing: 0; color: var(--text);">Shortcuts</h3>
281
- <p>
282
- <kbd id="inspect-shortcut-display">Ctrl</kbd> + <kbd>Click</kbd>
283
- any element to jump to source
284
- <button id="record-inspect-shortcut" class="btn-link" style="margin-left:6px;font-size:11px;">edit</button>
285
- </p>
286
- <p><kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>H</kbd> open Hanzo panel</p>
287
- </div>
288
- </div>
289
-
290
- <!-- Settings Section -->
291
- <div id="settings-section" class="section hidden">
292
- <div class="settings-header">
293
- <button id="back-btn" class="btn-icon">
294
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
295
- <path d="M19 12H5M12 19l-7-7 7-7"/>
296
- </svg>
297
- </button>
298
- <h2>Settings</h2>
299
- </div>
300
-
301
- <div class="settings-content">
302
- <div class="setting-group">
303
- <h3>Connection</h3>
304
- <label>
305
- MCP Port
306
- <input type="number" id="mcp-port-setting" value="3001" min="1024" max="65535">
307
- </label>
308
- <label>
309
- CDP Bridge Port
310
- <input type="number" id="cdp-port-setting" value="9223" min="1024" max="65535">
311
- </label>
312
- <label>
313
- ZAP Discovery Ports
314
- <input type="text" id="zap-ports-setting" value="9999,9998,9997,9996,9995" placeholder="Comma-separated ports">
315
- </label>
316
- </div>
317
-
318
- <div class="setting-group">
319
- <h3>AI Models</h3>
320
- <label>
321
- Local Model Path
322
- <input type="text" id="model-path" placeholder="/models/browser-control-4bit.bin">
323
- </label>
324
- <label>
325
- Model Quantization
326
- <select id="model-quant">
327
- <option value="4bit">4-bit (Fastest)</option>
328
- <option value="8bit">8-bit (Balanced)</option>
329
- <option value="fp16">FP16 (Best Quality)</option>
330
- </select>
331
- </label>
332
- </div>
333
-
334
- <div class="setting-group">
335
- <h3>Browser Control</h3>
336
- <label>
337
- <input type="checkbox" id="safe-mode" checked>
338
- Safe Mode (require confirmation for actions)
339
- </label>
340
- <label>
341
- Max Workers
342
- <input type="number" id="max-workers" value="3" min="1" max="10">
343
- </label>
344
- </div>
345
-
346
- <div class="setting-group">
347
- <h3>Keyboard</h3>
348
- <label>
349
- Inspect modifier
350
- <div style="display:flex;gap:8px;align-items:center;margin-top:4px;">
351
- <kbd id="inspect-shortcut-current" style="flex:1;font-family:monospace;padding:4px 8px;background:var(--surface-2,#222);border-radius:4px;font-size:12px;">Ctrl</kbd>
352
- <button id="inspect-shortcut-record" type="button" class="btn btn-ghost" style="padding:4px 10px;">Record</button>
353
- <button id="inspect-shortcut-reset" type="button" class="btn btn-ghost" style="padding:4px 10px;">Reset</button>
354
- </div>
355
- <small style="color:var(--text-muted,#888);font-size:11px;">
356
- Hold + click any element on a page to jump to its source. Default
357
- is Ctrl (or ⌘ on Mac). Click "Record" then press the chord you
358
- want — modifiers alone or modifier+letter both work.
359
- </small>
360
- </label>
361
- </div>
362
-
363
- <button id="save-settings" class="btn btn-primary">Save Settings</button>
364
- </div>
365
- </div>
366
-
367
- <!-- Footer: version + nav links -->
368
- <div class="footer-version" style="text-align:center;font-size:10px;color:var(--text-muted,#888);margin-top:14px;letter-spacing:0.04em;">
369
- Hanzo AI <span id="footer-version">…</span>
370
- </div>
371
- <div class="footer-links">
372
- <a href="https://docs.hanzo.ai" target="_blank">Docs</a>
373
- <a href="https://console.hanzo.ai" target="_blank">Console</a>
374
- <a href="https://github.com/hanzoai/extension" target="_blank">GitHub</a>
375
- <a href="https://hanzo.ai" target="_blank">hanzo.ai</a>
376
- </div>
377
- </div>
378
-
379
- <script src="popup.js"></script>
380
- </body>
381
- </html>