tapline-host 1.6.2 → 1.7.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.
Files changed (108) hide show
  1. package/dist/accounts.d.ts +129 -12
  2. package/dist/accounts.js +844 -75
  3. package/dist/accounts.js.map +1 -1
  4. package/dist/actionlog.d.ts +11 -4
  5. package/dist/actionlog.js +22 -1
  6. package/dist/actionlog.js.map +1 -1
  7. package/dist/animations.d.ts +4 -2
  8. package/dist/animations.js +7 -7
  9. package/dist/animations.js.map +1 -1
  10. package/dist/api.d.ts +7 -1
  11. package/dist/api.js +12 -1
  12. package/dist/api.js.map +1 -1
  13. package/dist/audit.d.ts +1 -0
  14. package/dist/auditlog.d.ts +40 -0
  15. package/dist/auditlog.js +150 -0
  16. package/dist/auditlog.js.map +1 -0
  17. package/dist/cli.d.ts +8 -0
  18. package/dist/cli.js +143 -7
  19. package/dist/cli.js.map +1 -1
  20. package/dist/control.d.ts +51 -0
  21. package/dist/control.js +110 -0
  22. package/dist/control.js.map +1 -1
  23. package/dist/doctor.d.ts +6 -0
  24. package/dist/doctor.js +61 -4
  25. package/dist/doctor.js.map +1 -1
  26. package/dist/drive.d.ts +5 -2
  27. package/dist/drive.js +50 -13
  28. package/dist/drive.js.map +1 -1
  29. package/dist/elicit.d.ts +47 -0
  30. package/dist/elicit.js +87 -0
  31. package/dist/elicit.js.map +1 -1
  32. package/dist/format.d.ts +6 -0
  33. package/dist/format.js +25 -4
  34. package/dist/format.js.map +1 -1
  35. package/dist/grants.d.ts +297 -0
  36. package/dist/grants.js +938 -0
  37. package/dist/grants.js.map +1 -0
  38. package/dist/grantscmd.d.ts +34 -0
  39. package/dist/grantscmd.js +100 -0
  40. package/dist/grantscmd.js.map +1 -0
  41. package/dist/hostfacts.d.ts +23 -0
  42. package/dist/hostfacts.js +65 -0
  43. package/dist/hostfacts.js.map +1 -0
  44. package/dist/inspect.d.ts +3 -2
  45. package/dist/inspect.js +20 -8
  46. package/dist/inspect.js.map +1 -1
  47. package/dist/mapcmd.d.ts +2 -2
  48. package/dist/mcp.js +1 -1
  49. package/dist/nochange.d.ts +1 -0
  50. package/dist/otpclient.d.ts +79 -0
  51. package/dist/otpclient.js +362 -0
  52. package/dist/otpclient.js.map +1 -0
  53. package/dist/pidlock.d.ts +99 -0
  54. package/dist/pidlock.js +382 -0
  55. package/dist/pidlock.js.map +1 -0
  56. package/dist/places.d.ts +11 -0
  57. package/dist/places.js +28 -2
  58. package/dist/places.js.map +1 -1
  59. package/dist/policy.d.ts +2 -1
  60. package/dist/policy.js +5 -2
  61. package/dist/policy.js.map +1 -1
  62. package/dist/protocol.d.ts +4 -0
  63. package/dist/protocol.js +2 -0
  64. package/dist/protocol.js.map +1 -1
  65. package/dist/report.d.ts +8 -0
  66. package/dist/report.js +34 -1
  67. package/dist/report.js.map +1 -1
  68. package/dist/routes.d.ts +1 -1
  69. package/dist/routes.js +27 -11
  70. package/dist/routes.js.map +1 -1
  71. package/dist/runschedule.d.ts +119 -0
  72. package/dist/runschedule.js +281 -0
  73. package/dist/runschedule.js.map +1 -0
  74. package/dist/runtime.d.ts +48 -1
  75. package/dist/runtime.js +214 -18
  76. package/dist/runtime.js.map +1 -1
  77. package/dist/schedule.d.ts +145 -0
  78. package/dist/schedule.js +401 -0
  79. package/dist/schedule.js.map +1 -0
  80. package/dist/schedulehost.d.ts +73 -0
  81. package/dist/schedulehost.js +391 -0
  82. package/dist/schedulehost.js.map +1 -0
  83. package/dist/script.d.ts +2 -0
  84. package/dist/script.js +2 -0
  85. package/dist/script.js.map +1 -1
  86. package/dist/server.d.ts +6 -0
  87. package/dist/server.js +3 -1
  88. package/dist/server.js.map +1 -1
  89. package/dist/thincall.d.ts +13 -0
  90. package/dist/thincall.js +139 -59
  91. package/dist/thincall.js.map +1 -1
  92. package/dist/tool-text-data.d.ts +1 -1
  93. package/dist/tool-text-data.js +1 -1
  94. package/dist/tool-text-data.js.map +1 -1
  95. package/dist/tool-text.d.ts +1 -1
  96. package/dist/tools.d.ts +116 -6
  97. package/dist/tools.js +758 -134
  98. package/dist/tools.js.map +1 -1
  99. package/dist/unlockcmd.d.ts +44 -0
  100. package/dist/unlockcmd.js +80 -0
  101. package/dist/unlockcmd.js.map +1 -0
  102. package/dist/uxcheck.d.ts +1 -0
  103. package/dist/vault.d.ts +75 -0
  104. package/dist/vault.js +395 -0
  105. package/dist/vault.js.map +1 -0
  106. package/package.json +1 -1
  107. package/skills/tapline/SKILL.md +34 -6
  108. package/skills/tapline/references/setup.md +11 -1
package/dist/routes.js CHANGED
@@ -1,5 +1,6 @@
1
- import { readFileSync, statSync } from "node:fs";
1
+ import { existsSync, readFileSync, statSync } from "node:fs";
2
2
  import { join, resolve, sep } from "node:path";
3
+ import { mentionsVault } from "./accounts.js";
3
4
  import { insideDir, loadMap, readRouteSync, saveMap, saveRouteFile } from "./mapfile.js";
4
5
  import { sharedScriptV2Schema } from "./script.js";
5
6
  // Routes (AGENT-TOOLS 1.13 §18.5, §9.4): a script in version 2 that starts at a place, with variables. A route lives in
@@ -22,9 +23,9 @@ export function routeSlug(raw) {
22
23
  }
23
24
  // -- variables
24
25
  /** `${name}` or `${account.field}`; `$${` is a literal `${`. ASCII names only. */
25
- const TOKEN = /\$\$\{|\$\{([A-Za-z_]\w*(?:\.\w+)?)\}/g;
26
- const WHOLE_ACCOUNT = /^\$\{account\.\w+\}$/;
27
- const ACCOUNT_BRIEF = "an account value is the whole text of a step, not part of one.";
26
+ const TOKEN = /\$\$\{|\$\{(otp\.[A-Za-z0-9._-]+|[A-Za-z_]\w*(?:\.\w+){0,2})\}/g;
27
+ const WHOLE_ACCOUNT = /^\$\{(?:account\.\w+|vault\.\w+\.\w+|otp\.[A-Za-z0-9._-]+)\}$/;
28
+ const ACCOUNT_BRIEF = "an account, vault or one-time code value is the whole text of a step, not part of one.";
28
29
  /** Typed text written so a replay reads it back as it was: a literal `${` becomes `$${`. */
29
30
  export function escapeLiteral(text) {
30
31
  // A function, since `$$` in a replacement string means one `$`.
@@ -41,14 +42,14 @@ function fillText(text, { values, variables }) {
41
42
  if (name === undefined)
42
43
  return "${";
43
44
  // An account's value is typed by the tool when the step runs; it stays a placeholder here.
44
- if (name.startsWith("account."))
45
+ if (name.startsWith("account.") || name.startsWith("vault.") || name.startsWith("otp."))
45
46
  return match;
46
47
  if (variables !== undefined && !variables.includes(name))
47
48
  throw new Refusal(`the step uses ${name} but the route's variables don't list it.`);
48
49
  if (!Object.hasOwn(values, name))
49
50
  throw new Refusal(`no value given for the variable "${name}".`);
50
51
  const value = values[name];
51
- if (value.includes("${account."))
52
+ if (mentionsVault(value))
52
53
  throw new Refusal(`the value of "${name}" can't hold an account placeholder; name the account instead.`);
53
54
  return value;
54
55
  });
@@ -65,11 +66,13 @@ function fillValue(value, fill) {
65
66
  }
66
67
  /** An account placeholder in a typed step's text must be the whole text, and a field an account has. */
67
68
  function checkAccountText(text, accounts) {
68
- const found = [...text.matchAll(TOKEN)].filter((m) => m[1]?.startsWith("account.") === true);
69
+ const found = [...text.matchAll(TOKEN)].filter((m) => m[1]?.startsWith("account.") === true || m[1]?.startsWith("vault.") === true || m[1]?.startsWith("otp.") === true);
69
70
  if (found.length === 0)
70
71
  return;
71
72
  if (!WHOLE_ACCOUNT.test(text))
72
- throw new Refusal(ACCOUNT_BRIEF);
73
+ throw new Refusal(text.includes("${vault.") || text.includes("${otp.") ? ACCOUNT_BRIEF : "an account value is the whole text of a step, not part of one.");
74
+ if (found[0]?.[1]?.startsWith("vault.") === true || found[0]?.[1]?.startsWith("otp.") === true)
75
+ return;
73
76
  const field = (found[0]?.[1] ?? "").slice("account.".length);
74
77
  if (accounts !== undefined && field !== "username" && field !== "password") {
75
78
  throw new Refusal(`\${account.${field}} isn't a value an account has; use \${account.username} or \${account.password}.`);
@@ -91,7 +94,7 @@ export function substituteVariables(step, values, accounts, variables) {
91
94
  const filled = Object.fromEntries(Object.entries(step).map(([key, value]) => [key, key === "tool" ? value : fillValue(value, fill)]));
92
95
  // Checked again on the filled text: a literal or a value must never turn into an account placeholder.
93
96
  const after = filled["text"];
94
- if (step.tool === "type_text" && typeof after === "string" && after.includes("${account.") && after !== text) {
97
+ if (step.tool === "type_text" && typeof after === "string" && mentionsVault(after) && after !== text) {
95
98
  throw new Refusal("a literal ${account. can't become an account placeholder; an account value is the whole text of a step, written as its own placeholder.");
96
99
  }
97
100
  return { ok: true, step: filled };
@@ -128,7 +131,7 @@ export function routeTyped(params) {
128
131
  if (typeof as === "string")
129
132
  return { params: { ...rest, text: variablePlaceholder(as) }, placeholder: true, variable: as, account: false };
130
133
  const account = typeof rest["text"] === "string" && rest["text"].includes("${account.");
131
- return { params: rest, placeholder: account, account };
134
+ return { params: rest, placeholder: typeof rest["text"] === "string" && mentionsVault(rest["text"]), account };
132
135
  }
133
136
  function escapeValue(value) {
134
137
  if (typeof value === "string")
@@ -168,7 +171,20 @@ export async function saveRoute(dir, script, map) {
168
171
  if (name === null)
169
172
  throw new Error(`"${script.name}" can't name a route; use letters, digits, '.', '_' and '-'.`);
170
173
  const relative = relativeOf(name);
171
- await saveRouteFile(dir, relative, `${JSON.stringify({ ...script, name }, null, 2)}\n`);
174
+ // Saving over a route never weakens its security metadata: drafts-only stays, and only a person editing the file lifts it.
175
+ const lift = `a person must edit the route file (${relative}) to lift it.`;
176
+ const full = routeFileIn(dir, relative);
177
+ let keepDrafts = false;
178
+ if (full !== null && existsSync(full)) {
179
+ const old = readRouteSync(dir, relative);
180
+ if (old === null)
181
+ throw new Error(`the existing route "${name}" can't be read, so it isn't overwritten (it may be drafts-only); ${lift}`);
182
+ keepDrafts = old["draftsOnly"] === true;
183
+ }
184
+ if (keepDrafts && script.draftsOnly === false)
185
+ throw new Error(`the route "${name}" is drafts-only, and a save can't remove that; ${lift}`);
186
+ const saved = { ...script, name, ...(keepDrafts ? { draftsOnly: true } : {}) };
187
+ await saveRouteFile(dir, relative, `${JSON.stringify(saved, null, 2)}\n`);
172
188
  if (map !== undefined) {
173
189
  map.addRoute(name, relative);
174
190
  await map.flush();
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import { type AuditLog } from "./auditlog.js";
2
+ import { type PidLockDeps } from "./pidlock.js";
3
+ import { type Schedule } from "./schedule.js";
4
+ /**
5
+ * AGENT-TOOLS 1.14 §22.2 and §22.3: `tapline run-schedule NAME`. One run of a saved route with no model: a replay with the grants,
6
+ * the vault and drafts-only in force, which stops at the first failed `expect` or `off_route`, writes the run report and a
7
+ * `schedule` line in the audit log. The host, the clock and the sleeping are injected so a test runs every case without a phone.
8
+ */
9
+ /** How long a run waits for a busy phone (§22.3). */
10
+ export declare const BUSY_WAIT_MS: number;
11
+ /** How often the wait looks again. */
12
+ export declare const BUSY_POLL_MS = 5000;
13
+ /** How long a run waits for the app to connect when it starts its own host. */
14
+ export declare const APP_WAIT_MS = 60000;
15
+ /** How long connecting to a host may take in all (discovery, facts, vault, an own host's setup each have a bound of their own inside it). */
16
+ export declare const CONNECT_TIMEOUT_MS = 120000;
17
+ /** How long closing a host (giving the lease back, stopping an own host) may take. */
18
+ export declare const CLOSE_TIMEOUT_MS = 30000;
19
+ /** Loading a schedule's vault (a keychain or DPAPI subprocess that asks something of the system can stall). */
20
+ export declare const VAULT_LOAD_TIMEOUT_MS = 30000;
21
+ /** A wait in a run that didn't end in time (§22.3): the run fails with `what` named, never waits for ever. */
22
+ export declare class ScheduleTimeout extends Error {
23
+ readonly what: string;
24
+ readonly ms: number;
25
+ constructor(what: string, ms: number);
26
+ }
27
+ /**
28
+ * Runs `work` with a time limit. Past it the request's signal is aborted and the wait ends with a ScheduleTimeout, even for work that
29
+ * ignores the signal (what it does afterwards is dropped). `parent` aborts the same signal (a run that lost its lease cuts its call off).
30
+ */
31
+ export declare function bounded<T>(what: string, ms: number, work: (signal: AbortSignal) => Promise<T>, parent?: AbortSignal): Promise<T>;
32
+ export interface CallAnswer {
33
+ text: string;
34
+ isError: boolean;
35
+ }
36
+ /** What a run needs from a host the app is connected to. */
37
+ export interface ScheduleHost {
38
+ /** Says what ran the route: `a running host`, or `its own host`. */
39
+ via: string;
40
+ /** True when the app is connected, waiting up to `waitMs` for it. */
41
+ appOpen(waitMs: number): Promise<boolean>;
42
+ /** Why the app being closed is not the whole story (a running host that differs from the schedule was passed over). */
43
+ closedNote?: string;
44
+ /** True while an agent or a person is driving the phone (this host knows only its own queue). */
45
+ inUse(): boolean | Promise<boolean>;
46
+ call(tool: string, args: Record<string, unknown>): Promise<CallAnswer>;
47
+ close(): Promise<void>;
48
+ }
49
+ export interface RunDeps extends PidLockDeps {
50
+ configDir: string;
51
+ /** Wall clock: names the report and times the audit lines. */
52
+ now: () => Date;
53
+ /** Monotonic milliseconds for the waits. */
54
+ clock: () => number;
55
+ sleep: (ms: number) => Promise<void>;
56
+ /** A host with the app connected: a running one, else one of its own that takes the schedule's policy, accounts and maps. */
57
+ connect: (schedule: Schedule, name: string) => Promise<ScheduleHost>;
58
+ audit: AuditLog;
59
+ /** Scrubs vault values from the report (§20.3): the scrubber for this schedule's accounts file. */
60
+ redactFor: (schedule: Schedule, signal?: AbortSignal) => Promise<(text: string) => string>;
61
+ pid: number;
62
+ alive: (pid: number) => boolean;
63
+ /** When a process started, as text that is the same each time for one process (null: unknown). A lock keeps it so a reused process id is not taken for the holder. */
64
+ startOf?: (pid: number) => string | null;
65
+ appWaitMs?: number;
66
+ busyWaitMs?: number;
67
+ /** For tests: runs after a run found a leftover lock and before it takes the lock over (another run may get in between). */
68
+ beforeReclaim?: () => void;
69
+ }
70
+ export interface RunOptions {
71
+ /** `--check-trigger`: the file trigger's poll; runs only when a new file has appeared in the folder. */
72
+ checkTrigger?: boolean;
73
+ }
74
+ export type RunStatus = "done" | "failed" | "stopped" | "skipped";
75
+ export interface RunReport {
76
+ schedule: string;
77
+ tool: "tapline";
78
+ route: string;
79
+ /** The variables the run filled, never their values. */
80
+ with: string[];
81
+ status: RunStatus;
82
+ message: string;
83
+ started: string;
84
+ finished: string;
85
+ seconds: number;
86
+ via: string | null;
87
+ report: string;
88
+ "Grants used": string;
89
+ "Vault names used": string;
90
+ grants_used: Array<{
91
+ name: string;
92
+ count: number;
93
+ }>;
94
+ vault_names_used: string[];
95
+ pictures: string[];
96
+ }
97
+ type Outcome = {
98
+ text: string;
99
+ code: number;
100
+ };
101
+ /** `YYYYMMDDTHHMMSSZ`, UTC. */
102
+ export declare function utcStamp(date: Date): string;
103
+ export declare function isBusyAnswer(answer: CallAnswer): boolean;
104
+ /** The step a failed batch stopped at and a short word for why (§23's `failed at step 3 (expect)`). */
105
+ export declare function failureOf(text: string): {
106
+ step: number | null;
107
+ why: string;
108
+ };
109
+ export { processStartTime, type RunProgram } from "./pidlock.js";
110
+ /**
111
+ * One run of a schedule at a time. The lock only answers "is a run of this schedule still going": it counts nothing, and a live
112
+ * holder is never displaced, however long it takes. It is the shared pid-liveness lock (pidlock.ts): published whole by a hard link
113
+ * of a temp file, holding the run's owner token, process id and the process's start time; a leftover only on proof of its holder's
114
+ * death; taken over under `<lock>.takeover`. Returns the owner token, or null when a run holds the lock.
115
+ */
116
+ export declare function takeLock(deps: RunDeps, name: string): string | null;
117
+ /** Releases the lock only while its content is still this run's; another run's lock is never removed. */
118
+ export declare function dropLock(deps: RunDeps, name: string, token: string): void;
119
+ export declare function runSchedule(name: string | undefined, options: RunOptions, deps: RunDeps): Promise<Outcome>;
@@ -0,0 +1,281 @@
1
+ import { mkdirSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { readAuditLines } from "./auditlog.js";
4
+ import { dropPidLock, takePidLock } from "./pidlock.js";
5
+ import { newFilesSince, readScheduleFile, readSeen, resolveWith, schedulePath, schedulesDir, writeSeen } from "./schedule.js";
6
+ /**
7
+ * AGENT-TOOLS 1.14 §22.2 and §22.3: `tapline run-schedule NAME`. One run of a saved route with no model: a replay with the grants,
8
+ * the vault and drafts-only in force, which stops at the first failed `expect` or `off_route`, writes the run report and a
9
+ * `schedule` line in the audit log. The host, the clock and the sleeping are injected so a test runs every case without a phone.
10
+ */
11
+ /** How long a run waits for a busy phone (§22.3). */
12
+ export const BUSY_WAIT_MS = 10 * 60 * 1000;
13
+ /** How often the wait looks again. */
14
+ export const BUSY_POLL_MS = 5000;
15
+ /** How long a run waits for the app to connect when it starts its own host. */
16
+ export const APP_WAIT_MS = 60_000;
17
+ /** How long connecting to a host may take in all (discovery, facts, vault, an own host's setup each have a bound of their own inside it). */
18
+ export const CONNECT_TIMEOUT_MS = 120_000;
19
+ /** How long closing a host (giving the lease back, stopping an own host) may take. */
20
+ export const CLOSE_TIMEOUT_MS = 30_000;
21
+ /** Loading a schedule's vault (a keychain or DPAPI subprocess that asks something of the system can stall). */
22
+ export const VAULT_LOAD_TIMEOUT_MS = 30_000;
23
+ /** A wait in a run that didn't end in time (§22.3): the run fails with `what` named, never waits for ever. */
24
+ export class ScheduleTimeout extends Error {
25
+ what;
26
+ ms;
27
+ constructor(what, ms) {
28
+ super(`${what} didn't answer within ${Math.round(ms / 1000)} s`);
29
+ this.what = what;
30
+ this.ms = ms;
31
+ }
32
+ }
33
+ /**
34
+ * Runs `work` with a time limit. Past it the request's signal is aborted and the wait ends with a ScheduleTimeout, even for work that
35
+ * ignores the signal (what it does afterwards is dropped). `parent` aborts the same signal (a run that lost its lease cuts its call off).
36
+ */
37
+ export async function bounded(what, ms, work, parent) {
38
+ const cut = new AbortController();
39
+ const onParent = () => cut.abort();
40
+ if (parent?.aborted === true)
41
+ cut.abort();
42
+ else
43
+ parent?.addEventListener("abort", onParent, { once: true });
44
+ let timer;
45
+ const late = new Promise((_resolve, reject) => {
46
+ timer = setTimeout(() => {
47
+ cut.abort();
48
+ reject(new ScheduleTimeout(what, ms));
49
+ }, ms);
50
+ });
51
+ const job = work(cut.signal);
52
+ job.catch(() => undefined); // a job that fails after the time ran out is not an unhandled rejection
53
+ try {
54
+ return await Promise.race([job, late]);
55
+ }
56
+ finally {
57
+ clearTimeout(timer);
58
+ parent?.removeEventListener("abort", onParent);
59
+ }
60
+ }
61
+ const SKIP_USE = "skipped: the phone was in use";
62
+ const SKIP_PREVIOUS = "skipped: the previous run is still going";
63
+ const SKIP_CLOSED = "skipped: the app is not open";
64
+ const STOP_DRAFT = "stopped: a draft is waiting for a person.";
65
+ const STOP_LOST = "stopped: the run lost the phone.";
66
+ /** `YYYYMMDDTHHMMSSZ`, UTC. */
67
+ export function utcStamp(date) {
68
+ return date.toISOString().replace(/\.\d+Z$/, "Z").replace(/[-:]/g, "");
69
+ }
70
+ export function isBusyAnswer(answer) {
71
+ return answer.isError && /^Error (busy|paused):/.test(answer.text) && !/Ran [1-9]\d* of/.test(answer.text);
72
+ }
73
+ /** The step a failed batch stopped at and a short word for why (§23's `failed at step 3 (expect)`). */
74
+ export function failureOf(text) {
75
+ const code = /^Error (\w+):/.exec(text)?.[1] ?? "error";
76
+ const step = /stopped at step (\d+)/.exec(text)?.[1];
77
+ const why = code === "expect_failed" ? "expect" : code;
78
+ return { step: step === undefined ? null : Number(step), why };
79
+ }
80
+ function lockPath(configDir, name) {
81
+ return join(schedulesDir(configDir), `${name}.lock`);
82
+ }
83
+ export { processStartTime } from "./pidlock.js";
84
+ /**
85
+ * One run of a schedule at a time. The lock only answers "is a run of this schedule still going": it counts nothing, and a live
86
+ * holder is never displaced, however long it takes. It is the shared pid-liveness lock (pidlock.ts): published whole by a hard link
87
+ * of a temp file, holding the run's owner token, process id and the process's start time; a leftover only on proof of its holder's
88
+ * death; taken over under `<lock>.takeover`. Returns the owner token, or null when a run holds the lock.
89
+ */
90
+ export function takeLock(deps, name) {
91
+ mkdirSync(schedulesDir(deps.configDir), { recursive: true });
92
+ return takePidLock(deps, lockPath(deps.configDir, name));
93
+ }
94
+ /** Releases the lock only while its content is still this run's; another run's lock is never removed. */
95
+ export function dropLock(deps, name, token) {
96
+ dropPidLock(lockPath(deps.configDir, name), token);
97
+ }
98
+ function writeReport(deps, redact, name, startedAt, report) {
99
+ const dir = join(deps.configDir, "runs");
100
+ try {
101
+ mkdirSync(dir, { recursive: true });
102
+ const redacted = JSON.parse(redact(JSON.stringify(report, null, 2)));
103
+ for (let n = 0; n < 100; n++) {
104
+ const path = join(dir, `${name}-${utcStamp(startedAt)}${n === 0 ? "" : `-${n + 1}`}.json`);
105
+ try {
106
+ writeFileSync(path, `${JSON.stringify(redacted, null, 2)}\n`, { flag: "wx", mode: 0o600 });
107
+ return path;
108
+ }
109
+ catch (error) {
110
+ if (error.code !== "EEXIST")
111
+ return null;
112
+ }
113
+ }
114
+ }
115
+ catch {
116
+ // a report that can't be written never changes what the run did; the audit line stays
117
+ }
118
+ return null;
119
+ }
120
+ /** The pictures a replay's failure left (a red diff, a `.jpg` path in its answer). */
121
+ function picturesIn(text) {
122
+ return [...new Set(text.match(/[^\s"'()]+\.(?:jpg|png|gif)/g) ?? [])];
123
+ }
124
+ const countsLine = (counts) => counts.length === 0 ? "none" : counts.map((c) => `${c.name} (${c.count})`).join(", ");
125
+ export async function runSchedule(name, options, deps) {
126
+ if (name === undefined)
127
+ return { text: "Usage: tapline run-schedule NAME", code: 2 };
128
+ const path = schedulePath(deps.configDir, name);
129
+ const read = readScheduleFile(path);
130
+ if (!read.ok)
131
+ return { text: `Can't run "${name}": ${read.message}`, code: 2 };
132
+ const schedule = read.schedule;
133
+ // The file trigger's poll: nothing new, nothing to say (no run, no skip, no audit line).
134
+ let newest = null;
135
+ if (options.checkTrigger === true) {
136
+ if (schedule.trigger === null)
137
+ return { text: `"${name}" starts on a time, not on a file; --check-trigger is for file triggers.`, code: 2 };
138
+ const since = readSeen(deps.configDir, name) ?? deps.now().getTime();
139
+ const found = newFilesSince(schedule.trigger.file, since);
140
+ if (found.files.length === 0)
141
+ return { text: "", code: 0 };
142
+ newest = found.newest;
143
+ }
144
+ const startedAt = deps.now();
145
+ // The first load of the vault is bounded, and its subprocess (the keychain, DPAPI) is killed when the time runs out. Without the vault
146
+ // there is no scrubber to report through, so the run doesn't start and never goes on with one that hides nothing. No lock is held yet.
147
+ let redact;
148
+ try {
149
+ redact = await bounded("loading the vault", VAULT_LOAD_TIMEOUT_MS, (signal) => deps.redactFor(schedule, signal));
150
+ }
151
+ catch (error) {
152
+ const why = error instanceof Error ? error.message : String(error);
153
+ deps.audit.write({ kind: "schedule", name, detail: "failed at step 0 (timeout)" });
154
+ return { text: `Schedule "${name}" couldn't start: ${why}`, code: 2 };
155
+ }
156
+ const base = { schedule: name, tool: "tapline", route: schedule.route, with: Object.keys(schedule.with) };
157
+ const finishWith = (status, message, detail, code, extra = {}) => {
158
+ const finished = deps.now();
159
+ const used = new Map();
160
+ const vault = new Set();
161
+ if (extra.sinceMs !== undefined) {
162
+ for (const { entry } of readAuditLines(deps.audit.folder, extra.sinceMs)) {
163
+ if (entry?.name === undefined)
164
+ continue;
165
+ if (entry.kind === "grant")
166
+ used.set(entry.name, (used.get(entry.name) ?? 0) + 1);
167
+ else if (entry.kind === "vault")
168
+ vault.add(entry.name);
169
+ }
170
+ }
171
+ const grants = [...used].map(([n, count]) => ({ name: n, count }));
172
+ const vaultNames = [...vault];
173
+ const grantsLine = `Grants used: ${countsLine(grants)}`;
174
+ const vaultLine = `Vault names used: ${vaultNames.length === 0 ? "none" : vaultNames.join(", ")}`;
175
+ const seconds = extra.seconds ?? (finished.getTime() - startedAt.getTime()) / 1000;
176
+ const answer = extra.report ?? "";
177
+ const report = {
178
+ ...base,
179
+ status,
180
+ message,
181
+ started: startedAt.toISOString(),
182
+ finished: finished.toISOString(),
183
+ seconds: Math.round(seconds * 10) / 10,
184
+ via: extra.via ?? null,
185
+ report: [answer, grantsLine, vaultLine].filter((line) => line !== "").join("\n"),
186
+ "Grants used": countsLine(grants),
187
+ "Vault names used": vaultNames.length === 0 ? "none" : vaultNames.join(", "),
188
+ grants_used: grants,
189
+ vault_names_used: vaultNames,
190
+ pictures: picturesIn(answer),
191
+ };
192
+ const written = writeReport(deps, redact, name, startedAt, report);
193
+ deps.audit.write({ kind: "schedule", name, detail });
194
+ const head = status === "done" ? `Ran "${name}" in ${report.seconds} s: done.` : `Schedule "${name}" ${message}`;
195
+ const text = [head, ...(answer !== "" ? [redact(answer)] : []), grantsLine, vaultLine, ...(written !== null ? [`Report: ${written}`] : [])].join("\n");
196
+ return { text, code };
197
+ };
198
+ const skip = (line, via) => finishWith("skipped", line, line, 2, { via: via ?? null });
199
+ const values = resolveWith(schedule.with, schedulesDir(deps.configDir));
200
+ if (!values.ok)
201
+ return finishWith("failed", `couldn't start: ${values.message}`, `failed at step 0 (start)`, 2);
202
+ const lockToken = takeLock(deps, name);
203
+ if (lockToken === null)
204
+ return skip(SKIP_PREVIOUS);
205
+ let host;
206
+ try {
207
+ try {
208
+ host = await bounded("connecting to a host", CONNECT_TIMEOUT_MS, () => deps.connect(schedule, name));
209
+ }
210
+ catch (error) {
211
+ const why = error instanceof Error ? error.message : String(error);
212
+ return finishWith("failed", `couldn't start: ${why}`, `failed at step 0 (start)`, 2);
213
+ }
214
+ if (!(await host.appOpen(deps.appWaitMs ?? APP_WAIT_MS)))
215
+ return skip(host.closedNote === undefined ? SKIP_CLOSED : `${SKIP_CLOSED} (${host.closedNote})`, host.via);
216
+ // The phone is busy while a person or an agent drives it: wait up to 10 minutes, then do nothing (§22.3).
217
+ const busyMs = deps.busyWaitMs ?? BUSY_WAIT_MS;
218
+ const deadline = deps.clock() + busyMs;
219
+ const tool = Object.keys(values.values).length > 0 ? "drive" : "replay";
220
+ const args = tool === "drive" ? { route: schedule.route, with: values.values } : { name: schedule.route };
221
+ let answer;
222
+ let sinceMs = 0;
223
+ let t0 = 0;
224
+ let started = false;
225
+ for (;;) {
226
+ if (!(await host.inUse())) {
227
+ if (!started) {
228
+ started = true;
229
+ sinceMs = deps.now().getTime();
230
+ t0 = deps.clock();
231
+ deps.audit.write({ kind: "schedule", name, detail: "started" });
232
+ }
233
+ try {
234
+ answer = await host.call(tool, args);
235
+ }
236
+ catch (error) {
237
+ answer = { text: `Error internal: ${error instanceof Error ? error.message : String(error)}`, isError: true };
238
+ }
239
+ if (!isBusyAnswer(answer)) {
240
+ // The file's time is saved only once the route has begun (or its outcome is unknown, which counts as begun): a skip (the app is
241
+ // closed, the phone is busy or paused through the whole wait) or a failure to connect leaves the file for the next check.
242
+ if (newest !== null)
243
+ writeSeen(deps.configDir, name, newest);
244
+ break;
245
+ }
246
+ }
247
+ const left = deadline - deps.clock();
248
+ if (left <= 0)
249
+ return skip(SKIP_USE, host.via);
250
+ await deps.sleep(Math.min(BUSY_POLL_MS, left));
251
+ }
252
+ const seconds = (deps.clock() - t0) / 1000;
253
+ const extra = { report: answer.text, via: host.via, sinceMs, seconds };
254
+ if (!answer.isError)
255
+ return finishWith("done", "done", "done", 0, extra);
256
+ if (/a draft is waiting for a person|the draft wasn't sent/.test(answer.text))
257
+ return finishWith("stopped", STOP_DRAFT, STOP_DRAFT, 1, extra);
258
+ // The host's lease was lost mid-run (a failed renewal, or another host answered): nothing further ran, and the run is a failure (§22.3).
259
+ if (/^Error lease_lost:/.test(answer.text))
260
+ return finishWith("failed", STOP_LOST, STOP_LOST, 1, extra);
261
+ const failure = failureOf(answer.text);
262
+ const detail = failure.step === null ? `failed (${failure.why})` : `failed at step ${failure.step} (${failure.why})`;
263
+ // A route that could not start (no such route, a variable with no value) is "couldn't start", as in replay.
264
+ const couldntStart = /^Error (not_found|bad_params|not_connected|internal):/.test(answer.text) && !/Ran \d+ of/.test(answer.text);
265
+ return finishWith("failed", detail, detail, couldntStart ? 2 : 1, extra);
266
+ }
267
+ catch (error) {
268
+ // A wait in the host path that ran out of time (the app's answer, the lease): the run fails with the reason (§22.3).
269
+ if (error instanceof ScheduleTimeout)
270
+ return finishWith("failed", `couldn't start: ${error.message}`, "failed at step 0 (timeout)", 2);
271
+ throw error;
272
+ }
273
+ finally {
274
+ // The lock goes first, whatever the host does while closing.
275
+ dropLock(deps, name, lockToken);
276
+ const opened = host;
277
+ if (opened !== undefined)
278
+ await bounded("closing the host", CLOSE_TIMEOUT_MS, () => opened.close()).catch(() => undefined);
279
+ }
280
+ }
281
+ //# sourceMappingURL=runschedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runschedule.js","sourceRoot":"","sources":["../src/runschedule.ts"],"names":[],"mappings":"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"}