tapline-host 1.3.0 → 1.3.1

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/mcp.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { join } from "node:path";
4
- import { configDir, hostUrl, reachableHost, resolveConfig, screenshotMode, viewerMode, } from "./config.js";
4
+ import { configDir, hostUrl, markPaired, pairedBefore, reachableHost, resolveConfig, screenshotMode, viewerMode, } from "./config.js";
5
5
  import { spawn } from "node:child_process";
6
6
  import { randomBytes } from "node:crypto";
7
7
  import { ControlQueue } from "./control.js";
@@ -11,161 +11,194 @@ import { VIEWER_ACCEPTS, ViewerHub, viewerStatusForHost } from "./viewer.js";
11
11
  import { VIEWER_HTML } from "./viewer-page.js";
12
12
  import { TaplineHost } from "./server.js";
13
13
  import { INSTRUCTIONS, toolDescription } from "./tool-text.js";
14
- import { TaplineTools, toolShapes } from "./tools.js";
14
+ import { z } from "zod";
15
+ import { TaplineTools, toolShapes, unknownArgumentError } from "./tools.js";
16
+ /**
17
+ * A tool's input for the MCP server: its own keys, with unknown ones let through (the SDK would strip them
18
+ * silently) so `guarded` can refuse them. The published JSON schema is cleaned of the resulting
19
+ * `additionalProperties` in `createMcpServer`.
20
+ */
21
+ function looseInput(name) {
22
+ return z.object(toolShapes[name]).passthrough();
23
+ }
24
+ /** Runs a tool's handler only when every argument is one the tool has; else answers bad_params. */
25
+ function guarded(name, handler) {
26
+ return (args) => unknownArgumentError(name, args) ?? handler(args);
27
+ }
28
+ /**
29
+ * Drops `additionalProperties` from the tool list: it only came from letting unknown keys through to `guarded`.
30
+ * Reaches the SDK's own list handler by its method name; when the SDK changes that, the schema simply keeps it.
31
+ */
32
+ function publishPlainSchemas(server) {
33
+ const handlers = Reflect.get(server.server, "_requestHandlers");
34
+ const original = handlers instanceof Map ? handlers.get("tools/list") : undefined;
35
+ if (!(handlers instanceof Map) || typeof original !== "function") {
36
+ process.stderr.write("tapline: the MCP SDK changed; tool schemas keep additionalProperties (harmless, but strict clients may refuse it)\n");
37
+ return;
38
+ }
39
+ const list = original;
40
+ handlers.set("tools/list", async (request, extra) => {
41
+ const answer = await list(request, extra);
42
+ for (const tool of answer.tools)
43
+ delete tool.inputSchema["additionalProperties"];
44
+ return answer;
45
+ });
46
+ }
15
47
  /** Registers every Tapline tool on an MCP server. */
16
48
  export function createMcpServer(tools) {
17
- const server = new McpServer({ name: "tapline", version: "1.3.0" }, { instructions: INSTRUCTIONS });
49
+ const server = new McpServer({ name: "tapline", version: "1.3.1" }, { instructions: INSTRUCTIONS });
18
50
  server.registerTool("apps", {
19
51
  title: "Connected apps",
20
52
  description: toolDescription("apps"),
21
- inputSchema: toolShapes.apps,
53
+ inputSchema: looseInput("apps"),
22
54
  annotations: { readOnlyHint: true },
23
- }, () => tools.apps());
55
+ }, guarded("apps", () => tools.apps()));
24
56
  server.registerTool("open_app", {
25
57
  title: "Open app",
26
58
  description: toolDescription("open_app"),
27
- inputSchema: toolShapes.open_app,
28
- }, (args) => tools.openApp(args));
59
+ inputSchema: looseInput("open_app"),
60
+ }, guarded("open_app", (args) => tools.openApp(args)));
29
61
  server.registerTool("pair", {
30
62
  title: "Pair a phone",
31
63
  description: toolDescription("pair"),
32
- inputSchema: toolShapes.pair,
33
- }, (args) => tools.pair(args));
64
+ inputSchema: looseInput("pair"),
65
+ }, guarded("pair", (args) => tools.pair(args)));
34
66
  server.registerTool("look", {
35
67
  title: "Look at the screen",
36
68
  description: toolDescription("look"),
37
- inputSchema: toolShapes.look,
69
+ inputSchema: looseInput("look"),
38
70
  annotations: { readOnlyHint: true },
39
- }, (args) => tools.look(args));
71
+ }, guarded("look", (args) => tools.look(args)));
40
72
  server.registerTool("check_layout", {
41
73
  title: "Check the layout",
42
74
  description: toolDescription("check_layout"),
43
- inputSchema: toolShapes.check_layout,
75
+ inputSchema: looseInput("check_layout"),
44
76
  annotations: { readOnlyHint: true },
45
- }, (args) => tools.checkLayout(args));
77
+ }, guarded("check_layout", (args) => tools.checkLayout(args)));
46
78
  server.registerTool("run", {
47
79
  title: "Run several steps",
48
80
  description: toolDescription("run"),
49
- inputSchema: toolShapes.run,
50
- }, (args) => tools.run(args));
81
+ inputSchema: looseInput("run"),
82
+ }, guarded("run", (args) => tools.run(args)));
51
83
  server.registerTool("audit", {
52
84
  title: "Audit the screen's accessibility",
53
85
  description: toolDescription("audit"),
54
- inputSchema: toolShapes.audit,
86
+ inputSchema: looseInput("audit"),
55
87
  annotations: { readOnlyHint: true },
56
- }, (args) => tools.audit(args));
88
+ }, guarded("audit", (args) => tools.audit(args)));
57
89
  server.registerTool("inspect", {
58
90
  title: "Find the code behind an element",
59
91
  description: toolDescription("inspect"),
60
- inputSchema: toolShapes.inspect,
92
+ inputSchema: looseInput("inspect"),
61
93
  annotations: { readOnlyHint: true },
62
- }, (args) => tools.inspect(args));
94
+ }, guarded("inspect", (args) => tools.inspect(args)));
63
95
  server.registerTool("tap", {
64
96
  title: "Tap",
65
97
  description: toolDescription("tap"),
66
- inputSchema: toolShapes.tap,
67
- }, (args) => tools.tap(args));
98
+ inputSchema: looseInput("tap"),
99
+ }, guarded("tap", (args) => tools.tap(args)));
68
100
  server.registerTool("swipe", {
69
101
  title: "Swipe",
70
102
  description: toolDescription("swipe"),
71
- inputSchema: toolShapes.swipe,
72
- }, (args) => tools.swipe(args));
103
+ inputSchema: looseInput("swipe"),
104
+ }, guarded("swipe", (args) => tools.swipe(args)));
73
105
  server.registerTool("long_press", {
74
106
  title: "Long press",
75
107
  description: toolDescription("long_press"),
76
- inputSchema: toolShapes.long_press,
77
- }, (args) => tools.longPress(args));
108
+ inputSchema: looseInput("long_press"),
109
+ }, guarded("long_press", (args) => tools.longPress(args)));
78
110
  server.registerTool("type_text", {
79
111
  title: "Type text",
80
112
  description: toolDescription("type_text"),
81
- inputSchema: toolShapes.type_text,
82
- }, (args) => tools.typeText(args));
113
+ inputSchema: looseInput("type_text"),
114
+ }, guarded("type_text", (args) => tools.typeText(args)));
83
115
  server.registerTool("scroll", {
84
116
  title: "Scroll",
85
117
  description: toolDescription("scroll"),
86
- inputSchema: toolShapes.scroll,
87
- }, (args) => tools.scroll(args));
118
+ inputSchema: looseInput("scroll"),
119
+ }, guarded("scroll", (args) => tools.scroll(args)));
88
120
  server.registerTool("toggle", {
89
121
  title: "Toggle",
90
122
  description: toolDescription("toggle"),
91
- inputSchema: toolShapes.toggle,
92
- }, (args) => tools.toggle(args));
123
+ inputSchema: looseInput("toggle"),
124
+ }, guarded("toggle", (args) => tools.toggle(args)));
93
125
  server.registerTool("open_url", {
94
126
  title: "Open URL",
95
127
  description: toolDescription("open_url"),
96
- inputSchema: toolShapes.open_url,
97
- }, (args) => tools.openUrl(args));
128
+ inputSchema: looseInput("open_url"),
129
+ }, guarded("open_url", (args) => tools.openUrl(args)));
98
130
  server.registerTool("back", {
99
131
  title: "Back",
100
132
  description: toolDescription("back"),
101
- inputSchema: toolShapes.back,
102
- }, (args) => tools.back(args));
133
+ inputSchema: looseInput("back"),
134
+ }, guarded("back", (args) => tools.back(args)));
103
135
  server.registerTool("app_command", {
104
136
  title: "App command",
105
137
  description: toolDescription("app_command"),
106
- inputSchema: toolShapes.app_command,
107
- }, (args) => tools.appCommand(args));
138
+ inputSchema: looseInput("app_command"),
139
+ }, guarded("app_command", (args) => tools.appCommand(args)));
108
140
  server.registerTool("compare_screen", {
109
141
  title: "Compare with a reference",
110
142
  description: toolDescription("compare_screen"),
111
- inputSchema: toolShapes.compare_screen,
143
+ inputSchema: looseInput("compare_screen"),
112
144
  annotations: { readOnlyHint: true },
113
- }, (args) => tools.compareScreen(args));
145
+ }, guarded("compare_screen", (args) => tools.compareScreen(args)));
114
146
  server.registerTool("filmstrip", {
115
147
  title: "Filmstrip",
116
148
  description: toolDescription("filmstrip"),
117
- inputSchema: toolShapes.filmstrip,
118
- }, (args) => tools.filmstrip(args));
149
+ inputSchema: looseInput("filmstrip"),
150
+ }, guarded("filmstrip", (args) => tools.filmstrip(args)));
119
151
  server.registerTool("viewer", {
120
152
  title: "Live viewer",
121
153
  description: toolDescription("viewer"),
122
- inputSchema: toolShapes.viewer,
154
+ inputSchema: looseInput("viewer"),
123
155
  annotations: { readOnlyHint: true },
124
- }, (args) => tools.viewer(args));
156
+ }, guarded("viewer", (args) => tools.viewer(args)));
125
157
  server.registerTool("record", {
126
158
  title: "Record a script",
127
159
  description: toolDescription("record"),
128
- inputSchema: toolShapes.record,
129
- }, (args) => tools.record(args));
160
+ inputSchema: looseInput("record"),
161
+ }, guarded("record", (args) => tools.record(args)));
130
162
  server.registerTool("replay", {
131
163
  title: "Replay a script",
132
164
  description: toolDescription("replay"),
133
- inputSchema: toolShapes.replay,
134
- }, (args) => tools.replay(args));
165
+ inputSchema: looseInput("replay"),
166
+ }, guarded("replay", (args) => tools.replay(args)));
135
167
  server.registerTool("wait_for", {
136
168
  title: "Wait for",
137
169
  description: toolDescription("wait_for"),
138
- inputSchema: toolShapes.wait_for,
170
+ inputSchema: looseInput("wait_for"),
139
171
  annotations: { readOnlyHint: true },
140
- }, (args) => tools.waitFor(args));
172
+ }, guarded("wait_for", (args) => tools.waitFor(args)));
141
173
  server.registerTool("logs", {
142
174
  title: "App logs",
143
175
  description: toolDescription("logs"),
144
- inputSchema: toolShapes.logs,
176
+ inputSchema: looseInput("logs"),
145
177
  annotations: { readOnlyHint: true },
146
- }, (args) => tools.logs(args));
178
+ }, guarded("logs", (args) => tools.logs(args)));
147
179
  server.registerTool("crash", {
148
180
  title: "App crash",
149
181
  description: toolDescription("crash"),
150
- inputSchema: toolShapes.crash,
182
+ inputSchema: looseInput("crash"),
151
183
  annotations: { readOnlyHint: true },
152
- }, (args) => tools.crash(args));
184
+ }, guarded("crash", (args) => tools.crash(args)));
153
185
  server.registerTool("reload", {
154
186
  title: "Reload app",
155
187
  description: toolDescription("reload"),
156
- inputSchema: toolShapes.reload,
157
- }, (args) => tools.reload(args));
188
+ inputSchema: looseInput("reload"),
189
+ }, guarded("reload", (args) => tools.reload(args)));
158
190
  server.registerTool("performance", {
159
191
  title: "Performance",
160
192
  description: toolDescription("performance"),
161
- inputSchema: toolShapes.performance,
162
- }, (args) => tools.performance(args));
193
+ inputSchema: looseInput("performance"),
194
+ }, guarded("performance", (args) => tools.performance(args)));
163
195
  server.registerTool("wait", {
164
196
  title: "Wait",
165
197
  description: toolDescription("wait"),
166
- inputSchema: toolShapes.wait,
198
+ inputSchema: looseInput("wait"),
167
199
  annotations: { readOnlyHint: true },
168
- }, (args) => tools.wait(args));
200
+ }, guarded("wait", (args) => tools.wait(args)));
201
+ publishPlainSchemas(server);
169
202
  return server;
170
203
  }
171
204
  function log(message) {
@@ -210,6 +243,7 @@ export async function runMcp(options = {}) {
210
243
  portFallback: config.portFallback,
211
244
  hosts: config.hosts,
212
245
  });
246
+ host.on("connect", () => markPaired(options.env));
213
247
  host.on("connect", (s) => log(`app connected: ${s.app.name} (${s.id}) on ${s.device.name ?? s.device.platform}`));
214
248
  host.on("disconnect", (s, reason) => log(`app disconnected: ${s.app.name} (${s.id}): ${reason}`));
215
249
  host.on("warning", (message) => log(message));
@@ -248,6 +282,7 @@ export async function runMcp(options = {}) {
248
282
  confirmations,
249
283
  canConfirm: viewer !== "off",
250
284
  connect: { url, name: config.name },
285
+ pairedBefore: () => pairedBefore(options.env),
251
286
  pairImagePath: join(configDir(), `pair-${port}.png`),
252
287
  offerDir: join(configDir(), "offers"),
253
288
  screenshots,
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -293,6 +293,14 @@ export declare const toolShapes: {
293
293
  };
294
294
  };
295
295
  type Shape<K extends keyof typeof toolShapes> = z.infer<z.ZodObject<(typeof toolShapes)[K]>>;
296
+ /** The arguments of one tool, as its schema describes them. */
297
+ export type ToolArgs<K extends keyof typeof toolShapes> = Shape<K>;
298
+ /**
299
+ * The answer for a call that carries arguments the tool doesn't have (null when all are known). Zod strips unknown
300
+ * keys silently, so `audit {labels: true}` would run and ignore `labels`; this says so instead. Every way in to a
301
+ * tool (the MCP server, and through it the bench) goes through here; script steps are checked by `run` itself.
302
+ */
303
+ export declare function unknownArgumentError(name: keyof typeof toolShapes, args: Record<string, unknown>): CallToolResult | null;
296
304
  export interface ConnectInfo {
297
305
  /** Where apps reach this host, e.g. ws://100.64.0.1:7210/ */
298
306
  url: string;
@@ -301,6 +309,11 @@ export interface ConnectInfo {
301
309
  }
302
310
  export interface ToolsOptions {
303
311
  connect: ConnectInfo;
312
+ /**
313
+ * Whether a phone has ever connected to this computer's host. When set, the first answer of the session says what
314
+ * only a person can do (open the app, pair) if an app isn't connected: `Note: needs a person: …`, once.
315
+ */
316
+ pairedBefore?: () => boolean;
304
317
  /** Where the action log goes (AGENT-TOOLS 1.8 §12); none: no log. */
305
318
  logDir?: string;
306
319
  /** The safety policy (AGENT-TOOLS 1.8 §11). Default: the built-in words; --no-policy passes empty lists. */
@@ -429,6 +442,13 @@ export declare class TaplineTools {
429
442
  * call, or earlier, with its time, once. Calls inside a call (`run`'s steps) add nothing of their own.
430
443
  */
431
444
  private noting;
445
+ /** The first call has been answered, so the "needs a person" note has had its turn. */
446
+ private personNoteDone;
447
+ /**
448
+ * The first answer of the session says what only a person can do, once, when something is pending: the app isn't
449
+ * connected (open it on the phone, same Wi-Fi), and the phone has never paired. Nothing pending: never.
450
+ */
451
+ private withPersonNote;
432
452
  /** What was told about this app's crashes so far: the crash events up to this number. */
433
453
  private notedSeqOf;
434
454
  /**
package/dist/tools.js CHANGED
@@ -265,6 +265,20 @@ export const toolShapes = {
265
265
  screenshot: screenshotField,
266
266
  },
267
267
  };
268
+ /**
269
+ * The answer for a call that carries arguments the tool doesn't have (null when all are known). Zod strips unknown
270
+ * keys silently, so `audit {labels: true}` would run and ignore `labels`; this says so instead. Every way in to a
271
+ * tool (the MCP server, and through it the bench) goes through here; script steps are checked by `run` itself.
272
+ */
273
+ export function unknownArgumentError(name, args) {
274
+ const known = Object.keys(toolShapes[name]);
275
+ const unknown = Object.keys(args).filter((key) => !known.includes(key));
276
+ if (unknown.length === 0)
277
+ return null;
278
+ // AGENT-TOOLS 1.11 wording, shared with Tapwright: every unknown name in one sentence.
279
+ const takes = known.length === 0 ? "it takes no arguments" : `it takes ${known.join(", ")}`;
280
+ return fail(`Error bad_params: ${name} doesn't take ${unknown.join(", ")}; ${takes}.`);
281
+ }
268
282
  // ---- compare_screen ---------------------------------------------------------
269
283
  const DEFAULT_MATCH_THRESHOLD = 0.5;
270
284
  const MAX_REGION_LINES = 8;
@@ -749,10 +763,32 @@ export class TaplineTools {
749
763
  return this.noteScope.run(true, () => {
750
764
  const result = run();
751
765
  if (result instanceof Promise)
752
- return result.then((answer) => this.withCrashNotes(answer, mark, startedWith));
753
- return this.withCrashNotes(result, mark, startedWith);
766
+ return result.then((answer) => this.withPersonNote(this.withCrashNotes(answer, mark, startedWith)));
767
+ return this.withPersonNote(this.withCrashNotes(result, mark, startedWith));
754
768
  });
755
769
  }
770
+ /** The first call has been answered, so the "needs a person" note has had its turn. */
771
+ personNoteDone = false;
772
+ /**
773
+ * The first answer of the session says what only a person can do, once, when something is pending: the app isn't
774
+ * connected (open it on the phone, same Wi-Fi), and the phone has never paired. Nothing pending: never.
775
+ */
776
+ withPersonNote(answer) {
777
+ if (this.personNoteDone || this.options.pairedBefore === undefined)
778
+ return answer;
779
+ if (this.host.current() !== undefined) {
780
+ this.personNoteDone = true;
781
+ return answer;
782
+ }
783
+ if (answer.content[0]?.type !== "text")
784
+ return answer; // nowhere to put it yet: the next answer says it
785
+ const items = [];
786
+ if (!this.options.pairedBefore())
787
+ items.push("the phone isn't paired yet (call `pair`, then the user scans the QR code or taps Connect)");
788
+ items.push("the app isn't connected (the user opens it on the phone, on the same Wi-Fi as this computer)");
789
+ this.personNoteDone = true;
790
+ return appendNote(answer, `Note: needs a person: ${items.join("; ")}.`);
791
+ }
756
792
  /** What was told about this app's crashes so far: the crash events up to this number. */
757
793
  notedSeqOf(app) {
758
794
  return this.notedCrashSeqs.get(identityOf(app)) ?? this.crashBaseline;
@@ -837,6 +873,7 @@ export class TaplineTools {
837
873
  }
838
874
  // -- pair
839
875
  async pair(args) {
876
+ this.personNoteDone = true; // its answer says what the person does; no "call pair" note on it
840
877
  const { url, name } = this.options.connect;
841
878
  // Zero-QR pairing (Tapline 1.1): a development build whose JavaScript comes from this computer finds the
842
879
  // offer itself and asks its person to connect. Open for 10 minutes, one use, local network only.
@@ -1004,7 +1041,9 @@ export class TaplineTools {
1004
1041
  return fail(`Error bad_params: step ${i + 1}: "${step.tool}" can't be a step (steps act; use it on its own call). Steps can be: ${RUN_TOOLS.join(", ")}.`);
1005
1042
  }
1006
1043
  const shape = toolShapes[step.tool];
1007
- const { tool: _tool, expect: _expect, route: _route, ...params } = step;
1044
+ const { tool: _tool, expect: _expect, route: _route, ...given } = step;
1045
+ // §9.1: a step's own look and screenshot are ignored (the batch answers once), whether its tool has them or not.
1046
+ const params = Object.fromEntries(Object.entries(given).filter(([key]) => !(key === "look" || key === "screenshot") || key in shape));
1008
1047
  if (step.tool === "compare_screen" && params.update !== undefined) {
1009
1048
  return fail(`Error bad_params: step ${i + 1}: update can't be used in run (a step never saves a reference)`);
1010
1049
  }
@@ -1037,6 +1076,12 @@ export class TaplineTools {
1037
1076
  return fail(`Error bad_params: step ${i + 1} (${describeRunStep(step)}): launch reloads the app and tap taps in it; give one of them.`);
1038
1077
  }
1039
1078
  }
1079
+ // AGENT-TOOLS 1.11 §4: the shared wording, with the step first.
1080
+ const known = Object.keys(shape);
1081
+ const stray = Object.keys(params).filter((key) => !known.includes(key));
1082
+ if (stray.length > 0) {
1083
+ return fail(`Error bad_params: step ${i + 1}: ${step.tool} doesn't take ${stray.join(", ")}; ${known.length === 0 ? "it takes no arguments" : `it takes ${known.join(", ")}`}.`);
1084
+ }
1040
1085
  const parsed = z.object(shape).strict().safeParse(params);
1041
1086
  if (!parsed.success) {
1042
1087
  return fail(`Error bad_params: step ${i + 1} (${describeRunStep(step)}): ${parsed.error.issues.map((issue) => `${issue.path.join(".") || "params"}: ${issue.message}`).join("; ")}`);