@peekdev/cli 0.1.0-alpha.5 → 0.1.0-alpha.7
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/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +10 -0
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/sessions.d.ts.map +1 -1
- package/dist/commands/sessions.js +118 -8
- package/dist/commands/sessions.js.map +1 -1
- package/dist/lib/db.d.ts +7 -0
- package/dist/lib/db.d.ts.map +1 -1
- package/dist/lib/db.js +1 -0
- package/dist/lib/db.js.map +1 -1
- package/dist/lib/format/index.d.ts +11 -1
- package/dist/lib/format/index.d.ts.map +1 -1
- package/dist/lib/format/index.js +22 -20
- package/dist/lib/format/index.js.map +1 -1
- package/dist/lib/format/json.d.ts +26 -1
- package/dist/lib/format/json.d.ts.map +1 -1
- package/dist/lib/format/json.js +39 -2
- package/dist/lib/format/json.js.map +1 -1
- package/dist/lib/format/markdown.d.ts.map +1 -1
- package/dist/lib/format/markdown.js +17 -0
- package/dist/lib/format/markdown.js.map +1 -1
- package/dist/lib/format/playwright.d.ts +13 -0
- package/dist/lib/format/playwright.d.ts.map +1 -0
- package/dist/lib/format/playwright.js +37 -0
- package/dist/lib/format/playwright.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AA+CA,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAsE/C"}
|
package/dist/commands/audit.js
CHANGED
|
@@ -16,6 +16,7 @@ function printUsage() {
|
|
|
16
16
|
' --tool <name> Filter by tool (e.g. execute_action)',
|
|
17
17
|
' --client <name> Filter by MCP client (e.g. cursor, claude-code)',
|
|
18
18
|
' --json Emit matching entries as JSON instead of a table',
|
|
19
|
+
' --help Show this help and exit',
|
|
19
20
|
'',
|
|
20
21
|
].join('\n'));
|
|
21
22
|
}
|
|
@@ -44,6 +45,10 @@ export function runAudit(argv) {
|
|
|
44
45
|
process.stderr.write(`peek audit: unknown subcommand '${sub}' (did you mean 'log'?)\n`);
|
|
45
46
|
return 1;
|
|
46
47
|
}
|
|
48
|
+
// P-18 (alpha.7): declare `--help` as a known option so passing it doesn't
|
|
49
|
+
// crash parseArgs with `TypeError: Unknown option`. Short-circuit to usage
|
|
50
|
+
// BEFORE any DB / log read so `peek audit log --help` always works even on
|
|
51
|
+
// a broken install.
|
|
47
52
|
const { values } = parseArgs({
|
|
48
53
|
args: argv.slice(1),
|
|
49
54
|
options: {
|
|
@@ -51,9 +56,14 @@ export function runAudit(argv) {
|
|
|
51
56
|
tool: { type: 'string' },
|
|
52
57
|
client: { type: 'string' },
|
|
53
58
|
json: { type: 'boolean' },
|
|
59
|
+
help: { type: 'boolean' },
|
|
54
60
|
},
|
|
55
61
|
allowPositionals: false,
|
|
56
62
|
});
|
|
63
|
+
if (values.help) {
|
|
64
|
+
printUsage();
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
57
67
|
const filter = {
|
|
58
68
|
...(values.tool !== undefined ? { tool: values.tool } : {}),
|
|
59
69
|
...(values.client !== undefined ? { client: values.client } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,kCAAkC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAGL,kBAAkB,EAClB,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,SAAS,UAAU;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,iCAAiC;QACjC,EAAE;QACF,UAAU;QACV,8DAA8D;QAC9D,0DAA0D;QAC1D,qEAAqE;QACrE,sEAAsE;QACtE,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,CAAa;IAChC,MAAM,KAAK,GAAG;QACZ,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,IAAI,WAAW;QACrB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;QACpC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;QACpC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;KAC5C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAC,IAAc;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5E,UAAU,EAAE,CAAC;YACb,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,2BAA2B,CAAC,CAAC;QACxF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnB,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC1B;QACD,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAwWA,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAuBlD"}
|
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
// §C.1). Opens the shared DB read-mostly via @peekdev/mcp's openDb, runs the
|
|
3
3
|
// pure query/format helpers, and prints / writes. Arg parsing uses the built-in
|
|
4
4
|
// node:util parseArgs (no dependency).
|
|
5
|
+
//
|
|
6
|
+
// P-18 (alpha.7): every subcommand's parseArgs call MUST declare `--help` as a
|
|
7
|
+
// known option. Pre-fix, passing `--help` to a subcommand crashed with
|
|
8
|
+
// `TypeError: Unknown option '--help'` because node:util parseArgs rejects
|
|
9
|
+
// unknown flags by default. Each subcommand now defines its own `printHelp`
|
|
10
|
+
// (so the usage matches the subcommand's actual options) and `--help` short-
|
|
11
|
+
// circuits to exit 0 before any other work. `list` also adds `--json` for
|
|
12
|
+
// machine-readable output (audit log already has it; show/export/delete
|
|
13
|
+
// don't need it — show is interactive, export writes its own format-
|
|
14
|
+
// controlled file, delete is unary).
|
|
5
15
|
import { writeFileSync } from 'node:fs';
|
|
6
16
|
import { parseArgs } from 'node:util';
|
|
7
17
|
import { openDb } from '@peekdev/mcp/db';
|
|
@@ -19,11 +29,64 @@ function printUsage() {
|
|
|
19
29
|
'Usage: peek sessions <command>',
|
|
20
30
|
'',
|
|
21
31
|
'Commands:',
|
|
22
|
-
' list [--origin <url>] [--limit 20] List recent sessions (newest first)',
|
|
23
|
-
' show <session-id>
|
|
32
|
+
' list [--origin <url>] [--limit 20] [--json] List recent sessions (newest first)',
|
|
33
|
+
' show <session-id> Show one session (metadata + errors)',
|
|
24
34
|
` export <session-id> --format <${EXPORT_FORMATS.join('|')}> [--out <file>]`,
|
|
25
|
-
' delete <session-id>
|
|
26
|
-
' delete --all-older-than <dur>
|
|
35
|
+
' delete <session-id> Delete one session',
|
|
36
|
+
' delete --all-older-than <dur> Delete sessions older than e.g. 7d',
|
|
37
|
+
'',
|
|
38
|
+
"Run 'peek sessions <command> --help' for command-specific options.",
|
|
39
|
+
'',
|
|
40
|
+
].join('\n'));
|
|
41
|
+
}
|
|
42
|
+
function printListHelp() {
|
|
43
|
+
process.stdout.write([
|
|
44
|
+
'Usage: peek sessions list [options]',
|
|
45
|
+
'',
|
|
46
|
+
'Options:',
|
|
47
|
+
' --origin <url> Filter to a single origin (scheme://host[:port])',
|
|
48
|
+
' --limit <n> Max rows to return (default 20, must be > 0)',
|
|
49
|
+
' --json Emit rows as a JSON array instead of a table',
|
|
50
|
+
' --help Show this help and exit',
|
|
51
|
+
'',
|
|
52
|
+
].join('\n'));
|
|
53
|
+
}
|
|
54
|
+
function printShowHelp() {
|
|
55
|
+
process.stdout.write([
|
|
56
|
+
'Usage: peek sessions show <session-id>',
|
|
57
|
+
'',
|
|
58
|
+
'Print one session as Markdown (the same shape `--format markdown` exports).',
|
|
59
|
+
'',
|
|
60
|
+
'Options:',
|
|
61
|
+
' --help Show this help and exit',
|
|
62
|
+
'',
|
|
63
|
+
].join('\n'));
|
|
64
|
+
}
|
|
65
|
+
function printExportHelp() {
|
|
66
|
+
process.stdout.write([
|
|
67
|
+
'Usage: peek sessions export <session-id> [options]',
|
|
68
|
+
'',
|
|
69
|
+
'Options:',
|
|
70
|
+
` --format <${EXPORT_FORMATS.join('|')}> Export format (default: markdown)`,
|
|
71
|
+
' --out <file> Write to file instead of stdout',
|
|
72
|
+
' --help Show this help and exit',
|
|
73
|
+
'',
|
|
74
|
+
'Formats:',
|
|
75
|
+
' markdown Structured AI-paste (default)',
|
|
76
|
+
' json Machine-readable, same schema as the MCP get_session_* tools',
|
|
77
|
+
' playwright Runnable Playwright `test(...)` script (K.2 alpha.7)',
|
|
78
|
+
' html Self-contained replay viewer (deferred — see --help error)',
|
|
79
|
+
'',
|
|
80
|
+
].join('\n'));
|
|
81
|
+
}
|
|
82
|
+
function printDeleteHelp() {
|
|
83
|
+
process.stdout.write([
|
|
84
|
+
'Usage: peek sessions delete <session-id>',
|
|
85
|
+
' peek sessions delete --all-older-than <duration>',
|
|
86
|
+
'',
|
|
87
|
+
'Options:',
|
|
88
|
+
' --all-older-than <dur> Delete every session older than e.g. 7d, 24h, 30m',
|
|
89
|
+
' --help Show this help and exit',
|
|
27
90
|
'',
|
|
28
91
|
].join('\n'));
|
|
29
92
|
}
|
|
@@ -33,9 +96,15 @@ function runList(argv) {
|
|
|
33
96
|
options: {
|
|
34
97
|
origin: { type: 'string' },
|
|
35
98
|
limit: { type: 'string' },
|
|
99
|
+
json: { type: 'boolean' },
|
|
100
|
+
help: { type: 'boolean' },
|
|
36
101
|
},
|
|
37
102
|
allowPositionals: false,
|
|
38
103
|
});
|
|
104
|
+
if (values.help) {
|
|
105
|
+
printListHelp();
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
39
108
|
const limit = values.limit !== undefined ? Number(values.limit) : 20;
|
|
40
109
|
if (!Number.isInteger(limit) || limit <= 0) {
|
|
41
110
|
process.stderr.write('peek sessions list: --limit must be a positive integer\n');
|
|
@@ -47,6 +116,23 @@ function runList(argv) {
|
|
|
47
116
|
limit,
|
|
48
117
|
...(values.origin !== undefined ? { origin: values.origin } : {}),
|
|
49
118
|
});
|
|
119
|
+
if (values.json) {
|
|
120
|
+
// Machine-readable: always emit a JSON array (empty when no sessions),
|
|
121
|
+
// never the "No sessions recorded yet." human string. Downstream scripts
|
|
122
|
+
// can `JSON.parse` the output unconditionally.
|
|
123
|
+
const json = rows.map((s) => ({
|
|
124
|
+
id: s.id,
|
|
125
|
+
origin: s.origin,
|
|
126
|
+
url: s.url,
|
|
127
|
+
created_at: s.createdAt,
|
|
128
|
+
updated_at: s.updatedAt,
|
|
129
|
+
event_count: s.eventCount,
|
|
130
|
+
bytes: s.bytes,
|
|
131
|
+
status: s.status,
|
|
132
|
+
}));
|
|
133
|
+
process.stdout.write(`${JSON.stringify(json, null, 2)}\n`);
|
|
134
|
+
return 0;
|
|
135
|
+
}
|
|
50
136
|
if (rows.length === 0) {
|
|
51
137
|
process.stdout.write('No sessions recorded yet.\n');
|
|
52
138
|
return 0;
|
|
@@ -62,7 +148,17 @@ function runList(argv) {
|
|
|
62
148
|
}
|
|
63
149
|
}
|
|
64
150
|
function runShow(argv) {
|
|
65
|
-
const { positionals } = parseArgs({
|
|
151
|
+
const { values, positionals } = parseArgs({
|
|
152
|
+
args: argv,
|
|
153
|
+
allowPositionals: true,
|
|
154
|
+
options: {
|
|
155
|
+
help: { type: 'boolean' },
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
if (values.help) {
|
|
159
|
+
printShowHelp();
|
|
160
|
+
return 0;
|
|
161
|
+
}
|
|
66
162
|
const id = positionals[0];
|
|
67
163
|
if (!id) {
|
|
68
164
|
process.stderr.write('peek sessions show: missing <session-id>\n');
|
|
@@ -91,9 +187,14 @@ function runExport(argv) {
|
|
|
91
187
|
options: {
|
|
92
188
|
format: { type: 'string' },
|
|
93
189
|
out: { type: 'string' },
|
|
190
|
+
help: { type: 'boolean' },
|
|
94
191
|
},
|
|
95
192
|
allowPositionals: true,
|
|
96
193
|
});
|
|
194
|
+
if (values.help) {
|
|
195
|
+
printExportHelp();
|
|
196
|
+
return 0;
|
|
197
|
+
}
|
|
97
198
|
const id = positionals[0];
|
|
98
199
|
if (!id) {
|
|
99
200
|
process.stderr.write('peek sessions export: missing <session-id>\n');
|
|
@@ -112,10 +213,14 @@ function runExport(argv) {
|
|
|
112
213
|
process.stderr.write(`peek sessions export: no session with id '${id}'\n`);
|
|
113
214
|
return 1;
|
|
114
215
|
}
|
|
115
|
-
const result = formatSession(detail, format
|
|
216
|
+
const result = formatSession(detail, format, {
|
|
217
|
+
...(detail.session.eventsBlobPath !== null
|
|
218
|
+
? { blobPath: detail.session.eventsBlobPath }
|
|
219
|
+
: {}),
|
|
220
|
+
});
|
|
116
221
|
if (!result.ok) {
|
|
117
|
-
// html
|
|
118
|
-
//
|
|
222
|
+
// html stub: clear message, non-zero exit (never write a partial file).
|
|
223
|
+
// playwright wired through in alpha.7 (K.2); json/markdown always ok.
|
|
119
224
|
process.stderr.write(`peek sessions export: ${result.message}\n`);
|
|
120
225
|
return 2;
|
|
121
226
|
}
|
|
@@ -137,9 +242,14 @@ function runDelete(argv) {
|
|
|
137
242
|
args: argv,
|
|
138
243
|
options: {
|
|
139
244
|
'all-older-than': { type: 'string' },
|
|
245
|
+
help: { type: 'boolean' },
|
|
140
246
|
},
|
|
141
247
|
allowPositionals: true,
|
|
142
248
|
});
|
|
249
|
+
if (values.help) {
|
|
250
|
+
printDeleteHelp();
|
|
251
|
+
return 0;
|
|
252
|
+
}
|
|
143
253
|
const olderThan = values['all-older-than'];
|
|
144
254
|
const id = positionals[0];
|
|
145
255
|
if (olderThan !== undefined && id !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,gFAAgF;AAChF,uCAAuC;
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/db.d.ts
CHANGED
|
@@ -11,6 +11,13 @@ export interface SessionRow {
|
|
|
11
11
|
readonly eventCount: number;
|
|
12
12
|
readonly bytes: number;
|
|
13
13
|
readonly status: string;
|
|
14
|
+
/**
|
|
15
|
+
* Relative path to the gzipped event blob under ~/.peek/rrweb-events/.
|
|
16
|
+
* Null when the session has never flushed (active session pre-flush) or
|
|
17
|
+
* pre-dates the column. Consumed by the playwright export (K.2 alpha.7)
|
|
18
|
+
* to feed the rrweb stream to `generate_playwright_repro`.
|
|
19
|
+
*/
|
|
20
|
+
readonly eventsBlobPath: string | null;
|
|
14
21
|
}
|
|
15
22
|
/** A console message extracted for a session (mirrors `get_session_console_errors`). */
|
|
16
23
|
export interface ConsoleEventRow {
|
package/dist/lib/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/lib/db.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/lib/db.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/db.js
CHANGED
package/dist/lib/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/lib/db.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,0DAA0D;AAC1D,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,gDAAgD;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/lib/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,16 @@ export type FormatResult = {
|
|
|
11
11
|
readonly ok: false;
|
|
12
12
|
readonly message: string;
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* Optional ancillary data the formatter may need beyond `SessionDetail`. The
|
|
16
|
+
* playwright format needs `blobPath` (the `sessions.events_blob_path` value)
|
|
17
|
+
* to load the gzipped rrweb stream from disk; markdown / json work purely
|
|
18
|
+
* from the SQL rows already on `detail` and ignore it.
|
|
19
|
+
*/
|
|
20
|
+
export interface FormatOptions {
|
|
21
|
+
/** Relative path to the session's gzipped event blob, for the playwright walker. */
|
|
22
|
+
readonly blobPath?: string;
|
|
23
|
+
}
|
|
14
24
|
/** Render a hydrated session in the requested format. */
|
|
15
|
-
export declare function formatSession(detail: SessionDetail, format: ExportFormat): FormatResult;
|
|
25
|
+
export declare function formatSession(detail: SessionDetail, format: ExportFormat, options?: FormatOptions): FormatResult;
|
|
16
26
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/format/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/format/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK9C,iDAAiD;AACjD,eAAO,MAAM,cAAc,qDAAsD,CAAC;AAClF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED,kFAAkF;AAClF,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,aAAkB,GAC1B,YAAY,CAuBd"}
|
package/dist/lib/format/index.js
CHANGED
|
@@ -1,29 +1,38 @@
|
|
|
1
|
-
// Export-format dispatch (P2 PRD §C.3). `markdown` and `
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
// -
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
1
|
+
// Export-format dispatch (P2 PRD §C.3). `markdown`, `json`, and `playwright`
|
|
2
|
+
// are implemented fully:
|
|
3
|
+
// - markdown / json: self-contained AI-paste formats, read straight from
|
|
4
|
+
// the extracted SQL rows (consoleErrors / networkErrors).
|
|
5
|
+
// - playwright (K.2 alpha.7 fix): wires to the SAME walker the MCP
|
|
6
|
+
// `generate_playwright_repro` tool uses via `@peekdev/mcp/mcp/playwright-
|
|
7
|
+
// repro` + `@peekdev/mcp/mcp/event-blobs`. CLI + AI consumers produce
|
|
8
|
+
// identical output for the same session (P2 PRD §B3 parity guarantee).
|
|
9
|
+
//
|
|
10
|
+
// `html` (self-contained rrweb replay) stays deferred — it would require
|
|
11
|
+
// bundling an rrweb player inline; importing @tracelane/report is explicitly
|
|
12
|
+
// forbidden (ADR-0001 product independence), so a peek-specific viewer is a
|
|
13
|
+
// tracked follow-up. The stub returns a non-ok result so the command shell
|
|
14
|
+
// exits non-zero with a clear message (never silently emit an empty/partial
|
|
15
|
+
// file).
|
|
13
16
|
import { formatSessionJson } from './json.js';
|
|
14
17
|
import { formatSessionMarkdown } from './markdown.js';
|
|
18
|
+
import { formatSessionPlaywright } from './playwright.js';
|
|
15
19
|
/** Supported `--format` values (P2 PRD §C.1). */
|
|
16
20
|
export const EXPORT_FORMATS = ['markdown', 'json', 'html', 'playwright'];
|
|
17
21
|
export function isExportFormat(value) {
|
|
18
22
|
return EXPORT_FORMATS.includes(value);
|
|
19
23
|
}
|
|
20
24
|
/** Render a hydrated session in the requested format. */
|
|
21
|
-
export function formatSession(detail, format) {
|
|
25
|
+
export function formatSession(detail, format, options = {}) {
|
|
22
26
|
switch (format) {
|
|
23
27
|
case 'markdown':
|
|
24
28
|
return { ok: true, content: formatSessionMarkdown(detail) };
|
|
25
29
|
case 'json':
|
|
26
30
|
return { ok: true, content: formatSessionJson(detail) };
|
|
31
|
+
case 'playwright':
|
|
32
|
+
return {
|
|
33
|
+
ok: true,
|
|
34
|
+
content: formatSessionPlaywright(detail, ...(options.blobPath !== undefined ? [options.blobPath] : [])),
|
|
35
|
+
};
|
|
27
36
|
case 'html':
|
|
28
37
|
return {
|
|
29
38
|
ok: false,
|
|
@@ -31,13 +40,6 @@ export function formatSession(detail, format) {
|
|
|
31
40
|
'rrweb replay viewer is tracked for a follow-up; @tracelane/report is intentionally ' +
|
|
32
41
|
'not reused — ADR-0001 product independence). Use --format markdown or json.',
|
|
33
42
|
};
|
|
34
|
-
case 'playwright':
|
|
35
|
-
return {
|
|
36
|
-
ok: false,
|
|
37
|
-
message: "export format 'playwright' is not yet implemented (the repro generator overlaps the " +
|
|
38
|
-
'MCP `generate_playwright_repro` tool, Phase 3c Task 3.13, and will share that walker). ' +
|
|
39
|
-
'Use --format markdown or json.',
|
|
40
|
-
};
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
45
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/format/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/format/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,yBAAyB;AACzB,2EAA2E;AAC3E,8DAA8D;AAC9D,qEAAqE;AACrE,8EAA8E;AAC9E,0EAA0E;AAC1E,2EAA2E;AAC3E,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,4EAA4E;AAC5E,SAAS;AAGT,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,iDAAiD;AACjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAU,CAAC;AAGlF,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAQ,cAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAkBD,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAC3B,MAAqB,EACrB,MAAoB,EACpB,UAAyB,EAAE;IAE3B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,KAAK,MAAM;YACT,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,KAAK,YAAY;YACf,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,uBAAuB,CAC9B,MAAM,EACN,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9D;aACF,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EACL,8EAA8E;oBAC9E,qFAAqF;oBACrF,6EAA6E;aAChF,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import type { SessionDetail } from '../db.js';
|
|
2
|
+
/** Static attribution block shape — never references session data. */
|
|
3
|
+
export interface AttributionBlock {
|
|
4
|
+
readonly tool: 'peek';
|
|
5
|
+
readonly url: string;
|
|
6
|
+
readonly description: string;
|
|
7
|
+
readonly version: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Build the self-marketing attribution block (Phase 5 indirect virality).
|
|
11
|
+
*
|
|
12
|
+
* The URL links to `packages/peek-mcp` because the install command
|
|
13
|
+
* (`npm i @peekdev/mcp` / `peek init`) is the marketing artifact per the
|
|
14
|
+
* research — not the docs site, not a landing page. The UTM medium is
|
|
15
|
+
* format-specific so we can attribute which export shape drives the most
|
|
16
|
+
* click-through (JSON vs Markdown vs future formats).
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildAttribution(medium: 'json-attribution' | 'markdown-attribution'): AttributionBlock;
|
|
2
19
|
/** The JSON export envelope. Field names mirror the MCP tool return shapes. */
|
|
3
20
|
export interface SessionJsonExport {
|
|
4
21
|
readonly id: string;
|
|
@@ -30,6 +47,14 @@ export interface SessionJsonExport {
|
|
|
30
47
|
}
|
|
31
48
|
/** Build the JSON export object (pure; not yet stringified). */
|
|
32
49
|
export declare function toJsonExport(detail: SessionDetail): SessionJsonExport;
|
|
33
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Render a session as a pretty-printed JSON string (2-space indent).
|
|
52
|
+
*
|
|
53
|
+
* `_attribution` is inserted FIRST in the object literal so it appears at the
|
|
54
|
+
* top of the serialized output — `JSON.stringify` preserves insertion order
|
|
55
|
+
* per the ECMA-262 spec for string keys (own enumerable string properties are
|
|
56
|
+
* visited in insertion order). The `_` prefix is the JSON convention for
|
|
57
|
+
* "metadata, not data" — discoverable but not part of the session payload.
|
|
58
|
+
*/
|
|
34
59
|
export declare function formatSessionJson(detail: SessionDetail): string;
|
|
35
60
|
//# sourceMappingURL=json.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/lib/format/json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/lib/format/json.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,kBAAkB,GAAG,sBAAsB,GAClD,gBAAgB,CAQlB;AAED,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;QACpC,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC,CAAC;IACH,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;QACpC,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC;CACJ;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CA8BrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAM/D"}
|
package/dist/lib/format/json.js
CHANGED
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
// (P2 PRD §C.3 "same schema as MCP tool returns", §B3) so an AI consumer can
|
|
3
3
|
// treat a CLI export and an MCP `get_session_*` response interchangeably. Pure:
|
|
4
4
|
// SessionDetail in, JSON string out.
|
|
5
|
+
//
|
|
6
|
+
// Phase 5 self-marketing: every export carries a top-level `_attribution` block
|
|
7
|
+
// (underscore-prefixed per JSON convention for "metadata not data") so a JSON
|
|
8
|
+
// export shared in a PR or attached to a JIRA ticket is a tracked acquisition
|
|
9
|
+
// channel — the Loom / Calendly / Statuspage indirect-virality pattern. The
|
|
10
|
+
// block contains only static strings + the CLI version; no session content
|
|
11
|
+
// leaks in.
|
|
12
|
+
import { CLI_VERSION } from '../../version.js';
|
|
13
|
+
/**
|
|
14
|
+
* Build the self-marketing attribution block (Phase 5 indirect virality).
|
|
15
|
+
*
|
|
16
|
+
* The URL links to `packages/peek-mcp` because the install command
|
|
17
|
+
* (`npm i @peekdev/mcp` / `peek init`) is the marketing artifact per the
|
|
18
|
+
* research — not the docs site, not a landing page. The UTM medium is
|
|
19
|
+
* format-specific so we can attribute which export shape drives the most
|
|
20
|
+
* click-through (JSON vs Markdown vs future formats).
|
|
21
|
+
*/
|
|
22
|
+
export function buildAttribution(medium) {
|
|
23
|
+
return {
|
|
24
|
+
tool: 'peek',
|
|
25
|
+
url: `https://github.com/Cubenest/rrweb-stack/tree/main/packages/peek-mcp?utm_source=peek-export&utm_medium=${medium}&utm_campaign=indirect-virality`,
|
|
26
|
+
description: 'Captured with peek — your real browser, exposed to your AI coding agent over MCP. Capture once, query forever, never leaves your machine.',
|
|
27
|
+
version: CLI_VERSION,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
5
30
|
/** Build the JSON export object (pure; not yet stringified). */
|
|
6
31
|
export function toJsonExport(detail) {
|
|
7
32
|
const { session, counts, consoleErrors, networkErrors } = detail;
|
|
@@ -34,8 +59,20 @@ export function toJsonExport(detail) {
|
|
|
34
59
|
})),
|
|
35
60
|
};
|
|
36
61
|
}
|
|
37
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* Render a session as a pretty-printed JSON string (2-space indent).
|
|
64
|
+
*
|
|
65
|
+
* `_attribution` is inserted FIRST in the object literal so it appears at the
|
|
66
|
+
* top of the serialized output — `JSON.stringify` preserves insertion order
|
|
67
|
+
* per the ECMA-262 spec for string keys (own enumerable string properties are
|
|
68
|
+
* visited in insertion order). The `_` prefix is the JSON convention for
|
|
69
|
+
* "metadata, not data" — discoverable but not part of the session payload.
|
|
70
|
+
*/
|
|
38
71
|
export function formatSessionJson(detail) {
|
|
39
|
-
|
|
72
|
+
const envelope = {
|
|
73
|
+
_attribution: buildAttribution('json-attribution'),
|
|
74
|
+
session: toJsonExport(detail),
|
|
75
|
+
};
|
|
76
|
+
return `${JSON.stringify(envelope, null, 2)}\n`;
|
|
40
77
|
}
|
|
41
78
|
//# sourceMappingURL=json.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/lib/format/json.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,gFAAgF;AAChF,qCAAqC;
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/lib/format/json.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,gFAAgF;AAChF,qCAAqC;AACrC,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,YAAY;AAEZ,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAW/C;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAmD;IAEnD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,yGAAyG,MAAM,iCAAiC;QACrJ,WAAW,EACT,2IAA2I;QAC7I,OAAO,EAAE,WAAW;KACrB,CAAC;AACJ,CAAC;AAgCD,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACjE,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;QACvD,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;QACH,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,MAAM,QAAQ,GAAG;QACf,YAAY,EAAE,gBAAgB,CAAC,kBAAkB,CAAC;QAClD,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC;KAC9B,CAAC;IACF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/lib/format/markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/lib/format/markdown.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAoC,aAAa,EAAE,MAAM,UAAU,CAAC;AAiChF,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAuDnE"}
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
// `generate_playwright_repro` tools (Phase 3c). The CLI markdown export reads
|
|
13
13
|
// only the extracted SQL rows, so it states where the richer data lives rather
|
|
14
14
|
// than fabricating it.
|
|
15
|
+
//
|
|
16
|
+
// Phase 5 self-marketing: the export ends with an `---` rule + an attribution
|
|
17
|
+
// blockquote so every Markdown export shared in a PR or attached to a ticket
|
|
18
|
+
// is a tracked acquisition channel (UTM-tagged link to peek-mcp's install
|
|
19
|
+
// path on GitHub — the install command IS the marketing artifact per the
|
|
20
|
+
// indirect-virality research). The attribution is static — no session data.
|
|
21
|
+
import { buildAttribution } from './json.js';
|
|
15
22
|
function isoFromMs(tsMs) {
|
|
16
23
|
return new Date(tsMs).toISOString();
|
|
17
24
|
}
|
|
@@ -71,6 +78,16 @@ export function formatSessionMarkdown(detail) {
|
|
|
71
78
|
lines.push('## Suggested reproduction');
|
|
72
79
|
lines.push(`Generate a Playwright repro with \`peek sessions export ${session.id} --format playwright\`, or the MCP \`generate_playwright_repro\` tool.`);
|
|
73
80
|
lines.push('');
|
|
81
|
+
// Self-marketing attribution (Phase 5 indirect virality). Horizontal-rule
|
|
82
|
+
// separates it from the export body; blockquote keeps it visually distinct
|
|
83
|
+
// (won't be mistaken for a user-action line by an AI paste consumer). The
|
|
84
|
+
// link target is the install path on GitHub — that's where the reader
|
|
85
|
+
// sees `npm i @peekdev/mcp`.
|
|
86
|
+
const attribution = buildAttribution('markdown-attribution');
|
|
87
|
+
lines.push('---');
|
|
88
|
+
lines.push('');
|
|
89
|
+
lines.push(`> _Captured with [peek](${attribution.url}) — your real browser, exposed to your AI coding agent over MCP._`);
|
|
90
|
+
lines.push('');
|
|
74
91
|
return lines.join('\n');
|
|
75
92
|
}
|
|
76
93
|
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/lib/format/markdown.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4DAA4D;AAC5D,YAAY;AACZ,sBAAsB;AACtB,uBAAuB;AACvB,iCAAiC;AACjC,8BAA8B;AAC9B,+CAA+C;AAC/C,EAAE;AACF,4EAA4E;AAC5E,mEAAmE;AACnE,8EAA8E;AAC9E,+EAA+E;AAC/E,uBAAuB;
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/lib/format/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SessionDetail } from '../db.js';
|
|
2
|
+
/**
|
|
3
|
+
* Render a hydrated session as a Playwright `.spec.ts` test string. Returns
|
|
4
|
+
* the script verbatim — no trailing newline mutation — so byte-identical
|
|
5
|
+
* comparison with the MCP tool output works for tests.
|
|
6
|
+
*
|
|
7
|
+
* If the session has no recorded event blob (active session pre-flush, or
|
|
8
|
+
* blob pruned by retention), the generator still emits a valid `test(...)`
|
|
9
|
+
* shell with a `// No user actions were recorded` placeholder so the user
|
|
10
|
+
* gets a script they can edit, not an empty file.
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatSessionPlaywright(detail: SessionDetail, blobPath?: string): string;
|
|
13
|
+
//# sourceMappingURL=playwright.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../../src/lib/format/playwright.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAKxF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// `--format playwright`: emit a runnable Playwright `test(...)` repro from a
|
|
2
|
+
// session's rrweb stream (K.2 alpha.7 fix). This wires the CLI to the SAME
|
|
3
|
+
// code path the MCP `generate_playwright_repro` tool uses — Phase 3c Task 3.13,
|
|
4
|
+
// implemented in `@peekdev/mcp/mcp/playwright-repro`. CLI and AI consumers MUST
|
|
5
|
+
// produce identical output for the same session (P2 PRD §B3 cross-surface
|
|
6
|
+
// parity guarantee).
|
|
7
|
+
//
|
|
8
|
+
// The MCP tool walks the in-memory eventWithTime[] directly; the CLI reads
|
|
9
|
+
// the on-disk gzipped blob first (via @peekdev/mcp/mcp/event-blobs), then
|
|
10
|
+
// hands the decoded events to the shared generator. The session metadata
|
|
11
|
+
// (used as the test title) comes from the same SessionDetail the markdown +
|
|
12
|
+
// json formatters consume.
|
|
13
|
+
//
|
|
14
|
+
// Pre-K.2, this format returned a non-ok "not yet implemented (Phase 3c Task
|
|
15
|
+
// 3.13)" message because the walker lived in peek-mcp and wasn't published
|
|
16
|
+
// as a sub-path export. Alpha.7 adds the `./mcp/playwright-repro` and
|
|
17
|
+
// `./mcp/event-blobs` sub-path exports so the CLI can import the generator
|
|
18
|
+
// + the on-disk blob loader directly, with no code forking.
|
|
19
|
+
import { loadSessionEvents } from '@peekdev/mcp/mcp/event-blobs';
|
|
20
|
+
import { generatePlaywrightRepro } from '@peekdev/mcp/mcp/playwright-repro';
|
|
21
|
+
/**
|
|
22
|
+
* Render a hydrated session as a Playwright `.spec.ts` test string. Returns
|
|
23
|
+
* the script verbatim — no trailing newline mutation — so byte-identical
|
|
24
|
+
* comparison with the MCP tool output works for tests.
|
|
25
|
+
*
|
|
26
|
+
* If the session has no recorded event blob (active session pre-flush, or
|
|
27
|
+
* blob pruned by retention), the generator still emits a valid `test(...)`
|
|
28
|
+
* shell with a `// No user actions were recorded` placeholder so the user
|
|
29
|
+
* gets a script they can edit, not an empty file.
|
|
30
|
+
*/
|
|
31
|
+
export function formatSessionPlaywright(detail, blobPath) {
|
|
32
|
+
const events = blobPath !== undefined && blobPath.length > 0 ? loadSessionEvents(blobPath) : [];
|
|
33
|
+
return generatePlaywrightRepro(events, {
|
|
34
|
+
title: detail.session.title ?? `peek session ${detail.session.id}`,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=playwright.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright.js","sourceRoot":"","sources":["../../../src/lib/format/playwright.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,gFAAgF;AAChF,gFAAgF;AAChF,0EAA0E;AAC1E,qBAAqB;AACrB,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,4EAA4E;AAC5E,2BAA2B;AAC3B,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,sEAAsE;AACtE,2EAA2E;AAC3E,4DAA4D;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAG5E;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAqB,EAAE,QAAiB;IAC9E,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,OAAO,uBAAuB,CAAC,MAAM,EAAE;QACrC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,gBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;KACnE,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peekdev/cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.7",
|
|
4
4
|
"description": "peek command-line tool. A thin read-mostly client of the native host's ~/.peek/sessions.db (ADR-0007): status, sessions list/show/export/delete, the `peek init` MCP-client wizard, and `peek audit log`.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"better-sqlite3": "^12.10.0",
|
|
25
|
-
"@peekdev/mcp": "0.1.0-alpha.
|
|
25
|
+
"@peekdev/mcp": "0.1.0-alpha.4"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/better-sqlite3": "^7.6.13",
|