things-api 0.10.0 → 0.12.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 (239) hide show
  1. package/README.md +50 -13
  2. package/dist/audit/schema.d.ts +7 -0
  3. package/dist/audit/schema.js.map +1 -1
  4. package/dist/cli/clock.d.ts +8 -0
  5. package/dist/cli/clock.js +24 -0
  6. package/dist/cli/clock.js.map +1 -0
  7. package/dist/cli/commands/area.d.ts +18 -11
  8. package/dist/cli/commands/area.js +61 -74
  9. package/dist/cli/commands/area.js.map +1 -1
  10. package/dist/cli/commands/doctor.d.ts +1 -2
  11. package/dist/cli/commands/doctor.js +11 -1
  12. package/dist/cli/commands/doctor.js.map +1 -1
  13. package/dist/cli/commands/install-skill.d.ts +60 -0
  14. package/dist/cli/commands/install-skill.js +256 -0
  15. package/dist/cli/commands/install-skill.js.map +1 -0
  16. package/dist/cli/commands/mcp.js +9 -0
  17. package/dist/cli/commands/mcp.js.map +1 -1
  18. package/dist/cli/commands/project.d.ts +1 -0
  19. package/dist/cli/commands/project.js +27 -34
  20. package/dist/cli/commands/project.js.map +1 -1
  21. package/dist/cli/commands/reads.d.ts +15 -2
  22. package/dist/cli/commands/reads.js +144 -44
  23. package/dist/cli/commands/reads.js.map +1 -1
  24. package/dist/cli/commands/setup.js +7 -2
  25. package/dist/cli/commands/setup.js.map +1 -1
  26. package/dist/cli/commands/show.js +38 -14
  27. package/dist/cli/commands/show.js.map +1 -1
  28. package/dist/cli/commands/todo.js +15 -9
  29. package/dist/cli/commands/todo.js.map +1 -1
  30. package/dist/cli/commands/writes.js +797 -174
  31. package/dist/cli/commands/writes.js.map +1 -1
  32. package/dist/cli/did-you-mean.d.ts +14 -3
  33. package/dist/cli/did-you-mean.js +26 -3
  34. package/dist/cli/did-you-mean.js.map +1 -1
  35. package/dist/cli/glyphs.d.ts +32 -2
  36. package/dist/cli/glyphs.js +83 -12
  37. package/dist/cli/glyphs.js.map +1 -1
  38. package/dist/cli/help.js +121 -16
  39. package/dist/cli/help.js.map +1 -1
  40. package/dist/cli/main.js +33 -2
  41. package/dist/cli/main.js.map +1 -1
  42. package/dist/cli/move-hint.d.ts +46 -0
  43. package/dist/cli/move-hint.js +196 -0
  44. package/dist/cli/move-hint.js.map +1 -0
  45. package/dist/cli/period.d.ts +2 -8
  46. package/dist/cli/period.js +44 -30
  47. package/dist/cli/period.js.map +1 -1
  48. package/dist/cli/read-driver.d.ts +43 -5
  49. package/dist/cli/read-driver.js +91 -15
  50. package/dist/cli/read-driver.js.map +1 -1
  51. package/dist/cli/render.d.ts +19 -8
  52. package/dist/cli/render.js +70 -27
  53. package/dist/cli/render.js.map +1 -1
  54. package/dist/cli/resolve-invocation.d.ts +2 -2
  55. package/dist/cli/resolve-invocation.js +3 -3
  56. package/dist/cli/resolve-invocation.js.map +1 -1
  57. package/dist/cli/skill-check.d.ts +27 -0
  58. package/dist/cli/skill-check.js +99 -0
  59. package/dist/cli/skill-check.js.map +1 -0
  60. package/dist/cli/skill.d.ts +70 -0
  61. package/dist/cli/skill.js +152 -0
  62. package/dist/cli/skill.js.map +1 -0
  63. package/dist/cli/tag-filters.d.ts +6 -2
  64. package/dist/cli/tag-filters.js +8 -6
  65. package/dist/cli/tag-filters.js.map +1 -1
  66. package/dist/cli/verb-hint.js +28 -3
  67. package/dist/cli/verb-hint.js.map +1 -1
  68. package/dist/cli/version.d.ts +4 -0
  69. package/dist/cli/version.js +18 -0
  70. package/dist/cli/version.js.map +1 -0
  71. package/dist/client.d.ts +171 -27
  72. package/dist/client.js +279 -40
  73. package/dist/client.js.map +1 -1
  74. package/dist/config.d.ts +66 -2
  75. package/dist/config.js +120 -12
  76. package/dist/config.js.map +1 -1
  77. package/dist/contracts.d.ts +186 -28
  78. package/dist/contracts.js +22 -1
  79. package/dist/contracts.js.map +1 -1
  80. package/dist/diagnose.d.ts +34 -2
  81. package/dist/diagnose.js +36 -1
  82. package/dist/diagnose.js.map +1 -1
  83. package/dist/index.d.ts +25 -9
  84. package/dist/index.js +22 -3
  85. package/dist/index.js.map +1 -1
  86. package/dist/mcp/server.d.ts +9 -0
  87. package/dist/mcp/server.js +1157 -684
  88. package/dist/mcp/server.js.map +1 -1
  89. package/dist/model/clock.d.ts +61 -0
  90. package/dist/model/clock.js +71 -0
  91. package/dist/model/clock.js.map +1 -0
  92. package/dist/model/dates.d.ts +26 -3
  93. package/dist/model/dates.js +84 -3
  94. package/dist/model/dates.js.map +1 -1
  95. package/dist/model/entities.d.ts +60 -3
  96. package/dist/model/entities.js.map +1 -1
  97. package/dist/model/mappers.d.ts +4 -2
  98. package/dist/model/mappers.js +66 -9
  99. package/dist/model/mappers.js.map +1 -1
  100. package/dist/model/recurrence.d.ts +8 -1
  101. package/dist/model/recurrence.js.map +1 -1
  102. package/dist/read/area-filter.d.ts +76 -0
  103. package/dist/read/area-filter.js +59 -0
  104. package/dist/read/area-filter.js.map +1 -0
  105. package/dist/read/area-view.d.ts +12 -12
  106. package/dist/read/area-view.js +58 -34
  107. package/dist/read/area-view.js.map +1 -1
  108. package/dist/read/detail.d.ts +1 -1
  109. package/dist/read/detail.js +26 -12
  110. package/dist/read/detail.js.map +1 -1
  111. package/dist/read/log-boundary.d.ts +1 -1
  112. package/dist/read/log-boundary.js +13 -3
  113. package/dist/read/log-boundary.js.map +1 -1
  114. package/dist/read/predicates.d.ts +18 -0
  115. package/dist/read/predicates.js +19 -0
  116. package/dist/read/predicates.js.map +1 -1
  117. package/dist/read/project-view.d.ts +32 -16
  118. package/dist/read/project-view.js +80 -45
  119. package/dist/read/project-view.js.map +1 -1
  120. package/dist/read/pseudo-area.d.ts +29 -0
  121. package/dist/read/pseudo-area.js +27 -0
  122. package/dist/read/pseudo-area.js.map +1 -0
  123. package/dist/read/queries.d.ts +108 -19
  124. package/dist/read/queries.js +212 -35
  125. package/dist/read/queries.js.map +1 -1
  126. package/dist/read/scope.d.ts +126 -0
  127. package/dist/read/scope.js +162 -0
  128. package/dist/read/scope.js.map +1 -0
  129. package/dist/read/search-rank.d.ts +2 -5
  130. package/dist/read/shape.d.ts +162 -0
  131. package/dist/read/shape.js +686 -0
  132. package/dist/read/shape.js.map +1 -0
  133. package/dist/read/show-target.d.ts +9 -1
  134. package/dist/read/show-target.js +45 -4
  135. package/dist/read/show-target.js.map +1 -1
  136. package/dist/read/snapshot.d.ts +1 -1
  137. package/dist/read/snapshot.js +9 -2
  138. package/dist/read/snapshot.js.map +1 -1
  139. package/dist/read/stage.d.ts +199 -0
  140. package/dist/read/stage.js +125 -0
  141. package/dist/read/stage.js.map +1 -0
  142. package/dist/read/truncation.d.ts +8 -6
  143. package/dist/read/truncation.js +35 -10
  144. package/dist/read/truncation.js.map +1 -1
  145. package/dist/read/views.d.ts +61 -20
  146. package/dist/read/views.js +240 -82
  147. package/dist/read/views.js.map +1 -1
  148. package/dist/surface-copy.d.ts +9 -0
  149. package/dist/surface-copy.js +9 -0
  150. package/dist/surface-copy.js.map +1 -1
  151. package/dist/write/accessibility-probe.d.ts +1 -1
  152. package/dist/write/accessibility-probe.js +8 -0
  153. package/dist/write/accessibility-probe.js.map +1 -1
  154. package/dist/write/automation-probe.d.ts +1 -1
  155. package/dist/write/automation-probe.js +8 -0
  156. package/dist/write/automation-probe.js.map +1 -1
  157. package/dist/write/batch.d.ts +49 -10
  158. package/dist/write/batch.js +423 -70
  159. package/dist/write/batch.js.map +1 -1
  160. package/dist/write/commands.d.ts +1 -1
  161. package/dist/write/commands.js +316 -66
  162. package/dist/write/commands.js.map +1 -1
  163. package/dist/write/guards.d.ts +1 -1
  164. package/dist/write/guards.js +94 -10
  165. package/dist/write/guards.js.map +1 -1
  166. package/dist/write/heading.d.ts +10 -1
  167. package/dist/write/heading.js +35 -5
  168. package/dist/write/heading.js.map +1 -1
  169. package/dist/write/make-repeating-project.d.ts +2 -2
  170. package/dist/write/make-repeating-project.js +9 -9
  171. package/dist/write/make-repeating-project.js.map +1 -1
  172. package/dist/write/move.d.ts +130 -0
  173. package/dist/write/move.js +1533 -0
  174. package/dist/write/move.js.map +1 -0
  175. package/dist/write/operations.d.ts +105 -19
  176. package/dist/write/operations.js +56 -7
  177. package/dist/write/operations.js.map +1 -1
  178. package/dist/write/opid.d.ts +31 -0
  179. package/dist/write/opid.js +30 -0
  180. package/dist/write/opid.js.map +1 -0
  181. package/dist/write/pipeline.d.ts +122 -3
  182. package/dist/write/pipeline.js +309 -52
  183. package/dist/write/pipeline.js.map +1 -1
  184. package/dist/write/planner.js +8 -1
  185. package/dist/write/planner.js.map +1 -1
  186. package/dist/write/pre-state.d.ts +197 -6
  187. package/dist/write/pre-state.js +427 -20
  188. package/dist/write/pre-state.js.map +1 -1
  189. package/dist/write/recurrence-rule-blob.d.ts +65 -0
  190. package/dist/write/recurrence-rule-blob.js +150 -0
  191. package/dist/write/recurrence-rule-blob.js.map +1 -0
  192. package/dist/write/reorder.d.ts +23 -3
  193. package/dist/write/reorder.js +1871 -85
  194. package/dist/write/reorder.js.map +1 -1
  195. package/dist/write/reversibility.js +19 -7
  196. package/dist/write/reversibility.js.map +1 -1
  197. package/dist/write/scope-guard.d.ts +31 -0
  198. package/dist/write/scope-guard.js +162 -0
  199. package/dist/write/scope-guard.js.map +1 -0
  200. package/dist/write/undo.js +120 -13
  201. package/dist/write/undo.js.map +1 -1
  202. package/dist/write/vectors/applescript.js +16 -7
  203. package/dist/write/vectors/applescript.js.map +1 -1
  204. package/dist/write/vectors/registry.d.ts +5 -7
  205. package/dist/write/vectors/registry.js +49 -2
  206. package/dist/write/vectors/registry.js.map +1 -1
  207. package/dist/write/vectors/shortcuts.js +1 -1
  208. package/dist/write/vectors/shortcuts.js.map +1 -1
  209. package/dist/write/vectors/simulator.d.ts +44 -0
  210. package/dist/write/vectors/simulator.js +1192 -0
  211. package/dist/write/vectors/simulator.js.map +1 -0
  212. package/dist/write/vectors/types.d.ts +46 -0
  213. package/dist/write/vectors/ui-certification.d.ts +10 -4
  214. package/dist/write/vectors/ui-certification.js +43 -10
  215. package/dist/write/vectors/ui-certification.js.map +1 -1
  216. package/dist/write/vectors/ui-drag.d.ts +21 -1
  217. package/dist/write/vectors/ui-drag.js +138 -27
  218. package/dist/write/vectors/ui-drag.js.map +1 -1
  219. package/dist/write/vectors/ui-recipes.d.ts +34 -1
  220. package/dist/write/vectors/ui-recipes.js +217 -6
  221. package/dist/write/vectors/ui-recipes.js.map +1 -1
  222. package/dist/write/vectors/ui.d.ts +40 -1
  223. package/dist/write/vectors/ui.js +196 -39
  224. package/dist/write/vectors/ui.js.map +1 -1
  225. package/dist/write/verify/delta.d.ts +127 -2
  226. package/dist/write/verify/delta.js +255 -16
  227. package/dist/write/verify/delta.js.map +1 -1
  228. package/dist/write/verify/poller.d.ts +7 -1
  229. package/dist/write/verify/poller.js +20 -1
  230. package/dist/write/verify/poller.js.map +1 -1
  231. package/package.json +24 -3
  232. package/schema/envelope.schema.json +383 -0
  233. package/skills/things-cli/SKILL.md +70 -0
  234. package/skills/things-cli/references/banner.md +35 -0
  235. package/skills/things-cli/references/contracts.md +62 -0
  236. package/skills/things-cli/references/errors.md +49 -0
  237. package/skills/things-cli/references/gui.md +11 -0
  238. package/skills/things-cli/references/model.md +60 -0
  239. package/skills/things-cli/references/ordering.md +71 -0
@@ -69,17 +69,33 @@ export function axPressScript(path) {
69
69
  * moves focus. Foreground-bound (keystrokes reach the frontmost app) — the
70
70
  * reveal/activate preamble puts Things there. One stable command shape.
71
71
  */
72
- export function axSetValueScript(path, value) {
72
+ export function axSetValueScript(path, value, attempts = 3) {
73
+ const v = escapeAppleScript(value);
74
+ const n = Math.max(1, Math.trunc(attempts));
75
+ // CLOSED-LOOP (determinism doctrine): type, Tab-commit, then READ THE FIELD
76
+ // BACK and retry if it did not hold — the interval field, when it is the first
77
+ // numeric field after a frequency/type switch, races the dialog's group
78
+ // re-layout and reverts to 1 (UIC7, oddities §8l). Re-focus + re-type after a
79
+ // settle lands it once the re-layout has finished. Fail-closed (an `error`,
80
+ // i.e. a transport failure the pipeline re-verifies) if it never holds — the
81
+ // create/reschedule delta's rule assertion is the final DB-level authority.
73
82
  return `${SE}
74
83
  set tf to (${path})
75
- set focused of tf to true
76
- delay 0.15
77
- keystroke "a" using command down
78
- delay 0.1
79
- keystroke "${escapeAppleScript(value)}"
80
- delay 0.1
81
- key code 48
82
- delay 0.2
84
+ repeat ${n} times
85
+ set focused of tf to true
86
+ delay 0.15
87
+ keystroke "a" using command down
88
+ delay 0.1
89
+ keystroke "${v}"
90
+ delay 0.1
91
+ key code 48
92
+ delay 0.2
93
+ try
94
+ if ((value of tf) as text) is "${v}" then return "OK"
95
+ end try
96
+ delay 0.3
97
+ end repeat
98
+ error "field did not hold value \\"${v}\\" after ${n} attempt(s); last shown: " & ((value of tf) as text)
83
99
  end tell`;
84
100
  }
85
101
  /**
@@ -94,6 +110,22 @@ end tell`;
94
110
  * stable command shape per primitive.
95
111
  */
96
112
  export function axSelectPopupScript(path, value) {
113
+ return axSelectPopupCandidatesScript(path, [value]);
114
+ }
115
+ /**
116
+ * select-popup with a CANDIDATE LABEL LIST: open the pop-up (self-healing, as
117
+ * above), then click the FIRST candidate menu item that EXISTS, failing closed
118
+ * (an `error`, so the step reports transport failure) when none do. This is how
119
+ * the after-completion cadence unit is driven: its label is SINGULAR at interval
120
+ * 1 (`week`) but PLURAL at interval > 1 (`weeks`), and a reschedule opens the
121
+ * dialog pre-populated with the item's current interval — so a biweekly
122
+ * repeater's unit pop-up reads `weeks` before the interval field is ever touched
123
+ * (0½ defect (c): the field report's drive died on `menu item "week" not
124
+ * found`). Trying both labels makes the selection order-independent and
125
+ * plural-safe. One stable command shape per primitive.
126
+ */
127
+ export function axSelectPopupCandidatesScript(path, values) {
128
+ const list = values.map((v) => `"${escapeAppleScript(v)}"`).join(", ");
97
129
  return `${SE}
98
130
  set pu to (${path})
99
131
  repeat 20 times
@@ -101,7 +133,13 @@ export function axSelectPopupScript(path, value) {
101
133
  click pu
102
134
  delay 0.3
103
135
  end repeat
104
- click menu item "${escapeAppleScript(value)}" of menu 1 of pu
136
+ repeat with candidate in {${list}}
137
+ if (exists menu item candidate of menu 1 of pu) then
138
+ click menu item candidate of menu 1 of pu
139
+ return
140
+ end if
141
+ end repeat
142
+ error "none of the candidate menu items exist: " & {${list}}
105
143
  end tell`;
106
144
  }
107
145
  /**
@@ -139,6 +177,42 @@ export function axSelectRowScript(tablePath, title) {
139
177
  end tell
140
178
  return "NOMATCH"`;
141
179
  }
180
+ /**
181
+ * select-heading-row: select a HEADING as a content-table row by POSITION,
182
+ * purely via AX (HEADCERT1). A heading is not `things:///show`-selectable and
183
+ * its row carries no stable AX title handle, so identity is positional. Walks
184
+ * the revealed project view's content table; for each row it issues the row
185
+ * `select` action, then checks two things: the row genuinely took the selection
186
+ * (`selected of row` — header/spacer rows do not) AND `Things3 → name of
187
+ * selected to dos` is EMPTY (a heading is not a to-do; a to-do row's readback is
188
+ * its title). The Nth such heading row (0-based `ordinal`, in top-to-bottom =
189
+ * `index` order) is LEFT selected and the script returns "OK"; "NOMATCH" if the
190
+ * project has fewer headings. With the heading selected, `Items ▸ Convert to
191
+ * Project…` enables. Pure System Events, background-capable, no focus steal.
192
+ * One stable command shape per primitive.
193
+ */
194
+ export function axSelectHeadingRowScript(tablePath, ordinal) {
195
+ const n = Math.max(0, Math.trunc(ordinal));
196
+ return `tell application "System Events" to tell process "Things3"
197
+ set theTable to (${tablePath})
198
+ set rowCount to (count rows of theTable)
199
+ set headingSeen to 0
200
+ repeat with i from 1 to rowCount
201
+ try
202
+ select (row i of theTable)
203
+ delay 0.25
204
+ if (selected of (row i of theTable)) then
205
+ tell application "Things3" to set selNames to (name of selected to dos)
206
+ if (count of selNames) is 0 then
207
+ if headingSeen is ${n} then return "OK"
208
+ set headingSeen to headingSeen + 1
209
+ end if
210
+ end if
211
+ end try
212
+ end repeat
213
+ end tell
214
+ return "NOMATCH"`;
215
+ }
142
216
  /** activate: foreground Things (the fallback preamble step). */
143
217
  export function axActivateScript() {
144
218
  return `tell application "Things3" to activate`;
@@ -158,6 +232,50 @@ export function axKeyScript(keys) {
158
232
  export function axAbortScript() {
159
233
  return `tell application "System Events" to key code 53`; // Escape
160
234
  }
235
+ /**
236
+ * sheet-open probe: is a modal SHEET attached to the Things standard window, OR
237
+ * a detached repeat-editor / popover window (an `AXUnknown` that is not the
238
+ * 40×40 utility window) present right now? Returns "true"/"false". Used to (d)
239
+ * VERIFY an abort actually dismissed the sheet before claiming it did, and (e)
240
+ * DIAGNOSE a canary miss that is really a leftover sheet from an earlier aborted
241
+ * drive disabling the menu bar. Wrapped in `try` blocks so a missing standard
242
+ * window (a rare transient) reads as "no sheet" rather than erroring. One stable
243
+ * command shape.
244
+ */
245
+ export function axSheetOpenScript() {
246
+ return `${SE}
247
+ set sheetOpen to false
248
+ try
249
+ if (exists sheet 1 of (first window whose subrole is "AXStandardWindow")) then set sheetOpen to true
250
+ end try
251
+ try
252
+ if ((count of (windows whose subrole is "AXUnknown" and size is not {40, 40})) > 0) then set sheetOpen to true
253
+ end try
254
+ return sheetOpen
255
+ end tell`;
256
+ }
257
+ /** Is a modal sheet / detached editor currently open? Fail-closed: an errored probe reads as "still open". */
258
+ async function sheetStillOpen(run) {
259
+ const res = await run({ primitive: "resolve", label: "sheet-open probe", script: axSheetOpenScript() }, STEP_TIMEOUT_MS);
260
+ // Only a clean "false" clears the sheet; a probe error is treated as "may
261
+ // still be open" (fail-closed doctrine — never claim dismissal we can't see).
262
+ return !(res.ok && res.stdout.trim() === "false");
263
+ }
264
+ /**
265
+ * Send Escape and VERIFY the sheet/popover is gone (0½ defect (d): the abort
266
+ * must never claim dismissal it did not confirm). Retries Escape ONCE if the
267
+ * first is not honored. Returns whether dismissal was verified — the caller
268
+ * words its partial-state report accordingly (fail-closed: on an unverifiable
269
+ * dismissal it must warn the sheet may remain open).
270
+ */
271
+ async function verifiedAbort(run) {
272
+ const escape = () => run({ primitive: "key", label: "abort (Escape)", script: axAbortScript() }, STEP_TIMEOUT_MS);
273
+ await escape();
274
+ if (!(await sheetStillOpen(run)))
275
+ return { dismissed: true };
276
+ await escape(); // one retry
277
+ return { dismissed: !(await sheetStillOpen(run)) };
278
+ }
161
279
  /**
162
280
  * resolve-frame: read the element's on-screen frame (top-left origin, points)
163
281
  * from the live AX tree and print "x y w h". Used by `click-element` to target
@@ -291,7 +409,8 @@ function canaryPaths(recipe) {
291
409
  step.primitive !== "set-value" &&
292
410
  step.primitive !== "resolve" &&
293
411
  step.primitive !== "click-element" &&
294
- step.primitive !== "select-row") {
412
+ step.primitive !== "select-row" &&
413
+ step.primitive !== "select-heading-row") {
295
414
  continue;
296
415
  }
297
416
  // A candidate-addressed step is resolved at run time (its element is
@@ -357,7 +476,9 @@ export function commandForStep(step, targetUuid) {
357
476
  return {
358
477
  primitive: "select-popup",
359
478
  label: step.label,
360
- script: axSelectPopupScript(step.path ?? "", step.value ?? ""),
479
+ script: step.valueCandidates !== undefined
480
+ ? axSelectPopupCandidatesScript(step.path ?? "", step.valueCandidates)
481
+ : axSelectPopupScript(step.path ?? "", step.value ?? ""),
361
482
  };
362
483
  case "set-datetime":
363
484
  return {
@@ -374,6 +495,12 @@ export function commandForStep(step, targetUuid) {
374
495
  label: step.label,
375
496
  script: axSelectRowScript(step.path ?? "", step.value ?? ""),
376
497
  };
498
+ case "select-heading-row":
499
+ return {
500
+ primitive: "select-heading-row",
501
+ label: step.label,
502
+ script: axSelectHeadingRowScript(step.path ?? "", Number(step.value ?? "0")),
503
+ };
377
504
  case "key":
378
505
  return { primitive: "key", label: step.label, script: axKeyScript(step.keys ?? "") };
379
506
  case "click-element":
@@ -442,9 +569,20 @@ async function driveClickElement(step, run) {
442
569
  }
443
570
  async function drive(recipe, run, aux) {
444
571
  const done = [];
445
- const abort = () => run({ primitive: "key", label: "abort (Escape)", script: axAbortScript() }, STEP_TIMEOUT_MS);
446
- const partial = (failed, why, dismissed = true) => refusal(`ui drive stopped at "${failed}" (${why}). Completed: ${done.join(" ") || "nothing"}.` +
447
- (dismissed ? " The open sheet/popover was dismissed (Escape)." : ""));
572
+ // `dismissed`: true = abort verified the sheet gone; false = abort could NOT
573
+ // confirm dismissal (warn it may remain open defect (d): never claim a
574
+ // dismissal we did not see); undefined = no sheet was opened / no abort ran.
575
+ const partial = (failed, why, dismissed) => {
576
+ const base = `ui drive stopped at "${failed}" (${why}). Completed: ${done.join(" → ") || "nothing"}.`;
577
+ const cleanup = dismissed === true
578
+ ? " The open sheet/popover was dismissed (Escape, confirmed gone)."
579
+ : dismissed === false
580
+ ? " WARNING: a sheet or popover may still be open in Things — Escape did not dismiss it." +
581
+ " Dismiss it manually before retrying (a leftover sheet disables the menu bar and will" +
582
+ " make the next drive's preflight fail)."
583
+ : "";
584
+ return refusal(base + cleanup);
585
+ };
448
586
  // 0. Run the leading reveal/activate preamble BEFORE the canary. The Items
449
587
  // menu is context-dependent — its Repeat submenu (and the plain "Repeat…"
450
588
  // item) only materialize once a matching item is SELECTED (UIC1). Resolving
@@ -472,6 +610,19 @@ async function drive(recipe, run, aux) {
472
610
  // the canary resolves elements one at a time; a single miss aborts before anything is pressed, so parallelizing would waste work and blur which element failed
473
611
  const res = await run({ primitive: "resolve", label, script: axResolveScript(path) }, STEP_TIMEOUT_MS);
474
612
  if (!res.ok || res.stdout.trim() !== "true") {
613
+ // (e) A leftover modal sheet/popover from an earlier aborted drive disables
614
+ // the menu bar, so the Items ▸ Repeat path cannot resolve. Detect that
615
+ // FIRST and name it as the likely cause, ahead of the generic
616
+ // update/Accessibility/language guesses. Not auto-dismissed on a preflight:
617
+ // the leftover sheet may hold a half-entered rule, and this refusal already
618
+ // carries a clean remediation (the drive's own aborts DO dismiss+verify).
619
+ if (await sheetStillOpen(run)) {
620
+ return refusal(`ui preflight refused: element for "${label}" did not resolve (${path}). A modal sheet ` +
621
+ "or popover is currently open in Things — most likely left over from an earlier drive " +
622
+ "that aborted without dismissing it. An open sheet disables the menu bar, so the Repeat " +
623
+ "menu path cannot resolve. Dismiss the open sheet in Things (Escape or Cancel), then " +
624
+ "retry. Nothing was pressed.");
625
+ }
475
626
  return refusal(`ui preflight refused: element for "${label}" did not resolve (${path}) — a Things ` +
476
627
  "update may have changed the menu, Accessibility may not be granted, Things may not " +
477
628
  "be running, or the app may not be in English. Nothing was pressed.");
@@ -486,9 +637,9 @@ async function drive(recipe, run, aux) {
486
637
  // steps are strictly sequential: this wait must resolve before the step that acts on the awaited element runs
487
638
  const ok = await waitForAnyElement(step.pathCandidates ?? [step.path ?? ""], step.label, step.timeoutMs ?? STEP_TIMEOUT_MS, run);
488
639
  if (!ok) {
489
- // the abort keystroke must land before returning the partial-state report
490
- await abort();
491
- return partial(step.label, "the expected element never appeared within the timeout");
640
+ // the abort keystroke must land (and be verified) before returning the partial-state report
641
+ const { dismissed } = await verifiedAbort(run);
642
+ return partial(step.label, "the expected element never appeared within the timeout", dismissed);
492
643
  }
493
644
  done.push(step.label);
494
645
  continue;
@@ -497,12 +648,13 @@ async function drive(recipe, run, aux) {
497
648
  // The sidebar drag driver runs its own snapshot → scroll → drag →
498
649
  // DB-assert ladder (ui-drag.ts); every gesture anchors on frames it
499
650
  // resolves live, and a failed assert triggers a verified recovery drag.
651
+ // No sheet is involved in a drag, so no dismissal clause.
500
652
  if (step.drag === undefined)
501
- return partial(step.label, "no drag spec compiled", false);
653
+ return partial(step.label, "no drag spec compiled");
502
654
  // the drag ladder depends on the UI state the preamble produced
503
655
  const outcome = await driveSidebarAreaReorder(step.drag, run, aux);
504
656
  if (!outcome.ok)
505
- return partial(step.label, outcome.detail, false);
657
+ return partial(step.label, outcome.detail);
506
658
  done.push(`${step.label} (${outcome.detail})`);
507
659
  continue;
508
660
  }
@@ -512,28 +664,33 @@ async function drive(recipe, run, aux) {
512
664
  // the effective form must be resolved before this step can act on it
513
665
  const effective = await resolveStepPath(step, run);
514
666
  if (effective === null) {
515
- // dismiss whatever opened before reporting
516
- await abort();
667
+ // dismiss whatever opened (and verify) before reporting
668
+ const { dismissed } = await verifiedAbort(run);
517
669
  return partial(step.label, "none of its expected element shapes resolved (neither the attached sheet nor the " +
518
- "detached repeat editor window)");
670
+ "detached repeat editor window)", dismissed);
519
671
  }
520
672
  step = { ...step, path: effective };
521
673
  }
522
674
  const command = commandForStep(step, recipe.targetUuid);
523
- if (step.primitive === "select-row") {
524
- // Pure-AX row selection with readback verification (UIC4-a): "OK" only
525
- // when a row selected to the target title.
675
+ if (step.primitive === "select-row" || step.primitive === "select-heading-row") {
676
+ // Pure-AX row selection with readback verification (UIC4-a / HEADCERT1):
677
+ // "OK" only when the intended row selected (title readback for a project
678
+ // row; the Nth empty-readback heading row for a heading).
526
679
  // the selection must land before the menu that acts on it is pressed
527
680
  const res = await run(command, STEP_TIMEOUT_MS);
528
681
  if (!res.ok || res.stdout.trim() !== "OK") {
529
- // clear any transient state before reporting
530
- await abort();
682
+ // clear any transient state (and verify) before reporting
683
+ const { dismissed } = await verifiedAbort(run);
684
+ const noMatch = step.primitive === "select-heading-row"
685
+ ? "the project view exposed no selectable heading row at the target position — the " +
686
+ "heading may have been converted/deleted already, or the project's headings changed"
687
+ : "no content-table row selected to the target project's title — it may not be a " +
688
+ "selectable row in this view, or its title changed";
531
689
  return partial(step.label, res.ok
532
- ? "no content-table row selected to the target project's title — it may not be a " +
533
- "selectable row in this view, or its title changed"
690
+ ? noMatch
534
691
  : res.timedOut === true
535
692
  ? "the row-selection step timed out"
536
- : res.stderr.trim() || "the row-selection step failed");
693
+ : res.stderr.trim() || "the row-selection step failed", dismissed);
537
694
  }
538
695
  done.push(step.label);
539
696
  continue;
@@ -544,10 +701,9 @@ async function drive(recipe, run, aux) {
544
701
  // the click depends on the UI state the previous step produced
545
702
  const outcome = await driveClickElement(step, run);
546
703
  if (!outcome.ok) {
547
- // dismiss whatever the click opened before reporting
548
- if (outcome.needsAbort === true)
549
- await abort();
550
- return partial(step.label, outcome.why ?? "the click failed");
704
+ // dismiss whatever the click opened (and verify) before reporting
705
+ const dismissed = outcome.needsAbort === true ? (await verifiedAbort(run)).dismissed : undefined;
706
+ return partial(step.label, outcome.why ?? "the click failed", dismissed);
551
707
  }
552
708
  done.push(step.label);
553
709
  continue;
@@ -555,10 +711,11 @@ async function drive(recipe, run, aux) {
555
711
  // each recipe step depends on the UI state the previous step produced; they cannot be parallelized
556
712
  const res = await run(command, STEP_TIMEOUT_MS);
557
713
  if (!res.ok) {
558
- // dismiss the half-open sheet/popover before reporting partial state
559
- if (step.primitive !== "reveal" && step.primitive !== "activate")
560
- await abort();
561
- return partial(step.label, res.timedOut === true ? "the step timed out" : res.stderr.trim() || "the step failed");
714
+ // dismiss the half-open sheet/popover (and verify) before reporting partial state
715
+ const dismissed = step.primitive !== "reveal" && step.primitive !== "activate"
716
+ ? (await verifiedAbort(run)).dismissed
717
+ : undefined;
718
+ return partial(step.label, res.timedOut === true ? "the step timed out" : res.stderr.trim() || "the step failed", dismissed);
562
719
  }
563
720
  done.push(step.label);
564
721
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/write/vectors/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/write/vectors/ui.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,94 @@ export interface CreateProbe {
21
21
  * pre-existing same-title uuids.
22
22
  */
23
23
  excludeUuids?: string[];
24
+ /**
25
+ * Make-repeating template discovery (RSIM-P2/RSIM-R). Its presence tells
26
+ * `findCreated` to KEEP the `sinceEpoch` time-bound even though `excludeUuids`
27
+ * is set (a minted template always carries a fresh write-time creationDate, so
28
+ * the bound is safe and tightens the same-title gauntlet), and tells
29
+ * `evaluateDelta` to disambiguate multiple surviving templates by the source
30
+ * FINGERPRINT, derive the spawned instance via the template FK, and resolve
31
+ * the source's fate — the enriched `repeating` block the caller returns.
32
+ */
33
+ repeating?: RepeatingProbe;
34
+ }
35
+ /**
36
+ * The context a make-repeating create-probe carries to harden discovery and
37
+ * enrich the result. Captured in the op's pre-read (the source row is gone or
38
+ * relinked by verify time, so it must be snapshotted before the drive).
39
+ */
40
+ export interface RepeatingProbe {
41
+ /** The original item's uuid (the ref the caller passed to make-repeating). */
42
+ sourceUuid: string;
43
+ /**
44
+ * Pre-write fingerprint of the source row. Used ONLY to break a tie between
45
+ * multiple surviving same-title templates — deadline is deliberately excluded
46
+ * (the template drops the source's deadline while the instance keeps it, so it
47
+ * is asymmetric and unsafe to match on; RSIM-P2 B3).
48
+ */
49
+ fingerprint: RepeatingFingerprint;
50
+ /**
51
+ * Project conversions only: the uuids of the source subtree rows (to-dos +
52
+ * headings) captured pre-write. `childrenReplaced` counts how many of these
53
+ * are ABSENT post-op — dead uuids the caller may have held (the delete-remint
54
+ * fate kills the whole subtree; the nested-repeater preserve fate typically
55
+ * kills only the flattened nested-template row, the visible children surviving
56
+ * with their uuids). Absent (undefined) for to-do conversions.
57
+ */
58
+ subtreeUuids?: string[];
59
+ /**
60
+ * The rule the drive REQUESTED (type/unit/interval). When set, the discovered
61
+ * template's DECODED rule must match it — a template minted with the wrong
62
+ * frequency/interval is a `verify-failed:mismatch`, never a silent `ok`. This
63
+ * catches the interval-field re-layout race (oddities §8l) where the GUI drive
64
+ * creates the template but the interval reverts to 1. The check is SKIPPED
65
+ * when the rule cannot be decoded (a future Things rule format) — discovery
66
+ * still succeeds, consistent with the read-side decoder's fail-soft. It does
67
+ * NOT participate in candidate DISCOVERY (which stays `isTemplate`-only, so a
68
+ * template with an unreadable rule is still found).
69
+ */
70
+ expectedRule?: {
71
+ type: "fixed" | "after-completion";
72
+ unit: "daily" | "weekly" | "monthly" | "yearly";
73
+ interval: number;
74
+ };
75
+ }
76
+ /**
77
+ * Source-row fingerprint for template disambiguation. Notes, tags, container
78
+ * pointer, and checklist titles copy verbatim to the minted template; deadline
79
+ * does NOT (see RepeatingProbe.fingerprint).
80
+ */
81
+ export interface RepeatingFingerprint {
82
+ notes: string;
83
+ /** Direct tag titles, sorted. */
84
+ tags: string[];
85
+ /** Container pointer (project / heading / area uuid), null for a loose item. */
86
+ container: string | null;
87
+ /** Checklist item titles in order (to-dos; empty for projects). */
88
+ checklistTitles: string[];
24
89
  }
90
+ /**
91
+ * The enriched make-repeating outcome derived post-write:
92
+ * - templateUuid — the discovered repeating template (also the result `uuid`).
93
+ * - instanceUuid — the current-occurrence instance, derived via the template
94
+ * FK (null + a warning when it cannot be derived).
95
+ * - replacedUuid — the original uuid when the source was destroyed (identity
96
+ * replacement); null when the source was preserved AS the
97
+ * instance (then instanceUuid === the original uuid).
98
+ * - childrenReplaced — project conversions only: how many pre-read child uuids
99
+ * are now DEAD (dead-uuid signaling, like replacedUuid).
100
+ */
101
+ export interface RepeatingDiscovery {
102
+ templateUuid: string;
103
+ instanceUuid: string | null;
104
+ replacedUuid: string | null;
105
+ childrenReplaced?: number;
106
+ }
107
+ /**
108
+ * Build a source fingerprint from a decoded task for RepeatingProbe. Deadline is
109
+ * intentionally omitted (asymmetric between template and instance).
110
+ */
111
+ export declare function buildRepeatingFingerprint(task: AnyTask): RepeatingFingerprint;
25
112
  export type DeltaSpec = {
26
113
  mode: "update";
27
114
  uuid: string;
@@ -49,7 +136,7 @@ export type DeltaSpec = {
49
136
  }[];
50
137
  } | {
51
138
  mode: "gone";
52
- entity: "area" | "tag";
139
+ entity: "area" | "tag" | "task";
53
140
  uuid: string;
54
141
  }
55
142
  /**
@@ -113,6 +200,17 @@ export interface DeltaEvaluation {
113
200
  observed: Record<string, unknown> | null;
114
201
  /** For create mode: uuid of the row that satisfied the probe. */
115
202
  discoveredUuid?: string;
203
+ /** Make-repeating create-probe: the enriched template/instance/replaced block. */
204
+ repeating?: RepeatingDiscovery;
205
+ /** Advisory notes from the repeating derivation (underivable instance, etc.). */
206
+ repeatingWarnings?: string[];
207
+ /**
208
+ * A PERMANENT verify failure the poller must not retry (e.g. an unbreakable
209
+ * template ambiguity) — carries a distinct `detail` naming the cause.
210
+ */
211
+ terminal?: boolean;
212
+ /** Custom failure detail surfaced by the pipeline in place of the generic one. */
213
+ detail?: string;
116
214
  }
117
215
  export interface VerifyReader {
118
216
  taskByUuid(uuid: string): AnyTask | null;
@@ -128,6 +226,23 @@ export interface VerifyReader {
128
226
  rankOf(uuid: string, key: "index" | "todayIndex" | "area-index"): number | null;
129
227
  trashedCount(): number;
130
228
  findCreated(probe: CreateProbe): AnyTask[];
229
+ /**
230
+ * Non-trashed rows of the given DB type (0=to-do, 1=project, 2=heading)
231
+ * whose `rt1_repeatingTemplate` FK points at the template — the exact,
232
+ * time/title-free way to derive a spawned instance (RSIM-P2 B4).
233
+ */
234
+ instancesOfTemplate(templateUuid: string, dbType: number): string[];
235
+ /**
236
+ * The post-write fate of a make-repeating source row: whether it still
237
+ * exists, and (if so) which template its `rt1_repeatingTemplate` points at.
238
+ * A DELETE leaves it absent; a preserve relinks it to the new template.
239
+ */
240
+ repeatingSourceFate(uuid: string): {
241
+ present: boolean;
242
+ templateFk: string | null;
243
+ };
244
+ /** How many of these uuids no longer exist as TMTask rows (dead-uuid count). */
245
+ countAbsent(uuids: string[]): number;
131
246
  modDateOf(uuid: string): number | null;
132
247
  /**
133
248
  * Assertable fields of a TMArea/TMTag row: title, tags (areas, sorted
@@ -135,7 +250,17 @@ export interface VerifyReader {
135
250
  */
136
251
  entityFields(entity: "area" | "tag", uuid: string): Record<string, unknown> | null;
137
252
  }
138
- export declare function createDbReader(db: DatabaseSync): VerifyReader;
253
+ /**
254
+ * `now`/`zone` supply the evaluation clock the reader hands to `byUuid` (and thus
255
+ * `mapTodaySection`) so a verified read-after-write gates `todaySection` on the
256
+ * SAME injected clock the write planner used — never the wall clock. Under a
257
+ * pinned `THINGS_NOW` (consumer-timezone / bench fence), an `evening`/`today`
258
+ * item dated pinned-today would otherwise be judged future-dated by a real-clock
259
+ * reader and lose its `todaySection`, failing the delta assertion (bench-caught
260
+ * regression from the #211 todaySection gate). Defaults to the host clock so the
261
+ * pure verify-reader tests and ordering call sites are unaffected.
262
+ */
263
+ export declare function createDbReader(db: DatabaseSync, now?: Date, zone?: string): VerifyReader;
139
264
  /**
140
265
  * Resolve an assertion path against a decoded entity. Computed paths:
141
266
  * `tags` → sorted direct-tag titles; `checklistTitles` → checklist titles