things-api 0.19.4 → 0.20.1
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 +26 -9
- package/dist/model/mappers.js.map +1 -1
- package/dist/model/today-placement.d.ts +65 -0
- package/dist/model/today-placement.js +59 -0
- package/dist/model/today-placement.js.map +1 -0
- 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 +138 -51
- package/dist/write/commands.js.map +1 -1
- package/dist/write/disclosures.d.ts +24 -0
- package/dist/write/disclosures.js +24 -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 +130 -8
- 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/move.js +33 -6
- package/dist/write/move.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 +206 -43
- 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/pre-state.d.ts +9 -9
- package/dist/write/pre-state.js +44 -38
- package/dist/write/pre-state.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/reorder.js +28 -7
- package/dist/write/reorder.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/types.d.ts +10 -0
- package/dist/write/vectors/ui-drag.d.ts +102 -0
- package/dist/write/vectors/ui-drag.js +425 -11
- package/dist/write/vectors/ui-drag.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 +29 -1
- package/dist/write/vectors/ui.js +57 -5
- 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
|
@@ -47,8 +47,9 @@ export function classifyTransportFailure(input) {
|
|
|
47
47
|
"that IS there whenever a dialog is open somewhere in the app: while one stands, Things " +
|
|
48
48
|
"reports its own lists as empty to scripted callers, so a change addressed by id cannot " +
|
|
49
49
|
"resolve. It also stops sending changes to Things Cloud until the dialog is dismissed. " +
|
|
50
|
-
"Run `things
|
|
51
|
-
"
|
|
50
|
+
"Run `things rescue status` to see what is open and whether it can be closed from here, " +
|
|
51
|
+
"`things rescue dismiss` to close it, then run the same command again — nothing was " +
|
|
52
|
+
"changed." +
|
|
52
53
|
environmentSuffix(input.environmentChanges),
|
|
53
54
|
};
|
|
54
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-hints.js","sourceRoot":"","sources":["../../src/write/failure-hints.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,0BAA0B,EAA0B,MAAM,kBAAkB,CAAC;AA0BtF,MAAM,MAAM,GAAG,+CAA+C,CAAC;AAC/D,MAAM,eAAe,GAAG,wBAAwB,CAAC;AACjD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,GAAG,qDAAqD,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,IAAI,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACjG,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA4B;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,CACL,mCAAmC,0BAA0B,CAAC,OAAO,CAAC,KAAK;QAC3E,4DAA4D,CAC7D,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CAAC,KAKxC;IACC,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,OAAO;YACL,WAAW,EAAE,mBAAmB;YAChC,IAAI,EACF,qFAAqF;gBACrF,qFAAqF;gBACrF,wDAAwD;gBACxD,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,CAAC;SAC9C,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,OAAO;YACL,WAAW,EAAE,YAAY;YACzB,IAAI,EACF,sFAAsF;gBACtF,yFAAyF;gBACzF,yFAAyF;gBACzF,wFAAwF;gBACxF,
|
|
1
|
+
{"version":3,"file":"failure-hints.js","sourceRoot":"","sources":["../../src/write/failure-hints.ts"],"names":[],"mappings":"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"}
|
package/dist/write/guards.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Acknowledgements, type OperationKind } from "./operations.ts";
|
|
2
2
|
import { type PreState } from "./pre-state.ts";
|
|
3
|
-
export declare const HAZARD_IDS: readonly ["H-REPEAT-SCHEDULE", "H-TEMPLATE-CHILD-RESTORE", "H-PROJECT-COMPLETE-CHILDREN", "H-CHECKLIST-REPLACE", "H-REOPEN-RESOLVED-PROJECT", "H-UNKNOWN-TAG", "H-UNKNOWN-DESTINATION", "H-AMBIGUOUS-HEADING", "H-PERMANENT-DELETE", "H-AREA-NOT-EMPTY", "H-REORDER-SCOPE", "H-REMINDER-SCOPE", "H-TAG-SUBTREE-DELETE", "H-BACKDATE-OPEN", "H-HEADING-CHILDREN", "H-HEADING-ORDER", "H-NO-REMINDER", "H-UI-DRIVE", "H-PROJECT-REPEAT", "H-CLONE-SOURCE", "H-UI-SESSION-UNREACHABLE"];
|
|
3
|
+
export declare const HAZARD_IDS: readonly ["H-REPEAT-SCHEDULE", "H-TEMPLATE-CHILD-RESTORE", "H-PROJECT-COMPLETE-CHILDREN", "H-CHECKLIST-REPLACE", "H-REOPEN-RESOLVED-PROJECT", "H-UNKNOWN-TAG", "H-UNKNOWN-DESTINATION", "H-AMBIGUOUS-HEADING", "H-PERMANENT-DELETE", "H-AREA-NOT-EMPTY", "H-REORDER-SCOPE", "H-REMINDER-SCOPE", "H-TAG-SUBTREE-DELETE", "H-BACKDATE-OPEN", "H-HEADING-CHILDREN", "H-HEADING-ORDER", "H-NO-REMINDER", "H-UI-DRIVE", "H-REPEAT-REANCHOR", "H-PROJECT-REPEAT", "H-CLONE-SOURCE", "H-UI-SESSION-UNREACHABLE"];
|
|
4
4
|
export type HazardId = (typeof HAZARD_IDS)[number];
|
|
5
5
|
export interface GuardBlock {
|
|
6
6
|
hazard: HazardId;
|
package/dist/write/guards.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* result means the app was never touched.
|
|
5
5
|
*/
|
|
6
6
|
import { noUuidMatch } from "../read/queries.js";
|
|
7
|
-
import { isHeadingOp, isHeadingTargetOp,
|
|
7
|
+
import { drivesGuiForParams, isHeadingOp, isHeadingTargetOp, isRepeatReanchor, } from "./operations.js";
|
|
8
8
|
import { isRepeatingTemplate } from "./pre-state.js";
|
|
9
9
|
export const HAZARD_IDS = [
|
|
10
10
|
"H-REPEAT-SCHEDULE",
|
|
@@ -25,6 +25,7 @@ export const HAZARD_IDS = [
|
|
|
25
25
|
"H-HEADING-ORDER",
|
|
26
26
|
"H-NO-REMINDER",
|
|
27
27
|
"H-UI-DRIVE",
|
|
28
|
+
"H-REPEAT-REANCHOR",
|
|
28
29
|
"H-PROJECT-REPEAT",
|
|
29
30
|
"H-CLONE-SOURCE",
|
|
30
31
|
// A RUNTIME gate, not a pre-read guard: a dialog-class ui-drive op refuses when
|
|
@@ -43,15 +44,18 @@ export const HAZARD_IDS = [
|
|
|
43
44
|
* disclosure and emits no undo token. `todo.restore`/`project.restore` STAY here
|
|
44
45
|
* but take a dedicated Put-Back message (a trashed template cannot be revived
|
|
45
46
|
* headlessly — AS move-to-Inbox → 301, RSIM-S S-R3).
|
|
47
|
+
*
|
|
48
|
+
* NB: `todo.move`/`project.move` are NOT here either — a template's CONTAINER is
|
|
49
|
+
* independently mutable (TMOV1, 2026-08-29; the fence they used to sit behind was
|
|
50
|
+
* a placeholder over an unprobed cell). The one move shape the app refuses is the
|
|
51
|
+
* built-in-LIST destination, handled below.
|
|
46
52
|
*/
|
|
47
53
|
const REPEAT_SENSITIVE = new Set([
|
|
48
54
|
"todo.complete",
|
|
49
55
|
"todo.cancel",
|
|
50
56
|
"todo.reopen",
|
|
51
|
-
"todo.move",
|
|
52
57
|
"todo.duplicate", // unvalidated on templates (E07 probed a plain to-do)
|
|
53
58
|
"todo.restore", // a trashed template cannot be restored headlessly (Put Back only)
|
|
54
|
-
"project.move", // unvalidated on repeating projects (E14 probed a plain project)
|
|
55
59
|
"project.duplicate", // unvalidated on repeating projects (E17 probed a plain project)
|
|
56
60
|
"project.cancel", // unvalidated on repeating projects (P01 probed a plain project)
|
|
57
61
|
"project.reopen", // unvalidated on repeating projects (P02/P05 probed plain projects)
|
|
@@ -74,6 +78,26 @@ const GUARDS = {
|
|
|
74
78
|
"and resumes its schedule",
|
|
75
79
|
};
|
|
76
80
|
}
|
|
81
|
+
// A CONTAINER move is not a schedule write and the app treats it as such
|
|
82
|
+
// (TMOV1, 2026-08-29, golden-v4 / Things 3.23): project↔project, project↔area
|
|
83
|
+
// and container↔loose all land on a template on BOTH vectors, leaving the rule
|
|
84
|
+
// blob byte-identical and both spawn cursors, the spawn tally and `start`
|
|
85
|
+
// untouched — the only columns that move are the container FK and `umd`. What
|
|
86
|
+
// the app does refuse is the built-in-LIST destination: `move … to list
|
|
87
|
+
// "Inbox"` on a template errors 301 with zero row delta, the same wall RSIM-S
|
|
88
|
+
// §S4/§S-R3 measured on a template-side CHILD. So the Inbox return is the one
|
|
89
|
+
// move shape still fenced, and it is fenced by DESTINATION, not by op kind.
|
|
90
|
+
if (op === "todo.move") {
|
|
91
|
+
if (params["inbox"] !== true)
|
|
92
|
+
return null;
|
|
93
|
+
return {
|
|
94
|
+
hazard: "H-REPEAT-SCHEDULE",
|
|
95
|
+
detail: "the target is a repeating template, and the app refuses to move one to a built-in " +
|
|
96
|
+
"list — the Inbox return errors 301 and changes nothing (TMOV1 C1/C3)",
|
|
97
|
+
remediation: "move the series to a project or an area instead (`--to-project` / `--to-area`), or " +
|
|
98
|
+
"detach it from every container with `--loose`",
|
|
99
|
+
};
|
|
100
|
+
}
|
|
77
101
|
const touchesSchedule = op === "todo.update" && (params["when"] !== undefined || params["deadline"] !== undefined);
|
|
78
102
|
if (!touchesSchedule && !REPEAT_SENSITIVE.has(op))
|
|
79
103
|
return null;
|
|
@@ -96,9 +120,9 @@ const GUARDS = {
|
|
|
96
120
|
return {
|
|
97
121
|
hazard: "H-REPEAT-SCHEDULE",
|
|
98
122
|
detail: "target is a repeating template: URL scheduling writes crash Things (T12/U12); " +
|
|
99
|
-
"status
|
|
100
|
-
remediation: "edit the repeat rule in the Things app; title/notes updates
|
|
101
|
-
"
|
|
123
|
+
"status writes on templates are unvalidated",
|
|
124
|
+
remediation: "edit the repeat rule in the Things app; title/notes updates, checklist replacement " +
|
|
125
|
+
"and container moves remain allowed on templates",
|
|
102
126
|
};
|
|
103
127
|
},
|
|
104
128
|
"H-TEMPLATE-CHILD-RESTORE": ({ op, pre }) => {
|
|
@@ -551,8 +575,106 @@ const GUARDS = {
|
|
|
551
575
|
: "target an open, un-trashed project";
|
|
552
576
|
return { hazard: "H-PROJECT-REPEAT", detail: tax.detail, remediation };
|
|
553
577
|
},
|
|
554
|
-
|
|
555
|
-
|
|
578
|
+
/**
|
|
579
|
+
* The series RE-ANCHOR's preconditions (REANCH1 §8, docs/lab/reanch1-url-reanchor.md
|
|
580
|
+
* — re-verified by REANCH2). The bare `reschedule-repeat --when <date>` spelling
|
|
581
|
+
* dispatches ONE `things:///update?when=<date>` at a repeating template, which on
|
|
582
|
+
* Things 3.23 rewrites both cursor columns AND the rule's calendar anchor. Three of
|
|
583
|
+
* its edges KILL the app and two more corrupt the series silently, so every one is
|
|
584
|
+
* refused here — before anything is dispatched. Fires only for the re-anchor
|
|
585
|
+
* spelling; a rule restatement drives the dialog and is bound by its own validation.
|
|
586
|
+
*/
|
|
587
|
+
"H-REPEAT-REANCHOR": ({ op, params, pre }) => {
|
|
588
|
+
if (op !== "todo.reschedule-repeat" && op !== "project.reschedule-repeat")
|
|
589
|
+
return null;
|
|
590
|
+
if (!isRepeatReanchor(params))
|
|
591
|
+
return null;
|
|
592
|
+
const target = pre.target;
|
|
593
|
+
// A non-template target is the dangerous case, not a harmless one: the SAME
|
|
594
|
+
// url on an ordinary row is an ordinary schedule write, so it would silently
|
|
595
|
+
// re-schedule the item instead of refusing. (Existence and row-type-vs-verb
|
|
596
|
+
// are already H-UNKNOWN-DESTINATION's, which is why the route can never be
|
|
597
|
+
// the wrong one here — REANCH1 §4.1's silent no-op.)
|
|
598
|
+
if (!isRepeatingTemplate(target) || target === null || target.type === "heading") {
|
|
599
|
+
return {
|
|
600
|
+
hazard: "H-REPEAT-REANCHOR",
|
|
601
|
+
detail: "this item does not repeat, so it has no next occurrence to move",
|
|
602
|
+
remediation: "schedule it with `things todo update <ref> --when <date>`, or make it repeating first",
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
const next = params["next"];
|
|
606
|
+
const today = pre.todayIso;
|
|
607
|
+
if (typeof next !== "string" || typeof today !== "string") {
|
|
608
|
+
return {
|
|
609
|
+
hazard: "H-REPEAT-REANCHOR",
|
|
610
|
+
detail: "moving the next occurrence needs a concrete date",
|
|
611
|
+
remediation: "give a date as YYYY-MM-DD",
|
|
612
|
+
};
|
|
613
|
+
}
|
|
614
|
+
// STRICTLY future, against THIS MACHINE's current day, checked as late as the
|
|
615
|
+
// pipeline allows (a request composed before midnight and dispatched after it
|
|
616
|
+
// changes class). A date equal to today is as fatal as the word `today`:
|
|
617
|
+
// both kill the process outright, leaving the row untouched (REANCH1 §5,
|
|
618
|
+
// oddities §1). ISO day strings compare chronologically.
|
|
619
|
+
if (next <= today) {
|
|
620
|
+
return {
|
|
621
|
+
hazard: "H-REPEAT-REANCHOR",
|
|
622
|
+
detail: `${next} is ${next === today ? "today" : "in the past"} — a series can only be moved to a future day`,
|
|
623
|
+
remediation: "give a date after today",
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
if (target.repeating.paused === true) {
|
|
627
|
+
return {
|
|
628
|
+
hazard: "H-REPEAT-REANCHOR",
|
|
629
|
+
detail: "this series is paused, so where its next occurrence lands is not yet settled",
|
|
630
|
+
remediation: "resume it first with `things todo resume-repeat <ref>`, then move it",
|
|
631
|
+
};
|
|
632
|
+
}
|
|
633
|
+
const rule = target.repeating.rule;
|
|
634
|
+
if (rule === undefined) {
|
|
635
|
+
return {
|
|
636
|
+
hazard: "H-REPEAT-REANCHOR",
|
|
637
|
+
detail: "this series' repeat rule could not be read, so the move cannot be checked first",
|
|
638
|
+
remediation: "restate the rule instead: `things todo reschedule-repeat <ref> --frequency <freq> " +
|
|
639
|
+
"--interval <n> --when <date> --dangerously-drive-gui`",
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
// An after-completion rule has no calendar anchor at all (its next-occurrence
|
|
643
|
+
// column is NULL until an instance resolves), and the dated write takes the
|
|
644
|
+
// unguarded branch and kills the app, 2/2 (REANCH1 §4.2, oddities §15).
|
|
645
|
+
if (rule.type === "after-completion") {
|
|
646
|
+
return {
|
|
647
|
+
hazard: "H-REPEAT-REANCHOR",
|
|
648
|
+
detail: "this series repeats a set time AFTER each occurrence is completed, so it has no " +
|
|
649
|
+
"calendar day to move",
|
|
650
|
+
remediation: "complete or cancel the current occurrence to start the next interval, or give it a " +
|
|
651
|
+
"fixed schedule with `things todo reschedule-repeat <ref> --frequency <freq> " +
|
|
652
|
+
"--interval <n> --dangerously-drive-gui`",
|
|
653
|
+
};
|
|
654
|
+
}
|
|
655
|
+
// A rule that fires on SEVERAL weekdays comes back firing on different ones:
|
|
656
|
+
// {Mon, Wed, Fri} moved to a Thursday returns {Wed, Thu, Fri} — same count,
|
|
657
|
+
// two days the user never chose (REANCH1 §7, oddities §16). Nothing can be
|
|
658
|
+
// honestly disclosed about the result, so the write is refused.
|
|
659
|
+
const weekdayCount = rule.offsets.filter((o) => o.weekday !== undefined).length;
|
|
660
|
+
if (weekdayCount > 1) {
|
|
661
|
+
return {
|
|
662
|
+
hazard: "H-REPEAT-REANCHOR",
|
|
663
|
+
detail: `this series repeats on ${weekdayCount} days of the week, and moving it would change ` +
|
|
664
|
+
"which days those are",
|
|
665
|
+
remediation: "restate the rule instead, naming the days you want: `things todo reschedule-repeat " +
|
|
666
|
+
"<ref> --frequency weekly --interval <n> --weekdays <days> --when <date> " +
|
|
667
|
+
"--dangerously-drive-gui`",
|
|
668
|
+
};
|
|
669
|
+
}
|
|
670
|
+
return null;
|
|
671
|
+
},
|
|
672
|
+
"H-UI-DRIVE": ({ op, params, acks }) => {
|
|
673
|
+
// The GUI-drive gate rides the SPELLING, not the verb: a bare
|
|
674
|
+
// `reschedule-repeat --when <date>` re-anchor is one URL dispatch and drives
|
|
675
|
+
// no GUI, so it carries no acknowledgement (its own preconditions are
|
|
676
|
+
// H-REPEAT-REANCHOR's). Every other ui-vector call still needs both keys.
|
|
677
|
+
if (!drivesGuiForParams(op, params) || acks.dangerouslyDriveGui === true)
|
|
556
678
|
return null;
|
|
557
679
|
return {
|
|
558
680
|
hazard: "H-UI-DRIVE",
|
package/dist/write/guards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/write/guards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/write/guards.ts"],"names":[],"mappings":"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"}
|
package/dist/write/lock.d.ts
CHANGED
|
@@ -1,7 +1,91 @@
|
|
|
1
1
|
import { mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
|
+
/** Who holds the lock, and since when — the lockfile's whole payload. */
|
|
3
|
+
export interface LockHolder {
|
|
4
|
+
pid: number;
|
|
5
|
+
/** ISO-8601 instant the holder took the lock. */
|
|
6
|
+
ts: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* How long a LIVE holder may hold the lock before a refusal is allowed to say
|
|
10
|
+
* the process may be hung (issue #640).
|
|
11
|
+
*
|
|
12
|
+
* The number has to sit above every legitimate hold, because the sentence it
|
|
13
|
+
* unlocks invites the reader to kill the holder — and killing a working drive
|
|
14
|
+
* is a worse outcome than a late diagnosis. The longest legitimate hold is a
|
|
15
|
+
* COMPOSITE with a GUI leg: measured at 3.7s on a golden clone (DRVLAT1), and
|
|
16
|
+
* the `--dangerously-drive-gui` copy already warns a field host can take "over
|
|
17
|
+
* a minute on a large database". Five minutes is an order of magnitude past
|
|
18
|
+
* that, so a holder still standing at five minutes is not slow — it is stuck,
|
|
19
|
+
* or it is a pid whose process died in a way `kill(pid, 0)` cannot see.
|
|
20
|
+
*/
|
|
21
|
+
export declare const LOCK_HOLDER_SUSPECT_MS: number;
|
|
2
22
|
export declare class MutationLockError extends Error {
|
|
3
|
-
|
|
23
|
+
/**
|
|
24
|
+
* The holder the wait timed out against, when the lockfile could be read.
|
|
25
|
+
* Null when the file was torn or unreadable — the refusal then says only what
|
|
26
|
+
* it can prove.
|
|
27
|
+
*/
|
|
28
|
+
readonly holder: LockHolder | null;
|
|
29
|
+
constructor(message: string, holder?: LockHolder | null);
|
|
30
|
+
}
|
|
31
|
+
/** What `rescue status` and the `blocked:lock` refusal both report about a holder. */
|
|
32
|
+
export interface LockHolderReport {
|
|
33
|
+
/** The lockfile's payload; null when no lock is held or it could not be parsed. */
|
|
34
|
+
holder: LockHolder | null;
|
|
35
|
+
/** Does a process with that pid still exist? False when there is no holder. */
|
|
36
|
+
alive: boolean;
|
|
37
|
+
/** How long the holder has held it, in ms; null when unknown or unparseable. */
|
|
38
|
+
heldForMs: number | null;
|
|
39
|
+
/**
|
|
40
|
+
* A live holder past {@link LOCK_HOLDER_SUSPECT_MS} — old enough that the
|
|
41
|
+
* copy may say it looks hung. A dead holder is never "suspect": it is simply
|
|
42
|
+
* stale, and the next acquisition steals it without anyone being told.
|
|
43
|
+
*/
|
|
44
|
+
suspect: boolean;
|
|
4
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* READ the lockfile without touching it — no steal, no wait, no acquisition.
|
|
48
|
+
* This is the accessor `things rescue status` reports from, and it is
|
|
49
|
+
* deliberately incapable of changing anything: a diagnostic that can release
|
|
50
|
+
* another process's lock is a diagnostic nobody can run safely.
|
|
51
|
+
*
|
|
52
|
+
* An absent file, a torn write and an unparseable payload all read as "no
|
|
53
|
+
* holder we can name", never as "no lock" — the caller states what it proved.
|
|
54
|
+
*/
|
|
55
|
+
export declare function readLockHolder(path: string, deps?: Partial<Pick<LockDeps, "readFileSync" | "pidAlive">> & {
|
|
56
|
+
now?: () => number;
|
|
57
|
+
}): LockHolderReport;
|
|
58
|
+
/** "4m 12s" / "1h 3m" / "8s" — a held-since age a person reads at a glance. */
|
|
59
|
+
export declare function formatHeldFor(ms: number): string;
|
|
60
|
+
/**
|
|
61
|
+
* The `blocked:lock` refusal's sentences (issue #640).
|
|
62
|
+
*
|
|
63
|
+
* The old copy was *"another mutation is in progress (pid N since T); waited
|
|
64
|
+
* 30000ms"* + *"wait for the concurrent mutation to finish and retry"*. It is
|
|
65
|
+
* true and it is useless in the one case that actually happens: the holder is a
|
|
66
|
+
* process that died without releasing — a killed client, a harness timeout —
|
|
67
|
+
* and no amount of waiting will ever clear it. The pid and the timestamp were
|
|
68
|
+
* already in the payload; all that was missing was the arithmetic and the
|
|
69
|
+
* consequence.
|
|
70
|
+
*
|
|
71
|
+
* So the refusal now says how LONG it has been held, whether that process is
|
|
72
|
+
* still alive, and — only past {@link LOCK_HOLDER_SUSPECT_MS}, only for a holder
|
|
73
|
+
* that is still alive — that killing it releases the lock. The threshold matters
|
|
74
|
+
* in both directions: below it the sentence would invite the reader to kill a
|
|
75
|
+
* drive that is merely working, and it is deliberately far above any measured
|
|
76
|
+
* legitimate hold.
|
|
77
|
+
*
|
|
78
|
+
* Aliveness is measured HERE, at refusal time, not at throw time — the holder
|
|
79
|
+
* may have died during the wait, and "it is gone, retry" is a different and
|
|
80
|
+
* better answer than "wait for it".
|
|
81
|
+
*/
|
|
82
|
+
export declare function describeLockRefusal(err: MutationLockError, deps?: {
|
|
83
|
+
pidAlive?: (pid: number) => boolean;
|
|
84
|
+
now?: () => number;
|
|
85
|
+
}): {
|
|
86
|
+
detail: string;
|
|
87
|
+
remediation: string;
|
|
88
|
+
};
|
|
5
89
|
export interface MutationLock {
|
|
6
90
|
release(): void;
|
|
7
91
|
}
|
package/dist/write/lock.js
CHANGED
|
@@ -23,20 +23,135 @@
|
|
|
23
23
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
24
24
|
import { mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
25
25
|
import { dirname } from "node:path";
|
|
26
|
+
import { pidAlive } from "../process-instance.js";
|
|
27
|
+
/**
|
|
28
|
+
* How long a LIVE holder may hold the lock before a refusal is allowed to say
|
|
29
|
+
* the process may be hung (issue #640).
|
|
30
|
+
*
|
|
31
|
+
* The number has to sit above every legitimate hold, because the sentence it
|
|
32
|
+
* unlocks invites the reader to kill the holder — and killing a working drive
|
|
33
|
+
* is a worse outcome than a late diagnosis. The longest legitimate hold is a
|
|
34
|
+
* COMPOSITE with a GUI leg: measured at 3.7s on a golden clone (DRVLAT1), and
|
|
35
|
+
* the `--dangerously-drive-gui` copy already warns a field host can take "over
|
|
36
|
+
* a minute on a large database". Five minutes is an order of magnitude past
|
|
37
|
+
* that, so a holder still standing at five minutes is not slow — it is stuck,
|
|
38
|
+
* or it is a pid whose process died in a way `kill(pid, 0)` cannot see.
|
|
39
|
+
*/
|
|
40
|
+
export const LOCK_HOLDER_SUSPECT_MS = 5 * 60_000;
|
|
26
41
|
export class MutationLockError extends Error {
|
|
27
|
-
|
|
42
|
+
/**
|
|
43
|
+
* The holder the wait timed out against, when the lockfile could be read.
|
|
44
|
+
* Null when the file was torn or unreadable — the refusal then says only what
|
|
45
|
+
* it can prove.
|
|
46
|
+
*/
|
|
47
|
+
holder;
|
|
48
|
+
constructor(message, holder = null) {
|
|
28
49
|
super(message);
|
|
29
50
|
this.name = "MutationLockError";
|
|
51
|
+
this.holder = holder;
|
|
30
52
|
}
|
|
31
53
|
}
|
|
32
|
-
|
|
54
|
+
/** No lock on the file — the shape every reader gets when the slot is empty. */
|
|
55
|
+
const NO_HOLDER = { holder: null, alive: false, heldForMs: null, suspect: false };
|
|
56
|
+
/**
|
|
57
|
+
* READ the lockfile without touching it — no steal, no wait, no acquisition.
|
|
58
|
+
* This is the accessor `things rescue status` reports from, and it is
|
|
59
|
+
* deliberately incapable of changing anything: a diagnostic that can release
|
|
60
|
+
* another process's lock is a diagnostic nobody can run safely.
|
|
61
|
+
*
|
|
62
|
+
* An absent file, a torn write and an unparseable payload all read as "no
|
|
63
|
+
* holder we can name", never as "no lock" — the caller states what it proved.
|
|
64
|
+
*/
|
|
65
|
+
export function readLockHolder(path, deps = {}) {
|
|
66
|
+
const read = deps.readFileSync ?? readFileSync;
|
|
67
|
+
const alivep = deps.pidAlive ?? pidAlive;
|
|
68
|
+
let raw;
|
|
33
69
|
try {
|
|
34
|
-
|
|
35
|
-
return true;
|
|
70
|
+
raw = read(path, "utf8");
|
|
36
71
|
}
|
|
37
72
|
catch {
|
|
38
|
-
return
|
|
73
|
+
return NO_HOLDER; // no lockfile — nothing is holding it
|
|
74
|
+
}
|
|
75
|
+
let holder;
|
|
76
|
+
try {
|
|
77
|
+
holder = JSON.parse(raw);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return NO_HOLDER; // torn write — the next acquisition treats it as stale
|
|
81
|
+
}
|
|
82
|
+
if (typeof holder.pid !== "number" || typeof holder.ts !== "string")
|
|
83
|
+
return NO_HOLDER;
|
|
84
|
+
const alive = alivep(holder.pid);
|
|
85
|
+
const takenAt = Date.parse(holder.ts);
|
|
86
|
+
const heldForMs = Number.isFinite(takenAt)
|
|
87
|
+
? Math.max(0, (deps.now ?? Date.now)() - takenAt)
|
|
88
|
+
: null;
|
|
89
|
+
return {
|
|
90
|
+
holder,
|
|
91
|
+
alive,
|
|
92
|
+
heldForMs,
|
|
93
|
+
suspect: alive && heldForMs !== null && heldForMs >= LOCK_HOLDER_SUSPECT_MS,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** "4m 12s" / "1h 3m" / "8s" — a held-since age a person reads at a glance. */
|
|
97
|
+
export function formatHeldFor(ms) {
|
|
98
|
+
const s = Math.round(ms / 1000);
|
|
99
|
+
if (s < 60)
|
|
100
|
+
return `${s}s`;
|
|
101
|
+
const m = Math.floor(s / 60);
|
|
102
|
+
if (m < 60)
|
|
103
|
+
return s % 60 === 0 ? `${m}m` : `${m}m ${s % 60}s`;
|
|
104
|
+
const h = Math.floor(m / 60);
|
|
105
|
+
return m % 60 === 0 ? `${h}h` : `${h}h ${m % 60}m`;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The `blocked:lock` refusal's sentences (issue #640).
|
|
109
|
+
*
|
|
110
|
+
* The old copy was *"another mutation is in progress (pid N since T); waited
|
|
111
|
+
* 30000ms"* + *"wait for the concurrent mutation to finish and retry"*. It is
|
|
112
|
+
* true and it is useless in the one case that actually happens: the holder is a
|
|
113
|
+
* process that died without releasing — a killed client, a harness timeout —
|
|
114
|
+
* and no amount of waiting will ever clear it. The pid and the timestamp were
|
|
115
|
+
* already in the payload; all that was missing was the arithmetic and the
|
|
116
|
+
* consequence.
|
|
117
|
+
*
|
|
118
|
+
* So the refusal now says how LONG it has been held, whether that process is
|
|
119
|
+
* still alive, and — only past {@link LOCK_HOLDER_SUSPECT_MS}, only for a holder
|
|
120
|
+
* that is still alive — that killing it releases the lock. The threshold matters
|
|
121
|
+
* in both directions: below it the sentence would invite the reader to kill a
|
|
122
|
+
* drive that is merely working, and it is deliberately far above any measured
|
|
123
|
+
* legitimate hold.
|
|
124
|
+
*
|
|
125
|
+
* Aliveness is measured HERE, at refusal time, not at throw time — the holder
|
|
126
|
+
* may have died during the wait, and "it is gone, retry" is a different and
|
|
127
|
+
* better answer than "wait for it".
|
|
128
|
+
*/
|
|
129
|
+
export function describeLockRefusal(err, deps = {}) {
|
|
130
|
+
const holder = err.holder;
|
|
131
|
+
const base = "wait for the concurrent mutation to finish and retry";
|
|
132
|
+
if (holder === null)
|
|
133
|
+
return { detail: err.message, remediation: base };
|
|
134
|
+
const alive = (deps.pidAlive ?? pidAlive)(holder.pid);
|
|
135
|
+
const takenAt = Date.parse(holder.ts);
|
|
136
|
+
const heldForMs = Number.isFinite(takenAt)
|
|
137
|
+
? Math.max(0, (deps.now ?? Date.now)() - takenAt)
|
|
138
|
+
: null;
|
|
139
|
+
const age = heldForMs === null ? "" : `, held for ${formatHeldFor(heldForMs)}`;
|
|
140
|
+
if (!alive) {
|
|
141
|
+
return {
|
|
142
|
+
detail: `${err.message}${age} — that process is no longer running, so the lock is stale`,
|
|
143
|
+
remediation: "run the command again; the next attempt takes the lock",
|
|
144
|
+
};
|
|
39
145
|
}
|
|
146
|
+
const suspect = heldForMs !== null && heldForMs >= LOCK_HOLDER_SUSPECT_MS;
|
|
147
|
+
return {
|
|
148
|
+
detail: `${err.message}${age} — pid ${holder.pid} is still running`,
|
|
149
|
+
remediation: suspect
|
|
150
|
+
? `${base}. It has held the lock for ${formatHeldFor(heldForMs)}, which is far longer ` +
|
|
151
|
+
`than any change takes: that process may be hung, and killing it (\`kill ${holder.pid}\`) ` +
|
|
152
|
+
"releases the lock. `things rescue status` shows what it is waiting on"
|
|
153
|
+
: base,
|
|
154
|
+
};
|
|
40
155
|
}
|
|
41
156
|
/**
|
|
42
157
|
* The composite hold, carried on the ASYNC CONTEXT rather than threaded through
|
|
@@ -140,7 +255,7 @@ export async function acquireMutationLock(path, options = {}) {
|
|
|
140
255
|
}
|
|
141
256
|
if (Date.now() >= deadline) {
|
|
142
257
|
throw new MutationLockError(`another mutation is in progress (pid ${holder.pid} since ${holder.ts}); ` +
|
|
143
|
-
`waited ${waitMs}ms for ${path}
|
|
258
|
+
`waited ${waitMs}ms for ${path}`, holder);
|
|
144
259
|
}
|
|
145
260
|
// lock-acquisition retries are inherently sequential polling against the same lockfile
|
|
146
261
|
await sleep(150);
|
package/dist/write/lock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/write/lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/write/lock.ts"],"names":[],"mappings":"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"}
|