things-api 0.16.0 → 0.17.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.
Files changed (86) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/commands/repeat-flags.d.ts +3 -3
  3. package/dist/cli/commands/repeat-flags.js +90 -33
  4. package/dist/cli/commands/repeat-flags.js.map +1 -1
  5. package/dist/cli/commands/writes.js +59 -5
  6. package/dist/cli/commands/writes.js.map +1 -1
  7. package/dist/cli/help.js +9 -2
  8. package/dist/cli/help.js.map +1 -1
  9. package/dist/cli/interrupt.d.ts +42 -0
  10. package/dist/cli/interrupt.js +105 -0
  11. package/dist/cli/interrupt.js.map +1 -0
  12. package/dist/cli/main.js +5 -0
  13. package/dist/cli/main.js.map +1 -1
  14. package/dist/client.js +3 -0
  15. package/dist/client.js.map +1 -1
  16. package/dist/config.d.ts +39 -0
  17. package/dist/config.js +16 -1
  18. package/dist/config.js.map +1 -1
  19. package/dist/contracts.d.ts +9 -2
  20. package/dist/contracts.js +1 -1
  21. package/dist/contracts.js.map +1 -1
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.js +7 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/model/occurrences.d.ts +14 -1
  26. package/dist/model/occurrences.js +20 -4
  27. package/dist/model/occurrences.js.map +1 -1
  28. package/dist/model/recurrence.d.ts +60 -9
  29. package/dist/model/recurrence.js +76 -19
  30. package/dist/model/recurrence.js.map +1 -1
  31. package/dist/paths.d.ts +8 -0
  32. package/dist/paths.js +10 -0
  33. package/dist/paths.js.map +1 -1
  34. package/dist/sync-health.js +2 -1
  35. package/dist/sync-health.js.map +1 -1
  36. package/dist/trace/tracer.d.ts +87 -0
  37. package/dist/trace/tracer.js +167 -0
  38. package/dist/trace/tracer.js.map +1 -0
  39. package/dist/write/clear-reminder.js +24 -21
  40. package/dist/write/clear-reminder.js.map +1 -1
  41. package/dist/write/commands.js +50 -45
  42. package/dist/write/commands.js.map +1 -1
  43. package/dist/write/completion-context.d.ts +57 -0
  44. package/dist/write/completion-context.js +49 -0
  45. package/dist/write/completion-context.js.map +1 -0
  46. package/dist/write/failure-hints.d.ts +10 -1
  47. package/dist/write/failure-hints.js +8 -0
  48. package/dist/write/failure-hints.js.map +1 -1
  49. package/dist/write/guards.d.ts +1 -1
  50. package/dist/write/guards.js +10 -0
  51. package/dist/write/guards.js.map +1 -1
  52. package/dist/write/operations.d.ts +12 -3
  53. package/dist/write/pipeline.d.ts +39 -0
  54. package/dist/write/pipeline.js +230 -17
  55. package/dist/write/pipeline.js.map +1 -1
  56. package/dist/write/pre-state.d.ts +1 -1
  57. package/dist/write/pre-state.js +2 -2
  58. package/dist/write/pre-state.js.map +1 -1
  59. package/dist/write/promote-clone.js +260 -13
  60. package/dist/write/promote-clone.js.map +1 -1
  61. package/dist/write/repeat-anchor.d.ts +110 -0
  62. package/dist/write/repeat-anchor.js +238 -0
  63. package/dist/write/repeat-anchor.js.map +1 -0
  64. package/dist/write/repeat-asserts.d.ts +28 -0
  65. package/dist/write/repeat-asserts.js +169 -0
  66. package/dist/write/repeat-asserts.js.map +1 -0
  67. package/dist/write/repeat-rule.js +27 -12
  68. package/dist/write/repeat-rule.js.map +1 -1
  69. package/dist/write/vectors/session-reachability.d.ts +78 -0
  70. package/dist/write/vectors/session-reachability.js +103 -0
  71. package/dist/write/vectors/session-reachability.js.map +1 -0
  72. package/dist/write/vectors/simulator.js +68 -29
  73. package/dist/write/vectors/simulator.js.map +1 -1
  74. package/dist/write/vectors/types.d.ts +117 -10
  75. package/dist/write/vectors/ui-recipes.d.ts +8 -0
  76. package/dist/write/vectors/ui-recipes.js +120 -22
  77. package/dist/write/vectors/ui-recipes.js.map +1 -1
  78. package/dist/write/vectors/ui.d.ts +79 -13
  79. package/dist/write/vectors/ui.js +415 -59
  80. package/dist/write/vectors/ui.js.map +1 -1
  81. package/dist/write/verify/delta.d.ts +12 -14
  82. package/dist/write/verify/delta.js +35 -34
  83. package/dist/write/verify/delta.js.map +1 -1
  84. package/package.json +1 -1
  85. package/schema/envelope.schema.json +22 -0
  86. package/skills/things-cli/SKILL.md +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"occurrences.js","sourceRoot":"","sources":["../../src/model/occurrences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"occurrences.js","sourceRoot":"","sources":["../../src/model/occurrences.ts"],"names":[],"mappings":"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"}
@@ -28,8 +28,16 @@
28
28
  * discriminator.
29
29
  * of occurrence offsets: dy (0-based day; -1 = last day of month),
30
30
  * mo (0-based month), wd (weekday, 0=Sunday), wdo (nth weekday, -1=last)
31
- * ed end date (unix seconds; distant-future sentinel = no end)
32
- * rc remaining repeat count (0 = unlimited)
31
+ * ed end date (unix seconds; distant-future sentinel = no end). An
32
+ * ends-after rule OMITS this key entirely (RRX1); an ends-on rule sets
33
+ * it to the chosen date.
34
+ * rc the configured "ends after N times" TOTAL occurrence count. IMMUTABLE:
35
+ * it does NOT decrement as instances spawn (RRX1 — a daily ends-after-3
36
+ * series held rc=3 through all three spawns and past exhaustion; the app
37
+ * counts spawns in the template's rt1_instanceCreationCount column and
38
+ * stops by clearing the cursor rt1_nextInstanceStartDate, never by
39
+ * touching rc). 0/absent = unlimited. NOT "remaining" — it never counts
40
+ * down, so it is decoded as `occurrenceCount`, not a remaining tally.
33
41
  * rrv rule schema version (4 observed)
34
42
  * sr/ia anchor timestamps (not needed for reads)
35
43
  */
@@ -59,20 +67,63 @@ export interface RepeatRule {
59
67
  startOffsetDays: number;
60
68
  offsets: RepeatOffset[];
61
69
  endDate: IsoDate | null;
62
- remainingCount: number | null;
70
+ /**
71
+ * The rule's "ends after N times" TOTAL occurrence count (`null` when the
72
+ * series is unlimited). This is the CONFIGURED bound, NOT a live tally: it
73
+ * never decrements as instances spawn (RRX1). The app tracks progress in the
74
+ * template's `rt1_instanceCreationCount` column (not in this rule blob) and
75
+ * ends the series by clearing its next-occurrence cursor once that count
76
+ * reaches this total — so an exhausted ends-after series still decodes with
77
+ * `occurrenceCount` = its original N. Reading how MANY remain therefore
78
+ * requires the template's icCount, which is outside this rule.
79
+ */
80
+ occurrenceCount: number | null;
63
81
  version: number;
64
82
  }
65
83
  /**
66
- * The GUI's status word for a repeating template with no set next
67
- * occurrence: `paused` (instance creation paused), `ended` (the rule's end
68
- * date has passed or its repeat count is exhausted), else `waiting` (an
69
- * after-completion rule between instances). Live-verified 2026-07-11:
70
- * Ended = fixed rule with endDate 2025-02-24; Waiting = after-completion
71
- * rule otherwise column-identical rows.
84
+ * Decode ONE `of` offset entry (the plist grammar `dy`/`mo`/`wd`/`wdo`) into a
85
+ * {@link RepeatOffset}. Shared by {@link decodeRecurrenceRule} (reading a stored
86
+ * rule) and the write-side full-fidelity assert builder (which composes the
87
+ * expected numeric offsets and round-trips them through this SAME decode so the
88
+ * canonical anchor key it compares against is byte-consistent with what a real
89
+ * read produces). Accepts any record; non-numeric fields are ignored.
90
+ */
91
+ export declare function decodeOffsetEntry(e: Record<string, unknown>): RepeatOffset;
92
+ /**
93
+ * A canonical, ORDER-INSENSITIVE string key of a rule's calendar anchor (its
94
+ * `offsets`) — the comparison surface for full-fidelity recurrence assertions.
95
+ * Each offset renders to a compact token (`m` month · `d` day · `w` weekday ·
96
+ * `o` weekday-ordinal, all decoded values), and the tokens are sorted so a
97
+ * weekly rule that fires Tue+Thu keys identically regardless of the order the
98
+ * app happened to store the two weekday offsets in. Two rules share a key iff
99
+ * they name the SAME set of calendar placements. Empty offsets (or all-nominal
100
+ * after-completion offsets) yield "".
101
+ */
102
+ export declare function anchorKeyOfOffsets(offsets: RepeatOffset[]): string;
103
+ /**
104
+ * The GUI's status word for a repeating template with no set next occurrence:
105
+ * `paused` (instance creation paused), `ended` (the series will spawn no more
106
+ * instances — its end date has passed or its occurrence count is exhausted),
107
+ * else `waiting` (an after-completion rule between instances).
108
+ *
109
+ * Exhaustion is read from the CURSOR, not the rule's count. A FIXED series
110
+ * always carries a next-occurrence cursor while live; the app clears it
111
+ * (`rt1_nextInstanceStartDate` → NULL) the moment the series ends — whether by
112
+ * an ends-ON date passing OR an ends-AFTER count being reached (RRX1: a daily
113
+ * ends-after-3 series went cursor-NULL after its 3rd spawn with rc still 3, and
114
+ * a past ends-on template was born cursor-NULL). So a fixed rule with no next
115
+ * occurrence has ended. The rule's occurrence count is NOT the signal — it is
116
+ * the immutable configured total (never 0 at exhaustion), which is why the old
117
+ * `remainingCount === 0` test was unreachable. After-completion rules rest with
118
+ * no next occurrence BETWEEN instances (that is `waiting`, not `ended`), so the
119
+ * cursor test is gated on fixed rules. Live-verified 2026-07-11 (Ended = fixed
120
+ * rule with a past endDate; Waiting = after-completion rule) + RRX1 2026-08-15
121
+ * (ends-after / ends-on exhaustion end-states, golden-v2 / 3.22.12).
72
122
  */
73
123
  export declare function templateStatus(repeating: {
74
124
  paused?: boolean;
75
125
  rule?: RepeatRule;
126
+ nextOccurrence?: IsoDate | null;
76
127
  }, todayIso: string): "waiting" | "paused" | "ended";
77
128
  export declare function decodeRecurrenceRule(blob: unknown): RepeatRule;
78
129
  /** The rule schema version the 91-rule corpus + instance validation covered. */
@@ -4,24 +4,89 @@ const UNITS = {
4
4
  8: "monthly",
5
5
  4: "yearly",
6
6
  };
7
+ /**
8
+ * Decode ONE `of` offset entry (the plist grammar `dy`/`mo`/`wd`/`wdo`) into a
9
+ * {@link RepeatOffset}. Shared by {@link decodeRecurrenceRule} (reading a stored
10
+ * rule) and the write-side full-fidelity assert builder (which composes the
11
+ * expected numeric offsets and round-trips them through this SAME decode so the
12
+ * canonical anchor key it compares against is byte-consistent with what a real
13
+ * read produces). Accepts any record; non-numeric fields are ignored.
14
+ */
15
+ export function decodeOffsetEntry(e) {
16
+ const offset = {};
17
+ if (typeof e["dy"] === "number")
18
+ offset.day = e["dy"] === -1 ? -1 : e["dy"] + 1;
19
+ if (typeof e["mo"] === "number")
20
+ offset.month = e["mo"] + 1;
21
+ if (typeof e["wd"] === "number")
22
+ offset.weekday = e["wd"];
23
+ if (typeof e["wdo"] === "number")
24
+ offset.weekdayOrdinal = e["wdo"];
25
+ return offset;
26
+ }
27
+ /**
28
+ * A canonical, ORDER-INSENSITIVE string key of a rule's calendar anchor (its
29
+ * `offsets`) — the comparison surface for full-fidelity recurrence assertions.
30
+ * Each offset renders to a compact token (`m` month · `d` day · `w` weekday ·
31
+ * `o` weekday-ordinal, all decoded values), and the tokens are sorted so a
32
+ * weekly rule that fires Tue+Thu keys identically regardless of the order the
33
+ * app happened to store the two weekday offsets in. Two rules share a key iff
34
+ * they name the SAME set of calendar placements. Empty offsets (or all-nominal
35
+ * after-completion offsets) yield "".
36
+ */
37
+ export function anchorKeyOfOffsets(offsets) {
38
+ return offsets
39
+ .map((o) => {
40
+ const parts = [];
41
+ if (o.month !== undefined)
42
+ parts.push(`m${o.month}`);
43
+ if (o.day !== undefined)
44
+ parts.push(`d${o.day}`);
45
+ if (o.weekday !== undefined)
46
+ parts.push(`w${o.weekday}`);
47
+ if (o.weekdayOrdinal !== undefined)
48
+ parts.push(`o${o.weekdayOrdinal}`);
49
+ return parts.join("");
50
+ })
51
+ .filter((t) => t.length > 0)
52
+ .toSorted()
53
+ .join(",");
54
+ }
7
55
  /** Unix seconds this far out (year ≥ 3000) mean "repeats forever". */
8
56
  const DISTANT_FUTURE_EPOCH = 32503680000;
9
57
  /**
10
- * The GUI's status word for a repeating template with no set next
11
- * occurrence: `paused` (instance creation paused), `ended` (the rule's end
12
- * date has passed or its repeat count is exhausted), else `waiting` (an
13
- * after-completion rule between instances). Live-verified 2026-07-11:
14
- * Ended = fixed rule with endDate 2025-02-24; Waiting = after-completion
15
- * rule otherwise column-identical rows.
58
+ * The GUI's status word for a repeating template with no set next occurrence:
59
+ * `paused` (instance creation paused), `ended` (the series will spawn no more
60
+ * instances — its end date has passed or its occurrence count is exhausted),
61
+ * else `waiting` (an after-completion rule between instances).
62
+ *
63
+ * Exhaustion is read from the CURSOR, not the rule's count. A FIXED series
64
+ * always carries a next-occurrence cursor while live; the app clears it
65
+ * (`rt1_nextInstanceStartDate` → NULL) the moment the series ends — whether by
66
+ * an ends-ON date passing OR an ends-AFTER count being reached (RRX1: a daily
67
+ * ends-after-3 series went cursor-NULL after its 3rd spawn with rc still 3, and
68
+ * a past ends-on template was born cursor-NULL). So a fixed rule with no next
69
+ * occurrence has ended. The rule's occurrence count is NOT the signal — it is
70
+ * the immutable configured total (never 0 at exhaustion), which is why the old
71
+ * `remainingCount === 0` test was unreachable. After-completion rules rest with
72
+ * no next occurrence BETWEEN instances (that is `waiting`, not `ended`), so the
73
+ * cursor test is gated on fixed rules. Live-verified 2026-07-11 (Ended = fixed
74
+ * rule with a past endDate; Waiting = after-completion rule) + RRX1 2026-08-15
75
+ * (ends-after / ends-on exhaustion end-states, golden-v2 / 3.22.12).
16
76
  */
17
77
  export function templateStatus(repeating, todayIso) {
18
78
  if (repeating.paused === true)
19
79
  return "paused";
20
80
  const rule = repeating.rule;
21
81
  if (rule !== undefined) {
82
+ // An ends-on rule whose end date has passed is ended — an authoritative
83
+ // signal that also covers a "born already ended" past ends-on template.
22
84
  if (rule.endDate !== null && rule.endDate < todayIso)
23
85
  return "ended";
24
- if (rule.remainingCount === 0)
86
+ // A fixed series with no next occurrence has exhausted its bound (count OR
87
+ // date) — the app cleared the cursor. (After-completion cursor-NULL is a
88
+ // normal resting state, so this is fixed-only.)
89
+ if (rule.type === "fixed" && repeating.nextOccurrence == null)
25
90
  return "ended";
26
91
  }
27
92
  return "waiting";
@@ -52,17 +117,7 @@ export function decodeRecurrenceRule(blob) {
52
117
  for (const entry of of) {
53
118
  if (typeof entry !== "object" || entry === null || Array.isArray(entry))
54
119
  continue;
55
- const e = entry;
56
- const offset = {};
57
- if (typeof e["dy"] === "number")
58
- offset.day = e["dy"] === -1 ? -1 : e["dy"] + 1;
59
- if (typeof e["mo"] === "number")
60
- offset.month = e["mo"] + 1;
61
- if (typeof e["wd"] === "number")
62
- offset.weekday = e["wd"];
63
- if (typeof e["wdo"] === "number")
64
- offset.weekdayOrdinal = e["wdo"];
65
- offsets.push(offset);
120
+ offsets.push(decodeOffsetEntry(entry));
66
121
  }
67
122
  }
68
123
  const ed = typeof dict["ed"] === "number" ? dict["ed"] : null;
@@ -84,7 +139,9 @@ export function decodeRecurrenceRule(blob) {
84
139
  startOffsetDays: typeof dict["ts"] === "number" ? dict["ts"] : 0,
85
140
  offsets,
86
141
  endDate: ed === null || ed >= DISTANT_FUTURE_EPOCH ? null : epochToIso(ed),
87
- remainingCount: rc === 0 ? null : rc,
142
+ // rc = the "ends after N" TOTAL (immutable, never decrements — RRX1);
143
+ // 0/absent = unlimited. See RepeatRule.occurrenceCount.
144
+ occurrenceCount: rc === 0 ? null : rc,
88
145
  version: rrv,
89
146
  };
90
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recurrence.js","sourceRoot":"","sources":["../../src/model/recurrence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recurrence.js","sourceRoot":"","sources":["../../src/model/recurrence.ts"],"names":[],"mappings":"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"}
package/dist/paths.d.ts CHANGED
@@ -4,3 +4,11 @@ export declare function auditDir(env?: NodeJS.ProcessEnv): string;
4
4
  export declare function mutationLockPath(env?: NodeJS.ProcessEnv): string;
5
5
  /** Environment tuple recorded at the last verified mutation (consent-churn tripwire). */
6
6
  export declare function environmentStatePath(env?: NodeJS.ProcessEnv): string;
7
+ /**
8
+ * Dev-mode step-timeline trace directory (TRACE1, #487). One JSONL file per
9
+ * write invocation lands here when tracing is on (a `-dev` build, or forced via
10
+ * the `traceEnabled` config / `THINGS_API_TRACE` env). LOCAL-ONLY: a trace may
11
+ * contain real task titles/uuids from the running database, so these files must
12
+ * NEVER be committed to the public repo or attached to a public issue.
13
+ */
14
+ export declare function traceDir(env?: NodeJS.ProcessEnv): string;
package/dist/paths.js CHANGED
@@ -27,4 +27,14 @@ export function mutationLockPath(env = process.env) {
27
27
  export function environmentStatePath(env = process.env) {
28
28
  return join(stateDir(env), "environment.json");
29
29
  }
30
+ /**
31
+ * Dev-mode step-timeline trace directory (TRACE1, #487). One JSONL file per
32
+ * write invocation lands here when tracing is on (a `-dev` build, or forced via
33
+ * the `traceEnabled` config / `THINGS_API_TRACE` env). LOCAL-ONLY: a trace may
34
+ * contain real task titles/uuids from the running database, so these files must
35
+ * NEVER be committed to the public repo or attached to a public issue.
36
+ */
37
+ export function traceDir(env = process.env) {
38
+ return join(stateDir(env), "trace");
39
+ }
30
40
  //# sourceMappingURL=paths.js.map
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,QAAQ,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC3D,IAAI,GAAG,CAAC,sBAAsB,CAAC;QAAE,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC5D,IAAI,GAAG,CAAC,uBAAuB,CAAC;QAAE,OAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,QAAQ,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC3D,IAAI,GAAG,CAAC,sBAAsB,CAAC;QAAE,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC5D,IAAI,GAAG,CAAC,uBAAuB,CAAC;QAAE,OAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC"}
@@ -239,7 +239,8 @@ export function computeSyncHealth(db, dbPath, deps = {}) {
239
239
  verdict: running
240
240
  ? "the Things app is running — the database is live and receiving writes"
241
241
  : "the Things app is NOT running — the database is frozen (there is no background sync " +
242
- "daemon); launch Things to resume syncing and writes",
242
+ "daemon); launch Things to resume syncing. A write launches it automatically unless " +
243
+ "`auto-launch` is turned off",
243
244
  };
244
245
  // WAL freshness.
245
246
  const walMtimeMs = (deps.walMtimeMs ?? defaultWalMtimeMs)(`${dbPath}-wal`);
@@ -1 +1 @@
1
- {"version":3,"file":"sync-health.js","sourceRoot":"","sources":["../src/sync-health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-health.js","sourceRoot":"","sources":["../src/sync-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /** One line in the trace: a phase tag plus arbitrary structured fields. */
2
+ export interface TraceEvent {
3
+ /**
4
+ * The kind of moment: `invocation` (start), `stage` (a pipeline milestone),
5
+ * `ui-dispatch` (one osascript hop), `verify` (poll summary), `watchdog`,
6
+ * `result`, `signal`, or `invocation-end`.
7
+ */
8
+ phase: string;
9
+ [field: string]: unknown;
10
+ }
11
+ /** A trace destination. The file sink stamps `ts`/`elapsedMs` onto each event. */
12
+ export interface TraceSink {
13
+ /** Absolute path of the trace file (embedded in uncertain-outcome results). */
14
+ readonly path: string;
15
+ /** Epoch ms when this invocation's trace opened (the `elapsedMs` origin). */
16
+ readonly startedAt: number;
17
+ write(event: TraceEvent): void;
18
+ close(): void;
19
+ }
20
+ /** Install (or clear, with null) the process trace sink. */
21
+ export declare function setTraceSink(next: TraceSink | null): void;
22
+ /** The active sink, or null when tracing is off. */
23
+ export declare function traceSink(): TraceSink | null;
24
+ /** Is tracing on right now? Cheap guard for hot call sites. */
25
+ export declare function traceActive(): boolean;
26
+ /** The active trace file path, or null — embedded in uncertain-outcome results. */
27
+ export declare function tracePath(): string | null;
28
+ /**
29
+ * Emit one event. The event is built by a THUNK so nothing is allocated when
30
+ * tracing is off (overhead ≈ 0 disabled). Never throws — a failed trace write
31
+ * must never break a mutation.
32
+ */
33
+ export declare function trace(makeEvent: () => TraceEvent): void;
34
+ export interface InflightWrite {
35
+ op: string;
36
+ /** The resolved target uuid, when the op has a single one (else null). */
37
+ uuid: string | null;
38
+ vector: string;
39
+ /** True while a GUI drive is in flight — the genuinely-uncertain case. */
40
+ uiDrive: boolean;
41
+ /** The label of the last UI-drive step dispatched (updated as it drives). */
42
+ step?: string;
43
+ startedAt: number;
44
+ }
45
+ /** Mark (or clear, with null) the write currently touching the app. */
46
+ export declare function setInflight(write: InflightWrite | null): void;
47
+ /** The write currently touching the app, or null. */
48
+ export declare function getInflight(): InflightWrite | null;
49
+ /** Record the last-dispatched UI-drive step on the in-flight write. */
50
+ export declare function noteInflightStep(step: string): void;
51
+ /**
52
+ * The effective trace decision. The tri-state config key wins when set
53
+ * (`true`/`false` force it), otherwise tracing follows `isDev` — on for a
54
+ * `-dev` source checkout, off for a published install. The env override is
55
+ * already folded into `configTrace` by {@link loadConfig}.
56
+ */
57
+ export declare function resolveTraceEnabled(configTrace: boolean | null | undefined, isDev: boolean): boolean;
58
+ /** Redact obvious secrets (URL-scheme auth tokens) from a logged argv. */
59
+ export declare function sanitizeArgv(argv: readonly string[]): string[];
60
+ /**
61
+ * Open a per-invocation JSONL trace file and return the sink (already carrying
62
+ * the leading `invocation` event). One file per process keeps concurrent
63
+ * invocations from interleaving, so the file for a given run reconstructs that
64
+ * run and nothing else.
65
+ */
66
+ export declare function createFileTraceSink(opts: {
67
+ dir: string;
68
+ argv: readonly string[];
69
+ version: string;
70
+ pid: number;
71
+ now?: () => number;
72
+ }): TraceSink;
73
+ /**
74
+ * CLI entry: decide whether to trace this invocation and, if so, install a file
75
+ * sink. Returns the sink (or null when off). Called from the write driver so
76
+ * tracing is scoped to mutations — the invocations where a step timeline earns
77
+ * its keep. Never throws: a trace-setup failure degrades to no tracing.
78
+ */
79
+ export declare function installCliTrace(opts: {
80
+ argv: readonly string[];
81
+ version: string;
82
+ isDev: boolean;
83
+ env?: NodeJS.ProcessEnv;
84
+ pid?: number;
85
+ }): TraceSink | null;
86
+ /** Tear down the process trace sink (clears the in-flight marker too). */
87
+ export declare function closeCliTrace(): void;
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Dev-mode step-timeline trace (TRACE1, #487).
3
+ *
4
+ * When tracing is on — a `-dev` build, or forced via the `traceEnabled` config
5
+ * key / `THINGS_API_TRACE` env — every write invocation appends a step-level
6
+ * timeline to ONE local JSONL file under {@link traceDir}. The file is the
7
+ * single artifact an issue report can point at to reconstruct exactly what the
8
+ * CLI did and when: the sanitized argv, each pipeline stage, every UI-drive
9
+ * osascript dispatch (with duration + outcome), the verify poll summary, the
10
+ * final result, and — critically for a hang report — an interruption marker if
11
+ * a signal killed the process mid-drive.
12
+ *
13
+ * Design goals:
14
+ * - Overhead ≈ 0 when disabled: {@link trace} is one null-check + return, and
15
+ * the emit thunk is never invoked.
16
+ * - Flush-on-write: each event is `appendFileSync`'d immediately, so even a
17
+ * SIGKILL leaves every event up to the last checkpoint on disk.
18
+ * - LOCAL-ONLY: a trace may carry real task titles/uuids from the running
19
+ * database. That is fine on the maintainer's own machine; it must NEVER be
20
+ * committed to the public repo or attached to a public issue.
21
+ *
22
+ * The sink and the in-flight-write registry are module-global by design: a CLI
23
+ * invocation is exactly one process running exactly one write, so a singleton is
24
+ * both correct and far simpler than threading a tracer through every signature.
25
+ */
26
+ import { appendFileSync, mkdirSync } from "node:fs";
27
+ import { join } from "node:path";
28
+ import { loadConfig } from "../config.js";
29
+ import { traceDir } from "../paths.js";
30
+ let sink = null;
31
+ /** Install (or clear, with null) the process trace sink. */
32
+ export function setTraceSink(next) {
33
+ sink = next;
34
+ }
35
+ /** The active sink, or null when tracing is off. */
36
+ export function traceSink() {
37
+ return sink;
38
+ }
39
+ /** Is tracing on right now? Cheap guard for hot call sites. */
40
+ export function traceActive() {
41
+ return sink !== null;
42
+ }
43
+ /** The active trace file path, or null — embedded in uncertain-outcome results. */
44
+ export function tracePath() {
45
+ return sink?.path ?? null;
46
+ }
47
+ /**
48
+ * Emit one event. The event is built by a THUNK so nothing is allocated when
49
+ * tracing is off (overhead ≈ 0 disabled). Never throws — a failed trace write
50
+ * must never break a mutation.
51
+ */
52
+ export function trace(makeEvent) {
53
+ if (sink === null)
54
+ return;
55
+ try {
56
+ sink.write(makeEvent());
57
+ }
58
+ catch {
59
+ // tracing is best-effort diagnostics; never let it affect the write
60
+ }
61
+ }
62
+ let inflight = null;
63
+ /** Mark (or clear, with null) the write currently touching the app. */
64
+ export function setInflight(write) {
65
+ inflight = write;
66
+ }
67
+ /** The write currently touching the app, or null. */
68
+ export function getInflight() {
69
+ return inflight;
70
+ }
71
+ /** Record the last-dispatched UI-drive step on the in-flight write. */
72
+ export function noteInflightStep(step) {
73
+ if (inflight !== null)
74
+ inflight.step = step;
75
+ }
76
+ // ---------------------------------------------------------------------------
77
+ // Enablement + the file sink.
78
+ // ---------------------------------------------------------------------------
79
+ /**
80
+ * The effective trace decision. The tri-state config key wins when set
81
+ * (`true`/`false` force it), otherwise tracing follows `isDev` — on for a
82
+ * `-dev` source checkout, off for a published install. The env override is
83
+ * already folded into `configTrace` by {@link loadConfig}.
84
+ */
85
+ export function resolveTraceEnabled(configTrace, isDev) {
86
+ return configTrace ?? isDev;
87
+ }
88
+ /** Redact obvious secrets (URL-scheme auth tokens) from a logged argv. */
89
+ export function sanitizeArgv(argv) {
90
+ return argv.map((arg) => arg.replace(/((?:[?&]|\b)(?:auth|token)=)[^&\s]+/gi, "$1<redacted>"));
91
+ }
92
+ function isoStamp(ms) {
93
+ return new Date(ms).toISOString();
94
+ }
95
+ /**
96
+ * Open a per-invocation JSONL trace file and return the sink (already carrying
97
+ * the leading `invocation` event). One file per process keeps concurrent
98
+ * invocations from interleaving, so the file for a given run reconstructs that
99
+ * run and nothing else.
100
+ */
101
+ export function createFileTraceSink(opts) {
102
+ const now = opts.now ?? Date.now;
103
+ const startedAt = now();
104
+ mkdirSync(opts.dir, { recursive: true });
105
+ // Filesystem-safe stamp (colons/dots → dashes) plus the pid, so two runs in
106
+ // the same second never collide.
107
+ const fileStamp = isoStamp(startedAt).replace(/[:.]/g, "-");
108
+ const path = join(opts.dir, `${fileStamp}-${opts.pid}.jsonl`);
109
+ const sinkImpl = {
110
+ path,
111
+ startedAt,
112
+ write(event) {
113
+ const line = `${JSON.stringify({ ts: isoStamp(now()), elapsedMs: now() - startedAt, ...event })}\n`;
114
+ appendFileSync(path, line);
115
+ },
116
+ close() {
117
+ // JSONL is flushed per line; nothing to finalize.
118
+ },
119
+ };
120
+ sinkImpl.write({
121
+ phase: "invocation",
122
+ argv: sanitizeArgv(opts.argv),
123
+ version: opts.version,
124
+ pid: opts.pid,
125
+ cwd: process.cwd(),
126
+ });
127
+ return sinkImpl;
128
+ }
129
+ /**
130
+ * CLI entry: decide whether to trace this invocation and, if so, install a file
131
+ * sink. Returns the sink (or null when off). Called from the write driver so
132
+ * tracing is scoped to mutations — the invocations where a step timeline earns
133
+ * its keep. Never throws: a trace-setup failure degrades to no tracing.
134
+ */
135
+ export function installCliTrace(opts) {
136
+ const env = opts.env ?? process.env;
137
+ try {
138
+ const config = loadConfig(env);
139
+ if (!resolveTraceEnabled(config.traceEnabled, opts.isDev))
140
+ return null;
141
+ const created = createFileTraceSink({
142
+ dir: traceDir(env),
143
+ argv: opts.argv,
144
+ version: opts.version,
145
+ pid: opts.pid ?? process.pid,
146
+ });
147
+ setTraceSink(created);
148
+ return created;
149
+ }
150
+ catch {
151
+ return null;
152
+ }
153
+ }
154
+ /** Tear down the process trace sink (clears the in-flight marker too). */
155
+ export function closeCliTrace() {
156
+ inflight = null;
157
+ if (sink !== null) {
158
+ try {
159
+ sink.close();
160
+ }
161
+ catch {
162
+ // best-effort
163
+ }
164
+ sink = null;
165
+ }
166
+ }
167
+ //# sourceMappingURL=tracer.js.map