@james-infotrack/demo-recorder 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 (74) hide show
  1. package/CHANGELOG.md +143 -0
  2. package/LICENSE +21 -0
  3. package/README.md +181 -0
  4. package/dist/components/configEditor/configEditor.component.d.ts +8 -0
  5. package/dist/components/configEditor/configEditor.component.d.ts.map +1 -0
  6. package/dist/components/configEditor/index.d.ts +5 -0
  7. package/dist/components/configEditor/index.d.ts.map +1 -0
  8. package/dist/components/configEditor/jsonEditor.component.d.ts +8 -0
  9. package/dist/components/configEditor/jsonEditor.component.d.ts.map +1 -0
  10. package/dist/components/configEditor/livePreview.component.d.ts +8 -0
  11. package/dist/components/configEditor/livePreview.component.d.ts.map +1 -0
  12. package/dist/components/demoPlayer/demoPlayer.component.d.ts +15 -0
  13. package/dist/components/demoPlayer/demoPlayer.component.d.ts.map +1 -0
  14. package/dist/components/demoPlayer/index.d.ts +9 -0
  15. package/dist/components/demoPlayer/index.d.ts.map +1 -0
  16. package/dist/components/demoPlayer/playerControls.component.d.ts +12 -0
  17. package/dist/components/demoPlayer/playerControls.component.d.ts.map +1 -0
  18. package/dist/components/demoPlayer/playerControls.styles.d.ts +6 -0
  19. package/dist/components/demoPlayer/playerControls.styles.d.ts.map +1 -0
  20. package/dist/components/demoPlayer/spotlight.component.d.ts +7 -0
  21. package/dist/components/demoPlayer/spotlight.component.d.ts.map +1 -0
  22. package/dist/components/demoPlayer/stepTooltip.component.d.ts +10 -0
  23. package/dist/components/demoPlayer/stepTooltip.component.d.ts.map +1 -0
  24. package/dist/components/demoPlayer/stepTooltip.styles.d.ts +15 -0
  25. package/dist/components/demoPlayer/stepTooltip.styles.d.ts.map +1 -0
  26. package/dist/components/demoRecorder/demoRecorder.component.d.ts +11 -0
  27. package/dist/components/demoRecorder/demoRecorder.component.d.ts.map +1 -0
  28. package/dist/components/demoRecorder/index.d.ts +3 -0
  29. package/dist/components/demoRecorder/index.d.ts.map +1 -0
  30. package/dist/components/demoRecorder/recorderUI.component.d.ts +10 -0
  31. package/dist/components/demoRecorder/recorderUI.component.d.ts.map +1 -0
  32. package/dist/components/demoRecorder/recorderUI.styles.d.ts +8 -0
  33. package/dist/components/demoRecorder/recorderUI.styles.d.ts.map +1 -0
  34. package/dist/components/index.d.ts +5 -0
  35. package/dist/components/index.d.ts.map +1 -0
  36. package/dist/core/actionExecutor.core.d.ts +18 -0
  37. package/dist/core/actionExecutor.core.d.ts.map +1 -0
  38. package/dist/core/aiProcessor.core.d.ts +10 -0
  39. package/dist/core/aiProcessor.core.d.ts.map +1 -0
  40. package/dist/core/domChangeDetector.core.d.ts +22 -0
  41. package/dist/core/domChangeDetector.core.d.ts.map +1 -0
  42. package/dist/core/eventCapture.core.d.ts +22 -0
  43. package/dist/core/eventCapture.core.d.ts.map +1 -0
  44. package/dist/core/index.d.ts +6 -0
  45. package/dist/core/index.d.ts.map +1 -0
  46. package/dist/core/networkInterceptor.core.d.ts +22 -0
  47. package/dist/core/networkInterceptor.core.d.ts.map +1 -0
  48. package/dist/demo-recorder.css +1 -0
  49. package/dist/index.cjs.js +215 -0
  50. package/dist/index.d.ts +74 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.esm.js +9298 -0
  53. package/dist/models/actions.model.d.ts +2 -0
  54. package/dist/models/actions.model.d.ts.map +1 -0
  55. package/dist/models/config.model.d.ts +87 -0
  56. package/dist/models/config.model.d.ts.map +1 -0
  57. package/dist/models/events.model.d.ts +68 -0
  58. package/dist/models/events.model.d.ts.map +1 -0
  59. package/dist/models/index.d.ts +4 -0
  60. package/dist/models/index.d.ts.map +1 -0
  61. package/dist/styles.css +1 -0
  62. package/dist/utils/formInput.util.d.ts +17 -0
  63. package/dist/utils/formInput.util.d.ts.map +1 -0
  64. package/dist/utils/index.d.ts +6 -0
  65. package/dist/utils/index.d.ts.map +1 -0
  66. package/dist/utils/screenshot.util.d.ts +13 -0
  67. package/dist/utils/screenshot.util.d.ts.map +1 -0
  68. package/dist/utils/selector.util.d.ts +12 -0
  69. package/dist/utils/selector.util.d.ts.map +1 -0
  70. package/dist/utils/timing.util.d.ts +10 -0
  71. package/dist/utils/timing.util.d.ts.map +1 -0
  72. package/dist/utils/validation.util.d.ts +13 -0
  73. package/dist/utils/validation.util.d.ts.map +1 -0
  74. package/package.json +93 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,143 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.0] - 2026-01-23
9
+
10
+ ### Added
11
+
12
+ #### Core Components
13
+ - **DemoRecorder** - Comprehensive component for capturing user interactions
14
+ - Event capture for clicks, inputs, scrolls, and navigation
15
+ - DOM change detection with MutationObserver
16
+ - Network request interception (fetch + XMLHttpRequest)
17
+ - Screenshot capture with html2canvas integration
18
+ - Form input tracking with sensitive data masking
19
+
20
+ - **DemoPlayer** - Interactive demo playback with visual feedback
21
+ - Spotlight highlighting of target elements
22
+ - Step-by-step tooltips with navigation controls
23
+ - Video-style playback controls (play/pause/skip/speed)
24
+ - 8 action types: click, input, select, scroll, wait, navigate, hover, focus
25
+ - Support for both 'real' and 'simulated' execution modes
26
+
27
+ - **ConfigEditor** - Visual editor for demo configurations
28
+ - Monaco editor with JSON syntax highlighting
29
+ - Real-time schema validation
30
+ - Live preview of demo steps in iframe
31
+ - Error highlighting with actionable messages
32
+ - Split-pane layout with resizable panels
33
+
34
+ #### AI Integration
35
+ - AI-powered demo step generation using Claude API
36
+ - Automatic selector generation with 7-level priority system
37
+ - Intelligent action inference from captured events
38
+ - Context-aware instruction generation
39
+ - Support for custom AI prompts and instructions
40
+
41
+ #### Type System
42
+ - Complete TypeScript type definitions for all components
43
+ - Comprehensive type exports for:
44
+ - Demo configurations (`DemoConfig`, `Demo`, `DemoStep`)
45
+ - Actions (`ClickAction`, `InputAction`, etc.)
46
+ - Events (`RecordingEvent`, `DOMChangesSummary`)
47
+ - Components props and callbacks
48
+
49
+ #### Utilities
50
+ - Selector generation with priority-based fallback system
51
+ - Timing utilities for accurate playback synchronization
52
+ - Config validation with detailed error reporting
53
+ - Screenshot optimization and compression
54
+
55
+ #### Testing
56
+ - 772 unit and integration tests
57
+ - Test coverage across all major components
58
+ - E2E test scenarios for complete workflows
59
+ - Mock implementations for external dependencies
60
+
61
+ #### Documentation
62
+ - Comprehensive README with examples
63
+ - API reference with TypeScript interfaces
64
+ - Configuration guide
65
+ - Troubleshooting section
66
+ - Contributing guidelines
67
+
68
+ ### Technical Details
69
+
70
+ #### Build System
71
+ - Vite-based build with dual output (ESM + CJS)
72
+ - TypeScript declarations included
73
+ - Optimized bundle sizes:
74
+ - ESM: 370KB (87.58 KB gzipped)
75
+ - CJS: 280KB (76.69 KB gzipped)
76
+ - Tree-shakeable exports
77
+
78
+ #### Code Quality
79
+ - Biome linter configuration
80
+ - TypeScript strict mode enabled
81
+ - 100% type coverage
82
+ - Zero linting errors
83
+ - Formatted code with consistent style
84
+
85
+ #### Browser Support
86
+ - Modern browsers with ES2020 support
87
+ - React 18.0.0 or higher required
88
+ - DOM and DOM.Iterable APIs
89
+
90
+ ### Known Limitations
91
+
92
+ - Test environment requires additional configuration for optimal compatibility
93
+ - Some test scenarios may require specific jsdom setup
94
+ - Large demos (100+ steps) may experience minor performance overhead
95
+ - Screenshot capture requires same-origin policy compliance
96
+
97
+ ### Dependencies
98
+
99
+ #### Peer Dependencies (Required)
100
+ - react ^18.0.0
101
+ - react-dom ^18.0.0
102
+
103
+ #### Direct Dependencies
104
+ - @anthropic-ai/sdk ^0.34.1
105
+ - @theme-ui/theme-provider ^0.17.9
106
+ - html2canvas ^1.4.1
107
+ - monaco-editor ^0.54.3
108
+ - theme-ui ^0.17.9
109
+
110
+ ### Migration Guide
111
+
112
+ This is the initial release. No migration needed.
113
+
114
+ ### Breaking Changes
115
+
116
+ N/A - Initial release
117
+
118
+ ### Security
119
+
120
+ - Sensitive data masking for password, credit card, and SSN fields
121
+ - API keys should be stored securely and not committed to repositories
122
+ - Network interceptor respects CORS policies
123
+ - Screenshot capture sanitizes sensitive form inputs
124
+
125
+ ### Contributors
126
+
127
+ This release was built with assistance from GitHub Copilot CLI.
128
+
129
+ ---
130
+
131
+ ## [Unreleased]
132
+
133
+ ### Planned Features
134
+ - React hooks API (useRecorder, usePlayer)
135
+ - Additional action types (drag-and-drop, file upload)
136
+ - Enhanced mobile device support
137
+ - Performance optimizations for large demos
138
+ - Improved test coverage (target: 80%+)
139
+ - CI/CD pipeline setup
140
+
141
+ ---
142
+
143
+ [0.1.0]: https://github.com/InfoTrackGlobal/demo-mode/releases/tag/v0.1.0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 InfoTrack Global
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,181 @@
1
+ # Demo Recorder - Quick Start
2
+
3
+ A React library for recording and playing back interactive web application demos with AI assistance.
4
+
5
+ ## 🚀 Quick Start
6
+
7
+ ### Installation
8
+
9
+ ```bash
10
+ npm install @company/demo-recorder
11
+ # or
12
+ bun add @company/demo-recorder
13
+ ```
14
+
15
+ ### Usage
16
+
17
+ ```tsx
18
+ import { DemoRecorder, DemoPlayer } from '@company/demo-recorder';
19
+
20
+ // Record a demo
21
+ <DemoRecorder
22
+ pluginId="my-app"
23
+ pluginName="My Application"
24
+ apiKey="sk-your-openai-api-key"
25
+ onComplete={(config) => console.log('Recorded!', config)}
26
+ />
27
+
28
+ // Play back a demo
29
+ <DemoPlayer
30
+ config={demoConfig}
31
+ demoId="demo-1"
32
+ onComplete={(summary) => console.log('Completed!', summary)}
33
+ />
34
+ ```
35
+
36
+ ## 📁 Repository Structure
37
+
38
+ - `src/` - Source code for the library
39
+ - `dist/` - Built library files (generated)
40
+ - `tests/` - Test files
41
+ - `examples/` - Example applications
42
+ - `docs/` - Full documentation and guides
43
+
44
+ ## 🛠️ Development
45
+
46
+ ### Prerequisites
47
+
48
+ - Node.js 16+ or Bun runtime
49
+ - React 18+
50
+
51
+ ### Local Development & Testing
52
+
53
+ To test the library locally without installing it as a package:
54
+
55
+ #### Option 1: Using the Dev Server (Recommended)
56
+
57
+ ```bash
58
+ # Install dependencies
59
+ npm install
60
+ # or
61
+ bun install
62
+
63
+ # Start the dev server with hot reload
64
+ npm run dev
65
+ # or
66
+ bun run dev
67
+ ```
68
+
69
+ This starts a Vite dev server at `http://localhost:5173` where you can test the library with live reloading.
70
+
71
+ #### Option 2: Build and Link
72
+
73
+ ```bash
74
+ # Build the library
75
+ npm run build
76
+ # or
77
+ bun run build
78
+
79
+ # Link the package locally
80
+ npm link
81
+ # or
82
+ bun link
83
+
84
+ # In your test project
85
+ npm link @company/demo-recorder
86
+ # or
87
+ bun link @company/demo-recorder
88
+ ```
89
+
90
+ #### Option 3: Direct Import (for quick testing)
91
+
92
+ Create a test file in the root directory:
93
+
94
+ ```tsx
95
+ // test-app.tsx
96
+ import { DemoRecorder } from './src/index';
97
+
98
+ function TestApp() {
99
+ return (
100
+ <DemoRecorder
101
+ pluginId="test"
102
+ pluginName="Test App"
103
+ apiKey="your-key"
104
+ onComplete={(config) => console.log(config)}
105
+ />
106
+ );
107
+ }
108
+ ```
109
+
110
+ Run with: `npm run dev` or `bun run dev`
111
+
112
+ ### Available Scripts
113
+
114
+ ```bash
115
+ npm run dev # Start dev server with hot reload
116
+ npm run build # Build the library for production
117
+ npm run preview # Preview the production build
118
+ npm run test # Run tests
119
+ npm run test:ui # Run tests with UI
120
+ npm run lint # Lint code
121
+ npm run format # Format code
122
+ npm run typecheck # Type check without emitting
123
+ ```
124
+
125
+ ## 🧪 Testing
126
+
127
+ ```bash
128
+ # Run all tests
129
+ npm test
130
+
131
+ # Run tests with UI
132
+ npm run test:ui
133
+
134
+ # Run tests with coverage
135
+ npm run test:coverage
136
+ ```
137
+
138
+ ## 📚 Documentation
139
+
140
+ Full documentation is available in the `docs/` folder:
141
+
142
+ - [Full API Documentation](docs/README.md) - Complete API reference and usage guide
143
+ - [Tutorial](docs/TUTORIAL.md) - Step-by-step tutorial
144
+ - [Development Guide](docs/DEVELOPMENT.md) - Development workflows
145
+ - [Contributing Guide](docs/CONTRIBUTING.md) - How to contribute
146
+ - [Security](docs/SECURITY.md) - Security considerations
147
+ - [Changelog](docs/CHANGELOG.md) - Version history
148
+
149
+ ## 📦 Examples
150
+
151
+ Check out the `examples/` directory for complete working examples:
152
+
153
+ - `examples/basic/` - Basic usage of all components
154
+ - `examples/custom-styling/` - Custom themes and styling
155
+ - `examples/config-editor/` - Configuration management
156
+ - `examples/full-app/` - Complete demo management application
157
+
158
+ ## 🤝 Contributing
159
+
160
+ We welcome contributions! Please see [CONTRIBUTING.md](docs/CONTRIBUTING.md) for guidelines.
161
+
162
+ ## 📄 License
163
+
164
+ MIT License - see [LICENSE](LICENSE) file for details
165
+
166
+ ## 🔗 Links
167
+
168
+ - [npm Package](https://www.npmjs.com/package/@company/demo-recorder)
169
+ - [GitHub Repository](https://github.com/InfoTrackGlobal/demo-mode)
170
+ - [Issue Tracker](https://github.com/InfoTrackGlobal/demo-mode/issues)
171
+
172
+ ## 💬 Support
173
+
174
+ For questions or issues, please:
175
+ 1. Check the [documentation](docs/README.md)
176
+ 2. Review [existing issues](https://github.com/InfoTrackGlobal/demo-mode/issues)
177
+ 3. Create a new issue if needed
178
+
179
+ ---
180
+
181
+ Made with ❤️ by InfoTrack Global
@@ -0,0 +1,8 @@
1
+ import type { DemoConfig } from '@models/config.model';
2
+ export interface ConfigEditorProps {
3
+ initialConfig: DemoConfig;
4
+ onChange?: (config: DemoConfig) => void;
5
+ onError?: (errors: string[]) => void;
6
+ }
7
+ export declare function ConfigEditor({ initialConfig, onChange, onError }: ConfigEditorProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=configEditor.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configEditor.component.d.ts","sourceRoot":"","sources":["../../../src/components/configEditor/configEditor.component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMvD,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,YAAY,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,iBAAiB,2CA8HnF"}
@@ -0,0 +1,5 @@
1
+ export { ConfigEditor, type ConfigEditorProps } from './configEditor.component';
2
+ export { JSONEditor, type JSONEditorProps } from './jsonEditor.component';
3
+ export type { LivePreviewProps } from './livePreview.component';
4
+ export { LivePreview } from './livePreview.component';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/configEditor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { editor } from 'monaco-editor';
2
+ export interface JSONEditorProps {
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ onValidationError: (errors: editor.IMarker[]) => void;
6
+ }
7
+ export declare function JSONEditor({ value, onChange, onValidationError }: JSONEditorProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=jsonEditor.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonEditor.component.d.ts","sourceRoot":"","sources":["../../../src/components/configEditor/jsonEditor.component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;CACvD;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,eAAe,2CA+DjF"}
@@ -0,0 +1,8 @@
1
+ import type { DemoConfig } from '@/models/config.model';
2
+ export interface LivePreviewProps {
3
+ config: DemoConfig;
4
+ currentStepIndex: number;
5
+ onStepIndexChange: (index: number) => void;
6
+ }
7
+ export declare function LivePreview({ config, currentStepIndex, onStepIndexChange, }: LivePreviewProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=livePreview.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livePreview.component.d.ts","sourceRoot":"","sources":["../../../src/components/configEditor/livePreview.component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,gBAAgB,EAChB,iBAAiB,GAClB,EAAE,gBAAgB,2CAsHlB"}
@@ -0,0 +1,15 @@
1
+ import type { DemoConfig } from '@/models/config.model';
2
+ export interface DemoPlayerProps {
3
+ config: DemoConfig;
4
+ demoId: string;
5
+ onComplete?: (summary: DemoSummary) => void;
6
+ }
7
+ export interface DemoSummary {
8
+ demoId: string;
9
+ completedSteps: number;
10
+ totalSteps: number;
11
+ timeSpent: number;
12
+ skippedSteps: number[];
13
+ }
14
+ export declare function DemoPlayer({ config, demoId, onComplete }: DemoPlayerProps): import("react").JSX.Element;
15
+ //# sourceMappingURL=demoPlayer.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demoPlayer.component.d.ts","sourceRoot":"","sources":["../../../src/components/demoPlayer/demoPlayer.component.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,uBAAuB,CAAC;AAKlE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,eAAe,+BAwJzE"}
@@ -0,0 +1,9 @@
1
+ export type { DemoPlayerProps, DemoSummary } from './demoPlayer.component';
2
+ export { DemoPlayer } from './demoPlayer.component';
3
+ export type { PlayerControlsProps } from './playerControls.component';
4
+ export { PlayerControls } from './playerControls.component';
5
+ export type { SpotlightProps } from './spotlight.component';
6
+ export { Spotlight } from './spotlight.component';
7
+ export type { StepTooltipProps } from './stepTooltip.component';
8
+ export { StepTooltip } from './stepTooltip.component';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/demoPlayer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface PlayerControlsProps {
2
+ isPlaying: boolean;
3
+ onPlayPause: () => void;
4
+ currentStep: number;
5
+ totalSteps: number;
6
+ playbackSpeed: number;
7
+ onSpeedChange: (speed: number) => void;
8
+ onSkip: () => void;
9
+ onPrev: () => void;
10
+ }
11
+ export declare function PlayerControls({ isPlaying, onPlayPause, currentStep, totalSteps, playbackSpeed, onSpeedChange, onSkip, onPrev, }: PlayerControlsProps): import("react").JSX.Element;
12
+ //# sourceMappingURL=playerControls.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playerControls.component.d.ts","sourceRoot":"","sources":["../../../src/components/demoPlayer/playerControls.component.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,MAAM,EACN,MAAM,GACP,EAAE,mBAAmB,+BAqFrB"}
@@ -0,0 +1,6 @@
1
+ import type { ThemeUIStyleObject } from 'theme-ui';
2
+ export declare const container: ThemeUIStyleObject;
3
+ export declare const progressBar: ThemeUIStyleObject;
4
+ export declare const progressTrack: ThemeUIStyleObject;
5
+ export declare const progressFill: ThemeUIStyleObject;
6
+ //# sourceMappingURL=playerControls.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playerControls.styles.d.ts","sourceRoot":"","sources":["../../../src/components/demoPlayer/playerControls.styles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,SAAS,EAAE,kBAWvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,kBAKzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAO3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,kBAQ1B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import '../../styles/player.styles.css';
2
+ export interface SpotlightProps {
3
+ targetSelector: string;
4
+ isActive: boolean;
5
+ }
6
+ export declare function Spotlight({ targetSelector, isActive }: SpotlightProps): import("react").JSX.Element | null;
7
+ //# sourceMappingURL=spotlight.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spotlight.component.d.ts","sourceRoot":"","sources":["../../../src/components/demoPlayer/spotlight.component.tsx"],"names":[],"mappings":"AAEA,OAAO,gCAAgC,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,cAAc,sCAmFrE"}
@@ -0,0 +1,10 @@
1
+ import type { DemoStep } from '@/models/config.model';
2
+ export interface StepTooltipProps {
3
+ step: DemoStep;
4
+ position: 'top' | 'bottom' | 'left' | 'right' | 'auto';
5
+ onNext: () => void;
6
+ onPrev: () => void;
7
+ showPrev: boolean;
8
+ }
9
+ export declare function StepTooltip({ step, position, onNext, onPrev, showPrev, }: StepTooltipProps): import("react").ReactPortal;
10
+ //# sourceMappingURL=stepTooltip.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepTooltip.component.d.ts","sourceRoot":"","sources":["../../../src/components/demoPlayer/stepTooltip.component.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAgBtD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACvD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AA2DD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE,gBAAgB,+BAkFlB"}
@@ -0,0 +1,15 @@
1
+ import type { ThemeUIStyleObject } from 'theme-ui';
2
+ export declare const tooltipContainerStyles: ThemeUIStyleObject;
3
+ export declare const tooltipContentStyles: ThemeUIStyleObject;
4
+ export declare const tooltipTitleStyles: ThemeUIStyleObject;
5
+ export declare const tooltipDescriptionStyles: ThemeUIStyleObject;
6
+ export declare const tooltipScreenshotStyles: ThemeUIStyleObject;
7
+ export declare const tooltipActionsStyles: ThemeUIStyleObject;
8
+ export declare const tooltipButtonStyles: ThemeUIStyleObject;
9
+ export declare const tooltipNextButtonStyles: ThemeUIStyleObject;
10
+ export declare const tooltipArrowStyles: ThemeUIStyleObject;
11
+ export declare const arrowTopStyles: ThemeUIStyleObject;
12
+ export declare const arrowBottomStyles: ThemeUIStyleObject;
13
+ export declare const arrowLeftStyles: ThemeUIStyleObject;
14
+ export declare const arrowRightStyles: ThemeUIStyleObject;
15
+ //# sourceMappingURL=stepTooltip.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepTooltip.styles.d.ts","sourceRoot":"","sources":["../../../src/components/demoPlayer/stepTooltip.styles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,sBAAsB,EAAE,kBAQpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAElC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,kBAKhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBAItC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAKrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAIlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAcjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAQrC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,kBAKhC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAO5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAO/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,kBAO7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,kBAO9B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { DemoConfig } from '@/models/config.model';
2
+ export interface DemoRecorderProps {
3
+ pluginId: string;
4
+ pluginName: string;
5
+ apiKey: string;
6
+ apiEndpoint?: string;
7
+ onComplete?: (config: DemoConfig) => void;
8
+ onError?: (error: Error) => void;
9
+ }
10
+ export declare function DemoRecorder({ pluginId, pluginName, apiKey, apiEndpoint, onComplete, onError, }: DemoRecorderProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=demoRecorder.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demoRecorder.component.d.ts","sourceRoot":"","sources":["../../../src/components/demoRecorder/demoRecorder.component.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKxD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,GACR,EAAE,iBAAiB,2CA+YnB"}
@@ -0,0 +1,3 @@
1
+ export { DemoRecorder, type DemoRecorderProps } from './demoRecorder.component';
2
+ export * from './recorderUI.component';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/demoRecorder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChF,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** @jsxImportSource theme-ui */
2
+ import type React from 'react';
3
+ export interface RecorderUIProps {
4
+ isRecording: boolean;
5
+ stepsCount: number;
6
+ onStartRecording: () => void;
7
+ onStopRecording: () => void;
8
+ }
9
+ export declare const RecorderUI: React.FC<RecorderUIProps>;
10
+ //# sourceMappingURL=recorderUI.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorderUI.component.d.ts","sourceRoot":"","sources":["../../../src/components/demoRecorder/recorderUI.component.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsChD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ThemeUIStyleObject } from 'theme-ui';
2
+ export declare const container: ThemeUIStyleObject;
3
+ export declare const header: ThemeUIStyleObject;
4
+ export declare const recordingIndicator: ThemeUIStyleObject;
5
+ export declare const stepsCount: ThemeUIStyleObject;
6
+ export declare const button: ThemeUIStyleObject;
7
+ export declare const stopButton: ThemeUIStyleObject;
8
+ //# sourceMappingURL=recorderUI.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorderUI.styles.d.ts","sourceRoot":"","sources":["../../../src/components/demoRecorder/recorderUI.styles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,SAAS,EAAE,kBAavB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAIpB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,kBAchC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAIxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAiBpB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAMxB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './configEditor';
2
+ export * from './configEditor';
3
+ export * from './demoPlayer';
4
+ export * from './demoRecorder';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ActionConfig, WaitCondition } from '../models';
2
+ /**
3
+ * Execute an action in either real or simulated mode
4
+ */
5
+ export declare function executeAction(action: ActionConfig, executionMode?: 'real' | 'simulated'): Promise<void>;
6
+ /**
7
+ * Execute action in real mode (actually perform the action)
8
+ */
9
+ export declare function executeRealAction(action: ActionConfig): Promise<void>;
10
+ /**
11
+ * Execute action in simulated mode (visual feedback only)
12
+ */
13
+ export declare function executeSimulatedAction(action: ActionConfig): Promise<void>;
14
+ /**
15
+ * Wait for a condition to be met
16
+ */
17
+ export declare function waitForCondition(condition: WaitCondition): Promise<void>;
18
+ //# sourceMappingURL=actionExecutor.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionExecutor.core.d.ts","sourceRoot":"","sources":["../../src/core/actionExecutor.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAmB,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9E;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,aAAa,GAAE,MAAM,GAAG,WAAyB,GAChD,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C3E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChF;AAoFD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9E"}
@@ -0,0 +1,10 @@
1
+ import type { DemoConfig } from '../models/config.model';
2
+ import type { CapturedEvent } from '../models/events.model';
3
+ export interface DemoMetadata {
4
+ pluginId: string;
5
+ name: string;
6
+ apiEndpoint?: string;
7
+ }
8
+ export declare function buildPrompt(events: CapturedEvent[], metadata: DemoMetadata): string;
9
+ export declare function generateDemoConfig(events: CapturedEvent[], metadata: DemoMetadata, apiKey: string): Promise<DemoConfig>;
10
+ //# sourceMappingURL=aiProcessor.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiProcessor.core.d.ts","sourceRoot":"","sources":["../../src/core/aiProcessor.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAiJnF;AA4BD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EAAE,EACvB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAiDrB"}
@@ -0,0 +1,22 @@
1
+ import type { DOMChangesSummary } from '../models/events.model';
2
+ export declare class DOMChangeDetector {
3
+ private observer;
4
+ private changes;
5
+ private hasNavigationFlag;
6
+ private originalPushState;
7
+ private originalReplaceState;
8
+ private boundHandlePopState;
9
+ private observerCallback;
10
+ constructor();
11
+ start(): void;
12
+ __flushMutations(): void;
13
+ stop(): void;
14
+ getChangesSince(timestamp: number): DOMChangesSummary;
15
+ clear(): void;
16
+ private getElementDescription;
17
+ private getSelector;
18
+ private setupNavigationDetection;
19
+ private teardownNavigationDetection;
20
+ private handlePopState;
21
+ }
22
+ //# sourceMappingURL=domChangeDetector.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domChangeDetector.core.d.ts","sourceRoot":"","sources":["../../src/core/domChangeDetector.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAMhE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,oBAAoB,CAA0C;IACtE,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,gBAAgB,CAAwD;;IAUhF,KAAK,IAAI,IAAI;IAgCb,gBAAgB,IAAI,IAAI;IASxB,IAAI,IAAI,IAAI;IAUZ,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAyDrD,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,cAAc;CAGvB"}