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
@@ -1,10 +1,11 @@
1
1
  import { encodePackedDate, localToday } from "../model/dates.js";
2
2
  import { TASK_STATUS_FROM_DB } from "../model/entities.js";
3
3
  import { byUuid } from "../read/detail.js";
4
- import { resolveNamedRef } from "../read/queries.js";
4
+ import { deadNameMatchHint, resolveHeadingRef, resolveNamedRef } from "../read/queries.js";
5
5
  export function emptyPreState() {
6
6
  return {
7
7
  target: null,
8
+ todayIso: localToday(new Date()),
8
9
  destProject: null,
9
10
  destProjectStatus: null,
10
11
  destArea: null,
@@ -14,6 +15,7 @@ export function emptyPreState() {
14
15
  parentTag: null,
15
16
  entityTarget: null,
16
17
  childTags: [],
18
+ areaMembers: null,
17
19
  openChildren: [],
18
20
  canceledChildren: [],
19
21
  completedChildren: [],
@@ -24,6 +26,240 @@ export function emptyPreState() {
24
26
  reorder: null,
25
27
  areaOrder: null,
26
28
  projectRepeat: null,
29
+ repeatSubtreeUuids: null,
30
+ headingConvert: null,
31
+ headingMove: null,
32
+ headingMoveToProject: null,
33
+ headingDissolve: null,
34
+ };
35
+ }
36
+ /**
37
+ * Read a project's current heading order and compute the FULL target order
38
+ * after moving `headings` (an ordered block) to the requested placement. The
39
+ * block lands contiguously in selection order; every other heading keeps its
40
+ * relative order. Children follow their heading on the wire (scf P1). Illegal
41
+ * requests (unknown/duplicated movee, an anchor that is a movee or absent)
42
+ * collect problems and leave the order unchanged.
43
+ */
44
+ export function computeHeadingMovePre(db, project, headings, placement) {
45
+ const projectUuid = project.resolved?.uuid ?? "";
46
+ const current = db
47
+ .prepare(`SELECT uuid FROM TMTask WHERE type = 2 AND trashed = 0 AND project = ? ORDER BY "index"`)
48
+ .all(projectUuid).map((r) => r.uuid);
49
+ const problems = [];
50
+ const currentSet = new Set(current);
51
+ const movees = new Set();
52
+ for (const h of headings) {
53
+ if (movees.has(h))
54
+ problems.push(`heading ${h} listed more than once`);
55
+ movees.add(h);
56
+ }
57
+ if (headings.length === 0)
58
+ problems.push("no headings given");
59
+ for (const h of headings) {
60
+ if (!currentSet.has(h))
61
+ problems.push(`${h} is not a heading of this project`);
62
+ }
63
+ let anchor = null;
64
+ if ("before" in placement || "after" in placement) {
65
+ anchor = "before" in placement ? placement.before : placement.after;
66
+ if (!currentSet.has(anchor)) {
67
+ problems.push(`anchor heading ${anchor} is not a heading of this project`);
68
+ }
69
+ if (movees.has(anchor)) {
70
+ problems.push("the anchor heading cannot also be one of the moved headings");
71
+ }
72
+ }
73
+ if (problems.length > 0)
74
+ return { project, current, targetOrder: current, problems };
75
+ const rest = current.filter((u) => !movees.has(u));
76
+ let targetOrder;
77
+ if ("position" in placement) {
78
+ targetOrder = placement.position === "first" ? [...headings, ...rest] : [...rest, ...headings];
79
+ }
80
+ else {
81
+ const idx = rest.indexOf(anchor);
82
+ const insertAt = "before" in placement ? idx : idx + 1;
83
+ targetOrder = [...rest.slice(0, insertAt), ...headings, ...rest.slice(insertAt)];
84
+ }
85
+ return { project, current, targetOrder, problems: [] };
86
+ }
87
+ /**
88
+ * The uuids of a project's source subtree rows (non-trashed to-dos AND
89
+ * headings, direct or heading-nested). `childrenReplaced` counts how many of
90
+ * these are dead post-op — the whole subtree in the delete-remint fate, just
91
+ * the flattened nested-template row in the nested-repeater preserve fate.
92
+ */
93
+ export function projectSubtreeUuids(db, projectUuid) {
94
+ return db
95
+ .prepare(`SELECT uuid FROM TMTask
96
+ WHERE trashed = 0 AND (
97
+ (type = 0 AND (project = ? OR heading IN
98
+ (SELECT uuid FROM TMTask WHERE type = 2 AND project = ?)))
99
+ OR (type = 2 AND project = ?))`)
100
+ .all(projectUuid, projectUuid, projectUuid).map((r) => r.uuid);
101
+ }
102
+ export function classifyHeadingConvert(db, target) {
103
+ if (target === null || target.type !== "heading") {
104
+ return { kind: "refuse", refusal: "not-a-heading", detail: "target is not a heading" };
105
+ }
106
+ const project = target.project;
107
+ if (project === null) {
108
+ return {
109
+ kind: "refuse",
110
+ refusal: "no-project",
111
+ detail: "the heading has no owning project — cannot reveal a project view to select its row",
112
+ };
113
+ }
114
+ const rows = db
115
+ .prepare(`SELECT uuid FROM TMTask WHERE type = 2 AND project = ? AND trashed = 0 ORDER BY "index"`)
116
+ .all(project.uuid);
117
+ const ordinal = rows.findIndex((r) => r.uuid === target.uuid);
118
+ if (ordinal < 0) {
119
+ return {
120
+ kind: "refuse",
121
+ refusal: "not-found",
122
+ detail: "the heading was not found among its project's non-trashed headings",
123
+ };
124
+ }
125
+ return { kind: "ok", projectReveal: project.uuid, ordinal };
126
+ }
127
+ export function classifyHeadingMoveToProject(db, project, headingSel, toProject) {
128
+ const src = resolveProject(db, project);
129
+ if (src.resolved === null) {
130
+ return {
131
+ kind: "refuse",
132
+ refusal: "no-source",
133
+ detail: src.matches > 1
134
+ ? "the source project title is ambiguous — pass its uuid"
135
+ : "the source project did not resolve",
136
+ };
137
+ }
138
+ const h = resolveHeading(db, src.resolved.uuid, headingSel);
139
+ if (h.resolved === null) {
140
+ return {
141
+ kind: "refuse",
142
+ refusal: h.matches > 1 ? "heading-ambiguous" : "heading-not-found",
143
+ detail: h.matches > 1
144
+ ? `the heading selector "${headingSel}" matches ${h.matches} headings in the project — disambiguate with a uuid`
145
+ : `no heading matching "${headingSel}" in the source project`,
146
+ };
147
+ }
148
+ const headingRow = db
149
+ .prepare("SELECT title FROM TMTask WHERE uuid = ? AND type = 2 AND trashed = 0")
150
+ .get(h.resolved.uuid);
151
+ if (headingRow === undefined) {
152
+ return { kind: "refuse", refusal: "heading-not-found", detail: "the heading no longer exists" };
153
+ }
154
+ const title = headingRow.title ?? "";
155
+ if (title === "") {
156
+ return {
157
+ kind: "refuse",
158
+ refusal: "empty-heading-title",
159
+ detail: "the heading has no title — the Move… drive addresses the heading by its title-carrying " +
160
+ '"More. <title>" button, which cannot pick one titleless heading out of several',
161
+ };
162
+ }
163
+ // Source title-collision: the "More. <title>" node cannot tell two same-titled
164
+ // headings in one project apart, even when the SELECTOR resolved by uuid.
165
+ const twins = db
166
+ .prepare("SELECT uuid FROM TMTask WHERE type = 2 AND trashed = 0 AND project = ? AND title = ? AND uuid != ?")
167
+ .all(src.resolved.uuid, title, h.resolved.uuid);
168
+ if (twins.length > 0) {
169
+ return {
170
+ kind: "refuse",
171
+ refusal: "heading-ambiguous",
172
+ detail: `the heading title "${title}" is shared by ${twins.length + 1} headings in this project — ` +
173
+ "the ellipsis Move… drive addresses headings by title and cannot disambiguate; " +
174
+ "rename one first",
175
+ candidates: [h.resolved.uuid, ...twins.map((t) => t.uuid)],
176
+ };
177
+ }
178
+ const dest = resolveProject(db, toProject);
179
+ if (dest.resolved === null) {
180
+ return {
181
+ kind: "refuse",
182
+ refusal: "no-dest",
183
+ detail: dest.matches > 1
184
+ ? "the destination project title is ambiguous — pass its uuid"
185
+ : "the destination project did not resolve",
186
+ };
187
+ }
188
+ if (dest.resolved.uuid === src.resolved.uuid) {
189
+ return {
190
+ kind: "refuse",
191
+ refusal: "same-project",
192
+ detail: "the destination is the heading's current project — use `project move-heading` to reorder " +
193
+ "a heading WITHIN its project",
194
+ };
195
+ }
196
+ // Destination picker-collision: the picker searches BY TITLE, so a shared dest
197
+ // title would filter to >1 project and Return would pick the wrong one — fail
198
+ // closed even though the destination itself resolved (possibly by uuid).
199
+ const destTitle = dest.resolved.title;
200
+ const destTwins = db
201
+ .prepare("SELECT COUNT(*) AS n FROM TMTask WHERE type = 1 AND trashed = 0 AND title = ? AND uuid != ?")
202
+ .get(destTitle, dest.resolved.uuid);
203
+ if (destTwins.n > 0) {
204
+ return {
205
+ kind: "refuse",
206
+ refusal: "dest-ambiguous",
207
+ detail: `the destination title "${destTitle}" is shared by ${destTwins.n + 1} projects — the ` +
208
+ "Move… picker searches by title and would land the heading in the wrong one; rename or " +
209
+ "merge the duplicates first",
210
+ };
211
+ }
212
+ return {
213
+ kind: "ok",
214
+ pre: {
215
+ sourceProjectUuid: src.resolved.uuid,
216
+ headingUuid: h.resolved.uuid,
217
+ headingTitle: title,
218
+ destProjectUuid: dest.resolved.uuid,
219
+ destProjectTitle: destTitle,
220
+ },
221
+ };
222
+ }
223
+ export function classifyHeadingDissolve(db, target) {
224
+ if (target === null || target.type !== "heading") {
225
+ return { kind: "refuse", refusal: "not-a-heading", detail: "target is not a heading" };
226
+ }
227
+ const project = target.project;
228
+ if (project === null) {
229
+ return {
230
+ kind: "refuse",
231
+ refusal: "no-project",
232
+ detail: "the heading has no owning project — cannot reveal a project view to drive its row",
233
+ };
234
+ }
235
+ const title = target.title;
236
+ if (title === "") {
237
+ return {
238
+ kind: "refuse",
239
+ refusal: "empty-title",
240
+ detail: "the heading has no title — the Delete drive addresses the heading by its title-carrying " +
241
+ '"More. <title>" button, which cannot pick one titleless heading out of several',
242
+ };
243
+ }
244
+ const twins = db
245
+ .prepare("SELECT uuid FROM TMTask WHERE type = 2 AND trashed = 0 AND project = ? AND title = ? AND uuid != ?")
246
+ .all(project.uuid, title, target.uuid);
247
+ if (twins.length > 0) {
248
+ return {
249
+ kind: "refuse",
250
+ refusal: "title-ambiguous",
251
+ detail: `the heading title "${title}" is shared by ${twins.length + 1} headings in this project — ` +
252
+ "the ellipsis Delete drive addresses headings by title and cannot disambiguate; " +
253
+ "rename one first",
254
+ candidates: [target.uuid, ...twins.map((t) => t.uuid)],
255
+ };
256
+ }
257
+ const childUuids = db
258
+ .prepare('SELECT uuid FROM TMTask WHERE type = 0 AND trashed = 0 AND status = 0 AND heading = ? ORDER BY "index"')
259
+ .all(target.uuid).map((r) => r.uuid);
260
+ return {
261
+ kind: "ok",
262
+ pre: { projectReveal: project.uuid, headingUuid: target.uuid, headingTitle: title, childUuids },
27
263
  };
28
264
  }
29
265
  /**
@@ -113,18 +349,36 @@ export function classifyProjectRepeat(db, target) {
113
349
  export function resolveArea(db, ref) {
114
350
  return resolveNamedRef(db, "TMArea", "1=1", [], ref.uuid ?? ref.title ?? "");
115
351
  }
352
+ /**
353
+ * Resolve a project DESTINATION (`--to-project` / `--project` on add/move). NAME
354
+ * resolution is OPEN-only (`status = 0`) — a completed/canceled project is not a
355
+ * valid live destination by name: placing an open child there strands it (PLOG1,
356
+ * "a completed-in-place project strands children identically, one sweep later").
357
+ * A UUID / partial-uuid still reaches a completed project (explicit intent —
358
+ * `nameExtraWhere` narrows the NAME tiers only). When a name matches ONLY non-open
359
+ * projects, the resolution carries a `deadHint` so the destination not-found says
360
+ * the row exists and how to reach it (by uuid), instead of a bare "project not
361
+ * found".
362
+ */
116
363
  export function resolveProject(db, ref) {
117
- return resolveNamedRef(db, "TMTask", "type = 1 AND trashed = 0", [], ref.uuid ?? ref.title ?? "");
364
+ const key = ref.uuid ?? ref.title ?? "";
365
+ const r = resolveNamedRef(db, "TMTask", "type = 1 AND trashed = 0", [], key, {
366
+ nameExtraWhere: "status = 0",
367
+ });
368
+ if (r.resolved === null && r.matches === 0) {
369
+ const completed = resolveNamedRef(db, "TMTask", "type = 1 AND trashed = 0 AND status != 0", [], key, {
370
+ prefixTier: false,
371
+ }).matches;
372
+ if (completed > 0)
373
+ return { ...r, deadHint: deadNameMatchHint({ completed }) };
374
+ }
375
+ return r;
118
376
  }
119
- export function resolveHeading(db, projectUuid, headingTitle) {
120
- const rows = db
121
- .prepare("SELECT uuid, title FROM TMTask WHERE type = 2 AND trashed = 0 AND project = ? AND title = ? COLLATE NOCASE")
122
- .all(projectUuid, headingTitle);
123
- const first = rows[0];
124
- return {
125
- resolved: rows.length === 1 && first !== undefined ? first : null,
126
- matches: rows.length,
127
- };
377
+ export function resolveHeading(db, projectUuid, headingSel) {
378
+ // Shares the one heading-selector core (title | uuid | empty-string literal,
379
+ // no ordinal) with the project heading verbs see resolveHeadingRef.
380
+ const r = resolveHeadingRef(db, projectUuid, headingSel);
381
+ return { resolved: r.resolved, matches: r.matches };
128
382
  }
129
383
  export function projectStatus(db, uuid) {
130
384
  const row = db.prepare("SELECT status FROM TMTask WHERE uuid = ? AND type = 1").get(uuid);
@@ -180,6 +434,22 @@ export function childTagTitles(db, tagUuid) {
180
434
  .all(tagUuid, tagUuid);
181
435
  return rows.map((r) => r.title);
182
436
  }
437
+ /**
438
+ * Live member census for `area.delete` (A25/A25B). Counts the area's non-trashed
439
+ * DIRECT members: to-dos carrying the area FK (any status — a logged to-do is
440
+ * still trashed by the delete) and projects carrying the area FK. Deleting a
441
+ * non-empty area trashes the to-dos and takes the projects with it, so the guard
442
+ * uses these counts to refuse fail-closed unless the caller allows it.
443
+ */
444
+ export function areaMemberCounts(db, areaUuid) {
445
+ const todos = db
446
+ .prepare("SELECT COUNT(*) AS n FROM TMTask WHERE type = 0 AND trashed = 0 AND area = ?")
447
+ .get(areaUuid).n;
448
+ const projects = db
449
+ .prepare("SELECT COUNT(*) AS n FROM TMTask WHERE type = 1 AND trashed = 0 AND area = ?")
450
+ .get(areaUuid).n;
451
+ return { projects, todos };
452
+ }
183
453
  export function trashedCount(db) {
184
454
  const row = db.prepare("SELECT COUNT(*) AS n FROM TMTask WHERE trashed = 1").get();
185
455
  return row.n;
@@ -204,8 +474,6 @@ const NOT_TEMPLATE_ROW = "(rt1_recurrenceRule IS NULL AND repeater IS NULL)";
204
474
  * unprobed and the guard rejects them.
205
475
  * - inbox: unscheduled to-dos with no container (start=0), by "index"
206
476
  * (A6/P8a — the command ranks the sent list in order).
207
- * - headings: the HEADING rows (type=2) of a project, by "index" (scf P1 —
208
- * the private command accepts heading uuids; children follow).
209
477
  * - someday: loose someday to-dos AND area-less someday projects, by
210
478
  * "index"; same-type requests only. The Someday list handler is
211
479
  * anchor-stacked with OPPOSITE stack directions by row type:
@@ -218,7 +486,13 @@ const NOT_TEMPLATE_ROW = "(rt1_recurrenceRule IS NULL AND repeater IS NULL)";
218
486
  export function computeReorderPre(db, params, containerUuid, now) {
219
487
  const todayIso = localToday(now);
220
488
  const packedToday = encodePackedDate(todayIso);
221
- const key = params.scope === "today" || params.scope === "evening" ? "todayIndex" : "index";
489
+ const key = params.scope === "today" ||
490
+ params.scope === "evening" ||
491
+ params.scope === "container-day" ||
492
+ params.scope === "day" ||
493
+ params.scope === "tomorrow"
494
+ ? "todayIndex"
495
+ : "index";
222
496
  const select = (where, binds, rankCol) => db
223
497
  .prepare(`SELECT uuid, title, ${rankCol} AS rank, startBucket, type FROM TMTask
224
498
  WHERE trashed = 0 AND status = 0 AND ${NOT_TEMPLATE_ROW} AND ${where}
@@ -275,10 +549,6 @@ export function computeReorderPre(db, params, containerUuid, now) {
275
549
  members = select("type = 0 AND start = 0", [], `"index"`);
276
550
  break;
277
551
  }
278
- case "headings": {
279
- members = select("type = 2 AND project = ?", [containerUuid ?? ""], `"index"`);
280
- break;
281
- }
282
552
  case "someday": {
283
553
  // Loose someday to-dos AND area-less someday projects (P9e locked the
284
554
  // project protocol) — same-type requests only, like the area scope.
@@ -309,6 +579,122 @@ export function computeReorderPre(db, params, containerUuid, now) {
309
579
  }
310
580
  break;
311
581
  }
582
+ case "heading": {
583
+ // A heading's ANYTIME children, ranked on "index". The forward-order
584
+ // bounce back-inserts each (BOUNCE2-h); templates + scheduled/someday
585
+ // children are not members of this bucket.
586
+ members = select("type = 0 AND heading = ? AND start = 1 AND startDate IS NULL", [containerUuid ?? ""], `"index"`);
587
+ break;
588
+ }
589
+ case "area-someday": {
590
+ // An area's SOMEDAY direct members (unheaded), ranked on "index". The
591
+ // reverse-order bounce front-inserts each (SOMEBNC-area) — the state-
592
+ // preserving surface the destructive area reorder command lacks (§9f).
593
+ members = select("type = 0 AND area = ? AND heading IS NULL AND start = 2 AND startDate IS NULL", [containerUuid ?? ""], `"index"`);
594
+ break;
595
+ }
596
+ case "anytime": {
597
+ // Area-less loose ANYTIME to-dos, ranked on "index". The reverse-order
598
+ // bounce front-inserts each below the running global min (ANYBNC).
599
+ members = select("type = 0 AND project IS NULL AND area IS NULL AND heading IS NULL " +
600
+ "AND start = 1 AND startDate IS NULL", [], `"index"`);
601
+ break;
602
+ }
603
+ case "container-day": {
604
+ // A container's (project OR area) same-day scheduled children, ranked on
605
+ // todayIndex, date-preserving (DAYORD-b). The day is read off the first
606
+ // requested uuid — the planner guarantees every movee shares the bucket
607
+ // (rule 4). startBucket=0 (today-proper / a future day); the evening
608
+ // sub-bucket stays app-default (unprobed for the container specifier).
609
+ const firstUuid = params.uuids[0];
610
+ const first = firstUuid !== undefined
611
+ ? db
612
+ .prepare("SELECT startDate, startBucket FROM TMTask WHERE uuid = ?")
613
+ .get(firstUuid)
614
+ : undefined;
615
+ if (first?.startDate != null && first.startBucket === 0) {
616
+ members = select("type = 0 AND heading IS NULL AND (project = ? OR area = ?) " +
617
+ "AND startBucket = 0 AND startDate = ?", [containerUuid ?? "", containerUuid ?? "", first.startDate], "todayIndex");
618
+ }
619
+ break;
620
+ }
621
+ case "day": {
622
+ // The DATED BOUNCE (SIT4 DAYBNC): a whole ARBITRARY future day-group across
623
+ // ALL containers, ranked on todayIndex. Members are every to-do on the day
624
+ // (loose, project-child, headed-child, area-direct — the when= round-trip
625
+ // preserves each container FK, incl. the heading FK, §2e/R21) PLUS every
626
+ // area-less scheduled PROJECT row on the day (type=1 rows front-insert on the
627
+ // SAME global todayIndex axis, DAYBNC DP-1/DP-2 — the leg is update-project).
628
+ // The whole group is one bounce unit (a reverse-target pass re-bases it below
629
+ // the day's global min), so every same-day member is enumerated — an
630
+ // untouched project row is just an unrequested member (co-bounced + disclosed
631
+ // as `touched`), never a strand. The day is read off the first requested
632
+ // uuid. Templates are excluded by NOT_TEMPLATE_ROW. Members are type IN (0,1):
633
+ // area-DIRECT project rows are now proven dated-bounce members too (SIT5
634
+ // AREAPROJDAY — the update-project when= legs preserve the area FK through the
635
+ // round-trip and re-enter at the day's global todayIndex min).
636
+ const firstUuid = params.uuids[0];
637
+ const first = firstUuid !== undefined
638
+ ? db
639
+ .prepare("SELECT startDate, startBucket FROM TMTask WHERE uuid = ?")
640
+ .get(firstUuid)
641
+ : undefined;
642
+ if (first?.startDate != null && first.startBucket === 0) {
643
+ members = select("type IN (0, 1) AND startBucket = 0 AND startDate = ?", [first.startDate], "todayIndex");
644
+ }
645
+ // A requested TEMPLATE gets the §9e/§1 teaching reason (a dated when= leg
646
+ // CRASHES a template). Area-direct project rows are members (SIT5 AREAPROJDAY).
647
+ for (const uuid of params.uuids) {
648
+ const t = db
649
+ .prepare("SELECT rt1_recurrenceRule AS rule, repeater FROM TMTask WHERE uuid = ?")
650
+ .get(uuid);
651
+ if (t === undefined)
652
+ continue;
653
+ if (t.rule !== null || t.repeater !== null) {
654
+ rejectedCandidates.set(uuid, "is a repeating template — sending it a dated when= leg CRASHES the app (oddity §9e/§1), " +
655
+ "so dated ordering cannot include it");
656
+ }
657
+ }
658
+ break;
659
+ }
660
+ case "tomorrow": {
661
+ // The whole TOMORROW day-group across ALL containers (ORDFIN2 TOMORROWLIST),
662
+ // ranked on todayIndex. `list "Tomorrow"` is a clean one-call native surface
663
+ // that ACCEPTS a scheduled PROJECT row inline (type=1, O12 analog) and re-
664
+ // ranks it in position — so members are type IN (0,1), and a project row is a
665
+ // valid MOVEE here (the ONLY reorder scope that accepts one on the day axis).
666
+ // The day is read off the first requested uuid; the planner guarantees it is
667
+ // tomorrow. Templates excluded by NOT_TEMPLATE_ROW.
668
+ const firstUuid = params.uuids[0];
669
+ const first = firstUuid !== undefined
670
+ ? db
671
+ .prepare("SELECT startDate, startBucket FROM TMTask WHERE uuid = ?")
672
+ .get(firstUuid)
673
+ : undefined;
674
+ if (first?.startDate != null && first.startBucket === 0) {
675
+ members = select("type IN (0, 1) AND startBucket = 0 AND startDate = ?", [first.startDate], "todayIndex");
676
+ }
677
+ // A repeating TEMPLATE gets the §9e teaching reason (the reorder SKIPS
678
+ // template rows) rather than the generic non-member reason.
679
+ for (const uuid of params.uuids) {
680
+ const t = db
681
+ .prepare("SELECT rt1_recurrenceRule AS rule, repeater FROM TMTask WHERE uuid = ?")
682
+ .get(uuid);
683
+ if (t !== undefined && (t.rule !== null || t.repeater !== null)) {
684
+ rejectedCandidates.set(uuid, "is a repeating template — the private reorder SKIPS template rows (oddity §9e), " +
685
+ "so the Tomorrow day-sort cannot include it");
686
+ }
687
+ }
688
+ break;
689
+ }
690
+ case "heading-someday": {
691
+ // A heading's SOMEDAY children, ranked on "index" (HEADSUB1 Arm B-someday /
692
+ // Arm C). Re-heading the block in forward target order BACK-INSERTS each
693
+ // deterministically (start=2 preserved) — the move-to-heading sort. Same
694
+ // bucket shape as the `heading` anytime scope, `start=2` instead of `start=1`.
695
+ members = select("type = 0 AND heading = ? AND start = 2 AND startDate IS NULL", [containerUuid ?? ""], `"index"`);
696
+ break;
697
+ }
312
698
  }
313
699
  const seen = new Set();
314
700
  const duplicates = [];
@@ -369,7 +755,28 @@ function rowStartDate(db, uuid) {
369
755
  const row = db.prepare("SELECT startDate FROM TMTask WHERE uuid = ?").get(uuid);
370
756
  return row?.startDate ?? null;
371
757
  }
372
- export function projectOf(task) {
373
- return task !== null && task.type === "project" ? task : null;
758
+ /**
759
+ * A row's live Today/Evening flag — `"today"`, `"evening"`, or `null` — read
760
+ * from the SAME marker the `today`/`evening` reorder membership uses
761
+ * ({@link computeReorderPre}, O01/O03/§9n): an ARRIVED scheduled row
762
+ * (`start IN (1,2)` AND `startDate <= today`) carries the flag — `evening` at
763
+ * raw `startBucket=1` (a live evening flag expires daily, so a stale past-dated
764
+ * bucket-1 row reads `today` proper), `today` otherwise. Someday, anytime,
765
+ * inbox, and future-scheduled rows carry NO flag. Single-sourced here so any
766
+ * de-Today guard (e.g. the `projects` bounce's de-star refusal in reorder.ts)
767
+ * keys off the one marker and can never drift from the membership query.
768
+ */
769
+ export function todayEveningFlagOf(db, uuid, now) {
770
+ const packedToday = encodePackedDate(localToday(now));
771
+ const row = db
772
+ .prepare("SELECT start, startDate, startBucket FROM TMTask WHERE uuid = ?")
773
+ .get(uuid);
774
+ if (row === undefined)
775
+ return null;
776
+ if (row.start !== 1 && row.start !== 2)
777
+ return null; // inbox (start=0)
778
+ if (row.startDate === null || row.startDate > packedToday)
779
+ return null; // someday / anytime / future
780
+ return row.startBucket === 1 && row.startDate === packedToday ? "evening" : "today";
374
781
  }
375
782
  //# sourceMappingURL=pre-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pre-state.js","sourceRoot":"","sources":["../../src/write/pre-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-state.js","sourceRoot":"","sources":["../../src/write/pre-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * The recurrence-rule SERIALIZER — the write-side inverse of the read-only
3
+ * decoder in {@link ../model/recurrence.ts}. It composes the `rt1_recurrenceRule`
4
+ * XML plist the Things app writes for a repeating template, in the exact shape
5
+ * the decoder round-trips (rrv=4, the `of` offset grammar, the year-4001 "forever"
6
+ * `ed` sentinel).
7
+ *
8
+ * Two consumers share it, and NEITHER writes to a real Things database:
9
+ * - the SIMULATOR write vector (src/write/vectors/simulator.ts), which applies
10
+ * the RSIM-characterized recurrence mutations as SQL against a synthetic
11
+ * fixture DB (docs/lab/rsim-results.md); and
12
+ * - the bench WORLD profile (bench/world.ts), which seeds synthetic templates.
13
+ *
14
+ * Repeat rules remain UI-only on any real surface (writes go through the app's
15
+ * Repeat dialog, never SQLite) — this serializer exists solely so bench/simulated
16
+ * writes can reproduce the app's row shape without a Things install. The
17
+ * low-level {@link ruleXml} takes a numeric {@link RuleSpec}; {@link composeRepeatRuleSpec}
18
+ * maps the consumer-facing {@link RepeatRuleParams} vocabulary onto that spec.
19
+ */
20
+ import { type IsoDate } from "../model/dates.ts";
21
+ import type { RepeatRuleParams } from "./operations.ts";
22
+ /** One entry in a rule's `of` offset array (numeric, decoder-facing encoding). */
23
+ export interface RuleOffsets {
24
+ /** 0-based day of month; -1 = last day. */
25
+ dy?: number;
26
+ /** 0-based month. */
27
+ mo?: number;
28
+ /** Weekday, 0 = Sunday … 6 = Saturday. */
29
+ wd?: number;
30
+ /** Nth weekday within the month (1..5); -1 = last. */
31
+ wdo?: number;
32
+ }
33
+ /** The numeric fields {@link ruleXml} renders into the plist. */
34
+ export interface RuleSpec {
35
+ /** 0 fixed · 1 after-completion. */
36
+ tp: 0 | 1;
37
+ /** 16 daily · 256 weekly · 8 monthly · 4 yearly. */
38
+ fu: 16 | 256 | 8 | 4;
39
+ /** Interval multiplier ("every fa units"). */
40
+ fa: number;
41
+ /** Start offset in days (≤ 0); default 0. */
42
+ ts?: number;
43
+ of?: RuleOffsets[];
44
+ /** Anchor epoch written to both `sr` and `ia` (the decoder ignores these). */
45
+ anchor: number;
46
+ /** End date, unix seconds; default the year-4001 "forever" sentinel. */
47
+ ed?: number;
48
+ /** Remaining repeat count; default 0 (= unlimited). */
49
+ rc?: number;
50
+ }
51
+ /** Distant-future `ed` sentinel (year 4001 — the same class the app writes). */
52
+ export declare const RULE_FOREVER = 64092211200;
53
+ /** Recurrence-unit code for each frequency (mirrors the decoder's UNITS map). */
54
+ export declare const FREQUENCY_TO_FU: Record<RepeatRuleParams["frequency"], 16 | 256 | 8 | 4>;
55
+ /** Compose an `rt1_recurrenceRule` XML plist the read-path decoder accepts. */
56
+ export declare function ruleXml(spec: RuleSpec): string;
57
+ /**
58
+ * Map the extended {@link RepeatRuleParams} vocabulary onto a numeric
59
+ * {@link RuleSpec}. `refIso` is the occurrence date the calendar anchor derives
60
+ * from when no explicit anchor is given; `anchor` seeds the (decoder-ignored)
61
+ * sr/ia epochs. A deadlined rule carries the start-offset in `ts` (ts = −N days
62
+ * earlier); the template's own `deadline` sentinel column — set by the applier,
63
+ * not here — is what actually flags deadline-ness (oddities §8a).
64
+ */
65
+ export declare function composeRepeatRuleSpec(params: RepeatRuleParams, refIso: IsoDate, anchor: number): RuleSpec;