things-api 0.11.0 → 0.13.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 +16 -5
- package/dist/audit/schema.d.ts +7 -0
- package/dist/audit/schema.js.map +1 -1
- package/dist/cli/canonical-ref.d.ts +21 -0
- package/dist/cli/canonical-ref.js +23 -0
- package/dist/cli/canonical-ref.js.map +1 -0
- package/dist/cli/commands/area.d.ts +18 -11
- package/dist/cli/commands/area.js +81 -77
- 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 +19 -4
- package/dist/cli/commands/install-skill.js +130 -52
- package/dist/cli/commands/install-skill.js.map +1 -1
- package/dist/cli/commands/mcp.js +21 -1
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/project.d.ts +1 -0
- package/dist/cli/commands/project.js +92 -48
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/reads.d.ts +5 -1
- package/dist/cli/commands/reads.js +110 -31
- package/dist/cli/commands/reads.js.map +1 -1
- package/dist/cli/commands/setup.js +11 -4
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/show.js +75 -36
- package/dist/cli/commands/show.js.map +1 -1
- package/dist/cli/commands/todo.js +2 -2
- package/dist/cli/commands/todo.js.map +1 -1
- package/dist/cli/commands/writes.js +795 -144
- 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 +44 -7
- package/dist/cli/did-you-mean.js.map +1 -1
- package/dist/cli/dry-run.d.ts +55 -0
- package/dist/cli/dry-run.js +92 -0
- package/dist/cli/dry-run.js.map +1 -0
- package/dist/cli/glyphs.d.ts +16 -2
- package/dist/cli/glyphs.js +60 -12
- package/dist/cli/glyphs.js.map +1 -1
- package/dist/cli/help.js +69 -13
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +8 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/move-hint.d.ts +3 -2
- package/dist/cli/move-hint.js +2 -2
- package/dist/cli/move-hint.js.map +1 -1
- package/dist/cli/read-driver.d.ts +53 -5
- package/dist/cli/read-driver.js +82 -15
- package/dist/cli/read-driver.js.map +1 -1
- package/dist/cli/ref-render.d.ts +14 -0
- package/dist/cli/ref-render.js +9 -0
- package/dist/cli/ref-render.js.map +1 -0
- package/dist/cli/render.d.ts +40 -14
- package/dist/cli/render.js +128 -55
- package/dist/cli/render.js.map +1 -1
- package/dist/cli/resolve-invocation.d.ts +7 -5
- package/dist/cli/resolve-invocation.js +16 -7
- package/dist/cli/resolve-invocation.js.map +1 -1
- package/dist/cli/skill-check.d.ts +12 -6
- package/dist/cli/skill-check.js +31 -14
- package/dist/cli/skill-check.js.map +1 -1
- package/dist/cli/skill.d.ts +8 -0
- package/dist/cli/skill.js +10 -0
- package/dist/cli/skill.js.map +1 -1
- package/dist/cli/verb-hint.js +1 -1
- package/dist/cli/verb-hint.js.map +1 -1
- package/dist/client.d.ts +158 -26
- package/dist/client.js +254 -38
- 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 +187 -28
- package/dist/contracts.js +22 -1
- package/dist/contracts.js.map +1 -1
- package/dist/db/baselines/db-v26.js +4 -1
- package/dist/db/baselines/db-v26.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 +21 -8
- package/dist/index.js +26 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.js +790 -322
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/entities.d.ts +57 -4
- package/dist/model/entities.js.map +1 -1
- package/dist/model/mappers.d.ts +2 -0
- package/dist/model/mappers.js +44 -2
- 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/model/serialize.js +15 -3
- package/dist/model/serialize.js.map +1 -1
- package/dist/read/area-filter.d.ts +76 -0
- package/dist/read/area-filter.js +58 -0
- package/dist/read/area-filter.js.map +1 -0
- package/dist/read/area-view.d.ts +22 -11
- package/dist/read/area-view.js +54 -28
- package/dist/read/area-view.js.map +1 -1
- package/dist/read/detail.js +15 -8
- package/dist/read/detail.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 +91 -15
- package/dist/read/project-view.js +135 -37
- 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 +175 -19
- package/dist/read/queries.js +376 -32
- package/dist/read/queries.js.map +1 -1
- package/dist/read/scope.d.ts +126 -0
- package/dist/read/scope.js +161 -0
- package/dist/read/scope.js.map +1 -0
- package/dist/read/search-rank.d.ts +2 -5
- package/dist/read/shape.d.ts +181 -0
- package/dist/read/shape.js +737 -0
- package/dist/read/shape.js.map +1 -0
- package/dist/read/show-target.d.ts +9 -1
- package/dist/read/show-target.js +77 -17
- package/dist/read/show-target.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 +7 -12
- package/dist/read/truncation.js +56 -21
- package/dist/read/truncation.js.map +1 -1
- package/dist/read/views.d.ts +68 -16
- package/dist/read/views.js +206 -52
- package/dist/read/views.js.map +1 -1
- package/dist/surface-copy.d.ts +16 -0
- package/dist/surface-copy.js +16 -0
- package/dist/surface-copy.js.map +1 -1
- package/dist/write/batch.d.ts +49 -10
- package/dist/write/batch.js +423 -71
- package/dist/write/batch.js.map +1 -1
- package/dist/write/commands.js +268 -55
- package/dist/write/commands.js.map +1 -1
- package/dist/write/guards.d.ts +1 -1
- package/dist/write/guards.js +71 -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 +134 -0
- package/dist/write/move.js +1874 -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 +70 -3
- package/dist/write/pipeline.js +198 -33
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/pre-state.d.ts +172 -8
- package/dist/write/pre-state.js +467 -25
- package/dist/write/pre-state.js.map +1 -1
- package/dist/write/reorder.d.ts +23 -3
- package/dist/write/reorder.js +2106 -86
- 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/shortcuts.js +1 -1
- package/dist/write/vectors/shortcuts.js.map +1 -1
- package/dist/write/vectors/simulator.js +83 -27
- package/dist/write/vectors/simulator.js.map +1 -1
- package/dist/write/vectors/types.d.ts +11 -0
- package/dist/write/vectors/ui-certification.d.ts +3 -3
- package/dist/write/vectors/ui-certification.js +41 -5
- 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 +21 -1
- package/dist/write/vectors/ui-recipes.js +166 -7
- package/dist/write/vectors/ui-recipes.js.map +1 -1
- package/dist/write/vectors/ui.d.ts +25 -1
- package/dist/write/vectors/ui.js +142 -33
- package/dist/write/vectors/ui.js.map +1 -1
- package/dist/write/verify/delta.d.ts +17 -1
- package/dist/write/verify/delta.js +106 -29
- package/dist/write/verify/delta.js.map +1 -1
- package/package.json +7 -1
- package/schema/envelope.schema.json +397 -0
- package/skills/things-cli/SKILL.md +36 -17
- package/skills/things-cli/references/banner.md +35 -0
- package/skills/things-cli/references/contracts.md +32 -9
- package/skills/things-cli/references/errors.md +57 -0
- package/skills/things-cli/references/gui.md +1 -1
- package/skills/things-cli/references/model.md +18 -7
- package/skills/things-cli/references/ordering.md +88 -0
package/dist/read/queries.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { q, selectList } from "../db/schema.js";
|
|
2
|
+
import { TASK_TYPE_FROM_DB } from "../model/entities.js";
|
|
3
|
+
import { candidateRef, CANDIDATE_CAP, } from "./shape.js";
|
|
2
4
|
/** Rows that repeat via a template are normal; template rows are invisible in list views. */
|
|
3
5
|
export const NOT_TEMPLATE = "(t.rt1_recurrenceRule IS NULL AND t.repeater IS NULL)";
|
|
4
6
|
/** ` AND col IN (…)` for the restricted form; empty for the tag-agnostic form. */
|
|
@@ -161,13 +163,15 @@ export function noUuidMatch(entity, ref) {
|
|
|
161
163
|
* entity. Extends RangeError so every existing `instanceof RangeError` handler
|
|
162
164
|
* keeps treating it as a usage-class failure — but the surfaces that know about
|
|
163
165
|
* it (CLI --json envelope, MCP tool result) additionally lift the structured
|
|
164
|
-
* `candidates` onto `error.
|
|
166
|
+
* `candidates` onto `error.detail.candidates` so an agent can self-correct
|
|
165
167
|
* without re-parsing the prose message. `code` mirrors the envelope error code.
|
|
166
168
|
*
|
|
167
169
|
* PUBLIC API — exported from src/index.ts. This is the one error the consumer
|
|
168
170
|
* surfaces catch to render structured disambiguation; its `code`
|
|
169
|
-
* ("not-found" | "ambiguous") and `candidates` ({@link
|
|
170
|
-
*
|
|
171
|
+
* ("not-found" | "ambiguous") and `candidates` ({@link CandidateRef}[], the ONE
|
|
172
|
+
* fixed candidate shape) are the documented machine shape
|
|
173
|
+
* (docs/design/architecture.md, Consumer boundary). The list is capped at
|
|
174
|
+
* {@link CANDIDATE_CAP}; on overflow the `message` states the total.
|
|
171
175
|
*/
|
|
172
176
|
export class ReferenceResolutionError extends RangeError {
|
|
173
177
|
code;
|
|
@@ -181,27 +185,38 @@ export class ReferenceResolutionError extends RangeError {
|
|
|
181
185
|
this.candidates = opts.candidates ?? [];
|
|
182
186
|
}
|
|
183
187
|
}
|
|
184
|
-
export function resolveTaskUuidPrefix(db, refRaw, entity = "to-do") {
|
|
188
|
+
export function resolveTaskUuidPrefix(db, refRaw, entity = "to-do", scope) {
|
|
185
189
|
const ref = stripThingsUri(refRaw);
|
|
186
|
-
const
|
|
190
|
+
const scopeCond = scope !== undefined ? ` AND ${scope.where}` : "";
|
|
191
|
+
const scopeBinds = scope?.binds ?? [];
|
|
192
|
+
const exact = db
|
|
193
|
+
.prepare(`SELECT t.uuid FROM TMTask t WHERE t.uuid = ?${scopeCond}`)
|
|
194
|
+
.get(ref, ...scopeBinds);
|
|
187
195
|
if (exact !== undefined)
|
|
188
196
|
return exact.uuid;
|
|
189
197
|
if (ref.length < 6) {
|
|
190
198
|
throw new RangeError(`${noUuidMatch(entity, ref)} (a partial-uuid needs at least 6 characters)`);
|
|
191
199
|
}
|
|
192
200
|
const upper = ref.slice(0, -1) + String.fromCharCode(ref.charCodeAt(ref.length - 1) + 1);
|
|
201
|
+
// No LIMIT: a >=6-char shared prefix makes the uuid range inherently tiny, so
|
|
202
|
+
// the full match set is cheap to fetch and its length is the exact total.
|
|
193
203
|
const rows = db
|
|
194
|
-
.prepare(
|
|
195
|
-
.all(ref, upper);
|
|
204
|
+
.prepare(`SELECT t.uuid, t.title, t.type FROM TMTask t WHERE t.uuid >= ? AND t.uuid < ?${scopeCond}`)
|
|
205
|
+
.all(ref, upper, ...scopeBinds);
|
|
196
206
|
if (rows.length === 0) {
|
|
197
207
|
throw new ReferenceResolutionError(noUuidMatch(entity, ref), { code: "not-found", ref });
|
|
198
208
|
}
|
|
199
209
|
if (rows.length > 1) {
|
|
200
|
-
const
|
|
201
|
-
|
|
210
|
+
const shown = rows.slice(0, CANDIDATE_CAP);
|
|
211
|
+
const list = shown.map((r) => `${r.uuid} (${r.title ?? ""})`).join("; ");
|
|
212
|
+
const more = rows.length > CANDIDATE_CAP ? `; … ${rows.length - CANDIDATE_CAP} more` : "";
|
|
213
|
+
throw new ReferenceResolutionError(`partial-uuid "${ref}" is ambiguous — ${rows.length} matches: ${list}${more} — use a full uuid`, {
|
|
202
214
|
code: "ambiguous",
|
|
203
215
|
ref,
|
|
204
|
-
candidates:
|
|
216
|
+
candidates: shown.map((r) => candidateRef(TASK_TYPE_FROM_DB[r.type] ?? "to-do", {
|
|
217
|
+
uuid: r.uuid,
|
|
218
|
+
title: r.title ?? "",
|
|
219
|
+
})),
|
|
205
220
|
});
|
|
206
221
|
}
|
|
207
222
|
return rows[0]?.uuid ?? ref;
|
|
@@ -219,6 +234,27 @@ export function normalizeNameKey(s) {
|
|
|
219
234
|
.replace(/[\s‐-―−-]+/gu, "");
|
|
220
235
|
}
|
|
221
236
|
const BASE62 = /^[0-9A-Za-z]+$/;
|
|
237
|
+
/**
|
|
238
|
+
* The DECORATED-REF form `Title [ref]` — a bare title with the machine-stable
|
|
239
|
+
* uuid/partial-uuid pinned in trailing brackets (the fused form every TTY
|
|
240
|
+
* candidate renders, `Title [8charPrefix]`). The title half is a COMMENT
|
|
241
|
+
* (ignored), so a stale copy still resolves after a rename; the bracket is the
|
|
242
|
+
* ref, resolved through the uuid/partial-uuid tier. Greedy `.*` so the LAST
|
|
243
|
+
* bracket wins (`"Family [Sub] [TC9yozLk]"` → `TC9yozLk`). The empty-title form
|
|
244
|
+
* `" [J2kPq9Ws]"` (a titleless heading) is legal — `(.*)` matches empty. Because
|
|
245
|
+
* `$`-anchored so the LAST bracket always wins. The space before `[` is OPTIONAL
|
|
246
|
+
* because {@link stripThingsUri} trims the ref first, so the empty-title form
|
|
247
|
+
* `" [J2kPq9Ws]"` (a titleless heading) arrives as the bare `[J2kPq9Ws]` — both
|
|
248
|
+
* resolve. The bracket is 4–22 base62 chars; a segment shorter than the 6-char
|
|
249
|
+
* partial-uuid floor simply fails to resolve (the FORM is recognized, the
|
|
250
|
+
* resolution is the real uuid/partial-uuid tier's).
|
|
251
|
+
*/
|
|
252
|
+
const DECORATED_REF = /^(.*?) ?\[([0-9A-Za-z]{4,22})\]$/;
|
|
253
|
+
/** The fused TTY ref form `Title [8charPrefix]` — the round-trippable decorated ref every candidate renders. */
|
|
254
|
+
export const REF_PREFIX_LEN = 8;
|
|
255
|
+
export function fusedRef(title, uuid) {
|
|
256
|
+
return `${title} [${uuid.slice(0, REF_PREFIX_LEN)}]`;
|
|
257
|
+
}
|
|
222
258
|
/**
|
|
223
259
|
* Tiered reference resolution (docs/design/reference-resolution.md): exact
|
|
224
260
|
* uuid → exact title → case-insensitive title → normalized title → uuid
|
|
@@ -228,14 +264,25 @@ const BASE62 = /^[0-9A-Za-z]+$/;
|
|
|
228
264
|
*/
|
|
229
265
|
export function resolveNamedRef(db, table, extraWhere, extraBinds, refRaw, options) {
|
|
230
266
|
const ref = stripThingsUri(refRaw);
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
267
|
+
// Container scope: an extra UNqualified membership clause AND-ed into every
|
|
268
|
+
// tier, so an out-of-scope row is invisible to resolution — the same rows a
|
|
269
|
+
// nonexistent ref matches (none), keeping the not-found path byte-identical.
|
|
270
|
+
const scopeCond = options?.scopeWhere !== undefined ? ` AND ${options.scopeWhere}` : "";
|
|
271
|
+
const scopeBinds = options?.scopeBinds ?? [];
|
|
272
|
+
// The name-tier narrowing (open-only, etc.) — carries no binds, so it never
|
|
273
|
+
// shifts the placeholder order.
|
|
274
|
+
const nameCond = options?.nameExtraWhere !== undefined ? ` AND ${options.nameExtraWhere}` : "";
|
|
275
|
+
const run = (where, cond, extra) => db
|
|
276
|
+
.prepare(`SELECT uuid, title FROM ${table} WHERE ${extraWhere}${where} AND ${cond}${scopeCond}`)
|
|
277
|
+
.all(...extraBinds, ...extra, ...scopeBinds);
|
|
278
|
+
// uuid tiers use the base predicate; name tiers additionally honor nameCond.
|
|
279
|
+
const sel = (cond, extra = []) => run("", cond, extra);
|
|
280
|
+
const selName = (cond, extra = []) => run(nameCond, cond, extra);
|
|
234
281
|
const byId = sel("uuid = ?", [ref]);
|
|
235
282
|
if (byId.length === 1)
|
|
236
283
|
return { resolved: byId[0] ?? null, matches: 1 };
|
|
237
284
|
for (const cond of ["title = ?", "title = ? COLLATE NOCASE"]) {
|
|
238
|
-
const rows =
|
|
285
|
+
const rows = selName(cond, [ref]);
|
|
239
286
|
if (rows.length === 1)
|
|
240
287
|
return { resolved: rows[0] ?? null, matches: 1 };
|
|
241
288
|
if (rows.length > 1)
|
|
@@ -243,7 +290,7 @@ export function resolveNamedRef(db, table, extraWhere, extraBinds, refRaw, optio
|
|
|
243
290
|
}
|
|
244
291
|
const key = normalizeNameKey(ref);
|
|
245
292
|
if (key !== "") {
|
|
246
|
-
const hits =
|
|
293
|
+
const hits = selName("title IS NOT NULL").filter((r) => normalizeNameKey(r.title) === key);
|
|
247
294
|
if (hits.length === 1)
|
|
248
295
|
return { resolved: hits[0] ?? null, matches: 1 };
|
|
249
296
|
if (hits.length > 1)
|
|
@@ -261,12 +308,42 @@ export function resolveNamedRef(db, table, extraWhere, extraBinds, refRaw, optio
|
|
|
261
308
|
if (rows.length > 1)
|
|
262
309
|
return { resolved: null, matches: rows.length, candidates: rows };
|
|
263
310
|
}
|
|
311
|
+
// The DECORATED-REF tier — LAST, after exact/case/normalized title and the
|
|
312
|
+
// uuid/partial-uuid tiers all miss. `Title [ref]`: the title is ignored and the
|
|
313
|
+
// bracketed segment resolves through the uuid/partial-uuid tier (uuid-exact,
|
|
314
|
+
// then a >=6-char partial-uuid prefix). Runs regardless of `prefixTier` — the
|
|
315
|
+
// bracket is EXPLICIT ref intent (a rendered fused ref), like a bare uuid. A
|
|
316
|
+
// literal title `Title [ref]` outranks this by construction (exact-title is an
|
|
317
|
+
// earlier tier). Scope/extraWhere apply (uuid-tier `sel`, not the name tiers).
|
|
318
|
+
const decorated = DECORATED_REF.exec(ref);
|
|
319
|
+
if (decorated !== null) {
|
|
320
|
+
const inner = decorated[2] ?? "";
|
|
321
|
+
const exactRows = sel("uuid = ?", [inner]);
|
|
322
|
+
if (exactRows.length === 1)
|
|
323
|
+
return { resolved: exactRows[0] ?? null, matches: 1 };
|
|
324
|
+
if (inner.length >= 6) {
|
|
325
|
+
const upper = inner.slice(0, -1) + String.fromCharCode(inner.charCodeAt(inner.length - 1) + 1);
|
|
326
|
+
const rows = sel("uuid >= ? AND uuid < ?", [inner, upper]);
|
|
327
|
+
if (rows.length === 1)
|
|
328
|
+
return { resolved: rows[0] ?? null, matches: 1 };
|
|
329
|
+
if (rows.length > 1)
|
|
330
|
+
return { resolved: null, matches: rows.length, candidates: rows };
|
|
331
|
+
}
|
|
332
|
+
}
|
|
264
333
|
return { resolved: null, matches: 0 };
|
|
265
334
|
}
|
|
266
335
|
/** The accepted-forms clause for a name-accepting resolver's not-found copy. */
|
|
267
336
|
function acceptedForms(prefixTier) {
|
|
268
337
|
return prefixTier ? "tried uuid, partial-uuid, and name" : "tried uuid and name";
|
|
269
338
|
}
|
|
339
|
+
/**
|
|
340
|
+
* The single-kind ambiguous-name refusal copy shared by the read resolvers
|
|
341
|
+
* (`"X" matches N projects — use the exact name or a uuid`). `kind` is the
|
|
342
|
+
* singular noun; the plural `s` is appended here so the count agrees.
|
|
343
|
+
*/
|
|
344
|
+
function ambiguousNameMessage(ref, count, kind, capped) {
|
|
345
|
+
return `"${ref}" matches ${count} ${kind}s${capped ? `; first ${CANDIDATE_CAP} shown` : ""} — use the exact name or a uuid`;
|
|
346
|
+
}
|
|
270
347
|
function resolveUuidOrThrow(db, table, extraWhere, ref, kind, listCmd, options) {
|
|
271
348
|
const r = resolveNamedRef(db, table, extraWhere, [], ref, options);
|
|
272
349
|
if (r.resolved !== null)
|
|
@@ -274,12 +351,41 @@ function resolveUuidOrThrow(db, table, extraWhere, ref, kind, listCmd, options)
|
|
|
274
351
|
if (r.matches === 0) {
|
|
275
352
|
throw new ReferenceResolutionError(`no ${kind} matching "${ref}" — ${acceptedForms(options?.prefixTier !== false)} (list ${kind}s with \`${listCmd}\`)`, { code: "not-found", ref });
|
|
276
353
|
}
|
|
277
|
-
|
|
354
|
+
const all = r.candidates ?? [];
|
|
355
|
+
throw new ReferenceResolutionError(ambiguousNameMessage(ref, r.matches, kind, all.length > CANDIDATE_CAP), {
|
|
278
356
|
code: "ambiguous",
|
|
279
357
|
ref,
|
|
280
|
-
candidates: (
|
|
358
|
+
candidates: all.slice(0, CANDIDATE_CAP).map((c) => candidateRef(kind, c)),
|
|
281
359
|
});
|
|
282
360
|
}
|
|
361
|
+
/**
|
|
362
|
+
* The honest tail appended to a not-found message when a NAME resolves to ZERO
|
|
363
|
+
* LIVE entities but one or more DEAD rows (trashed, or swept to the logbook) DO
|
|
364
|
+
* match it. It tells the caller a dead row of that name exists — and where to
|
|
365
|
+
* find it — WITHOUT listing it as a candidate, so no dangling-ref operation is
|
|
366
|
+
* invited against a dead row (candidate pools stay domain-scoped to live rows).
|
|
367
|
+
* Empty when nothing dead matched; a count renders only when it is > 0.
|
|
368
|
+
*/
|
|
369
|
+
// "1 item matches" / "2 items match" — noun plural on >1, verb plural on ==1.
|
|
370
|
+
function deadMatchPhrase(n, where, cmd) {
|
|
371
|
+
return `${n} ${where} item${n === 1 ? "" : "s"} match${n === 1 ? "es" : ""} this name — see \`${cmd}\``;
|
|
372
|
+
}
|
|
373
|
+
export function deadNameMatchHint(counts) {
|
|
374
|
+
const parts = [];
|
|
375
|
+
const t = counts.trashed ?? 0;
|
|
376
|
+
const l = counts.logbook ?? 0;
|
|
377
|
+
const c = counts.completed ?? 0;
|
|
378
|
+
if (t > 0)
|
|
379
|
+
parts.push(deadMatchPhrase(t, "trashed", "things trash"));
|
|
380
|
+
if (l > 0)
|
|
381
|
+
parts.push(deadMatchPhrase(l, "logbook", "things logbook"));
|
|
382
|
+
// A completed/canceled (but not trashed) project is excluded from write-target
|
|
383
|
+
// NAME resolution — placing an open child in it strands the child (PLOG1) — but
|
|
384
|
+
// stays reachable by its uuid (explicit intent), which is the guidance here.
|
|
385
|
+
if (c > 0)
|
|
386
|
+
parts.push(`${c} completed project${c === 1 ? "" : "s"} match${c === 1 ? "es" : ""} this name — target it by uuid if intended`);
|
|
387
|
+
return parts.length === 0 ? "" : ` (${parts.join("; ")})`;
|
|
388
|
+
}
|
|
283
389
|
/**
|
|
284
390
|
* Resolve a PROJECT write target from a uuid, partial-uuid, or unique name.
|
|
285
391
|
* Project write verbs (`things project update <ref>`, etc.) accept names
|
|
@@ -291,14 +397,27 @@ function resolveUuidOrThrow(db, table, extraWhere, ref, kind, listCmd, options)
|
|
|
291
397
|
* targeted "that is a to-do, not a project" message rather than a misleading
|
|
292
398
|
* not-found. Otherwise the ref resolves as a project NAME through the SAME
|
|
293
399
|
* tiered {@link resolveNamedRef} matching the read side uses (shared core, not
|
|
294
|
-
* a fork)
|
|
295
|
-
*
|
|
296
|
-
*
|
|
400
|
+
* a fork).
|
|
401
|
+
*
|
|
402
|
+
* The NAME pool is LIVE + OPEN-scoped by default (`trashed = 0 AND status = 0`)
|
|
403
|
+
* — a trashed OR completed/canceled project never resolves-by-name or appears as
|
|
404
|
+
* an ambiguity candidate for an ordinary write verb. A completed project is
|
|
405
|
+
* excluded deliberately (broader than "logged", which needs the log-boundary
|
|
406
|
+
* clock this pure resolver lacks): placing an open child in it strands the child
|
|
407
|
+
* one sweep later (PLOG1). A name that matches ONLY non-open/trashed rows fails
|
|
408
|
+
* not-found with an honest hint (`things trash` / target-by-uuid) rather than a
|
|
409
|
+
* dead candidate. A UUID / partial-uuid resolves FIRST (via
|
|
410
|
+
* {@link resolveTaskUuidPrefix}, status-blind), so explicit-uuid intent still
|
|
411
|
+
* reaches a completed/logged project. `includeNonOpen` (the `project.reopen`
|
|
412
|
+
* verb — its whole point is a non-open target) widens the name pool to
|
|
413
|
+
* completed/canceled rows; `includeTrashed` (the trash-domain `project.restore`
|
|
414
|
+
* op) widens it to trashed rows so a restore-by-name can disambiguate them.
|
|
415
|
+
* Fail-closed with a candidate listing on an ambiguous name.
|
|
297
416
|
*/
|
|
298
|
-
export function resolveProjectWriteTarget(db, refRaw) {
|
|
417
|
+
export function resolveProjectWriteTarget(db, refRaw, scope, includeTrashed = false, includeNonOpen = false) {
|
|
299
418
|
const ref = stripThingsUri(refRaw);
|
|
300
419
|
try {
|
|
301
|
-
return resolveTaskUuidPrefix(db, ref, "project");
|
|
420
|
+
return resolveTaskUuidPrefix(db, ref, "project", scope?.task);
|
|
302
421
|
}
|
|
303
422
|
catch (err) {
|
|
304
423
|
// An ambiguous uuid-prefix is a real conflict — surface it verbatim. A
|
|
@@ -306,40 +425,241 @@ export function resolveProjectWriteTarget(db, refRaw) {
|
|
|
306
425
|
if (err instanceof RangeError && err.message.includes("ambiguous"))
|
|
307
426
|
throw err;
|
|
308
427
|
}
|
|
309
|
-
const
|
|
428
|
+
const liveWhere = includeTrashed
|
|
429
|
+
? "type = 1"
|
|
430
|
+
: includeNonOpen
|
|
431
|
+
? "type = 1 AND trashed = 0"
|
|
432
|
+
: "type = 1 AND trashed = 0 AND status = 0";
|
|
433
|
+
const r = resolveNamedRef(db, "TMTask", liveWhere, [], ref, {
|
|
434
|
+
prefixTier: false,
|
|
435
|
+
...(scope !== undefined && { scopeWhere: scope.named.where, scopeBinds: scope.named.binds }),
|
|
436
|
+
});
|
|
310
437
|
if (r.resolved !== null)
|
|
311
438
|
return r.resolved.uuid;
|
|
312
439
|
if (r.matches === 0) {
|
|
313
|
-
|
|
440
|
+
// Zero live+open matches: if the name matches only trashed OR completed rows,
|
|
441
|
+
// say so (honest hint) instead of dangling a dead candidate. Skipped when the
|
|
442
|
+
// pool already includes those rows — a miss there is a genuine miss.
|
|
443
|
+
const dead = includeTrashed || includeNonOpen
|
|
444
|
+
? {}
|
|
445
|
+
: {
|
|
446
|
+
trashed: resolveNamedRef(db, "TMTask", "type = 1 AND trashed = 1", [], ref, {
|
|
447
|
+
prefixTier: false,
|
|
448
|
+
}).matches,
|
|
449
|
+
completed: resolveNamedRef(db, "TMTask", "type = 1 AND trashed = 0 AND status != 0", [], ref, { prefixTier: false }).matches,
|
|
450
|
+
};
|
|
451
|
+
throw new ReferenceResolutionError(`no project matching "${ref}" — tried uuid, partial-uuid, and name (list projects with \`things projects\`)${deadNameMatchHint(dead)}`, { code: "not-found", ref });
|
|
314
452
|
}
|
|
315
|
-
const
|
|
316
|
-
const
|
|
317
|
-
|
|
453
|
+
const all = describeProjectCandidates(db, r.candidates ?? []);
|
|
454
|
+
const shown = all.slice(0, CANDIDATE_CAP);
|
|
455
|
+
// The fused ref form `Title [8charPrefix]` — the bracketed prefix pastes back
|
|
456
|
+
// as a decorated ref that resolves straight to this project.
|
|
457
|
+
const lines = shown
|
|
458
|
+
.map((c) => ` ${fusedRef(c.title, c.uuid)}${c.area !== undefined ? ` (in ${c.area})` : ""}`)
|
|
318
459
|
.join("\n");
|
|
319
|
-
|
|
460
|
+
const more = all.length > CANDIDATE_CAP ? `\n … ${all.length - CANDIDATE_CAP} more` : "";
|
|
461
|
+
throw new ReferenceResolutionError(`"${ref}" matches ${r.matches} projects — disambiguate with a ref below:\n${lines}${more}`, { code: "ambiguous", ref, candidates: shown });
|
|
320
462
|
}
|
|
321
|
-
/**
|
|
463
|
+
/** Fixed-shape candidates for an ambiguous project name, each with its area container hint. */
|
|
322
464
|
function describeProjectCandidates(db, candidates) {
|
|
323
465
|
const areaStmt = db.prepare("SELECT a.title AS title FROM TMTask p LEFT JOIN TMArea a ON a.uuid = p.area WHERE p.uuid = ?");
|
|
324
466
|
return candidates.map((c) => {
|
|
325
467
|
const area = areaStmt.get(c.uuid)?.title ?? null;
|
|
326
|
-
return { uuid: c.uuid, title: c.title,
|
|
468
|
+
return candidateRef("project", { uuid: c.uuid, title: c.title, area });
|
|
327
469
|
});
|
|
328
470
|
}
|
|
329
471
|
export function resolveTagUuid(db, ref) {
|
|
330
472
|
return resolveUuidOrThrow(db, "TMTag", "1=1", ref, "tag", "things tags");
|
|
331
473
|
}
|
|
474
|
+
/** Count (and, when unique, resolve) a NAME against the TRASHED project pool only. */
|
|
475
|
+
function trashedProjectNameMatches(db, ref, options) {
|
|
476
|
+
return resolveNamedRef(db, "TMTask", "type = 1 AND trashed = 1", [], ref, {
|
|
477
|
+
prefixTier: false,
|
|
478
|
+
...(options?.scopeWhere !== undefined && {
|
|
479
|
+
scopeWhere: options.scopeWhere,
|
|
480
|
+
scopeBinds: options.scopeBinds,
|
|
481
|
+
}),
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
export function readProjectNameVerdict(db, ref, options) {
|
|
485
|
+
// uuid/partial-uuid tiers span every project (`type = 1`); name tiers narrow
|
|
486
|
+
// to LIVE rows via `nameExtraWhere` — the same split the write side uses.
|
|
487
|
+
const live = resolveNamedRef(db, "TMTask", "type = 1", [], ref, {
|
|
488
|
+
...options,
|
|
489
|
+
nameExtraWhere: "trashed = 0",
|
|
490
|
+
});
|
|
491
|
+
if (live.resolved !== null)
|
|
492
|
+
return {
|
|
493
|
+
resolved: live.resolved,
|
|
494
|
+
liveRows: [live.resolved],
|
|
495
|
+
liveMatches: 1,
|
|
496
|
+
trashedMatches: 0,
|
|
497
|
+
};
|
|
498
|
+
if (live.matches > 1)
|
|
499
|
+
return {
|
|
500
|
+
resolved: null,
|
|
501
|
+
liveRows: live.candidates ?? [],
|
|
502
|
+
liveMatches: live.matches,
|
|
503
|
+
// Disclose extra trashed twins WITHOUT folding them into the count.
|
|
504
|
+
trashedMatches: trashedProjectNameMatches(db, ref, options).matches,
|
|
505
|
+
};
|
|
506
|
+
// Zero live name/uuid matches: the trashed pool decides the ergonomic fallback.
|
|
507
|
+
const dead = trashedProjectNameMatches(db, ref, options);
|
|
508
|
+
if (dead.resolved !== null)
|
|
509
|
+
return { resolved: dead.resolved, liveRows: [], liveMatches: 0, trashedMatches: dead.matches };
|
|
510
|
+
return { resolved: null, liveRows: [], liveMatches: 0, trashedMatches: dead.matches };
|
|
511
|
+
}
|
|
332
512
|
/**
|
|
333
513
|
* Write destinations stay strict (a trashed project is not a valid target);
|
|
334
514
|
* READ surfaces pass `trashed: true` so a project in the Trash can still be
|
|
335
|
-
* viewed
|
|
515
|
+
* viewed. Under `trashed: true` the read-side liveness law applies: an explicit
|
|
516
|
+
* uuid / partial-uuid reaches any project, but a NAME resolves against LIVE rows
|
|
517
|
+
* only (a dead same-name twin never shadows a live one), with the reads-only
|
|
518
|
+
* unique-dead fallback + trash disclosure ({@link readProjectNameVerdict}).
|
|
336
519
|
*/
|
|
337
520
|
export function resolveProjectUuid(db, ref, options) {
|
|
338
|
-
|
|
521
|
+
if (options?.trashed !== true) {
|
|
522
|
+
// The non-widening read pool: name AND uuid tiers are LIVE-only (a trashed
|
|
523
|
+
// project is invisible even by uuid here) — the filter/scope/write-target
|
|
524
|
+
// callers, unchanged.
|
|
525
|
+
return resolveUuidOrThrow(db, "TMTask", "type = 1 AND trashed = 0", ref, "project", "things projects", options);
|
|
526
|
+
}
|
|
527
|
+
const v = readProjectNameVerdict(db, ref, options);
|
|
528
|
+
if (v.resolved !== null)
|
|
529
|
+
return v.resolved.uuid;
|
|
530
|
+
if (v.liveMatches > 1) {
|
|
531
|
+
const shown = v.liveRows.slice(0, CANDIDATE_CAP);
|
|
532
|
+
throw new ReferenceResolutionError(ambiguousNameMessage(ref, v.liveMatches, "project", v.liveRows.length > CANDIDATE_CAP) +
|
|
533
|
+
trashDisclosureTail(v.trashedMatches), { code: "ambiguous", ref, candidates: shown.map((c) => candidateRef("project", c)) });
|
|
534
|
+
}
|
|
535
|
+
// Zero live matches (a unique dead row would have resolved above), so a
|
|
536
|
+
// non-empty trash count here is always the several-dead-twins case.
|
|
537
|
+
throw new ReferenceResolutionError(`no project matching "${ref}" — ${acceptedForms(options.prefixTier !== false)} (list projects with \`things projects\`)${deadNameMatchHint({ trashed: v.trashedMatches })}`, { code: "not-found", ref });
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* The disclosure tail appended to a read-side project ambiguity when the
|
|
541
|
+
* uuid-reachable pool holds additional TRASHED twins of the ambiguous name. The
|
|
542
|
+
* ambiguity COUNT stays over live rows (coherent with the rendered candidate
|
|
543
|
+
* list); the dead ones are disclosed separately rather than inflating it. Empty
|
|
544
|
+
* when none are trashed.
|
|
545
|
+
*/
|
|
546
|
+
export function trashDisclosureTail(deadCount) {
|
|
547
|
+
return deadCount === 0
|
|
548
|
+
? ""
|
|
549
|
+
: `; also matched: ${deadCount} in the trash — \`things trash\` lists them, a uuid reaches one directly`;
|
|
339
550
|
}
|
|
340
551
|
export function resolveAreaUuid(db, ref, options) {
|
|
341
552
|
return resolveUuidOrThrow(db, "TMArea", "1=1", ref, "area", "things areas", options);
|
|
342
553
|
}
|
|
554
|
+
/**
|
|
555
|
+
* Resolve a HEADING SELECTOR (spec §2) inside one project through the SAME
|
|
556
|
+
* tiered core every other ref uses: exact title, or uuid (partial-uuid too).
|
|
557
|
+
* There is deliberately NO index/ordinal form — the "reindex hazard" makes an
|
|
558
|
+
* ordinal silently re-target a different heading after any reorder. An
|
|
559
|
+
* empty-string selector is a legal literal query (the app creates titleless
|
|
560
|
+
* headings); duplicates (or several titleless headings) are a resolution
|
|
561
|
+
* PRECONDITION, not an invariant, so ambiguity fails closed with uuid-bearing
|
|
562
|
+
* candidates (the H-DUPLICATE-TAG precedent). Shared by `todo add/move
|
|
563
|
+
* --heading` (via {@link resolveHeadingRef} → the H-AMBIGUOUS-HEADING guard)
|
|
564
|
+
* and by every project heading verb (via the thrower below).
|
|
565
|
+
*/
|
|
566
|
+
export function resolveHeadingRef(db, projectUuid, refRaw) {
|
|
567
|
+
return resolveNamedRef(db, "TMTask", "type = 2 AND trashed = 0 AND project = ?", [projectUuid], refRaw);
|
|
568
|
+
}
|
|
569
|
+
/** Render a heading selector for an error (the empty title reads as a phrase). */
|
|
570
|
+
function headingSelLabel(ref) {
|
|
571
|
+
return ref === "" ? "the empty-title heading" : `"${ref}"`;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Resolve a heading selector to its uuid+title within a project, throwing a
|
|
575
|
+
* {@link ReferenceResolutionError} (with uuid candidates on ambiguity) the
|
|
576
|
+
* consumer surfaces render as a usage error. The project-scoped heading verbs
|
|
577
|
+
* and the MCP heading tool resolve through this.
|
|
578
|
+
*/
|
|
579
|
+
export function resolveHeadingUuid(db, projectUuid, refRaw) {
|
|
580
|
+
const r = resolveHeadingRef(db, projectUuid, refRaw);
|
|
581
|
+
if (r.resolved !== null)
|
|
582
|
+
return r.resolved;
|
|
583
|
+
const label = headingSelLabel(refRaw);
|
|
584
|
+
if (r.matches === 0) {
|
|
585
|
+
throw new ReferenceResolutionError(`no heading matching ${label} in this project — a heading selector is an exact title or a uuid (list them with \`things project-view <project>\`)`, { code: "not-found", ref: refRaw });
|
|
586
|
+
}
|
|
587
|
+
const all = r.candidates ?? [];
|
|
588
|
+
const shown = all.slice(0, CANDIDATE_CAP);
|
|
589
|
+
// The fused ref form `Title [8charPrefix]` per candidate — a titleless heading
|
|
590
|
+
// reads ` [prefix]`, which pastes back as its decorated ref.
|
|
591
|
+
const lines = shown.map((c) => ` ${fusedRef(c.title, c.uuid)}`).join("\n");
|
|
592
|
+
const more = all.length > CANDIDATE_CAP ? `\n … ${all.length - CANDIDATE_CAP} more` : "";
|
|
593
|
+
throw new ReferenceResolutionError(`${label} matches ${r.matches} headings in this project — disambiguate with a ref below:\n${lines}${more}`, {
|
|
594
|
+
code: "ambiguous",
|
|
595
|
+
ref: refRaw,
|
|
596
|
+
candidates: shown.map((c) => candidateRef("heading", c)),
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Resolve a container ref's bare TITLE through the REAL resolver for its kind,
|
|
601
|
+
* returning the sole resolved uuid or null (not-found OR ambiguous → null). This
|
|
602
|
+
* is the emit-side promotion judgment behind the JSON round-trip law (the flat
|
|
603
|
+
* `area`/`project`/`heading` refs promote a `*Uuid` sibling exactly when their
|
|
604
|
+
* bare title would NOT round-trip): it is the RESOLVER'S OWN judgment, not a
|
|
605
|
+
* re-derived uniqueness query, so it inherits every quirk of the write path —
|
|
606
|
+
* notably projects resolve through {@link resolveProjectWriteTarget} (the
|
|
607
|
+
* uuid-prefix tier runs FIRST, over the live+open write-target pool, so a title
|
|
608
|
+
* that is a valid unique uuid-prefix of ANOTHER task resolves to that task, not
|
|
609
|
+
* this project → does not round-trip → promotes; logged/trashed/completed
|
|
610
|
+
* same-titled twins never resolve by name, so they never trigger promotion).
|
|
611
|
+
* Areas resolve over all areas ({@link resolveAreaUuid}); headings within their
|
|
612
|
+
* project ({@link resolveHeadingRef}, `type = 2 AND trashed = 0 AND project = ?`).
|
|
613
|
+
* A thrown {@link ReferenceResolutionError} (not-found / ambiguous) is caught and
|
|
614
|
+
* read as "did not resolve" → null.
|
|
615
|
+
*/
|
|
616
|
+
function resolveTitleForRoundTrip(db, kind, title, projectUuid) {
|
|
617
|
+
try {
|
|
618
|
+
if (kind === "area")
|
|
619
|
+
return resolveAreaUuid(db, title);
|
|
620
|
+
if (kind === "project")
|
|
621
|
+
return resolveProjectWriteTarget(db, title);
|
|
622
|
+
if (projectUuid === undefined)
|
|
623
|
+
return null; // heading round-trip needs its project scope
|
|
624
|
+
return resolveHeadingRef(db, projectUuid, title).resolved?.uuid ?? null;
|
|
625
|
+
}
|
|
626
|
+
catch {
|
|
627
|
+
return null;
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
/**
|
|
631
|
+
* Does a container ref's bare TITLE round-trip through its own resolver, in its
|
|
632
|
+
* own scope, back to THIS entity's uuid? The single predicate the emit boundary
|
|
633
|
+
* consults for the JSON round-trip law — true only when the sole resolution is
|
|
634
|
+
* `entityUuid` (not-found / ambiguous / a different entity all → false, i.e. the
|
|
635
|
+
* title must promote its uuid sibling). See {@link resolveTitleForRoundTrip}.
|
|
636
|
+
*/
|
|
637
|
+
export function titleRoundTrips(db, kind, title, entityUuid, projectUuid) {
|
|
638
|
+
return resolveTitleForRoundTrip(db, kind, title, projectUuid) === entityUuid;
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Build the {@link RefPromoter} the read-shaping transform ({@link shapeReadPayload})
|
|
642
|
+
* consults to decide flat-ref uuid promotion, memoized per (kind, title, scope)
|
|
643
|
+
* for ONE response emission so a large view never re-runs a resolution it has
|
|
644
|
+
* already made. A fresh promoter (fresh memo) per response — the consumer
|
|
645
|
+
* surfaces build one via the client. The memo caches the RESOLVED uuid (or null),
|
|
646
|
+
* independent of the comparison target, so twin entities sharing a title share
|
|
647
|
+
* the one resolution.
|
|
648
|
+
*/
|
|
649
|
+
export function makeRefPromoter(db) {
|
|
650
|
+
const memo = new Map();
|
|
651
|
+
const resolve = (kind, title, projectUuid) => {
|
|
652
|
+
const key = `${kind}\x00${projectUuid ?? ""}\x00${title}`;
|
|
653
|
+
if (memo.has(key))
|
|
654
|
+
return memo.get(key) ?? null;
|
|
655
|
+
const uuid = resolveTitleForRoundTrip(db, kind, title, projectUuid);
|
|
656
|
+
memo.set(key, uuid);
|
|
657
|
+
return uuid;
|
|
658
|
+
};
|
|
659
|
+
return {
|
|
660
|
+
roundTrips: (kind, title, entityUuid, projectUuid) => resolve(kind, title, projectUuid) === entityUuid,
|
|
661
|
+
};
|
|
662
|
+
}
|
|
343
663
|
/**
|
|
344
664
|
* A row's EFFECTIVE area: its own `area` link, else the area of its project,
|
|
345
665
|
* else the area of its heading's project. To-dos nested in a project (or under a
|
|
@@ -369,6 +689,30 @@ export function fetchTaskByUuid(db, uuid) {
|
|
|
369
689
|
const rows = fetchTaskRows(db, "t.uuid = ?", [uuid]);
|
|
370
690
|
return rows[0] ?? null;
|
|
371
691
|
}
|
|
692
|
+
/**
|
|
693
|
+
* The uuid of a repeating template's LATEST spawned instance, or null when the
|
|
694
|
+
* template has none. The GUI-verified "Show Latest" law (SL1,
|
|
695
|
+
* docs/lab/sl1-show-latest.md, 2026-07-29): the pick is `max(creationDate)`
|
|
696
|
+
* among the template's instances — the most recently spawned occurrence — and
|
|
697
|
+
* NOTHING else. It is INDEPENDENT of `startDate`, `userModificationDate`,
|
|
698
|
+
* `stopDate`, and completion `status`: a completed newest-spawned instance is
|
|
699
|
+
* still the latest (the SL1 D1 case). No status filter; spans both to-do and
|
|
700
|
+
* project instances (`rt1_repeatingTemplate` points at the template regardless
|
|
701
|
+
* of type). `creationDate` is the occurrence midnight and unique per occurrence
|
|
702
|
+
* for a normal series, so ties are not expected.
|
|
703
|
+
*
|
|
704
|
+
* TRASHED instances are EXCLUDED (SL2, docs/lab/sl2-trash-dynamics.md, law L1):
|
|
705
|
+
* the GUI Show Latest never selects a trashed instance — it skips to the newest
|
|
706
|
+
* UNTRASHED one, and re-resolves live after an empty-trash. Only `trashed` is
|
|
707
|
+
* filtered; `status` is NOT (a COMPLETED newest-spawned instance is still the
|
|
708
|
+
* latest — SL1 D1). A template with no untrashed instances derives `null`.
|
|
709
|
+
*/
|
|
710
|
+
export function latestInstanceUuid(db, templateUuid) {
|
|
711
|
+
const row = db
|
|
712
|
+
.prepare("SELECT uuid FROM TMTask WHERE rt1_repeatingTemplate = ? AND trashed = 0 ORDER BY creationDate DESC LIMIT 1")
|
|
713
|
+
.get(templateUuid);
|
|
714
|
+
return row?.uuid ?? null;
|
|
715
|
+
}
|
|
372
716
|
export function fetchChecklistRows(db, taskUuid) {
|
|
373
717
|
const sql = `SELECT ${selectList("TMChecklistItem")} FROM TMChecklistItem WHERE task = ? ORDER BY ${q("index")} ASC`;
|
|
374
718
|
return db.prepare(sql).all(taskUuid);
|
package/dist/read/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/read/queries.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/read/queries.ts"],"names":[],"mappings":"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"}
|