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.
- package/README.md +50 -13
- package/dist/audit/schema.d.ts +7 -0
- package/dist/audit/schema.js.map +1 -1
- package/dist/cli/clock.d.ts +8 -0
- package/dist/cli/clock.js +24 -0
- package/dist/cli/clock.js.map +1 -0
- package/dist/cli/commands/area.d.ts +18 -11
- package/dist/cli/commands/area.js +61 -74
- package/dist/cli/commands/area.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +1 -2
- package/dist/cli/commands/doctor.js +11 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/install-skill.d.ts +60 -0
- package/dist/cli/commands/install-skill.js +256 -0
- package/dist/cli/commands/install-skill.js.map +1 -0
- package/dist/cli/commands/mcp.js +9 -0
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/project.d.ts +1 -0
- package/dist/cli/commands/project.js +27 -34
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/reads.d.ts +15 -2
- package/dist/cli/commands/reads.js +144 -44
- package/dist/cli/commands/reads.js.map +1 -1
- package/dist/cli/commands/setup.js +7 -2
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/show.js +38 -14
- package/dist/cli/commands/show.js.map +1 -1
- package/dist/cli/commands/todo.js +15 -9
- package/dist/cli/commands/todo.js.map +1 -1
- package/dist/cli/commands/writes.js +797 -174
- package/dist/cli/commands/writes.js.map +1 -1
- package/dist/cli/did-you-mean.d.ts +14 -3
- package/dist/cli/did-you-mean.js +26 -3
- package/dist/cli/did-you-mean.js.map +1 -1
- package/dist/cli/glyphs.d.ts +32 -2
- package/dist/cli/glyphs.js +83 -12
- package/dist/cli/glyphs.js.map +1 -1
- package/dist/cli/help.js +121 -16
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +33 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/move-hint.d.ts +46 -0
- package/dist/cli/move-hint.js +196 -0
- package/dist/cli/move-hint.js.map +1 -0
- package/dist/cli/period.d.ts +2 -8
- package/dist/cli/period.js +44 -30
- package/dist/cli/period.js.map +1 -1
- package/dist/cli/read-driver.d.ts +43 -5
- package/dist/cli/read-driver.js +91 -15
- package/dist/cli/read-driver.js.map +1 -1
- package/dist/cli/render.d.ts +19 -8
- package/dist/cli/render.js +70 -27
- package/dist/cli/render.js.map +1 -1
- package/dist/cli/resolve-invocation.d.ts +2 -2
- package/dist/cli/resolve-invocation.js +3 -3
- package/dist/cli/resolve-invocation.js.map +1 -1
- package/dist/cli/skill-check.d.ts +27 -0
- package/dist/cli/skill-check.js +99 -0
- package/dist/cli/skill-check.js.map +1 -0
- package/dist/cli/skill.d.ts +70 -0
- package/dist/cli/skill.js +152 -0
- package/dist/cli/skill.js.map +1 -0
- package/dist/cli/tag-filters.d.ts +6 -2
- package/dist/cli/tag-filters.js +8 -6
- package/dist/cli/tag-filters.js.map +1 -1
- package/dist/cli/verb-hint.js +28 -3
- package/dist/cli/verb-hint.js.map +1 -1
- package/dist/cli/version.d.ts +4 -0
- package/dist/cli/version.js +18 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/client.d.ts +171 -27
- package/dist/client.js +279 -40
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +66 -2
- package/dist/config.js +120 -12
- package/dist/config.js.map +1 -1
- package/dist/contracts.d.ts +186 -28
- package/dist/contracts.js +22 -1
- package/dist/contracts.js.map +1 -1
- package/dist/diagnose.d.ts +34 -2
- package/dist/diagnose.js +36 -1
- package/dist/diagnose.js.map +1 -1
- package/dist/index.d.ts +25 -9
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.js +1157 -684
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/clock.d.ts +61 -0
- package/dist/model/clock.js +71 -0
- package/dist/model/clock.js.map +1 -0
- package/dist/model/dates.d.ts +26 -3
- package/dist/model/dates.js +84 -3
- package/dist/model/dates.js.map +1 -1
- package/dist/model/entities.d.ts +60 -3
- package/dist/model/entities.js.map +1 -1
- package/dist/model/mappers.d.ts +4 -2
- package/dist/model/mappers.js +66 -9
- package/dist/model/mappers.js.map +1 -1
- package/dist/model/recurrence.d.ts +8 -1
- package/dist/model/recurrence.js.map +1 -1
- package/dist/read/area-filter.d.ts +76 -0
- package/dist/read/area-filter.js +59 -0
- package/dist/read/area-filter.js.map +1 -0
- package/dist/read/area-view.d.ts +12 -12
- package/dist/read/area-view.js +58 -34
- package/dist/read/area-view.js.map +1 -1
- package/dist/read/detail.d.ts +1 -1
- package/dist/read/detail.js +26 -12
- package/dist/read/detail.js.map +1 -1
- package/dist/read/log-boundary.d.ts +1 -1
- package/dist/read/log-boundary.js +13 -3
- package/dist/read/log-boundary.js.map +1 -1
- package/dist/read/predicates.d.ts +18 -0
- package/dist/read/predicates.js +19 -0
- package/dist/read/predicates.js.map +1 -1
- package/dist/read/project-view.d.ts +32 -16
- package/dist/read/project-view.js +80 -45
- package/dist/read/project-view.js.map +1 -1
- package/dist/read/pseudo-area.d.ts +29 -0
- package/dist/read/pseudo-area.js +27 -0
- package/dist/read/pseudo-area.js.map +1 -0
- package/dist/read/queries.d.ts +108 -19
- package/dist/read/queries.js +212 -35
- package/dist/read/queries.js.map +1 -1
- package/dist/read/scope.d.ts +126 -0
- package/dist/read/scope.js +162 -0
- package/dist/read/scope.js.map +1 -0
- package/dist/read/search-rank.d.ts +2 -5
- package/dist/read/shape.d.ts +162 -0
- package/dist/read/shape.js +686 -0
- package/dist/read/shape.js.map +1 -0
- package/dist/read/show-target.d.ts +9 -1
- package/dist/read/show-target.js +45 -4
- package/dist/read/show-target.js.map +1 -1
- package/dist/read/snapshot.d.ts +1 -1
- package/dist/read/snapshot.js +9 -2
- package/dist/read/snapshot.js.map +1 -1
- package/dist/read/stage.d.ts +199 -0
- package/dist/read/stage.js +125 -0
- package/dist/read/stage.js.map +1 -0
- package/dist/read/truncation.d.ts +8 -6
- package/dist/read/truncation.js +35 -10
- package/dist/read/truncation.js.map +1 -1
- package/dist/read/views.d.ts +61 -20
- package/dist/read/views.js +240 -82
- package/dist/read/views.js.map +1 -1
- package/dist/surface-copy.d.ts +9 -0
- package/dist/surface-copy.js +9 -0
- package/dist/surface-copy.js.map +1 -1
- package/dist/write/accessibility-probe.d.ts +1 -1
- package/dist/write/accessibility-probe.js +8 -0
- package/dist/write/accessibility-probe.js.map +1 -1
- package/dist/write/automation-probe.d.ts +1 -1
- package/dist/write/automation-probe.js +8 -0
- package/dist/write/automation-probe.js.map +1 -1
- package/dist/write/batch.d.ts +49 -10
- package/dist/write/batch.js +423 -70
- package/dist/write/batch.js.map +1 -1
- package/dist/write/commands.d.ts +1 -1
- package/dist/write/commands.js +316 -66
- package/dist/write/commands.js.map +1 -1
- package/dist/write/guards.d.ts +1 -1
- package/dist/write/guards.js +94 -10
- package/dist/write/guards.js.map +1 -1
- package/dist/write/heading.d.ts +10 -1
- package/dist/write/heading.js +35 -5
- package/dist/write/heading.js.map +1 -1
- package/dist/write/make-repeating-project.d.ts +2 -2
- package/dist/write/make-repeating-project.js +9 -9
- package/dist/write/make-repeating-project.js.map +1 -1
- package/dist/write/move.d.ts +130 -0
- package/dist/write/move.js +1533 -0
- package/dist/write/move.js.map +1 -0
- package/dist/write/operations.d.ts +105 -19
- package/dist/write/operations.js +56 -7
- package/dist/write/operations.js.map +1 -1
- package/dist/write/opid.d.ts +31 -0
- package/dist/write/opid.js +30 -0
- package/dist/write/opid.js.map +1 -0
- package/dist/write/pipeline.d.ts +122 -3
- package/dist/write/pipeline.js +309 -52
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/planner.js +8 -1
- package/dist/write/planner.js.map +1 -1
- package/dist/write/pre-state.d.ts +197 -6
- package/dist/write/pre-state.js +427 -20
- package/dist/write/pre-state.js.map +1 -1
- package/dist/write/recurrence-rule-blob.d.ts +65 -0
- package/dist/write/recurrence-rule-blob.js +150 -0
- package/dist/write/recurrence-rule-blob.js.map +1 -0
- package/dist/write/reorder.d.ts +23 -3
- package/dist/write/reorder.js +1871 -85
- package/dist/write/reorder.js.map +1 -1
- package/dist/write/reversibility.js +19 -7
- package/dist/write/reversibility.js.map +1 -1
- package/dist/write/scope-guard.d.ts +31 -0
- package/dist/write/scope-guard.js +162 -0
- package/dist/write/scope-guard.js.map +1 -0
- package/dist/write/undo.js +120 -13
- package/dist/write/undo.js.map +1 -1
- package/dist/write/vectors/applescript.js +16 -7
- package/dist/write/vectors/applescript.js.map +1 -1
- package/dist/write/vectors/registry.d.ts +5 -7
- package/dist/write/vectors/registry.js +49 -2
- package/dist/write/vectors/registry.js.map +1 -1
- package/dist/write/vectors/shortcuts.js +1 -1
- package/dist/write/vectors/shortcuts.js.map +1 -1
- package/dist/write/vectors/simulator.d.ts +44 -0
- package/dist/write/vectors/simulator.js +1192 -0
- package/dist/write/vectors/simulator.js.map +1 -0
- package/dist/write/vectors/types.d.ts +46 -0
- package/dist/write/vectors/ui-certification.d.ts +10 -4
- package/dist/write/vectors/ui-certification.js +43 -10
- package/dist/write/vectors/ui-certification.js.map +1 -1
- package/dist/write/vectors/ui-drag.d.ts +21 -1
- package/dist/write/vectors/ui-drag.js +138 -27
- package/dist/write/vectors/ui-drag.js.map +1 -1
- package/dist/write/vectors/ui-recipes.d.ts +34 -1
- package/dist/write/vectors/ui-recipes.js +217 -6
- package/dist/write/vectors/ui-recipes.js.map +1 -1
- package/dist/write/vectors/ui.d.ts +40 -1
- package/dist/write/vectors/ui.js +196 -39
- package/dist/write/vectors/ui.js.map +1 -1
- package/dist/write/verify/delta.d.ts +127 -2
- package/dist/write/verify/delta.js +255 -16
- package/dist/write/verify/delta.js.map +1 -1
- package/dist/write/verify/poller.d.ts +7 -1
- package/dist/write/verify/poller.js +20 -1
- package/dist/write/verify/poller.js.map +1 -1
- package/package.json +24 -3
- package/schema/envelope.schema.json +383 -0
- package/skills/things-cli/SKILL.md +70 -0
- package/skills/things-cli/references/banner.md +35 -0
- package/skills/things-cli/references/contracts.md +62 -0
- package/skills/things-cli/references/errors.md +49 -0
- package/skills/things-cli/references/gui.md +11 -0
- package/skills/things-cli/references/model.md +60 -0
- package/skills/things-cli/references/ordering.md +71 -0
package/dist/write/vectors/ui.js
CHANGED
|
@@ -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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
446
|
-
|
|
447
|
-
|
|
572
|
+
// `dismissed`: true = abort verified the sheet gone; false = abort could NOT
|
|
573
|
+
// confirm dismissal (warn it may remain open — 0½ 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
|
|
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"
|
|
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
|
|
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
|
|
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):
|
|
525
|
-
// when
|
|
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
|
|
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
|
-
?
|
|
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
|
-
|
|
549
|
-
|
|
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
|
-
|
|
560
|
-
await
|
|
561
|
-
|
|
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
|
-
|
|
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
|