things-api 0.8.0 → 0.10.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 (238) hide show
  1. package/README.md +31 -11
  2. package/dist/audit/log.js +56 -2
  3. package/dist/audit/log.js.map +1 -1
  4. package/dist/audit/schema.d.ts +26 -8
  5. package/dist/audit/schema.js +42 -1
  6. package/dist/audit/schema.js.map +1 -1
  7. package/dist/cli/commands/area.d.ts +34 -2
  8. package/dist/cli/commands/area.js +140 -28
  9. package/dist/cli/commands/area.js.map +1 -1
  10. package/dist/cli/commands/doctor.d.ts +1 -1
  11. package/dist/cli/commands/doctor.js +44 -5
  12. package/dist/cli/commands/doctor.js.map +1 -1
  13. package/dist/cli/commands/mcp.js +23 -4
  14. package/dist/cli/commands/mcp.js.map +1 -1
  15. package/dist/cli/commands/project.d.ts +23 -1
  16. package/dist/cli/commands/project.js +82 -15
  17. package/dist/cli/commands/project.js.map +1 -1
  18. package/dist/cli/commands/reads.d.ts +6 -125
  19. package/dist/cli/commands/reads.js +649 -657
  20. package/dist/cli/commands/reads.js.map +1 -1
  21. package/dist/cli/commands/repeat-flags.d.ts +20 -0
  22. package/dist/cli/commands/repeat-flags.js +76 -0
  23. package/dist/cli/commands/repeat-flags.js.map +1 -0
  24. package/dist/cli/commands/setup.js +2 -3
  25. package/dist/cli/commands/setup.js.map +1 -1
  26. package/dist/cli/commands/show.d.ts +1 -1
  27. package/dist/cli/commands/show.js +169 -18
  28. package/dist/cli/commands/show.js.map +1 -1
  29. package/dist/cli/commands/snapshot.js +1 -1
  30. package/dist/cli/commands/snapshot.js.map +1 -1
  31. package/dist/cli/commands/todo.d.ts +1 -1
  32. package/dist/cli/commands/todo.js +21 -9
  33. package/dist/cli/commands/todo.js.map +1 -1
  34. package/dist/cli/commands/writes.js +378 -148
  35. package/dist/cli/commands/writes.js.map +1 -1
  36. package/dist/cli/did-you-mean.d.ts +29 -0
  37. package/dist/cli/did-you-mean.js +53 -0
  38. package/dist/cli/did-you-mean.js.map +1 -0
  39. package/dist/cli/excess-args.d.ts +15 -0
  40. package/dist/cli/excess-args.js +51 -0
  41. package/dist/cli/excess-args.js.map +1 -0
  42. package/dist/cli/glyphs.d.ts +67 -7
  43. package/dist/cli/glyphs.js +202 -19
  44. package/dist/cli/glyphs.js.map +1 -1
  45. package/dist/cli/help.d.ts +54 -0
  46. package/dist/cli/help.js +355 -0
  47. package/dist/cli/help.js.map +1 -0
  48. package/dist/cli/main.js +36 -21
  49. package/dist/cli/main.js.map +1 -1
  50. package/dist/cli/period.d.ts +39 -0
  51. package/dist/cli/period.js +141 -0
  52. package/dist/cli/period.js.map +1 -0
  53. package/dist/cli/read-driver.d.ts +83 -0
  54. package/dist/cli/read-driver.js +215 -0
  55. package/dist/cli/read-driver.js.map +1 -0
  56. package/dist/cli/render.d.ts +246 -0
  57. package/dist/cli/render.js +806 -0
  58. package/dist/cli/render.js.map +1 -0
  59. package/dist/cli/resolve-invocation.d.ts +116 -0
  60. package/dist/cli/resolve-invocation.js +261 -0
  61. package/dist/cli/resolve-invocation.js.map +1 -0
  62. package/dist/cli/shell-quote.d.ts +9 -0
  63. package/dist/cli/shell-quote.js +12 -0
  64. package/dist/cli/shell-quote.js.map +1 -0
  65. package/dist/cli/tag-filters.d.ts +59 -0
  66. package/dist/cli/tag-filters.js +57 -0
  67. package/dist/cli/tag-filters.js.map +1 -0
  68. package/dist/cli/verb-hint.d.ts +25 -0
  69. package/dist/cli/verb-hint.js +138 -0
  70. package/dist/cli/verb-hint.js.map +1 -0
  71. package/dist/cli/width.d.ts +135 -0
  72. package/dist/cli/width.js +313 -0
  73. package/dist/cli/width.js.map +1 -0
  74. package/dist/client.d.ts +146 -24
  75. package/dist/client.js +106 -16
  76. package/dist/client.js.map +1 -1
  77. package/dist/config.d.ts +11 -0
  78. package/dist/config.js +3 -0
  79. package/dist/config.js.map +1 -1
  80. package/dist/contracts.d.ts +136 -1
  81. package/dist/contracts.js +44 -1
  82. package/dist/contracts.js.map +1 -1
  83. package/dist/db/fingerprint.d.ts +12 -0
  84. package/dist/db/fingerprint.js +15 -1
  85. package/dist/db/fingerprint.js.map +1 -1
  86. package/dist/db/locate.js +1 -1
  87. package/dist/db/locate.js.map +1 -1
  88. package/dist/diagnose.d.ts +63 -0
  89. package/dist/diagnose.js +38 -1
  90. package/dist/diagnose.js.map +1 -1
  91. package/dist/index.d.ts +30 -4
  92. package/dist/index.js +35 -2
  93. package/dist/index.js.map +1 -1
  94. package/dist/mcp/server.d.ts +9 -1
  95. package/dist/mcp/server.js +850 -128
  96. package/dist/mcp/server.js.map +1 -1
  97. package/dist/model/entities.d.ts +40 -7
  98. package/dist/model/entities.js.map +1 -1
  99. package/dist/model/mappers.d.ts +7 -0
  100. package/dist/model/mappers.js +20 -3
  101. package/dist/model/mappers.js.map +1 -1
  102. package/dist/model/occurrences.d.ts +6 -1
  103. package/dist/model/occurrences.js +9 -5
  104. package/dist/model/occurrences.js.map +1 -1
  105. package/dist/model/recurrence.d.ts +17 -8
  106. package/dist/model/recurrence.js.map +1 -1
  107. package/dist/model/serialize.d.ts +28 -0
  108. package/dist/model/serialize.js +80 -0
  109. package/dist/model/serialize.js.map +1 -0
  110. package/dist/model/when-sugar.d.ts +47 -0
  111. package/dist/model/when-sugar.js +45 -0
  112. package/dist/model/when-sugar.js.map +1 -0
  113. package/dist/read/area-view.d.ts +8 -1
  114. package/dist/read/area-view.js +49 -13
  115. package/dist/read/area-view.js.map +1 -1
  116. package/dist/read/caps.d.ts +14 -0
  117. package/dist/read/caps.js +21 -0
  118. package/dist/read/caps.js.map +1 -0
  119. package/dist/read/filter-contract.d.ts +117 -0
  120. package/dist/read/filter-contract.js +78 -0
  121. package/dist/read/filter-contract.js.map +1 -0
  122. package/dist/read/log-boundary.d.ts +9 -4
  123. package/dist/read/log-boundary.js.map +1 -1
  124. package/dist/read/predicates.d.ts +61 -0
  125. package/dist/read/predicates.js +78 -0
  126. package/dist/read/predicates.js.map +1 -0
  127. package/dist/read/project-view.d.ts +12 -1
  128. package/dist/read/project-view.js +39 -8
  129. package/dist/read/project-view.js.map +1 -1
  130. package/dist/read/queries.d.ts +156 -8
  131. package/dist/read/queries.js +261 -38
  132. package/dist/read/queries.js.map +1 -1
  133. package/dist/read/search-rank.d.ts +36 -0
  134. package/dist/read/search-rank.js +31 -0
  135. package/dist/read/search-rank.js.map +1 -0
  136. package/dist/read/sections.d.ts +51 -0
  137. package/dist/read/sections.js +37 -0
  138. package/dist/read/sections.js.map +1 -0
  139. package/dist/read/show-target.d.ts +13 -4
  140. package/dist/read/show-target.js +11 -2
  141. package/dist/read/show-target.js.map +1 -1
  142. package/dist/read/sidebar-order.d.ts +19 -0
  143. package/dist/read/sidebar-order.js +93 -0
  144. package/dist/read/sidebar-order.js.map +1 -0
  145. package/dist/read/tags.d.ts +27 -3
  146. package/dist/read/tags.js +83 -12
  147. package/dist/read/tags.js.map +1 -1
  148. package/dist/read/truncation.d.ts +71 -0
  149. package/dist/read/truncation.js +217 -0
  150. package/dist/read/truncation.js.map +1 -0
  151. package/dist/read/views.d.ts +177 -19
  152. package/dist/read/views.js +390 -213
  153. package/dist/read/views.js.map +1 -1
  154. package/dist/surface-copy.d.ts +42 -0
  155. package/dist/surface-copy.js +55 -0
  156. package/dist/surface-copy.js.map +1 -1
  157. package/dist/sync-health.d.ts +78 -0
  158. package/dist/sync-health.js +312 -0
  159. package/dist/sync-health.js.map +1 -0
  160. package/dist/write/accessibility-probe.d.ts +12 -0
  161. package/dist/write/accessibility-probe.js +63 -0
  162. package/dist/write/accessibility-probe.js.map +1 -0
  163. package/dist/write/automation-probe.d.ts +7 -0
  164. package/dist/write/automation-probe.js +8 -1
  165. package/dist/write/automation-probe.js.map +1 -1
  166. package/dist/write/batch.js +4 -2
  167. package/dist/write/batch.js.map +1 -1
  168. package/dist/write/capabilities.d.ts +8 -0
  169. package/dist/write/capabilities.js +13 -5
  170. package/dist/write/capabilities.js.map +1 -1
  171. package/dist/write/commands.d.ts +2 -0
  172. package/dist/write/commands.js +562 -48
  173. package/dist/write/commands.js.map +1 -1
  174. package/dist/write/edit-checklist.js +3 -2
  175. package/dist/write/edit-checklist.js.map +1 -1
  176. package/dist/write/guards.d.ts +2 -7
  177. package/dist/write/guards.js +64 -6
  178. package/dist/write/guards.js.map +1 -1
  179. package/dist/write/heading.js +2 -0
  180. package/dist/write/heading.js.map +1 -1
  181. package/dist/write/lock.d.ts +40 -2
  182. package/dist/write/lock.js +91 -14
  183. package/dist/write/lock.js.map +1 -1
  184. package/dist/write/make-repeating-project.d.ts +4 -0
  185. package/dist/write/make-repeating-project.js +253 -0
  186. package/dist/write/make-repeating-project.js.map +1 -0
  187. package/dist/write/operations.d.ts +145 -1
  188. package/dist/write/operations.js +48 -0
  189. package/dist/write/operations.js.map +1 -1
  190. package/dist/write/pipeline.d.ts +19 -0
  191. package/dist/write/pipeline.js +109 -26
  192. package/dist/write/pipeline.js.map +1 -1
  193. package/dist/write/pre-state.d.ts +68 -3
  194. package/dist/write/pre-state.js +102 -3
  195. package/dist/write/pre-state.js.map +1 -1
  196. package/dist/write/reopen.js +3 -2
  197. package/dist/write/reopen.js.map +1 -1
  198. package/dist/write/reorder.js +27 -17
  199. package/dist/write/reorder.js.map +1 -1
  200. package/dist/write/repeat-rule.d.ts +22 -0
  201. package/dist/write/repeat-rule.js +258 -0
  202. package/dist/write/repeat-rule.js.map +1 -0
  203. package/dist/write/reversibility.js +49 -0
  204. package/dist/write/reversibility.js.map +1 -1
  205. package/dist/write/tag-refs.d.ts +47 -0
  206. package/dist/write/tag-refs.js +126 -0
  207. package/dist/write/tag-refs.js.map +1 -0
  208. package/dist/write/undo.d.ts +74 -5
  209. package/dist/write/undo.js +494 -80
  210. package/dist/write/undo.js.map +1 -1
  211. package/dist/write/vectors/registry.d.ts +17 -1
  212. package/dist/write/vectors/registry.js +18 -2
  213. package/dist/write/vectors/registry.js.map +1 -1
  214. package/dist/write/vectors/types.d.ts +119 -3
  215. package/dist/write/vectors/ui-certification.d.ts +48 -0
  216. package/dist/write/vectors/ui-certification.js +46 -0
  217. package/dist/write/vectors/ui-certification.js.map +1 -0
  218. package/dist/write/vectors/ui-drag.d.ts +188 -0
  219. package/dist/write/vectors/ui-drag.js +1095 -0
  220. package/dist/write/vectors/ui-drag.js.map +1 -0
  221. package/dist/write/vectors/ui-recipes.d.ts +70 -0
  222. package/dist/write/vectors/ui-recipes.js +558 -0
  223. package/dist/write/vectors/ui-recipes.js.map +1 -0
  224. package/dist/write/vectors/ui.d.ts +137 -0
  225. package/dist/write/vectors/ui.js +656 -0
  226. package/dist/write/vectors/ui.js.map +1 -0
  227. package/dist/write/verify/delta.d.ts +31 -3
  228. package/dist/write/verify/delta.js +22 -6
  229. package/dist/write/verify/delta.js.map +1 -1
  230. package/dist/write/verify/poller.js +1 -0
  231. package/dist/write/verify/poller.js.map +1 -1
  232. package/package.json +1 -1
  233. package/dist/cli/exit-codes.d.ts +0 -26
  234. package/dist/cli/exit-codes.js +0 -26
  235. package/dist/cli/exit-codes.js.map +0 -1
  236. package/dist/cli/output.d.ts +0 -42
  237. package/dist/cli/output.js +0 -16
  238. package/dist/cli/output.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Active Accessibility-consent probe for the ui vector: ask System Events for
3
+ * one element of the Things process's UI tree and classify the outcome. This
4
+ * is a DIFFERENT permission from Automation (which automation-probe.ts covers)
5
+ * — driving the Accessibility tree needs the process running things-api to
6
+ * hold Accessibility (System Settings ▸ Privacy & Security ▸ Accessibility).
7
+ *
8
+ * OPT-IN, exactly like the Automation probe: the query itself is a
9
+ * consent-requiring call, so on an ungranted machine it makes macOS show the
10
+ * Accessibility prompt. Skipped when Things is not running so a diagnostic
11
+ * never launches the app. The probe doubles as a light recipe canary: it
12
+ * resolves the "Items" menu every recipe enters through, so a missing menu
13
+ * (a Things update, or a non-English app) surfaces here too.
14
+ */
15
+ import { execFileSync } from "node:child_process";
16
+ import { isThingsRunning } from "./automation-probe.js";
17
+ // Resolve the "Items" menu — the entry point of every ui recipe. Returns
18
+ // "true"/"false"; a permission failure throws before it can answer.
19
+ const PROBE_SCRIPT = 'tell application "System Events" to tell process "Things3" to return (exists menu "Items" of menu bar 1)';
20
+ function defaultRun(script, timeoutMs) {
21
+ return execFileSync("osascript", ["-e", script], { encoding: "utf8", timeout: timeoutMs });
22
+ }
23
+ export function probeAccessibility(deps = {}) {
24
+ if (!(deps.isAppRunning ?? isThingsRunning)()) {
25
+ return {
26
+ status: "app-not-running",
27
+ detail: "Things is not running — the probe was skipped so a diagnostic never launches the " +
28
+ "app. Launch Things and re-run with --probe-accessibility.",
29
+ };
30
+ }
31
+ try {
32
+ const out = (deps.run ?? defaultRun)(PROBE_SCRIPT, deps.timeoutMs ?? 8000).trim();
33
+ if (out === "true") {
34
+ return {
35
+ status: "granted",
36
+ detail: "Accessibility is granted and the Things 'Items' menu resolves.",
37
+ };
38
+ }
39
+ return {
40
+ status: "menu-missing",
41
+ detail: "Accessibility appears granted but the 'Items' menu did not resolve — a Things update " +
42
+ "may have changed the menu, or the app may not be in English. The ui recipes would " +
43
+ "refuse (fail-closed) until re-certified.",
44
+ };
45
+ }
46
+ catch (err) {
47
+ const e = err;
48
+ const stderr = typeof e.stderr === "string" ? e.stderr : err instanceof Error ? err.message : String(err);
49
+ if (/-25211|-1719|not allowed assistive access|accessibility/i.test(stderr)) {
50
+ return {
51
+ status: "denied",
52
+ detail: "macOS declined the Accessibility query: the process running things-api is not granted " +
53
+ "Accessibility. Grant it under System Settings > Privacy & Security > Accessibility " +
54
+ "(see docs/setup.md for the closet-mini setup).",
55
+ };
56
+ }
57
+ return {
58
+ status: "inconclusive",
59
+ detail: `the probe failed for another reason: ${stderr.trim() || "unknown error"}`,
60
+ };
61
+ }
62
+ }
63
+ //# sourceMappingURL=accessibility-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility-probe.js","sourceRoot":"","sources":["../../src/write/accessibility-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAqBxD,yEAAyE;AACzE,oEAAoE;AACpE,MAAM,YAAY,GAChB,0GAA0G,CAAC;AAE7G,SAAS,UAAU,CAAC,MAAc,EAAE,SAAiB;IACnD,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA+B,EAAE;IAClE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,MAAM,EACJ,mFAAmF;gBACnF,2DAA2D;SAC9D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAClF,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,gEAAgE;aACzE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,MAAM,EACJ,uFAAuF;gBACvF,oFAAoF;gBACpF,0CAA0C;SAC7C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA2B,CAAC;QACtC,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7F,IAAI,0DAA0D,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,MAAM,EACJ,wFAAwF;oBACxF,qFAAqF;oBACrF,gDAAgD;aACnD,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,wCAAwC,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,EAAE;SACnF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -9,4 +9,11 @@ export interface AutomationProbeDeps {
9
9
  run?: (script: string, timeoutMs: number) => string;
10
10
  timeoutMs?: number;
11
11
  }
12
+ /**
13
+ * Is the Things app process present? No app = a frozen database (there is no
14
+ * background sync daemon). The single stable process-check shape in this
15
+ * binary — reused by the sync-health section so macOS never sees a second
16
+ * command shape.
17
+ */
18
+ export declare function isThingsRunning(): boolean;
12
19
  export declare function probeAutomation(deps?: AutomationProbeDeps): AutomationProbeResult;
@@ -9,7 +9,13 @@
9
9
  import { execFileSync } from "node:child_process";
10
10
  import { automationGrantee } from "./failure-hints.js";
11
11
  const PROBE_SCRIPT = 'tell application "Things3" to count of areas';
12
- function defaultIsAppRunning() {
12
+ /**
13
+ * Is the Things app process present? No app = a frozen database (there is no
14
+ * background sync daemon). The single stable process-check shape in this
15
+ * binary — reused by the sync-health section so macOS never sees a second
16
+ * command shape.
17
+ */
18
+ export function isThingsRunning() {
13
19
  try {
14
20
  execFileSync("pgrep", ["-x", "Things3"], { stdio: "ignore" });
15
21
  return true;
@@ -18,6 +24,7 @@ function defaultIsAppRunning() {
18
24
  return false;
19
25
  }
20
26
  }
27
+ const defaultIsAppRunning = isThingsRunning;
21
28
  function defaultRun(script, timeoutMs) {
22
29
  return execFileSync("osascript", ["-e", script], { encoding: "utf8", timeout: timeoutMs });
23
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"automation-probe.js","sourceRoot":"","sources":["../../src/write/automation-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAqBvD,MAAM,YAAY,GAAG,8CAA8C,CAAC;AAEpE,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,SAAiB;IACnD,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA4B,EAAE;IAC5D,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC;QAClD,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,MAAM,EACJ,mFAAmF;gBACnF,gCAAgC;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAC/D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sDAAsD,EAAE,CAAC;IAC/F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAqE,CAAC;QAChF,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7F,0EAA0E;QAC1E,0EAA0E;QAC1E,mEAAmE;QACnE,mEAAmE;QACnE,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzF,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EACJ,4EAA4E;oBAC5E,iDAAiD,iBAAiB,EAAE,aAAa;oBACjF,4EAA4E;oBAC5E,gFAAgF;oBAChF,kCAAkC;aACrC,CAAC;QACJ,CAAC;QACD,IAAI,+CAA+C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,MAAM,EACJ,qEAAqE,iBAAiB,EAAE,GAAG;oBAC3F,kFAAkF;oBAClF,uDAAuD;aAC1D,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,wCAAwC,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,EAAE;SACnF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"automation-probe.js","sourceRoot":"","sources":["../../src/write/automation-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAqBvD,MAAM,YAAY,GAAG,8CAA8C,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAE5C,SAAS,UAAU,CAAC,MAAc,EAAE,SAAiB;IACnD,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA4B,EAAE;IAC5D,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC;QAClD,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,MAAM,EACJ,mFAAmF;gBACnF,gCAAgC;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAC/D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sDAAsD,EAAE,CAAC;IAC/F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAqE,CAAC;QAChF,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7F,0EAA0E;QAC1E,0EAA0E;QAC1E,mEAAmE;QACnE,mEAAmE;QACnE,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzF,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EACJ,4EAA4E;oBAC5E,iDAAiD,iBAAiB,EAAE,aAAa;oBACjF,4EAA4E;oBAC5E,gFAAgF;oBAChF,kCAAkC;aACrC,CAAC;QACJ,CAAC;QACD,IAAI,+CAA+C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,MAAM,EACJ,qEAAqE,iBAAiB,EAAE,GAAG;oBAC3F,kFAAkF;oBAClF,uDAAuD;aAC1D,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,wCAAwC,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,EAAE;SACnF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -74,8 +74,10 @@ export async function runBatch(deps, ops, options = {}, onResult) {
74
74
  // the runtime validators (loud on bad shapes), same as single ops.
75
75
  outcome =
76
76
  entry.op === "reorder"
77
- ? await runReorder(deps, entry.params, writeOptions)
78
- : await runMutation(deps, entry.op, entry.params, writeOptions);
77
+ ? // batch ops run sequentially by design: the mutation lock serializes them and create-probe verification must never race
78
+ await runReorder(deps, entry.params, writeOptions)
79
+ : // same sequencing requirement as the reorder branch above
80
+ await runMutation(deps, entry.op, entry.params, writeOptions);
79
81
  }
80
82
  catch (err) {
81
83
  // Param-shape errors (exclusive combos etc.) surface per-op, not fatally.
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/write/batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAA+C,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAqC,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAC;AAqC9D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,eAAe,CAAC,CAAC;AAEnD,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,OAAyB;IACrD,OAAO,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAe,EACf,GAAc,EACd,UAAwB,EAAE,EAC1B,QAA4C;IAE5C,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAY,CAAC;QACpC,IAAI,OAAyB,CAAC;QAE9B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG;gBACR,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACrB,MAAM,EAAE,6CAA6C;aACtD,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACvF,OAAO,GAAG;gBACR,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,MAAM,CAAE,KAA0B,EAAE,EAAE,CAAC;gBAC3C,MAAM,EAAE,4BAA4B;aACrC,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,OAAO,GAAG;gBACR,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,MAAM,EAAE,eAAe,KAAK,CAAC,EAAE,iCAAiC;aACjE,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACrE,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;QAClF,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAiB;gBACjC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,yBAAyB,KAAK,SAAS,IAAI;oBAC5D,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,yBAAyB;iBACnE,CAAC;gBACF,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,wBAAwB,KAAK,SAAS,IAAI;oBAC3D,wBAAwB,EAAE,KAAK,CAAC,OAAO,CAAC,wBAAwB;iBACjE,CAAC;gBACF,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,oBAAoB,KAAK,SAAS,IAAI;oBACvD,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB;iBACzD,CAAC;gBACF,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,qBAAqB,KAAK,SAAS,IAAI;oBACxD,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,qBAAqB;iBAC3D,CAAC;gBACF,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS,IAAI;oBAClD,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe;iBAC/C,CAAC;gBACF,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,IAAI;oBAChD,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa;iBAC3C,CAAC;gBACF,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBAChD,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;aAC7D,CAAC;YACF,IAAI,CAAC;gBACH,qEAAqE;gBACrE,mEAAmE;gBACnE,OAAO;oBACL,KAAK,CAAC,EAAE,KAAK,SAAS;wBACpB,CAAC,CAAC,MAAM,UAAU,CACd,IAAI,EACJ,KAAK,CAAC,MAAkD,EACxD,YAAY,CACb;wBACH,CAAC,CAAC,MAAM,WAAW,CACf,IAAI,EACJ,KAAK,CAAC,EAAuC,EAC7C,KAAK,CAAC,MAAe,EACrB,YAAY,CACb,CAAC;YACV,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,0EAA0E;gBAC1E,OAAO,GAAG;oBACR,IAAI,EAAE,SAAS;oBACf,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACzD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAoB,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC;IACpF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/write/batch.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { type OperationKind } from "./operations.ts";
7
7
  import { type ReversibilityEntry } from "./reversibility.ts";
8
+ import { type CertificationEntry } from "./vectors/ui-certification.ts";
8
9
  import type { VectorId, VectorSupport } from "./vectors/types.ts";
9
10
  export interface CapabilityEntry {
10
11
  op: OperationKind;
@@ -15,5 +16,12 @@ export interface CapabilityEntry {
15
16
  } & (VectorSupport | {
16
17
  support: "no";
17
18
  }))[];
19
+ /**
20
+ * ui-vector ops only: the on-device certification status. `uncertified`
21
+ * means the GUI recipe is wired but not yet confirmed on real hardware (see
22
+ * docs/lab/ui-certification-runbook.md); the op still runs, but a successful
23
+ * drive carries a warning to that effect.
24
+ */
25
+ certification?: CertificationEntry;
18
26
  }
19
27
  export declare function capabilitiesTable(op?: OperationKind): CapabilityEntry[];
@@ -5,14 +5,22 @@
5
5
  */
6
6
  import { OPERATION_KINDS } from "./operations.js";
7
7
  import { REVERSIBILITY } from "./reversibility.js";
8
+ import { certificationOf } from "./vectors/ui-certification.js";
8
9
  import { defaultVectors } from "./vectors/registry.js";
9
10
  export function capabilitiesTable(op) {
10
11
  const vectors = defaultVectors();
11
12
  const ops = op !== undefined ? [op] : [...OPERATION_KINDS];
12
- return ops.map((kind) => ({
13
- op: kind,
14
- undo: REVERSIBILITY[kind],
15
- vectors: vectors.map((v) => ({ vector: v.id, ...(v.matrix[kind] ?? { support: "no" }) })),
16
- }));
13
+ return ops.map((kind) => {
14
+ const cert = certificationOf(kind);
15
+ const entry = {
16
+ op: kind,
17
+ undo: REVERSIBILITY[kind],
18
+ // oxlint-disable-next-line no-map-spread -- building fresh capability rows, not mutating
19
+ vectors: vectors.map((v) => ({ vector: v.id, ...(v.matrix[kind] ?? { support: "no" }) })),
20
+ };
21
+ if (cert !== undefined)
22
+ entry.certification = cert;
23
+ return entry;
24
+ });
17
25
  }
18
26
  //# sourceMappingURL=capabilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/write/capabilities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUvD,MAAM,UAAU,iBAAiB,CAAC,EAAkB;IAClD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/write/capabilities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAA2B,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAiBvD,MAAM,UAAU,iBAAiB,CAAC,EAAkB;IAClD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,KAAK,GAAoB;YAC7B,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;YACzB,yFAAyF;YACzF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;QACF,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -9,6 +9,7 @@ import { type IsoDate } from "../model/dates.ts";
9
9
  import type { HazardId } from "./guards.ts";
10
10
  import type { OperationKind, OperationParamsMap } from "./operations.ts";
11
11
  import { type PreState } from "./pre-state.ts";
12
+ import { assertRepeatRule } from "./repeat-rule.ts";
12
13
  import type { CompiledInvocation, VectorId } from "./vectors/types.ts";
13
14
  import type { DeltaSpec } from "./verify/delta.ts";
14
15
  export interface CompileCtx {
@@ -27,6 +28,7 @@ export interface CommandSpec<K extends OperationKind = OperationKind> {
27
28
  expectedDelta(pre: PreState, params: OperationParamsMap[K], ctx: DeltaCtx): DeltaSpec;
28
29
  compile(params: OperationParamsMap[K], vector: VectorId, pre: PreState, ctx: CompileCtx): CompiledInvocation;
29
30
  }
31
+ export { assertRepeatRule };
30
32
  export declare const COMMANDS: {
31
33
  [K in OperationKind]: CommandSpec<K>;
32
34
  };