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/audit.d.ts +10 -0
- package/dist/audit.js +19 -1
- package/dist/audit.js.map +1 -1
- package/dist/cli.js +9 -4
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.js +42 -1
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts +11 -1
- package/dist/doctor.js +74 -2
- package/dist/doctor.js.map +1 -1
- package/dist/mcp.js +94 -59
- package/dist/mcp.js.map +1 -1
- package/dist/tools.d.ts +20 -0
- package/dist/tools.js +48 -3
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
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 {
|
|
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.
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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, ...
|
|
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("; ")}`);
|