things-api 0.19.4 → 0.20.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 +1 -1
- package/deputy/prebuilt/Things API Helper.app/Contents/CodeResources +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/MacOS/things-reader +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/MacOS/things-deputy +0 -0
- package/dist/audit/schema.d.ts +28 -10
- package/dist/audit/schema.js +21 -0
- package/dist/audit/schema.js.map +1 -1
- package/dist/cli/commands/doctor.js +3 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/op-result.js +15 -9
- package/dist/cli/commands/op-result.js.map +1 -1
- package/dist/cli/commands/repeat-flags.d.ts +19 -1
- package/dist/cli/commands/repeat-flags.js +71 -0
- package/dist/cli/commands/repeat-flags.js.map +1 -1
- package/dist/cli/commands/rescue.d.ts +12 -0
- package/dist/cli/commands/rescue.js +83 -0
- package/dist/cli/commands/rescue.js.map +1 -0
- package/dist/cli/commands/writes.js +35 -25
- package/dist/cli/commands/writes.js.map +1 -1
- package/dist/cli/help.js +25 -25
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +12 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/resolve-invocation.d.ts +9 -1
- package/dist/cli/resolve-invocation.js +71 -0
- package/dist/cli/resolve-invocation.js.map +1 -1
- package/dist/cli/unknown-command.d.ts +26 -0
- package/dist/cli/unknown-command.js +135 -0
- package/dist/cli/unknown-command.js.map +1 -0
- package/dist/contracts.d.ts +4 -3
- package/dist/contracts.js +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +55 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/entities.d.ts +11 -0
- package/dist/model/entities.js.map +1 -1
- package/dist/model/mappers.js +15 -0
- package/dist/model/mappers.js.map +1 -1
- package/dist/op-result.d.ts +15 -2
- package/dist/op-result.js +72 -20
- package/dist/op-result.js.map +1 -1
- package/dist/process-instance.d.ts +41 -0
- package/dist/process-instance.js +82 -0
- package/dist/process-instance.js.map +1 -0
- package/dist/rescue.d.ts +247 -0
- package/dist/rescue.js +811 -0
- package/dist/rescue.js.map +1 -0
- package/dist/session-grant.js +4 -15
- package/dist/session-grant.js.map +1 -1
- package/dist/ui-state.d.ts +8 -4
- package/dist/ui-state.js +8 -4
- package/dist/ui-state.js.map +1 -1
- package/dist/write/commands.d.ts +9 -0
- package/dist/write/commands.js +135 -50
- package/dist/write/commands.js.map +1 -1
- package/dist/write/disclosures.d.ts +12 -0
- package/dist/write/disclosures.js +12 -0
- package/dist/write/disclosures.js.map +1 -1
- package/dist/write/experimental.d.ts +16 -0
- package/dist/write/experimental.js +19 -0
- package/dist/write/experimental.js.map +1 -1
- package/dist/write/failure-hints.js +3 -2
- package/dist/write/failure-hints.js.map +1 -1
- package/dist/write/guards.d.ts +1 -1
- package/dist/write/guards.js +102 -3
- package/dist/write/guards.js.map +1 -1
- package/dist/write/lock.d.ts +85 -1
- package/dist/write/lock.js +121 -6
- package/dist/write/lock.js.map +1 -1
- package/dist/write/operations.d.ts +52 -6
- package/dist/write/operations.js +22 -0
- package/dist/write/operations.js.map +1 -1
- package/dist/write/opid.d.ts +69 -8
- package/dist/write/opid.js +111 -17
- package/dist/write/opid.js.map +1 -1
- package/dist/write/param-schema.js +14 -2
- package/dist/write/param-schema.js.map +1 -1
- package/dist/write/pipeline.d.ts +43 -2
- package/dist/write/pipeline.js +157 -39
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/planner.d.ts +7 -0
- package/dist/write/planner.js +12 -0
- package/dist/write/planner.js.map +1 -1
- package/dist/write/preserve-modified.d.ts +17 -8
- package/dist/write/preserve-modified.js.map +1 -1
- package/dist/write/promote-clone.js +60 -17
- package/dist/write/promote-clone.js.map +1 -1
- package/dist/write/repeat-rule.d.ts +25 -1
- package/dist/write/repeat-rule.js +69 -0
- package/dist/write/repeat-rule.js.map +1 -1
- package/dist/write/resolution-timestamps.js +103 -80
- package/dist/write/resolution-timestamps.js.map +1 -1
- package/dist/write/reversibility.js +2 -2
- package/dist/write/reversibility.js.map +1 -1
- package/dist/write/template-mutation.js +14 -2
- package/dist/write/template-mutation.js.map +1 -1
- package/dist/write/undo.js +45 -5
- package/dist/write/undo.js.map +1 -1
- package/dist/write/vectors/simulator.js +48 -2
- package/dist/write/vectors/simulator.js.map +1 -1
- package/dist/write/vectors/ui-state.d.ts +22 -6
- package/dist/write/vectors/ui-state.js +1 -1
- package/dist/write/vectors/ui-state.js.map +1 -1
- package/dist/write/vectors/ui.d.ts +23 -1
- package/dist/write/vectors/ui.js +24 -4
- package/dist/write/vectors/ui.js.map +1 -1
- package/dist/write/vectors/url-scheme.js +26 -0
- package/dist/write/vectors/url-scheme.js.map +1 -1
- package/package.json +1 -1
- package/schema/envelope.schema.json +1 -2
- package/skills/things-cli/SKILL.md +4 -2
- package/skills/things-cli/references/repeating.md +1 -1
- package/dist/cli/commands/ui-state.d.ts +0 -11
- package/dist/cli/commands/ui-state.js +0 -27
- package/dist/cli/commands/ui-state.js.map +0 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
A typed TypeScript library + CLI (`things`) for programmatic interaction with [Things 3](https://culturedcode.com/things/) by Cultured Code.
|
|
6
6
|
|
|
7
|
-
**Status: read + write + MCP layers live and published to npm (v0.
|
|
7
|
+
**Status: read + write + MCP layers live and published to npm (v0.20.0 — see [CHANGELOG.md](CHANGELOG.md)).** Reads go straight to the local SQLite database (UI-exact Today ordering, sidebar-grouped Anytime/Someday with container-status cascade, decoded repeat rules, occurrence projections); writes run a verified pipeline over four write vectors — two lab-validated headless surfaces (the URL scheme + AppleScript) and two opt-in surfaces (Apple Shortcuts and an Accessibility-driven GUI vector) — with hazard guards, disruption-tier policy, a JSONL audit trail, batch mode, audit-replay undo (transactional across compound operations), full project lifecycle (complete/cancel/reopen/restore), heading rename/archive/unarchive with children policies, container detach, granular stateful checklists, tag hierarchy management incl. un-nesting, completion/creation backdating, Logbook imports, tiered fuzzy name resolution (uuid prefixes, `things:///show?id=` share links), and kind-neutral in-place reordering within any container or view (one `things reorder <refs…> [--start|--end|--before|--after] --in <target>` verb — Today/Evening, a project, an area, a heading's children, someday, inbox — plus `project move-heading` for the headings themselves and `area reorder` for the sidebar). The Apple Shortcuts surface is wired for the two headless capabilities nothing else can do: creating a heading in an existing project (`things project add-heading`) and clearing a reminder from a date-scheduled item (`things todo clear-reminder`). Both run through bundled proxy shortcuts (`things setup`) and are gated on their presence. The fourth vector — the Accessibility-driven GUI vector — is off by default and drives the local Things app to reach transforms that exist on no scriptable surface (repeat-rule editing on existing to-dos and projects, convert-to-project, sidebar area reorder); see [Accessibility GUI vector](#accessibility-gui-vector-optional-off-by-default) below. Single-item permanent delete stays interactive-only (its macOS consent has no always-allow) and is out of the headless pipeline. See [docs/design/](docs/design/) for the architecture and VM-lab design, [docs/lab/](docs/lab/harness.md) for the probe harness and campaign results the write layer is grounded in, and [docs/atlas/](docs/atlas/schema-v26.md) for the database↔UI map.
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
10
|
things today --json # read: your Today list, Evening split, UI order
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/audit/schema.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProcessInstance } from "../process-instance.ts";
|
|
1
2
|
import type { DeltaSpec, OccurrenceResolution } from "../write/verify/delta.ts";
|
|
2
3
|
export interface AuditRecord {
|
|
3
4
|
v: 1;
|
|
@@ -38,8 +39,10 @@ export interface AuditRecord {
|
|
|
38
39
|
* `--preserve-modified` capture (ADDITIVE): the pre-write `userModificationDate`
|
|
39
40
|
* of each captured target row (uuid → epoch seconds, or null for a row the op
|
|
40
41
|
* created), recorded on the `ok` record only when the flag was active. Cheap
|
|
41
|
-
* provenance that
|
|
42
|
-
*
|
|
42
|
+
* provenance that drives the SYMMETRIC undo — `runUndo` restores these values
|
|
43
|
+
* after the inverse legs land, so reversing a timeline-silent write is itself
|
|
44
|
+
* timeline-silent — without a separate read. Absent on writes made without the
|
|
45
|
+
* flag; a record whose restore cannot run is disclosed, never reclassified.
|
|
43
46
|
*/
|
|
44
47
|
preModDates?: Record<string, number | null>;
|
|
45
48
|
/**
|
|
@@ -51,16 +54,31 @@ export interface AuditRecord {
|
|
|
51
54
|
* call returned without re-reading the database.
|
|
52
55
|
*/
|
|
53
56
|
occurrence?: OccurrenceResolution;
|
|
57
|
+
/**
|
|
58
|
+
* IN-FLIGHT HOLDER (ADDITIVE): the process that owns this work, recorded on a
|
|
59
|
+
* keyed `intent` record so a later reader can tell "still running" from "died
|
|
60
|
+
* without recording an outcome" (#639). A pid alone cannot answer that — pids
|
|
61
|
+
* are recycled — so this is the pid PAIRED with its start time, the same
|
|
62
|
+
* instance key the session grant uses; {@link instanceAlive} states the
|
|
63
|
+
* (deliberately conservative) liveness rule. Absent on final records, where
|
|
64
|
+
* the outcome itself is the answer, and on unkeyed M3 intents, which nothing
|
|
65
|
+
* polls.
|
|
66
|
+
*/
|
|
67
|
+
holder?: ProcessInstance;
|
|
54
68
|
/**
|
|
55
69
|
* AMBIGUOUS-OUTCOME reconciliation key (ADDITIVE): the expected-state
|
|
56
|
-
* assertion this attempt was verifying
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
70
|
+
* assertion this attempt was verifying. Recorded on the two record classes
|
|
71
|
+
* where the change may or may not have landed: `verify-failed:timeout`
|
|
72
|
+
* finals, and keyed `intent` markers (whose holder may die mid-flight and
|
|
73
|
+
* leave exactly that ambiguity — #639). A resubmission carrying the same
|
|
74
|
+
* `opId` re-evaluates THIS assertion against current state to decide whether
|
|
75
|
+
* the change is there (replay it as already-applied) or absent (execute
|
|
76
|
+
* normally), so the presence test is the attempt's OWN oracle rather than a
|
|
77
|
+
* per-operation guess (`src/write/opid.ts`). Absent on every other record —
|
|
78
|
+
* and an absent one is a refusal to guess, never an assumption either way. A
|
|
79
|
+
* composite's summary intent is legitimately absent here when the verb's
|
|
80
|
+
* timeout point knows no oracle that could settle the question; that
|
|
81
|
+
* resubmission refuses rather than reconciling.
|
|
64
82
|
*/
|
|
65
83
|
expected?: DeltaSpec;
|
|
66
84
|
/**
|
package/dist/audit/schema.js
CHANGED
|
@@ -13,6 +13,27 @@
|
|
|
13
13
|
* no later final sibling is the signature of a crashed write. Intent records
|
|
14
14
|
* are NEVER undo targets — every undo reader filters `result === "ok"`, which
|
|
15
15
|
* an intent (result `"intent"`) is not, so it is excluded uniformly.
|
|
16
|
+
*
|
|
17
|
+
* WRITE-AHEAD INTENT (#639). An intent is not only crash evidence — for a
|
|
18
|
+
* mutation carrying an `opId` it is the record that makes the key's state
|
|
19
|
+
* READABLE while the write is still running. Such an intent is written under the
|
|
20
|
+
* mutation lock, before the first mutating leg, and carries two extra fields:
|
|
21
|
+
* {@link AuditRecord.holder} (the writing process's instance identity) and
|
|
22
|
+
* {@link AuditRecord.expected} (the presence oracle). Together they let a later
|
|
23
|
+
* reader distinguish the three states a key can be in — still running, holder
|
|
24
|
+
* gone with the outcome unrecorded, or settled by a final record — instead of
|
|
25
|
+
* collapsing the first two into one hedge. A COMPOSITE writes exactly ONE such
|
|
26
|
+
* intent, at the SUMMARY layer: the key addresses the whole verb, so its
|
|
27
|
+
* in-flight marker must too (its legs run with the key stripped and write only
|
|
28
|
+
* their own ordinary M3 intents).
|
|
29
|
+
*
|
|
30
|
+
* The shared `ts` is LOAD-BEARING, not incidental. It is what pairs an intent to
|
|
31
|
+
* its own attempt's final, and that pairing — not record order — is how a reader
|
|
32
|
+
* decides whether a key is still in flight: `readAuditRecords` re-sorts the trail
|
|
33
|
+
* by `ts`, so file order does not survive a read. A composite's intent is
|
|
34
|
+
* therefore stamped with the verb's `startedAt` rather than with the moment it
|
|
35
|
+
* took the lock; stamping it later sorted it after its own summary and left every
|
|
36
|
+
* finished promote reading as in flight (TORPH1 cell B).
|
|
16
37
|
*/
|
|
17
38
|
import { createHash } from "node:crypto";
|
|
18
39
|
/**
|
package/dist/audit/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/audit/schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/audit/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA+HzC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CACvB,MAA0E;IAE1E,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACzD,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,MAAM,CAAC,EAAE;QACT,MAAM,CAAC,EAAE;QACT,MAAM,CAAC,KAAK;QACZ,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,IAAI,IAAI,EAAE;KAClB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO,KAAK,MAAM,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -154,7 +154,7 @@ function syncHealthLines(sh, ui) {
|
|
|
154
154
|
];
|
|
155
155
|
if (ui?.state?.sheetOpen === true) {
|
|
156
156
|
lines.push("dialog: a dialog is open in Things, which stops the app sending changes to Things " +
|
|
157
|
-
"Cloud — anything written on this Mac stays here until it is dismissed");
|
|
157
|
+
"Cloud — anything written on this Mac stays here until it is dismissed", " next: `things rescue status` for what is open and whether it can be closed from here");
|
|
158
158
|
}
|
|
159
159
|
return lines;
|
|
160
160
|
}
|
|
@@ -231,6 +231,8 @@ function uiVectorLines(ui) {
|
|
|
231
231
|
`certification: ${certified} on-device + ${lab} lab-verified of ${total} (${ui.certificationProfile}) — ` +
|
|
232
232
|
"lab-verified recipes ran end-to-end in a disposable VM; on-device confirmation is the " +
|
|
233
233
|
"final step (docs/lab/ui-certification-runbook.md)",
|
|
234
|
+
" next: `things rescue status` when a command fails as if an item were missing — a " +
|
|
235
|
+
"dialog left open in Things produces exactly that",
|
|
234
236
|
];
|
|
235
237
|
}
|
|
236
238
|
export function registerDoctor(program) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,12 @@ export function registerOpResult(program) {
|
|
|
6
6
|
.description("Look up what happened to a write you dispatched with --op-id, from the local change " +
|
|
7
7
|
"history alone (opens no database, drives nothing). Use it to recover the outcome when " +
|
|
8
8
|
"your environment killed the command before it printed its result: let the command die, " +
|
|
9
|
-
"then run this. Reports FOUND (the final result + target + observation),
|
|
10
|
-
"op
|
|
11
|
-
"outcome UNCERTAIN), or UNKNOWN (no such op-id in
|
|
12
|
-
"account of how a change was driven through the
|
|
13
|
-
"as one that failed. Always exit 0 (a history
|
|
9
|
+
"then run this. Reports FOUND (the final result + target + observation), IN-FLIGHT (the " +
|
|
10
|
+
"op is still running — poll again, do not resubmit), ORPHANED (it started and its process " +
|
|
11
|
+
"ended without recording an outcome, which is UNCERTAIN), or UNKNOWN (no such op-id in " +
|
|
12
|
+
"history). Also reports the step-by-step account of how a change was driven through the " +
|
|
13
|
+
"app, for a change that succeeded as well as one that failed. Always exit 0 (a history " +
|
|
14
|
+
"read).")
|
|
14
15
|
.option("--json", "emit versioned JSON envelope on stdout")
|
|
15
16
|
.action((opId, opts) => {
|
|
16
17
|
const started = Date.now();
|
|
@@ -24,11 +25,16 @@ export function registerOpResult(program) {
|
|
|
24
25
|
process.stdout.write(`${JSON.stringify(okEnvelope("op-result", data, meta))}\n`);
|
|
25
26
|
}
|
|
26
27
|
else {
|
|
28
|
+
const target = data.uuid !== null ? ` (${data.uuid})` : "";
|
|
27
29
|
const head = data.status === "found"
|
|
28
|
-
? `${data.result} — ${data.op}${
|
|
29
|
-
: data.status === "
|
|
30
|
-
? `
|
|
31
|
-
:
|
|
30
|
+
? `${data.result} — ${data.op}${target}`
|
|
31
|
+
: data.status === "in-flight"
|
|
32
|
+
? `in flight since ${data.ts} — ${data.op}${target}, pid ${data.holder?.pid ?? "?"}`
|
|
33
|
+
: data.status === "orphaned"
|
|
34
|
+
? `started ${data.ts}, holder gone — outcome unrecorded for ${data.op}${target}`
|
|
35
|
+
: data.status === "intent-only"
|
|
36
|
+
? `intent-only — ${data.op}${target} (no final outcome recorded)`
|
|
37
|
+
: "unknown op-id";
|
|
32
38
|
process.stdout.write(`op-result ${opId}: ${head}\n`);
|
|
33
39
|
process.stdout.write(` ${data.note}\n`);
|
|
34
40
|
if (data.occurrence !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"op-result.js","sourceRoot":"","sources":["../../../src/cli/commands/op-result.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAEzE,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,QAAQ,CAAC,SAAS,EAAE,gDAAgD,CAAC;SACrE,WAAW,CACV,sFAAsF;QACpF,wFAAwF;QACxF,yFAAyF;QACzF,2FAA2F;QAC3F,wFAAwF;QACxF,
|
|
1
|
+
{"version":3,"file":"op-result.js","sourceRoot":"","sources":["../../../src/cli/commands/op-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* command with none of them behaves exactly as before.
|
|
7
7
|
*/
|
|
8
8
|
import type { Command } from "commander";
|
|
9
|
-
import type { AddRepeatingRuleFields, RepeatFrequency, RepeatRuleParams } from "../../index.ts";
|
|
9
|
+
import type { AddRepeatingRuleFields, RepeatFrequency, RepeatRuleParams, RescheduleRepeatParams } from "../../index.ts";
|
|
10
10
|
/** The extended fields (everything a rule carries beyond uuid/frequency/interval). */
|
|
11
11
|
export type RepeatRuleFlagFields = Omit<RepeatRuleParams, "uuid" | "frequency" | "interval">;
|
|
12
12
|
/** Attach the full-vocabulary options to a repeat command. */
|
|
@@ -21,6 +21,24 @@ export declare function addRepeatRuleFlags(cmd: Command): Command;
|
|
|
21
21
|
export declare function addRepeatCalendarFlags(cmd: Command): Command;
|
|
22
22
|
/** Map the calendar-anchor rule flags (add-repeating), excluding the base-add-owned fields. */
|
|
23
23
|
export declare function addRepeatingRuleFieldsFromOpts(opts: Record<string, unknown>, frequency: RepeatFrequency, interval: number): AddRepeatingRuleFields;
|
|
24
|
+
/**
|
|
25
|
+
* Build `reschedule-repeat` params from CLI options — the verb has TWO spellings
|
|
26
|
+
* and this is where they are told apart:
|
|
27
|
+
*
|
|
28
|
+
* - `--frequency` + `--interval` (+ any rule flags) → restate the rule.
|
|
29
|
+
* - `--when <date>` ALONE → move the series' next occurrence, keeping the rule.
|
|
30
|
+
*
|
|
31
|
+
* Half a rule, a rule flag with no frequency, and an empty call are refused with
|
|
32
|
+
* a usage message rather than partially applied (UIC6-l: never silently drop a
|
|
33
|
+
* flag the caller passed).
|
|
34
|
+
*/
|
|
35
|
+
export declare function rescheduleParamsFromOpts(uuid: string, opts: Record<string, unknown>): {
|
|
36
|
+
kind: "ok";
|
|
37
|
+
params: RescheduleRepeatParams;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "error";
|
|
40
|
+
message: string;
|
|
41
|
+
};
|
|
24
42
|
/**
|
|
25
43
|
* Build the extended rule fields from CLI options (present keys only —
|
|
26
44
|
* exactOptionalPropertyTypes). A wrong-frequency anchor flag is REFUSED here
|
|
@@ -165,6 +165,77 @@ const FLAG_MAP = {
|
|
|
165
165
|
deadline: (opts) => (opts["deadline"] === true ? true : undefined),
|
|
166
166
|
startDaysEarlier: (opts) => opts["startDaysEarlier"] !== undefined ? Number(opts["startDaysEarlier"]) : undefined,
|
|
167
167
|
};
|
|
168
|
+
/**
|
|
169
|
+
* Every rule flag's CLI spelling, keyed by its commander option name — the
|
|
170
|
+
* "did the caller ask for a rule change?" test for `reschedule-repeat`, whose
|
|
171
|
+
* bare `--when` spelling carries none of them. Exhaustive over the flags
|
|
172
|
+
* {@link addRepeatRuleFlags} attaches (minus `--when` itself), so a new flag has
|
|
173
|
+
* to be classified here before it can be silently accepted-and-dropped.
|
|
174
|
+
*/
|
|
175
|
+
const RULE_FLAG_SPELLINGS = {
|
|
176
|
+
afterCompletion: "--after-completion",
|
|
177
|
+
weekdays: "--weekdays",
|
|
178
|
+
onDay: "--on-day",
|
|
179
|
+
onWeekday: "--on-weekday",
|
|
180
|
+
onOrdinal: "--on-ordinal",
|
|
181
|
+
yearlyMonth: "--yearly-month",
|
|
182
|
+
endsAfter: "--ends-after",
|
|
183
|
+
endsOn: "--ends-on",
|
|
184
|
+
reminder: "--reminder",
|
|
185
|
+
deadline: "--deadline",
|
|
186
|
+
startDaysEarlier: "--start-days-earlier",
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Build `reschedule-repeat` params from CLI options — the verb has TWO spellings
|
|
190
|
+
* and this is where they are told apart:
|
|
191
|
+
*
|
|
192
|
+
* - `--frequency` + `--interval` (+ any rule flags) → restate the rule.
|
|
193
|
+
* - `--when <date>` ALONE → move the series' next occurrence, keeping the rule.
|
|
194
|
+
*
|
|
195
|
+
* Half a rule, a rule flag with no frequency, and an empty call are refused with
|
|
196
|
+
* a usage message rather than partially applied (UIC6-l: never silently drop a
|
|
197
|
+
* flag the caller passed).
|
|
198
|
+
*/
|
|
199
|
+
export function rescheduleParamsFromOpts(uuid, opts) {
|
|
200
|
+
const frequency = opts["frequency"];
|
|
201
|
+
const interval = opts["interval"];
|
|
202
|
+
const when = opts["when"];
|
|
203
|
+
if (frequency === undefined && interval === undefined) {
|
|
204
|
+
const extras = Object.keys(RULE_FLAG_SPELLINGS)
|
|
205
|
+
.filter((key) => opts[key] !== undefined)
|
|
206
|
+
.map((key) => RULE_FLAG_SPELLINGS[key]);
|
|
207
|
+
if (extras.length > 0) {
|
|
208
|
+
return {
|
|
209
|
+
kind: "error",
|
|
210
|
+
message: `${extras.join(", ")} changes the rule, so --frequency and --interval are required with it`,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
if (typeof when !== "string") {
|
|
214
|
+
return {
|
|
215
|
+
kind: "error",
|
|
216
|
+
message: "nothing to change — give --when <date> to move the next occurrence, or --frequency " +
|
|
217
|
+
"and --interval to set a new rule",
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
return { kind: "ok", params: { uuid, next: when } };
|
|
221
|
+
}
|
|
222
|
+
if (frequency === undefined || interval === undefined) {
|
|
223
|
+
return {
|
|
224
|
+
kind: "error",
|
|
225
|
+
message: "--frequency and --interval go together — give both to set a new rule, or neither " +
|
|
226
|
+
"(just --when <date>) to move the next occurrence",
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
kind: "ok",
|
|
231
|
+
params: {
|
|
232
|
+
uuid,
|
|
233
|
+
frequency,
|
|
234
|
+
interval: Number(interval),
|
|
235
|
+
...repeatRuleFlagsFromOpts(opts, frequency),
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
}
|
|
168
239
|
/**
|
|
169
240
|
* Build the extended rule fields from CLI options (present keys only —
|
|
170
241
|
* exactOptionalPropertyTypes). A wrong-frequency anchor flag is REFUSED here
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repeat-flags.js","sourceRoot":"","sources":["../../../src/cli/commands/repeat-flags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repeat-flags.js","sourceRoot":"","sources":["../../../src/cli/commands/repeat-flags.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `things rescue` — the emergency surface for a Things that is up, answering,
|
|
3
|
+
* and unusable (issue #640). Thin surface over the library's rescueStatus() /
|
|
4
|
+
* rescueDismiss() / rescueRelaunch().
|
|
5
|
+
*
|
|
6
|
+
* Exit codes carry the shape a script needs: `status` is always 0 (a wedged
|
|
7
|
+
* machine is a reported state, not a command failure); an action that refused
|
|
8
|
+
* before touching anything exits 4; an action that acted and could not finish
|
|
9
|
+
* exits 3.
|
|
10
|
+
*/
|
|
11
|
+
import type { Command } from "commander";
|
|
12
|
+
export declare function registerRescue(program: Command): void;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ExitCode, okEnvelope, rescueDismiss, rescueDismissLines, rescueRelaunch, rescueRelaunchLines, rescueStatus, rescueStatusLines, } from "../../index.js";
|
|
2
|
+
function meta(started) {
|
|
3
|
+
return { dbVersion: null, fingerprint: "unknown", elapsedMs: Date.now() - started };
|
|
4
|
+
}
|
|
5
|
+
function emit(json, kind, data, lines, started) {
|
|
6
|
+
if (json === true) {
|
|
7
|
+
process.stdout.write(`${JSON.stringify(okEnvelope(kind, data, meta(started)))}\n`);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function registerRescue(program) {
|
|
14
|
+
const rescue = program
|
|
15
|
+
.command("rescue")
|
|
16
|
+
.description("Get an unresponsive Things moving again. A dialog left open in Things stops the app " +
|
|
17
|
+
"sending changes to Things Cloud and makes it answer that items you can plainly see are " +
|
|
18
|
+
"not there — so commands fail in ways that look like missing data. Subcommands: status, " +
|
|
19
|
+
"dismiss, relaunch.");
|
|
20
|
+
rescue
|
|
21
|
+
.command("status")
|
|
22
|
+
.description("Report what is stuck: whether a dialog is open in Things and which one, how many are " +
|
|
23
|
+
"stacked, which application owns the keyboard, and whether another command is holding the " +
|
|
24
|
+
"change lock (and for how long). Reads only — nothing is clicked, closed or quit. Names " +
|
|
25
|
+
"the owning application when a dialog belongs to macOS rather than to Things, since " +
|
|
26
|
+
"nothing here may touch one of those. Always exit 0.")
|
|
27
|
+
.option("--json", "emit versioned JSON envelope on stdout")
|
|
28
|
+
.action(async (opts) => {
|
|
29
|
+
const started = Date.now();
|
|
30
|
+
const report = await rescueStatus();
|
|
31
|
+
emit(opts.json, "rescue-status", report, rescueStatusLines(report), started);
|
|
32
|
+
process.exitCode = ExitCode.Ok;
|
|
33
|
+
});
|
|
34
|
+
rescue
|
|
35
|
+
.command("dismiss")
|
|
36
|
+
.description("Close the dialog in front by pressing its own Cancel button, discarding whatever was " +
|
|
37
|
+
"typed into it — the database is not touched. Closes exactly one: dialogs stack, they " +
|
|
38
|
+
"close one at a time, and the result says how many are left. Refuses without pressing " +
|
|
39
|
+
"anything when the dialog is one it cannot identify, when it belongs to macOS rather " +
|
|
40
|
+
"than to Things, or when the screen cannot be read. Reports honestly when the dialog " +
|
|
41
|
+
"ignores its own Cancel, which some do.")
|
|
42
|
+
.option("--dangerously-dismiss-dialog", "required: closes the open dialog and discards anything typed into it; also needs " +
|
|
43
|
+
"`things config set ui-enabled true`")
|
|
44
|
+
.option("--json", "emit versioned JSON envelope on stdout")
|
|
45
|
+
.action(async (opts) => {
|
|
46
|
+
const started = Date.now();
|
|
47
|
+
const result = await rescueDismiss({
|
|
48
|
+
dangerouslyDismissDialog: opts.dangerouslyDismissDialog === true,
|
|
49
|
+
});
|
|
50
|
+
emit(opts.json, "rescue-dismiss", result, rescueDismissLines(result), started);
|
|
51
|
+
process.exitCode =
|
|
52
|
+
result.outcome === "dismissed" || result.outcome === "no-dialog"
|
|
53
|
+
? ExitCode.Ok
|
|
54
|
+
: result.outcome === "refused"
|
|
55
|
+
? ExitCode.Blocked
|
|
56
|
+
: ExitCode.VerifyFailed;
|
|
57
|
+
});
|
|
58
|
+
rescue
|
|
59
|
+
.command("relaunch")
|
|
60
|
+
.description("Quit Things and start it again in the background. Everything already saved survives; " +
|
|
61
|
+
"anything typed into an open dialog and not saved is lost. Use it when a dialog will not " +
|
|
62
|
+
"close: this is the only thing known to clear one of those, and it also releases the " +
|
|
63
|
+
"changes Things has been holding back from Things Cloud. On a machine set up as a " +
|
|
64
|
+
"workstation it needs a second flag, since someone may be sitting in front of the dialog.")
|
|
65
|
+
.option("--yes", "required: quit Things and start it again")
|
|
66
|
+
.option("--dangerously-force-quit", "also required on a workstation: quit Things even though someone may be using it")
|
|
67
|
+
.option("--json", "emit versioned JSON envelope on stdout")
|
|
68
|
+
.action(async (opts) => {
|
|
69
|
+
const started = Date.now();
|
|
70
|
+
const result = await rescueRelaunch({
|
|
71
|
+
yes: opts.yes === true,
|
|
72
|
+
dangerouslyForceQuit: opts.dangerouslyForceQuit === true,
|
|
73
|
+
});
|
|
74
|
+
emit(opts.json, "rescue-relaunch", result, rescueRelaunchLines(result), started);
|
|
75
|
+
process.exitCode =
|
|
76
|
+
result.outcome === "relaunched"
|
|
77
|
+
? ExitCode.Ok
|
|
78
|
+
: result.outcome === "refused"
|
|
79
|
+
? ExitCode.Blocked
|
|
80
|
+
: ExitCode.VerifyFailed;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=rescue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rescue.js","sourceRoot":"","sources":["../../../src/cli/commands/rescue.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { readFileSync } from "node:fs";
|
|
|
10
10
|
import { armInterrupt, disarmInterrupt } from "../interrupt.js";
|
|
11
11
|
import { isDevVersion } from "../skill.js";
|
|
12
12
|
import { CLI_VERSION } from "../version.js";
|
|
13
|
-
import { addRepeatCalendarFlags, addRepeatingRuleFieldsFromOpts, addRepeatRuleFlags, repeatRuleFlagsFromOpts, } from "./repeat-flags.js";
|
|
13
|
+
import { addRepeatCalendarFlags, addRepeatingRuleFieldsFromOpts, addRepeatRuleFlags, repeatRuleFlagsFromOpts, rescheduleParamsFromOpts, } from "./repeat-flags.js";
|
|
14
14
|
import { aggregateExitCode, blockedCode, buildUpdatePatch, capabilitiesTable, CLI_UPDATE_LABELS, ClockError, closeCliTrace, describeConfig, errorEnvelope, ExitCode, HELPERS_MODES, installCliTrace, getConfigKey, parseHelpersMode, mutationWireData, NOTES_FORMAT, okEnvelope, openThings, OP_ID_RE, outcomeFailed, ParamSchemaError, ReferenceResolutionError, RESOLUTION_DATE_FORMAT, saveConfigKey, splitWhenSugar, trace, ThingsDbNotFoundError, ThingsDbOpenError, verifyFailedCode, } from "../../index.js";
|
|
15
15
|
import { usageError } from "../read-driver.js";
|
|
16
16
|
import { dim } from "../style.js";
|
|
@@ -1355,18 +1355,23 @@ export function registerWriteCommands(program) {
|
|
|
1355
1355
|
});
|
|
1356
1356
|
addDriveGuiFlag(addRepeatRuleFlags(addWriteFlags(todo
|
|
1357
1357
|
.command("reschedule-repeat <uuid>")
|
|
1358
|
-
.description("Change an existing repeating to-do
|
|
1359
|
-
"
|
|
1360
|
-
"restores the previous
|
|
1361
|
-
.
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1358
|
+
.description("Change an existing repeating to-do in place (the item keeps its identity). Two " +
|
|
1359
|
+
"spellings: with --frequency and --interval it sets a new rule (see `things help " +
|
|
1360
|
+
"repeating`), driving the app's interface, and `things undo` restores the previous " +
|
|
1361
|
+
"rule. With --when <date> ALONE it MOVES the series to that date instead, keeping " +
|
|
1362
|
+
"the rule and needing no --dangerously-drive-gui — the whole series moves (a weekly " +
|
|
1363
|
+
"item moved to a Thursday repeats on Thursdays), occurrences due before that date " +
|
|
1364
|
+
"never appear, and it cannot be undone here. Moving needs a date after today, a " +
|
|
1365
|
+
"series that is not paused, does not repeat after completion, and does not repeat " +
|
|
1366
|
+
"on several weekdays; Things 3.23 or later.")
|
|
1367
|
+
.option("--frequency <freq>", REPEAT_FREQ_HELP)
|
|
1368
|
+
.option("--interval <n>", REPEAT_INTERVAL_HELP)))).action(async (uuid, opts) => {
|
|
1369
|
+
const built = rescheduleParamsFromOpts(uuid, opts);
|
|
1370
|
+
if (built.kind === "error") {
|
|
1371
|
+
usageError(opts, built.message);
|
|
1372
|
+
return;
|
|
1373
|
+
}
|
|
1374
|
+
await runWrite(opts, (c) => c.write.run("todo.reschedule-repeat", built.params, writeOptionsFrom(opts)));
|
|
1370
1375
|
});
|
|
1371
1376
|
for (const [verb, op, desc] of [
|
|
1372
1377
|
[
|
|
@@ -1541,18 +1546,23 @@ export function registerWriteCommands(program) {
|
|
|
1541
1546
|
// --- ui vector: repeating-project transforms (two-key gated) -------------
|
|
1542
1547
|
addDriveGuiFlag(addRepeatRuleFlags(addWriteFlags(project
|
|
1543
1548
|
.command("reschedule-repeat <ref>")
|
|
1544
|
-
.description("Change an existing repeating project
|
|
1545
|
-
"
|
|
1546
|
-
"`things help repeating
|
|
1547
|
-
.
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1549
|
+
.description("Change an existing repeating project in place (target by uuid or unique name; the " +
|
|
1550
|
+
"project keeps its identity). With --frequency and --interval it sets a new rule " +
|
|
1551
|
+
"(see `things help repeating`), driving the app's interface, and `things undo` " +
|
|
1552
|
+
"restores the previous rule. With --when <date> ALONE it MOVES the series to that " +
|
|
1553
|
+
"date instead, keeping the rule and needing no --dangerously-drive-gui — the whole " +
|
|
1554
|
+
"series moves, occurrences due before that date never appear, and it cannot be " +
|
|
1555
|
+
"undone here. Same conditions as the to-do verb: a date after today, a series that " +
|
|
1556
|
+
"is not paused, does not repeat after completion, and does not repeat on several " +
|
|
1557
|
+
"weekdays; Things 3.23 or later.")
|
|
1558
|
+
.option("--frequency <freq>", REPEAT_FREQ_HELP)
|
|
1559
|
+
.option("--interval <n>", REPEAT_INTERVAL_HELP)))).action(async (uuid, opts) => {
|
|
1560
|
+
const built = rescheduleParamsFromOpts(uuid, opts);
|
|
1561
|
+
if (built.kind === "error") {
|
|
1562
|
+
usageError(opts, built.message);
|
|
1563
|
+
return;
|
|
1564
|
+
}
|
|
1565
|
+
await runWrite(opts, (c) => c.write.run("project.reschedule-repeat", built.params, writeOptionsFrom(opts)));
|
|
1556
1566
|
});
|
|
1557
1567
|
for (const [verb, op, desc] of [
|
|
1558
1568
|
[
|