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/client.js
CHANGED
|
@@ -8,26 +8,32 @@ import { compareToBaseline, observeSchema, toSchemaStatus, } from "./db/fingerpr
|
|
|
8
8
|
import { locateThingsDb } from "./db/locate.js";
|
|
9
9
|
import { auditDir, mutationLockPath } from "./paths.js";
|
|
10
10
|
import { byUuid } from "./read/detail.js";
|
|
11
|
-
import { resolveProjectUuid, resolveTaskUuidPrefix } from "./read/queries.js";
|
|
11
|
+
import { resolveAreaUuid, resolveHeadingUuid, resolveProjectUuid, resolveTaskUuidPrefix, } from "./read/queries.js";
|
|
12
12
|
import { areaView } from "./read/area-view.js";
|
|
13
|
+
import { isLooseRef, looseShadowNotice, shadowingLooseArea } from "./read/pseudo-area.js";
|
|
13
14
|
import { projectView } from "./read/project-view.js";
|
|
14
15
|
import { snapshotView } from "./read/snapshot.js";
|
|
15
16
|
import { classifyShowTarget } from "./read/show-target.js";
|
|
16
17
|
import { areasView, tagsView } from "./read/tags.js";
|
|
17
|
-
import { anytimeView, changesView, inboxView, liteTitleSearch, logbookView, projectsView, searchView, somedayView, todayView, trashView, upcomingView, } from "./read/views.js";
|
|
18
|
+
import { anytimeView, areaLoggedCount, changesView, inboxView, liteTitleSearch, logbookView, projectsView, searchView, somedayView, todayView, trashView, upcomingView, } from "./read/views.js";
|
|
18
19
|
import { capAreaSections, previewSections, previewSomedaySections, truncateList, truncateToday, } from "./read/truncation.js";
|
|
20
|
+
import { filterListByArea, filterSectionsByArea, filterTodayByArea, resolveAreaFilter, } from "./read/area-filter.js";
|
|
21
|
+
import { filterListByScope, filterSectionsByScope, filterTodayByScope, inScopeItem, namedAreaClause, namedProjectClause, resolveScope, scopeMeta, taskMembershipClause, } from "./read/scope.js";
|
|
22
|
+
import { localToday } from "./model/dates.js";
|
|
19
23
|
import { resolveCap } from "./read/caps.js";
|
|
20
24
|
import { AREA_PREVIEW_LIMIT, DEFAULT_LIST_LIMIT, PROJECT_PREVIEW_LIMIT } from "./surface-copy.js";
|
|
21
|
-
import { readAuthToken, runMutation, } from "./write/pipeline.js";
|
|
22
|
-
import {
|
|
25
|
+
import { readAuthToken, replayResultFromRecord, runMutation, } from "./write/pipeline.js";
|
|
26
|
+
import { findAppliedOpId } from "./write/opid.js";
|
|
27
|
+
import { runBatch, } from "./write/batch.js";
|
|
23
28
|
import { planTagCreation } from "./write/tag-refs.js";
|
|
24
29
|
import { createEnvironmentTracker } from "./write/environment.js";
|
|
25
|
-
import { runHeadingArchive, runHeadingUnarchive, } from "./write/heading.js";
|
|
30
|
+
import { runAddHeading, runHeadingArchive, runHeadingUnarchive, } from "./write/heading.js";
|
|
26
31
|
import { runClearReminder } from "./write/clear-reminder.js";
|
|
27
32
|
import { runEditChecklist } from "./write/edit-checklist.js";
|
|
28
|
-
import {
|
|
33
|
+
import { runAddRepeatingProject, runMakeRepeatingProject } from "./write/make-repeating-project.js";
|
|
29
34
|
import { runReorder } from "./write/reorder.js";
|
|
30
|
-
import {
|
|
35
|
+
import { runInPlaceReorder, runProjectMove, runTodoMove, } from "./write/move.js";
|
|
36
|
+
import { readAuditRecords, runUndo } from "./write/undo.js";
|
|
31
37
|
import { runProjectReopen, } from "./write/reopen.js";
|
|
32
38
|
import { defaultVectors } from "./write/vectors/registry.js";
|
|
33
39
|
import { createUiDriveAux } from "./write/vectors/ui-drag.js";
|
|
@@ -71,6 +77,32 @@ export function openThings(options = {}) {
|
|
|
71
77
|
const defaultZone = clock.zone;
|
|
72
78
|
const zoneOf = (o) => o?.zone ?? defaultZone;
|
|
73
79
|
const config = loadConfig(env);
|
|
80
|
+
// Resolve the container scope ONCE (pinned for the client's life). Precedence:
|
|
81
|
+
// the explicit OpenOptions.scope (the MCP --scope flag) OUTRANKS the config
|
|
82
|
+
// layer's THINGS_API_SCOPE env / stored `scope`. Fail closed — an unresolvable
|
|
83
|
+
// requested scope throws ScopeResolutionError here (the daemon won't start).
|
|
84
|
+
const scopeRequest = options.scope !== undefined ? { ref: options.scope, source: "flag" } : config.scope;
|
|
85
|
+
const scope = scopeRequest !== null && scopeRequest !== undefined
|
|
86
|
+
? resolveScope(conn.db, scopeRequest.ref, scopeRequest.source)
|
|
87
|
+
: undefined;
|
|
88
|
+
// Precomputed clauses for the scope-aware read resolvers (built once).
|
|
89
|
+
const scopeClauses = scope !== undefined
|
|
90
|
+
? {
|
|
91
|
+
task: taskMembershipClause(scope),
|
|
92
|
+
namedProject: namedProjectClause(scope),
|
|
93
|
+
namedArea: namedAreaClause(scope),
|
|
94
|
+
}
|
|
95
|
+
: undefined;
|
|
96
|
+
/** Resolve an `--area` filter ref scope-aware: an out-of-scope area is not-found (parity). */
|
|
97
|
+
const areaFilterTarget = (ref) => {
|
|
98
|
+
if (scopeClauses !== undefined) {
|
|
99
|
+
resolveAreaUuid(conn.db, ref, {
|
|
100
|
+
scopeWhere: scopeClauses.namedArea.where,
|
|
101
|
+
scopeBinds: scopeClauses.namedArea.binds,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return resolveAreaFilter(conn.db, ref);
|
|
105
|
+
};
|
|
74
106
|
let cachedStatus = null;
|
|
75
107
|
const fingerprint = () => {
|
|
76
108
|
cachedStatus ??= compareToBaseline(observeSchema(conn.db), BASELINES);
|
|
@@ -90,10 +122,15 @@ export function openThings(options = {}) {
|
|
|
90
122
|
audit,
|
|
91
123
|
fingerprint,
|
|
92
124
|
lockPath: mutationLockPath(env),
|
|
125
|
+
// Read by runBatch for the opId idempotency lookback (same trail undo reads).
|
|
126
|
+
auditDirPath: auditDir(env),
|
|
93
127
|
now,
|
|
94
128
|
// The consumer zone normalizes clock-relative `when` tokens (today/evening)
|
|
95
129
|
// to explicit dates before dispatch; a per-write `zone` overrides it.
|
|
96
130
|
...(defaultZone !== undefined && { zone: defaultZone }),
|
|
131
|
+
// The pinned container scope: makes uuid targets resolve scope-aware and
|
|
132
|
+
// runs the universal scope gate for every write.
|
|
133
|
+
...(scope !== undefined && { scope }),
|
|
97
134
|
...(options.writeOverrides?.ensureRunning !== undefined && {
|
|
98
135
|
ensureRunning: options.writeOverrides.ensureRunning,
|
|
99
136
|
}),
|
|
@@ -109,13 +146,29 @@ export function openThings(options = {}) {
|
|
|
109
146
|
environment: options.writeOverrides?.environment ?? createEnvironmentTracker(PKG_VERSION, env),
|
|
110
147
|
};
|
|
111
148
|
const run = async (op, params, writeOptions) => {
|
|
149
|
+
// Single-op idempotency (--op-id): before doing anything, check whether a
|
|
150
|
+
// prior submission carrying this opId already applied. On a match, SKIP
|
|
151
|
+
// execution entirely and replay the ORIGINAL result's identity with
|
|
152
|
+
// `alreadyApplied: true` (never re-running the create/tag-prep). Scoped to
|
|
153
|
+
// real runs — a dry-run mints/records nothing, so it never dedups. Matching
|
|
154
|
+
// is against VERIFIED-OK records only (phase 1). Bypassed by the batch and
|
|
155
|
+
// the compound move/reorder orchestrators, which own their own dispatch.
|
|
156
|
+
if (writeOptions?.opId !== undefined &&
|
|
157
|
+
writeOptions.dryRun !== true &&
|
|
158
|
+
writeDeps.auditDirPath !== undefined) {
|
|
159
|
+
const applied = findAppliedOpId(readAuditRecords(writeDeps.auditDirPath), writeOptions.opId, now());
|
|
160
|
+
if (applied !== undefined)
|
|
161
|
+
return replayResultFromRecord(applied);
|
|
162
|
+
}
|
|
112
163
|
// --create-tags: create any missing tag named in this op's tags (clean
|
|
113
164
|
// `make new tag` path, mkdir-p for parent/child) before applying. Skipped
|
|
114
165
|
// on a dry run (no side effects). A failed creation leg short-circuits and
|
|
115
|
-
// is returned as this op's result.
|
|
166
|
+
// is returned as this op's result. The opId is NOT carried onto the
|
|
167
|
+
// tag-prep legs — it identifies the MAIN mutation (recorded on its record).
|
|
116
168
|
const tags = params.tags;
|
|
117
169
|
if (writeOptions?.createTags === true && writeOptions.dryRun !== true && Array.isArray(tags)) {
|
|
118
|
-
const
|
|
170
|
+
const { opId: _opId, ...rest } = writeOptions;
|
|
171
|
+
const legOptions = { ...rest, createTags: false };
|
|
119
172
|
for (const step of planTagCreation(conn.db, tags)) {
|
|
120
173
|
// parents must land before children (mkdir-p ordering)
|
|
121
174
|
const legResult = await runMutation(writeDeps, "tag.add", step.parent === undefined
|
|
@@ -132,76 +185,224 @@ export function openThings(options = {}) {
|
|
|
132
185
|
return {
|
|
133
186
|
dbPath: located.path,
|
|
134
187
|
config,
|
|
188
|
+
...(scope !== undefined && { scope: scopeMeta(scope) }),
|
|
135
189
|
fingerprint,
|
|
136
190
|
schemaStatus: () => toSchemaStatus(fingerprint()),
|
|
137
191
|
clockMeta: (zoneOverride) => buildClockMeta(clock, zoneOverride),
|
|
192
|
+
resolve: {
|
|
193
|
+
project: (ref) => {
|
|
194
|
+
const uuid = resolveProjectUuid(conn.db, ref, {
|
|
195
|
+
...(scopeClauses !== undefined && {
|
|
196
|
+
scopeWhere: scopeClauses.namedProject.where,
|
|
197
|
+
scopeBinds: scopeClauses.namedProject.binds,
|
|
198
|
+
}),
|
|
199
|
+
});
|
|
200
|
+
const row = conn.db.prepare("SELECT title FROM TMTask WHERE uuid = ?").get(uuid);
|
|
201
|
+
return { uuid, title: row?.title ?? "" };
|
|
202
|
+
},
|
|
203
|
+
// Headings inside a scoped project are in-scope by construction (the
|
|
204
|
+
// project ref was scope-checked), so no extra clause is threaded here.
|
|
205
|
+
heading: (projectUuid, sel) => resolveHeadingUuid(conn.db, projectUuid, sel),
|
|
206
|
+
},
|
|
138
207
|
read: {
|
|
139
208
|
// The list views own their bounding: run the full filtered query, then
|
|
140
209
|
// truncate to the resolved cap (default 50 / per-block 30·3) — the exact
|
|
141
210
|
// move the CLI/MCP surfaces used to make. The bounded shape carries the
|
|
142
211
|
// capped view plus the truncation/grouped metadata (the human renderers
|
|
143
212
|
// derive their hidden-count hints from that metadata alone).
|
|
213
|
+
// The `area` filter (when present) is a pure POST-FILTER applied to the
|
|
214
|
+
// shaped view BEFORE the row cap / per-block preview, so `limit` (and the
|
|
215
|
+
// grouped caps) size the FILTERED result. The resolved area rides back as
|
|
216
|
+
// the additive `filter` field (surfaced as `meta.filter`).
|
|
144
217
|
today: (o) => {
|
|
145
|
-
|
|
146
|
-
|
|
218
|
+
let view = todayView(conn.db, now(), o, zoneOf(o));
|
|
219
|
+
// Scope filter first (the jail), then the per-call --area filter
|
|
220
|
+
// (an intersection); both size the survivors before the row cap.
|
|
221
|
+
if (scope !== undefined)
|
|
222
|
+
view = filterTodayByScope(view, scope, localToday(now(), zoneOf(o)));
|
|
223
|
+
let filter;
|
|
224
|
+
if (o?.area !== undefined) {
|
|
225
|
+
const target = areaFilterTarget(o.area);
|
|
226
|
+
view = filterTodayByArea(view, target.uuid, localToday(now(), zoneOf(o)));
|
|
227
|
+
filter = { area: target };
|
|
228
|
+
}
|
|
229
|
+
const { data, truncation } = truncateToday(view, listCap(o));
|
|
230
|
+
return { view: data, truncation, ...(filter !== undefined && { filter }) };
|
|
147
231
|
},
|
|
148
232
|
inbox: (o) => {
|
|
149
|
-
|
|
233
|
+
let items = inboxView(conn.db, now(), o, zoneOf(o));
|
|
234
|
+
// The Inbox is outside every container (captures have no area/project),
|
|
235
|
+
// so it is legitimately always empty under a scope — see the add-redirect.
|
|
236
|
+
if (scope !== undefined)
|
|
237
|
+
items = filterListByScope(items, scope);
|
|
238
|
+
const { data, truncation } = truncateList(items, listCap(o));
|
|
150
239
|
return { items: data, truncation };
|
|
151
240
|
},
|
|
152
241
|
anytime: (o) => {
|
|
153
|
-
|
|
154
|
-
|
|
242
|
+
let sections = anytimeView(conn.db, now(), o, zoneOf(o));
|
|
243
|
+
if (scope !== undefined)
|
|
244
|
+
sections = filterSectionsByScope(sections, scope);
|
|
245
|
+
let filter;
|
|
246
|
+
if (o?.area !== undefined) {
|
|
247
|
+
const target = areaFilterTarget(o.area);
|
|
248
|
+
sections = filterSectionsByArea(sections, target.uuid);
|
|
249
|
+
filter = { area: target };
|
|
250
|
+
}
|
|
251
|
+
const { data, truncation } = previewSections(sections, groupedCaps(o, AREA_PREVIEW_LIMIT, PROJECT_PREVIEW_LIMIT));
|
|
252
|
+
return { view: data, truncation, ...(filter !== undefined && { filter }) };
|
|
155
253
|
},
|
|
156
254
|
upcoming: (o) => {
|
|
157
|
-
|
|
158
|
-
|
|
255
|
+
let items = upcomingView(conn.db, now(), o, zoneOf(o));
|
|
256
|
+
if (scope !== undefined)
|
|
257
|
+
items = filterListByScope(items, scope);
|
|
258
|
+
let filter;
|
|
259
|
+
if (o?.area !== undefined) {
|
|
260
|
+
const target = areaFilterTarget(o.area);
|
|
261
|
+
items = filterListByArea(items, target.uuid);
|
|
262
|
+
filter = { area: target };
|
|
263
|
+
}
|
|
264
|
+
const { data, truncation } = truncateList(items, listCap(o));
|
|
265
|
+
return { items: data, truncation, ...(filter !== undefined && { filter }) };
|
|
159
266
|
},
|
|
160
267
|
someday: (o) => {
|
|
161
|
-
|
|
162
|
-
|
|
268
|
+
let sections = somedayView(conn.db, now(), o, zoneOf(o));
|
|
269
|
+
if (scope !== undefined)
|
|
270
|
+
sections = filterSectionsByScope(sections, scope);
|
|
271
|
+
let filter;
|
|
272
|
+
if (o?.area !== undefined) {
|
|
273
|
+
const target = areaFilterTarget(o.area);
|
|
274
|
+
sections = filterSectionsByArea(sections, target.uuid);
|
|
275
|
+
filter = { area: target };
|
|
276
|
+
}
|
|
277
|
+
const { data, truncation } = previewSomedaySections(sections, groupedCaps(o, AREA_PREVIEW_LIMIT, null));
|
|
278
|
+
return { view: data, truncation, ...(filter !== undefined && { filter }) };
|
|
163
279
|
},
|
|
164
280
|
logbook: (o) => {
|
|
165
281
|
// The bound is the truncation cap; the underlying query stays unbounded
|
|
166
282
|
// (limit: null) so the exact total behind the cut is honest.
|
|
167
283
|
const { limit: _limit, all: _all, ...filter } = o ?? {};
|
|
168
|
-
|
|
169
|
-
|
|
284
|
+
let items = logbookView(conn.db, now(), { ...filter, limit: null }, zoneOf(o));
|
|
285
|
+
// Post-filter to in-scope logged/resolved rows (their area/project
|
|
286
|
+
// linkage survives logging, so inScopeItem resolves).
|
|
287
|
+
if (scope !== undefined)
|
|
288
|
+
items = filterListByScope(items, scope);
|
|
289
|
+
const { data, truncation } = truncateList(items, listCap(o));
|
|
290
|
+
// Logbook scopes to an area NATIVELY at the query level (its `area`
|
|
291
|
+
// predicate implements the identical effective-area keep-rule); this
|
|
292
|
+
// only resolves the target for the additive `filter` annotation so the
|
|
293
|
+
// meta shape matches the post-filtered views.
|
|
294
|
+
const areaFilter = o?.area !== undefined ? { area: areaFilterTarget(o.area) } : undefined;
|
|
295
|
+
return { items: data, truncation, ...(areaFilter !== undefined && { filter: areaFilter }) };
|
|
170
296
|
},
|
|
171
297
|
trash: (o) => {
|
|
172
|
-
|
|
298
|
+
let items = trashView(conn.db, now(), { limit: null }, zoneOf(o));
|
|
299
|
+
// A trashed row keeps its area/project linkage until emptied, so
|
|
300
|
+
// inScopeItem still resolves — out-of-scope trash is invisible.
|
|
301
|
+
if (scope !== undefined)
|
|
302
|
+
items = filterListByScope(items, scope);
|
|
303
|
+
const { data, truncation } = truncateList(items, listCap(o));
|
|
173
304
|
return { items: data, truncation };
|
|
174
305
|
},
|
|
175
306
|
// Thread the injected clock so `--overdue`'s (and later's) today boundary
|
|
176
307
|
// rides the same clock as every other view — never a hardcoded date.
|
|
177
308
|
projects: (o) => {
|
|
178
309
|
const zone = zoneOf(o);
|
|
179
|
-
|
|
310
|
+
const projects = projectsView(conn.db, {
|
|
311
|
+
...o,
|
|
312
|
+
now: now(),
|
|
313
|
+
...(zone !== undefined && { zone }),
|
|
314
|
+
});
|
|
315
|
+
// Area scope → projects in the area; project scope → the one scope project.
|
|
316
|
+
return scope !== undefined ? projects.filter((p) => inScopeItem(p, scope)) : projects;
|
|
180
317
|
},
|
|
181
|
-
projectView: (ref, o) => projectView(conn.db,
|
|
318
|
+
projectView: (ref, o) => projectView(conn.db,
|
|
319
|
+
// Scope-aware resolve: an out-of-scope project ref is not-found (parity
|
|
320
|
+
// with a nonexistent one). Project scope → only the scope project;
|
|
321
|
+
// area scope → in-area projects; all children are in-scope by construction.
|
|
322
|
+
resolveProjectUuid(conn.db, ref, {
|
|
323
|
+
trashed: true,
|
|
324
|
+
...(scopeClauses !== undefined && {
|
|
325
|
+
scopeWhere: scopeClauses.namedProject.where,
|
|
326
|
+
scopeBinds: scopeClauses.namedProject.binds,
|
|
327
|
+
}),
|
|
328
|
+
}), now(), o ?? {}, zoneOf(o)),
|
|
182
329
|
areaView: (ref, o) => {
|
|
183
|
-
|
|
184
|
-
|
|
330
|
+
// Area scope → only the scope area is viewable; project scope → an area
|
|
331
|
+
// is broader than the jail, so ANY areaView is not-found. Resolve
|
|
332
|
+
// scope-aware first so an out-of-scope area throws the same not-found a
|
|
333
|
+
// nonexistent one does. The `loose` pseudo-area is the NULL area — it
|
|
334
|
+
// lies outside every container jail, so a scope resolves it not-found
|
|
335
|
+
// (the reserved word never matches an in-scope area name).
|
|
336
|
+
if (scope !== undefined) {
|
|
337
|
+
const clause = scope.kind === "area"
|
|
338
|
+
? scopeClauses.namedArea
|
|
339
|
+
: { where: "0", binds: [] };
|
|
340
|
+
resolveAreaUuid(conn.db, ref, { scopeWhere: clause.where, scopeBinds: clause.binds });
|
|
341
|
+
}
|
|
342
|
+
const { data, truncation } = capAreaSections(areaView(conn.db, ref, now(), o ?? {}, zoneOf(o)), groupedCaps(o, AREA_PREVIEW_LIMIT, AREA_PREVIEW_LIMIT), now(), zoneOf(o));
|
|
343
|
+
// Reserved-word disclosure: `loose` ALWAYS wins over a real area named
|
|
344
|
+
// "Loose"; when one shadows, name it (by uuid) so it stays targetable.
|
|
345
|
+
const shadow = isLooseRef(ref) ? shadowingLooseArea(conn.db) : undefined;
|
|
346
|
+
// The live logbook-footer count — a real area only (the loose
|
|
347
|
+
// pseudo-area accumulates no `logbook --area` archive). A display
|
|
348
|
+
// sibling of the view; never part of the JSON `data`.
|
|
349
|
+
const loggedCount = data.area !== null
|
|
350
|
+
? areaLoggedCount(conn.db, data.area.uuid, now(), zoneOf(o))
|
|
351
|
+
: undefined;
|
|
352
|
+
return {
|
|
353
|
+
view: data,
|
|
354
|
+
truncation,
|
|
355
|
+
...(shadow !== undefined && { notice: looseShadowNotice(shadow) }),
|
|
356
|
+
...(loggedCount !== undefined && { loggedCount }),
|
|
357
|
+
};
|
|
358
|
+
},
|
|
359
|
+
areas: () => {
|
|
360
|
+
const areas = areasView(conn.db);
|
|
361
|
+
// Area scope → the one scope area; project scope → the project's own
|
|
362
|
+
// area only (its own context, not an oracle for sibling containers).
|
|
363
|
+
if (scope === undefined)
|
|
364
|
+
return areas;
|
|
365
|
+
const keep = scope.kind === "area" ? scope.uuid : scope.areaUuid;
|
|
366
|
+
return areas.filter((a) => a.uuid === keep);
|
|
185
367
|
},
|
|
186
|
-
areas: () => areasView(conn.db),
|
|
187
368
|
tags: () => tagsView(conn.db),
|
|
188
369
|
search: (query, o) => {
|
|
189
370
|
const { limit: _limit, ...rest } = o ?? {};
|
|
190
|
-
|
|
371
|
+
let items = searchView(conn.db, query, { ...rest, limit: null }, now(), zoneOf(o));
|
|
372
|
+
// A title search is the classic oracle — post-filter to in-scope rows and
|
|
373
|
+
// recompute the truncation total over survivors (truncateList does this).
|
|
374
|
+
if (scope !== undefined)
|
|
375
|
+
items = items.filter((i) => inScopeItem(i, scope));
|
|
376
|
+
const { data, truncation } = truncateList(items, listCap(o));
|
|
191
377
|
return { items: data, truncation };
|
|
192
378
|
},
|
|
193
|
-
liteTitleSearch: (query, o) =>
|
|
379
|
+
liteTitleSearch: (query, o) => {
|
|
380
|
+
const result = liteTitleSearch(conn.db, query, o, now(), defaultZone);
|
|
381
|
+
if (scope === undefined)
|
|
382
|
+
return result;
|
|
383
|
+
// Did-you-mean candidates are a title-match leak — keep only in-scope
|
|
384
|
+
// tasks; areas keep only the scope's own area context.
|
|
385
|
+
const keepArea = scope.kind === "area" ? scope.uuid : scope.areaUuid;
|
|
386
|
+
const candidates = result.candidates.filter((c) => c.kind === "area" ? c.area.uuid === keepArea : inScopeItem(c.task, scope));
|
|
387
|
+
return { ...result, candidates };
|
|
388
|
+
},
|
|
194
389
|
changes: (o) => {
|
|
195
|
-
|
|
390
|
+
let items = changesView(conn.db, now(), { since: o.since, limit: null }, zoneOf(o));
|
|
391
|
+
// No out-of-scope uuid may leak into the delta feed (rows are live
|
|
392
|
+
// TMTask, so the effective container resolves).
|
|
393
|
+
if (scope !== undefined)
|
|
394
|
+
items = items.filter((i) => inScopeItem(i, scope));
|
|
395
|
+
const { data, truncation } = truncateList(items, listCap(o));
|
|
196
396
|
return { items: data, truncation };
|
|
197
397
|
},
|
|
198
|
-
showTarget: (ref) => classifyShowTarget(conn.db, ref),
|
|
398
|
+
showTarget: (ref) => classifyShowTarget(conn.db, ref, scope),
|
|
199
399
|
byUuid: (uuid) => {
|
|
200
400
|
// Prefix-friendly: unknown refs keep the null contract; ambiguity throws.
|
|
201
401
|
// The injected clock gates `todaySection` to Today members under the
|
|
202
|
-
// consumer's own today (a pinned-clock/lab run reads honestly).
|
|
402
|
+
// consumer's own today (a pinned-clock/lab run reads honestly). Under a
|
|
403
|
+
// scope, an out-of-scope uuid resolves to not-found → null (parity).
|
|
203
404
|
try {
|
|
204
|
-
return byUuid(conn.db, resolveTaskUuidPrefix(conn.db, uuid), now(), defaultZone);
|
|
405
|
+
return byUuid(conn.db, resolveTaskUuidPrefix(conn.db, uuid, "to-do", scopeClauses?.task), now(), defaultZone);
|
|
205
406
|
}
|
|
206
407
|
catch (err) {
|
|
207
408
|
if (err instanceof RangeError && !err.message.includes("ambiguous"))
|
|
@@ -209,7 +410,14 @@ export function openThings(options = {}) {
|
|
|
209
410
|
throw err;
|
|
210
411
|
}
|
|
211
412
|
},
|
|
212
|
-
snapshot: () =>
|
|
413
|
+
snapshot: () => {
|
|
414
|
+
// A snapshot is a whole-library dump; a silently partial one under a
|
|
415
|
+
// scope is misleading. Refuse (a scoped-dump variant is deferred).
|
|
416
|
+
if (scope !== undefined) {
|
|
417
|
+
throw new RangeError("snapshot is a whole-library dump and is not available under an active container scope");
|
|
418
|
+
}
|
|
419
|
+
return snapshotView(conn.db, now(), defaultZone);
|
|
420
|
+
},
|
|
213
421
|
},
|
|
214
422
|
write: {
|
|
215
423
|
run,
|
|
@@ -219,6 +427,8 @@ export function openThings(options = {}) {
|
|
|
219
427
|
cancelTodo: (uuid, o) => run("todo.cancel", { uuid }, o),
|
|
220
428
|
reopenTodo: (uuid, o) => run("todo.reopen", { uuid }, o),
|
|
221
429
|
moveTodo: (uuid, dest, o) => run("todo.move", { uuid, ...dest }, o),
|
|
430
|
+
moveTodos: (request, o) => runTodoMove(writeDeps, request, o ?? {}),
|
|
431
|
+
reorderTodos: (request, o) => runInPlaceReorder(writeDeps, "todo.move", request, o ?? {}),
|
|
222
432
|
setTags: (uuid, tags, o) => run("todo.set-tags", { uuid, tags }, o),
|
|
223
433
|
addTags(uuid, tags, o) {
|
|
224
434
|
const current = byUuid(conn.db, uuid);
|
|
@@ -232,25 +442,30 @@ export function openThings(options = {}) {
|
|
|
232
442
|
restoreTodo: (uuid, o) => run("todo.restore", { uuid }, o),
|
|
233
443
|
backdateTodo: (uuid, dates, o) => run("todo.backdate", { uuid, ...dates }, o),
|
|
234
444
|
addLoggedTodo: (params, o) => run("todo.add-logged", params, o),
|
|
235
|
-
|
|
236
|
-
renameHeading: (uuid, title, o) => run("
|
|
445
|
+
addHeading: (project, title, placement, o) => runAddHeading(writeDeps, project, title, placement, o ?? {}),
|
|
446
|
+
renameHeading: (uuid, title, o) => run("project.rename-heading", { uuid, title }, o),
|
|
447
|
+
moveHeading: (project, headings, placement, o) => run("project.move-heading", { project, headings, placement }, o),
|
|
448
|
+
moveHeadingToProject: (project, heading, toProject, o) => run("project.move-heading-to-project", { project, heading, toProject }, o),
|
|
449
|
+
dissolveHeading: (uuid, o) => run("project.dissolve-heading", { uuid }, o),
|
|
237
450
|
clearReminder: (uuid, o) => runClearReminder(writeDeps, { uuid }, o ?? {}),
|
|
238
451
|
archiveHeading: (uuid, policy, o) => runHeadingArchive(writeDeps, { uuid, ...policy }, o ?? {}),
|
|
239
452
|
unarchiveHeading: (uuid, policy, o) => runHeadingUnarchive(writeDeps, { uuid, ...policy }, o ?? {}),
|
|
240
|
-
detachTodo: (uuid, o) => run("todo.move", { uuid,
|
|
453
|
+
detachTodo: (uuid, o) => run("todo.move", { uuid, loose: true }, o),
|
|
241
454
|
editChecklist: (uuid, edit, o) => runEditChecklist(writeDeps, uuid, edit, o ?? {}),
|
|
242
455
|
addProject: (params, o) => run("project.add", params, o),
|
|
243
456
|
updateProject: (uuid, patch, o) => run("project.update", { uuid, ...patch }, o),
|
|
244
457
|
completeProject: (uuid, policy, o) => run("project.complete", { uuid, children: policy.children }, o),
|
|
245
458
|
moveProject: (uuid, area, o) => run("project.move", { uuid, area }, o),
|
|
246
|
-
detachProject: (uuid, o) => run("project.move", { uuid,
|
|
459
|
+
detachProject: (uuid, o) => run("project.move", { uuid, noArea: true }, o),
|
|
460
|
+
moveProjects: (request, o) => runProjectMove(writeDeps, request, o ?? {}),
|
|
461
|
+
reorderProjects: (request, o) => runInPlaceReorder(writeDeps, "project.move", request, o ?? {}),
|
|
247
462
|
cancelProject: (uuid, policy, o) => run("project.cancel", { uuid, children: policy.children }, o),
|
|
248
463
|
reopenProject: (uuid, o) => runProjectReopen(writeDeps, uuid, o ?? {}),
|
|
249
464
|
restoreProject: (uuid, o) => run("project.restore", { uuid }, o),
|
|
250
465
|
duplicateProject: (uuid, o) => run("project.duplicate", { uuid }, o),
|
|
251
466
|
deleteProject: (uuid, o) => run("project.delete", { uuid }, o),
|
|
252
467
|
makeRepeatingProject: (uuid, rule, o) => runMakeRepeatingProject(writeDeps, { uuid, ...rule }, o ?? {}),
|
|
253
|
-
|
|
468
|
+
addRepeatingProject: (params, o) => runAddRepeatingProject(writeDeps, params, o ?? {}),
|
|
254
469
|
setProjectTags: (uuid, tags, o) => run("project.set-tags", { uuid, tags }, o),
|
|
255
470
|
addProjectTags(uuid, tags, o) {
|
|
256
471
|
const current = byUuid(conn.db, uuid);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -11,10 +11,40 @@ export interface ThingsApiConfig {
|
|
|
11
11
|
/** User-accepted drifted fingerprint (loud escape hatch; see design §6). */
|
|
12
12
|
acceptedFingerprint: string | null;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* The Things app version the behavioral LAWS (docs/reference/assumption-register.md)
|
|
15
|
+
* were last certified against. Set when a baseline ships or by an explicit
|
|
16
|
+
* `things config set certified-app-version <X>`. The schema fingerprint cannot
|
|
17
|
+
* see BEHAVIORAL drift (an app update can move an insertion law with zero schema
|
|
18
|
+
* delta), so `things doctor` compares this against the installed version and
|
|
19
|
+
* emits a PASSIVE, non-blocking notice on a mismatch, pointing at the drift
|
|
20
|
+
* suite. Null when never certified (no notice). Precedent: the skill-version
|
|
21
|
+
* passive drift notice (src/cli/skill-check.ts).
|
|
22
|
+
*/
|
|
23
|
+
certifiedAppVersion: string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Allow capabilities that ride the app's PRIVATE, UNDOCUMENTED sdef reorder
|
|
26
|
+
* command (default true). This is a private vendor surface, NOT a half-baked
|
|
27
|
+
* "experimental" one: every write is verify-per-write, fingerprint-gated, and
|
|
28
|
+
* canaried by the o-suite (incl. O17), which together detect any divergence.
|
|
29
|
+
* The bidirectional env/config off-switch is retained for hosts that want the
|
|
30
|
+
* private surface disabled; when off, the planner falls back to a proven bounce
|
|
31
|
+
* wherever one exists and refuses only where no enabled path remains.
|
|
16
32
|
*/
|
|
17
33
|
allowExperimental: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Whether the `when=`-bounce reorder protocols may run (default true). When
|
|
36
|
+
* false the move/reorder planner REFUSES every bounce-dependent placement
|
|
37
|
+
* (within-heading order, area-someday order, area-less loose anytime, and the
|
|
38
|
+
* top-level projects / evening scopes) with a teaching error naming this key —
|
|
39
|
+
* it never silently falls back to a destructive or unverified path.
|
|
40
|
+
*/
|
|
41
|
+
bounceEnabled: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Cap on the number of items a single bounce reorder may touch (default 30).
|
|
44
|
+
* Each item costs two verified mutations (~110 ms/item guest-local, BOUNCE2-t);
|
|
45
|
+
* the cap bounds the wall-clock and the Things-Cloud change-record fan-out.
|
|
46
|
+
*/
|
|
47
|
+
bounceMaxItems: number;
|
|
18
48
|
/**
|
|
19
49
|
* The Accessibility GUI ("ui") write vector. When disabled the vector does
|
|
20
50
|
* not exist on this machine: its GUI-only operations report unsupported.
|
|
@@ -25,6 +55,20 @@ export interface ThingsApiConfig {
|
|
|
25
55
|
ui: {
|
|
26
56
|
enabled: boolean;
|
|
27
57
|
};
|
|
58
|
+
/**
|
|
59
|
+
* Container-scoped sandbox: a raw ref (uuid / uuid-prefix / unique area or
|
|
60
|
+
* project name) plus where it came from, resolved to a pinned container at
|
|
61
|
+
* `openThings()`. Null when unscoped. A stored `scope` jails EVERY process on
|
|
62
|
+
* this host — including the owner's own terminal — so per-process scoping
|
|
63
|
+
* belongs on `THINGS_API_SCOPE` / the MCP `--scope` flag, not here (see
|
|
64
|
+
* docs/design/container-scope.md, Trust model). The MCP flag outranks env,
|
|
65
|
+
* which outranks this stored key. Optional in the type (a hand-built config
|
|
66
|
+
* omits it = unscoped); {@link loadConfig} always populates it.
|
|
67
|
+
*/
|
|
68
|
+
scope?: {
|
|
69
|
+
ref: string;
|
|
70
|
+
source: "env" | "config";
|
|
71
|
+
} | null;
|
|
28
72
|
host: string;
|
|
29
73
|
}
|
|
30
74
|
interface ConfigFile {
|
|
@@ -33,10 +77,30 @@ interface ConfigFile {
|
|
|
33
77
|
actor?: string;
|
|
34
78
|
auditEnabled?: boolean;
|
|
35
79
|
acceptedFingerprint?: string;
|
|
80
|
+
certifiedAppVersion?: string;
|
|
36
81
|
allowExperimental?: boolean;
|
|
82
|
+
bounceEnabled?: boolean;
|
|
83
|
+
bounceMaxItems?: number;
|
|
37
84
|
uiEnabled?: boolean;
|
|
85
|
+
scope?: string;
|
|
38
86
|
}
|
|
39
87
|
export declare function loadConfig(env?: NodeJS.ProcessEnv): ThingsApiConfig;
|
|
40
88
|
/** Persist one config key (CLI `things config set`). */
|
|
41
89
|
export declare function saveConfigKey(key: keyof ConfigFile, value: string | number | boolean | null, env?: NodeJS.ProcessEnv): void;
|
|
90
|
+
/**
|
|
91
|
+
* One config key's effective value and where it came from. `key` is the
|
|
92
|
+
* `things config set` / `things config get` spelling; `value` is the effective
|
|
93
|
+
* value after env override → stored file → built-in default; `source` says which
|
|
94
|
+
* layer supplied it. `derived` marks a read-only value computed from the
|
|
95
|
+
* environment (`host`) or from another key (the profile-derived `maxDisruption`
|
|
96
|
+
* default) rather than settable directly.
|
|
97
|
+
*/
|
|
98
|
+
export interface ConfigKeyView {
|
|
99
|
+
key: string;
|
|
100
|
+
value: string | number | boolean | null;
|
|
101
|
+
source: "env" | "stored" | "default" | "derived";
|
|
102
|
+
}
|
|
103
|
+
export declare function describeConfig(env?: NodeJS.ProcessEnv): ConfigKeyView[];
|
|
104
|
+
/** One key's effective view, or undefined for an unknown key (`config get <key>`). */
|
|
105
|
+
export declare function getConfigKey(key: string, env?: NodeJS.ProcessEnv): ConfigKeyView | undefined;
|
|
42
106
|
export {};
|