chore: import broken Phase-1 extension as received
Snapshot of /home/parf/Downloads/manifest.zip as delivered, before any
GSD-driven remediation. Contains a partially-broken first attempt at the
Russian SPEC "Тз расширение фаза1.md" (Phase 1 of operator-session-recorder).
Source layout:
- manifest.json — MV3 declaration with tabCapture/activeTab/downloads/etc.
- src/background/index.ts — service worker (video buffer + archive packaging)
- src/content/index.ts — rrweb + user-event logger
- src/popup/{index.html,index.ts,style.css} — Russian popup UI
- offscreen/{index.html,index.ts} — orphaned offscreen (see audit)
- vite.config.ts — inline plugin emitting a separate live offscreen.js
- generate-icons.js, icons/ — minimal PNG icons
- "Тз расширение фаза1.md" — authoritative Russian SPEC
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
68
src/shared/types.ts
Normal file
68
src/shared/types.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
// Типы для обмена сообщениями между компонентами
|
||||
|
||||
export type MessageType =
|
||||
| 'REQUEST_PERMISSIONS'
|
||||
| 'PERMISSIONS_GRANTED'
|
||||
| 'PERMISSIONS_DENIED'
|
||||
| 'GET_VIDEO_BUFFER'
|
||||
| 'VIDEO_BUFFER_RESPONSE'
|
||||
| 'GET_RRWEB_EVENTS'
|
||||
| 'RRWEB_EVENTS_RESPONSE'
|
||||
| 'SAVE_ARCHIVE'
|
||||
| 'ARCHIVE_SAVED'
|
||||
| 'START_RECORDING'
|
||||
| 'STOP_RECORDING'
|
||||
| 'RECORDING_ERROR'
|
||||
| 'VIDEO_CHUNK'
|
||||
| 'VIDEO_CHUNK_SAVED'
|
||||
| 'OFFSCREEN_READY';
|
||||
|
||||
export interface Message<T = any> {
|
||||
type: MessageType;
|
||||
data?: T;
|
||||
tabId?: number;
|
||||
}
|
||||
|
||||
// Видеобуфер
|
||||
export interface VideoChunk {
|
||||
data: Blob;
|
||||
timestamp: number;
|
||||
isFirst?: boolean;
|
||||
}
|
||||
|
||||
// Лог событий пользователя
|
||||
export interface UserEvent {
|
||||
timestamp: number;
|
||||
type: 'click' | 'input' | 'navigation' | 'js_error' | 'network_error';
|
||||
target: string;
|
||||
value?: string;
|
||||
url: string;
|
||||
meta?: Record<string, any>;
|
||||
}
|
||||
|
||||
// Метаданные сессии
|
||||
export interface SessionMetadata {
|
||||
timestamp: string;
|
||||
url: string;
|
||||
userAgent: string;
|
||||
extensionVersion: string;
|
||||
videoBufferSeconds: number;
|
||||
logDurationMinutes: number;
|
||||
totalEvents: number;
|
||||
}
|
||||
|
||||
// Сообщения для popup
|
||||
export interface PopupState {
|
||||
isRecording: boolean;
|
||||
hasPermissions: boolean;
|
||||
status: 'idle' | 'saving' | 'done';
|
||||
}
|
||||
|
||||
// Ответы от Service Worker
|
||||
export interface VideoBufferResponse {
|
||||
chunks: VideoChunk[];
|
||||
}
|
||||
|
||||
export interface RrwebEventsResponse {
|
||||
events: any[];
|
||||
}
|
||||
Reference in New Issue
Block a user