things-api 0.19.0 → 0.19.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.
Files changed (131) hide show
  1. package/README.md +3 -1
  2. package/deputy/prebuilt/Things API Helper.app/Contents/CodeResources +0 -0
  3. package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/MacOS/things-reader +0 -0
  4. package/deputy/prebuilt/Things API Helper.app/Contents/MacOS/things-deputy +0 -0
  5. package/dist/audit/schema.d.ts +19 -2
  6. package/dist/audit/schema.js.map +1 -1
  7. package/dist/capability.d.ts +166 -4
  8. package/dist/capability.js +303 -13
  9. package/dist/capability.js.map +1 -1
  10. package/dist/cli/commands/doctor.d.ts +13 -1
  11. package/dist/cli/commands/doctor.js +24 -14
  12. package/dist/cli/commands/doctor.js.map +1 -1
  13. package/dist/cli/commands/helpers.js +14 -3
  14. package/dist/cli/commands/helpers.js.map +1 -1
  15. package/dist/cli/commands/mcp.js +8 -0
  16. package/dist/cli/commands/mcp.js.map +1 -1
  17. package/dist/cli/commands/repeat-flags.js +34 -2
  18. package/dist/cli/commands/repeat-flags.js.map +1 -1
  19. package/dist/cli/commands/setup.js +16 -3
  20. package/dist/cli/commands/setup.js.map +1 -1
  21. package/dist/cli/commands/writes.js +102 -67
  22. package/dist/cli/commands/writes.js.map +1 -1
  23. package/dist/cli/interrupt.d.ts +54 -6
  24. package/dist/cli/interrupt.js +78 -12
  25. package/dist/cli/interrupt.js.map +1 -1
  26. package/dist/cli/main.js +8 -5
  27. package/dist/cli/main.js.map +1 -1
  28. package/dist/client.d.ts +1 -1
  29. package/dist/contracts.d.ts +3 -3
  30. package/dist/contracts.js +1 -1
  31. package/dist/deputy/install.d.ts +15 -1
  32. package/dist/deputy/install.js +46 -6
  33. package/dist/deputy/install.js.map +1 -1
  34. package/dist/deputy/routing.d.ts +16 -0
  35. package/dist/deputy/routing.js +70 -0
  36. package/dist/deputy/routing.js.map +1 -1
  37. package/dist/deputy/wake.d.ts +61 -0
  38. package/dist/deputy/wake.js +149 -0
  39. package/dist/deputy/wake.js.map +1 -0
  40. package/dist/diagnose.d.ts +6 -4
  41. package/dist/diagnose.js +20 -4
  42. package/dist/diagnose.js.map +1 -1
  43. package/dist/direct-setup.d.ts +31 -5
  44. package/dist/direct-setup.js +200 -26
  45. package/dist/direct-setup.js.map +1 -1
  46. package/dist/host-access.d.ts +12 -0
  47. package/dist/host-access.js +12 -0
  48. package/dist/host-access.js.map +1 -1
  49. package/dist/index.d.ts +3 -3
  50. package/dist/index.js +2 -2
  51. package/dist/index.js.map +1 -1
  52. package/dist/mcp/server.js +23 -9
  53. package/dist/mcp/server.js.map +1 -1
  54. package/dist/op-result.js +8 -1
  55. package/dist/op-result.js.map +1 -1
  56. package/dist/session-grant.js +16 -1
  57. package/dist/session-grant.js.map +1 -1
  58. package/dist/surface-copy.d.ts +11 -3
  59. package/dist/surface-copy.js +11 -3
  60. package/dist/surface-copy.js.map +1 -1
  61. package/dist/wizard.js +8 -1
  62. package/dist/wizard.js.map +1 -1
  63. package/dist/write/availability.d.ts +0 -15
  64. package/dist/write/availability.js +7 -62
  65. package/dist/write/availability.js.map +1 -1
  66. package/dist/write/batch.js +17 -6
  67. package/dist/write/batch.js.map +1 -1
  68. package/dist/write/commands.d.ts +10 -6
  69. package/dist/write/commands.js +120 -31
  70. package/dist/write/commands.js.map +1 -1
  71. package/dist/write/failure-hints.d.ts +29 -6
  72. package/dist/write/failure-hints.js +9 -14
  73. package/dist/write/failure-hints.js.map +1 -1
  74. package/dist/write/guards.js +3 -2
  75. package/dist/write/guards.js.map +1 -1
  76. package/dist/write/move.js +9 -12
  77. package/dist/write/move.js.map +1 -1
  78. package/dist/write/operations.d.ts +15 -8
  79. package/dist/write/operations.js +9 -0
  80. package/dist/write/operations.js.map +1 -1
  81. package/dist/write/opid.d.ts +67 -23
  82. package/dist/write/opid.js +141 -19
  83. package/dist/write/opid.js.map +1 -1
  84. package/dist/write/param-schema.d.ts +0 -44
  85. package/dist/write/param-schema.js +10 -3
  86. package/dist/write/param-schema.js.map +1 -1
  87. package/dist/write/pipeline.d.ts +38 -7
  88. package/dist/write/pipeline.js +104 -18
  89. package/dist/write/pipeline.js.map +1 -1
  90. package/dist/write/pre-state.d.ts +30 -16
  91. package/dist/write/pre-state.js +88 -20
  92. package/dist/write/pre-state.js.map +1 -1
  93. package/dist/write/promote-clone.js +132 -18
  94. package/dist/write/promote-clone.js.map +1 -1
  95. package/dist/write/repeat-collateral.d.ts +31 -0
  96. package/dist/write/repeat-collateral.js +153 -0
  97. package/dist/write/repeat-collateral.js.map +1 -0
  98. package/dist/write/resolution-timestamps.js +25 -2
  99. package/dist/write/resolution-timestamps.js.map +1 -1
  100. package/dist/write/template-mutation.js +163 -16
  101. package/dist/write/template-mutation.js.map +1 -1
  102. package/dist/write/vectors/applescript.js +3 -10
  103. package/dist/write/vectors/applescript.js.map +1 -1
  104. package/dist/write/vectors/simulator.js +8 -2
  105. package/dist/write/vectors/simulator.js.map +1 -1
  106. package/dist/write/vectors/types.d.ts +211 -1
  107. package/dist/write/vectors/ui-certification.js +63 -13
  108. package/dist/write/vectors/ui-certification.js.map +1 -1
  109. package/dist/write/vectors/ui-chord.d.ts +144 -0
  110. package/dist/write/vectors/ui-chord.js +428 -0
  111. package/dist/write/vectors/ui-chord.js.map +1 -0
  112. package/dist/write/vectors/ui-drag.d.ts +8 -4
  113. package/dist/write/vectors/ui-drag.js +2 -0
  114. package/dist/write/vectors/ui-drag.js.map +1 -1
  115. package/dist/write/vectors/ui-recipes.d.ts +51 -3
  116. package/dist/write/vectors/ui-recipes.js +452 -44
  117. package/dist/write/vectors/ui-recipes.js.map +1 -1
  118. package/dist/write/vectors/ui.d.ts +267 -10
  119. package/dist/write/vectors/ui.js +1006 -64
  120. package/dist/write/vectors/ui.js.map +1 -1
  121. package/dist/write/vectors/url-scheme.js +3 -0
  122. package/dist/write/vectors/url-scheme.js.map +1 -1
  123. package/dist/write/verify/delta.d.ts +41 -0
  124. package/dist/write/verify/delta.js +36 -2
  125. package/dist/write/verify/delta.js.map +1 -1
  126. package/dist/write/verify/poller.d.ts +4 -1
  127. package/dist/write/verify/poller.js +14 -0
  128. package/dist/write/verify/poller.js.map +1 -1
  129. package/package.json +1 -1
  130. package/schema/envelope.schema.json +1 -1
  131. package/skills/things-cli/SKILL.md +1 -1
@@ -0,0 +1,61 @@
1
+ import type { AutomationPermission } from "./protocol.ts";
2
+ /** The GUI-driving target: the macOS component that reads and presses controls. */
3
+ export declare const SYSTEM_EVENTS_BUNDLE_ID = "com.apple.systemevents";
4
+ /** The Things application — the AppleScript vector's target. */
5
+ export declare const THINGS_BUNDLE_ID = "com.culturedcode.ThingsMac";
6
+ /**
7
+ * One Automation target, described the two ways this module needs it: the
8
+ * bundle id LaunchServices starts, and the `automation` field of the deputy's
9
+ * hello that carries its determination.
10
+ */
11
+ export interface WakeTarget {
12
+ bundleId: string;
13
+ field: "systemEvents" | "things";
14
+ /** How long the target may take to come up before the wake is a failure. */
15
+ timeoutMs: number;
16
+ }
17
+ /**
18
+ * System Events comes up in milliseconds — it is a headless agent with nothing
19
+ * to restore (SEWAKE1: `granted` on the FIRST ask after the launch, 10 ms).
20
+ */
21
+ export declare const SYSTEM_EVENTS_TARGET: WakeTarget;
22
+ /**
23
+ * Things is a full document app that opens a window and its database, so it is
24
+ * given a longer bound than the agent. This wait only covers becoming
25
+ * ANSWERABLE to the determination; the pipeline separately waits for the app to
26
+ * be ready to land a write (src/write/pipeline.ts, the #486 startup window).
27
+ */
28
+ export declare const THINGS_TARGET: WakeTarget;
29
+ export interface TargetWake {
30
+ /**
31
+ * The target's Automation standing once it is up. `not-running` (or
32
+ * undefined) means the wake did NOT take — a liveness failure, and the only
33
+ * state a caller may refuse on with liveness copy.
34
+ */
35
+ standing: AutomationPermission | undefined;
36
+ /** One clause of provenance, for the refusal when the wake did not take. */
37
+ detail: string;
38
+ }
39
+ export interface WakeDeps {
40
+ /** Start the target in the background. Throws when the launch is refused. */
41
+ launch?: () => void;
42
+ /** Re-read the deputy's ask-false determination for the target. */
43
+ probe?: () => AutomationPermission | undefined;
44
+ sleep?: (ms: number) => void;
45
+ now?: () => number;
46
+ timeoutMs?: number;
47
+ intervalMs?: number;
48
+ }
49
+ /**
50
+ * Start a dormant Automation target, then report where its grant actually
51
+ * stands. Prompt-free by construction — see the module comment for why the
52
+ * launch must precede the determination.
53
+ *
54
+ * Call this only when the deputy has just reported `not-running`: on a live
55
+ * target the determination is already the truth and the launch buys nothing.
56
+ */
57
+ export declare function wakeTarget(target: WakeTarget, env?: NodeJS.ProcessEnv, deps?: WakeDeps): TargetWake;
58
+ /** Wake the GUI-driving target (#610). */
59
+ export declare function wakeSystemEvents(env?: NodeJS.ProcessEnv, deps?: WakeDeps): TargetWake;
60
+ /** Wake the AppleScript vector's target — the user's own Things app (#617). */
61
+ export declare function wakeThings(env?: NodeJS.ProcessEnv, deps?: WakeDeps): TargetWake;
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Waking a dormant Automation target — LIVENESS before authorization.
3
+ *
4
+ * `AEDeterminePermissionToAutomateTarget(askUserIfNeeded: false)` cannot answer
5
+ * for a target that is not running: it returns procNotFound, which the deputy
6
+ * reports as `not-running` (deputy/src/tcc.swift). That value is a fact about
7
+ * the PROCESS, never a verdict on the grant, and reading it as one is what made
8
+ * a fully onboarded machine get steered back through onboarding (#610 for
9
+ * System Events, #617 for Things itself).
10
+ *
11
+ * Two targets, one mechanism:
12
+ *
13
+ * - **System Events** is an on-demand macOS agent the system reaps whenever it
14
+ * has been idle. Its dormancy is the DEFAULT state, not an edge case
15
+ * (SEWAKE1 measured it down on a freshly booted machine that had done
16
+ * nothing).
17
+ * - **Things** is the user's own app, closed whenever they are not using it.
18
+ *
19
+ * The resolution, and why the ORDER is not negotiable:
20
+ *
21
+ * 1. LAUNCH the target first, with a plain background LaunchServices dispatch
22
+ * (`open -g -b`). An app launch is not a TCC-gated act: it raises no consent
23
+ * dialog, on any grant state, ever.
24
+ * 2. Only THEN re-read the ask-false determination. Doing it the other way
25
+ * round — sending the target an Apple event to wake it — auto-launches it
26
+ * AND raises the consent dialog when no grant is on record, which is exactly
27
+ * the surprise the permissions doctrine forbids outside the two ceremonies
28
+ * (docs/design/permissions-doctrine.md, Article I). For Things the order
29
+ * buys a second thing measured independently: an Apple event to a CLOSED
30
+ * Things auto-launches it with FOCUS STEAL (tier 2, A40/A41), while
31
+ * `open -g` keeps the operation at tier 0/1 — so the wake is the pre-launch
32
+ * the AppleScript vector wants anyway.
33
+ *
34
+ * The wait is closed-loop: the determination is re-asked until it stops saying
35
+ * `not-running`, bounded, with no fixed sleep standing in for the answer. When
36
+ * the target never comes up the caller gets a LIVENESS verdict to refuse on —
37
+ * never a permission one.
38
+ *
39
+ * WHO MAY CALL THIS. A launch is a side effect, so it belongs to callers that
40
+ * are about to DRIVE the target (the write gate before a dispatch, the two
41
+ * setup ceremonies). A survey — `doctor`, the MCP startup bake — must never
42
+ * launch the user's app as a diagnostic side effect; it reports the liveness
43
+ * state instead (src/capability.ts).
44
+ */
45
+ import { execFileSync } from "node:child_process";
46
+ import { deputySyncRequest } from "./routing.js";
47
+ /** The GUI-driving target: the macOS component that reads and presses controls. */
48
+ export const SYSTEM_EVENTS_BUNDLE_ID = "com.apple.systemevents";
49
+ /** The Things application — the AppleScript vector's target. */
50
+ export const THINGS_BUNDLE_ID = "com.culturedcode.ThingsMac";
51
+ /** How often the determination is re-asked while waiting. */
52
+ const WAKE_POLL_INTERVAL_MS = 50;
53
+ /** How long the launch itself may take before it counts as refused. */
54
+ const LAUNCH_TIMEOUT_MS = 10_000;
55
+ /**
56
+ * System Events comes up in milliseconds — it is a headless agent with nothing
57
+ * to restore (SEWAKE1: `granted` on the FIRST ask after the launch, 10 ms).
58
+ */
59
+ export const SYSTEM_EVENTS_TARGET = {
60
+ bundleId: SYSTEM_EVENTS_BUNDLE_ID,
61
+ field: "systemEvents",
62
+ timeoutMs: 5_000,
63
+ };
64
+ /**
65
+ * Things is a full document app that opens a window and its database, so it is
66
+ * given a longer bound than the agent. This wait only covers becoming
67
+ * ANSWERABLE to the determination; the pipeline separately waits for the app to
68
+ * be ready to land a write (src/write/pipeline.ts, the #486 startup window).
69
+ */
70
+ export const THINGS_TARGET = {
71
+ bundleId: THINGS_BUNDLE_ID,
72
+ field: "things",
73
+ timeoutMs: 10_000,
74
+ };
75
+ function launchInBackground(bundleId) {
76
+ execFileSync("open", ["-g", "-b", bundleId], {
77
+ stdio: "ignore",
78
+ timeout: LAUNCH_TIMEOUT_MS,
79
+ });
80
+ }
81
+ /**
82
+ * A FRESH determination off the deputy, not the handshake the routing layer
83
+ * memoized at activation — the whole point of the re-probe is that the world
84
+ * changed since then. A deputy that stops answering mid-wake reads as
85
+ * undefined, which keeps the loop waiting rather than manufacturing a verdict.
86
+ */
87
+ function targetStanding(env, field) {
88
+ try {
89
+ const res = deputySyncRequest({ verb: "hello" }, 2000, env);
90
+ const automation = res["automation"];
91
+ return automation?.[field];
92
+ }
93
+ catch {
94
+ return undefined;
95
+ }
96
+ }
97
+ function syncSleep(ms) {
98
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
99
+ }
100
+ /** True while the target is still down (or the determination is still unread). */
101
+ function stillDown(standing) {
102
+ return standing === undefined || standing === "not-running";
103
+ }
104
+ /**
105
+ * Start a dormant Automation target, then report where its grant actually
106
+ * stands. Prompt-free by construction — see the module comment for why the
107
+ * launch must precede the determination.
108
+ *
109
+ * Call this only when the deputy has just reported `not-running`: on a live
110
+ * target the determination is already the truth and the launch buys nothing.
111
+ */
112
+ export function wakeTarget(target, env = process.env, deps = {}) {
113
+ const probe = deps.probe ?? (() => targetStanding(env, target.field));
114
+ const sleep = deps.sleep ?? syncSleep;
115
+ const now = deps.now ?? Date.now;
116
+ const timeoutMs = deps.timeoutMs ?? target.timeoutMs;
117
+ const intervalMs = deps.intervalMs ?? WAKE_POLL_INTERVAL_MS;
118
+ try {
119
+ (deps.launch ?? (() => launchInBackground(target.bundleId)))();
120
+ }
121
+ catch (err) {
122
+ return {
123
+ standing: "not-running",
124
+ detail: `it could not be started (${err instanceof Error ? err.message : String(err)})`,
125
+ };
126
+ }
127
+ const deadline = now() + timeoutMs;
128
+ let standing = probe();
129
+ while (stillDown(standing) && now() < deadline) {
130
+ sleep(intervalMs);
131
+ standing = probe();
132
+ }
133
+ if (stillDown(standing)) {
134
+ return {
135
+ standing,
136
+ detail: `it did not come up within ${Math.round(timeoutMs / 1000)}s of being started`,
137
+ };
138
+ }
139
+ return { standing, detail: "started on demand" };
140
+ }
141
+ /** Wake the GUI-driving target (#610). */
142
+ export function wakeSystemEvents(env = process.env, deps = {}) {
143
+ return wakeTarget(SYSTEM_EVENTS_TARGET, env, deps);
144
+ }
145
+ /** Wake the AppleScript vector's target — the user's own Things app (#617). */
146
+ export function wakeThings(env = process.env, deps = {}) {
147
+ return wakeTarget(THINGS_TARGET, env, deps);
148
+ }
149
+ //# sourceMappingURL=wake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake.js","sourceRoot":"","sources":["../../src/deputy/wake.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { type HelpersMode } from "./config.ts";
2
2
  import { type HelpersStatus } from "./deputy/install.ts";
3
3
  import { type HelpersRouting } from "./deputy/routing.ts";
4
- import { type ReadCapability, type UiCapability, type WriteCapability } from "./capability.ts";
4
+ import { type CapabilityDeps, type ReadCapability, type UiCapability, type UrlSchemeCapability, type WriteCapability } from "./capability.ts";
5
5
  import { type AutomationProbeDeps, type AutomationProbeStatus } from "./write/automation-probe.ts";
6
6
  import { type AccessibilityProbeDeps, type AccessibilityProbeStatus } from "./write/accessibility-probe.ts";
7
7
  import { type CertificationStatus } from "./write/vectors/ui-certification.ts";
8
- import { type AvailabilityDeps, type ShortcutsState, type UrlSchemeState } from "./write/availability.ts";
8
+ import { type AvailabilityDeps, type ShortcutsState } from "./write/availability.ts";
9
9
  import { type EnvironmentChange, type EnvironmentTracker, type EnvironmentTuple } from "./write/environment.ts";
10
10
  import { type SyncHealth, type SyncHealthDeps } from "./sync-health.ts";
11
11
  import { ExitCode, type EnvelopeMeta, type ErrorCode } from "./contracts.ts";
@@ -142,8 +142,8 @@ export interface DiagnoseReport {
142
142
  reason: string;
143
143
  };
144
144
  availability: {
145
- /** On-disk 'Enable Things URLs' state (group-container plist; Phase 21b). */
146
- urlScheme: UrlSchemeState;
145
+ /** Things' own 'Enable Things URLs' authorization (capability.ts; URLEN1). */
146
+ urlScheme: UrlSchemeCapability;
147
147
  /** Which proxy shortcuts are installed (the Shortcuts surface's prerequisites). */
148
148
  shortcuts: ShortcutsState;
149
149
  };
@@ -205,6 +205,8 @@ export interface DiagnoseOptions {
205
205
  accessibilityProbeDeps?: AccessibilityProbeDeps;
206
206
  environment?: EnvironmentTracker;
207
207
  availability?: AvailabilityDeps;
208
+ /** Test seams for the prompt-free capability verdicts (capability.ts). */
209
+ capability?: CapabilityDeps;
208
210
  /** Test seams for the sync-health section (clock, process check, WAL/plist readers). */
209
211
  syncHealth?: SyncHealthDeps;
210
212
  /**
package/dist/diagnose.js CHANGED
@@ -15,13 +15,13 @@ import { createDeputyDbFacade } from "./deputy/db-facade.js";
15
15
  import { helpersStatus } from "./deputy/install.js";
16
16
  import { EXPECTED_HELPERS_VERSION } from "./deputy/protocol.js";
17
17
  import { deputyDbPath, deputyRoutesDb, helpersRouting, } from "./deputy/routing.js";
18
- import { readAllowed, readCapability, uiCapability, writeCapability, } from "./capability.js";
18
+ import { readAllowed, readCapability, uiCapability, urlSchemeCapability, writeCapability, } from "./capability.js";
19
19
  import { compareToBaseline, observeSchema } from "./db/fingerprint.js";
20
20
  import { locateThingsDb, ThingsDbNotFoundError } from "./db/locate.js";
21
21
  import { isThingsRunning, probeAutomation, } from "./write/automation-probe.js";
22
22
  import { probeAccessibility, } from "./write/accessibility-probe.js";
23
23
  import { allCertifications, UI_CERTIFICATION_PROFILE, } from "./write/vectors/ui-certification.js";
24
- import { readShortcutProxies, readUrlSchemeEnabled, } from "./write/availability.js";
24
+ import { readShortcutProxies, } from "./write/availability.js";
25
25
  import { createEnvironmentTracker, diffEnvironment, } from "./write/environment.js";
26
26
  import { sdefDeclaresPrivateReorder } from "./write/experimental.js";
27
27
  import { computeSyncHealth } from "./sync-health.js";
@@ -75,7 +75,16 @@ function outstandingConsent(hello) {
75
75
  const automation = hello.automation;
76
76
  if (automation === undefined)
77
77
  return false;
78
- return automation.things !== "granted" || automation.systemEvents !== "granted";
78
+ return consentOwed(automation.things) || consentOwed(automation.systemEvents);
79
+ }
80
+ /**
81
+ * `not-running` is the one value that is NOT a standing: with the target down
82
+ * the ask-false determination has no answer to give, so nothing is owed and no
83
+ * sitting would settle anything (#610 for System Events, #617 for Things).
84
+ * Steering a human to a ceremony on it is the false-onboarding loop itself.
85
+ */
86
+ function consentOwed(standing) {
87
+ return standing !== "granted" && standing !== "not-running";
79
88
  }
80
89
  function buildHelpersReport(configMode, deps = {}) {
81
90
  // The routing resolution carries the mode it resolved (helpersRouting reads
@@ -141,6 +150,8 @@ export function diagnose(dbPath, options = {}) {
141
150
  // itself opening the container and raising the dialog it is diagnosing.
142
151
  const capability = {
143
152
  read: readCapability(dbPath !== undefined ? { dbPath } : {}),
153
+ // SURVEY, so a closed Things is REPORTED (`deputy-target-dormant`) and
154
+ // never started: doctor diagnoses the machine, it does not rearrange it.
144
155
  write: writeCapability(),
145
156
  ui: uiCapability(),
146
157
  };
@@ -334,7 +345,12 @@ export function diagnose(dbPath, options = {}) {
334
345
  "intended for a dedicated always-on Mac, see docs/setup.md)",
335
346
  },
336
347
  availability: {
337
- urlScheme: readUrlSchemeEnabled(options.availability),
348
+ // Reuses the read standing already established above rather than
349
+ // re-deriving it, so doctor asks the machine once.
350
+ urlScheme: urlSchemeCapability({
351
+ readStanding: () => capability.read,
352
+ ...options.capability,
353
+ }),
338
354
  shortcuts: readShortcutProxies(options.availability),
339
355
  },
340
356
  recurrence: scanRecurrenceRules(conn.db),
@@ -1 +1 @@
1
- {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAoB,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAoB,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,GAEf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAMhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,kBAAkB,GAGnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,mBAAmB,GAGpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,eAAe,GAIhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAwC,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAqC,MAAM,gBAAgB,CAAC;AAE1F,MAAM,UAAU,GAAG,2BAA2B,CAAC;AAE/C,uEAAuE;AACvE,SAAS,mBAAmB,CAAC,EAE5B;IACC,IAAI,IAA4C,CAAC;IACjD,IAAI,CAAC;QACH,IAAI,GAAG,EAAE;aACN,OAAO,CACN,0FAA0F,CAC3F;aACA,GAAG,EAA4C,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACpF,CAAC;IACD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,IAAI,CAAC,CAAC;YACjB,IAAI,UAAU,KAAK,EAAE;gBAAE,UAAU,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IACD,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,MAAM;QACtB,WAAW;QACX,MAAM,EACJ,WAAW,KAAK,CAAC;YACf,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBACjB,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,yCAAyC;YAC7C,CAAC,CAAC,GAAG,WAAW,qCAAqC,UAAU,sBAAsB;gBACnF,4EAA4E;gBAC5E,2BAA2B;KAClC,CAAC;AACJ,CAAC;AA6BD;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,KAAyB;IACnD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,aAAa,CAAC;AAC9D,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAuB,EAAE,OAA0B,EAAE;IAC/E,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACjD,MAAM,WAAW,GAAG,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,wBAAwB,CAAC;IAC/F,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IACxE,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,uFAAuF;QACzF,CAAC,CAAC,UAAU;YACV,CAAC,CAAC,4EAA4E;YAC9E,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;gBACvB,CAAC,CAAC,IAAI,KAAK,OAAO;oBAChB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,yEAAyE;gBAC7E,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;oBAC1E,CAAC,CAAC,qFAAqF;oBACvF,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;wBAChD,CAAC,CAAC,iFAAiF;wBACnF,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;4BACvC,CAAC,CAAC,iHAAiH;4BACnH,CAAC,CAAC,IAAI,CAAC;IACnB,MAAM,MAAM,GACV,IAAI,KAAK,OAAO;QACd,CAAC,CAAC,0HAA0H;QAC5H,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK;YACnC,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;gBACvB,CAAC,CAAC,IAAI,KAAK,MAAM;oBACf,CAAC,CAAC,gHAAgH;oBAClH,CAAC,CAAC,kEAAkE;gBACtE,CAAC,CAAC,sBAAsB;oBACpB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,YAAY,IAAI,SAAS,GAAG,CAAC,CAAC;oBACpF,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,OAAO,CAAC,YAAY,IAAI,SAAS,GAAG,CAAC,CAAC;iBACpF,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,OAAO;QACL,IAAI;QACJ,OAAO;QACP,MAAM;QACN,gBAAgB;QAChB,eAAe,EAAE,wBAAwB;QACzC,WAAW;QACX,UAAU;QACV,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC;AA4LD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAyB,EAAE;IACzD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAe,EAAE,UAA2B,EAAE;IACrE,4EAA4E;IAC5E,8EAA8E;IAC9E,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,uEAAuE;QACvE,yEAAyE;QACzE,KAAK,EAAE,eAAe,EAAE;QACxB,EAAE,EAAE,YAAY,EAAE;KACnB,CAAC;IACF,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,uCAAuC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;gBACxE,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;aACpD;YACD,QAAQ,EAAE,QAAQ,CAAC,WAAW;YAC9B,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE;SAClD,CAAC;IACJ,CAAC;IACD,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,CAAC,CAAC,YAAY,EAAE;QAChB,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,OAA0C,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO;YACL,YAAY,KAAK,IAAI;gBACnB,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE;gBAC/D,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;YACzC,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,WAAW,EAAE,wDAAwD;iBACtE;gBACD,QAAQ,EAAE,QAAQ,CAAC,WAAW;gBAC9B,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE;aAClD,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,IAAuC,CAAC;IAC5C,IAAI,CAAC;QACH,IAAI;YACF,YAAY,KAAK,IAAI;gBACnB,CAAC,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,KAAI,CAAC,EAAE;gBAChE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,WAAW,EAAE,2DAA2D;iBACzE;gBACD,QAAQ,EAAE,QAAQ,CAAC,WAAW;gBAC9B,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE;aAClD,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACzD,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,mBAAmB,KAAK,WAAW,CAAC,WAAW,CAAC;QACpF,MAAM,iBAAiB,GAAG,QAAQ;YAChC,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI;gBACpB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;oBACvB,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,iBAAiB,CAAC;QAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC;QACvD,MAAM,UAAU,GAAG,0BAA0B,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,YAAY,GAA6B,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;QACxE,CAAC;QACD,4EAA4E;QAC5E,4EAA4E;QAC5E,4EAA4E;QAC5E,MAAM,WAAW,GAA4B,CAAC,GAAG,EAAE;YACjD,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAC/E,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvE,OAAO;oBACL,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;oBAC3B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;oBACxD,MAAM,EAAE,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,cAAc,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG;iBAC5E,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;oBACL,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;oBAC3B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC3B,QAAQ,EAAE,IAAI;oBACd,MAAM,EACJ,UAAU,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,MAAM,CAAC,KAAK,CAAC,MAAM,mBAAmB;wBAC9E,sFAAsF;iBACzF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,MAAM,GAAmB;YAC7B,UAAU;YACV,EAAE,EAAE;gBACF,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,eAAe,EAAE,WAAW,CAAC,eAAe;aAC7C;YACD,WAAW,EAAE;gBACX,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,WAAW,CAAC,WAAW;gBAC9B,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;gBAC1D,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACpD,YAAY;aACb;YACD,GAAG,EAAE;gBACH,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC;gBACjC,OAAO,EAAE,UAAU,CAAC,aAAa;gBACjC,gBAAgB,EAAE,MAAM,CAAC,mBAAmB;gBAC5C,eAAe,EACb,UAAU,CAAC,aAAa,KAAK,IAAI;oBACjC,MAAM,CAAC,mBAAmB,KAAK,IAAI;oBACnC,UAAU,CAAC,aAAa,KAAK,MAAM,CAAC,mBAAmB;aAC1D;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;gBACtB,MAAM,EAAE,QAAQ;oBACd,CAAC,CAAC,8EAA8E;wBAC9E,gFAAgF;oBAClF,CAAC,CAAC,aAAa;wBACb,CAAC,CAAC,6CAA6C;wBAC/C,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;4BACvB,CAAC,CAAC,+EAA+E;4BACjF,CAAC,CAAC,2DAA2D;aACpE;YACD,KAAK,EAAE,WAAW;YAClB,YAAY,EAAE;gBACZ,OAAO,EAAE,MAAM,CAAC,iBAAiB;gBACjC,mBAAmB,EAAE,UAAU;gBAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB;oBAC/B,CAAC,CAAC,uFAAuF;oBACzF,CAAC,CAAC,UAAU;wBACV,CAAC,CAAC,6DAA6D;wBAC/D,CAAC,CAAC,iFAAiF;4BACjF,uDAAuD;aAC9D;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,UAAU;gBACnB,iBAAiB,EAAE,WAAW;gBAC9B,OAAO,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC;aAClD;YACD,UAAU,EACR,OAAO,CAAC,eAAe,KAAK,IAAI;gBAC9B,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;gBACpC,CAAC,CAAC;oBACE,MAAM,EAAE,YAAY;oBACpB,MAAM,EACJ,2EAA2E;wBAC3E,mEAAmE;iBACtE;YACP,EAAE,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO;gBAC1B,UAAU,EAAE,eAAe,EAAE;gBAC7B,aAAa,EACX,OAAO,CAAC,kBAAkB,KAAK,IAAI;oBACjC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,sBAAsB,CAAC;oBACpD,CAAC,CAAC;wBACE,MAAM,EAAE,YAAY;wBACpB,MAAM,EACJ,gFAAgF;4BAChF,+EAA+E;qBAClF;gBACP,oBAAoB,EAAE,wBAAwB;gBAC9C,aAAa,EAAE,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;oBACzD,EAAE;oBACF,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO;oBACvB,CAAC,CAAC,qFAAqF;wBACrF,uEAAuE;oBACzE,CAAC,CAAC,mFAAmF;wBACnF,4DAA4D;aACjE;YACD,YAAY,EAAE;gBACZ,iEAAiE;gBACjE,mDAAmD;gBACnD,SAAS,EAAE,mBAAmB,CAAC;oBAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI;oBACnC,GAAG,OAAO,CAAC,UAAU;iBACtB,CAAC;gBACF,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC;aACrD;YACD,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;YAChE,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC;YACxE,KAAK,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;SAC5E,CAAC;QACF,OAAO;YACL,MAAM;YACN,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY;YAC7D,IAAI,EAAE;gBACJ,SAAS,EAAE,WAAW,CAAC,eAAe;gBACtC,WAAW,EAAE,iBAAiB,KAAK,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB;aACrF;SACF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1,7 +1,16 @@
1
- import { writeCapability, type CapabilityDeps, type ReadCapability } from "./capability.ts";
1
+ import { writeCapability, type CapabilityDeps, type ReadCapability, type UrlSchemeCapability, type WriteCapabilityOptions } from "./capability.ts";
2
2
  import { type Wizard } from "./wizard.ts";
3
3
  import { type ShortcutsState } from "./write/availability.ts";
4
- export type SetupLeg = "read-access" | "app-control" | "shortcuts";
4
+ /**
5
+ * The deadline passed with the app-data dialog still unanswered. Distinct from
6
+ * a refusal: nothing was decided, the dialog is still on screen, and answering
7
+ * it later still lands the grant on the host app (APDP1 stage A).
8
+ */
9
+ export declare class ContainerOpenTimedOut extends Error {
10
+ readonly timeoutMs: number;
11
+ constructor(timeoutMs: number);
12
+ }
13
+ export type SetupLeg = "read-access" | "app-control" | "shortcuts" | "url-scheme";
5
14
  /**
6
15
  * Where a leg stands. `pending` is a HUMAN-pace outcome (a toggle not yet
7
16
  * flipped, a sheet not yet clicked) and resumes on a rerun; `denied` means
@@ -41,12 +50,21 @@ export interface DirectSetupDeps extends CapabilityDeps {
41
50
  openUrl?: (url: string) => void;
42
51
  /** Send the real Apple Event that mints an Automation grant. Throws on failure. */
43
52
  sendAutomationProbe?: (timeoutMs: number) => void;
44
- /** Open the container database once, deliberately, to provoke the app-data modal. */
45
- openContainer?: () => void;
53
+ /**
54
+ * Open the container database once, deliberately, to provoke the app-data
55
+ * modal, waiting no longer than `timeoutMs` for it to be answered. Throws
56
+ * {@link ContainerOpenTimedOut} at the deadline and any other error when the
57
+ * open itself failed.
58
+ */
59
+ openContainer?: (timeoutMs: number) => void;
60
+ /** How long the read leg waits for the app-data dialog (default 60s). */
61
+ containerOpenTimeoutMs?: number;
46
62
  /** Open one shortcut's install sheet. */
47
63
  openShortcut?: (file: string) => void;
48
64
  /** The installed proxy-shortcut census (availability.ts). */
49
65
  shortcutProxies?: () => ShortcutsState;
66
+ /** Things' own 'Enable Things URLs' standing, for leg (d) (capability.ts). */
67
+ urlSchemeStanding?: () => UrlSchemeCapability;
50
68
  automationTimeoutMs?: number;
51
69
  }
52
70
  export interface SetupSurvey {
@@ -56,6 +74,7 @@ export interface SetupSurvey {
56
74
  };
57
75
  read: ReadCapability;
58
76
  write: ReturnType<typeof writeCapability>;
77
+ urlScheme: UrlSchemeCapability;
59
78
  shortcutsMissing: string[];
60
79
  /** The legs that WOULD put something on screen. Empty means a rerun asks nothing. */
61
80
  outstanding: SetupLeg[];
@@ -64,8 +83,15 @@ export interface SetupSurvey {
64
83
  * What the ceremony would do, established entirely prompt-free. This is the
65
84
  * idempotence check (Article V): it is what lets a rerun skip settled legs, and
66
85
  * it is what `--dry-run` reports. Raises nothing, ever.
86
+ *
87
+ * `purpose` is the one side effect the survey can be asked for: the ceremony
88
+ * itself passes `dispatch` so a dormant Things is started before the dialogs
89
+ * are COUNTED (#617) — otherwise a machine whose app happens to be closed is
90
+ * told "nothing to raise" and then shown a dialog anyway. `--dry-run` keeps the
91
+ * default and starts nothing at all, at the cost of not knowing where a closed
92
+ * app's grant stands; it says so through the write verdict it reports.
67
93
  */
68
- export declare function surveySetup(deps?: DirectSetupDeps): SetupSurvey;
94
+ export declare function surveySetup(deps?: DirectSetupDeps, options?: WriteCapabilityOptions): SetupSurvey;
69
95
  /**
70
96
  * Run the direct-path ceremony. Strict mode: the banner counts what is about
71
97
  * to appear, waits are bounded, and an unanswered leg leaves the run nonzero.