agent-screenplay 0.1.3 → 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.
package/README.md CHANGED
@@ -128,6 +128,8 @@ Use `"app": "<name>"` instead of `"url"`. The steps are played through the opera
128
128
 
129
129
  Desktop recordings need a real screen: they cannot run in a headless container. Websites can.
130
130
 
131
+ While Screenplay drives the computer, a pill at the top of the screen says so ("Screenplay is recording", or "rehearsing" during a check), with a **Stop** button that ends the run at once. The pill is left out of the capture, so it is never in the video. macOS and Windows; `SCREENPLAY_INDICATOR=0` turns it off.
132
+
131
133
  ### The whole screen
132
134
 
133
135
  `"screen": true` films the whole main screen instead of one window, for videos that go from one app to another or use the menu bar. `{ "open": "<app>" }` launches an app or brings it to the front, a step's `"app"` acts in another app, and `"surface": "menubar"` (or `menu`, `sheet`, `popover`, `alert`) finds elements outside the app's window. Everything on screen is filmed, desktop icons and notifications included: tidy the screen first; on macOS `"hideOthers": true` hides the other apps.
@@ -157,6 +159,20 @@ npm test # unit tests
157
159
  npm run test:e2e # records a real scenario in headless Chromium and talks to the MCP server
158
160
  ```
159
161
 
162
+ ### Releasing
163
+
164
+ ```bash
165
+ npm version patch --no-git-tag-version # or minor / major; also updates src/version.ts
166
+ ```
167
+
168
+ Merge that change, then tag the commit on main:
169
+
170
+ ```bash
171
+ git tag v0.1.4 origin/main && git push origin v0.1.4
172
+ ```
173
+
174
+ The tag starts `.github/workflows/release.yml`. It checks that the tag matches the version and is on main, runs the tests, publishes to npm (with provenance) and creates the GitHub release with notes from the merged pull requests. A version like `0.2.0-beta.1` goes to npm's `next` tag. Creating a release in GitHub's UI with a new tag works too.
175
+
160
176
  `examples/demo-app` is a small web app for trying scenarios; `examples/desktop-app/notes.py` is a GTK app for desktop recording on Linux.
161
177
 
162
178
  ## License
@@ -0,0 +1,100 @@
1
+ // The pill that tells the person at the Mac that Screenplay is driving it (and filming).
2
+ // Run with `osascript -l JavaScript macos.js <label> <parent pid> [selftest]`.
3
+ // It is left out of screen captures (NSWindowSharingNone), stays on top on every Space,
4
+ // never takes focus, and survives "Hide others". Stop exits with code 3; the pill also
5
+ // quits by itself when the Screenplay process that started it is gone.
6
+ ObjC.import("Cocoa");
7
+ ObjC.import("stdlib");
8
+ ObjC.import("signal");
9
+
10
+ function run(argv) {
11
+ const text = argv[0] || "Screenplay is recording";
12
+ const parent = Number(argv[1] || 0);
13
+ const selftest = argv[2] === "selftest";
14
+
15
+ const app = $.NSApplication.sharedApplication;
16
+ app.setActivationPolicy($.NSApplicationActivationPolicyAccessory);
17
+ app.finishLaunching;
18
+
19
+ ObjC.registerSubclass({
20
+ name: "SPStopTarget",
21
+ methods: { "stop:": { types: ["void", ["id"]], implementation: () => $.exit(3) } },
22
+ });
23
+ const target = $.SPStopTarget.alloc.init;
24
+
25
+ const rgba = (r, g, b, a) => $.NSColor.colorWithSRGBRedGreenBlueAlpha(r / 255, g / 255, b / 255, a);
26
+ const H = 36;
27
+
28
+ const label = $.NSTextField.labelWithString(text);
29
+ label.font = $.NSFont.systemFontOfSizeWeight(13, 0.23);
30
+ label.textColor = rgba(255, 255, 255, 0.95);
31
+ label.sizeToFit;
32
+ const lw = Math.ceil(label.frame.size.width);
33
+
34
+ const stop = $.NSButton.buttonWithTitleTargetAction("Stop", target, "stop:");
35
+ stop.bezelStyle = $.NSBezelStyleRounded;
36
+ stop.controlSize = $.NSControlSizeSmall;
37
+ stop.font = $.NSFont.systemFontOfSizeWeight(11, 0.3);
38
+ stop.sizeToFit;
39
+ const bw = Math.ceil(stop.frame.size.width);
40
+ const bh = Math.ceil(stop.frame.size.height);
41
+
42
+ const W = 14 + 8 + 9 + lw + 10 + bw + 8;
43
+ const vf = $.NSScreen.mainScreen.visibleFrame;
44
+ const rect = $.NSMakeRect(vf.origin.x + Math.round((vf.size.width - W) / 2), vf.origin.y + vf.size.height - H - 10, W, H);
45
+
46
+ const panel = $.NSPanel.alloc.initWithContentRectStyleMaskBackingDefer(rect, $.NSWindowStyleMaskBorderless | $.NSWindowStyleMaskNonactivatingPanel, $.NSBackingStoreBuffered, false);
47
+ panel.appearance = $.NSAppearance.appearanceNamed($.NSAppearanceNameDarkAqua);
48
+ panel.opaque = false;
49
+ panel.backgroundColor = $.NSColor.clearColor;
50
+ panel.hasShadow = true;
51
+ panel.level = $.NSStatusWindowLevel;
52
+ panel.sharingType = $.NSWindowSharingNone;
53
+ panel.canHide = false;
54
+ panel.hidesOnDeactivate = false;
55
+ panel.movableByWindowBackground = true;
56
+ panel.collectionBehavior =
57
+ $.NSWindowCollectionBehaviorCanJoinAllSpaces | $.NSWindowCollectionBehaviorStationary | $.NSWindowCollectionBehaviorIgnoresCycle | $.NSWindowCollectionBehaviorFullScreenAuxiliary;
58
+
59
+ // NSBox draws rounded fills without Core Animation colors, which JXA cannot pass.
60
+ const box = (frame, fill, radius, border) => {
61
+ const b = $.NSBox.alloc.initWithFrame(frame);
62
+ b.boxType = $.NSBoxCustom;
63
+ b.titlePosition = $.NSNoTitle;
64
+ b.contentViewMargins = $.NSMakeSize(0, 0);
65
+ b.fillColor = fill;
66
+ b.cornerRadius = radius;
67
+ b.borderWidth = border ? 1 : 0;
68
+ b.borderColor = border || $.NSColor.clearColor;
69
+ return b;
70
+ };
71
+ const pill = box($.NSMakeRect(0, 0, W, H), rgba(24, 24, 27, 0.92), H / 2, rgba(255, 255, 255, 0.14));
72
+ const dot = box($.NSMakeRect(14, (H - 8) / 2, 8, 8), rgba(255, 69, 58, 1), 4);
73
+
74
+ label.setFrameOrigin($.NSMakePoint(14 + 8 + 9, Math.round((H - label.frame.size.height) / 2)));
75
+ stop.setFrameOrigin($.NSMakePoint(W - bw - 8, Math.round((H - bh) / 2)));
76
+
77
+ const view = $.NSView.alloc.initWithFrame($.NSMakeRect(0, 0, W, H));
78
+ view.addSubview(pill);
79
+ view.addSubview(dot);
80
+ view.addSubview(label);
81
+ view.addSubview(stop);
82
+ panel.contentView = view;
83
+ panel.orderFrontRegardless;
84
+
85
+ if (selftest) stop.performClick(null);
86
+
87
+ // The dot blinks softly; the loop also handles clicks and watches the parent process.
88
+ let lit = true;
89
+ let next = Date.now();
90
+ for (;;) {
91
+ const ev = app.nextEventMatchingMaskUntilDateInModeDequeue($.NSEventMaskAny, $.NSDate.dateWithTimeIntervalSinceNow(0.25), $.NSDefaultRunLoopMode, true);
92
+ if (ev && !ev.isNil()) app.sendEvent(ev);
93
+ if (Date.now() >= next) {
94
+ lit = !lit;
95
+ dot.animator.alphaValue = lit ? 1 : 0.3;
96
+ next = Date.now() + 800;
97
+ if (parent && $.kill(parent, 0) !== 0) $.exit(0);
98
+ }
99
+ }
100
+ }
@@ -0,0 +1,75 @@
1
+ # The pill that tells the person at the PC that Screenplay is driving it (and filming).
2
+ # Run with: powershell -NoProfile -ExecutionPolicy Bypass -File windows.ps1 <label> <parent pid> [selftest]
3
+ # It is left out of screen captures (WDA_EXCLUDEFROMCAPTURE), stays on top, never takes focus.
4
+ # Stop exits with code 3; the pill also quits when the Screenplay process that started it is gone.
5
+ param([string]$Label = "Screenplay is recording", [int]$ParentPid = 0, [string]$Mode = "")
6
+
7
+ Add-Type -ReferencedAssemblies System.Windows.Forms, System.Drawing -TypeDefinition @"
8
+ using System;
9
+ using System.Diagnostics;
10
+ using System.Drawing;
11
+ using System.Drawing.Drawing2D;
12
+ using System.Runtime.InteropServices;
13
+ using System.Windows.Forms;
14
+
15
+ public class ScreenplayPill : Form {
16
+ [DllImport("user32.dll")] static extern bool SetWindowDisplayAffinity(IntPtr hWnd, uint affinity);
17
+ const int WS_EX_TOPMOST = 0x8, WS_EX_TOOLWINDOW = 0x80, WS_EX_NOACTIVATE = 0x8000000;
18
+ readonly int parent;
19
+ bool lit = true;
20
+ readonly Panel dot;
21
+ public readonly Button StopButton;
22
+
23
+ public ScreenplayPill(string text, int parentPid) {
24
+ parent = parentPid;
25
+ FormBorderStyle = FormBorderStyle.None;
26
+ ShowInTaskbar = false;
27
+ TopMost = true;
28
+ StartPosition = FormStartPosition.Manual;
29
+ BackColor = Color.FromArgb(24, 24, 27);
30
+ Font = new Font("Segoe UI Semibold", 9.75f);
31
+ int h = 36;
32
+
33
+ dot = new Panel { BackColor = Color.FromArgb(255, 69, 58), Size = new Size(8, 8), Location = new Point(14, (h - 8) / 2) };
34
+ var dp = new GraphicsPath(); dp.AddEllipse(0, 0, 8, 8); dot.Region = new Region(dp);
35
+
36
+ var label = new Label { Text = text, ForeColor = Color.White, AutoSize = true, BackColor = Color.Transparent };
37
+ label.Location = new Point(31, (h - label.PreferredHeight) / 2);
38
+
39
+ StopButton = new Button { Text = "Stop", FlatStyle = FlatStyle.Flat, ForeColor = Color.White, BackColor = Color.FromArgb(60, 60, 66), Size = new Size(52, 24), TabStop = false };
40
+ StopButton.FlatAppearance.BorderSize = 0;
41
+ StopButton.Click += (s, e) => Environment.Exit(3);
42
+
43
+ int w = 31 + label.PreferredWidth + 10 + 52 + 8;
44
+ Size = new Size(w, h);
45
+ StopButton.Location = new Point(w - 52 - 8, (h - 24) / 2);
46
+ var area = Screen.PrimaryScreen.WorkingArea;
47
+ Location = new Point(area.X + (area.Width - w) / 2, area.Y + 10);
48
+ var path = new GraphicsPath();
49
+ path.AddArc(0, 0, h, h, 90, 180); path.AddArc(w - h, 0, h, h, 270, 180); path.CloseFigure();
50
+ Region = new Region(path);
51
+ Controls.Add(dot); Controls.Add(label); Controls.Add(StopButton);
52
+
53
+ var timer = new Timer { Interval = 800 };
54
+ timer.Tick += (s, e) => {
55
+ lit = !lit;
56
+ dot.BackColor = lit ? Color.FromArgb(255, 69, 58) : Color.FromArgb(110, 40, 38);
57
+ if (parent > 0) { try { Process.GetProcessById(parent); } catch (ArgumentException) { Environment.Exit(0); } }
58
+ };
59
+ timer.Start();
60
+ }
61
+
62
+ protected override bool ShowWithoutActivation { get { return true; } }
63
+ protected override CreateParams CreateParams {
64
+ get { var cp = base.CreateParams; cp.ExStyle |= WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE; return cp; }
65
+ }
66
+ protected override void OnHandleCreated(EventArgs e) {
67
+ base.OnHandleCreated(e);
68
+ SetWindowDisplayAffinity(Handle, 0x11); // WDA_EXCLUDEFROMCAPTURE (Windows 10 2004+)
69
+ }
70
+ }
71
+ "@
72
+
73
+ $pill = New-Object ScreenplayPill($Label, $ParentPid)
74
+ if ($Mode -eq "selftest") { $pill.add_Shown({ $pill.StopButton.PerformClick() }) }
75
+ [System.Windows.Forms.Application]::Run($pill)
@@ -21,14 +21,36 @@ interface Envelope<T = any> {
21
21
  details?: unknown;
22
22
  };
23
23
  }
24
+ /** The error a run ends with when the person presses Stop on the pill. */
25
+ export declare class StoppedError extends Error {
26
+ constructor();
27
+ }
28
+ /**
29
+ * Stop for one run: `pause` is a sleep that Stop ends at once (its timer cleared, so nothing keeps
30
+ * the process alive), `signal` rejects with StoppedError on Stop, `check` throws once stopped.
31
+ */
32
+ export declare function createStopper(): {
33
+ readonly stopped: boolean;
34
+ signal: Promise<never>;
35
+ stop(): void;
36
+ check(): void;
37
+ pause(seconds: number): Promise<void>;
38
+ };
24
39
  export declare class AgentDesktop {
25
40
  private bin;
26
41
  private session?;
42
+ private stopped;
43
+ private abort;
27
44
  constructor();
28
45
  static locate(): string;
46
+ /** After Stop, every call fails at once and calls in flight are killed; only ending the session still runs. */
47
+ stop(): void;
29
48
  call<T = any>(args: string[], opts?: {
30
49
  allowFail?: boolean;
31
50
  }): Promise<Envelope<T>>;
51
+ invoke<T = any>(args: string[], opts?: {
52
+ allowFail?: boolean;
53
+ }, signal?: AbortSignal): Promise<Envelope<T>>;
32
54
  startSession(): Promise<void>;
33
55
  endSession(): Promise<void>;
34
56
  }
@@ -7,12 +7,63 @@ import { describeStep, stepKind } from "../scenario/schema.js";
7
7
  import { parseTarget } from "../scenario/target.js";
8
8
  import { captureFfmpegPath } from "../ffmpeg.js";
9
9
  import { cardDuration, travelDuration, typingDelays } from "./pace.js";
10
+ import { showIndicator } from "./indicator.js";
10
11
  import { StepError, sleep } from "./web.js";
11
12
  const run = promisify(execFile);
12
13
  const require = createRequire(import.meta.url);
14
+ /** The error a run ends with when the person presses Stop on the pill. */
15
+ export class StoppedError extends Error {
16
+ constructor() {
17
+ super("Stopped: the person at the computer pressed Stop on the Screenplay pill. Nothing was recorded.");
18
+ }
19
+ }
20
+ /**
21
+ * Stop for one run: `pause` is a sleep that Stop ends at once (its timer cleared, so nothing keeps
22
+ * the process alive), `signal` rejects with StoppedError on Stop, `check` throws once stopped.
23
+ */
24
+ export function createStopper() {
25
+ let stopped = false;
26
+ const pending = new Set();
27
+ let reject;
28
+ const signal = new Promise((_, r) => (reject = r));
29
+ signal.catch(() => { });
30
+ return {
31
+ get stopped() {
32
+ return stopped;
33
+ },
34
+ signal,
35
+ stop() {
36
+ if (stopped)
37
+ return;
38
+ stopped = true;
39
+ for (const done of [...pending])
40
+ done();
41
+ reject(new StoppedError());
42
+ },
43
+ check() {
44
+ if (stopped)
45
+ throw new StoppedError();
46
+ },
47
+ pause(seconds) {
48
+ if (stopped || seconds <= 0)
49
+ return Promise.resolve();
50
+ return new Promise((resolve) => {
51
+ const done = () => {
52
+ clearTimeout(timer);
53
+ pending.delete(done);
54
+ resolve();
55
+ };
56
+ const timer = setTimeout(done, seconds * 1000);
57
+ pending.add(done);
58
+ });
59
+ },
60
+ };
61
+ }
13
62
  export class AgentDesktop {
14
63
  bin;
15
64
  session;
65
+ stopped = false;
66
+ abort = new AbortController();
16
67
  constructor() {
17
68
  this.bin = AgentDesktop.locate();
18
69
  }
@@ -35,14 +86,35 @@ export class AgentDesktop {
35
86
  return probe.stdout.split(/\r?\n/)[0].trim();
36
87
  throw new Error("Desktop recording needs agent-desktop: run `npm install -g agent-desktop` (https://github.com/vercel-labs/agent-desktop).");
37
88
  }
89
+ /** After Stop, every call fails at once and calls in flight are killed; only ending the session still runs. */
90
+ stop() {
91
+ this.stopped = true;
92
+ this.abort.abort();
93
+ }
38
94
  async call(args, opts = {}) {
95
+ const guarded = args[0] !== "session";
96
+ if (guarded && this.stopped)
97
+ throw new StoppedError();
98
+ try {
99
+ const r = await this.invoke(args, opts, guarded ? this.abort.signal : undefined);
100
+ if (guarded && this.stopped)
101
+ throw new StoppedError();
102
+ return r;
103
+ }
104
+ catch (e) {
105
+ if (guarded && this.stopped)
106
+ throw new StoppedError();
107
+ throw e;
108
+ }
109
+ }
110
+ async invoke(args, opts = {}, signal) {
39
111
  const env = { ...process.env, ...(this.session ? { AGENT_DESKTOP_SESSION: this.session } : {}) };
40
112
  const isJs = this.bin.endsWith(".js");
41
113
  const cmd = isJs ? process.execPath : this.bin;
42
114
  const argv = isJs ? [this.bin, ...args] : args;
43
115
  let stdout = "";
44
116
  try {
45
- const r = await run(cmd, argv, { env, maxBuffer: 32 * 1024 * 1024 });
117
+ const r = await run(cmd, argv, { env, maxBuffer: 32 * 1024 * 1024, signal });
46
118
  stdout = r.stdout;
47
119
  }
48
120
  catch (e) {
@@ -393,25 +465,39 @@ async function play(loaded, opts) {
393
465
  }
394
466
  const t0 = Date.now() / 1000;
395
467
  const now = () => Date.now() / 1000 - t0;
396
- const sleepIf = (s) => (record && s > 0 ? sleep(s * 1000) : Promise.resolve());
468
+ // Stop on the pill ends the run at once: no further input reaches the computer (agent-desktop
469
+ // refuses every call and kills those in flight), waits end, and the step under way is abandoned.
470
+ const stopper = createStopper();
471
+ const stopIfAsked = () => stopper.check();
472
+ const sleepIf = async (s) => {
473
+ if (record)
474
+ await stopper.pause(s);
475
+ stopIfAsked();
476
+ };
397
477
  let recorder;
478
+ let pill;
398
479
  const checks = [];
399
480
  try {
400
481
  await ds.open(opts.log, { hideOthers: scenario.hideOthers });
401
482
  if (ds.screen && record)
402
483
  opts.log("Filming the whole screen: notifications and every visible window will be in the video.");
484
+ pill = showIndicator(record ? "Screenplay is recording" : "Screenplay is rehearsing", () => {
485
+ ds.ad.stop();
486
+ stopper.stop();
487
+ });
403
488
  const W = ds.frame.width;
404
489
  const H = ds.frame.height;
405
490
  if (record) {
406
491
  recorder = new Recorder(path.join(takeDir, "capture.mp4"));
407
492
  await recorder.start(ds.frame, ds.scale, t0);
408
- await sleep(600);
493
+ await sleepIf(0.6);
409
494
  }
410
495
  let cursor = { x: W * 0.62, y: H * 0.7 };
411
496
  const cursorStart = { ...cursor };
412
497
  let lastField;
413
498
  const steps = [];
414
499
  for (let i = 0; i < scenario.steps.length; i++) {
500
+ stopIfAsked();
415
501
  const step = scenario.steps[i];
416
502
  const kind = stepKind(step);
417
503
  const label = describeStep(step);
@@ -451,154 +537,161 @@ async function play(loaded, opts) {
451
537
  ts.waits.push([w0, now()]);
452
538
  lastField = undefined; // the focused field belonged to the previous app
453
539
  }
454
- switch (kind) {
455
- case "title":
456
- case "end":
457
- ts.card = {
458
- kind,
459
- title: step[kind],
460
- subtitle: step.subtitle,
461
- duration: Math.max(step.duration ?? cardDuration(step[kind], step.subtitle), minDuration),
462
- };
463
- break;
464
- case "goto":
465
- throw new StepError(i, label, "goto works on websites only; desktop scenarios start with the app already open.");
466
- case "open": {
467
- if (!ds.screen)
468
- throw new StepError(i, label, 'open needs "screen": true: a window recording films one app.');
469
- const w0 = now();
470
- await ds.activate(step.open, opts.log);
471
- lastField = undefined; // the focused field belonged to the previous app
472
- await sleepIf(0.6); // let the window come to the front
473
- ts.waits.push([w0, now()]);
474
- break;
475
- }
476
- case "click":
477
- case "select": {
478
- const r = await resolve(step[kind]);
479
- await travelTo(r.box);
480
- ts.actionAt = now();
481
- if (kind === "select") {
482
- if (!r.ref)
483
- throw new StepError(i, label, "select needs an element.");
484
- await ds.ad.call(["select", r.ref, step.option]);
485
- }
486
- else
487
- await ds.clickAt(r, { double: step.double, right: step.button === "right" });
488
- if (r.ref && parseTarget(step[kind]).kind !== "at")
489
- lastField = r.ref;
490
- break;
491
- }
492
- case "hover": {
493
- // Hover moves the real pointer (menus and tooltips need it); it is not filmed, the drawn cursor is.
494
- const r = await resolve(step.hover);
495
- await travelTo(r.box);
496
- ts.actionAt = now();
497
- if (r.ref)
498
- await ds.ad.call(["--headed", "hover", r.ref]);
499
- else {
500
- const x = Math.round(ds.frame.x + r.box.x + r.box.width / 2);
501
- const y = Math.round(ds.frame.y + r.box.y + r.box.height / 2);
502
- await ds.ad.call(["--headed", "mouse-move", "--xy", `${x},${y}`]);
540
+ // The step races Stop, so a run stopped mid-step (a click being resolved, a long wait) ends now.
541
+ const body = (async () => {
542
+ switch (kind) {
543
+ case "title":
544
+ case "end":
545
+ ts.card = {
546
+ kind,
547
+ title: step[kind],
548
+ subtitle: step.subtitle,
549
+ duration: Math.max(step.duration ?? cardDuration(step[kind], step.subtitle), minDuration),
550
+ };
551
+ break;
552
+ case "goto":
553
+ throw new StepError(i, label, "goto works on websites only; desktop scenarios start with the app already open.");
554
+ case "open": {
555
+ if (!ds.screen)
556
+ throw new StepError(i, label, 'open needs "screen": true: a window recording films one app.');
557
+ const w0 = now();
558
+ await ds.activate(step.open, opts.log);
559
+ lastField = undefined; // the focused field belonged to the previous app
560
+ await sleepIf(0.6); // let the window come to the front
561
+ ts.waits.push([w0, now()]);
562
+ break;
503
563
  }
504
- break;
505
- }
506
- case "type": {
507
- let ref = lastField;
508
- if (step.into) {
509
- const r = await resolve(step.into);
564
+ case "click":
565
+ case "select": {
566
+ const r = await resolve(step[kind]);
510
567
  await travelTo(r.box);
511
568
  ts.actionAt = now();
512
- await ds.clickAt(r);
513
- ref = r.ref;
514
- lastField = r.ref;
515
- if (step.clear && ref)
516
- await ds.ad.call(["clear", ref], { allowFail: true });
517
- await sleepIf(0.15);
569
+ if (kind === "select") {
570
+ if (!r.ref)
571
+ throw new StepError(i, label, "select needs an element.");
572
+ await ds.ad.call(["select", r.ref, step.option]);
573
+ }
574
+ else
575
+ await ds.clickAt(r, { double: step.double, right: step.button === "right" });
576
+ if (r.ref && parseTarget(step[kind]).kind !== "at")
577
+ lastField = r.ref;
578
+ break;
518
579
  }
519
- else
580
+ case "hover": {
581
+ // Hover moves the real pointer (menus and tooltips need it); it is not filmed, the drawn cursor is.
582
+ const r = await resolve(step.hover);
583
+ await travelTo(r.box);
520
584
  ts.actionAt = now();
521
- const text = step.type;
522
- ts.typed = step.secret ? "•".repeat(text.length) : text;
523
- const delays = typingDelays(text, scenario.typingSpeed ?? 1, i + 1);
524
- if (!record) {
525
- if (ref)
526
- await ds.ad.call(["type", ref, text]);
527
- else
528
- for (const ch of text)
529
- await ds.press(ch === " " ? "space" : ch, where);
585
+ if (r.ref)
586
+ await ds.ad.call(["--headed", "hover", r.ref]);
587
+ else {
588
+ const x = Math.round(ds.frame.x + r.box.x + r.box.width / 2);
589
+ const y = Math.round(ds.frame.y + r.box.y + r.box.height / 2);
590
+ await ds.ad.call(["--headed", "mouse-move", "--xy", `${x},${y}`]);
591
+ }
592
+ break;
530
593
  }
531
- else {
532
- // Type in small chunks so the text appears progressively, like a person typing.
533
- for (let k = 0; k < text.length; k++) {
534
- const ch = text[k];
535
- const t1 = Date.now();
594
+ case "type": {
595
+ let ref = lastField;
596
+ if (step.into) {
597
+ const r = await resolve(step.into);
598
+ await travelTo(r.box);
599
+ ts.actionAt = now();
600
+ await ds.clickAt(r);
601
+ ref = r.ref;
602
+ lastField = r.ref;
603
+ if (step.clear && ref)
604
+ await ds.ad.call(["clear", ref], { allowFail: true });
605
+ await sleepIf(0.15);
606
+ }
607
+ else
608
+ ts.actionAt = now();
609
+ const text = step.type;
610
+ ts.typed = step.secret ? "•".repeat(text.length) : text;
611
+ const delays = typingDelays(text, scenario.typingSpeed ?? 1, i + 1);
612
+ if (!record) {
536
613
  if (ref)
537
- await ds.ad.call(["type", ref, ch]);
614
+ await ds.ad.call(["type", ref, text]);
538
615
  else
539
- await ds.press(ch === " " ? "space" : ch, where);
540
- const spent = (Date.now() - t1) / 1000;
541
- await sleep(Math.max(0, delays[k] - spent) * 1000);
616
+ for (const ch of text)
617
+ await ds.press(ch === " " ? "space" : ch, where);
542
618
  }
619
+ else {
620
+ // Type in small chunks so the text appears progressively, like a person typing.
621
+ for (let k = 0; k < text.length; k++) {
622
+ stopIfAsked();
623
+ const ch = text[k];
624
+ const t1 = Date.now();
625
+ if (ref)
626
+ await ds.ad.call(["type", ref, ch]);
627
+ else
628
+ await ds.press(ch === " " ? "space" : ch, where);
629
+ const spent = (Date.now() - t1) / 1000;
630
+ await sleepIf(Math.max(0, delays[k] - spent));
631
+ }
632
+ }
633
+ ts.actionEnd = now();
634
+ if (step.submit) {
635
+ await sleepIf(0.25);
636
+ await ds.press("return", where);
637
+ }
638
+ break;
543
639
  }
544
- ts.actionEnd = now();
545
- if (step.submit) {
546
- await sleepIf(0.25);
547
- await ds.press("return", where);
548
- }
549
- break;
550
- }
551
- case "press":
552
- ts.actionAt = now();
553
- await ds.press(step.press, where);
554
- break;
555
- case "scroll": {
556
- const v = step.scroll;
557
- const s0 = now();
558
- if (["down", "up"].includes(v)) {
559
- const r = await ds.ad.call(["find", ...(await ds.scope(where)), "--role", "scrollarea", "--first"], { allowFail: true });
560
- const ref = r.data?.match?.ref_id;
561
- if (!ref)
562
- throw new StepError(i, label, "no scrollable area found in the app.");
563
- await ds.ad.call(["scroll", ref, "--direction", v, "--amount", "5"]);
640
+ case "press":
641
+ ts.actionAt = now();
642
+ await ds.press(step.press, where);
643
+ break;
644
+ case "scroll": {
645
+ const v = step.scroll;
646
+ const s0 = now();
647
+ if (["down", "up"].includes(v)) {
648
+ const r = await ds.ad.call(["find", ...(await ds.scope(where)), "--role", "scrollarea", "--first"], { allowFail: true });
649
+ const ref = r.data?.match?.ref_id;
650
+ if (!ref)
651
+ throw new StepError(i, label, "no scrollable area found in the app.");
652
+ await ds.ad.call(["scroll", ref, "--direction", v, "--amount", "5"]);
653
+ }
654
+ else if (["top", "bottom"].includes(v)) {
655
+ await ds.press(v === "top" ? "home" : "end", where);
656
+ }
657
+ else {
658
+ const r = await resolve(v);
659
+ if (r.ref)
660
+ await ds.ad.call(["scroll-to", r.ref], { allowFail: true });
661
+ }
662
+ await sleepIf(0.5);
663
+ (ts.scrolls ??= []).push([s0, now()]);
664
+ break;
564
665
  }
565
- else if (["top", "bottom"].includes(v)) {
566
- await ds.press(v === "top" ? "home" : "end", where);
666
+ case "wait": {
667
+ const w0 = now();
668
+ if (typeof step.wait === "number")
669
+ await sleepIf(step.wait);
670
+ else
671
+ await ds.resolve(step.wait, where, (step.timeout ?? 30) * 1000);
672
+ ts.waits.push([w0, now()]);
673
+ break;
567
674
  }
568
- else {
569
- const r = await resolve(v);
570
- if (r.ref)
571
- await ds.ad.call(["scroll-to", r.ref], { allowFail: true });
675
+ case "pause":
676
+ await sleepIf(step.pause);
677
+ break;
678
+ case "callout":
679
+ case "highlight":
680
+ case "zoomTo": {
681
+ const r = await resolve(step[kind]);
682
+ ts.box = r.box;
683
+ ts.actionAt = now();
684
+ const d = Math.max(step.duration ?? (kind === "zoomTo" ? 2 : 3), minDuration);
685
+ await sleepIf(d + (kind === "zoomTo" ? 0 : 0.55));
686
+ break;
572
687
  }
573
- await sleepIf(0.5);
574
- (ts.scrolls ??= []).push([s0, now()]);
575
- break;
576
- }
577
- case "wait": {
578
- const w0 = now();
579
- if (typeof step.wait === "number")
580
- await sleepIf(step.wait);
581
- else
582
- await ds.resolve(step.wait, where, (step.timeout ?? 30) * 1000);
583
- ts.waits.push([w0, now()]);
584
- break;
585
688
  }
586
- case "pause":
587
- await sleepIf(step.pause);
588
- break;
589
- case "callout":
590
- case "highlight":
591
- case "zoomTo": {
592
- const r = await resolve(step[kind]);
593
- ts.box = r.box;
594
- ts.actionAt = now();
595
- const d = Math.max(step.duration ?? (kind === "zoomTo" ? 2 : 3), minDuration);
596
- await sleepIf(d + (kind === "zoomTo" ? 0 : 0.55));
597
- break;
598
- }
599
- }
689
+ })();
690
+ body.catch(() => { });
691
+ await Promise.race([body, stopper.signal]);
600
692
  }
601
693
  catch (e) {
694
+ stopIfAsked();
602
695
  const err = e instanceof StepError ? e : new StepError(i, label, e.message);
603
696
  if (!record) {
604
697
  checks.push({ index: i, step: label, ok: false, error: err.message, candidates: err.candidates });
@@ -619,9 +712,10 @@ async function play(loaded, opts) {
619
712
  steps.push(ts);
620
713
  checks.push({ index: i, step: label, ok: true });
621
714
  }
715
+ stopIfAsked();
622
716
  if (!record)
623
717
  return { check: { ok: true, steps: checks } };
624
- await sleep(1000);
718
+ await sleepIf(1);
625
719
  const duration = now();
626
720
  const rec = recorder;
627
721
  await rec.stop();
@@ -643,6 +737,7 @@ async function play(loaded, opts) {
643
737
  return { take };
644
738
  }
645
739
  finally {
740
+ pill?.close();
646
741
  await recorder?.stop().catch(() => { });
647
742
  await ds.ad.endSession();
648
743
  }
@@ -1 +1 @@
1
- {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../src/drivers/desktop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../src/drivers/desktop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The pill shown at the top of the screen while Screenplay drives the computer: it says that
3
+ * Screenplay is recording (or rehearsing, during a check) and has a Stop button. It is left
4
+ * out of the capture, so it never appears in the video. macOS and Windows; Linux shows none.
5
+ * SCREENPLAY_INDICATOR=0 turns it off.
6
+ */
7
+ export interface Indicator {
8
+ close(): void;
9
+ }
10
+ /** The exit code of the pill's Stop button. */
11
+ export declare const STOP_CODE = 3;
12
+ export declare function indicatorCommand(label: string, platform?: NodeJS.Platform): [string, string[]] | undefined;
13
+ /** Shows the pill; `onStop` runs when the person presses Stop. Never throws: a recording goes on without it. */
14
+ export declare function showIndicator(label: string, onStop: () => void): Indicator;
@@ -0,0 +1,39 @@
1
+ import { spawn } from "node:child_process";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const ASSETS = path.join(path.dirname(fileURLToPath(import.meta.url)), "..", "..", "assets", "indicator");
5
+ /** The exit code of the pill's Stop button. */
6
+ export const STOP_CODE = 3;
7
+ export function indicatorCommand(label, platform = process.platform) {
8
+ if (platform === "darwin")
9
+ return ["osascript", ["-l", "JavaScript", path.join(ASSETS, "macos.js"), label, String(process.pid)]];
10
+ if (platform === "win32")
11
+ return ["powershell.exe", ["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-File", path.join(ASSETS, "windows.ps1"), label, String(process.pid)]];
12
+ return undefined;
13
+ }
14
+ /** Shows the pill; `onStop` runs when the person presses Stop. Never throws: a recording goes on without it. */
15
+ export function showIndicator(label, onStop) {
16
+ const cmd = process.env.SCREENPLAY_INDICATOR === "0" ? undefined : indicatorCommand(label);
17
+ if (!cmd)
18
+ return { close() { } };
19
+ let child;
20
+ try {
21
+ child = spawn(cmd[0], cmd[1], { stdio: "ignore", windowsHide: true });
22
+ child.on("error", () => { });
23
+ child.on("exit", (code) => {
24
+ child = undefined;
25
+ if (code === STOP_CODE)
26
+ onStop();
27
+ });
28
+ }
29
+ catch {
30
+ child = undefined;
31
+ }
32
+ return {
33
+ close() {
34
+ child?.kill();
35
+ child = undefined;
36
+ },
37
+ };
38
+ }
39
+ //# sourceMappingURL=indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indicator.js","sourceRoot":"","sources":["../../src/drivers/indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAYzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC1G,+CAA+C;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAE3B,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ;IACzE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjI,IAAI,QAAQ,KAAK,OAAO;QACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpK,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gHAAgH;AAChH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,MAAkB;IAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3F,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,KAAK,KAAI,CAAC,EAAE,CAAC;IAChC,IAAI,KAA+B,CAAC;IACpC,IAAI,CAAC;QACH,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,KAAK,GAAG,SAAS,CAAC;YAClB,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IACD,OAAO;QACL,KAAK;YACH,KAAK,EAAE,IAAI,EAAE,CAAC;YACd,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.1.3";
1
+ export declare const VERSION = "0.1.4";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.1.3";
1
+ export const VERSION = "0.1.4";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-screenplay",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Screen Studio-quality screen recordings for AI agents: write a scenario, Screenplay films it and edits it (smooth cursor, auto-zoom, callouts, voice-over).",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -46,6 +46,7 @@
46
46
  "typecheck": "tsc -p tsconfig.json --noEmit",
47
47
  "test": "vitest run",
48
48
  "prepublishOnly": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && npm run build",
49
+ "version": "node scripts/sync-version.mjs && git add src/version.ts",
49
50
  "test:e2e": "vitest run --config vitest.e2e.config.ts"
50
51
  },
51
52
  "dependencies": {
@@ -51,6 +51,8 @@ Tools: the MCP tools `screenplay_check`, `screenplay_record`, `screenplay_render
51
51
 
52
52
  Everything on screen is filmed: notifications, other windows, desktop icons and widgets. Before recording, close what should not be seen, turn on Do Not Disturb, and set `"hideOthers": true` (macOS) to hide the other apps. Some windows (menu bar apps' panels) ignore Hide Others: close them. Prefer a window recording when the video stays in one app.
53
53
 
54
+ During a desktop check or recording, a pill at the top of the screen (not in the video) tells the person Screenplay is at the controls, with a Stop button. If a run fails with "Stopped: the person at the computer pressed Stop", do not run it again on your own: ask the person when to go on.
55
+
54
56
  ```json
55
57
  {
56
58
  "screen": true,