tapline-host 1.4.0 → 1.6.0
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/accounts.d.ts +72 -0
- package/dist/accounts.js +208 -0
- package/dist/accounts.js.map +1 -0
- package/dist/actionlog.d.ts +20 -0
- package/dist/actionlog.js.map +1 -1
- package/dist/animations.d.ts +39 -0
- package/dist/animations.js +124 -0
- package/dist/animations.js.map +1 -0
- package/dist/api.d.ts +43 -0
- package/dist/api.js +154 -0
- package/dist/api.js.map +1 -0
- package/dist/audit.d.ts +3 -0
- package/dist/audit.js +1 -1
- package/dist/audit.js.map +1 -1
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +19 -0
- package/dist/bin.js.map +1 -0
- package/dist/brief.d.ts +41 -0
- package/dist/brief.js +78 -0
- package/dist/brief.js.map +1 -0
- package/dist/cli.d.ts +41 -1
- package/dist/cli.js +100 -53
- package/dist/cli.js.map +1 -1
- package/dist/conditions.d.ts +36 -0
- package/dist/conditions.js +67 -0
- package/dist/conditions.js.map +1 -0
- package/dist/confirm.d.ts +21 -2
- package/dist/confirm.js +39 -6
- package/dist/confirm.js.map +1 -1
- package/dist/dispatch.d.ts +27 -0
- package/dist/dispatch.js +114 -0
- package/dist/dispatch.js.map +1 -0
- package/dist/doctor.d.ts +5 -0
- package/dist/doctor.js +20 -0
- package/dist/doctor.js.map +1 -1
- package/dist/drive.d.ts +184 -0
- package/dist/drive.js +908 -0
- package/dist/drive.js.map +1 -0
- package/dist/elicit.d.ts +90 -0
- package/dist/elicit.js +179 -0
- package/dist/elicit.js.map +1 -0
- package/dist/format.d.ts +16 -0
- package/dist/format.js +81 -24
- package/dist/format.js.map +1 -1
- package/dist/images.d.ts +35 -0
- package/dist/images.js +76 -6
- package/dist/images.js.map +1 -1
- package/dist/inspect.d.ts +1 -0
- package/dist/journey.d.ts +276 -0
- package/dist/journey.js +368 -0
- package/dist/journey.js.map +1 -0
- package/dist/journeyexport.d.ts +58 -0
- package/dist/journeyexport.js +318 -0
- package/dist/journeyexport.js.map +1 -0
- package/dist/journeygif.d.ts +62 -0
- package/dist/journeygif.js +192 -0
- package/dist/journeygif.js.map +1 -0
- package/dist/journeyreport.d.ts +202 -0
- package/dist/journeyreport.js +666 -0
- package/dist/journeyreport.js.map +1 -0
- package/dist/mapcmd.d.ts +200 -0
- package/dist/mapcmd.js +412 -0
- package/dist/mapcmd.js.map +1 -0
- package/dist/mapfile.d.ts +155 -0
- package/dist/mapfile.js +575 -0
- package/dist/mapfile.js.map +1 -0
- package/dist/mcp.d.ts +14 -11
- package/dist/mcp.js +50 -318
- package/dist/mcp.js.map +1 -1
- package/dist/media.d.ts +88 -0
- package/dist/media.js +263 -0
- package/dist/media.js.map +1 -0
- package/dist/nochange.d.ts +77 -0
- package/dist/nochange.js +77 -0
- package/dist/nochange.js.map +1 -0
- package/dist/places.d.ts +239 -0
- package/dist/places.js +823 -0
- package/dist/places.js.map +1 -0
- package/dist/policy.d.ts +18 -0
- package/dist/policy.js +52 -0
- package/dist/policy.js.map +1 -1
- package/dist/protocol.d.ts +27 -1
- package/dist/protocol.js +25 -0
- package/dist/protocol.js.map +1 -1
- package/dist/reflexes.d.ts +59 -0
- package/dist/reflexes.js +133 -0
- package/dist/reflexes.js.map +1 -0
- package/dist/report.d.ts +32 -2
- package/dist/report.js +154 -9
- package/dist/report.js.map +1 -1
- package/dist/routes.d.ts +115 -0
- package/dist/routes.js +287 -0
- package/dist/routes.js.map +1 -0
- package/dist/run.d.ts +28 -1
- package/dist/run.js +32 -3
- package/dist/run.js.map +1 -1
- package/dist/runtime.d.ts +60 -0
- package/dist/runtime.js +255 -0
- package/dist/runtime.js.map +1 -0
- package/dist/script.d.ts +114 -10
- package/dist/script.js +30 -2
- package/dist/script.js.map +1 -1
- package/dist/server.d.ts +48 -2
- package/dist/server.js +88 -13
- package/dist/server.js.map +1 -1
- package/dist/thincall.d.ts +13 -0
- package/dist/thincall.js +335 -0
- package/dist/thincall.js.map +1 -0
- package/dist/tool-text-data.d.ts +10 -5
- package/dist/tool-text-data.js +11 -6
- package/dist/tool-text-data.js.map +1 -1
- package/dist/tool-text.d.ts +1 -1
- package/dist/tools.d.ts +585 -5
- package/dist/tools.js +2926 -185
- package/dist/tools.js.map +1 -1
- package/dist/uxcheck.d.ts +103 -0
- package/dist/uxcheck.js +128 -0
- package/dist/uxcheck.js.map +1 -0
- package/package.json +3 -2
- package/skills/tapline/SKILL.md +57 -11
- package/skills/tapline/references/personas.md +45 -0
- package/skills/tapline/references/setup.md +6 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../src/drive.ts"],"names":[],"mappings":"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"}
|
package/dist/elicit.d.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGENT-TOOLS 1.13 §11.3: the host's own dialog for a person's OK, through MCP elicitation. The dialog is drawn by
|
|
3
|
+
* the host and answered by the person; nothing the model writes can answer it.
|
|
4
|
+
*/
|
|
5
|
+
export declare const OK_FIELD = "answer";
|
|
6
|
+
export declare const OK_ALLOW = "Allow once";
|
|
7
|
+
export declare const OK_DENY = "Don't allow";
|
|
8
|
+
/**
|
|
9
|
+
* The one form field: required, no default, so a host that accepts an empty form still can't produce an allow.
|
|
10
|
+
* Don't allow comes first, so a host that fills in the first choice by itself denies.
|
|
11
|
+
*/
|
|
12
|
+
export interface ElicitSchema {
|
|
13
|
+
type: "object";
|
|
14
|
+
properties: Record<string, {
|
|
15
|
+
type: "string";
|
|
16
|
+
title: string;
|
|
17
|
+
enum: string[];
|
|
18
|
+
}>;
|
|
19
|
+
required: string[];
|
|
20
|
+
}
|
|
21
|
+
export declare const OK_SCHEMA: ElicitSchema;
|
|
22
|
+
/** AGENT-TOOLS 1.13 §11.5: the one field of a needs-a-person dialog. Can't now is first, as Don't allow is for an OK. */
|
|
23
|
+
export declare const DONE_FIELD = "answer";
|
|
24
|
+
export declare const DONE = "Done";
|
|
25
|
+
export declare const CANT_NOW = "Can't now";
|
|
26
|
+
export declare const DONE_SCHEMA: ElicitSchema;
|
|
27
|
+
export interface ElicitAnswer {
|
|
28
|
+
action: "accept" | "decline" | "cancel";
|
|
29
|
+
content?: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
export interface ElicitClient {
|
|
32
|
+
/** True when the client said at initialize that it can show a form dialog. */
|
|
33
|
+
canShowForm(): boolean;
|
|
34
|
+
elicit(message: string, schema: ElicitSchema, signal: AbortSignal): Promise<ElicitAnswer>;
|
|
35
|
+
}
|
|
36
|
+
/** A person's OK is asked for up to this long, as long as the live view's request lives (§11.3). */
|
|
37
|
+
export declare const DIALOG_TTL_MS = 120000;
|
|
38
|
+
/** `unavailable`: the client answered an error before any choice (for example method not found): there is no dialog. */
|
|
39
|
+
export type OkAnswer = "allow" | "deny" | "aborted" | "unavailable";
|
|
40
|
+
export declare class Dialogs {
|
|
41
|
+
private readonly client;
|
|
42
|
+
private tail;
|
|
43
|
+
private readonly disabled;
|
|
44
|
+
private readonly ttlMs;
|
|
45
|
+
constructor(client: ElicitClient | undefined, options?: {
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
ttlMs?: number;
|
|
48
|
+
});
|
|
49
|
+
/** False with `--no-dialog`, with no client, or when the client can't show a form. */
|
|
50
|
+
available(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Asks the person. One dialog at a time: a second request waits behind the first. `aborted` when the signal
|
|
53
|
+
* fired (the live view answered first) or the time ran out; only an accepted "Allow once" is `allow`.
|
|
54
|
+
*/
|
|
55
|
+
askOk(caption: string, signal?: AbortSignal): Promise<OkAnswer>;
|
|
56
|
+
/**
|
|
57
|
+
* §11.5: tells the person what to do and waits for Done. Only an accepted "Done" is `done`; Can't now, a decline and
|
|
58
|
+
* a cancel are `cant`. `aborted` and `unavailable` are as for `askOk`.
|
|
59
|
+
*/
|
|
60
|
+
askDone(message: string, signal?: AbortSignal): Promise<DoneAnswer>;
|
|
61
|
+
private queued;
|
|
62
|
+
private ask;
|
|
63
|
+
}
|
|
64
|
+
export type DoneAnswer = "done" | "cant" | "aborted" | "unavailable";
|
|
65
|
+
/** What `askDone` (the helper) tells its caller. `cleared` also covers the person saying Done: the caller checks again. */
|
|
66
|
+
export type MomentOutcome = "cleared" | "cant" | "expired" | "cancelled" | "no_dialog";
|
|
67
|
+
/**
|
|
68
|
+
* AGENT-TOOLS 1.13 §11.5: one needs-a-person moment. Tells the person through the dialog and waits until `cleared()`
|
|
69
|
+
* is true (then closes its own dialog), the person says Done (`cleared`: the caller checks the screen again) or
|
|
70
|
+
* Can't now, or the time runs out. Nothing a model writes can answer it. No dialog at all: `no_dialog`, at once.
|
|
71
|
+
*/
|
|
72
|
+
export declare function askDone(dialogs: Dialogs, message: string, cleared: () => Promise<boolean> | boolean, options?: {
|
|
73
|
+
ttlMs?: number;
|
|
74
|
+
pollMs?: number;
|
|
75
|
+
signal?: AbortSignal;
|
|
76
|
+
}): Promise<MomentOutcome>;
|
|
77
|
+
/** App text as the dialog may show it: no control characters, no quote that could end ours, cut to 80 characters. */
|
|
78
|
+
export declare function plainText(value: string, max?: number): string;
|
|
79
|
+
/**
|
|
80
|
+
* The question, in the tool's own words: the policy word, the tool, the element's quoted text (or its role) and the
|
|
81
|
+
* app. Text from the app is cut and cleaned, so it can't write the question (§11.3).
|
|
82
|
+
* `Allow: tap "Delete trip" in Wayfare? (policy word "Delete")`
|
|
83
|
+
*/
|
|
84
|
+
export declare function okCaption(v: {
|
|
85
|
+
word: string;
|
|
86
|
+
tool: string;
|
|
87
|
+
role: string;
|
|
88
|
+
text?: string;
|
|
89
|
+
app: string;
|
|
90
|
+
}): string;
|
package/dist/elicit.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGENT-TOOLS 1.13 §11.3: the host's own dialog for a person's OK, through MCP elicitation. The dialog is drawn by
|
|
3
|
+
* the host and answered by the person; nothing the model writes can answer it.
|
|
4
|
+
*/
|
|
5
|
+
export const OK_FIELD = "answer";
|
|
6
|
+
export const OK_ALLOW = "Allow once";
|
|
7
|
+
export const OK_DENY = "Don't allow";
|
|
8
|
+
export const OK_SCHEMA = {
|
|
9
|
+
type: "object",
|
|
10
|
+
properties: { [OK_FIELD]: { type: "string", title: "Allow this touch?", enum: [OK_DENY, OK_ALLOW] } },
|
|
11
|
+
required: [OK_FIELD],
|
|
12
|
+
};
|
|
13
|
+
/** AGENT-TOOLS 1.13 §11.5: the one field of a needs-a-person dialog. Can't now is first, as Don't allow is for an OK. */
|
|
14
|
+
export const DONE_FIELD = "answer";
|
|
15
|
+
export const DONE = "Done";
|
|
16
|
+
export const CANT_NOW = "Can't now";
|
|
17
|
+
export const DONE_SCHEMA = {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: { [DONE_FIELD]: { type: "string", title: "Has it been done?", enum: [CANT_NOW, DONE] } },
|
|
20
|
+
required: [DONE_FIELD],
|
|
21
|
+
};
|
|
22
|
+
/** A person's OK is asked for up to this long, as long as the live view's request lives (§11.3). */
|
|
23
|
+
export const DIALOG_TTL_MS = 120_000;
|
|
24
|
+
export class Dialogs {
|
|
25
|
+
client;
|
|
26
|
+
tail = Promise.resolve();
|
|
27
|
+
disabled;
|
|
28
|
+
ttlMs;
|
|
29
|
+
constructor(client, options = {}) {
|
|
30
|
+
this.client = client;
|
|
31
|
+
this.disabled = options.disabled === true;
|
|
32
|
+
this.ttlMs = options.ttlMs ?? DIALOG_TTL_MS;
|
|
33
|
+
}
|
|
34
|
+
/** False with `--no-dialog`, with no client, or when the client can't show a form. */
|
|
35
|
+
available() {
|
|
36
|
+
return !this.disabled && this.client !== undefined && this.client.canShowForm();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Asks the person. One dialog at a time: a second request waits behind the first. `aborted` when the signal
|
|
40
|
+
* fired (the live view answered first) or the time ran out; only an accepted "Allow once" is `allow`.
|
|
41
|
+
*/
|
|
42
|
+
askOk(caption, signal) {
|
|
43
|
+
return this.queued(async () => {
|
|
44
|
+
const answer = await this.ask(caption, OK_SCHEMA, signal);
|
|
45
|
+
if (answer === "aborted" || answer === "unavailable")
|
|
46
|
+
return answer;
|
|
47
|
+
return answer.action === "accept" && answer.content?.[OK_FIELD] === OK_ALLOW ? "allow" : "deny";
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* §11.5: tells the person what to do and waits for Done. Only an accepted "Done" is `done`; Can't now, a decline and
|
|
52
|
+
* a cancel are `cant`. `aborted` and `unavailable` are as for `askOk`.
|
|
53
|
+
*/
|
|
54
|
+
askDone(message, signal) {
|
|
55
|
+
return this.queued(async () => {
|
|
56
|
+
const answer = await this.ask(message, DONE_SCHEMA, signal);
|
|
57
|
+
if (answer === "aborted" || answer === "unavailable")
|
|
58
|
+
return answer;
|
|
59
|
+
return answer.action === "accept" && answer.content?.[DONE_FIELD] === DONE ? "done" : "cant";
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
queued(run) {
|
|
63
|
+
const result = this.tail.then(run, run);
|
|
64
|
+
this.tail = result;
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
async ask(message, schema, signal) {
|
|
68
|
+
const client = this.client;
|
|
69
|
+
if (client === undefined || !this.available() || signal?.aborted === true)
|
|
70
|
+
return "aborted";
|
|
71
|
+
const own = new AbortController();
|
|
72
|
+
const stop = () => own.abort();
|
|
73
|
+
signal?.addEventListener("abort", stop, { once: true });
|
|
74
|
+
const timer = setTimeout(stop, this.ttlMs);
|
|
75
|
+
timer.unref?.();
|
|
76
|
+
// A client that ignores the abort must not hold the queue: the race ends the wait itself.
|
|
77
|
+
const gone = new Promise((resolve) => own.signal.addEventListener("abort", () => resolve("aborted"), { once: true }));
|
|
78
|
+
try {
|
|
79
|
+
const answer = await Promise.race([client.elicit(message, schema, own.signal), gone]);
|
|
80
|
+
return answer === "aborted" || own.signal.aborted ? "aborted" : answer;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// An error before any answer means this client has no dialog; a real decline or cancel is a result, not an error.
|
|
84
|
+
return own.signal.aborted ? "aborted" : "unavailable";
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
clearTimeout(timer);
|
|
88
|
+
signal?.removeEventListener("abort", stop);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Read again later: the signal may have fired since the first look. */
|
|
93
|
+
function isAborted(signal) {
|
|
94
|
+
return signal?.aborted === true;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* AGENT-TOOLS 1.13 §11.5: one needs-a-person moment. Tells the person through the dialog and waits until `cleared()`
|
|
98
|
+
* is true (then closes its own dialog), the person says Done (`cleared`: the caller checks the screen again) or
|
|
99
|
+
* Can't now, or the time runs out. Nothing a model writes can answer it. No dialog at all: `no_dialog`, at once.
|
|
100
|
+
*/
|
|
101
|
+
export async function askDone(dialogs, message, cleared, options = {}) {
|
|
102
|
+
if (!dialogs.available())
|
|
103
|
+
return "no_dialog";
|
|
104
|
+
const signal = options.signal;
|
|
105
|
+
if (signal?.aborted === true)
|
|
106
|
+
return "cancelled";
|
|
107
|
+
const check = async () => {
|
|
108
|
+
try {
|
|
109
|
+
return await cleared();
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const first = await check();
|
|
116
|
+
// The caller may have cancelled while the first check ran.
|
|
117
|
+
if (isAborted(signal))
|
|
118
|
+
return "cancelled";
|
|
119
|
+
if (first)
|
|
120
|
+
return "cleared";
|
|
121
|
+
const own = new AbortController();
|
|
122
|
+
const stopOwn = () => own.abort();
|
|
123
|
+
signal?.addEventListener("abort", stopOwn, { once: true });
|
|
124
|
+
let outcome;
|
|
125
|
+
const finish = (value) => {
|
|
126
|
+
if (outcome === undefined)
|
|
127
|
+
outcome = value;
|
|
128
|
+
own.abort();
|
|
129
|
+
};
|
|
130
|
+
const ended = new Promise((resolve) => own.signal.addEventListener("abort", () => resolve(), { once: true }));
|
|
131
|
+
const timer = setTimeout(() => finish("expired"), options.ttlMs ?? DIALOG_TTL_MS);
|
|
132
|
+
timer.unref?.();
|
|
133
|
+
let polling = false;
|
|
134
|
+
const poll = setInterval(() => {
|
|
135
|
+
if (polling || outcome !== undefined)
|
|
136
|
+
return;
|
|
137
|
+
polling = true;
|
|
138
|
+
void check().then((now) => {
|
|
139
|
+
polling = false;
|
|
140
|
+
if (now)
|
|
141
|
+
finish("cleared");
|
|
142
|
+
});
|
|
143
|
+
}, options.pollMs ?? 500);
|
|
144
|
+
poll.unref?.();
|
|
145
|
+
void dialogs.askDone(message, own.signal).then((answer) => {
|
|
146
|
+
if (answer === "done")
|
|
147
|
+
finish("cleared");
|
|
148
|
+
else if (answer === "cant")
|
|
149
|
+
finish("cant");
|
|
150
|
+
else if (answer === "unavailable")
|
|
151
|
+
finish("no_dialog");
|
|
152
|
+
});
|
|
153
|
+
await ended;
|
|
154
|
+
clearTimeout(timer);
|
|
155
|
+
clearInterval(poll);
|
|
156
|
+
signal?.removeEventListener("abort", stopOwn);
|
|
157
|
+
return outcome ?? (isAborted(signal) ? "cancelled" : "expired");
|
|
158
|
+
}
|
|
159
|
+
const NOT_SHOWN = new RegExp("[\u0000-\u001f\u007f-\u009f\u00ad\u200b-\u200f\u2028-\u202e\u2060-\u2069\ufeff]", "g");
|
|
160
|
+
/** App text as the dialog may show it: no control characters, no quote that could end ours, cut to 80 characters. */
|
|
161
|
+
export function plainText(value, max = 80) {
|
|
162
|
+
const clean = value.replace(NOT_SHOWN, "").replace(/"/g, "'").trim();
|
|
163
|
+
const letters = [...clean];
|
|
164
|
+
return letters.length > max ? `${letters.slice(0, max - 1).join("")}…` : clean;
|
|
165
|
+
}
|
|
166
|
+
const VERBS = { tap: "tap", long_press: "long press", toggle: "toggle", swipe: "swipe" };
|
|
167
|
+
/**
|
|
168
|
+
* The question, in the tool's own words: the policy word, the tool, the element's quoted text (or its role) and the
|
|
169
|
+
* app. Text from the app is cut and cleaned, so it can't write the question (§11.3).
|
|
170
|
+
* `Allow: tap "Delete trip" in Wayfare? (policy word "Delete")`
|
|
171
|
+
*/
|
|
172
|
+
export function okCaption(v) {
|
|
173
|
+
const verb = VERBS[v.tool] ?? v.tool.replace(/_/g, " ");
|
|
174
|
+
const text = v.text === undefined ? "" : plainText(v.text);
|
|
175
|
+
const what = text !== "" ? `"${text}"` : `the ${plainText(v.role, 30) || "element"}`;
|
|
176
|
+
const app = plainText(v.app) || "the app";
|
|
177
|
+
return `Allow: ${verb} ${what} in ${app}? (policy word "${plainText(v.word)}")`;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=elicit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elicit.js","sourceRoot":"","sources":["../src/elicit.ts"],"names":[],"mappings":"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"}
|
package/dist/format.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export declare function actionsOf(element: Pick<TreeElement, "actions">): string
|
|
|
14
14
|
export declare function formatElement(element: TreeElement, options?: {
|
|
15
15
|
actions?: boolean;
|
|
16
16
|
frame?: boolean;
|
|
17
|
+
eyes?: boolean;
|
|
17
18
|
}): string;
|
|
18
19
|
/** Rule 3: an old value over 40 characters, cut to what changed plus 12 characters each side. */
|
|
19
20
|
export declare function shortWas(old: string, now: string, keep?: number, context?: number): string;
|
|
@@ -26,7 +27,12 @@ export declare function describeElement(element: TreeElement): string;
|
|
|
26
27
|
export declare function formatTree(tree: TreeResult, app?: {
|
|
27
28
|
name: string;
|
|
28
29
|
id?: string;
|
|
30
|
+
}, options?: {
|
|
31
|
+
eyes?: boolean;
|
|
32
|
+
place?: string;
|
|
29
33
|
}): string;
|
|
34
|
+
/** The off-screen count as a line of its own, for a brief new-screen answer: `(+41 below, +2 above)`; none when there is nothing off screen. */
|
|
35
|
+
export declare function offScreenLine(tree: TreeResult, eyes?: boolean): string[];
|
|
30
36
|
/**
|
|
31
37
|
* The off-screen lines that follow a full list, under `Changes off screen:`. Only for a full list that came because most of the
|
|
32
38
|
* same screen changed: on another screen, or with nothing listed, the old off-screen elements are
|
|
@@ -39,7 +45,17 @@ export declare function formatOffScreenAfterList(tree: TreeResult): string[];
|
|
|
39
45
|
*/
|
|
40
46
|
export declare function formatChanges(tree: TreeResult, options?: {
|
|
41
47
|
alertGone?: boolean;
|
|
48
|
+
eyes?: boolean;
|
|
42
49
|
}): string | null;
|
|
50
|
+
/** The change block in its parts, for a brief answer: the label, the header lines (never cut) and the change lines. */
|
|
51
|
+
export declare function changeParts(tree: TreeResult, options?: {
|
|
52
|
+
alertGone?: boolean;
|
|
53
|
+
eyes?: boolean;
|
|
54
|
+
}): {
|
|
55
|
+
label: string;
|
|
56
|
+
header: string[];
|
|
57
|
+
changes: string[];
|
|
58
|
+
} | null;
|
|
43
59
|
/**
|
|
44
60
|
* Lines for open alerts, the keyboard and requests in flight: things that block or explain the
|
|
45
61
|
* screen, in §3.2's order. `keyboard` is the keyboard line's word: by default `shown` while it is up
|
package/dist/format.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ANIMATIONS_LINE } from "./animations.js";
|
|
1
2
|
/** How much of a text a line shows (AGENT-TOOLS v1.5). */
|
|
2
3
|
const MAX_TEXT = 200;
|
|
3
4
|
/**
|
|
@@ -112,15 +113,20 @@ export function formatElement(element, options = {}) {
|
|
|
112
113
|
parts.push(kind);
|
|
113
114
|
const text = element.text ?? "";
|
|
114
115
|
const label = element.label ?? "";
|
|
115
|
-
if (
|
|
116
|
-
parts.push(quoteText(element));
|
|
117
|
-
else if (label !== "")
|
|
118
|
-
parts.push(quote(label));
|
|
119
|
-
if (text !== "" && label !== "" && label.toLowerCase() !== text.toLowerCase()) {
|
|
120
|
-
parts.push(`label=${quote(label)}`);
|
|
116
|
+
if (options.eyes === true) {
|
|
117
|
+
parts.push(...userEyesName(kind, text, label, quoteText(element)));
|
|
121
118
|
}
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
else {
|
|
120
|
+
if (text !== "")
|
|
121
|
+
parts.push(quoteText(element));
|
|
122
|
+
else if (label !== "")
|
|
123
|
+
parts.push(quote(label));
|
|
124
|
+
if (text !== "" && label !== "" && label.toLowerCase() !== text.toLowerCase()) {
|
|
125
|
+
parts.push(`label=${quote(label)}`);
|
|
126
|
+
}
|
|
127
|
+
if (element.testID !== null && element.testID !== undefined && element.testID !== "") {
|
|
128
|
+
parts.push(`id=${element.testID}`);
|
|
129
|
+
}
|
|
124
130
|
}
|
|
125
131
|
if (element.value !== null && element.value !== undefined && element.value !== "") {
|
|
126
132
|
parts.push(`value=${formatValue(element.value)}`);
|
|
@@ -144,9 +150,23 @@ export function formatElement(element, options = {}) {
|
|
|
144
150
|
parts.push(`[${actions.join(", ")}]`);
|
|
145
151
|
return parts.join(" ");
|
|
146
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* What a person sees of an element's name (AGENT-TOOLS 1.12 §17.1): its visible text. A button, tab or link with none
|
|
155
|
+
* is `(icon only)`, and its accessibility label stands apart as `(VoiceOver: "…")`. Ids never show; a label that is
|
|
156
|
+
* not the visible text is not on the glass (an input's label is left out too: its placeholder shows).
|
|
157
|
+
*/
|
|
158
|
+
function userEyesName(kind, text, label, quotedText) {
|
|
159
|
+
if (text !== "")
|
|
160
|
+
return [quotedText];
|
|
161
|
+
const tappable = kind === "button" || kind === "tab" || kind === "link";
|
|
162
|
+
const parts = tappable ? ["(icon only)"] : [];
|
|
163
|
+
if (label !== "" && kind !== "input")
|
|
164
|
+
parts.push(`(VoiceOver: ${quote(label)})`);
|
|
165
|
+
return parts;
|
|
166
|
+
}
|
|
147
167
|
/** A `~` line's element (§13 rule 2): its position and actions only when they are among what changed. */
|
|
148
|
-
function changedLine(element, was) {
|
|
149
|
-
return formatElement(element, { frame: "frame" in was, actions: "actions" in was });
|
|
168
|
+
function changedLine(element, was, eyes = false) {
|
|
169
|
+
return formatElement(element, { frame: "frame" in was, actions: "actions" in was, eyes });
|
|
150
170
|
}
|
|
151
171
|
/** Rule 3: an old value over 40 characters, cut to what changed plus 12 characters each side. */
|
|
152
172
|
export function shortWas(old, now, keep = 40, context = 12) {
|
|
@@ -189,26 +209,40 @@ const MAX_ELEMENTS = 200;
|
|
|
189
209
|
* The whole screen as text (AGENT-TOOLS §3.2): the screen line, the app, route, alert and network
|
|
190
210
|
* lines, then one line per element in tree order, up to 200.
|
|
191
211
|
*/
|
|
192
|
-
export function formatTree(tree, app) {
|
|
212
|
+
export function formatTree(tree, app, options = {}) {
|
|
213
|
+
const eyes = options.eyes === true;
|
|
193
214
|
const screen = tree.screen;
|
|
194
215
|
const size = screen
|
|
195
216
|
? `${Math.round(screen.width)}x${Math.round(screen.height)} pt${screen.scale !== undefined ? ` @${screen.scale}x` : ""}`
|
|
196
217
|
: "unknown size";
|
|
197
218
|
const count = tree.elements.length;
|
|
198
|
-
const lines = [`Screen ${size} · ${count} element${count === 1 ? "" : "s"}${formatOffScreen(tree.offScreen)}`];
|
|
219
|
+
const lines = [`Screen ${size} · ${count} element${count === 1 ? "" : "s"}${eyes ? formatGlassMore(tree.glass) : formatOffScreen(tree.offScreen)}`];
|
|
199
220
|
if (app !== undefined)
|
|
200
221
|
lines.push(`App: ${app.name}${app.id !== undefined ? ` (${app.id})` : ""}`);
|
|
201
|
-
|
|
222
|
+
// A route name is the app's own naming, not on the glass: a user's eyes don't get it (tree.route stays for the journey's measures).
|
|
223
|
+
const route = eyes ? null : formatRoute(tree.route);
|
|
202
224
|
if (route !== null)
|
|
203
225
|
lines.push(route);
|
|
226
|
+
// `Place:` (AGENT-TOOLS 1.13 §18.1) is a line of the header, after the route.
|
|
227
|
+
if (options.place !== undefined)
|
|
228
|
+
lines.push(options.place);
|
|
204
229
|
lines.push(...formatStatus(tree));
|
|
205
230
|
if (count === 0)
|
|
206
231
|
return [...lines, "(nothing visible; the app may still be loading)"].join("\n");
|
|
207
|
-
lines.push(...tree.elements.slice(0, MAX_ELEMENTS).map((element) => formatElement(element)));
|
|
232
|
+
lines.push(...tree.elements.slice(0, MAX_ELEMENTS).map((element) => formatElement(element, { eyes })));
|
|
208
233
|
if (count > MAX_ELEMENTS)
|
|
209
234
|
lines.push(`(+${count - MAX_ELEMENTS} more below; scroll)`);
|
|
210
235
|
return lines.join("\n");
|
|
211
236
|
}
|
|
237
|
+
/** In a user's eyes: ` (more below)` only where a view can really scroll further, no counts (AGENT-TOOLS 1.12 §17.1). */
|
|
238
|
+
function formatGlassMore(glass) {
|
|
239
|
+
const parts = [];
|
|
240
|
+
if (glass?.moreBelow === true)
|
|
241
|
+
parts.push("more below");
|
|
242
|
+
if (glass?.moreAbove === true)
|
|
243
|
+
parts.push("more above");
|
|
244
|
+
return parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
245
|
+
}
|
|
212
246
|
/** What lies off screen, for the screen line: ` (+41 below, +2 above)`, or nothing. Left and right aren't counted. */
|
|
213
247
|
function formatOffScreen(offScreen) {
|
|
214
248
|
const parts = [];
|
|
@@ -220,12 +254,21 @@ function formatOffScreen(offScreen) {
|
|
|
220
254
|
}
|
|
221
255
|
return parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
222
256
|
}
|
|
257
|
+
/** The off-screen count as a line of its own, for a brief new-screen answer: `(+41 below, +2 above)`; none when there is nothing off screen. */
|
|
258
|
+
export function offScreenLine(tree, eyes = false) {
|
|
259
|
+
const counts = (eyes ? formatGlassMore(tree.glass) : formatOffScreen(tree.offScreen)).trim();
|
|
260
|
+
return counts === "" ? [] : [counts];
|
|
261
|
+
}
|
|
223
262
|
/** A gone element as `<role> "<name>"`. It omits the ref and position on purpose: neither means anything now. */
|
|
224
|
-
function describeGone(element) {
|
|
263
|
+
function describeGone(element, eyes = false) {
|
|
225
264
|
const kind = roleOf(element);
|
|
226
265
|
const text = element.text ?? "";
|
|
227
266
|
const label = element.label ?? "";
|
|
228
267
|
const id = element.testID ?? "";
|
|
268
|
+
if (eyes) {
|
|
269
|
+
const seen = userEyesName(kind, text, label, quoteText(element)).join(" ");
|
|
270
|
+
return [kind, seen].filter((part) => part !== null && part !== "").join(" ") || "element";
|
|
271
|
+
}
|
|
229
272
|
const rest = text !== "" ? quoteText(element) : label !== "" ? quote(label) : id !== "" ? `id=${id}` : "";
|
|
230
273
|
const line = [kind, rest].filter((part) => part !== null && part !== "").join(" ");
|
|
231
274
|
return line !== "" ? line : "element";
|
|
@@ -294,6 +337,12 @@ const MAX_MOVED_LINES = 5;
|
|
|
294
337
|
* route, or most elements new or gone) and the full list reads better.
|
|
295
338
|
*/
|
|
296
339
|
export function formatChanges(tree, options = {}) {
|
|
340
|
+
const parts = changeParts(tree, options);
|
|
341
|
+
return parts === null ? null : [parts.label, ...parts.header, ...parts.changes].join("\n");
|
|
342
|
+
}
|
|
343
|
+
/** The change block in its parts, for a brief answer: the label, the header lines (never cut) and the change lines. */
|
|
344
|
+
export function changeParts(tree, options = {}) {
|
|
345
|
+
const eyes = options.eyes === true;
|
|
297
346
|
const changes = tree.changes;
|
|
298
347
|
if (changes === undefined || !changes.sameRoute)
|
|
299
348
|
return null;
|
|
@@ -311,22 +360,27 @@ export function formatChanges(tree, options = {}) {
|
|
|
311
360
|
const alertGone = options.alertGone === true && (tree.alerts ?? []).length === 0;
|
|
312
361
|
if (alertGone)
|
|
313
362
|
header.unshift("Alert: gone");
|
|
314
|
-
const lines = [
|
|
315
|
-
const statusLines = lines.length;
|
|
363
|
+
const lines = [];
|
|
316
364
|
for (const ref of changes.added) {
|
|
317
365
|
const element = byRef.get(ref);
|
|
318
366
|
if (element !== undefined)
|
|
319
|
-
lines.push(`+ ${formatElement(element)}`);
|
|
367
|
+
lines.push(`+ ${formatElement(element, { eyes })}`);
|
|
320
368
|
}
|
|
321
369
|
for (const element of changes.removed)
|
|
322
|
-
lines.push(`- ${describeGone(element)}`);
|
|
370
|
+
lines.push(`- ${describeGone(element, eyes)}`);
|
|
323
371
|
for (const { ref, was } of changes.changed) {
|
|
324
372
|
const element = byRef.get(ref);
|
|
325
373
|
if (element === undefined)
|
|
326
374
|
continue;
|
|
327
|
-
|
|
375
|
+
// In a user's eyes a label that changed is not on the glass: only what shows is a change.
|
|
376
|
+
const shown = eyes ? Object.fromEntries(Object.entries(was).filter(([key]) => key !== "label")) : was;
|
|
377
|
+
if (eyes && Object.keys(shown).length === 0)
|
|
378
|
+
continue;
|
|
379
|
+
lines.push(`~ ${changedLine(element, shown, eyes)} (was ${formatBefore(shown, element)})`);
|
|
328
380
|
}
|
|
329
|
-
|
|
381
|
+
// What changed out of view is not on the glass, so a user's eyes leave it out.
|
|
382
|
+
if (!eyes)
|
|
383
|
+
lines.push(...formatOffScreenChanges(changes));
|
|
330
384
|
if (changes.moved.length > MAX_MOVED_LINES) {
|
|
331
385
|
lines.push(`↕ ${changes.moved.length} elements moved`);
|
|
332
386
|
}
|
|
@@ -334,13 +388,13 @@ export function formatChanges(tree, options = {}) {
|
|
|
334
388
|
for (const ref of changes.moved) {
|
|
335
389
|
const element = byRef.get(ref);
|
|
336
390
|
if (element !== undefined)
|
|
337
|
-
lines.push(`↕ ${formatElement(element)}`);
|
|
391
|
+
lines.push(`↕ ${formatElement(element, { eyes })}`);
|
|
338
392
|
}
|
|
339
393
|
}
|
|
340
394
|
// A closed alert is itself a change, and so is the keyboard coming or going.
|
|
341
|
-
if (lines.length ===
|
|
395
|
+
if (lines.length === 0 && !alertGone && changes.keyboard == null)
|
|
342
396
|
lines.push("No visible change.");
|
|
343
|
-
return
|
|
397
|
+
return { label: "Same screen. Changes:", header, changes: lines };
|
|
344
398
|
}
|
|
345
399
|
/**
|
|
346
400
|
* Lines for open alerts, the keyboard and requests in flight: things that block or explain the
|
|
@@ -365,6 +419,9 @@ export function formatStatus(tree, keyboard = tree.keyboard === true ? "shown" :
|
|
|
365
419
|
const busy = tree.network?.inFlight ?? 0;
|
|
366
420
|
if (busy > 0)
|
|
367
421
|
lines.push(`Network: ${busy} request${busy === 1 ? "" : "s"} in flight`);
|
|
422
|
+
// Said in every answer while fast animations are on (PLAN-1.6 F4).
|
|
423
|
+
if (tree.animations === "fast")
|
|
424
|
+
lines.push(ANIMATIONS_LINE);
|
|
368
425
|
return lines;
|
|
369
426
|
}
|
|
370
427
|
/** `Network: 3g (Tapline).` — the same line the `network` command answers with and every header carries. */
|