conversation-replay 0.1.9 → 0.1.11
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.
- package/README.md +21 -32
- package/dist/cli.js +42 -6
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,35 +1,20 @@
|
|
|
1
1
|
# Conversation Replay
|
|
2
2
|
|
|
3
|
-
Create
|
|
3
|
+
Create annotated replays of text conversations.
|
|
4
4
|
|
|
5
5
|
After parsing the annotated conversation data you supply in a YAML file, this tool will generate a self-contained embeddable HTML file. The published conversation can help with security awareness training and other communications that involve presenting an annotated text conversation.
|
|
6
6
|
|
|
7
|
-
- [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- [Meta Options](#meta-options)
|
|
19
|
-
- [Output Features](#output-features)
|
|
20
|
-
- [Embedding in Websites](#embedding-in-websites)
|
|
21
|
-
- [Automatic "Seamless" Mode](#automatic-seamless-mode)
|
|
22
|
-
- [Basic Iframe Code](#basic-iframe-code)
|
|
23
|
-
- [Dark Mode Sync](#dark-mode-sync)
|
|
24
|
-
- [Multi-Scenario Demos](#multi-scenario-demos)
|
|
25
|
-
- [Development](#development)
|
|
26
|
-
- [Repository Structure](#repository-structure)
|
|
27
|
-
- [Commands](#commands)
|
|
28
|
-
- [AI Agent Quick Reference](#ai-agent-quick-reference)
|
|
29
|
-
- [Key Files](#key-files)
|
|
30
|
-
- [Architecture](#architecture)
|
|
31
|
-
- [Threat Modeling](#threat-modeling)
|
|
32
|
-
- [Author](#author)
|
|
7
|
+
- [How This Is Useful](#how-this-is-useful)
|
|
8
|
+
- [Installation](#installation)
|
|
9
|
+
- [Quick Start](#quick-start)
|
|
10
|
+
- [YAML Schema](#yaml-schema)
|
|
11
|
+
- [Output Features](#output-features)
|
|
12
|
+
- [Embedding in Websites](#embedding-in-websites)
|
|
13
|
+
- [Multi-Scenario Demos](#multi-scenario-demos)
|
|
14
|
+
- [Development](#development)
|
|
15
|
+
- [AI Agent Quick Reference](#ai-agent-quick-reference)
|
|
16
|
+
- [Threat Modeling](#threat-modeling)
|
|
17
|
+
- [Author](#author)
|
|
33
18
|
|
|
34
19
|
|
|
35
20
|
## How This Is Useful
|
|
@@ -43,13 +28,17 @@ Conversation Replay lets you:
|
|
|
43
28
|
- **Slick Design:** Modern UI, nice typography, clean colors, and smooth animations
|
|
44
29
|
- **Embed Anywhere:** Seamlessly integrates into blogs and LMS platforms
|
|
45
30
|
|
|
46
|
-
|
|
31
|
+
To see it in action, see the replays embedded in the following articles as well as the corresponding files in the [examples folder](examples/).
|
|
32
|
+
|
|
33
|
+
* [Write Good Incident Response Reports Using Your AI Tool](https://zeltser.com/good-ir-reports-with-ai)
|
|
34
|
+
* [When Bots Chat With Social Network Participants
|
|
35
|
+
](https://zeltser.com/bots-chatting-on-social-networks)
|
|
47
36
|
|
|
48
37
|
## Installation
|
|
49
38
|
|
|
50
39
|
### Run Without Installing (Recommended)
|
|
51
40
|
|
|
52
|
-
The easiest way to use Conversation Replay
|
|
41
|
+
The easiest way to use Conversation Replay (no installation required) after you create the annotated conversation file demo.yaml:
|
|
53
42
|
|
|
54
43
|
```bash
|
|
55
44
|
# Using npx (comes with Node.js)
|
|
@@ -189,16 +178,16 @@ meta:
|
|
|
189
178
|
```
|
|
190
179
|
|
|
191
180
|
Custom colors (New Slate/Indigo Default Palette):
|
|
192
|
-
You can override any color
|
|
181
|
+
You can override any color:
|
|
193
182
|
```yaml
|
|
194
183
|
meta:
|
|
195
184
|
colors:
|
|
196
185
|
accent: "#4f46e5" # Indigo 600 (Buttons, links)
|
|
197
186
|
pageBg: "#f8fafc" # Slate 50 (Page background standalone)
|
|
198
187
|
canvasBg: "#ffffff" # Chat container background
|
|
199
|
-
leftBg: "#eef2ff" # Indigo 50 (Left
|
|
188
|
+
leftBg: "#eef2ff" # Indigo 50 (Left bubble)
|
|
200
189
|
leftBorder: "transparent" # Border for left bubble
|
|
201
|
-
rightBg: "#f1f5f9" # Slate 100 (Right
|
|
190
|
+
rightBg: "#f1f5f9" # Slate 100 (Right bubble)
|
|
202
191
|
rightBorder: "transparent" # Border for right bubble
|
|
203
192
|
tabInactiveColor: "#94a3b8" # Slate 400
|
|
204
193
|
annotationText: "#475569" # Slate 600 (Annotation text color)
|
package/dist/cli.js
CHANGED
|
@@ -7270,8 +7270,8 @@ import { writeFile } from "node:fs/promises";
|
|
|
7270
7270
|
// package.json
|
|
7271
7271
|
var package_default = {
|
|
7272
7272
|
name: "conversation-replay",
|
|
7273
|
-
version: "0.1.
|
|
7274
|
-
description: "Create
|
|
7273
|
+
version: "0.1.11",
|
|
7274
|
+
description: "Create annotated replays of text conversations",
|
|
7275
7275
|
main: "dist/cli.js",
|
|
7276
7276
|
type: "module",
|
|
7277
7277
|
bin: {
|
|
@@ -7477,14 +7477,43 @@ function generateCss(theme, hasMultipleScenarios, colors, cornerStyle, initialBl
|
|
|
7477
7477
|
}
|
|
7478
7478
|
|
|
7479
7479
|
@media (max-width: 600px) {
|
|
7480
|
+
.tabs {
|
|
7481
|
+
flex-wrap: nowrap;
|
|
7482
|
+
overflow-x: auto;
|
|
7483
|
+
overflow-y: hidden; /* Prevent vertical movement */
|
|
7484
|
+
-webkit-overflow-scrolling: touch;
|
|
7485
|
+
padding-bottom: 0;
|
|
7486
|
+
max-width: 100%; /* Ensure it doesn't overflow parent */
|
|
7487
|
+
/* Hide scrollbars */
|
|
7488
|
+
scrollbar-width: none;
|
|
7489
|
+
-ms-overflow-style: none;
|
|
7490
|
+
}
|
|
7491
|
+
|
|
7492
|
+
.tabs::-webkit-scrollbar {
|
|
7493
|
+
display: none;
|
|
7494
|
+
}
|
|
7495
|
+
|
|
7480
7496
|
.tab {
|
|
7481
7497
|
padding: 10px 14px;
|
|
7482
7498
|
font-size: 12px;
|
|
7483
|
-
flex:
|
|
7499
|
+
flex: 0 0 auto; /* Don't shrink, let them scroll */
|
|
7484
7500
|
text-align: center;
|
|
7485
7501
|
min-width: 0;
|
|
7502
|
+
white-space: nowrap;
|
|
7486
7503
|
}
|
|
7487
7504
|
}
|
|
7505
|
+
|
|
7506
|
+
/* In iframe, ensure non-active tabs are visible against potentially dark/complex backgrounds */
|
|
7507
|
+
body.in-iframe .tab:not(.active) {
|
|
7508
|
+
background: rgba(255, 255, 255, 0.5);
|
|
7509
|
+
backdrop-filter: blur(4px);
|
|
7510
|
+
-webkit-backdrop-filter: blur(4px);
|
|
7511
|
+
}
|
|
7512
|
+
|
|
7513
|
+
:root[data-theme="dark"] body.in-iframe .tab:not(.active) {
|
|
7514
|
+
background: rgba(30, 41, 59, 0.5);
|
|
7515
|
+
color: rgba(248, 250, 252, 0.7);
|
|
7516
|
+
}
|
|
7488
7517
|
` : "";
|
|
7489
7518
|
return `
|
|
7490
7519
|
*, *::before, *::after {
|
|
@@ -7839,6 +7868,11 @@ function generateCss(theme, hasMultipleScenarios, colors, cornerStyle, initialBl
|
|
|
7839
7868
|
.play-overlay-icon {
|
|
7840
7869
|
width: 64px; /* Slightly smaller for elegance */
|
|
7841
7870
|
height: 64px;
|
|
7871
|
+
flex: 0 0 auto; /* Prevent squishing on small screens */
|
|
7872
|
+
min-width: 64px;
|
|
7873
|
+
min-height: 64px;
|
|
7874
|
+
aspect-ratio: 1/1; /* Enforce square aspect ratio */
|
|
7875
|
+
margin: auto; /* Center in flex container if needed */
|
|
7842
7876
|
background: white;
|
|
7843
7877
|
border-radius: 50%;
|
|
7844
7878
|
display: flex;
|
|
@@ -8357,6 +8391,8 @@ function generateCss(theme, hasMultipleScenarios, colors, cornerStyle, initialBl
|
|
|
8357
8391
|
.play-overlay-icon {
|
|
8358
8392
|
width: 70px;
|
|
8359
8393
|
height: 70px;
|
|
8394
|
+
min-width: 70px;
|
|
8395
|
+
min-height: 70px;
|
|
8360
8396
|
}
|
|
8361
8397
|
|
|
8362
8398
|
.play-overlay-icon svg {
|
|
@@ -8376,13 +8412,13 @@ function generateCss(theme, hasMultipleScenarios, colors, cornerStyle, initialBl
|
|
|
8376
8412
|
padding: 8px;
|
|
8377
8413
|
}
|
|
8378
8414
|
|
|
8415
|
+
/* Very small phones - keep scrolling tabs instead of stacking */
|
|
8379
8416
|
.tabs {
|
|
8380
|
-
flex-direction: column;
|
|
8381
8417
|
gap: 4px;
|
|
8382
8418
|
}
|
|
8383
8419
|
|
|
8384
8420
|
.tab {
|
|
8385
|
-
width: 100%;
|
|
8421
|
+
/* width: 100%; Removed to prevent full stacking */
|
|
8386
8422
|
text-align: center;
|
|
8387
8423
|
}
|
|
8388
8424
|
|
|
@@ -9363,7 +9399,7 @@ async function buildDemo(demo, outputPath, options = {}) {
|
|
|
9363
9399
|
|
|
9364
9400
|
// src/cli.ts
|
|
9365
9401
|
var HELP = `
|
|
9366
|
-
conversation-replay - Create
|
|
9402
|
+
conversation-replay - Create annotated replays of text conversations from YAML
|
|
9367
9403
|
|
|
9368
9404
|
Usage:
|
|
9369
9405
|
conversation-replay build <scenario.yaml> -o <output.html> [options]
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "conversation-replay",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Create
|
|
3
|
+
"version": "0.1.11",
|
|
4
|
+
"description": "Create annotated replays of text conversations",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|