browsertrack 0.0.1 → 0.1.0

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 (101) hide show
  1. package/README.md +143 -0
  2. package/dist/chunk-6A7FFDIB.js +221 -0
  3. package/dist/chunk-6A7FFDIB.js.map +1 -0
  4. package/dist/chunk-ANMR5WBH.js +659 -0
  5. package/dist/chunk-ANMR5WBH.js.map +1 -0
  6. package/dist/chunk-BSKNG4V7.js +1199 -0
  7. package/dist/chunk-BSKNG4V7.js.map +1 -0
  8. package/dist/chunk-X7C5CHBO.js +2080 -0
  9. package/dist/chunk-X7C5CHBO.js.map +1 -0
  10. package/dist/chunk-ZLNGOOH2.js +554 -0
  11. package/dist/chunk-ZLNGOOH2.js.map +1 -0
  12. package/dist/cli/index.js +2829 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/client/index.cjs +2218 -0
  15. package/dist/client/index.d.ts +197 -0
  16. package/dist/client/index.js +20 -0
  17. package/dist/client/index.js.map +1 -0
  18. package/dist/client.iife.js +309 -0
  19. package/dist/core/index.d.ts +78 -0
  20. package/dist/core/index.js +31 -0
  21. package/dist/core/index.js.map +1 -0
  22. package/dist/daemon/index.d.ts +58 -0
  23. package/dist/daemon/index.js +32 -0
  24. package/dist/daemon/index.js.map +1 -0
  25. package/dist/engine-DKloFjvs.d.ts +157 -0
  26. package/dist/index.d.ts +10 -0
  27. package/dist/index.js +50 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/mcp/index.d.ts +11 -0
  30. package/dist/mcp/index.js +12 -0
  31. package/dist/mcp/index.js.map +1 -0
  32. package/dist/notes-CBvN91Wf.d.ts +260 -0
  33. package/dist/projects-CY8ungMt.d.ts +99 -0
  34. package/dist/server-CN-se8td.d.ts +55 -0
  35. package/examples/test-app/index.html +299 -0
  36. package/package.json +52 -7
  37. package/packages/cli/src/index.ts +413 -0
  38. package/packages/client/package.json +28 -0
  39. package/packages/client/src/breadcrumbs.ts +30 -0
  40. package/packages/client/src/client.ts +278 -0
  41. package/packages/client/src/commands/handler.ts +301 -0
  42. package/packages/client/src/config.ts +37 -0
  43. package/packages/client/src/index.ts +50 -0
  44. package/packages/client/src/interceptors/console.ts +68 -0
  45. package/packages/client/src/interceptors/interaction.ts +119 -0
  46. package/packages/client/src/interceptors/navigation.ts +93 -0
  47. package/packages/client/src/interceptors/network.ts +165 -0
  48. package/packages/client/src/interceptors/runtime.ts +65 -0
  49. package/packages/client/src/notes/inspector.ts +943 -0
  50. package/packages/client/src/screenshot/browser-script-driver.ts +192 -0
  51. package/packages/client/src/screenshot/driver.ts +14 -0
  52. package/packages/client/src/transport/websocket.ts +179 -0
  53. package/packages/client/tsconfig.json +8 -0
  54. package/packages/core/dist/index.d.ts +317 -0
  55. package/packages/core/dist/index.js +221 -0
  56. package/packages/core/package.json +23 -0
  57. package/packages/core/src/fingerprint.ts +120 -0
  58. package/packages/core/src/index.ts +9 -0
  59. package/packages/core/src/redaction.ts +139 -0
  60. package/packages/core/src/selector.ts +77 -0
  61. package/packages/core/src/types/commands.ts +101 -0
  62. package/packages/core/src/types/events.ts +108 -0
  63. package/packages/core/src/types/incidents.ts +54 -0
  64. package/packages/core/src/types/notes.ts +106 -0
  65. package/packages/core/src/types/probes.ts +44 -0
  66. package/packages/core/src/types/projects.ts +20 -0
  67. package/packages/core/tsconfig.json +8 -0
  68. package/packages/daemon/src/config.ts +29 -0
  69. package/packages/daemon/src/incidents/engine.ts +211 -0
  70. package/packages/daemon/src/index.ts +18 -0
  71. package/packages/daemon/src/notes/engine.ts +92 -0
  72. package/packages/daemon/src/notes/verification.ts +191 -0
  73. package/packages/daemon/src/server/daemon.ts +112 -0
  74. package/packages/daemon/src/server/http.ts +165 -0
  75. package/packages/daemon/src/server/ws.ts +175 -0
  76. package/packages/daemon/src/session/manager.ts +126 -0
  77. package/packages/daemon/src/storage/db.ts +733 -0
  78. package/packages/daemon/src/storage/screenshot-store.ts +49 -0
  79. package/packages/daemon/src/verification/engine.ts +264 -0
  80. package/packages/mcp/src/handlers.ts +398 -0
  81. package/packages/mcp/src/index.ts +3 -0
  82. package/packages/mcp/src/server.ts +86 -0
  83. package/packages/mcp/src/tools.ts +236 -0
  84. package/src/index.ts +4 -0
  85. package/test/client/interceptors.test.ts +69 -0
  86. package/test/core/fingerprint.test.ts +53 -0
  87. package/test/core/notes.test.ts +66 -0
  88. package/test/core/redaction.test.ts +48 -0
  89. package/test/daemon/incident-engine.test.ts +98 -0
  90. package/test/daemon/notes-storage.test.ts +130 -0
  91. package/test/daemon/notes-verification.test.ts +135 -0
  92. package/test/daemon/storage.test.ts +123 -0
  93. package/test/daemon/verification-engine.test.ts +88 -0
  94. package/test/e2e/daemon-mcp-e2e.test.ts +153 -0
  95. package/test/e2e/visual-notes-e2e.test.ts +205 -0
  96. package/test/mcp/handlers.test.ts +116 -0
  97. package/test/mcp/notes.test.ts +107 -0
  98. package/tsconfig.base.json +17 -0
  99. package/tsconfig.json +26 -0
  100. package/tsup.config.ts +54 -0
  101. package/vitest.config.ts +9 -0
@@ -0,0 +1,197 @@
1
+ import { B as Breadcrumb, i as ElementSummary, b as ClientCommand, d as CommandResponse, t as VisualNote, R as RegionContext } from '../notes-CBvN91Wf.js';
2
+
3
+ interface BrowserDiagClientOptions {
4
+ daemonUrl?: string;
5
+ projectId?: string;
6
+ maxBreadcrumbs?: number;
7
+ captureErrors?: boolean;
8
+ captureConsole?: boolean;
9
+ captureNetwork?: boolean;
10
+ captureNavigation?: boolean;
11
+ captureInteractions?: boolean;
12
+ onErrorScreenshot?: boolean;
13
+ notes?: {
14
+ enabled?: boolean;
15
+ shortcut?: string;
16
+ showBadges?: boolean;
17
+ maskSelectors?: string[];
18
+ };
19
+ debug?: boolean;
20
+ }
21
+ declare const DEFAULT_OPTIONS: Required<Omit<BrowserDiagClientOptions, 'notes'>> & {
22
+ notes: Required<NonNullable<BrowserDiagClientOptions['notes']>>;
23
+ };
24
+
25
+ declare class BrowserTrackClient {
26
+ options: Required<Omit<BrowserDiagClientOptions, 'notes'>> & {
27
+ notes: Required<NonNullable<BrowserDiagClientOptions['notes']>>;
28
+ };
29
+ private breadcrumbs;
30
+ private transport;
31
+ private screenshotDriver;
32
+ private commandHandler;
33
+ private inspector?;
34
+ private lastElement;
35
+ private currentRoute;
36
+ private cleanups;
37
+ private isInitialized;
38
+ constructor(options?: BrowserDiagClientOptions);
39
+ init(): this;
40
+ openNoteEditor(el?: HTMLElement, noteType?: 'element' | 'page'): void;
41
+ startRegionSelection(): void;
42
+ startElementSelection(): void;
43
+ setInspectMode(mode: 'element' | 'region' | 'page' | 'idle'): void;
44
+ createNote(targetEl: HTMLElement, message: string, noteType?: 'element' | 'page'): Promise<void>;
45
+ private handleRuntimeError;
46
+ private handleConsole;
47
+ private handleNetwork;
48
+ private handleNavigation;
49
+ private sendEvent;
50
+ getBreadcrumbs(): Breadcrumb[];
51
+ getLastElement(): ElementSummary | undefined;
52
+ destroy(): void;
53
+ }
54
+
55
+ declare class BreadcrumbBuffer {
56
+ private capacity;
57
+ private buffer;
58
+ constructor(capacity?: number);
59
+ add(breadcrumb: Omit<Breadcrumb, 'timestamp'> & {
60
+ timestamp?: number;
61
+ }): void;
62
+ getRecent(): Breadcrumb[];
63
+ clear(): void;
64
+ }
65
+
66
+ interface ScreenshotResult {
67
+ ok: boolean;
68
+ dataUrl?: string;
69
+ format?: 'webp' | 'png' | 'jpeg';
70
+ width?: number;
71
+ height?: number;
72
+ reason?: string;
73
+ }
74
+ interface ScreenshotDriver {
75
+ name: string;
76
+ captureElement(element: HTMLElement | Element): Promise<ScreenshotResult>;
77
+ captureSelector(selector: string): Promise<ScreenshotResult>;
78
+ }
79
+
80
+ /**
81
+ * Modern DOM snapshot driver using @zumer/snapdom with graceful fallbacks.
82
+ * Converts DOM subtrees and elements into WebP / PNG data URLs.
83
+ */
84
+ declare class BrowserScriptScreenshotDriver implements ScreenshotDriver {
85
+ name: string;
86
+ captureSelector(selector: string): Promise<ScreenshotResult>;
87
+ captureElement(element: HTMLElement | Element): Promise<ScreenshotResult>;
88
+ private captureWithSvgFallback;
89
+ }
90
+
91
+ declare class ClientCommandHandler {
92
+ private screenshotDriver;
93
+ constructor(screenshotDriver: ScreenshotDriver);
94
+ executeCommand(command: ClientCommand): Promise<CommandResponse>;
95
+ private handleReload;
96
+ private handleNavigate;
97
+ private handleGetPageState;
98
+ private handleQueryElement;
99
+ private handleCaptureElement;
100
+ private handleCheckOverflow;
101
+ private handleGetElementRect;
102
+ private handleGetElementStyle;
103
+ }
104
+
105
+ interface TransportOptions {
106
+ url: string;
107
+ projectId?: string;
108
+ debug?: boolean;
109
+ }
110
+ declare class WebSocketTransport {
111
+ private wsUrl;
112
+ private projectId?;
113
+ private debug;
114
+ private ws;
115
+ private sessionId;
116
+ private queue;
117
+ private maxQueueSize;
118
+ private reconnectAttempts;
119
+ private maxReconnectDelay;
120
+ private reconnectTimer;
121
+ private commandHandler?;
122
+ private isDestroyed;
123
+ constructor(options: TransportOptions);
124
+ setCommandHandler(handler: ClientCommandHandler): void;
125
+ getSessionId(): string | null;
126
+ isConnected(): boolean;
127
+ connect(): void;
128
+ send(payload: any): void;
129
+ private enqueue;
130
+ private flushQueue;
131
+ private sendHello;
132
+ private scheduleReconnect;
133
+ destroy(): void;
134
+ }
135
+
136
+ type NoteInspectMode = 'element' | 'region' | 'page' | 'idle';
137
+ interface InspectorOptions {
138
+ shortcut?: string;
139
+ maskSelectors?: string[];
140
+ showToolbar?: boolean;
141
+ onNoteCreated?: (note: Partial<VisualNote>) => void;
142
+ }
143
+ /**
144
+ * Isolated Visual Note Inspector rendering in Shadow DOM.
145
+ * Supports:
146
+ * 1. Element selection (hover highlight & click)
147
+ * 2. Region / Area selection (drag-and-drop rectangle on screen)
148
+ * 3. Whole page note
149
+ * 4. Floating quick dock / toolbar in bottom-right corner
150
+ */
151
+ declare class NoteInspector {
152
+ private transport;
153
+ private screenshotDriver;
154
+ private options;
155
+ private container;
156
+ private shadowRoot;
157
+ private highlightOverlay;
158
+ private regionOverlay;
159
+ private regionBox;
160
+ private toolbarElement;
161
+ private modalOverlay;
162
+ private activeMode;
163
+ private hoveredElement;
164
+ private selectedElement;
165
+ private selectedRegion;
166
+ private isDraggingRegion;
167
+ private dragStartX;
168
+ private dragStartY;
169
+ private cleanups;
170
+ constructor(transport: WebSocketTransport, screenshotDriver: ScreenshotDriver, options?: InspectorOptions);
171
+ init(): void;
172
+ setMode(mode: NoteInspectMode): void;
173
+ private ensureContainer;
174
+ private createToolbar;
175
+ private updateToolbarState;
176
+ private setupListeners;
177
+ private showRegionOverlay;
178
+ private hideRegionOverlay;
179
+ private updateHighlight;
180
+ private hideHighlight;
181
+ openNoteEditor(el?: HTMLElement, noteType?: 'element' | 'page'): void;
182
+ openRegionNoteEditor(region: RegionContext): void;
183
+ private renderNoteModal;
184
+ saveVisualNote(targetEl: HTMLElement, message: string, noteType?: 'element' | 'page'): Promise<void>;
185
+ saveRegionVisualNote(region: RegionContext, message: string): Promise<void>;
186
+ private cropDataUrl;
187
+ private extractElementContext;
188
+ destroy(): void;
189
+ }
190
+
191
+ /**
192
+ * Initializes the BrowserTrack client.
193
+ */
194
+ declare function init(options?: BrowserDiagClientOptions): BrowserTrackClient;
195
+ declare function getClient(): BrowserTrackClient | null;
196
+
197
+ export { BreadcrumbBuffer, type BrowserDiagClientOptions, BrowserScriptScreenshotDriver, BrowserTrackClient, DEFAULT_OPTIONS, type InspectorOptions, type NoteInspectMode, NoteInspector, type ScreenshotDriver, type ScreenshotResult, getClient, init };
@@ -0,0 +1,20 @@
1
+ import {
2
+ BreadcrumbBuffer,
3
+ BrowserScriptScreenshotDriver,
4
+ BrowserTrackClient,
5
+ DEFAULT_OPTIONS,
6
+ NoteInspector,
7
+ getClient,
8
+ init
9
+ } from "../chunk-X7C5CHBO.js";
10
+ import "../chunk-6A7FFDIB.js";
11
+ export {
12
+ BreadcrumbBuffer,
13
+ BrowserScriptScreenshotDriver,
14
+ BrowserTrackClient,
15
+ DEFAULT_OPTIONS,
16
+ NoteInspector,
17
+ getClient,
18
+ init
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}