things-api 0.9.0 → 0.11.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 (261) hide show
  1. package/README.md +57 -12
  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/clock.d.ts +8 -0
  8. package/dist/cli/clock.js +24 -0
  9. package/dist/cli/clock.js.map +1 -0
  10. package/dist/cli/commands/area.d.ts +26 -3
  11. package/dist/cli/commands/area.js +129 -75
  12. package/dist/cli/commands/area.js.map +1 -1
  13. package/dist/cli/commands/doctor.d.ts +1 -1
  14. package/dist/cli/commands/doctor.js +44 -5
  15. package/dist/cli/commands/doctor.js.map +1 -1
  16. package/dist/cli/commands/install-skill.d.ts +45 -0
  17. package/dist/cli/commands/install-skill.js +207 -0
  18. package/dist/cli/commands/install-skill.js.map +1 -0
  19. package/dist/cli/commands/mcp.js +23 -4
  20. package/dist/cli/commands/mcp.js.map +1 -1
  21. package/dist/cli/commands/project.d.ts +18 -1
  22. package/dist/cli/commands/project.js +74 -35
  23. package/dist/cli/commands/project.js.map +1 -1
  24. package/dist/cli/commands/reads.d.ts +15 -2
  25. package/dist/cli/commands/reads.js +459 -165
  26. package/dist/cli/commands/reads.js.map +1 -1
  27. package/dist/cli/commands/repeat-flags.d.ts +20 -0
  28. package/dist/cli/commands/repeat-flags.js +76 -0
  29. package/dist/cli/commands/repeat-flags.js.map +1 -0
  30. package/dist/cli/commands/setup.js +8 -4
  31. package/dist/cli/commands/setup.js.map +1 -1
  32. package/dist/cli/commands/show.js +53 -30
  33. package/dist/cli/commands/show.js.map +1 -1
  34. package/dist/cli/commands/todo.d.ts +1 -1
  35. package/dist/cli/commands/todo.js +20 -13
  36. package/dist/cli/commands/todo.js.map +1 -1
  37. package/dist/cli/commands/writes.js +388 -161
  38. package/dist/cli/commands/writes.js.map +1 -1
  39. package/dist/cli/did-you-mean.d.ts +1 -1
  40. package/dist/cli/excess-args.d.ts +15 -0
  41. package/dist/cli/excess-args.js +51 -0
  42. package/dist/cli/excess-args.js.map +1 -0
  43. package/dist/cli/glyphs.d.ts +55 -2
  44. package/dist/cli/glyphs.js +114 -21
  45. package/dist/cli/glyphs.js.map +1 -1
  46. package/dist/cli/help.d.ts +54 -0
  47. package/dist/cli/help.js +405 -0
  48. package/dist/cli/help.js.map +1 -0
  49. package/dist/cli/main.js +64 -26
  50. package/dist/cli/main.js.map +1 -1
  51. package/dist/cli/move-hint.d.ts +45 -0
  52. package/dist/cli/move-hint.js +196 -0
  53. package/dist/cli/move-hint.js.map +1 -0
  54. package/dist/cli/period.d.ts +9 -8
  55. package/dist/cli/period.js +56 -30
  56. package/dist/cli/period.js.map +1 -1
  57. package/dist/cli/read-driver.d.ts +26 -19
  58. package/dist/cli/read-driver.js +77 -33
  59. package/dist/cli/read-driver.js.map +1 -1
  60. package/dist/cli/render.d.ts +92 -28
  61. package/dist/cli/render.js +333 -103
  62. package/dist/cli/render.js.map +1 -1
  63. package/dist/cli/resolve-invocation.d.ts +42 -4
  64. package/dist/cli/resolve-invocation.js +97 -14
  65. package/dist/cli/resolve-invocation.js.map +1 -1
  66. package/dist/cli/skill-check.d.ts +21 -0
  67. package/dist/cli/skill-check.js +82 -0
  68. package/dist/cli/skill-check.js.map +1 -0
  69. package/dist/cli/skill.d.ts +62 -0
  70. package/dist/cli/skill.js +142 -0
  71. package/dist/cli/skill.js.map +1 -0
  72. package/dist/cli/tag-filters.d.ts +63 -0
  73. package/dist/cli/tag-filters.js +59 -0
  74. package/dist/cli/tag-filters.js.map +1 -0
  75. package/dist/cli/verb-hint.d.ts +25 -0
  76. package/dist/cli/verb-hint.js +163 -0
  77. package/dist/cli/verb-hint.js.map +1 -0
  78. package/dist/cli/version.d.ts +4 -0
  79. package/dist/cli/version.js +18 -0
  80. package/dist/cli/version.js.map +1 -0
  81. package/dist/cli/width.d.ts +135 -0
  82. package/dist/cli/width.js +313 -0
  83. package/dist/cli/width.js.map +1 -0
  84. package/dist/client.d.ts +160 -24
  85. package/dist/client.js +132 -19
  86. package/dist/client.js.map +1 -1
  87. package/dist/config.d.ts +11 -0
  88. package/dist/config.js +3 -0
  89. package/dist/config.js.map +1 -1
  90. package/dist/contracts.d.ts +97 -17
  91. package/dist/contracts.js +44 -1
  92. package/dist/contracts.js.map +1 -1
  93. package/dist/db/fingerprint.d.ts +12 -0
  94. package/dist/db/fingerprint.js +15 -1
  95. package/dist/db/fingerprint.js.map +1 -1
  96. package/dist/db/locate.js +1 -1
  97. package/dist/db/locate.js.map +1 -1
  98. package/dist/diagnose.d.ts +63 -0
  99. package/dist/diagnose.js +38 -1
  100. package/dist/diagnose.js.map +1 -1
  101. package/dist/index.d.ts +36 -5
  102. package/dist/index.js +38 -2
  103. package/dist/index.js.map +1 -1
  104. package/dist/mcp/server.d.ts +9 -1
  105. package/dist/mcp/server.js +1038 -436
  106. package/dist/mcp/server.js.map +1 -1
  107. package/dist/model/clock.d.ts +61 -0
  108. package/dist/model/clock.js +71 -0
  109. package/dist/model/clock.js.map +1 -0
  110. package/dist/model/dates.d.ts +26 -3
  111. package/dist/model/dates.js +84 -3
  112. package/dist/model/dates.js.map +1 -1
  113. package/dist/model/entities.d.ts +48 -10
  114. package/dist/model/entities.js.map +1 -1
  115. package/dist/model/mappers.d.ts +9 -2
  116. package/dist/model/mappers.js +32 -9
  117. package/dist/model/mappers.js.map +1 -1
  118. package/dist/model/serialize.d.ts +28 -0
  119. package/dist/model/serialize.js +80 -0
  120. package/dist/model/serialize.js.map +1 -0
  121. package/dist/model/when-sugar.d.ts +47 -0
  122. package/dist/model/when-sugar.js +45 -0
  123. package/dist/model/when-sugar.js.map +1 -0
  124. package/dist/read/area-view.d.ts +8 -1
  125. package/dist/read/area-view.js +55 -17
  126. package/dist/read/area-view.js.map +1 -1
  127. package/dist/read/detail.d.ts +1 -1
  128. package/dist/read/detail.js +11 -4
  129. package/dist/read/detail.js.map +1 -1
  130. package/dist/read/filter-contract.d.ts +117 -0
  131. package/dist/read/filter-contract.js +78 -0
  132. package/dist/read/filter-contract.js.map +1 -0
  133. package/dist/read/log-boundary.d.ts +1 -1
  134. package/dist/read/log-boundary.js +13 -3
  135. package/dist/read/log-boundary.js.map +1 -1
  136. package/dist/read/predicates.d.ts +30 -0
  137. package/dist/read/predicates.js +30 -0
  138. package/dist/read/predicates.js.map +1 -1
  139. package/dist/read/project-view.d.ts +12 -1
  140. package/dist/read/project-view.js +45 -12
  141. package/dist/read/project-view.js.map +1 -1
  142. package/dist/read/queries.d.ts +152 -7
  143. package/dist/read/queries.js +277 -36
  144. package/dist/read/queries.js.map +1 -1
  145. package/dist/read/sections.d.ts +51 -0
  146. package/dist/read/sections.js +37 -0
  147. package/dist/read/sections.js.map +1 -0
  148. package/dist/read/sidebar-order.js +2 -1
  149. package/dist/read/sidebar-order.js.map +1 -1
  150. package/dist/read/snapshot.d.ts +1 -1
  151. package/dist/read/snapshot.js +9 -2
  152. package/dist/read/snapshot.js.map +1 -1
  153. package/dist/read/tags.d.ts +27 -3
  154. package/dist/read/tags.js +83 -12
  155. package/dist/read/tags.js.map +1 -1
  156. package/dist/read/truncation.d.ts +71 -0
  157. package/dist/read/{pagination.js → truncation.js} +103 -94
  158. package/dist/read/truncation.js.map +1 -0
  159. package/dist/read/views.d.ts +147 -22
  160. package/dist/read/views.js +282 -80
  161. package/dist/read/views.js.map +1 -1
  162. package/dist/surface-copy.d.ts +19 -0
  163. package/dist/surface-copy.js +32 -0
  164. package/dist/surface-copy.js.map +1 -1
  165. package/dist/sync-health.d.ts +78 -0
  166. package/dist/sync-health.js +312 -0
  167. package/dist/sync-health.js.map +1 -0
  168. package/dist/write/accessibility-probe.d.ts +12 -0
  169. package/dist/write/accessibility-probe.js +71 -0
  170. package/dist/write/accessibility-probe.js.map +1 -0
  171. package/dist/write/automation-probe.d.ts +8 -1
  172. package/dist/write/automation-probe.js +16 -1
  173. package/dist/write/automation-probe.js.map +1 -1
  174. package/dist/write/batch.js +5 -2
  175. package/dist/write/batch.js.map +1 -1
  176. package/dist/write/capabilities.d.ts +8 -0
  177. package/dist/write/capabilities.js +13 -6
  178. package/dist/write/capabilities.js.map +1 -1
  179. package/dist/write/commands.d.ts +3 -1
  180. package/dist/write/commands.js +602 -49
  181. package/dist/write/commands.js.map +1 -1
  182. package/dist/write/edit-checklist.js +3 -2
  183. package/dist/write/edit-checklist.js.map +1 -1
  184. package/dist/write/guards.d.ts +2 -7
  185. package/dist/write/guards.js +87 -6
  186. package/dist/write/guards.js.map +1 -1
  187. package/dist/write/heading.js +2 -0
  188. package/dist/write/heading.js.map +1 -1
  189. package/dist/write/lock.d.ts +40 -2
  190. package/dist/write/lock.js +91 -14
  191. package/dist/write/lock.js.map +1 -1
  192. package/dist/write/make-repeating-project.d.ts +4 -0
  193. package/dist/write/make-repeating-project.js +253 -0
  194. package/dist/write/make-repeating-project.js.map +1 -0
  195. package/dist/write/operations.d.ts +145 -1
  196. package/dist/write/operations.js +48 -0
  197. package/dist/write/operations.js.map +1 -1
  198. package/dist/write/pipeline.d.ts +73 -2
  199. package/dist/write/pipeline.js +218 -43
  200. package/dist/write/pipeline.js.map +1 -1
  201. package/dist/write/planner.js +8 -1
  202. package/dist/write/planner.js.map +1 -1
  203. package/dist/write/pre-state.d.ts +105 -3
  204. package/dist/write/pre-state.js +144 -3
  205. package/dist/write/pre-state.js.map +1 -1
  206. package/dist/write/recurrence-rule-blob.d.ts +65 -0
  207. package/dist/write/recurrence-rule-blob.js +150 -0
  208. package/dist/write/recurrence-rule-blob.js.map +1 -0
  209. package/dist/write/reopen.js +3 -2
  210. package/dist/write/reopen.js.map +1 -1
  211. package/dist/write/reorder.js +27 -17
  212. package/dist/write/reorder.js.map +1 -1
  213. package/dist/write/repeat-rule.d.ts +22 -0
  214. package/dist/write/repeat-rule.js +258 -0
  215. package/dist/write/repeat-rule.js.map +1 -0
  216. package/dist/write/reversibility.js +49 -0
  217. package/dist/write/reversibility.js.map +1 -1
  218. package/dist/write/tag-refs.d.ts +47 -0
  219. package/dist/write/tag-refs.js +126 -0
  220. package/dist/write/tag-refs.js.map +1 -0
  221. package/dist/write/undo.d.ts +74 -5
  222. package/dist/write/undo.js +493 -80
  223. package/dist/write/undo.js.map +1 -1
  224. package/dist/write/vectors/registry.d.ts +15 -1
  225. package/dist/write/vectors/registry.js +65 -2
  226. package/dist/write/vectors/registry.js.map +1 -1
  227. package/dist/write/vectors/simulator.d.ts +44 -0
  228. package/dist/write/vectors/simulator.js +1136 -0
  229. package/dist/write/vectors/simulator.js.map +1 -0
  230. package/dist/write/vectors/types.d.ts +154 -3
  231. package/dist/write/vectors/ui-certification.d.ts +54 -0
  232. package/dist/write/vectors/ui-certification.js +43 -0
  233. package/dist/write/vectors/ui-certification.js.map +1 -0
  234. package/dist/write/vectors/ui-drag.d.ts +188 -0
  235. package/dist/write/vectors/ui-drag.js +1095 -0
  236. package/dist/write/vectors/ui-drag.js.map +1 -0
  237. package/dist/write/vectors/ui-recipes.d.ts +83 -0
  238. package/dist/write/vectors/ui-recipes.js +610 -0
  239. package/dist/write/vectors/ui-recipes.js.map +1 -0
  240. package/dist/write/vectors/ui.d.ts +152 -0
  241. package/dist/write/vectors/ui.js +704 -0
  242. package/dist/write/vectors/ui.js.map +1 -0
  243. package/dist/write/verify/delta.d.ts +141 -4
  244. package/dist/write/verify/delta.js +199 -21
  245. package/dist/write/verify/delta.js.map +1 -1
  246. package/dist/write/verify/poller.d.ts +7 -1
  247. package/dist/write/verify/poller.js +21 -1
  248. package/dist/write/verify/poller.js.map +1 -1
  249. package/package.json +18 -3
  250. package/skills/things-cli/SKILL.md +53 -0
  251. package/skills/things-cli/references/contracts.md +41 -0
  252. package/skills/things-cli/references/gui.md +11 -0
  253. package/skills/things-cli/references/model.md +51 -0
  254. package/dist/cli/exit-codes.d.ts +0 -26
  255. package/dist/cli/exit-codes.js +0 -26
  256. package/dist/cli/exit-codes.js.map +0 -1
  257. package/dist/cli/output.d.ts +0 -42
  258. package/dist/cli/output.js +0 -16
  259. package/dist/cli/output.js.map +0 -1
  260. package/dist/read/pagination.d.ts +0 -104
  261. package/dist/read/pagination.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/db/fingerprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/db/fingerprint.ts"],"names":[],"mappings":"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"}
package/dist/db/locate.js CHANGED
@@ -31,7 +31,7 @@ export function locateThingsDb(options) {
31
31
  }
32
32
  const byMtime = matches
33
33
  .map((path) => ({ path, mtime: statSync(path).mtimeMs }))
34
- .sort((a, b) => b.mtime - a.mtime);
34
+ .toSorted((a, b) => b.mtime - a.mtime);
35
35
  const first = byMtime[0];
36
36
  if (!first)
37
37
  throw new ThingsDbNotFoundError(join(home, CONTAINER_GLOB));
@@ -1 +1 @@
1
- {"version":3,"file":"locate.js","sourceRoot":"","sources":["../../src/db/locate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,cAAc,GAAG,IAAI,CACzB,gEAAgE,EAChE,yDAAyD,CAC1D,CAAC;AASF,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,QAAgB;QAC1B,KAAK,CACH,uCAAuC,QAAQ,KAAK;YAClD,8DAA8D;YAC9D,oDAAoD,CACvD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,OAA4C;IACzE,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACtF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,OAAO,GAAG,OAAO;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACxD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IACxE,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,WAAW;QACnB,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KAC7D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"locate.js","sourceRoot":"","sources":["../../src/db/locate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,cAAc,GAAG,IAAI,CACzB,gEAAgE,EAChE,yDAAyD,CAC1D,CAAC;AASF,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,QAAgB;QAC1B,KAAK,CACH,uCAAuC,QAAQ,KAAK;YAClD,8DAA8D;YAC9D,oDAAoD,CACvD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,OAA4C;IACzE,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACtF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,OAAO,GAAG,OAAO;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACxD,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IACxE,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,WAAW;QACnB,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KAC7D,CAAC;AACJ,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import { type AutomationProbeDeps, type AutomationProbeStatus } from "./write/automation-probe.ts";
2
+ import { type AccessibilityProbeDeps, type AccessibilityProbeStatus } from "./write/accessibility-probe.ts";
3
+ import { type CertificationStatus } from "./write/vectors/ui-certification.ts";
2
4
  import { type AvailabilityDeps, type ShortcutsState, type UrlSchemeState } from "./write/availability.ts";
3
5
  import { type EnvironmentChange, type EnvironmentTracker, type EnvironmentTuple } from "./write/environment.ts";
6
+ import { type SyncHealth, type SyncHealthDeps } from "./sync-health.ts";
4
7
  import { ExitCode, type EnvelopeMeta } from "./contracts.ts";
5
8
  export interface DiagnoseReport {
6
9
  db: {
@@ -42,6 +45,29 @@ export interface DiagnoseReport {
42
45
  status: AutomationProbeStatus | "not-probed";
43
46
  detail: string;
44
47
  };
48
+ /**
49
+ * The Accessibility GUI ("ui") vector's health: whether it is enabled on
50
+ * this machine, whether the app is running, the Accessibility grant + recipe
51
+ * canary (opt-in, --probe-accessibility, mirroring the Automation probe so a
52
+ * diagnostic never triggers a surprise TCC prompt), and per-op certification.
53
+ */
54
+ ui: {
55
+ /** config.ui.enabled — the first of the vector's two keys. */
56
+ enabled: boolean;
57
+ appRunning: boolean;
58
+ accessibility: {
59
+ status: AccessibilityProbeStatus | "not-probed";
60
+ detail: string;
61
+ };
62
+ /** Manifest profile ("provisional" until a real-hardware sitting lands). */
63
+ certificationProfile: string;
64
+ /** Per-op certification: recipes ship uncertified until certified on hardware. */
65
+ certification: {
66
+ op: string;
67
+ status: CertificationStatus;
68
+ }[];
69
+ reason: string;
70
+ };
45
71
  availability: {
46
72
  /** On-disk 'Enable Things URLs' state (group-container plist; Phase 21b). */
47
73
  urlScheme: UrlSchemeState;
@@ -59,6 +85,24 @@ export interface DiagnoseReport {
59
85
  undecodable: number;
60
86
  detail: string;
61
87
  };
88
+ /**
89
+ * Local-history integrity: writes that were STARTED but whose result was
90
+ * never recorded (M3). Each mutation records its intent before touching the
91
+ * app and its outcome after; an intent with no recorded outcome means the
92
+ * process died mid-write, so a change may have been applied without being
93
+ * saved to the local history. A non-zero count is advisory, not a failure.
94
+ */
95
+ audit: {
96
+ orphanedIntents: number;
97
+ newestOrphanIntent: string | null;
98
+ };
99
+ /**
100
+ * Freshness + sync-liveness proxies for long-running headless operation
101
+ * (docs/lab/headless-research.md SYNC1 + SYNC2): app-running, WAL write
102
+ * activity, last local edit, last foreground, and — only when a Things Cloud
103
+ * account is attached — the sync engine's last-attempt timestamp.
104
+ */
105
+ syncHealth: SyncHealth;
62
106
  }
63
107
  export interface DiagnoseOptions {
64
108
  /**
@@ -68,10 +112,22 @@ export interface DiagnoseOptions {
68
112
  * not running so a diagnostic never launches the app.
69
113
  */
70
114
  probeAutomation?: boolean;
115
+ /**
116
+ * Actively test Accessibility consent + the ui recipe canary by querying the
117
+ * Things UI tree once. Opt-in for the same reason as probeAutomation: the
118
+ * probe itself can make macOS show the Accessibility prompt.
119
+ */
120
+ probeAccessibility?: boolean;
71
121
  /** Test seams. */
72
122
  probeDeps?: AutomationProbeDeps;
123
+ /** Test seam for the Accessibility probe. */
124
+ accessibilityProbeDeps?: AccessibilityProbeDeps;
73
125
  environment?: EnvironmentTracker;
74
126
  availability?: AvailabilityDeps;
127
+ /** Test seams for the sync-health section (clock, process check, WAL/plist readers). */
128
+ syncHealth?: SyncHealthDeps;
129
+ /** Directory holding the audit JSONL files; defaults to the state dir. Test seam. */
130
+ auditDir?: string;
75
131
  }
76
132
  export interface DiagnoseResult {
77
133
  report: DiagnoseReport | null;
@@ -83,4 +139,11 @@ export interface DiagnoseResult {
83
139
  exitCode: ExitCode;
84
140
  meta: Pick<EnvelopeMeta, "dbVersion" | "fingerprint">;
85
141
  }
142
+ /**
143
+ * Which bundled Apple Shortcuts proxies are installed — a standalone
144
+ * environment accessor that needs no database (the shortcuts probe is a pure
145
+ * host check). The public capability behind `things setup shortcuts`; the full
146
+ * {@link diagnose} report carries the same state under `availability.shortcuts`.
147
+ */
148
+ export declare function shortcutProxies(deps?: AvailabilityDeps): ShortcutsState;
86
149
  export declare function diagnose(dbPath?: string, options?: DiagnoseOptions): DiagnoseResult;
package/dist/diagnose.js CHANGED
@@ -5,15 +5,20 @@
5
5
  */
6
6
  import { existsSync } from "node:fs";
7
7
  import { loadConfig } from "./config.js";
8
+ import { auditDir } from "./paths.js";
9
+ import { readAuditRecords, scanAuditIntegrity } from "./write/undo.js";
8
10
  import { decodeRecurrenceRule } from "./model/recurrence.js";
9
11
  import { BASELINES } from "./db/baselines/index.js";
10
12
  import { openConnection, ThingsDbOpenError } from "./db/connection.js";
11
13
  import { compareToBaseline, observeSchema } from "./db/fingerprint.js";
12
14
  import { locateThingsDb, ThingsDbNotFoundError } from "./db/locate.js";
13
- import { probeAutomation, } from "./write/automation-probe.js";
15
+ import { isThingsRunning, probeAutomation, } from "./write/automation-probe.js";
16
+ import { probeAccessibility, } from "./write/accessibility-probe.js";
17
+ import { allCertifications, UI_CERTIFICATION_PROFILE, } from "./write/vectors/ui-certification.js";
14
18
  import { readShortcutProxies, readUrlSchemeEnabled, } from "./write/availability.js";
15
19
  import { createEnvironmentTracker, diffEnvironment, } from "./write/environment.js";
16
20
  import { sdefDeclaresPrivateReorder } from "./write/experimental.js";
21
+ import { computeSyncHealth } from "./sync-health.js";
17
22
  import { ExitCode, PKG_VERSION } from "./contracts.js";
18
23
  const THINGS_APP = "/Applications/Things3.app";
19
24
  /** Decode every repeating template's rule blob; count the failures. */
@@ -51,6 +56,15 @@ function scanRecurrenceRules(db) {
51
56
  "templates are unavailable",
52
57
  };
53
58
  }
59
+ /**
60
+ * Which bundled Apple Shortcuts proxies are installed — a standalone
61
+ * environment accessor that needs no database (the shortcuts probe is a pure
62
+ * host check). The public capability behind `things setup shortcuts`; the full
63
+ * {@link diagnose} report carries the same state under `availability.shortcuts`.
64
+ */
65
+ export function shortcutProxies(deps = {}) {
66
+ return readShortcutProxies(deps);
67
+ }
54
68
  export function diagnose(dbPath, options = {}) {
55
69
  let located;
56
70
  try {
@@ -162,11 +176,34 @@ export function diagnose(dbPath, options = {}) {
162
176
  detail: "opt-in: pass --probe-automation to actively test Automation consent (may " +
163
177
  "show a one-time macOS prompt; skipped when Things is not running)",
164
178
  },
179
+ ui: {
180
+ enabled: config.ui.enabled,
181
+ appRunning: isThingsRunning(),
182
+ accessibility: options.probeAccessibility === true
183
+ ? probeAccessibility(options.accessibilityProbeDeps)
184
+ : {
185
+ status: "not-probed",
186
+ detail: "opt-in: pass --probe-accessibility to test Accessibility consent + the recipe " +
187
+ "canary (may show a one-time macOS prompt; skipped when Things is not running)",
188
+ },
189
+ certificationProfile: UI_CERTIFICATION_PROFILE,
190
+ certification: allCertifications().map(({ op, entry }) => ({
191
+ op,
192
+ status: entry.status,
193
+ })),
194
+ reason: config.ui.enabled
195
+ ? "on — GUI-driven ops available (each still needs --dangerously-drive-gui and grants " +
196
+ "Accessibility; recipes are uncertified until a real-hardware sitting)"
197
+ : "off — GUI-driven ops unavailable (`things config set ui-enabled true` to opt in; " +
198
+ "intended for a dedicated always-on Mac, see docs/setup.md)",
199
+ },
165
200
  availability: {
166
201
  urlScheme: readUrlSchemeEnabled(options.availability),
167
202
  shortcuts: readShortcutProxies(options.availability),
168
203
  },
169
204
  recurrence: scanRecurrenceRules(conn.db),
205
+ syncHealth: computeSyncHealth(conn.db, located.path, options.syncHealth),
206
+ audit: scanAuditIntegrity(readAuditRecords(options.auditDir ?? auditDir())),
170
207
  };
171
208
  return {
172
209
  report,
@@ -1 +1 @@
1
- {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,8 @@
6
6
  * See docs/design/architecture.md.
7
7
  */
8
8
  export { openThings } from "./client.ts";
9
- export type { OpenOptions, ThingsClient } from "./client.ts";
9
+ export type { BoundedAreaView, BoundedList, BoundedSectionsView, BoundedTodayView, GroupedBound, ListBound, OpenOptions, ThingsClient, } from "./client.ts";
10
+ export type { Truncation, GroupedTruncation, GroupBlock, SectionCount } from "./contracts.ts";
10
11
  export { diagnose } from "./diagnose.ts";
11
12
  export type { DiagnoseOptions, DiagnoseReport, DiagnoseResult } from "./diagnose.ts";
12
13
  export { probeAutomation } from "./write/automation-probe.ts";
@@ -17,12 +18,12 @@ export type { FailureHint, LikelyCause } from "./write/failure-hints.ts";
17
18
  export { capabilitiesTable } from "./write/capabilities.ts";
18
19
  export type { CapabilityEntry } from "./write/capabilities.ts";
19
20
  export { saveConfigKey } from "./config.ts";
20
- export { createThingsMcpServer } from "./mcp/server.ts";
21
- export type { McpServerOptions } from "./mcp/server.ts";
22
21
  export type { UndoItemResult, UndoOptions, UndoPlan, UndoStep } from "./write/undo.ts";
23
22
  export type { BatchItemResult, BatchOp, BatchOptions } from "./write/batch.ts";
24
23
  export type { ReorderResult } from "./write/reorder.ts";
25
24
  export type { SearchOptions, SomedayFilter, UpcomingFilter, ViewFilter, ChangedItem, } from "./read/views.ts";
25
+ export { FILTER_CONTRACT, hasTagPresence, tagFlagConflict, tagFilterFields, validateViewArgs, } from "./read/filter-contract.ts";
26
+ export type { BoundModel, FilterArgs, FilterVocab, TagPresence, TagSemantics, ViewFilterSpec, ViewName, ViewValidation, } from "./read/filter-contract.ts";
26
27
  export type { Acknowledgements, AreaAddParams, ContainerRef, OperationKind, OperationParamsMap, ProjectAddParams, ProjectCompleteParams, ProjectMoveParams, ProjectUpdateParams, ReorderParams, ReorderScope, ReorderStrategy, TagAddParams, TagUpdateParams, AreaUpdateParams, TodoAddParams, TodoMoveParams, TodoUpdateParams, WhenValue, } from "./write/operations.ts";
27
28
  export { OPERATION_KINDS } from "./write/operations.ts";
28
29
  export type { MutationPlan, MutationResult, WriteOptions } from "./write/pipeline.ts";
@@ -31,17 +32,47 @@ export { HAZARD_IDS } from "./write/guards.ts";
31
32
  export type { CompiledInvocation, VectorId, VectorMatrix, VectorSupport, WriteVector, } from "./write/vectors/types.ts";
32
33
  export { APPLESCRIPT_MATRIX } from "./write/vectors/applescript.ts";
33
34
  export { URL_SCHEME_MATRIX } from "./write/vectors/url-scheme.ts";
34
- export type { DeltaSpec, FieldAssertion } from "./write/verify/delta.ts";
35
+ export { dbCarriesBenchMarker, simFenceActive } from "./write/vectors/simulator.ts";
36
+ export type { DeltaSpec, FieldAssertion, RepeatingDiscovery } from "./write/verify/delta.ts";
35
37
  export type { AuditRecord } from "./audit/schema.ts";
36
38
  export type { DisruptionTier, Profile, ThingsApiConfig } from "./config.ts";
37
39
  export type { AnyTask, Area, ChecklistItem, Heading, IsoDateGroup, Project, Ref, RepeatingInfo, StartState, Tag, TaskStatus, TaskType, Todo, TodaySection, } from "./model/entities.ts";
38
40
  export type { IsoDate } from "./model/dates.ts";
41
+ export { calendarDateInZone, dayBoundInstant, hostTimeZone, isValidTimeZone, } from "./model/dates.ts";
42
+ export { resolveClock, clockMeta, ClockError } from "./model/clock.ts";
43
+ export type { EffectiveClock, ClockMeta } from "./model/clock.ts";
44
+ export type { ClockScopedRead } from "./client.ts";
39
45
  export type { ListItem, SidebarSection, TodayView } from "./read/views.ts";
40
46
  export type { ProjectView } from "./read/project-view.ts";
41
47
  export type { AreaView } from "./read/area-view.ts";
48
+ export { isActiveProjectRow, isScheduledProjectRow, isSomedayProjectRow, } from "./read/area-view.ts";
42
49
  export { ProjectNotFoundError } from "./read/project-view.ts";
50
+ export { ReferenceResolutionError } from "./read/queries.ts";
51
+ export type { RefCandidate } from "./read/queries.ts";
52
+ export { splitWhenSugar, CLI_WHEN_LABELS, MCP_WHEN_LABELS } from "./model/when-sugar.ts";
53
+ export type { WhenSugar, WhenSugarLabels } from "./model/when-sugar.ts";
43
54
  export { ThingsDbNotFoundError } from "./db/locate.ts";
44
55
  export { ThingsDbOpenError } from "./db/connection.ts";
45
56
  export type { Baseline, FingerprintStatus, SchemaObservation } from "./db/fingerprint.ts";
46
- export { API_VERSION, ExitCode, PKG_VERSION } from "./contracts.ts";
57
+ export { aggregateExitCode, API_VERSION, blockedCode, errorEnvelope, ExitCode, okEnvelope, PKG_VERSION, verifyFailedCode, } from "./contracts.ts";
47
58
  export type { Envelope, EnvelopeMeta, ErrorEnvelope, OkEnvelope } from "./contracts.ts";
59
+ export * from "./surface-copy.ts";
60
+ export { omitEmpty } from "./model/serialize.ts";
61
+ export { localToday } from "./model/dates.ts";
62
+ export { templateStatus } from "./model/recurrence.ts";
63
+ export { isTodayMember } from "./read/views.ts";
64
+ export type { LiteCandidate, LiteSearchResult } from "./read/views.ts";
65
+ export { partitionSomedaySection, splitSectionBlocks } from "./read/sections.ts";
66
+ export type { GroupedLimits } from "./read/sections.ts";
67
+ export { noUuidMatch, stripThingsUri } from "./read/queries.ts";
68
+ export type { Snapshot } from "./read/snapshot.ts";
69
+ export type { ShowTarget } from "./read/show-target.ts";
70
+ export type { ChecklistEdit } from "./client.ts";
71
+ export type { TagRef } from "./model/entities.ts";
72
+ export { outcomeFailed } from "./write/batch.ts";
73
+ export { BOUNCE_MAX_ITEMS } from "./write/reorder.ts";
74
+ export type { MonthlyAnchor, RepeatFrequency, RepeatRuleParams, Weekday, WeekdayOrdinal, YearlyAnchor, } from "./write/operations.ts";
75
+ export { shortcutProxies } from "./diagnose.ts";
76
+ export type { ShortcutsState } from "./write/availability.ts";
77
+ export type { McpServerOptions } from "./mcp/server.ts";
78
+ export declare function loadMcpServer(): Promise<typeof import("./mcp/server.ts")>;
package/dist/index.js CHANGED
@@ -11,13 +11,49 @@ export { probeAutomation } from "./write/automation-probe.js";
11
11
  export { createEnvironmentTracker, describeEnvironmentChanges, diffEnvironment, } from "./write/environment.js";
12
12
  export { capabilitiesTable } from "./write/capabilities.js";
13
13
  export { saveConfigKey } from "./config.js";
14
- export { createThingsMcpServer } from "./mcp/server.js";
14
+ // The per-view read-filter contract: the declarative applicability table plus
15
+ // the shared tag-conflict predicates both surfaces enforce. See
16
+ // docs/design/architecture.md (Consumer boundary).
17
+ export { FILTER_CONTRACT, hasTagPresence, tagFlagConflict, tagFilterFields, validateViewArgs, } from "./read/filter-contract.js";
15
18
  export { OPERATION_KINDS } from "./write/operations.js";
16
19
  export { HAZARD_IDS } from "./write/guards.js";
17
20
  export { APPLESCRIPT_MATRIX } from "./write/vectors/applescript.js";
18
21
  export { URL_SCHEME_MATRIX } from "./write/vectors/url-scheme.js";
22
+ export { dbCarriesBenchMarker, simFenceActive } from "./write/vectors/simulator.js";
23
+ export { calendarDateInZone, dayBoundInstant, hostTimeZone, isValidTimeZone, } from "./model/dates.js";
24
+ export { resolveClock, clockMeta, ClockError } from "./model/clock.js";
25
+ export { isActiveProjectRow, isScheduledProjectRow, isSomedayProjectRow, } from "./read/area-view.js";
19
26
  export { ProjectNotFoundError } from "./read/project-view.js";
27
+ // Reference resolution: the stable public error a uuid/partial-uuid/name raises
28
+ // when it resolves to zero or several entities, carrying the machine shape the
29
+ // CLI --json envelope and MCP tool errors surface (code + candidates).
30
+ export { ReferenceResolutionError } from "./read/queries.js";
31
+ // The shared `<when>@<time>` scheduling sugar parser (CLI + MCP).
32
+ export { splitWhenSugar, CLI_WHEN_LABELS, MCP_WHEN_LABELS } from "./model/when-sugar.js";
20
33
  export { ThingsDbNotFoundError } from "./db/locate.js";
21
34
  export { ThingsDbOpenError } from "./db/connection.js";
22
- export { API_VERSION, ExitCode, PKG_VERSION } from "./contracts.js";
35
+ export { aggregateExitCode, API_VERSION, blockedCode, errorEnvelope, ExitCode, okEnvelope, PKG_VERSION, verifyFailedCode, } from "./contracts.js";
36
+ // ---------------------------------------------------------------------------
37
+ // Consumer-surface support: everything below is exported so the CLI and MCP
38
+ // server can consume it through this one entry point (the air-gap boundary,
39
+ // docs/design/architecture.md). None of it reaches back into surface code.
40
+ // ---------------------------------------------------------------------------
41
+ // Consumer-facing shared copy (parameter vocabulary + read-path advisory).
42
+ export * from "./surface-copy.js";
43
+ // Pure model/read helpers the presentation layers reuse.
44
+ export { omitEmpty } from "./model/serialize.js";
45
+ export { localToday } from "./model/dates.js";
46
+ export { templateStatus } from "./model/recurrence.js";
47
+ export { isTodayMember } from "./read/views.js";
48
+ export { partitionSomedaySection, splitSectionBlocks } from "./read/sections.js";
49
+ export { noUuidMatch, stripThingsUri } from "./read/queries.js";
50
+ // Write-path values/types the surfaces render or gate on.
51
+ export { outcomeFailed } from "./write/batch.js";
52
+ export { BOUNCE_MAX_ITEMS } from "./write/reorder.js";
53
+ // Shortcut-proxy availability: a proper library accessor (setup consumes it
54
+ // without opening a database). See shortcutProxies in diagnose.ts.
55
+ export { shortcutProxies } from "./diagnose.js";
56
+ export function loadMcpServer() {
57
+ return import("./mcp/server.js");
58
+ }
23
59
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAM9D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAkCxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAyBlE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAYzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAM9D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAY5C,8EAA8E;AAC9E,gEAAgE;AAChE,mDAAmD;AACnD,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAiCnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAsBpF,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMvE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,gFAAgF;AAChF,+EAA+E;AAC/E,uEAAuE;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,kEAAkE;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAGxB,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAE9E,2EAA2E;AAC3E,cAAc,mBAAmB,CAAC;AAElC,yDAAyD;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMhE,0DAA0D;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAUtD,4EAA4E;AAC5E,mEAAmE;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAYhD,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,CAAC"}
@@ -1,7 +1,15 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { type OpenOptions } from "../client.ts";
2
+ import { type DisruptionTier, type OpenOptions } from "../index.ts";
3
3
  export interface McpServerOptions {
4
4
  dbPath?: string;
5
+ /**
6
+ * The disruption ceiling for EVERY write this server makes, fixed for the
7
+ * whole process lifetime (set once by `things mcp`'s startup flags). Caps
8
+ * vector selection exactly like the CLI's per-call --allow-disruptive /
9
+ * --allow-very-disruptive, but there is no per-request escalation over MCP.
10
+ * Undefined leaves the config profile's default in force.
11
+ */
12
+ maxDisruption?: DisruptionTier;
5
13
  /** Test seam: forwarded to openThings (fake vectors, pinned clock, env). */
6
14
  openOptions?: OpenOptions;
7
15
  }