screencast-axi 0.1.2 → 0.1.4

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 (42) hide show
  1. package/README.md +76 -66
  2. package/dist/src/commands/auth.js +2 -1
  3. package/dist/src/commands/auth.js.map +1 -1
  4. package/dist/src/commands/guide.js +2 -1
  5. package/dist/src/commands/guide.js.map +1 -1
  6. package/dist/src/commands/list.js +3 -0
  7. package/dist/src/commands/list.js.map +1 -1
  8. package/dist/src/commands/record.js +115 -11
  9. package/dist/src/commands/record.js.map +1 -1
  10. package/dist/src/commands/scaffold.js +16 -6
  11. package/dist/src/commands/scaffold.js.map +1 -1
  12. package/dist/src/commands/setup.js +19 -10
  13. package/dist/src/commands/setup.js.map +1 -1
  14. package/dist/src/config.js +22 -6
  15. package/dist/src/config.js.map +1 -1
  16. package/dist/src/encode.d.ts +14 -0
  17. package/dist/src/encode.js +5 -1
  18. package/dist/src/encode.js.map +1 -1
  19. package/dist/src/inventory.d.ts +15 -1
  20. package/dist/src/inventory.js +44 -4
  21. package/dist/src/inventory.js.map +1 -1
  22. package/dist/src/manifest.d.ts +13 -0
  23. package/dist/src/manifest.js.map +1 -1
  24. package/dist/src/measure.d.ts +67 -0
  25. package/dist/src/measure.js +69 -0
  26. package/dist/src/measure.js.map +1 -0
  27. package/dist/src/run.d.ts +11 -0
  28. package/dist/src/run.js +39 -8
  29. package/dist/src/run.js.map +1 -1
  30. package/dist/src/skill.d.ts +10 -0
  31. package/dist/src/skill.js +28 -14
  32. package/dist/src/skill.js.map +1 -1
  33. package/dist/src/types.d.ts +15 -0
  34. package/dist/src/types.js +24 -0
  35. package/dist/src/types.js.map +1 -1
  36. package/dist/src/version.d.ts +1 -1
  37. package/dist/src/version.js +1 -1
  38. package/package.json +1 -1
  39. package/skills/screencast-axi/SKILL.md +19 -15
  40. package/dist/src/hooks.d.ts +0 -9
  41. package/dist/src/hooks.js +0 -20
  42. package/dist/src/hooks.js.map +0 -1
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Remembering how long a scenario takes at pace 1.
3
+ *
4
+ * `--duration` cannot guess a pace: a take is `fixed + pace x scalable`, and
5
+ * only the scenario itself knows how much of it is the site's own waiting. So
6
+ * the recorder measures, by running the whole scenario once without encoding
7
+ * and then shooting it again for real. That is honest and it is also the
8
+ * single most expensive thing `record` does - measured on a ten-second
9
+ * Wikipedia clip, the discarded pass was 8.7s of a 28s run.
10
+ *
11
+ * The measurement is worth keeping, because what it describes barely changes:
12
+ * the same scenario, at the same size, against the same origin, takes the same
13
+ * time. Keyed on all three (plus the narration and the recorder version), a
14
+ * rehearsal doubles as the measuring pass and a re-cut costs one browser run
15
+ * instead of two.
16
+ *
17
+ * Anything that could move the number invalidates the entry rather than being
18
+ * corrected for. A cache that is wrong about a clip's length is worse than no
19
+ * cache: the clip comes out the wrong length and nothing says why.
20
+ */
21
+ /** What was measured, and what it was measured against. */
22
+ export interface Measurement {
23
+ readonly scenarioId: string;
24
+ /** Hash of the scenario source, so any edit invalidates it. */
25
+ readonly sourceHash: string;
26
+ readonly stepsHash: string;
27
+ readonly baseUrl: string;
28
+ readonly width: number;
29
+ readonly height: number;
30
+ readonly device?: string;
31
+ readonly recorderVersion: string;
32
+ /** What a pace-1 take measured, in ms. */
33
+ readonly durationMs: number;
34
+ /** Of that, how much was pause the recorder controls. */
35
+ readonly scaledPauseMs: number;
36
+ readonly measuredAt: string;
37
+ }
38
+ /** Everything a measurement has to match to be reusable. */
39
+ export interface MeasurementKey {
40
+ readonly scenarioId: string;
41
+ readonly sourceText: string;
42
+ readonly steps: readonly string[] | undefined;
43
+ readonly baseUrl: string;
44
+ readonly width: number;
45
+ readonly height: number;
46
+ readonly device?: string;
47
+ }
48
+ /**
49
+ * Whether `entry` describes the take `key` is about to shoot.
50
+ *
51
+ * Every field is compared. A missing one fails the match: an entry written by
52
+ * an older version that did not record a field cannot be shown to be valid,
53
+ * and re-measuring costs one pass while being wrong costs a bad clip.
54
+ */
55
+ export declare function matches(entry: Measurement, key: MeasurementKey): boolean;
56
+ /**
57
+ * The stored measurement for `key`, if one still describes it.
58
+ *
59
+ * Unreadable or unparseable is treated as absent: this is a cache, and a
60
+ * corrupt one should cost a measuring pass, not the command.
61
+ */
62
+ export declare function readMeasurement(rawDir: string, key: MeasurementKey): Measurement | null;
63
+ /** Stores a pace-1 measurement. Failure to write is never fatal. */
64
+ export declare function writeMeasurement(rawDir: string, key: MeasurementKey, result: {
65
+ durationMs: number;
66
+ scaledPauseMs: number;
67
+ }): void;
@@ -0,0 +1,69 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { hashSteps, hashText } from "./manifest.js";
4
+ import { VERSION } from "./version.js";
5
+ function fileFor(rawDir, id) {
6
+ return join(rawDir, "measure", `${id}.json`);
7
+ }
8
+ /**
9
+ * Whether `entry` describes the take `key` is about to shoot.
10
+ *
11
+ * Every field is compared. A missing one fails the match: an entry written by
12
+ * an older version that did not record a field cannot be shown to be valid,
13
+ * and re-measuring costs one pass while being wrong costs a bad clip.
14
+ */
15
+ export function matches(entry, key) {
16
+ return (entry.scenarioId === key.scenarioId &&
17
+ entry.sourceHash === hashText(key.sourceText) &&
18
+ entry.stepsHash === hashSteps(key.steps) &&
19
+ entry.baseUrl === key.baseUrl &&
20
+ entry.width === key.width &&
21
+ entry.height === key.height &&
22
+ (entry.device ?? null) === (key.device ?? null) &&
23
+ entry.recorderVersion === VERSION &&
24
+ Number.isFinite(entry.durationMs) &&
25
+ Number.isFinite(entry.scaledPauseMs));
26
+ }
27
+ /**
28
+ * The stored measurement for `key`, if one still describes it.
29
+ *
30
+ * Unreadable or unparseable is treated as absent: this is a cache, and a
31
+ * corrupt one should cost a measuring pass, not the command.
32
+ */
33
+ export function readMeasurement(rawDir, key) {
34
+ const file = fileFor(rawDir, key.scenarioId);
35
+ if (!existsSync(file))
36
+ return null;
37
+ try {
38
+ const parsed = JSON.parse(readFileSync(file, "utf8"));
39
+ return matches(parsed, key) ? parsed : null;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ /** Stores a pace-1 measurement. Failure to write is never fatal. */
46
+ export function writeMeasurement(rawDir, key, result) {
47
+ const entry = {
48
+ scenarioId: key.scenarioId,
49
+ sourceHash: hashText(key.sourceText),
50
+ stepsHash: hashSteps(key.steps),
51
+ baseUrl: key.baseUrl,
52
+ width: key.width,
53
+ height: key.height,
54
+ ...(key.device ? { device: key.device } : {}),
55
+ recorderVersion: VERSION,
56
+ durationMs: result.durationMs,
57
+ scaledPauseMs: result.scaledPauseMs,
58
+ measuredAt: new Date().toISOString(),
59
+ };
60
+ try {
61
+ const file = fileFor(rawDir, key.scenarioId);
62
+ mkdirSync(join(rawDir, "measure"), { recursive: true });
63
+ writeFileSync(file, `${JSON.stringify(entry, null, 2)}\n`);
64
+ }
65
+ catch {
66
+ // A cache that cannot be written is a slower next run, not a failure.
67
+ }
68
+ }
69
+ //# sourceMappingURL=measure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../src/measure.ts"],"names":[],"mappings":"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"}
package/dist/src/run.d.ts CHANGED
@@ -15,6 +15,8 @@ export interface RunOptions {
15
15
  readonly mode: RunMode;
16
16
  /** Source of the scenario module, hashed so staleness is answerable later. */
17
17
  readonly sourceText?: string;
18
+ /** Absolute path of the scenario module, recorded so the clip stays findable. */
19
+ readonly sourceFile?: string;
18
20
  readonly baseUrl?: string;
19
21
  readonly outDir?: string;
20
22
  readonly pace?: number;
@@ -79,4 +81,13 @@ export declare class ScenarioFailure extends ScreencastError {
79
81
  * would be a caption promising something the video does not show.
80
82
  */
81
83
  export declare function assertScriptComplete(steps: readonly string[] | undefined, shown: readonly number[]): void;
84
+ /**
85
+ * The base URL a take will use, resolved the way `runScenario` resolves it.
86
+ *
87
+ * Exported so a caller deciding *whether* to run can key on the same values
88
+ * the run itself will use, rather than on an approximation of them.
89
+ */
90
+ export declare function baseUrlFor(options: RunOptions): string;
91
+ /** The viewport a take will use, resolved the way `runScenario` resolves it. */
92
+ export declare function viewportFor(options: RunOptions): Promise<ResolvedViewport>;
82
93
  export declare function runScenario(options: RunOptions): Promise<RunResult>;
package/dist/src/run.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { rm } from "node:fs/promises";
2
+ import { relative } from "node:path";
2
3
  import { captureSize, openContext, resolveViewport } from "./browser.js";
3
4
  import { selectStrategy } from "./config.js";
4
5
  import { Director } from "./director.js";
@@ -6,6 +7,7 @@ import { encode } from "./encode.js";
6
7
  import { ScreencastError } from "./errors.js";
7
8
  import { captureFailure } from "./forensics.js";
8
9
  import { hashSteps, hashText, upsertEntry } from "./manifest.js";
10
+ import { writeMeasurement } from "./measure.js";
9
11
  import { mergeThemes, overlayInitScript, resolveOverlayTheme } from "./overlay.js";
10
12
  import { detectToolchain, missingFfmpegError } from "./toolchain.js";
11
13
  import { VERSION } from "./version.js";
@@ -54,14 +56,19 @@ export function assertScriptComplete(steps, shown) {
54
56
  "Call `await d.step(i)` once per declared line, in order, inside run()",
55
57
  ]);
56
58
  }
57
- export async function runScenario(options) {
58
- const { scenario, config, mode } = options;
59
- const log = options.log ?? (() => { });
60
- const recording = mode === "record";
61
- const outDir = options.outDir ?? config.outDir;
62
- const baseUrl = options.baseUrl ?? scenario.baseUrl ?? config.baseUrl;
63
- const pace = options.pace ?? scenario.pace ?? config.pace;
64
- const viewport = await resolveViewport({
59
+ /**
60
+ * The base URL a take will use, resolved the way `runScenario` resolves it.
61
+ *
62
+ * Exported so a caller deciding *whether* to run can key on the same values
63
+ * the run itself will use, rather than on an approximation of them.
64
+ */
65
+ export function baseUrlFor(options) {
66
+ return options.baseUrl ?? options.scenario.baseUrl ?? options.config.baseUrl;
67
+ }
68
+ /** The viewport a take will use, resolved the way `runScenario` resolves it. */
69
+ export async function viewportFor(options) {
70
+ const { scenario, config } = options;
71
+ return resolveViewport({
65
72
  ...((options.device ?? scenario.device ?? config.device)
66
73
  ? { device: options.device ?? scenario.device ?? config.device }
67
74
  : {}),
@@ -75,6 +82,15 @@ export async function runScenario(options) {
75
82
  ? { deviceScaleFactor: config.browser.deviceScaleFactor }
76
83
  : {}),
77
84
  }, config.viewport);
85
+ }
86
+ export async function runScenario(options) {
87
+ const { scenario, config, mode } = options;
88
+ const log = options.log ?? (() => { });
89
+ const recording = mode === "record";
90
+ const outDir = options.outDir ?? config.outDir;
91
+ const baseUrl = baseUrlFor(options);
92
+ const pace = options.pace ?? scenario.pace ?? config.pace;
93
+ const viewport = await viewportFor(options);
78
94
  // Fail before the browser opens, not forty seconds into a take that cannot
79
95
  // possibly produce a file.
80
96
  let toolchain = options.toolchain;
@@ -210,6 +226,20 @@ export async function runScenario(options) {
210
226
  const trimStart = director.trimStartSeconds;
211
227
  const durationMs = Math.max(0, clipEndedAt - opened.createdAt - Math.round(trimStart * 1000));
212
228
  if (!recording) {
229
+ // A pace-1 rehearsal is exactly what `--duration` sends the browser out to
230
+ // learn, so keep it: the next `record --duration` can skip its own pass.
231
+ // Only pace 1, because the solve is defined against a natural-speed take.
232
+ if (pace === 1 && options.sourceText !== undefined) {
233
+ writeMeasurement(config.rawDir, {
234
+ scenarioId: scenario.id,
235
+ sourceText: options.sourceText,
236
+ steps: scenario.steps,
237
+ baseUrl,
238
+ width: viewport.viewport.width,
239
+ height: viewport.viewport.height,
240
+ ...(viewport.device ? { device: viewport.device } : {}),
241
+ }, { durationMs, scaledPauseMs: director.scaledPauseMs });
242
+ }
213
243
  return {
214
244
  id: scenario.id,
215
245
  mode,
@@ -266,6 +296,7 @@ export async function runScenario(options) {
266
296
  ...(viewport.device ? { device: viewport.device } : {}),
267
297
  formats,
268
298
  ...(options.sourceText ? { sourceHash: hashText(options.sourceText) } : {}),
299
+ ...(options.sourceFile ? { sourceFile: relative(outDir, options.sourceFile) } : {}),
269
300
  stepsHash: hashSteps(scenario.steps),
270
301
  recorderVersion: VERSION,
271
302
  };
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,14 @@
1
1
  export declare const SKILL_NAME = "screencast-axi";
2
+ /**
3
+ * How to run the CLI without installing anything.
4
+ *
5
+ * The `-p` flags are the whole point: Playwright and tsx are optional peers
6
+ * resolved from the *project*, so a bare `npx screencast-axi` finds a CLI with
7
+ * no browser to drive and no way to read a TypeScript scenario. Kept here, and
8
+ * imported by every message that suggests a command, so the three places that
9
+ * quote it cannot drift apart.
10
+ */
11
+ export declare const NPX_INVOCATION = "npx -y -p screencast-axi -p playwright -p tsx screencast-axi";
2
12
  /**
3
13
  * Hard cap, enforced rather than documented.
4
14
  *
package/dist/src/skill.js CHANGED
@@ -1,4 +1,14 @@
1
1
  export const SKILL_NAME = "screencast-axi";
2
+ /**
3
+ * How to run the CLI without installing anything.
4
+ *
5
+ * The `-p` flags are the whole point: Playwright and tsx are optional peers
6
+ * resolved from the *project*, so a bare `npx screencast-axi` finds a CLI with
7
+ * no browser to drive and no way to read a TypeScript scenario. Kept here, and
8
+ * imported by every message that suggests a command, so the three places that
9
+ * quote it cannot drift apart.
10
+ */
11
+ export const NPX_INVOCATION = "npx -y -p screencast-axi -p playwright -p tsx screencast-axi";
2
12
  /**
3
13
  * Hard cap, enforced rather than documented.
4
14
  *
@@ -27,8 +37,7 @@ hand-rolled Playwright video capture or a screen recorder.
27
37
 
28
38
  Use it whenever a task needs a recorded walkthrough of a UI: a landing-page
29
39
  demo, a feature tour, a release-note clip, a bug reproduction. Skip it when a
30
- still screenshot says the same thing - a clip costs far more to produce and to
31
- watch.
40
+ still screenshot says the same thing.
32
41
 
33
42
  ## Current guidance lives in the CLI
34
43
 
@@ -37,29 +46,34 @@ installed copies go stale. Get the current source of truth from the CLI:
37
46
 
38
47
  - \`screencast-axi --help\` for the command index
39
48
  - \`screencast-axi <command> --help\` for per-command usage
40
- - \`screencast-axi guide\` for topic-sized guidance, pulled one topic at a time
41
- rather than read as a manual
49
+ - \`screencast-axi guide\` for guidance, one topic at a time, not as a manual
42
50
  - \`screencast-axi doctor\` for whether this machine can record at all
43
51
 
44
- Three things worth knowing before the first run:
52
+ Worth knowing before the first run:
45
53
 
46
54
  1. Iterate with \`rehearse\`, not \`record\`: no encoding, so a stale selector
47
- surfaces in seconds, and it prints every action the scenario took.
55
+ surfaces in seconds, it prints every action taken, and a \`--duration\` take
56
+ afterwards reuses its timing instead of measuring again.
48
57
  2. \`--headed\` shows it happening in a real window. Offer it when someone
49
58
  wants to see what a script does to their signed-in account before it runs.
50
59
  3. When a selector needs discovering, drive the page live with a browser tool
51
60
  such as \`chrome-devtools-axi\`, then write the scenario.
52
61
 
53
62
  ffmpeg must be installed. Signing in is a one-time human step
54
- (\`auth login --interactive\`), and the CLI refuses rather than prompting when
55
- no person is present.
63
+ (\`auth login --interactive\`); the CLI refuses rather than prompting when no
64
+ person is present.
65
+
66
+ No install needed - this works from any project, and \`init\`/\`scaffold\` write
67
+ files that load without it:
68
+
69
+ ${NPX_INVOCATION} <command>
70
+
71
+ \`setup\` downloads the browser once. For regular use,
72
+ \`pnpm add -D screencast-axi playwright tsx\` shortens it to
73
+ \`pnpm exec screencast-axi\`.
56
74
 
57
- Install it in the project being recorded, not globally:
58
- \`pnpm add -D screencast-axi playwright tsx\`, then run it as
59
- \`pnpm exec screencast-axi <command>\`. A scenario file imports
60
- \`screencast-axi\` itself, so a copy in an npx cache cannot satisfy that
61
- import - \`npx -y screencast-axi\` works only for commands that read none of
62
- the project, such as \`--help\`, \`guide\` and \`doctor\`.
75
+ Record by id, or by path when no config lists it - \`list\`, \`show\` and
76
+ \`check\` find it either way.
63
77
  `;
64
78
  export function createSkillMarkdown() {
65
79
  const markdown = `${FRONTMATTER}\n\n${BODY}`;
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/skill.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,GAAG;QACZ,UAAU;;;;;;;;;IASd,CAAC;AAEL,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCZ,CAAC;AAEF,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,GAAG,WAAW,OAAO,IAAI,EAAE,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,CAAC,MAAM,+BAA+B;YACrE,GAAG,wBAAwB,gCAAgC,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/skill.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,8DAA8D,CAAC;AAE7F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,GAAG;QACZ,UAAU;;;;;;;;;IASd,CAAC;AAEL,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoCP,cAAc;;;;;;;;CAQnB,CAAC;AAEF,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,GAAG,WAAW,OAAO,IAAI,EAAE,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,CAAC,MAAM,+BAA+B;YACrE,GAAG,wBAAwB,gCAAgC,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -85,4 +85,19 @@ export type DefinedScenario = Scenario & {
85
85
  * convention the author has to remember.
86
86
  */
87
87
  export declare function defineScenario(scenario: Scenario): DefinedScenario;
88
+ /**
89
+ * Whether a value has the shape of a scenario, stamped or not.
90
+ *
91
+ * This is what lets a scenario file carry no runtime import of this package:
92
+ * `import type { Scenario } from "screencast-axi"` is erased when the file is
93
+ * compiled, and `export default { ... } satisfies Scenario` is a plain object.
94
+ * The file then loads in a project that has not installed the package at all -
95
+ * which is what `npx` needs, because a runtime import inside the user's file
96
+ * resolves from the user's project, where npx's copy cannot be found.
97
+ *
98
+ * Only ever applied to a module's *default* export. A named export still needs
99
+ * the `defineScenario` stamp, so a helper object that happens to have an `id`
100
+ * and a `run` is never mistaken for a clip.
101
+ */
102
+ export declare function looksLikeScenario(value: unknown): value is Scenario;
88
103
  export declare function isScenario(value: unknown): value is DefinedScenario;
package/dist/src/types.js CHANGED
@@ -10,6 +10,30 @@ export const SCENARIO_MARKER = Symbol.for("screencast-axi.scenario");
10
10
  export function defineScenario(scenario) {
11
11
  return { ...scenario, [SCENARIO_MARKER]: true };
12
12
  }
13
+ /**
14
+ * Whether a value has the shape of a scenario, stamped or not.
15
+ *
16
+ * This is what lets a scenario file carry no runtime import of this package:
17
+ * `import type { Scenario } from "screencast-axi"` is erased when the file is
18
+ * compiled, and `export default { ... } satisfies Scenario` is a plain object.
19
+ * The file then loads in a project that has not installed the package at all -
20
+ * which is what `npx` needs, because a runtime import inside the user's file
21
+ * resolves from the user's project, where npx's copy cannot be found.
22
+ *
23
+ * Only ever applied to a module's *default* export. A named export still needs
24
+ * the `defineScenario` stamp, so a helper object that happens to have an `id`
25
+ * and a `run` is never mistaken for a clip.
26
+ */
27
+ export function looksLikeScenario(value) {
28
+ if (typeof value !== "object" || value === null)
29
+ return false;
30
+ const v = value;
31
+ return (typeof v["id"] === "string" &&
32
+ v["id"].length > 0 &&
33
+ typeof v["title"] === "string" &&
34
+ typeof v["description"] === "string" &&
35
+ typeof v["run"] === "function");
36
+ }
13
37
  export function isScenario(value) {
14
38
  return (typeof value === "object" &&
15
39
  value !== null &&
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAyEA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAIrE;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAiC,CAAC,eAAe,CAAC,KAAK,IAAI,CAC7D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAyEA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAIrE;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ;QAC3B,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAClB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ;QAC9B,OAAO,CAAC,CAAC,aAAa,CAAC,KAAK,QAAQ;QACpC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU,CAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAiC,CAAC,eAAe,CAAC,KAAK,IAAI,CAC7D,CAAC;AACJ,CAAC"}
@@ -7,4 +7,4 @@
7
7
  * package.json by a test - so a drift fails CI rather than shipping a CLI
8
8
  * that misreports its own version.
9
9
  */
10
- export declare const VERSION = "0.1.2";
10
+ export declare const VERSION = "0.1.4";
@@ -7,5 +7,5 @@
7
7
  * package.json by a test - so a drift fails CI rather than shipping a CLI
8
8
  * that misreports its own version.
9
9
  */
10
- export const VERSION = "0.1.2"; // x-release-please-version
10
+ export const VERSION = "0.1.4"; // x-release-please-version
11
11
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "screencast-axi",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "AXI-compliant screencast recorder - script a web workflow, record it with a synthetic cursor and captions, encode to mp4/webm/poster. Requires ffmpeg.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -17,8 +17,7 @@ hand-rolled Playwright video capture or a screen recorder.
17
17
 
18
18
  Use it whenever a task needs a recorded walkthrough of a UI: a landing-page
19
19
  demo, a feature tour, a release-note clip, a bug reproduction. Skip it when a
20
- still screenshot says the same thing - a clip costs far more to produce and to
21
- watch.
20
+ still screenshot says the same thing.
22
21
 
23
22
  ## Current guidance lives in the CLI
24
23
 
@@ -27,26 +26,31 @@ installed copies go stale. Get the current source of truth from the CLI:
27
26
 
28
27
  - `screencast-axi --help` for the command index
29
28
  - `screencast-axi <command> --help` for per-command usage
30
- - `screencast-axi guide` for topic-sized guidance, pulled one topic at a time
31
- rather than read as a manual
29
+ - `screencast-axi guide` for guidance, one topic at a time, not as a manual
32
30
  - `screencast-axi doctor` for whether this machine can record at all
33
31
 
34
- Three things worth knowing before the first run:
32
+ Worth knowing before the first run:
35
33
 
36
34
  1. Iterate with `rehearse`, not `record`: no encoding, so a stale selector
37
- surfaces in seconds, and it prints every action the scenario took.
35
+ surfaces in seconds, it prints every action taken, and a `--duration` take
36
+ afterwards reuses its timing instead of measuring again.
38
37
  2. `--headed` shows it happening in a real window. Offer it when someone
39
38
  wants to see what a script does to their signed-in account before it runs.
40
39
  3. When a selector needs discovering, drive the page live with a browser tool
41
40
  such as `chrome-devtools-axi`, then write the scenario.
42
41
 
43
42
  ffmpeg must be installed. Signing in is a one-time human step
44
- (`auth login --interactive`), and the CLI refuses rather than prompting when
45
- no person is present.
46
-
47
- Install it in the project being recorded, not globally:
48
- `pnpm add -D screencast-axi playwright tsx`, then run it as
49
- `pnpm exec screencast-axi <command>`. A scenario file imports
50
- `screencast-axi` itself, so a copy in an npx cache cannot satisfy that
51
- import - `npx -y screencast-axi` works only for commands that read none of
52
- the project, such as `--help`, `guide` and `doctor`.
43
+ (`auth login --interactive`); the CLI refuses rather than prompting when no
44
+ person is present.
45
+
46
+ No install needed - this works from any project, and `init`/`scaffold` write
47
+ files that load without it:
48
+
49
+ npx -y -p screencast-axi -p playwright -p tsx screencast-axi <command>
50
+
51
+ `setup` downloads the browser once. For regular use,
52
+ `pnpm add -D screencast-axi playwright tsx` shortens it to
53
+ `pnpm exec screencast-axi`.
54
+
55
+ Record by id, or by path when no config lists it - `list`, `show` and
56
+ `check` find it either way.
@@ -1,9 +0,0 @@
1
- import type { AxiStructuredOutput } from "./output.js";
2
- /**
3
- * Session integration.
4
- *
5
- * The AXI convention is a setup command that registers hooks with the agent
6
- * harness, so the tool is ambient rather than something to remember. That is
7
- * not built yet, and saying so beats registering something that does nothing.
8
- */
9
- export declare function installHooks(scope: string | undefined): AxiStructuredOutput;
package/dist/src/hooks.js DELETED
@@ -1,20 +0,0 @@
1
- import { ScreencastError } from "./errors.js";
2
- /**
3
- * Session integration.
4
- *
5
- * The AXI convention is a setup command that registers hooks with the agent
6
- * harness, so the tool is ambient rather than something to remember. That is
7
- * not built yet, and saying so beats registering something that does nothing.
8
- */
9
- export function installHooks(scope) {
10
- if (scope && scope !== "user" && scope !== "project") {
11
- throw new ScreencastError("--scope must be user or project", "VALIDATION_ERROR", [
12
- "Example: --scope project",
13
- ]);
14
- }
15
- throw new ScreencastError("Session hooks are not implemented yet", "NOT_IMPLEMENTED", [
16
- "Install the skill instead: `npx skills add Valzon/screencast-axi --skill screencast-axi -g`",
17
- "The CLI works without either - `npx -y screencast-axi --help`",
18
- ]);
19
- }
20
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACrD,MAAM,IAAI,eAAe,CAAC,iCAAiC,EAAE,kBAAkB,EAAE;YAC/E,0BAA0B;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,eAAe,CAAC,uCAAuC,EAAE,iBAAiB,EAAE;QACpF,6FAA6F;QAC7F,+DAA+D;KAChE,CAAC,CAAC;AACL,CAAC"}