things-api 0.11.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 +16 -5
- package/dist/audit/schema.d.ts +7 -0
- package/dist/audit/schema.js.map +1 -1
- package/dist/cli/commands/area.d.ts +18 -11
- package/dist/cli/commands/area.js +55 -67
- 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 +101 -52
- package/dist/cli/commands/install-skill.js.map +1 -1
- 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 +20 -28
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/reads.js +100 -28
- package/dist/cli/commands/reads.js.map +1 -1
- package/dist/cli/commands/show.js +32 -8
- package/dist/cli/commands/show.js.map +1 -1
- package/dist/cli/commands/todo.js +1 -1
- package/dist/cli/commands/todo.js.map +1 -1
- package/dist/cli/commands/writes.js +769 -143
- 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 +16 -2
- package/dist/cli/glyphs.js +60 -12
- package/dist/cli/glyphs.js.map +1 -1
- package/dist/cli/help.js +67 -12
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +1 -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 +43 -5
- package/dist/cli/read-driver.js +81 -15
- package/dist/cli/read-driver.js.map +1 -1
- package/dist/cli/render.d.ts +19 -8
- package/dist/cli/render.js +59 -25
- 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 +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 +140 -19
- package/dist/client.js +253 -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 +176 -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 +19 -8
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.js +733 -304
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/entities.d.ts +46 -3
- package/dist/model/entities.js.map +1 -1
- package/dist/model/mappers.d.ts +2 -0
- package/dist/model/mappers.js +41 -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/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 +11 -11
- package/dist/read/area-view.js +50 -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 +31 -15
- package/dist/read/project-view.js +72 -39
- 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 +105 -18
- package/dist/read/queries.js +185 -30
- 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/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 -5
- package/dist/read/truncation.js +33 -8
- package/dist/read/truncation.js.map +1 -1
- package/dist/read/views.d.ts +49 -9
- package/dist/read/views.js +193 -40
- 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/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 +266 -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 +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 +70 -3
- package/dist/write/pipeline.js +198 -33
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/pre-state.d.ts +162 -8
- package/dist/write/pre-state.js +385 -20
- package/dist/write/pre-state.js.map +1 -1
- 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/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 +383 -0
- package/skills/things-cli/SKILL.md +34 -17
- package/skills/things-cli/references/banner.md +35 -0
- package/skills/things-cli/references/contracts.md +30 -9
- package/skills/things-cli/references/errors.md +49 -0
- package/skills/things-cli/references/gui.md +1 -1
- package/skills/things-cli/references/model.md +15 -6
- package/skills/things-cli/references/ordering.md +71 -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;
|
|
@@ -228,14 +243,25 @@ const BASE62 = /^[0-9A-Za-z]+$/;
|
|
|
228
243
|
*/
|
|
229
244
|
export function resolveNamedRef(db, table, extraWhere, extraBinds, refRaw, options) {
|
|
230
245
|
const ref = stripThingsUri(refRaw);
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
246
|
+
// Container scope: an extra UNqualified membership clause AND-ed into every
|
|
247
|
+
// tier, so an out-of-scope row is invisible to resolution — the same rows a
|
|
248
|
+
// nonexistent ref matches (none), keeping the not-found path byte-identical.
|
|
249
|
+
const scopeCond = options?.scopeWhere !== undefined ? ` AND ${options.scopeWhere}` : "";
|
|
250
|
+
const scopeBinds = options?.scopeBinds ?? [];
|
|
251
|
+
// The name-tier narrowing (open-only, etc.) — carries no binds, so it never
|
|
252
|
+
// shifts the placeholder order.
|
|
253
|
+
const nameCond = options?.nameExtraWhere !== undefined ? ` AND ${options.nameExtraWhere}` : "";
|
|
254
|
+
const run = (where, cond, extra) => db
|
|
255
|
+
.prepare(`SELECT uuid, title FROM ${table} WHERE ${extraWhere}${where} AND ${cond}${scopeCond}`)
|
|
256
|
+
.all(...extraBinds, ...extra, ...scopeBinds);
|
|
257
|
+
// uuid tiers use the base predicate; name tiers additionally honor nameCond.
|
|
258
|
+
const sel = (cond, extra = []) => run("", cond, extra);
|
|
259
|
+
const selName = (cond, extra = []) => run(nameCond, cond, extra);
|
|
234
260
|
const byId = sel("uuid = ?", [ref]);
|
|
235
261
|
if (byId.length === 1)
|
|
236
262
|
return { resolved: byId[0] ?? null, matches: 1 };
|
|
237
263
|
for (const cond of ["title = ?", "title = ? COLLATE NOCASE"]) {
|
|
238
|
-
const rows =
|
|
264
|
+
const rows = selName(cond, [ref]);
|
|
239
265
|
if (rows.length === 1)
|
|
240
266
|
return { resolved: rows[0] ?? null, matches: 1 };
|
|
241
267
|
if (rows.length > 1)
|
|
@@ -243,7 +269,7 @@ export function resolveNamedRef(db, table, extraWhere, extraBinds, refRaw, optio
|
|
|
243
269
|
}
|
|
244
270
|
const key = normalizeNameKey(ref);
|
|
245
271
|
if (key !== "") {
|
|
246
|
-
const hits =
|
|
272
|
+
const hits = selName("title IS NOT NULL").filter((r) => normalizeNameKey(r.title) === key);
|
|
247
273
|
if (hits.length === 1)
|
|
248
274
|
return { resolved: hits[0] ?? null, matches: 1 };
|
|
249
275
|
if (hits.length > 1)
|
|
@@ -274,12 +300,42 @@ function resolveUuidOrThrow(db, table, extraWhere, ref, kind, listCmd, options)
|
|
|
274
300
|
if (r.matches === 0) {
|
|
275
301
|
throw new ReferenceResolutionError(`no ${kind} matching "${ref}" — ${acceptedForms(options?.prefixTier !== false)} (list ${kind}s with \`${listCmd}\`)`, { code: "not-found", ref });
|
|
276
302
|
}
|
|
277
|
-
|
|
303
|
+
const all = r.candidates ?? [];
|
|
304
|
+
const capped = all.length > CANDIDATE_CAP;
|
|
305
|
+
throw new ReferenceResolutionError(`"${ref}" matches ${r.matches} ${kind}s${capped ? `; first ${CANDIDATE_CAP} shown` : ""} — use the exact name or a uuid`, {
|
|
278
306
|
code: "ambiguous",
|
|
279
307
|
ref,
|
|
280
|
-
candidates: (
|
|
308
|
+
candidates: all.slice(0, CANDIDATE_CAP).map((c) => candidateRef(kind, c)),
|
|
281
309
|
});
|
|
282
310
|
}
|
|
311
|
+
/**
|
|
312
|
+
* The honest tail appended to a not-found message when a NAME resolves to ZERO
|
|
313
|
+
* LIVE entities but one or more DEAD rows (trashed, or swept to the logbook) DO
|
|
314
|
+
* match it. It tells the caller a dead row of that name exists — and where to
|
|
315
|
+
* find it — WITHOUT listing it as a candidate, so no dangling-ref operation is
|
|
316
|
+
* invited against a dead row (candidate pools stay domain-scoped to live rows).
|
|
317
|
+
* Empty when nothing dead matched; a count renders only when it is > 0.
|
|
318
|
+
*/
|
|
319
|
+
// "1 item matches" / "2 items match" — noun plural on >1, verb plural on ==1.
|
|
320
|
+
function deadMatchPhrase(n, where, cmd) {
|
|
321
|
+
return `${n} ${where} item${n === 1 ? "" : "s"} match${n === 1 ? "es" : ""} this name — see \`${cmd}\``;
|
|
322
|
+
}
|
|
323
|
+
export function deadNameMatchHint(counts) {
|
|
324
|
+
const parts = [];
|
|
325
|
+
const t = counts.trashed ?? 0;
|
|
326
|
+
const l = counts.logbook ?? 0;
|
|
327
|
+
const c = counts.completed ?? 0;
|
|
328
|
+
if (t > 0)
|
|
329
|
+
parts.push(deadMatchPhrase(t, "trashed", "things trash"));
|
|
330
|
+
if (l > 0)
|
|
331
|
+
parts.push(deadMatchPhrase(l, "logbook", "things logbook"));
|
|
332
|
+
// A completed/canceled (but not trashed) project is excluded from write-target
|
|
333
|
+
// NAME resolution — placing an open child in it strands the child (PLOG1) — but
|
|
334
|
+
// stays reachable by its uuid (explicit intent), which is the guidance here.
|
|
335
|
+
if (c > 0)
|
|
336
|
+
parts.push(`${c} completed project${c === 1 ? "" : "s"} match${c === 1 ? "es" : ""} this name — target it by uuid if intended`);
|
|
337
|
+
return parts.length === 0 ? "" : ` (${parts.join("; ")})`;
|
|
338
|
+
}
|
|
283
339
|
/**
|
|
284
340
|
* Resolve a PROJECT write target from a uuid, partial-uuid, or unique name.
|
|
285
341
|
* Project write verbs (`things project update <ref>`, etc.) accept names
|
|
@@ -291,14 +347,27 @@ function resolveUuidOrThrow(db, table, extraWhere, ref, kind, listCmd, options)
|
|
|
291
347
|
* targeted "that is a to-do, not a project" message rather than a misleading
|
|
292
348
|
* not-found. Otherwise the ref resolves as a project NAME through the SAME
|
|
293
349
|
* tiered {@link resolveNamedRef} matching the read side uses (shared core, not
|
|
294
|
-
* a fork)
|
|
295
|
-
*
|
|
296
|
-
*
|
|
350
|
+
* a fork).
|
|
351
|
+
*
|
|
352
|
+
* The NAME pool is LIVE + OPEN-scoped by default (`trashed = 0 AND status = 0`)
|
|
353
|
+
* — a trashed OR completed/canceled project never resolves-by-name or appears as
|
|
354
|
+
* an ambiguity candidate for an ordinary write verb. A completed project is
|
|
355
|
+
* excluded deliberately (broader than "logged", which needs the log-boundary
|
|
356
|
+
* clock this pure resolver lacks): placing an open child in it strands the child
|
|
357
|
+
* one sweep later (PLOG1). A name that matches ONLY non-open/trashed rows fails
|
|
358
|
+
* not-found with an honest hint (`things trash` / target-by-uuid) rather than a
|
|
359
|
+
* dead candidate. A UUID / partial-uuid resolves FIRST (via
|
|
360
|
+
* {@link resolveTaskUuidPrefix}, status-blind), so explicit-uuid intent still
|
|
361
|
+
* reaches a completed/logged project. `includeNonOpen` (the `project.reopen`
|
|
362
|
+
* verb — its whole point is a non-open target) widens the name pool to
|
|
363
|
+
* completed/canceled rows; `includeTrashed` (the trash-domain `project.restore`
|
|
364
|
+
* op) widens it to trashed rows so a restore-by-name can disambiguate them.
|
|
365
|
+
* Fail-closed with a candidate listing on an ambiguous name.
|
|
297
366
|
*/
|
|
298
|
-
export function resolveProjectWriteTarget(db, refRaw) {
|
|
367
|
+
export function resolveProjectWriteTarget(db, refRaw, scope, includeTrashed = false, includeNonOpen = false) {
|
|
299
368
|
const ref = stripThingsUri(refRaw);
|
|
300
369
|
try {
|
|
301
|
-
return resolveTaskUuidPrefix(db, ref, "project");
|
|
370
|
+
return resolveTaskUuidPrefix(db, ref, "project", scope?.task);
|
|
302
371
|
}
|
|
303
372
|
catch (err) {
|
|
304
373
|
// An ambiguous uuid-prefix is a real conflict — surface it verbatim. A
|
|
@@ -306,24 +375,45 @@ export function resolveProjectWriteTarget(db, refRaw) {
|
|
|
306
375
|
if (err instanceof RangeError && err.message.includes("ambiguous"))
|
|
307
376
|
throw err;
|
|
308
377
|
}
|
|
309
|
-
const
|
|
378
|
+
const liveWhere = includeTrashed
|
|
379
|
+
? "type = 1"
|
|
380
|
+
: includeNonOpen
|
|
381
|
+
? "type = 1 AND trashed = 0"
|
|
382
|
+
: "type = 1 AND trashed = 0 AND status = 0";
|
|
383
|
+
const r = resolveNamedRef(db, "TMTask", liveWhere, [], ref, {
|
|
384
|
+
prefixTier: false,
|
|
385
|
+
...(scope !== undefined && { scopeWhere: scope.named.where, scopeBinds: scope.named.binds }),
|
|
386
|
+
});
|
|
310
387
|
if (r.resolved !== null)
|
|
311
388
|
return r.resolved.uuid;
|
|
312
389
|
if (r.matches === 0) {
|
|
313
|
-
|
|
390
|
+
// Zero live+open matches: if the name matches only trashed OR completed rows,
|
|
391
|
+
// say so (honest hint) instead of dangling a dead candidate. Skipped when the
|
|
392
|
+
// pool already includes those rows — a miss there is a genuine miss.
|
|
393
|
+
const dead = includeTrashed || includeNonOpen
|
|
394
|
+
? {}
|
|
395
|
+
: {
|
|
396
|
+
trashed: resolveNamedRef(db, "TMTask", "type = 1 AND trashed = 1", [], ref, {
|
|
397
|
+
prefixTier: false,
|
|
398
|
+
}).matches,
|
|
399
|
+
completed: resolveNamedRef(db, "TMTask", "type = 1 AND trashed = 0 AND status != 0", [], ref, { prefixTier: false }).matches,
|
|
400
|
+
};
|
|
401
|
+
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
402
|
}
|
|
315
|
-
const
|
|
316
|
-
const
|
|
317
|
-
|
|
403
|
+
const all = describeProjectCandidates(db, r.candidates ?? []);
|
|
404
|
+
const shown = all.slice(0, CANDIDATE_CAP);
|
|
405
|
+
const lines = shown
|
|
406
|
+
.map((c) => ` ${c.uuid.slice(0, 8)} — ${c.title}${c.area !== undefined ? ` (in ${c.area})` : ""}`)
|
|
318
407
|
.join("\n");
|
|
319
|
-
|
|
408
|
+
const more = all.length > CANDIDATE_CAP ? `\n … ${all.length - CANDIDATE_CAP} more` : "";
|
|
409
|
+
throw new ReferenceResolutionError(`"${ref}" matches ${r.matches} projects — disambiguate with a uuid or partial-uuid:\n${lines}${more}`, { code: "ambiguous", ref, candidates: shown });
|
|
320
410
|
}
|
|
321
|
-
/**
|
|
411
|
+
/** Fixed-shape candidates for an ambiguous project name, each with its area container hint. */
|
|
322
412
|
function describeProjectCandidates(db, candidates) {
|
|
323
413
|
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
414
|
return candidates.map((c) => {
|
|
325
415
|
const area = areaStmt.get(c.uuid)?.title ?? null;
|
|
326
|
-
return { uuid: c.uuid, title: c.title,
|
|
416
|
+
return candidateRef("project", { uuid: c.uuid, title: c.title, area });
|
|
327
417
|
});
|
|
328
418
|
}
|
|
329
419
|
export function resolveTagUuid(db, ref) {
|
|
@@ -340,6 +430,47 @@ export function resolveProjectUuid(db, ref, options) {
|
|
|
340
430
|
export function resolveAreaUuid(db, ref, options) {
|
|
341
431
|
return resolveUuidOrThrow(db, "TMArea", "1=1", ref, "area", "things areas", options);
|
|
342
432
|
}
|
|
433
|
+
/**
|
|
434
|
+
* Resolve a HEADING SELECTOR (spec §2) inside one project through the SAME
|
|
435
|
+
* tiered core every other ref uses: exact title, or uuid (partial-uuid too).
|
|
436
|
+
* There is deliberately NO index/ordinal form — the "reindex hazard" makes an
|
|
437
|
+
* ordinal silently re-target a different heading after any reorder. An
|
|
438
|
+
* empty-string selector is a legal literal query (the app creates titleless
|
|
439
|
+
* headings); duplicates (or several titleless headings) are a resolution
|
|
440
|
+
* PRECONDITION, not an invariant, so ambiguity fails closed with uuid-bearing
|
|
441
|
+
* candidates (the H-DUPLICATE-TAG precedent). Shared by `todo add/move
|
|
442
|
+
* --heading` (via {@link resolveHeadingRef} → the H-AMBIGUOUS-HEADING guard)
|
|
443
|
+
* and by every project heading verb (via the thrower below).
|
|
444
|
+
*/
|
|
445
|
+
export function resolveHeadingRef(db, projectUuid, refRaw) {
|
|
446
|
+
return resolveNamedRef(db, "TMTask", "type = 2 AND trashed = 0 AND project = ?", [projectUuid], refRaw);
|
|
447
|
+
}
|
|
448
|
+
/** Render a heading selector for an error (the empty title reads as a phrase). */
|
|
449
|
+
function headingSelLabel(ref) {
|
|
450
|
+
return ref === "" ? "the empty-title heading" : `"${ref}"`;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Resolve a heading selector to its uuid+title within a project, throwing a
|
|
454
|
+
* {@link ReferenceResolutionError} (with uuid candidates on ambiguity) the
|
|
455
|
+
* consumer surfaces render as a usage error. The project-scoped heading verbs
|
|
456
|
+
* and the MCP heading tool resolve through this.
|
|
457
|
+
*/
|
|
458
|
+
export function resolveHeadingUuid(db, projectUuid, refRaw) {
|
|
459
|
+
const r = resolveHeadingRef(db, projectUuid, refRaw);
|
|
460
|
+
if (r.resolved !== null)
|
|
461
|
+
return r.resolved;
|
|
462
|
+
const label = headingSelLabel(refRaw);
|
|
463
|
+
if (r.matches === 0) {
|
|
464
|
+
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 });
|
|
465
|
+
}
|
|
466
|
+
const all = r.candidates ?? [];
|
|
467
|
+
const capped = all.length > CANDIDATE_CAP;
|
|
468
|
+
throw new ReferenceResolutionError(`${label} matches ${r.matches} headings in this project${capped ? `; first ${CANDIDATE_CAP} shown` : ""} — disambiguate with a uuid`, {
|
|
469
|
+
code: "ambiguous",
|
|
470
|
+
ref: refRaw,
|
|
471
|
+
candidates: all.slice(0, CANDIDATE_CAP).map((c) => candidateRef("heading", c)),
|
|
472
|
+
});
|
|
473
|
+
}
|
|
343
474
|
/**
|
|
344
475
|
* A row's EFFECTIVE area: its own `area` link, else the area of its project,
|
|
345
476
|
* else the area of its heading's project. To-dos nested in a project (or under a
|
|
@@ -369,6 +500,30 @@ export function fetchTaskByUuid(db, uuid) {
|
|
|
369
500
|
const rows = fetchTaskRows(db, "t.uuid = ?", [uuid]);
|
|
370
501
|
return rows[0] ?? null;
|
|
371
502
|
}
|
|
503
|
+
/**
|
|
504
|
+
* The uuid of a repeating template's LATEST spawned instance, or null when the
|
|
505
|
+
* template has none. The GUI-verified "Show Latest" law (SL1,
|
|
506
|
+
* docs/lab/sl1-show-latest.md, 2026-07-29): the pick is `max(creationDate)`
|
|
507
|
+
* among the template's instances — the most recently spawned occurrence — and
|
|
508
|
+
* NOTHING else. It is INDEPENDENT of `startDate`, `userModificationDate`,
|
|
509
|
+
* `stopDate`, and completion `status`: a completed newest-spawned instance is
|
|
510
|
+
* still the latest (the SL1 D1 case). No status filter; spans both to-do and
|
|
511
|
+
* project instances (`rt1_repeatingTemplate` points at the template regardless
|
|
512
|
+
* of type). `creationDate` is the occurrence midnight and unique per occurrence
|
|
513
|
+
* for a normal series, so ties are not expected.
|
|
514
|
+
*
|
|
515
|
+
* TRASHED instances are EXCLUDED (SL2, docs/lab/sl2-trash-dynamics.md, law L1):
|
|
516
|
+
* the GUI Show Latest never selects a trashed instance — it skips to the newest
|
|
517
|
+
* UNTRASHED one, and re-resolves live after an empty-trash. Only `trashed` is
|
|
518
|
+
* filtered; `status` is NOT (a COMPLETED newest-spawned instance is still the
|
|
519
|
+
* latest — SL1 D1). A template with no untrashed instances derives `null`.
|
|
520
|
+
*/
|
|
521
|
+
export function latestInstanceUuid(db, templateUuid) {
|
|
522
|
+
const row = db
|
|
523
|
+
.prepare("SELECT uuid FROM TMTask WHERE rt1_repeatingTemplate = ? AND trashed = 0 ORDER BY creationDate DESC LIMIT 1")
|
|
524
|
+
.get(templateUuid);
|
|
525
|
+
return row?.uuid ?? null;
|
|
526
|
+
}
|
|
372
527
|
export function fetchChecklistRows(db, taskUuid) {
|
|
373
528
|
const sql = `SELECT ${selectList("TMChecklistItem")} FROM TMChecklistItem WHERE task = ? ORDER BY ${q("index")} ASC`;
|
|
374
529
|
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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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Container-scoped sandbox — the ONE membership relation, shared by reads,
|
|
3
|
+
* writes, and reference resolution. Generalizes the `--area` post-filter
|
|
4
|
+
* (`area-filter.ts`) from "one area" to "one container" (an area OR a project),
|
|
5
|
+
* and adds the leak-critical SQL fragments the single-row / candidate paths and
|
|
6
|
+
* the write ancestry check share so an out-of-scope item is indistinguishable
|
|
7
|
+
* from a nonexistent one (the no-oracle guarantee — see
|
|
8
|
+
* docs/design/container-scope.md).
|
|
9
|
+
*
|
|
10
|
+
* A scope is resolved ONCE at `openThings()` and pinned for the client's life
|
|
11
|
+
* (never re-resolved per call — a deleted container becomes a safe empty jail,
|
|
12
|
+
* a recreated same-named one never silently re-binds). Every read reaches the
|
|
13
|
+
* consumer through `client.read.*` and every write through `runMutation`, so the
|
|
14
|
+
* two forms below (the entity predicate `inScopeItem` and the SQL fragments) are
|
|
15
|
+
* the only two places the relation is expressed.
|
|
16
|
+
*/
|
|
17
|
+
import type { DatabaseSync } from "node:sqlite";
|
|
18
|
+
import type { AnyTask } from "../model/entities.ts";
|
|
19
|
+
import { ReferenceResolutionError } from "./queries.ts";
|
|
20
|
+
import type { ListItem, SidebarSection, TodayView } from "./views.ts";
|
|
21
|
+
import type { IsoDate } from "../model/dates.ts";
|
|
22
|
+
/** Where a scope declaration came from — surfaced as `meta.scope.source`. */
|
|
23
|
+
export type ScopeSource = "flag" | "env" | "config";
|
|
24
|
+
/**
|
|
25
|
+
* A resolved container scope: pinned at open, carried on the client. `kind`
|
|
26
|
+
* distinguishes an area jail from a project jail; `uuid`/`title` name the
|
|
27
|
+
* container; `areaUuid` is the containing area (the scope area itself for an
|
|
28
|
+
* area scope; the project's own area — or null for an area-less project — for a
|
|
29
|
+
* project scope), used to scope the `areas` view and area-ref resolution.
|
|
30
|
+
*/
|
|
31
|
+
export interface ResolvedScope {
|
|
32
|
+
kind: "area" | "project";
|
|
33
|
+
uuid: string;
|
|
34
|
+
title: string;
|
|
35
|
+
source: ScopeSource;
|
|
36
|
+
/** The relevant area context (area scope: itself; project scope: the project's area, null if area-less). */
|
|
37
|
+
areaUuid: string | null;
|
|
38
|
+
}
|
|
39
|
+
/** The `meta.scope` wire shape (a subset of {@link ResolvedScope}). */
|
|
40
|
+
export interface ScopeMeta {
|
|
41
|
+
kind: "area" | "project";
|
|
42
|
+
uuid: string;
|
|
43
|
+
title: string;
|
|
44
|
+
source: ScopeSource;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Fail-closed if a requested scope is unresolvable — `things mcp --scope <bogus>`
|
|
48
|
+
* refuses to start, a CLI invocation errors as usage — so the daemon never runs
|
|
49
|
+
* unscoped when a scope was asked for. A subclass of {@link ReferenceResolutionError}
|
|
50
|
+
* so existing usage-class handlers treat it uniformly.
|
|
51
|
+
*/
|
|
52
|
+
export declare class ScopeResolutionError extends ReferenceResolutionError {
|
|
53
|
+
constructor(message: string, ref: string);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve a scope ref (uuid, uuid-prefix, or unique area/project name) to a
|
|
57
|
+
* pinned {@link ResolvedScope}. Areas win over same-named projects (mirroring
|
|
58
|
+
* `classifyShowTarget`). A to-do / heading / tag ref is a usage error — only an
|
|
59
|
+
* area or a project can be a container. Fail-closed: an unresolvable ref throws
|
|
60
|
+
* {@link ScopeResolutionError}.
|
|
61
|
+
*/
|
|
62
|
+
export declare function resolveScope(db: DatabaseSync, ref: string, source: ScopeSource): ResolvedScope;
|
|
63
|
+
/** The `meta.scope` projection of a resolved scope (drops the internal `areaUuid`). */
|
|
64
|
+
export declare function scopeMeta(scope: ResolvedScope): ScopeMeta;
|
|
65
|
+
/**
|
|
66
|
+
* The entity-level membership predicate — the SAME relation as
|
|
67
|
+
* {@link scopeMembershipSql}, for an already-shaped view row. Area scope: the
|
|
68
|
+
* row's EFFECTIVE area is the scope (its `area` Ref, which queries.ts already
|
|
69
|
+
* resolves transitively). Project scope: the row IS the project, is a direct
|
|
70
|
+
* child, or is nested under one of the project's headings.
|
|
71
|
+
*/
|
|
72
|
+
export declare function inScopeItem(item: ListItem | AnyTask, scope: ResolvedScope): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* The SQL fragment on alias `t` — the single membership source the leak-critical
|
|
75
|
+
* query paths AND the write ancestry check share. Area: the effective-area
|
|
76
|
+
* COALESCE equals the scope. Project: the row is the project, its direct child,
|
|
77
|
+
* or a heading-nested child.
|
|
78
|
+
*/
|
|
79
|
+
export declare function scopeMembershipSql(scope: ResolvedScope): {
|
|
80
|
+
where: string;
|
|
81
|
+
binds: string[];
|
|
82
|
+
};
|
|
83
|
+
/** True when the given uuid is an in-scope TMTask row (single-row leak paths, write parity). */
|
|
84
|
+
export declare function isUuidInScope(db: DatabaseSync, uuid: string, scope: ResolvedScope): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* The membership clause for {@link resolveTaskUuidPrefix} (alias `t`): the same
|
|
87
|
+
* fragment as {@link scopeMembershipSql}, so an out-of-scope uuid resolves to
|
|
88
|
+
* "not found" through the identical code path a nonexistent one does.
|
|
89
|
+
*/
|
|
90
|
+
export declare function taskMembershipClause(scope: ResolvedScope): {
|
|
91
|
+
where: string;
|
|
92
|
+
binds: string[];
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* The membership clause for {@link resolveNamedRef} over TMTask projects
|
|
96
|
+
* (UNqualified columns — that resolver aliases nothing). A project carries its
|
|
97
|
+
* area directly (no inheritance), so area scope compares `area`; project scope
|
|
98
|
+
* pins the one project uuid.
|
|
99
|
+
*/
|
|
100
|
+
export declare function namedProjectClause(scope: ResolvedScope): {
|
|
101
|
+
where: string;
|
|
102
|
+
binds: string[];
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* The membership clause for {@link resolveNamedRef} over TMArea (UNqualified).
|
|
106
|
+
* Area scope: the one scope area. Project scope: the project's own area (an
|
|
107
|
+
* area-less project has none, so nothing resolves — `0`).
|
|
108
|
+
*/
|
|
109
|
+
export declare function namedAreaClause(scope: ResolvedScope): {
|
|
110
|
+
where: string;
|
|
111
|
+
binds: string[];
|
|
112
|
+
};
|
|
113
|
+
/** Filter a flat view (upcoming/logbook/trash/search/changes) to in-scope rows. */
|
|
114
|
+
export declare function filterListByScope<T extends ListItem>(items: T[], scope: ResolvedScope): T[];
|
|
115
|
+
/**
|
|
116
|
+
* Filter the grouped sidebar catalogue (anytime/someday) to in-scope rows: each
|
|
117
|
+
* section's items are filtered and empty sections drop, so the per-block caps
|
|
118
|
+
* size the survivors.
|
|
119
|
+
*/
|
|
120
|
+
export declare function filterSectionsByScope(sections: SidebarSection[], scope: ResolvedScope): SidebarSection[];
|
|
121
|
+
/**
|
|
122
|
+
* Filter the Today split to in-scope rows, RECOMPUTING the badge over the
|
|
123
|
+
* surviving OPEN members so it never counts a dropped (out-of-scope) row — the
|
|
124
|
+
* same treatment `filterTodayByArea` gives the area filter.
|
|
125
|
+
*/
|
|
126
|
+
export declare function filterTodayByScope(view: TodayView, scope: ResolvedScope, todayIso: IsoDate): TodayView;
|