things-api 0.17.0 → 0.19.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 (277) hide show
  1. package/README.md +16 -9
  2. package/deputy/AppIcon.icns +0 -0
  3. package/deputy/VERSION +1 -0
  4. package/deputy/helpers-Info.plist +27 -0
  5. package/deputy/prebuilt/Things API Helper.app/Contents/CodeResources +0 -0
  6. package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/Info.plist +22 -0
  7. package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/MacOS/things-reader +0 -0
  8. package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/Resources/AppIcon.icns +0 -0
  9. package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/_CodeSignature/CodeResources +128 -0
  10. package/deputy/prebuilt/Things API Helper.app/Contents/Info.plist +27 -0
  11. package/deputy/prebuilt/Things API Helper.app/Contents/MacOS/things-deputy +0 -0
  12. package/deputy/prebuilt/Things API Helper.app/Contents/Resources/AppIcon.icns +0 -0
  13. package/deputy/prebuilt/Things API Helper.app/Contents/_CodeSignature/CodeResources +137 -0
  14. package/deputy/reader/Info.plist +22 -0
  15. package/deputy/reader/entitlements.plist +45 -0
  16. package/deputy/reader/main.swift +580 -0
  17. package/deputy/src/main.swift +133 -0
  18. package/deputy/src/osascript.swift +102 -0
  19. package/deputy/src/server.swift +373 -0
  20. package/deputy/src/sqlite.swift +121 -0
  21. package/deputy/src/tcc.swift +58 -0
  22. package/dist/audit/schema.d.ts +13 -1
  23. package/dist/audit/schema.js.map +1 -1
  24. package/dist/capability.d.ts +160 -0
  25. package/dist/capability.js +416 -0
  26. package/dist/capability.js.map +1 -0
  27. package/dist/cli/commands/doctor.js +181 -2
  28. package/dist/cli/commands/doctor.js.map +1 -1
  29. package/dist/cli/commands/helpers.d.ts +17 -0
  30. package/dist/cli/commands/helpers.js +275 -0
  31. package/dist/cli/commands/helpers.js.map +1 -0
  32. package/dist/cli/commands/op-result.d.ts +15 -0
  33. package/dist/cli/commands/op-result.js +45 -0
  34. package/dist/cli/commands/op-result.js.map +1 -0
  35. package/dist/cli/commands/reads.js +47 -1
  36. package/dist/cli/commands/reads.js.map +1 -1
  37. package/dist/cli/commands/setup.d.ts +9 -0
  38. package/dist/cli/commands/setup.js +63 -83
  39. package/dist/cli/commands/setup.js.map +1 -1
  40. package/dist/cli/commands/writes.d.ts +1 -1
  41. package/dist/cli/commands/writes.js +262 -109
  42. package/dist/cli/commands/writes.js.map +1 -1
  43. package/dist/cli/dry-run.d.ts +1 -1
  44. package/dist/cli/dry-run.js +1 -1
  45. package/dist/cli/glyphs.d.ts +23 -4
  46. package/dist/cli/glyphs.js +46 -19
  47. package/dist/cli/glyphs.js.map +1 -1
  48. package/dist/cli/help.d.ts +1 -1
  49. package/dist/cli/help.js +53 -27
  50. package/dist/cli/help.js.map +1 -1
  51. package/dist/cli/helpers-check.d.ts +10 -0
  52. package/dist/cli/helpers-check.js +59 -0
  53. package/dist/cli/helpers-check.js.map +1 -0
  54. package/dist/cli/main.js +22 -1
  55. package/dist/cli/main.js.map +1 -1
  56. package/dist/cli/period.d.ts +3 -1
  57. package/dist/cli/period.js +1 -1
  58. package/dist/cli/period.js.map +1 -1
  59. package/dist/cli/read-driver.js +26 -1
  60. package/dist/cli/read-driver.js.map +1 -1
  61. package/dist/cli/render.d.ts +31 -4
  62. package/dist/cli/render.js +127 -15
  63. package/dist/cli/render.js.map +1 -1
  64. package/dist/client.d.ts +22 -2
  65. package/dist/client.js +52 -15
  66. package/dist/client.js.map +1 -1
  67. package/dist/config.d.ts +31 -0
  68. package/dist/config.js +9 -0
  69. package/dist/config.js.map +1 -1
  70. package/dist/contracts.d.ts +6 -2
  71. package/dist/contracts.js +1 -1
  72. package/dist/contracts.js.map +1 -1
  73. package/dist/db/baselines/db-v26.js +8 -4
  74. package/dist/db/baselines/db-v26.js.map +1 -1
  75. package/dist/db/baselines/db-v27.d.ts +42 -0
  76. package/dist/db/baselines/db-v27.js +47 -0
  77. package/dist/db/baselines/db-v27.js.map +1 -0
  78. package/dist/db/baselines/index.js +2 -1
  79. package/dist/db/baselines/index.js.map +1 -1
  80. package/dist/db/locate.d.ts +4 -1
  81. package/dist/db/locate.js +3 -1
  82. package/dist/db/locate.js.map +1 -1
  83. package/dist/db/schema.d.ts +1 -1
  84. package/dist/db/schema.js +9 -0
  85. package/dist/db/schema.js.map +1 -1
  86. package/dist/deputy/bridge-worker.d.ts +1 -0
  87. package/dist/deputy/bridge-worker.js +79 -0
  88. package/dist/deputy/bridge-worker.js.map +1 -0
  89. package/dist/deputy/bridge.d.ts +14 -0
  90. package/dist/deputy/bridge.js +70 -0
  91. package/dist/deputy/bridge.js.map +1 -0
  92. package/dist/deputy/client.d.ts +19 -0
  93. package/dist/deputy/client.js +104 -0
  94. package/dist/deputy/client.js.map +1 -0
  95. package/dist/deputy/db-facade.d.ts +18 -0
  96. package/dist/deputy/db-facade.js +71 -0
  97. package/dist/deputy/db-facade.js.map +1 -0
  98. package/dist/deputy/files.d.ts +1 -0
  99. package/dist/deputy/files.js +16 -0
  100. package/dist/deputy/files.js.map +1 -0
  101. package/dist/deputy/install.d.ts +319 -0
  102. package/dist/deputy/install.js +1239 -0
  103. package/dist/deputy/install.js.map +1 -0
  104. package/dist/deputy/notice.d.ts +6 -0
  105. package/dist/deputy/notice.js +28 -0
  106. package/dist/deputy/notice.js.map +1 -0
  107. package/dist/deputy/notices.d.ts +31 -0
  108. package/dist/deputy/notices.js +94 -0
  109. package/dist/deputy/notices.js.map +1 -0
  110. package/dist/deputy/osa.d.ts +21 -0
  111. package/dist/deputy/osa.js +72 -0
  112. package/dist/deputy/osa.js.map +1 -0
  113. package/dist/deputy/protocol.d.ts +140 -0
  114. package/dist/deputy/protocol.js +143 -0
  115. package/dist/deputy/protocol.js.map +1 -0
  116. package/dist/deputy/routing.d.ts +84 -0
  117. package/dist/deputy/routing.js +422 -0
  118. package/dist/deputy/routing.js.map +1 -0
  119. package/dist/deputy/shortcuts-exec.d.ts +10 -0
  120. package/dist/deputy/shortcuts-exec.js +50 -0
  121. package/dist/deputy/shortcuts-exec.js.map +1 -0
  122. package/dist/diagnose.d.ts +57 -2
  123. package/dist/diagnose.js +105 -3
  124. package/dist/diagnose.js.map +1 -1
  125. package/dist/direct-setup.d.ts +78 -0
  126. package/dist/direct-setup.js +484 -0
  127. package/dist/direct-setup.js.map +1 -0
  128. package/dist/host-access.d.ts +63 -0
  129. package/dist/host-access.js +165 -0
  130. package/dist/host-access.js.map +1 -0
  131. package/dist/index.d.ts +31 -5
  132. package/dist/index.js +23 -1
  133. package/dist/index.js.map +1 -1
  134. package/dist/mcp/server.d.ts +27 -1
  135. package/dist/mcp/server.js +300 -97
  136. package/dist/mcp/server.js.map +1 -1
  137. package/dist/model/mappers.d.ts +12 -3
  138. package/dist/model/mappers.js +6 -1
  139. package/dist/model/mappers.js.map +1 -1
  140. package/dist/model/recurrence.d.ts +5 -1
  141. package/dist/model/recurrence.js +19 -1
  142. package/dist/model/recurrence.js.map +1 -1
  143. package/dist/model/template-projection.d.ts +26 -0
  144. package/dist/model/template-projection.js +113 -0
  145. package/dist/model/template-projection.js.map +1 -0
  146. package/dist/op-result.d.ts +55 -0
  147. package/dist/op-result.js +161 -0
  148. package/dist/op-result.js.map +1 -0
  149. package/dist/read/detail.js +7 -1
  150. package/dist/read/detail.js.map +1 -1
  151. package/dist/read/filter-contract.d.ts +1 -1
  152. package/dist/read/filter-contract.js +4 -0
  153. package/dist/read/filter-contract.js.map +1 -1
  154. package/dist/read/queries.js +8 -1
  155. package/dist/read/queries.js.map +1 -1
  156. package/dist/read/shape.js +4 -0
  157. package/dist/read/shape.js.map +1 -1
  158. package/dist/read/views.d.ts +35 -4
  159. package/dist/read/views.js +120 -18
  160. package/dist/read/views.js.map +1 -1
  161. package/dist/session-grant.d.ts +48 -0
  162. package/dist/session-grant.js +170 -0
  163. package/dist/session-grant.js.map +1 -0
  164. package/dist/surface-copy.d.ts +8 -0
  165. package/dist/surface-copy.js +8 -0
  166. package/dist/surface-copy.js.map +1 -1
  167. package/dist/sync-health.js +6 -2
  168. package/dist/sync-health.js.map +1 -1
  169. package/dist/wizard.d.ts +58 -0
  170. package/dist/wizard.js +167 -0
  171. package/dist/wizard.js.map +1 -0
  172. package/dist/write/accessibility-probe.js +4 -2
  173. package/dist/write/accessibility-probe.js.map +1 -1
  174. package/dist/write/automation-probe.js +5 -1
  175. package/dist/write/automation-probe.js.map +1 -1
  176. package/dist/write/availability.d.ts +1 -1
  177. package/dist/write/availability.js +10 -6
  178. package/dist/write/availability.js.map +1 -1
  179. package/dist/write/batch.d.ts +20 -0
  180. package/dist/write/batch.js +94 -15
  181. package/dist/write/batch.js.map +1 -1
  182. package/dist/write/capabilities.d.ts +9 -0
  183. package/dist/write/capabilities.js +2 -0
  184. package/dist/write/capabilities.js.map +1 -1
  185. package/dist/write/clear-reminder.js +1 -1
  186. package/dist/write/clear-reminder.js.map +1 -1
  187. package/dist/write/commands.d.ts +12 -1
  188. package/dist/write/commands.js +170 -237
  189. package/dist/write/commands.js.map +1 -1
  190. package/dist/write/experimental.d.ts +19 -0
  191. package/dist/write/experimental.js +50 -0
  192. package/dist/write/experimental.js.map +1 -1
  193. package/dist/write/failure-hints.d.ts +3 -1
  194. package/dist/write/failure-hints.js.map +1 -1
  195. package/dist/write/guards.js +19 -2
  196. package/dist/write/guards.js.map +1 -1
  197. package/dist/write/lock.d.ts +16 -13
  198. package/dist/write/lock.js +55 -0
  199. package/dist/write/lock.js.map +1 -1
  200. package/dist/write/make-repeating-project.js +9 -13
  201. package/dist/write/make-repeating-project.js.map +1 -1
  202. package/dist/write/move.js +14 -6
  203. package/dist/write/move.js.map +1 -1
  204. package/dist/write/operations.d.ts +64 -25
  205. package/dist/write/operations.js +7 -0
  206. package/dist/write/operations.js.map +1 -1
  207. package/dist/write/opid.d.ts +14 -0
  208. package/dist/write/opid.js +22 -0
  209. package/dist/write/opid.js.map +1 -1
  210. package/dist/write/param-schema.d.ts +124 -0
  211. package/dist/write/param-schema.js +747 -0
  212. package/dist/write/param-schema.js.map +1 -0
  213. package/dist/write/pipeline.d.ts +78 -2
  214. package/dist/write/pipeline.js +249 -4
  215. package/dist/write/pipeline.js.map +1 -1
  216. package/dist/write/pre-state.d.ts +8 -0
  217. package/dist/write/pre-state.js +62 -17
  218. package/dist/write/pre-state.js.map +1 -1
  219. package/dist/write/promote-clone.js +635 -367
  220. package/dist/write/promote-clone.js.map +1 -1
  221. package/dist/write/reorder.js +95 -29
  222. package/dist/write/reorder.js.map +1 -1
  223. package/dist/write/repeat-anchor.d.ts +30 -0
  224. package/dist/write/repeat-anchor.js +166 -1
  225. package/dist/write/repeat-anchor.js.map +1 -1
  226. package/dist/write/repeat-rule.d.ts +28 -1
  227. package/dist/write/repeat-rule.js +64 -4
  228. package/dist/write/repeat-rule.js.map +1 -1
  229. package/dist/write/resolution-timestamps.d.ts +11 -0
  230. package/dist/write/resolution-timestamps.js +83 -38
  231. package/dist/write/resolution-timestamps.js.map +1 -1
  232. package/dist/write/reversibility.js +4 -0
  233. package/dist/write/reversibility.js.map +1 -1
  234. package/dist/write/template-mutation.d.ts +137 -0
  235. package/dist/write/template-mutation.js +451 -0
  236. package/dist/write/template-mutation.js.map +1 -0
  237. package/dist/write/undo.js +10 -20
  238. package/dist/write/undo.js.map +1 -1
  239. package/dist/write/update-fields.d.ts +151 -0
  240. package/dist/write/update-fields.js +427 -0
  241. package/dist/write/update-fields.js.map +1 -0
  242. package/dist/write/vectors/applescript.js +10 -16
  243. package/dist/write/vectors/applescript.js.map +1 -1
  244. package/dist/write/vectors/registry.d.ts +1 -1
  245. package/dist/write/vectors/registry.js +10 -2
  246. package/dist/write/vectors/registry.js.map +1 -1
  247. package/dist/write/vectors/session-reachability.d.ts +55 -0
  248. package/dist/write/vectors/session-reachability.js +56 -8
  249. package/dist/write/vectors/session-reachability.js.map +1 -1
  250. package/dist/write/vectors/shortcuts.js +7 -16
  251. package/dist/write/vectors/shortcuts.js.map +1 -1
  252. package/dist/write/vectors/simulator.d.ts +16 -1
  253. package/dist/write/vectors/simulator.js +68 -12
  254. package/dist/write/vectors/simulator.js.map +1 -1
  255. package/dist/write/vectors/types.d.ts +124 -1
  256. package/dist/write/vectors/ui-recipes.d.ts +19 -0
  257. package/dist/write/vectors/ui-recipes.js +158 -38
  258. package/dist/write/vectors/ui-recipes.js.map +1 -1
  259. package/dist/write/vectors/ui.d.ts +89 -0
  260. package/dist/write/vectors/ui.js +504 -49
  261. package/dist/write/vectors/ui.js.map +1 -1
  262. package/dist/write/verify/delta.d.ts +21 -0
  263. package/dist/write/verify/delta.js.map +1 -1
  264. package/dist/write/verify/poller.d.ts +13 -0
  265. package/dist/write/verify/poller.js +38 -0
  266. package/dist/write/verify/poller.js.map +1 -1
  267. package/package.json +9 -1
  268. package/schema/envelope.schema.json +5 -3
  269. package/scripts/build-helpers.sh +109 -0
  270. package/scripts/deputy-cert-setup.sh +60 -0
  271. package/skills/things-cli/SKILL.md +12 -5
  272. package/skills/things-cli/references/contracts.md +1 -0
  273. package/skills/things-cli/references/data-model.md +3 -0
  274. package/skills/things-cli/references/errors.md +5 -1
  275. package/skills/things-cli/references/gui.md +1 -0
  276. package/skills/things-cli/references/repeating.md +75 -0
  277. package/skills/things-cli/references/tag-cleanup.md +64 -0
@@ -156,7 +156,35 @@ export type UiPrimitive = "reveal" | "activate" | "resolve" | "press" | "set-val
156
156
  * closed (an `error` the pipeline re-verifies) if the box will not converge
157
157
  * within the bounded retries.
158
158
  */
159
- | "ensure-checkbox";
159
+ | "ensure-checkbox"
160
+ /**
161
+ * MEASURE which shape the open Repeat dialog is (RDLG2) and remember it for
162
+ * the rest of the drive. Emitted right before the first shape-dependent step;
163
+ * a dialog matching neither known shape aborts the drive fail-closed rather
164
+ * than press structural indexes it cannot vouch for.
165
+ */
166
+ | "probe-dialog-shape"
167
+ /**
168
+ * Choose the first occurrence from the Things 3.23 `Next:` pop-up — a bounded
169
+ * MENU of `Today` plus the rule's own upcoming occurrences (cascading through
170
+ * `More…` submenus), not a date field (RDLG2). The driver matches the request
171
+ * against each item's parsed date, descends the cascade, clicks the match, and
172
+ * reads the pop-up back. A date the rule never produces is UNREACHABLE in this
173
+ * dialog and fails closed — 3.23 replaced the free-form first-occurrence field
174
+ * the ≤3.22 `set-datetime next` drive wrote.
175
+ */
176
+ | "select-next-occurrence"
177
+ /**
178
+ * Converge the weekly dialog's weekday ROWS onto an exact target set through a
179
+ * deterministic closed loop (RDLG2, the RRD1 fix): read the live row count,
180
+ * press the row-add button until there are at least as many rows as target
181
+ * weekdays, assign EVERY row from the target set (cycling, so a surplus row
182
+ * duplicates a target weekday instead of keeping a stale one — the app stores
183
+ * the weekdays as a set), then read every row back and confirm the set matches.
184
+ * Replaces the blind first-row-then-"+" drive, which left a pre-populated
185
+ * dialog's stale weekdays in the committed rule.
186
+ */
187
+ | "converge-weekdays";
160
188
  export interface UiStep {
161
189
  primitive: UiPrimitive;
162
190
  /** Human-readable step label — surfaced in the partial-state report. */
@@ -238,7 +266,45 @@ export interface UiStep {
238
266
  * confirms convergence (RRD1 closed loop). Required for every ensure-checkbox step.
239
267
  */
240
268
  checkboxTarget?: boolean;
269
+ /**
270
+ * Run this step ONLY under the named Repeat-dialog shape (RDLG2). The two
271
+ * shapes present the FIRST-OCCURRENCE control as different element CLASSES —
272
+ * an `AXDateTimeArea` (legacy) versus an `AXPopUpButton` (next-popup) — so the
273
+ * recipe emits BOTH drives and the driver executes the one matching the shape
274
+ * its `probe-dialog-shape` step measured. A step carrying this field with no
275
+ * shape probed fails closed.
276
+ */
277
+ onlyShape?: RepeatDialogShape;
278
+ /**
279
+ * Per-shape overrides merged into the step once the dialog shape is probed
280
+ * (RDLG2). The 3.23 `Next:` pop-up sits between Ends and every per-frequency
281
+ * control, shifting their group indices by +1 — so the SAME step carries both
282
+ * index sets and the driver picks by measured structure, never by app version.
283
+ * A step carrying this field whose probed shape has no entry fails closed.
284
+ */
285
+ shaped?: Partial<Record<RepeatDialogShape, {
286
+ pathCandidates?: string[];
287
+ value?: string;
288
+ }>>;
241
289
  }
290
+ /**
291
+ * The structural SHAPE of the Repeat dialog, MEASURED live (never sniffed from
292
+ * the app version — a version string says nothing about the tree the driver has
293
+ * to address, and a point release can move either way):
294
+ *
295
+ * - `next-popup` — Things 3.23+: the first occurrence is an `AXPopUpButton`
296
+ * listing Today + the rule's own upcoming occurrences; it sits between Ends and
297
+ * the per-frequency controls, so those are at +1.
298
+ * - `legacy` — Things ≤ 3.22: the first occurrence is a free-form
299
+ * `AXDateTimeArea` and the per-frequency controls follow Ends directly.
300
+ *
301
+ * Both shapes label that row `Next:` (measured on 3.22.14 and 3.23 alike), so the
302
+ * probe discriminates on the CONTROL CLASS occupying the row, not the label.
303
+ *
304
+ * Anything matching NEITHER shape is a third, unknown dialog — the drive
305
+ * refuses rather than press indexes it cannot vouch for.
306
+ */
307
+ export type RepeatDialogShape = "next-popup" | "legacy";
242
308
  export interface VectorSupport {
243
309
  support: "yes" | "partial" | "no";
244
310
  /**
@@ -297,6 +363,34 @@ export interface ExecuteResult {
297
363
  /** The local trace file reconstructing the timeline, when tracing is on. */
298
364
  tracePath?: string | null;
299
365
  };
366
+ /**
367
+ * A ui drive stopped because the Things WINDOW stopped answering — not because
368
+ * the app accepted a command and did nothing (issue #512). The pre-seed and
369
+ * in-drive reachability gates catch a session that is ALREADY AX-blind; this
370
+ * covers the state that degrades UNDER a running drive (the screen locks, a
371
+ * full-screen app takes the Space, the app stops answering a step before its
372
+ * per-step deadline). Carried alongside a nonzero `exitCode` so the pipeline
373
+ * still runs the transport-failure re-verify (a step that landed before the
374
+ * abort is still honored), and, when nothing landed, shapes
375
+ * `verify-failed:ui-unreachable` — an ENVIRONMENT failure naming the step and
376
+ * the recovery — instead of `verify-failed:silent-noop`, which claims the app
377
+ * was reachable and chose to do nothing. See {@link drive}.
378
+ */
379
+ uiUnreachable?: {
380
+ /** The drive step that stopped (the label the recipe gave it). */
381
+ step: string;
382
+ /**
383
+ * "unreachable" — the cleanup's own blindness probe found NO Things window on
384
+ * the current screen (locked Mac / full-screen Space); "unresponsive" — the
385
+ * step was killed by its own deadline, so the window may be reachable but did
386
+ * not answer in time.
387
+ */
388
+ cause: "unreachable" | "unresponsive";
389
+ /** How a half-open sheet was cleaned up, when the drive had opened one. */
390
+ clear?: "dismissed" | "cleared-blind" | "may-remain";
391
+ /** What the caller does to make a retry work. */
392
+ remediation: string;
393
+ };
300
394
  }
301
395
  export interface WriteVector {
302
396
  id: VectorId;
@@ -322,4 +416,33 @@ export interface WriteVector {
322
416
  * directly. Undefined/false for every real transport vector.
323
417
  */
324
418
  simulates?: boolean;
419
+ /**
420
+ * This vector dispatches REAL Apple Events to Things, so it is subject to the
421
+ * app-control gate (docs/design/permissions-doctrine.md, Articles I + II):
422
+ * on a machine macOS holds no consent record for, that event IS the dialog,
423
+ * so the pipeline establishes standing prompt-free and refuses before
424
+ * dispatch rather than letting the send raise a modal.
425
+ *
426
+ * Set ONLY by {@link import("./applescript.ts").createAppleScriptVector}. It
427
+ * is deliberately not inferred from {@link id}: engine tests substitute fake
428
+ * vectors under the real ids, and a fake that sends nothing must not be
429
+ * gated on the host's actual TCC state — that would make test outcomes
430
+ * depend on the developer's own grants.
431
+ */
432
+ sendsAppleEvents?: boolean;
433
+ /**
434
+ * This vector drives the Things WINDOW through the Accessibility API, so it
435
+ * is subject to the GUI-driving gate (docs/design/permissions-doctrine.md,
436
+ * Article IV): Accessibility plus Automation → System Events, granted to the
437
+ * helper pair and to nothing else. On a machine that holds neither, the drive
438
+ * would raise an Accessibility prompt against whatever host app is running
439
+ * us, so the pipeline establishes standing prompt-free and refuses first.
440
+ *
441
+ * Set ONLY by {@link import("./ui.ts").createUiVector}. Deliberately not
442
+ * inferred from {@link id} — engine and simulator tests substitute fakes
443
+ * under the real ids, and a fake that never touches the AX tree must not be
444
+ * gated on the host's actual TCC state (the Wave A lesson: an id-keyed gate
445
+ * imports the developer's own grants into CI).
446
+ */
447
+ drivesGui?: boolean;
325
448
  }
@@ -48,6 +48,25 @@ export interface RepeatDialogRule {
48
48
  next?: string;
49
49
  }
50
50
  export declare function pauseRepeatRecipe(targetUuid: string): UiRecipe;
51
+ /**
52
+ * `Items ▸ Repeat ▸ Create Next Copy` — Things 3.23's "spawn the pending
53
+ * occurrence now" command, and the first half of every template mutation we
54
+ * ship (CNC1, docs/lab/cnc1-template-mutations.md).
55
+ *
56
+ * One press materializes the instance the projection cursor points at AND
57
+ * advances the series, and the template delta is FIELD FOR FIELD what the app's
58
+ * own `Make Exception` writes (`rt1_instanceCreationCount +1`,
59
+ * `rt1_instanceCreationStartDate` → consumed slot + 1, `rt1_nextInstanceStartDate`
60
+ * → the next rule date, `todayIndexReferenceDate` → the cursor, `umd` silent,
61
+ * rule blob untouched) — measured on a fixed weekly rule against REPX3 §1.2 and
62
+ * on a daily rule against §2.1. Mutating the minted instance afterwards is
63
+ * therefore the exception the chooser withholds from automation.
64
+ *
65
+ * Template-only, like every verb in this submenu: with an INSTANCE selected the
66
+ * `Items` menu carries no `Repeat` item at all (REPX1 §5.1), which is what the
67
+ * eligibility assert catches before the press.
68
+ */
69
+ export declare function createNextCopyRecipe(targetUuid: string): UiRecipe;
51
70
  export declare function resumeRepeatRecipe(targetUuid: string): UiRecipe;
52
71
  export declare function convertToProjectRecipe(op: "todo.convert-to-project" | "project.promote-heading", targetUuid: string): UiRecipe;
53
72
  /**
@@ -64,6 +64,36 @@ export function pauseRepeatRecipe(targetUuid) {
64
64
  ],
65
65
  };
66
66
  }
67
+ /**
68
+ * `Items ▸ Repeat ▸ Create Next Copy` — Things 3.23's "spawn the pending
69
+ * occurrence now" command, and the first half of every template mutation we
70
+ * ship (CNC1, docs/lab/cnc1-template-mutations.md).
71
+ *
72
+ * One press materializes the instance the projection cursor points at AND
73
+ * advances the series, and the template delta is FIELD FOR FIELD what the app's
74
+ * own `Make Exception` writes (`rt1_instanceCreationCount +1`,
75
+ * `rt1_instanceCreationStartDate` → consumed slot + 1, `rt1_nextInstanceStartDate`
76
+ * → the next rule date, `todayIndexReferenceDate` → the cursor, `umd` silent,
77
+ * rule blob untouched) — measured on a fixed weekly rule against REPX3 §1.2 and
78
+ * on a daily rule against §2.1. Mutating the minted instance afterwards is
79
+ * therefore the exception the chooser withholds from automation.
80
+ *
81
+ * Template-only, like every verb in this submenu: with an INSTANCE selected the
82
+ * `Items` menu carries no `Repeat` item at all (REPX1 §5.1), which is what the
83
+ * eligibility assert catches before the press.
84
+ */
85
+ export function createNextCopyRecipe(targetUuid) {
86
+ const item = `menu item "Create Next Copy" of menu 1 of menu item "Repeat" of ${ITEMS_MENU}`;
87
+ return {
88
+ op: "todo.create-next-copy",
89
+ targetUuid,
90
+ steps: [
91
+ ...preamble(targetUuid),
92
+ assertEligible(targetUuid, item),
93
+ menuPress("Items ▸ Repeat ▸ Create Next Copy", item, REPEAT_SUBMENU_ANCHOR),
94
+ ],
95
+ };
96
+ }
67
97
  export function resumeRepeatRecipe(targetUuid) {
68
98
  return {
69
99
  op: "todo.resume-repeat",
@@ -188,30 +218,46 @@ const DIALOG_FREQUENCY = dualForm("pop up button 1");
188
218
  const DIALOG_INTERVAL = dualForm("text field 1 of group 1");
189
219
  /** OK button. */
190
220
  const DIALOG_OK = dualForm(`button "OK"`);
191
- // --- UIC6-CERTIFIED controls (corrected from the field-map best-guess) ---
221
+ // --- UIC6-CERTIFIED controls, RE-INDEXED PER DIALOG SHAPE (RDLG2) ----------
192
222
  // The dialog's rule controls (except the reminder/end-date pickers) all live in
193
223
  // the cadence AXGroup (`group 1`); UIC6 sat the live tree and fixed the
194
- // provisional structural indices. The invariant that made them addressable:
195
- // the "Ends" pop-up is ALWAYS `pop up button 1 of group 1`, so the per-frequency
196
- // pop-ups follow it (weekday=2; monthly mode=2/ordinal=3; yearly month=2/mode=3/
197
- // ordinal=4). Titles/`_NS:` ids are never used (both drift). See
198
- // docs/lab/uic6-rule-vocabulary.md for the per-control evidence.
199
- /** After-completion cadence unit pop-up — the ONLY group pop-up in that mode. */
224
+ // provisional structural indices, and RDLG2 re-derived them for Things 3.23.
225
+ // The invariant that makes them addressable is unchanged the "Ends" pop-up is
226
+ // ALWAYS `pop up button 1 of group 1` and the per-frequency pop-ups follow it
227
+ // but 3.23 inserted the new `Next:` occurrence pop-up between the two, shifting
228
+ // every per-frequency index by +1. Both index sets ship, keyed to the SHAPE the
229
+ // driver measures in the open dialog (`probe-dialog-shape`), never to the app
230
+ // version. Titles/`_NS:` ids are never used (both drift). Evidence:
231
+ // docs/lab/uic6-rule-vocabulary.md (≤3.22) and docs/lab/rdlg2-323-recipe-cert.md.
232
+ /** After-completion cadence unit pop-up — the ONLY group pop-up in that mode (both shapes). */
200
233
  const DIALOG_AC_UNIT = dualForm("pop up button 1 of group 1");
201
- /** Weekly day-of-week pop-up — pop up button 2 (Ends is pop up button 1). */
202
- const DIALOG_WEEKDAY = dualForm("pop up button 2 of group 1");
203
- /** Weekly "+" button that adds a weekday row (title-less AXButton — button 1 of the group). */
204
- const DIALOG_ADD_WEEKDAY = dualForm("button 1 of group 1");
205
- /** Monthly MODE pop-up (`day` · Sunday…Saturday) — pop up button 2. */
206
- const DIALOG_MONTH_MODE = dualForm("pop up button 2 of group 1");
207
- /** Monthly ORDINAL pop-up (`last` · 1st…31st) — pop up button 3. */
208
- const DIALOG_MONTH_ORDINAL = dualForm("pop up button 3 of group 1");
209
- /** Yearly MONTH pop-up — pop up button 2 (Ends 1, then month/mode/ordinal). */
210
- const DIALOG_YEAR_MONTH = dualForm("pop up button 2 of group 1");
211
- const DIALOG_YEAR_MODE = dualForm("pop up button 3 of group 1");
212
- const DIALOG_YEAR_ORDINAL = dualForm("pop up button 4 of group 1");
213
234
  /** "Ends" bound pop-up (`never` · `after` · `on date`) — always pop up button 1 of the group. */
214
235
  const DIALOG_ENDS = dualForm("pop up button 1 of group 1");
236
+ /** The cadence group itself — the handle the shape probe and the weekday converge address. */
237
+ const DIALOG_GROUP = dualForm("group 1");
238
+ /** The 3.23 `Next:` first-occurrence pop-up — group pop-up 2 (this shape only). */
239
+ const DIALOG_NEXT_POPUP = dualForm("pop up button 2 of group 1");
240
+ /** A group pop-up addressed at DIFFERENT indices in the two dialog shapes (RDLG2). */
241
+ function shapedPopup(nextPopupIndex, legacyIndex) {
242
+ return {
243
+ "next-popup": { pathCandidates: dualForm(`pop up button ${nextPopupIndex} of group 1`) },
244
+ legacy: { pathCandidates: dualForm(`pop up button ${legacyIndex} of group 1`) },
245
+ };
246
+ }
247
+ /** Monthly MODE pop-up (`day` · Sunday…Saturday) — after Ends (+ Next on 3.23). */
248
+ const DIALOG_MONTH_MODE = shapedPopup(3, 2);
249
+ /** Monthly ORDINAL pop-up (`last` · 1st…31st). */
250
+ const DIALOG_MONTH_ORDINAL = shapedPopup(4, 3);
251
+ /** Yearly MONTH pop-up, then its mode + ordinal. */
252
+ const DIALOG_YEAR_MONTH = shapedPopup(3, 2);
253
+ const DIALOG_YEAR_MODE = shapedPopup(4, 3);
254
+ const DIALOG_YEAR_ORDINAL = shapedPopup(5, 4);
255
+ /**
256
+ * The group pop-up index of the FIRST weekday row, per shape — the one input the
257
+ * weekday-converge loop needs beyond the target set (it derives the row count and
258
+ * the add button from live structure).
259
+ */
260
+ const WEEKDAY_BASE = { "next-popup": 3, legacy: 2 };
215
261
  /** "Ends after [n]" count field — becomes text field 1 of the group once shown (interval was set earlier while it was the sole field). */
216
262
  const DIALOG_ENDS_COUNT = dualForm("text field 1 of group 1");
217
263
  /** "Add reminders" checkbox (sheet-level, title-pinned). The time is an AXDateTimeArea driven by set-datetime. */
@@ -279,6 +325,14 @@ function selectPopup(label, pathCandidates, value) {
279
325
  addressing: "title",
280
326
  };
281
327
  }
328
+ /**
329
+ * A select-popup whose group INDEX depends on the dialog shape (RDLG2) — the
330
+ * driver substitutes the measured shape's candidates before dispatch, and refuses
331
+ * if the shape was never measured.
332
+ */
333
+ function selectPopupShaped(label, shaped, value) {
334
+ return { primitive: "select-popup", label, shaped, value, dynamic: true, addressing: "title" };
335
+ }
282
336
  /**
283
337
  * A select-popup that clicks the FIRST of several candidate menu-item LABELS
284
338
  * that exists (the after-completion unit's singular/plural pair — defect (c)).
@@ -348,13 +402,13 @@ function monthlyAnchorSteps(anchor, mode, ordinal) {
348
402
  if ("day" in anchor) {
349
403
  // mode = "day"; ordinal names the day-of-month (or "last").
350
404
  return [
351
- selectPopup("monthly mode = day", mode, "day"),
352
- selectPopup(`monthly day = ${anchor.day}`, ordinal, anchor.day === "last" ? "last" : ORDINAL_TITLE_ANY(anchor.day)),
405
+ selectPopupShaped("monthly mode = day", mode, "day"),
406
+ selectPopupShaped(`monthly day = ${anchor.day}`, ordinal, anchor.day === "last" ? "last" : ORDINAL_TITLE_ANY(anchor.day)),
353
407
  ];
354
408
  }
355
409
  return [
356
- selectPopup(`monthly weekday = ${anchor.weekday}`, mode, WEEKDAY_TITLE[anchor.weekday]),
357
- selectPopup(`monthly ordinal = ${anchor.ordinal}`, ordinal, ordinalTitle(anchor.ordinal)),
410
+ selectPopupShaped(`monthly weekday = ${anchor.weekday}`, mode, WEEKDAY_TITLE[anchor.weekday]),
411
+ selectPopupShaped(`monthly ordinal = ${anchor.ordinal}`, ordinal, ordinalTitle(anchor.ordinal)),
358
412
  ];
359
413
  }
360
414
  /** Day-of-month ordinal display (1st…31st). */
@@ -400,25 +454,51 @@ function repeatDialogEntry(rule) {
400
454
  steps.push(selectPopup(`frequency = ${rule.frequency}`, DIALOG_FREQUENCY, rule.frequency));
401
455
  }
402
456
  steps.push(setField(`interval = ${rule.interval}`, DIALOG_INTERVAL, String(rule.interval)));
457
+ // MEASURE the dialog before touching any control the 3.23 redesign moved
458
+ // (RDLG2). Emitted only when such a control is actually addressed, so the
459
+ // certified two-control path (frequency + interval + OK) costs no extra hop —
460
+ // and so an after-completion rule, whose cadence group has neither an Ends nor
461
+ // a Next label to measure, never runs a probe that could only say "unknown".
462
+ const needsShape = rule.afterCompletion !== true &&
463
+ ((rule.weekdays !== undefined && rule.weekdays.length > 0) ||
464
+ rule.monthly !== undefined ||
465
+ rule.yearly !== undefined ||
466
+ rule.next !== undefined);
467
+ if (needsShape) {
468
+ steps.push({
469
+ primitive: "probe-dialog-shape",
470
+ label: "measure the Repeat dialog's shape (an occurrence pop-up on the Next: row, or a date field)",
471
+ pathCandidates: DIALOG_GROUP,
472
+ dynamic: true,
473
+ addressing: "title",
474
+ });
475
+ }
403
476
  if (rule.weekdays !== undefined && rule.weekdays.length > 0) {
404
- const [first, ...rest] = rule.weekdays;
405
- if (first !== undefined) {
406
- steps.push(selectPopup(`weekday = ${first}`, DIALOG_WEEKDAY, WEEKDAY_TITLE[first]));
407
- }
408
- // Each additional weekday: press "+" to add a row, then the new pop-up. The
409
- // added pop-up's index shifts per row; UIC6 confirms the exact addressing —
410
- // provisionally the same DIALOG_WEEKDAY pop-up re-driven after the add.
411
- for (const day of rest) {
412
- steps.push(pressControl(`add weekday row (${day})`, DIALOG_ADD_WEEKDAY));
413
- steps.push(selectPopup(`weekday += ${day}`, DIALOG_WEEKDAY, WEEKDAY_TITLE[day]));
414
- }
477
+ // ONE closed-loop converge (RRD1 fix) rather than "set row 1, then press +
478
+ // and re-drive the same index": the old shape left a PRE-POPULATED dialog's
479
+ // existing weekdays in the rule and could never shrink a set. The driver
480
+ // reads the live rows, grows to the target count, assigns every row from the
481
+ // target set (cycling), and reads them all back. See ui.ts
482
+ // axConvergeWeekdaysScript for the loop and its evidence.
483
+ const titles = rule.weekdays.map((day) => WEEKDAY_TITLE[day]).join(",");
484
+ steps.push({
485
+ primitive: "converge-weekdays",
486
+ label: `weekdays = ${rule.weekdays.join(", ")}`,
487
+ pathCandidates: DIALOG_GROUP,
488
+ shaped: {
489
+ "next-popup": { value: `${WEEKDAY_BASE["next-popup"]}|${titles}` },
490
+ legacy: { value: `${WEEKDAY_BASE.legacy}|${titles}` },
491
+ },
492
+ dynamic: true,
493
+ addressing: "title",
494
+ });
415
495
  }
416
496
  if (rule.monthly !== undefined) {
417
497
  steps.push(...monthlyAnchorSteps(rule.monthly, DIALOG_MONTH_MODE, DIALOG_MONTH_ORDINAL));
418
498
  }
419
499
  if (rule.yearly !== undefined) {
420
500
  const y = rule.yearly;
421
- steps.push(selectPopup(`yearly month = ${y.month}`, DIALOG_YEAR_MONTH, MONTH_TITLE[y.month - 1] ?? ""));
501
+ steps.push(selectPopupShaped(`yearly month = ${y.month}`, DIALOG_YEAR_MONTH, MONTH_TITLE[y.month - 1] ?? ""));
422
502
  steps.push(...monthlyAnchorSteps(y, DIALOG_YEAR_MODE, DIALOG_YEAR_ORDINAL));
423
503
  }
424
504
  // "Add deadlines" / "start N days earlier" — DEADLINE MODE, converged (RRD1)
@@ -463,9 +543,28 @@ function repeatDialogEntry(rule) {
463
543
  else if (endsOnDate !== null) {
464
544
  steps.push(selectPopup("ends = on date", DIALOG_ENDS, "on date"));
465
545
  }
466
- // After-completion has no calendar, so no Next.
546
+ // After-completion has no calendar, so no Next. The control's CLASS differs by
547
+ // dialog shape, so BOTH drives are emitted and the driver runs the one that
548
+ // matches what it measured (RDLG2):
549
+ // - legacy (≤3.22): a free-form `AXDateTimeArea` — ANY date, on-rule or not;
550
+ // - next-popup (3.23+): a bounded MENU of the rule's own occurrences, so an
551
+ // off-rule first occurrence is UNREACHABLE and the step fails closed with
552
+ // the reason (the app removed the affordance; we do not fake it by picking
553
+ // a neighbouring date).
467
554
  if (rule.next !== undefined && rule.afterCompletion !== true) {
468
- steps.push(setDateTime(`Next (first occurrence) = ${rule.next}`, `date:${rule.next}`, "next"));
555
+ steps.push({
556
+ ...setDateTime(`Next (first occurrence) = ${rule.next}`, `date:${rule.next}`, "next"),
557
+ onlyShape: "legacy",
558
+ });
559
+ steps.push({
560
+ primitive: "select-next-occurrence",
561
+ label: `Next (first occurrence) = ${rule.next}`,
562
+ pathCandidates: DIALOG_NEXT_POPUP,
563
+ value: rule.next,
564
+ onlyShape: "next-popup",
565
+ dynamic: true,
566
+ addressing: "title",
567
+ });
469
568
  }
470
569
  if (endsOnDate !== null) {
471
570
  steps.push(setDateTime(`ends on = ${endsOnDate.date}`, `date:${endsOnDate.date}`, "ends"));
@@ -572,7 +671,28 @@ export function rescheduleRepeatRecipe(targetUuid, frequency, interval, extras =
572
671
  needsWindowReachability: true,
573
672
  steps: [
574
673
  ...preamble(targetUuid),
575
- menuPress("Items Repeat Reschedule…", `menu item "Reschedule…" of menu 1 of menu item "Repeat" of ${ITEMS_MENU}`, REPEAT_SUBMENU_ANCHOR),
674
+ // The submenu itself is still canaried (it only materializes on a selected
675
+ // TEMPLATE, so its presence is the real precondition) …
676
+ {
677
+ primitive: "resolve",
678
+ label: "Items ▸ Repeat submenu",
679
+ path: REPEAT_SUBMENU_ANCHOR,
680
+ addressing: "title",
681
+ },
682
+ // … but the ITEM was RENAMED: `Reschedule…` through Things 3.22, `Edit
683
+ // Rule…` from 3.23 (RDLG1). Both spellings ship as candidates so the drive
684
+ // self-selects on whichever the installed app offers; neither present is a
685
+ // fail-closed miss naming the step.
686
+ {
687
+ primitive: "press",
688
+ label: "Items ▸ Repeat ▸ Edit Rule… (Reschedule… on Things ≤ 3.22)",
689
+ pathCandidates: [
690
+ `menu item "Edit Rule…" of menu 1 of menu item "Repeat" of ${ITEMS_MENU}`,
691
+ `menu item "Reschedule…" of menu 1 of menu item "Repeat" of ${ITEMS_MENU}`,
692
+ ],
693
+ dynamic: true,
694
+ addressing: "title",
695
+ },
576
696
  ...repeatDialogEntry({ frequency, interval, ...extras }),
577
697
  ],
578
698
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ui-recipes.js","sourceRoot":"","sources":["../../../src/write/vectors/ui-recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui-recipes.js","sourceRoot":"","sources":["../../../src/write/vectors/ui-recipes.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,74 @@ export declare function axSelectPopupScript(path: string, value: string): string
96
96
  * plural-safe. One stable command shape per primitive.
97
97
  */
98
98
  export declare function axSelectPopupCandidatesScript(path: string, values: string[]): string;
99
+ /**
100
+ * probe-dialog-shape: MEASURE which Repeat dialog is open (RDLG2) — the whole
101
+ * version fork, decided by STRUCTURE rather than by the app version, so the
102
+ * recipe self-selects on any host and a future redesign refuses instead of
103
+ * silently pressing the wrong control:
104
+ *
105
+ * - `next-popup` (Things 3.23+) — the first occurrence is an `AXPopUpButton`
106
+ * listing the rule's own upcoming occurrences. It sits between Ends and every
107
+ * per-frequency control, so weekday / monthly / yearly pop-ups are one index
108
+ * further along.
109
+ * - `legacy` (Things ≤ 3.22) — the first occurrence is a free-form
110
+ * `AXDateTimeArea`, and the per-frequency controls follow Ends directly.
111
+ *
112
+ * The discriminator is the CONTROL CLASS on the `Next:` row, not the presence of
113
+ * the label: RDLG2d measured Things 3.22.14 and found it carries the same
114
+ * `Next:` static text (and the same occurrence-preview line) as 3.23 — only the
115
+ * control beside it changed. So the probe reads the label's row position and asks
116
+ * what kind of control shares that row, which also keeps it independent of the
117
+ * dialog's Ends state (an `Ends: on date` bound adds a SECOND date area, on a
118
+ * different row, in both shapes). Each branch is a POSITIVE match, so an
119
+ * unrecognized third dialog returns "unknown" and the driver refuses. Labels are
120
+ * pinned English, exactly like every other selector here.
121
+ */
122
+ export declare function axProbeDialogShapeScript(groupPath: string, rowTolerance?: number): string;
123
+ /**
124
+ * select-next-occurrence: set the first occurrence through the Things 3.23
125
+ * `Next:` POP-UP (RDLG2). 3.23 replaced the free-form first-occurrence date area
126
+ * with a bounded MENU — `Today`, then the rule's own upcoming occurrences, then a
127
+ * `More…` item whose submenu carries the next hundred, cascading further the same
128
+ * way. Two consequences this script encodes:
129
+ *
130
+ * - a requested date is reachable ONLY if the rule itself produces it (or it is
131
+ * today): the menu offers nothing else, so an OFF-RULE first occurrence — free
132
+ * to set on ≤3.22 — is UNEXPRESSIBLE in this dialog and must fail closed with
133
+ * a named reason rather than land some neighbouring date;
134
+ * - item titles are localized (`Sun, Jul 12, 2026`), so the match is made by
135
+ * PARSING each title to a date (with a leading-weekday retry) and comparing
136
+ * calendar components — never by rebuilding the app's display string.
137
+ *
138
+ * The cascade is walked to a bounded depth; the click is verified by reading the
139
+ * pop-up's value back and requiring it to equal the clicked item's own title
140
+ * (the fail-closed read-back the ANCH2/YANCH1 date drives established).
141
+ */
142
+ export declare function axSelectNextOccurrenceScript(popupPath: string, isoDate: string, maxLevels?: number): string;
143
+ /**
144
+ * converge-weekdays: drive the weekly dialog's weekday ROWS onto an exact target
145
+ * set through a deterministic closed loop (RDLG2 — the RRD1 fix).
146
+ *
147
+ * The shipped drive set the FIRST weekday row and then pressed "+" and re-drove
148
+ * THE SAME row index per extra weekday, which on a PRE-POPULATED reschedule
149
+ * dialog left the rule's existing weekdays untouched: `{mon,wed}` retargeted to
150
+ * `{tue,thu,sat}` committed `{mon,tue,thu,sat}` (VMQ1 cell 2Tb — caught only by
151
+ * the write pipeline's verify). It also had no way to SHRINK a set.
152
+ *
153
+ * The loop instead: (1) read the live row count; (2) press the row-add button —
154
+ * the smaller-x button of a weekday row, resolved from live geometry rather than
155
+ * a pinned index, because the row buttons enumerate in an unstable order — until
156
+ * there are at least as many rows as target weekdays; (3) assign EVERY row from
157
+ * the target set, cycling, so a surplus row duplicates a target weekday instead
158
+ * of keeping a stale one (the app stores the weekdays as a SET, so duplicates
159
+ * collapse on commit — this is what makes shrinking possible without the
160
+ * remove button); (4) read every row back and require the set to match exactly.
161
+ * Anything else errors — the pipeline re-verifies against the DB regardless.
162
+ *
163
+ * `base` is the 1-based group pop-up index of the first weekday row (2 on the
164
+ * legacy dialog, 3 once the 3.23 `Next:` pop-up sits in front of them).
165
+ */
166
+ export declare function axConvergeWeekdaysScript(groupPath: string, base: number, titles: string[]): string;
99
167
  /**
100
168
  * select-row: select a PROJECT row by title, purely via AX (UIC4-a). Walks the
101
169
  * content table's rows, issues the row `select` action on each (which REPLACES
@@ -107,6 +175,19 @@ export declare function axSelectPopupCandidatesScript(path: string, values: stri
107
175
  * selection-landed verification, so a match guarantees the intended row is
108
176
  * selected. One stable command shape per primitive.
109
177
  *
178
+ * VMRES1 correction (2026-08-23, golden-v4 / Things 3.23): the readback LAGS the
179
+ * `select` action, so reading `name of selected to dos` immediately after it can
180
+ * return the PREVIOUS iteration's selection. A row whose `select` lands nothing
181
+ * (the blank spacer that follows the project rows) then matched the prior row's
182
+ * title, the loop returned "OK" one row LATE, and the table was left with NOTHING
183
+ * selected — `Items ▸ Repeat…` never materialized and the drive died at its wait
184
+ * (`verify-failed:silent-noop`). It reproduced 3/3 on the second project-repeat
185
+ * drive of a Things session and 0/2 on the first, which is the signature of a
186
+ * race, not of app state. Fixed the way the heading sibling below already does
187
+ * it: settle after `select`, then require `selected of (row i)` — the row THIS
188
+ * iteration targeted must itself hold the selection — before trusting the title
189
+ * readback. Evidence: [docs/lab/vmres1-residuals.md](../../../docs/lab/vmres1-residuals.md) §2.
190
+ *
110
191
  * UIC5 correction: the shipped form set the TABLE's `AXSelectedRows` attribute
111
192
  * to a one-row list, which is a SILENT NO-OP on Things' content table via System
112
193
  * Events (no error, selection never lands). The row `select` action is the
@@ -226,6 +307,14 @@ export declare function jxaClickScript(x: number, y: number): string;
226
307
  * calendar date at midnight). One stable JXA shape.
227
308
  */
228
309
  export declare function axSetDateTimeScript(spec: string, target: "next" | "ends" | "reminder"): string;
310
+ /**
311
+ * The converge-weekdays step encodes both of its inputs in `value` as
312
+ * `"<base>|<Weekday>,<Weekday>…"`: the base is the group pop-up index of the
313
+ * FIRST weekday row, which the dialog SHAPE decides (2 legacy / 3 next-popup),
314
+ * so it rides the same shape-selected `value` the driver merges in.
315
+ */
316
+ export declare function weekdayBaseOf(value: string): number;
317
+ export declare function weekdayTitlesOf(value: string): string[];
229
318
  /** Parse a resolve-frame "x y w h" line into the frame's center point. */
230
319
  export declare function parseFrameCenter(stdout: string): {
231
320
  x: number;