things-api 0.15.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 (145) hide show
  1. package/README.md +4 -4
  2. package/dist/audit/schema.d.ts +8 -0
  3. package/dist/audit/schema.js.map +1 -1
  4. package/dist/cli/commands/install-skill.js +9 -2
  5. package/dist/cli/commands/install-skill.js.map +1 -1
  6. package/dist/cli/commands/repeat-flags.d.ts +14 -4
  7. package/dist/cli/commands/repeat-flags.js +113 -33
  8. package/dist/cli/commands/repeat-flags.js.map +1 -1
  9. package/dist/cli/commands/todo.js +49 -2
  10. package/dist/cli/commands/todo.js.map +1 -1
  11. package/dist/cli/commands/writes.js +241 -66
  12. package/dist/cli/commands/writes.js.map +1 -1
  13. package/dist/cli/help.js +23 -13
  14. package/dist/cli/help.js.map +1 -1
  15. package/dist/cli/interrupt.d.ts +42 -0
  16. package/dist/cli/interrupt.js +105 -0
  17. package/dist/cli/interrupt.js.map +1 -0
  18. package/dist/cli/main.js +5 -0
  19. package/dist/cli/main.js.map +1 -1
  20. package/dist/cli/read-driver.d.ts +2 -2
  21. package/dist/cli/skill.d.ts +24 -0
  22. package/dist/cli/skill.js +40 -0
  23. package/dist/cli/skill.js.map +1 -1
  24. package/dist/client.d.ts +53 -12
  25. package/dist/client.js +9 -1
  26. package/dist/client.js.map +1 -1
  27. package/dist/config.d.ts +39 -0
  28. package/dist/config.js +16 -1
  29. package/dist/config.js.map +1 -1
  30. package/dist/contracts.d.ts +9 -2
  31. package/dist/contracts.js +1 -1
  32. package/dist/contracts.js.map +1 -1
  33. package/dist/index.d.ts +5 -2
  34. package/dist/index.js +7 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/mcp/server.js +132 -31
  37. package/dist/mcp/server.js.map +1 -1
  38. package/dist/model/entities.d.ts +35 -0
  39. package/dist/model/entities.js.map +1 -1
  40. package/dist/model/occurrences.d.ts +14 -1
  41. package/dist/model/occurrences.js +20 -4
  42. package/dist/model/occurrences.js.map +1 -1
  43. package/dist/model/recurrence.d.ts +60 -9
  44. package/dist/model/recurrence.js +76 -19
  45. package/dist/model/recurrence.js.map +1 -1
  46. package/dist/paths.d.ts +8 -0
  47. package/dist/paths.js +10 -0
  48. package/dist/paths.js.map +1 -1
  49. package/dist/read/detail.js +49 -1
  50. package/dist/read/detail.js.map +1 -1
  51. package/dist/read/queries.d.ts +12 -0
  52. package/dist/read/queries.js +14 -0
  53. package/dist/read/queries.js.map +1 -1
  54. package/dist/read/shape.d.ts +25 -22
  55. package/dist/read/shape.js +81 -55
  56. package/dist/read/shape.js.map +1 -1
  57. package/dist/read/stage.d.ts +5 -5
  58. package/dist/read/stage.js +2 -2
  59. package/dist/read/views.d.ts +1 -1
  60. package/dist/read/views.js +4 -4
  61. package/dist/surface-copy.d.ts +2 -2
  62. package/dist/surface-copy.js +2 -2
  63. package/dist/sync-health.js +2 -1
  64. package/dist/sync-health.js.map +1 -1
  65. package/dist/trace/tracer.d.ts +87 -0
  66. package/dist/trace/tracer.js +167 -0
  67. package/dist/trace/tracer.js.map +1 -0
  68. package/dist/write/batch.d.ts +28 -3
  69. package/dist/write/batch.js +162 -46
  70. package/dist/write/batch.js.map +1 -1
  71. package/dist/write/clear-reminder.js +24 -21
  72. package/dist/write/clear-reminder.js.map +1 -1
  73. package/dist/write/clone.d.ts +4 -0
  74. package/dist/write/clone.js +531 -0
  75. package/dist/write/clone.js.map +1 -0
  76. package/dist/write/commands.js +140 -49
  77. package/dist/write/commands.js.map +1 -1
  78. package/dist/write/completion-context.d.ts +57 -0
  79. package/dist/write/completion-context.js +49 -0
  80. package/dist/write/completion-context.js.map +1 -0
  81. package/dist/write/failure-hints.d.ts +10 -1
  82. package/dist/write/failure-hints.js +8 -0
  83. package/dist/write/failure-hints.js.map +1 -1
  84. package/dist/write/guards.d.ts +1 -1
  85. package/dist/write/guards.js +43 -5
  86. package/dist/write/guards.js.map +1 -1
  87. package/dist/write/make-repeating-project.d.ts +2 -3
  88. package/dist/write/make-repeating-project.js +2 -73
  89. package/dist/write/make-repeating-project.js.map +1 -1
  90. package/dist/write/move.js +8 -1
  91. package/dist/write/move.js.map +1 -1
  92. package/dist/write/operations.d.ts +140 -9
  93. package/dist/write/operations.js +4 -1
  94. package/dist/write/operations.js.map +1 -1
  95. package/dist/write/pipeline.d.ts +77 -0
  96. package/dist/write/pipeline.js +298 -20
  97. package/dist/write/pipeline.js.map +1 -1
  98. package/dist/write/pre-state.d.ts +1 -1
  99. package/dist/write/pre-state.js +9 -3
  100. package/dist/write/pre-state.js.map +1 -1
  101. package/dist/write/preserve-modified.d.ts +55 -0
  102. package/dist/write/preserve-modified.js +106 -0
  103. package/dist/write/preserve-modified.js.map +1 -0
  104. package/dist/write/promote-clone.d.ts +32 -0
  105. package/dist/write/promote-clone.js +867 -0
  106. package/dist/write/promote-clone.js.map +1 -0
  107. package/dist/write/repeat-anchor.d.ts +110 -0
  108. package/dist/write/repeat-anchor.js +238 -0
  109. package/dist/write/repeat-anchor.js.map +1 -0
  110. package/dist/write/repeat-asserts.d.ts +28 -0
  111. package/dist/write/repeat-asserts.js +169 -0
  112. package/dist/write/repeat-asserts.js.map +1 -0
  113. package/dist/write/repeat-rule.js +27 -12
  114. package/dist/write/repeat-rule.js.map +1 -1
  115. package/dist/write/resolution-timestamps.js +22 -0
  116. package/dist/write/resolution-timestamps.js.map +1 -1
  117. package/dist/write/reversibility.js +27 -14
  118. package/dist/write/reversibility.js.map +1 -1
  119. package/dist/write/undo.d.ts +11 -1
  120. package/dist/write/undo.js +126 -10
  121. package/dist/write/undo.js.map +1 -1
  122. package/dist/write/vectors/session-reachability.d.ts +78 -0
  123. package/dist/write/vectors/session-reachability.js +103 -0
  124. package/dist/write/vectors/session-reachability.js.map +1 -0
  125. package/dist/write/vectors/simulator.js +100 -30
  126. package/dist/write/vectors/simulator.js.map +1 -1
  127. package/dist/write/vectors/types.d.ts +117 -10
  128. package/dist/write/vectors/ui-certification.d.ts +1 -1
  129. package/dist/write/vectors/ui-certification.js +10 -3
  130. package/dist/write/vectors/ui-certification.js.map +1 -1
  131. package/dist/write/vectors/ui-recipes.d.ts +8 -0
  132. package/dist/write/vectors/ui-recipes.js +120 -22
  133. package/dist/write/vectors/ui-recipes.js.map +1 -1
  134. package/dist/write/vectors/ui.d.ts +79 -13
  135. package/dist/write/vectors/ui.js +415 -59
  136. package/dist/write/vectors/ui.js.map +1 -1
  137. package/dist/write/verify/delta.d.ts +12 -14
  138. package/dist/write/verify/delta.js +35 -34
  139. package/dist/write/verify/delta.js.map +1 -1
  140. package/package.json +1 -1
  141. package/schema/envelope.schema.json +22 -0
  142. package/skills/things-cli/SKILL.md +7 -3
  143. package/skills/things-cli/references/banner.md +1 -1
  144. package/skills/things-cli/references/contracts.md +17 -9
  145. package/skills/things-cli/references/data-model.md +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promote-clone.js","sourceRoot":"","sources":["../../src/write/promote-clone.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AASnE,OAAO,EACL,gBAAgB,EAChB,WAAW,GAIZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,cAAc,EAA6C,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAQ7E,MAAM,cAAc,GAClB,8FAA8F;IAC9F,0FAA0F;IAC1F,0DAA0D,CAAC;AAE7D,gFAAgF;AAEhF,SAAS,QAAQ,CAAC,GAAS;IACzB,OAAO,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CACjB,IAAkB,EAClB,KAAa,EACb,MAA+B,EAC/B,KAA6B;IAE7B,MAAM,GAAG,GAAiB,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;IAC9D,IAAI,MAAM,KAAK,SAAS;QAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IAC9C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACrD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;QAAE,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IACnF,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;QAAE,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAC/F,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,KAAK,EAAE,gBAAgB,KAAK,IAAI;QAAE,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAClE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yFAAyF;AACzF,SAAS,cAAc,CAAC,EAAa;IACnC,OAAO;QACL,IAAI,EAAE,SAAS;QACf,EAAE;QACF,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,YAAY;QACpB,MAAM,EACJ,wFAAwF;YACxF,0FAA0F;QAC5F,WAAW,EACT,0FAA0F;YAC1F,mGAAmG;KACtG,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,uBAAuB,CACpC,IAAe,EACf,EAAa;IAEb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC;IACvE,IAAI,EAAE,EAAE,iBAAiB,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,SAAS;QACf,EAAE;QACF,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,WAAW,CACxB,IAAe,EACf,IAAwB,EACxB,WAAmB,EACnB,OAAuB,EACvB,OAAqB,EACrB,KAAa;IAEb,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,MAAM,OAAO,GAAkB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,IAAI,EACJ,OAAO,EACP,EAAE,IAAI,EAAE,WAAW,EAAE,EACrB,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAC3B,CAAC;IACF,MAAM,WAAW,GACf,OAAO,CAAC,IAAI,KAAK,IAAI;QACnB,CAAC,CAAC,cAAc,YAAY,UAAU,WAAW,8CAA8C;YAC7F,uFAAuF;YACvF,YAAY,IAAI,YAAY,WAAW,IAAI;QAC7C,CAAC,CAAC,cAAc,YAAY,UAAU,WAAW,8CAA8C;YAC7F,8DAA8D,IAAI,WAAW,WAAW,IAAI,CAAC;IACnG,OAAO,QAAQ,IAAI,OAAO;QACxB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAI,OAA8B,CAAC,MAAM,MAAM,WAAW,EAAE,EAAE;QAC1E,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,aAAa,CACpB,IAAY,EACZ,IAC+E,EAC/E,OAAiB;IAEjB,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QACpF,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACnD,2EAA2E;QAC3E,sEAAsE;QACtE,+EAA+E;QAC/E,+CAA+C;QAC/C,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/D,wEAAwE;QACxE,+EAA+E;QAC/E,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvF,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAkD;IACnE,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,MAAM;CACf,CAAC;AACF,MAAM,WAAW,GAAkD;IACjE,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,IAAsB,EAAE,QAAwB;IACtE,MAAM,OAAO,GACX,IAAI,CAAC,QAAQ,KAAK,CAAC;QACjB,CAAC,CAAC,SAAS,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAC1C,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QAClC,OAAO,8BAA8B,OAAO,qCAAqC,CAAC;IACpF,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAChB,MAAM,GAAG,CAAC;QACR,CAAC,CAAC,qBAAqB,MAAM,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ;QACnE,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI;YACtB,CAAC,CAAC,sCAAsC;YACxC,CAAC,CAAC,EAAE,CAAC;IACX,OAAO,8BAA8B,OAAO,GAAG,KAAK,GAAG,YAAY,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,EAAmB,EAAE,YAAoB;IAClE,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,uEAAuE,CAAC;SAChF,GAAG,CAAC,YAAY,CAAsC,CAAC;IAC1D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CACnB,EAAa,EACb,YAAoB,EACpB,YAAqB,EACrB,SAAyB;IAEzB,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,EAAE;QACF,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5D,QAAQ,EAAE,IAAI;QACd,MAAM,EACJ,sEAAsE;YACtE,GAAG,SAAS,IAAI,sBAAsB,uBAAuB,YAAY,oBAAoB;YAC7F,4FAA4F;KAC/F,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,SAAS,WAAW,CAAC,OAAgD;IAInE,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAC9B,OAAO;QACL,YAAY,EAAE,GAAG,EAAE,YAAY,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE;QACrD,YAAY,EAAE,GAAG,EAAE,YAAY,IAAI,IAAI;KACxC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,SAAS,oBAAoB,CAC3B,IAAe,EACf,IAYC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAA4B;QACxC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;KAC5E,CAAC;IACF,MAAM,MAAM,GAAgB;QAC1B,CAAC,EAAE,CAAC;QACJ,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAChC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;QACxB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;QACtB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,YAAY;QACvB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;QACxC,GAAG,EAAE,IAAI;QACT,QAAQ;QACR,MAAM,EAAE,IAAI;QACZ,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACxE,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QAC7E,GAAG,EAAE;YACH,GAAG,EAAE,IAAI,CAAC,UAAU,IAAI,OAAO;YAC/B,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,eAAe;YACzC,WAAW,EAAE,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;SAC/C;KACF,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,8DAA8D;AAC9D,SAAS,SAAS,CAAC,IAQlB;IACC,MAAM,SAAS,GAAuB;QACpC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,YAAY;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;QAC9E,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,CAAC;QACP,SAAS,EAAE,SAAS,CAAC;YACnB,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;SACzC,CAAC;QACF,SAAS;QACT,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAClC,IAAe,EACf,IAAwB,EACxB,MAAwB,EACxB,OAAqB;IAErB,MAAM,EAAE,GAAc,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAC5F,0EAA0E;IAC1E,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,OAAO,GACX,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;QACjD,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,SAAS;YACf,EAAE;YACF,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,uBAAuB;YAC/B,MAAM,EAAE,uBAAuB,YAAY,sCAAsC,YAAY,GAAG;YAChG,WAAW,EACT,IAAI,KAAK,SAAS;gBAChB,CAAC,CAAC,yFAAyF;gBAC3F,CAAC,CAAC,iGAAiG;SACxG,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,4EAA4E;IAC5E,+EAA+E;IAC/E,6EAA6E;IAC7E,+EAA+E;IAC/E,gFAAgF;IAChF,+DAA+D;IAC/D,EAAE;IACF,4EAA4E;IAC5E,iFAAiF;IACjF,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,+EAA+E;IAC/E,sEAAsE;IACtE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IACrE,MAAM,aAAa,GACjB,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC;QAC5D,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,iFAAiF;IACjF,oDAAoD;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC;IACzB,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,SAAS,GAAqB,EAAE,GAAG,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;IAE1F,uFAAuF;IACvF,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACpE,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,EAAE;YACF,IAAI,EAAE;gBACJ,EAAE;gBACF,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,CAAC;gBACP,UAAU,EACR,SAAS,OAAO,8DAA8D;oBAC9E,aAAa,SAAS,CAAC,SAAS,cAAc,SAAS,CAAC,QAAQ,0BAA0B,OAAO,EAAE;gBACrG,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE;oBAC9D,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBAC1D;gBACD,cAAc,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,EAAE,YAAY,CAAC;aAC1E;SACF,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,gFAAgF;IAChF,0EAA0E;IAC1E,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAElC,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,KAAK,GACT,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,MAAM,eAAe,CACnB,IAAI,EACJ,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,EACxC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAC3B;QACH,CAAC,CAAC,MAAM,YAAY,CAChB,IAAI,EACJ,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,EACxC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAC3B,CAAC;IACR,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC/C,uEAAuE;QACvE,yEAAyE;QACzE,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI;YACxB,CAAC,CAAC;gBACE,IAAI,EAAE,eAAe;gBACrB,EAAE;gBACF,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE;oBAC9D,MAAM,EAAE,EAAE;iBACX;gBACD,QAAQ,EAAE,IAAI;gBACd,MAAM,EACJ,oGAAoG;aACvG;YACH,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;IAE7B,gFAAgF;IAChF,4EAA4E;IAC5E,8EAA8E;IAC9E,0EAA0E;IAC1E,gFAAgF;IAChF,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC;IAC3D,MAAM,MAAM,GAAG,gBAAgB;QAC7B,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QAC5D,CAAC,CAAC,IAAI,CAAC;IAET,gFAAgF;IAChF,0EAA0E;IAC1E,gFAAgF;IAChF,MAAM,KAAK,GAAG,MAAM,WAAW,CAC7B,IAAI,EACJ,GAAG,IAAI,SAAS,EAChB,EAAE,IAAI,EAAE,OAAO,EAAE,EACjB,UAAU,CACR,OAAO,EACP,KAAK,EACL,SAAS,EACT,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAC1D,CACF,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO;YACL,GAAG,KAAK;YACR,EAAE;YACF,GAAG,CAAC,QAAQ,IAAI,KAAK;gBACnB,CAAC,CAAC;oBACE,MAAM,EACJ,GAAG,KAAK,CAAC,MAAM,iCAAiC,SAAS,wBAAwB;wBACjF,YAAY,OAAO,kEAAkE;wBACrF,qBAAqB;iBACxB;gBACH,CAAC,CAAC,EAAE,CAAC;SACU,CAAC;IACtB,CAAC;IAED,6EAA6E;IAC7E,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,OAAO,GACX,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,MAAM,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7F,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,8EAA8E;QAC9E,6CAA6C;QAC7C,MAAM,SAAS,GAAkB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC;QACzF,MAAM,UAAU,GAAG,MAAM,WAAW,CAClC,IAAI,EACJ,SAAS,EACT,EAAE,IAAI,EAAE,OAAO,EAAE,EACjB,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAC3B,CAAC;QACF,MAAM,QAAQ,GACZ,UAAU,CAAC,IAAI,KAAK,IAAI;YACtB,CAAC,CAAC,gBAAgB,OAAO,8BAA8B;YACvD,CAAC,CAAC,gBAAgB,OAAO,+DAA+D,CAAC;QAC7F,OAAO;YACL,GAAG,OAAO;YACV,EAAE;YACF,GAAG,CAAC,QAAQ,IAAI,OAAO;gBACrB,CAAC,CAAC;oBACE,MAAM,EACJ,GAAG,OAAO,CAAC,MAAM,iCAAiC,SAAS,wBAAwB;wBACnF,yBAAyB,QAAQ,6BAA6B;iBACjE;gBACH,CAAC,CAAC,EAAE,CAAC;SACU,CAAC;IACtB,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5D,iFAAiF;IACjF,4EAA4E;IAC5E,kFAAkF;IAClF,8EAA8E;IAC9E,gDAAgD;IAChD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,OAAO,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAa;QACzB,cAAc,CAAC,SAAS,EAAE,gBAAgB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACvF,gBAAgB,YAAY,UAAU,OAAO,4CAA4C;YACvF,qDAAqD;QACvD,cAAc;KACf,CAAC;IACF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvE,oBAAoB,CAAC,IAAI,EAAE;QACzB,SAAS;QACT,EAAE;QACF,KAAK;QACL,YAAY;QACZ,YAAY;QACZ,YAAY,EAAE,OAAO;QACrB,UAAU,EAAE,GAAG,EAAE,WAAW,OAAO,YAAY,OAAO,cAAc,SAAS,eAAe,YAAY,EAAE;QAC1G,SAAS,EAAE,SAA+C;QAC1D,GAAG,CAAC,gBAAgB,IAAI,MAAM,KAAK,IAAI,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;KACnF,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;QACf,EAAE;QACF,YAAY;QACZ,YAAY;QACZ,YAAY,EAAE,SAAS;QACvB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAe,EACf,MAAwB,EACxB,UAAwB,EAAE;IAE1B,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAe,EACf,MAAwB,EACxB,UAAwB,EAAE;IAE1B,OAAO,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACH,KAAK,UAAU,qBAAqB,CAClC,IAAe,EACf,IAAwB,EACxB,SAAkC,EAClC,IAA4B,EAC5B,KAAa,EACb,OAAqB;IAErB,MAAM,EAAE,GAAc,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAC1F,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEvB,iFAAiF;IACjF,iFAAiF;IACjF,6EAA6E;IAC7E,+EAA+E;IAC/E,0EAA0E;IAC1E,8EAA8E;IAC9E,mEAAmE;IACnE,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,SAAS,CAAC,MAAM,CAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,MAAM,OAAO,GAAG,SAAS,IAAI,SAAS,CAAC;IACvC,MAAM,OAAO,GAA2B,EAAE,GAAG,IAAI,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;IAE3F,8EAA8E;IAC9E,+EAA+E;IAC/E,iFAAiF;IACjF,6EAA6E;IAC7E,0DAA0D;IAC1D,+EAA+E;IAC/E,+EAA+E;IAC/E,iFAAiF;IACjF,wCAAwC;IACxC,MAAM,YAAY,GAChB,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,SAAS,CAAC,UAAU,CAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,MAAM,mBAAmB,GACvB,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAEhF,yFAAyF;IACzF,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACpE,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,EAAE;YACF,IAAI,EAAE;gBACJ,EAAE;gBACF,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,CAAC;gBACP,UAAU,EACR,UAAU,YAAY,KAAK,KAAK,gDAAgD;oBAChF,wBAAwB,IAAI,CAAC,SAAS,cAAc,IAAI,CAAC,QAAQ,GAAG;gBACtE,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE;oBACnD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBAC1D;gBACD,cAAc,EAAE,CAAC,YAAY,CAAC;aAC/B;SACF,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,+EAA+E;IAC/E,+EAA+E;IAC/E,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAElC,+DAA+D;IAC/D,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,WAAW,CAC3B,IAAI,EACJ,KAAK,EACL,SAAkB,EAClB,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CACzC,CAAC;IACF,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI;YACtB,CAAC,CAAC;gBACE,IAAI,EAAE,eAAe;gBACrB,EAAE;gBACF,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE;oBACnD,MAAM,EAAE,EAAE;iBACX;gBACD,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,OAAO,YAAY,mFAAmF;aAC/G;YACH,CAAC,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAqB,CAAC;IACzC,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;IAE7B,4EAA4E;IAC5E,kDAAkD;IAClD,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,OAAO,GACX,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,MAAM,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC,CAAC,MAAM,WAAW,CACf,IAAI,EACJ,qBAAqB,EACrB,UAAU,EACV,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CACjC,CAAC;IACR,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,0EAA0E;QAC1E,0EAA0E;QAC1E,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,wEAAwE;QACxE,4EAA4E;QAC5E,mBAAmB;QACnB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAClF,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,KAAK,EAAoB,CAAC;IACxD,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5D,2EAA2E;IAC3E,4EAA4E;IAC5E,+EAA+E;IAC/E,0EAA0E;IAC1E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,QAAQ,GAAa;QACzB,cAAc,CAAC,UAAU,EAAE,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC/E,cAAc;KACf,CAAC;IACF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvE,oBAAoB,CAAC,IAAI,EAAE;QACzB,SAAS;QACT,EAAE;QACF,KAAK;QACL,YAAY;QACZ,YAAY;QACZ,UAAU,EAAE,GAAG,EAAE,UAAU,KAAK,KAAK,WAAW,eAAe,YAAY,EAAE;QAC7E,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE;KACjC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;QACf,EAAE;QACF,YAAY;QACZ,YAAY;QACZ,YAAY,EAAE,WAAW;QACzB,KAAK;QACL,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAe,EACf,MAA8B,EAC9B,UAAwB,EAAE;IAE1B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;IACjG,MAAM,IAAI,GAA2B;QACnC,SAAS;QACT,QAAQ;QACR,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,CAAC;QACzD,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3C,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;KACpC,CAAC;IACF,MAAM,SAAS,GAA4B;QACzC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QACpD,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7D,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7D,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/E,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1D,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;KACjE,CAAC;IACF,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAe,EACf,MAAiC,EACjC,UAAwB,EAAE;IAE1B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;IACjG,MAAM,IAAI,GAA2B;QACnC,SAAS;QACT,QAAQ;QACR,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,CAAC;QACzD,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3C,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;KACpC,CAAC;IACF,+EAA+E;IAC/E,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9E,MAAM,SAAS,GAA4B;QACzC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QACpD,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjD,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7D,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QACpD,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QACpD,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;KACjE,CAAC;IACF,OAAO,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,eAAe,GACnB,8FAA8F;IAC9F,+FAA+F;IAC/F,uBAAuB,CAAC;AAE1B,iFAAiF;AACjF,SAAS,kBAAkB,CAAC,EAAa,EAAE,MAAc,EAAE,WAAmB;IAC5E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAClG,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,IAAgB;IAC3C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QAC3D,OAAO,CACL,2FAA2F;YAC3F,oDAAoD,CACrD,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAC/E,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9E,OAAO,CACL,cAAc,IAAI,CAAC,IAAI,6DAA6D;YACpF,kDAAkD,IAAI,CAAC,IAAI,UAAU,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,8EAA8E,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAAe,EACf,IAAwB,EACxB,GAAmB,EACnB,OAAe,EACf,MAAmB,EACnB,OAAqB;IAErB,MAAM,EAAE,GAAc,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAC1F,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;IAExC,8EAA8E;IAC9E,iEAAiE;IACjE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;IAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,kBAAkB,CACvB,EAAE,EACF,cAAc,YAAY,8DAA8D;YACtF,2EAA2E,EAC7E,oDAAoD,GAAG,YAAY,CACpE,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,6EAA6E;IAC7E,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IAC5E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,kBAAkB,CACvB,EAAE,EACF,GAAG,mBAAmB,CAAC,IAAI,CAAC,iDAAiD,EAC7E,oDAAoD,GAAG,YAAY,CACpE,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,yEAAyE;IACzE,yDAAyD;IACzD,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACpE,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,EAAE;YACF,IAAI,EAAE;gBACJ,EAAE;gBACF,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,CAAC;gBACP,UAAU,EACR,sBAAsB,OAAO,eAAe,YAAY,6BAA6B;oBACrF,yEAAyE;oBACzE,aAAa,OAAO,CAAC,SAAS,cAAc,OAAO,CAAC,QAAQ,GAAG;gBACjE,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE;oBACnD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBAC1D;gBACD,cAAc,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC;aACjD;SACF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAElC,gFAAgF;IAChF,+EAA+E;IAC/E,8DAA8D;IAC9D,MAAM,WAAW,GAAgB;QAC/B,IAAI,EAAE,OAAO;QACb,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1D,GAAG,CAAC,MAAM,CAAC,eAAe,KAAK,IAAI,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;KAClE,CAAC;IACF,MAAM,YAAY,GAAiB,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;IACjG,MAAM,KAAK,GACT,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC;QACxD,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC/C,6EAA6E;QAC7E,2EAA2E;QAC3E,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI;YACxB,CAAC,CAAC;gBACE,IAAI,EAAE,eAAe;gBACrB,EAAE;gBACF,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE;oBACnD,MAAM,EAAE,EAAE;iBACX;gBACD,QAAQ,EAAE,IAAI;gBACd,MAAM,EACJ,oFAAoF;aACvF;YACH,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;IAE7B,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,UAAU,GAAqB,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;IACrE,MAAM,OAAO,GACX,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,MAAM,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC,CAAC,MAAM,WAAW,CACf,IAAI,EACJ,qBAAqB,EACrB,UAAU,EACV,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CACjC,CAAC;IACR,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,6EAA6E;QAC7E,0EAA0E;QAC1E,OAAO;YACL,GAAG,OAAO;YACV,EAAE;YACF,GAAG,CAAC,QAAQ,IAAI,OAAO;gBACrB,CAAC,CAAC;oBACE,MAAM,EACJ,GAAG,OAAO,CAAC,MAAM,4BAA4B,SAAS,gCAAgC;wBACtF,+CAA+C,IAAI,WAAW,SAAS,cAAc;iBACxF;gBACH,CAAC,CAAC,EAAE,CAAC;SACU,CAAC;IACtB,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAa,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CACX,2FAA2F;YACzF,uEAAuE,CAC1E,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CACX,2FAA2F;YACzF,0BAA0B,IAAI,0CAA0C,CAC3E,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvE,8EAA8E;IAC9E,uDAAuD;IACvD,oBAAoB,CAAC,IAAI,EAAE;QACzB,SAAS;QACT,EAAE;QACF,KAAK;QACL,YAAY;QACZ,YAAY;QACZ,UAAU,EAAE,GAAG,IAAI,qBAAqB,OAAO,qBAAqB,SAAS,eAAe,YAAY,EAAE;QAC1G,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE;KAClD,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;QACf,EAAE;QACF,YAAY;QACZ,YAAY;QACZ,YAAY,EAAE,SAAS;QACvB,KAAK;QACL,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * The FIXED-recurrence DEFAULT-anchor law + the weekly-weekday derivation the
3
+ * promote verbs use (issue #476; evidence: docs/lab/anch2-next-field.md +
4
+ * anch1-repeat-anchor.md, golden-v2 / Things 3.22.12).
5
+ *
6
+ * DEFAULT LAW (ANCH1, still valid as the DEFAULT). Left untouched, the Repeat
7
+ * dialog's "Next:" field defaults the first occurrence to the next calendar match
8
+ * ON OR AFTER TODAY (interval-independent), and a weekday-less weekly rule
9
+ * defaults to SUNDAY. ANCH2 then showed the "Next:" field is EDITABLE and honored
10
+ * (docs/lab/anch2-next-field.md) — so the promote verbs DRIVE it with the item's
11
+ * scheduled date rather than refuse a wrong-phase series. This module no longer
12
+ * carries a phase-refusal (the ANCH1 `H-REPEAT-ANCHOR` premise — "no drivable
13
+ * first-occurrence control" — was false).
14
+ *
15
+ * What it still provides:
16
+ * 1. {@link deriveWeeklyWeekdays} — when a weekly rule omits `weekdays` but a
17
+ * concrete anchor date is known, derive the recurring weekday FROM that date
18
+ * so the series fires on the intended weekday (not the app's Sunday default).
19
+ * Driving "Next:" fixes the FIRST occurrence; this fixes the recurring day.
20
+ * 2. {@link fixedSpawnPlan} — the DEFAULT spawn shape (used by the simulator
21
+ * when no explicit first occurrence is requested): first occurrence = next
22
+ * match ≥ today, an instance spawns only when today is itself an occurrence.
23
+ *
24
+ * Daily/weekly follow the probed default law; monthly/yearly keep the caller's
25
+ * today+interval model for the default (their default-anchor law is unprobed).
26
+ */
27
+ import { type IsoDate } from "../model/dates.ts";
28
+ import type { MonthlyAnchor, RepeatRuleParams, Weekday, YearlyAnchor } from "./operations.ts";
29
+ /** True iff `v` is a concrete `YYYY-MM-DD` date (not a list keyword / undefined). */
30
+ export declare function isIsoDate(v: unknown): v is IsoDate;
31
+ /** Weekday of an ISO date, 0 = Sunday … 6 = Saturday (evaluated at UTC noon, tz-invariant). */
32
+ export declare function weekdayOfIso(iso: IsoDate): number;
33
+ /**
34
+ * When a WEEKLY rule omits its weekday set but a concrete anchor date is known,
35
+ * the weekday to drive explicitly (so the series fires on the anchor date's
36
+ * weekday, not the app's Sunday default). Returns `undefined` when nothing should
37
+ * change (non-weekly, weekdays already given, or no concrete anchor date).
38
+ */
39
+ export declare function deriveWeeklyWeekdays(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "afterCompletion">, anchorIso: IsoDate | null | undefined): Weekday[] | undefined;
40
+ /**
41
+ * When a MONTHLY rule omits its day anchor but a concrete first-occurrence date
42
+ * is known, the day-of-month anchor to drive EXPLICITLY (so the series recurs on
43
+ * that day, not the Repeat dialog's untouched default). Returns `undefined` when
44
+ * nothing should change (non-monthly, an explicit anchor already given, or no
45
+ * concrete date). Mirrors {@link deriveWeeklyWeekdays} for the monthly unit —
46
+ * the same day-of-month the read-path decoder / composeOffsets derives from the
47
+ * occurrence date, so the derived anchor is byte-consistent with the rule blob.
48
+ */
49
+ export declare function deriveMonthlyAnchor(rule: Pick<RepeatRuleParams, "frequency" | "monthly" | "afterCompletion">, anchorIso: IsoDate | null | undefined): MonthlyAnchor | undefined;
50
+ /**
51
+ * When a YEARLY rule omits its month+day anchor but a concrete first-occurrence
52
+ * date is known, the {month, day} anchor to drive EXPLICITLY (so the series recurs
53
+ * on that month/day, not the dialog's untouched January-1 default — the ANCH2-c /
54
+ * issue #493 anchor-drop). Returns `undefined` when nothing should change
55
+ * (non-yearly, an explicit anchor already given, or no concrete date).
56
+ */
57
+ export declare function deriveYearlyAnchor(rule: Pick<RepeatRuleParams, "frequency" | "yearly" | "afterCompletion">, anchorIso: IsoDate | null | undefined): YearlyAnchor | undefined;
58
+ /**
59
+ * The date to drive into the Repeat dialog's "Next:" field for a rule whose
60
+ * `next` is the scheduled START (`--when`). A DEADLINED rule anchors on the
61
+ * DEADLINE — the dialog's "Next:" is the next deadline and the instance START =
62
+ * deadline − startDaysEarlier — so it is driven with `next + startDaysEarlier` and
63
+ * the app back-shifts the start to `next` (YANCH1 #493, golden-v3 probe: Next
64
+ * driven to a date with start-N lands the instance start N days earlier). A
65
+ * non-deadlined rule (or one with no concrete `next`) drives `next` verbatim.
66
+ * Returns `undefined` when `next` is absent/non-concrete.
67
+ */
68
+ export declare function deadlineDriveNext(p: Pick<RepeatRuleParams, "next" | "deadline" | "startDaysEarlier">): IsoDate | undefined;
69
+ /**
70
+ * The calendar-anchor fields to drive EXPLICITLY for a fixed weekly/monthly/yearly
71
+ * rule when the caller supplied a concrete first-occurrence date but NO explicit
72
+ * anchor — each derived from that date by the SAME refIso law composeOffsets uses
73
+ * (weekly → weekday, monthly → day-of-month, yearly → month+day). Driving the
74
+ * anchor pop-ups makes the series RECUR on the intended calendar placement;
75
+ * leaving the anchor to the "Next:" first-occurrence field alone fixes only the
76
+ * FIRST occurrence and leaves the dialog's untouched default as the recurring rule
77
+ * (weekly → Sunday, monthly → 1st, yearly → January 1 — ANCH2 cell c / issue
78
+ * #493). Returns only the fields that need driving; an explicit anchor, an
79
+ * after-completion rule, daily, or no concrete date yields an empty patch. This
80
+ * completes the derive-and-drive family the weekly weekday-derivation began
81
+ * post-ANCH1 (decisions.md).
82
+ */
83
+ export declare function deriveFixedAnchor(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "monthly" | "yearly" | "afterCompletion">, anchorIso: IsoDate | null | undefined): Partial<Pick<RepeatRuleParams, "weekdays" | "monthly" | "yearly">>;
84
+ /**
85
+ * The app's first occurrence of a FIXED daily/weekly rule = the next calendar
86
+ * match on or after today. `null` for after-completion (no calendar) or an
87
+ * unguarded frequency (monthly/yearly). Weekly uses `weekdays` (caller should
88
+ * pass the DERIVED set); with no weekdays it falls back to the app's Sunday default.
89
+ */
90
+ export declare function fixedFirstOccurrence(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "afterCompletion">, todayIso: IsoDate): IsoDate | null;
91
+ /**
92
+ * The smallest occurrence STRICTLY AFTER today (the template's cursor,
93
+ * rt1_nextInstanceStartDate). Daily/weekly only. Returns `null` for other
94
+ * frequencies / after-completion.
95
+ */
96
+ export declare function nextFixedOccurrenceAfter(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "afterCompletion">, todayIso: IsoDate): IsoDate | null;
97
+ /**
98
+ * The spawn shape a FIXED daily/weekly `make-repeating` produces under the ANCH1
99
+ * law: the calendar-offset reference date, the current-occurrence instance start
100
+ * (null when today is not an occurrence → no instance spawns), the template
101
+ * cursor (next occurrence strictly after today), and the instance-creation count.
102
+ * MONTHLY/YEARLY are unprobed — callers keep their prior today+interval model.
103
+ */
104
+ export interface FixedSpawnPlan {
105
+ refIso: IsoDate;
106
+ instanceStartIso: IsoDate | null;
107
+ cursorIso: IsoDate;
108
+ instanceCount: 0 | 1;
109
+ }
110
+ export declare function fixedSpawnPlan(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "afterCompletion">, todayIso: IsoDate): FixedSpawnPlan;
@@ -0,0 +1,238 @@
1
+ /**
2
+ * The FIXED-recurrence DEFAULT-anchor law + the weekly-weekday derivation the
3
+ * promote verbs use (issue #476; evidence: docs/lab/anch2-next-field.md +
4
+ * anch1-repeat-anchor.md, golden-v2 / Things 3.22.12).
5
+ *
6
+ * DEFAULT LAW (ANCH1, still valid as the DEFAULT). Left untouched, the Repeat
7
+ * dialog's "Next:" field defaults the first occurrence to the next calendar match
8
+ * ON OR AFTER TODAY (interval-independent), and a weekday-less weekly rule
9
+ * defaults to SUNDAY. ANCH2 then showed the "Next:" field is EDITABLE and honored
10
+ * (docs/lab/anch2-next-field.md) — so the promote verbs DRIVE it with the item's
11
+ * scheduled date rather than refuse a wrong-phase series. This module no longer
12
+ * carries a phase-refusal (the ANCH1 `H-REPEAT-ANCHOR` premise — "no drivable
13
+ * first-occurrence control" — was false).
14
+ *
15
+ * What it still provides:
16
+ * 1. {@link deriveWeeklyWeekdays} — when a weekly rule omits `weekdays` but a
17
+ * concrete anchor date is known, derive the recurring weekday FROM that date
18
+ * so the series fires on the intended weekday (not the app's Sunday default).
19
+ * Driving "Next:" fixes the FIRST occurrence; this fixes the recurring day.
20
+ * 2. {@link fixedSpawnPlan} — the DEFAULT spawn shape (used by the simulator
21
+ * when no explicit first occurrence is requested): first occurrence = next
22
+ * match ≥ today, an instance spawns only when today is itself an occurrence.
23
+ *
24
+ * Daily/weekly follow the probed default law; monthly/yearly keep the caller's
25
+ * today+interval model for the default (their default-anchor law is unprobed).
26
+ */
27
+ import { addDaysIso } from "../model/dates.js";
28
+ import { WD_TO_WEEKDAY, WEEKDAY_TO_WD } from "./repeat-rule.js";
29
+ /** True iff `v` is a concrete `YYYY-MM-DD` date (not a list keyword / undefined). */
30
+ export function isIsoDate(v) {
31
+ return typeof v === "string" && /^\d{4}-\d{2}-\d{2}$/.test(v);
32
+ }
33
+ /** Weekday of an ISO date, 0 = Sunday … 6 = Saturday (evaluated at UTC noon, tz-invariant). */
34
+ export function weekdayOfIso(iso) {
35
+ const [y, m, d] = iso.split("-").map(Number);
36
+ return new Date(Date.UTC(y, m - 1, d, 12)).getUTCDay();
37
+ }
38
+ /** Whole days from `a` to `b` (b − a); negative when b precedes a. */
39
+ function daysBetweenIso(a, b) {
40
+ const [ay, am, ad] = a.split("-").map(Number);
41
+ const [by, bm, bd] = b.split("-").map(Number);
42
+ return Math.round((Date.UTC(by, bm - 1, bd) - Date.UTC(ay, am - 1, ad)) / 86_400_000);
43
+ }
44
+ /** The smallest date on or after `todayIso` whose weekday is `wd` (0 = Sunday). */
45
+ function nextWeekdayOnOrAfter(todayIso, wd) {
46
+ const delta = (((wd - weekdayOfIso(todayIso)) % 7) + 7) % 7;
47
+ return addDaysIso(todayIso, delta);
48
+ }
49
+ /** The Sunday that starts the week containing `iso` (the app's weeks start Sunday). */
50
+ function weekAnchorSunday(iso) {
51
+ return addDaysIso(iso, -weekdayOfIso(iso));
52
+ }
53
+ /** A true modulo (result always in [0, n)). */
54
+ function mod(x, n) {
55
+ return ((x % n) + n) % n;
56
+ }
57
+ /** The rule's effective weekday numbers (explicit set, else the app's Sunday default). */
58
+ function effectiveWds(rule) {
59
+ return rule.weekdays !== undefined && rule.weekdays.length > 0
60
+ ? rule.weekdays.map((w) => WEEKDAY_TO_WD[w])
61
+ : [0];
62
+ }
63
+ /**
64
+ * Whether `d` is on the active-week grid of a weekly rule anchored at `firstOcc`
65
+ * (weeks fire every `interval` weeks from the anchor's Sunday-week). Weekday match
66
+ * is checked separately.
67
+ */
68
+ function weeklyActiveWeek(firstOcc, d, interval) {
69
+ const weeks = daysBetweenIso(weekAnchorSunday(firstOcc), weekAnchorSunday(d)) / 7;
70
+ return mod(weeks, interval) === 0;
71
+ }
72
+ /**
73
+ * When a WEEKLY rule omits its weekday set but a concrete anchor date is known,
74
+ * the weekday to drive explicitly (so the series fires on the anchor date's
75
+ * weekday, not the app's Sunday default). Returns `undefined` when nothing should
76
+ * change (non-weekly, weekdays already given, or no concrete anchor date).
77
+ */
78
+ export function deriveWeeklyWeekdays(rule, anchorIso) {
79
+ if (rule.afterCompletion === true)
80
+ return undefined;
81
+ if (rule.frequency !== "weekly")
82
+ return undefined;
83
+ if (rule.weekdays !== undefined)
84
+ return undefined;
85
+ if (!isIsoDate(anchorIso))
86
+ return undefined;
87
+ return [WD_TO_WEEKDAY[weekdayOfIso(anchorIso)]];
88
+ }
89
+ /** The 1-based day-of-month of an ISO date. */
90
+ function dayOfMonthIso(iso) {
91
+ return Number(iso.split("-")[2]);
92
+ }
93
+ /** The 1-based month of an ISO date. */
94
+ function monthOfIso(iso) {
95
+ return Number(iso.split("-")[1]);
96
+ }
97
+ /**
98
+ * When a MONTHLY rule omits its day anchor but a concrete first-occurrence date
99
+ * is known, the day-of-month anchor to drive EXPLICITLY (so the series recurs on
100
+ * that day, not the Repeat dialog's untouched default). Returns `undefined` when
101
+ * nothing should change (non-monthly, an explicit anchor already given, or no
102
+ * concrete date). Mirrors {@link deriveWeeklyWeekdays} for the monthly unit —
103
+ * the same day-of-month the read-path decoder / composeOffsets derives from the
104
+ * occurrence date, so the derived anchor is byte-consistent with the rule blob.
105
+ */
106
+ export function deriveMonthlyAnchor(rule, anchorIso) {
107
+ if (rule.afterCompletion === true)
108
+ return undefined;
109
+ if (rule.frequency !== "monthly")
110
+ return undefined;
111
+ if (rule.monthly !== undefined)
112
+ return undefined;
113
+ if (!isIsoDate(anchorIso))
114
+ return undefined;
115
+ return { day: dayOfMonthIso(anchorIso) };
116
+ }
117
+ /**
118
+ * When a YEARLY rule omits its month+day anchor but a concrete first-occurrence
119
+ * date is known, the {month, day} anchor to drive EXPLICITLY (so the series recurs
120
+ * on that month/day, not the dialog's untouched January-1 default — the ANCH2-c /
121
+ * issue #493 anchor-drop). Returns `undefined` when nothing should change
122
+ * (non-yearly, an explicit anchor already given, or no concrete date).
123
+ */
124
+ export function deriveYearlyAnchor(rule, anchorIso) {
125
+ if (rule.afterCompletion === true)
126
+ return undefined;
127
+ if (rule.frequency !== "yearly")
128
+ return undefined;
129
+ if (rule.yearly !== undefined)
130
+ return undefined;
131
+ if (!isIsoDate(anchorIso))
132
+ return undefined;
133
+ return { month: monthOfIso(anchorIso), day: dayOfMonthIso(anchorIso) };
134
+ }
135
+ /**
136
+ * The date to drive into the Repeat dialog's "Next:" field for a rule whose
137
+ * `next` is the scheduled START (`--when`). A DEADLINED rule anchors on the
138
+ * DEADLINE — the dialog's "Next:" is the next deadline and the instance START =
139
+ * deadline − startDaysEarlier — so it is driven with `next + startDaysEarlier` and
140
+ * the app back-shifts the start to `next` (YANCH1 #493, golden-v3 probe: Next
141
+ * driven to a date with start-N lands the instance start N days earlier). A
142
+ * non-deadlined rule (or one with no concrete `next`) drives `next` verbatim.
143
+ * Returns `undefined` when `next` is absent/non-concrete.
144
+ */
145
+ export function deadlineDriveNext(p) {
146
+ if (!isIsoDate(p.next))
147
+ return undefined;
148
+ const shift = p.deadline === true || (p.startDaysEarlier ?? 0) > 0 ? (p.startDaysEarlier ?? 0) : 0;
149
+ return addDaysIso(p.next, shift);
150
+ }
151
+ /**
152
+ * The calendar-anchor fields to drive EXPLICITLY for a fixed weekly/monthly/yearly
153
+ * rule when the caller supplied a concrete first-occurrence date but NO explicit
154
+ * anchor — each derived from that date by the SAME refIso law composeOffsets uses
155
+ * (weekly → weekday, monthly → day-of-month, yearly → month+day). Driving the
156
+ * anchor pop-ups makes the series RECUR on the intended calendar placement;
157
+ * leaving the anchor to the "Next:" first-occurrence field alone fixes only the
158
+ * FIRST occurrence and leaves the dialog's untouched default as the recurring rule
159
+ * (weekly → Sunday, monthly → 1st, yearly → January 1 — ANCH2 cell c / issue
160
+ * #493). Returns only the fields that need driving; an explicit anchor, an
161
+ * after-completion rule, daily, or no concrete date yields an empty patch. This
162
+ * completes the derive-and-drive family the weekly weekday-derivation began
163
+ * post-ANCH1 (decisions.md).
164
+ */
165
+ export function deriveFixedAnchor(rule, anchorIso) {
166
+ const weekdays = deriveWeeklyWeekdays(rule, anchorIso);
167
+ const monthly = deriveMonthlyAnchor(rule, anchorIso);
168
+ const yearly = deriveYearlyAnchor(rule, anchorIso);
169
+ return {
170
+ ...(weekdays !== undefined && { weekdays }),
171
+ ...(monthly !== undefined && { monthly }),
172
+ ...(yearly !== undefined && { yearly }),
173
+ };
174
+ }
175
+ /**
176
+ * The app's first occurrence of a FIXED daily/weekly rule = the next calendar
177
+ * match on or after today. `null` for after-completion (no calendar) or an
178
+ * unguarded frequency (monthly/yearly). Weekly uses `weekdays` (caller should
179
+ * pass the DERIVED set); with no weekdays it falls back to the app's Sunday default.
180
+ */
181
+ export function fixedFirstOccurrence(rule, todayIso) {
182
+ if (rule.afterCompletion === true)
183
+ return null;
184
+ if (rule.frequency === "daily")
185
+ return todayIso; // every day is an occurrence
186
+ if (rule.frequency === "weekly") {
187
+ let best = null;
188
+ for (const wd of effectiveWds(rule)) {
189
+ const cand = nextWeekdayOnOrAfter(todayIso, wd);
190
+ if (best === null || daysBetweenIso(cand, best) > 0)
191
+ best = cand;
192
+ }
193
+ return best;
194
+ }
195
+ return null; // monthly/yearly: default anchor law unprobed — not guarded
196
+ }
197
+ /**
198
+ * The smallest occurrence STRICTLY AFTER today (the template's cursor,
199
+ * rt1_nextInstanceStartDate). Daily/weekly only. Returns `null` for other
200
+ * frequencies / after-completion.
201
+ */
202
+ export function nextFixedOccurrenceAfter(rule, todayIso) {
203
+ if (rule.afterCompletion === true)
204
+ return null;
205
+ if (rule.frequency === "daily")
206
+ return addDaysIso(todayIso, Math.max(1, rule.interval));
207
+ if (rule.frequency === "weekly") {
208
+ const first = fixedFirstOccurrence(rule, todayIso);
209
+ if (first === null)
210
+ return null;
211
+ const wds = effectiveWds(rule);
212
+ const interval = Math.max(1, rule.interval);
213
+ let d = addDaysIso(todayIso, 1);
214
+ for (let i = 0; i < (interval + 2) * 7; i++) {
215
+ if (wds.includes(weekdayOfIso(d)) && weeklyActiveWeek(first, d, interval))
216
+ return d;
217
+ d = addDaysIso(d, 1);
218
+ }
219
+ return first; // unreachable in practice
220
+ }
221
+ return null;
222
+ }
223
+ export function fixedSpawnPlan(rule, todayIso) {
224
+ const first = fixedFirstOccurrence(rule, todayIso);
225
+ if (first === null) {
226
+ // Not a guarded frequency — degenerate plan (caller handles monthly/yearly).
227
+ return { refIso: todayIso, instanceStartIso: todayIso, cursorIso: todayIso, instanceCount: 1 };
228
+ }
229
+ const isToday = first === todayIso;
230
+ const cursor = isToday ? (nextFixedOccurrenceAfter(rule, todayIso) ?? first) : first;
231
+ return {
232
+ refIso: first,
233
+ instanceStartIso: isToday ? todayIso : null,
234
+ cursorIso: cursor,
235
+ instanceCount: isToday ? 1 : 0,
236
+ };
237
+ }
238
+ //# sourceMappingURL=repeat-anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repeat-anchor.js","sourceRoot":"","sources":["../../src/write/repeat-anchor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { RepeatRuleParams } from "./operations.ts";
2
+ import type { FieldAssertion } from "./verify/delta.ts";
3
+ /** The full requested-rule vocabulary minus the target uuid. */
4
+ export type RuleFields = Omit<RepeatRuleParams, "uuid">;
5
+ export interface RuleAssertOptions {
6
+ /**
7
+ * Include the ANCH2 first-occurrence cursor assertion (`repeating.nextOccurrence`
8
+ * = rt1_nextInstanceStartDate) when `next` is requested. TRUE for
9
+ * reschedule-repeat — the cursor is driven into the EXISTING template in place
10
+ * with an on-rule `--when`, so a wrong-anchor drive is caught. FALSE for
11
+ * make-repeating / add-repeating: the cursor is the first RULE-ALIGNED occurrence
12
+ * ≥ today (ANCH1 spawn law), which coincides with the requested `--when` only
13
+ * when that date is on-rule AND future — an overdue seed or an off-rule `--when`
14
+ * makes the cursor legitimately differ. Those verbs instead verify (a) the rule
15
+ * BLOB anchor at full fidelity — the calendar anchor is asserted whether it was
16
+ * given explicitly or DERIVED from `--when` (YANCH1 #493: this is what catches a
17
+ * dropped January-1 / Sunday / 1st-of-month anchor), and (b) the driven FIRST
18
+ * occurrence (rt1_instanceCreationStartDate, verbatim even off-rule) through the
19
+ * dedicated post-drive check in promote-clone.ts — not the cursor.
20
+ */
21
+ includeCursor: boolean;
22
+ }
23
+ /**
24
+ * Build the full-fidelity expected-rule assertion set for a validated rule-params
25
+ * bag. The base three (type/unit/interval) are always emitted; every other field
26
+ * contributes only when requested (requested-fields-only law).
27
+ */
28
+ export declare function expectedRuleAssertions(params: RuleFields, opts: RuleAssertOptions): FieldAssertion[];
@@ -0,0 +1,169 @@
1
+ /**
2
+ * FULL-FIDELITY expected-rule assertions for the rule-writing verbs
3
+ * (reschedule-repeat, make-repeating, add-repeating; to-do AND project).
4
+ *
5
+ * The idempotency precheck (pipeline.ts step 5a½) and the post-drive verify both
6
+ * ride the SAME {@link FieldAssertion} set an op's `expectedDelta` produces. When
7
+ * that set asserted only unit+interval (the RSIM5-era shallow subset), a
8
+ * reschedule that changed ONLY the monthly anchor / deadline offset / ends bound
9
+ * read back "already satisfied" and was skipped with a false idempotent-no-op —
10
+ * issue #491. This builder closes that class by construction: it maps the COMPLETE
11
+ * requested vocabulary onto assertions over the DECODED rule (decodeRecurrenceRule
12
+ * shapes) + the template's deadline column, never a raw blob/string compare.
13
+ *
14
+ * Two laws:
15
+ * 1. REQUESTED-FIELDS-ONLY. Only fields the caller actually set contribute an
16
+ * assertion; the three base fields (type/unit/interval) are always asserted
17
+ * (frequency+interval are required; the rule TYPE is meaningful even when
18
+ * `afterCompletion` is defaulted). A bare `{frequency, interval}` reschedule
19
+ * therefore never fails on an untouched anchor/ends/deadline — those keep
20
+ * their existing don't-care semantics.
21
+ * 2. EXHAUSTIVE MAP. {@link RULE_ASSERT_MAP} is a `Record` over every key of the
22
+ * rule vocabulary; each key is either an assert-producer or an explicit skip
23
+ * carrying a written reason. Adding a field to {@link RepeatRuleParams} breaks
24
+ * compilation here until it is consciously handled — a multi-consumer
25
+ * vocabulary must never be hand-enumerated per consumer (decisions.md).
26
+ */
27
+ import { anchorKeyOfOffsets, decodeOffsetEntry } from "../model/recurrence.js";
28
+ import { composeRepeatRuleSpec } from "./recurrence-rule-blob.js";
29
+ /** A never-used anchor reference: every anchor path that reaches the key builder
30
+ * carries an EXPLICIT anchor (weekdays/monthly/yearly present), so composeOffsets
31
+ * never falls back to deriving one from this date. */
32
+ const ANCHOR_DUMMY_REF = "2000-01-01";
33
+ /**
34
+ * The canonical, order-insensitive anchor key the DECODED rule would carry for
35
+ * these requested params — computed by composing the numeric offsets exactly as a
36
+ * write would and round-tripping them through the SAME per-offset decode the read
37
+ * path uses, so the expected key is byte-consistent with the observed one.
38
+ */
39
+ function expectedAnchorKey(p) {
40
+ const spec = composeRepeatRuleSpec({ uuid: "", ...p }, ANCHOR_DUMMY_REF, 0);
41
+ return anchorKeyOfOffsets((spec.of ?? []).map((o) => decodeOffsetEntry(o)));
42
+ }
43
+ /**
44
+ * The Ends bound, per the RRX1 laws: ends-after sets the `rc` occurrence-count
45
+ * total and OMITS the end date; ends-on-date sets `ed` and no count; never = both
46
+ * null. Every arm asserts BOTH columns so a reschedule from one bound kind to
47
+ * another is fully discriminated (e.g. after→on-date must clear the count).
48
+ */
49
+ function endsAsserts(ends) {
50
+ switch (ends.kind) {
51
+ case "never":
52
+ return [
53
+ { field: "repeating.rule.endDate", equals: null },
54
+ { field: "repeating.rule.occurrenceCount", equals: null },
55
+ ];
56
+ case "on-date":
57
+ return [
58
+ { field: "repeating.rule.endDate", equals: ends.date },
59
+ { field: "repeating.rule.occurrenceCount", equals: null },
60
+ ];
61
+ case "after":
62
+ return [
63
+ { field: "repeating.rule.occurrenceCount", equals: ends.count },
64
+ { field: "repeating.rule.endDate", equals: null },
65
+ ];
66
+ default: {
67
+ const exhaustive = ends;
68
+ throw new Error(`unknown ends bound ${JSON.stringify(exhaustive)}`);
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * EXHAUSTIVE over every key of the rule vocabulary. The mapped-type key set (`-?`
74
+ * makes each required) is what makes a newly added {@link RepeatRuleParams} field
75
+ * a COMPILE error until it earns an entry here.
76
+ */
77
+ const RULE_ASSERT_MAP = {
78
+ frequency: {
79
+ kind: "assert",
80
+ always: true,
81
+ build: (p) => [{ field: "repeating.rule.unit", equals: p.frequency }],
82
+ },
83
+ interval: {
84
+ kind: "assert",
85
+ always: true,
86
+ build: (p) => [{ field: "repeating.rule.interval", equals: p.interval }],
87
+ },
88
+ afterCompletion: {
89
+ kind: "assert",
90
+ // The rule TYPE is always meaningful (an absent flag ⇒ a fixed schedule); a
91
+ // fixed→after-completion conversion leaves unit+interval unchanged, so without
92
+ // this the precheck could not tell the target had not yet been reached.
93
+ always: true,
94
+ build: (p) => [
95
+ {
96
+ field: "repeating.rule.type",
97
+ equals: p.afterCompletion === true ? "after-completion" : "fixed",
98
+ },
99
+ ],
100
+ },
101
+ weekdays: {
102
+ kind: "assert",
103
+ build: (p) => [{ field: "repeating.rule.anchorKey", equals: expectedAnchorKey(p) }],
104
+ },
105
+ monthly: {
106
+ kind: "assert",
107
+ build: (p) => [{ field: "repeating.rule.anchorKey", equals: expectedAnchorKey(p) }],
108
+ },
109
+ yearly: {
110
+ kind: "assert",
111
+ build: (p) => [{ field: "repeating.rule.anchorKey", equals: expectedAnchorKey(p) }],
112
+ },
113
+ ends: {
114
+ kind: "assert",
115
+ build: (p) => (p.ends === undefined ? [] : endsAsserts(p.ends)),
116
+ },
117
+ deadline: {
118
+ kind: "assert",
119
+ // A start-offset request also asserts a deadline: startDaysEarlier implies one
120
+ // (assertRepeatRule refuses startDaysEarlier with deadline:false).
121
+ when: (p) => p.deadline !== undefined || (p.startDaysEarlier ?? 0) > 0,
122
+ build: (p) => [
123
+ {
124
+ field: "repeating.deadlined",
125
+ equals: p.deadline === true || (p.startDaysEarlier ?? 0) > 0,
126
+ },
127
+ ],
128
+ },
129
+ startDaysEarlier: {
130
+ kind: "assert",
131
+ // ts = −startDaysEarlier on the decoded rule (a deadline-relative start offset).
132
+ build: (p) => [{ field: "repeating.rule.startOffsetDays", equals: -(p.startDaysEarlier ?? 0) }],
133
+ },
134
+ next: {
135
+ kind: "assert",
136
+ // The ANCH2 first-occurrence CURSOR (rt1_nextInstanceStartDate → nextOccurrence)
137
+ // — the first RULE-ALIGNED occurrence, which equals the requested `--when` only
138
+ // when that date is itself on-rule AND future. Gated by
139
+ // RuleAssertOptions.includeCursor (reschedule only) — see expectedRuleAssertions.
140
+ build: (p) => p.next === undefined ? [] : [{ field: "repeating.nextOccurrence", equals: p.next }],
141
+ },
142
+ reminder: {
143
+ kind: "skip",
144
+ reason: "not stored in the recurrence-rule blob (rt1_recurrenceRule) — 'Add reminders' sets a " +
145
+ "time-of-day on the SPAWNED INSTANCES, not on the rule (RRX1/ANCH2). It has no decoded-rule " +
146
+ "field to compare against, so it is verified through the instance reminder-byte path, not here.",
147
+ },
148
+ };
149
+ /**
150
+ * Build the full-fidelity expected-rule assertion set for a validated rule-params
151
+ * bag. The base three (type/unit/interval) are always emitted; every other field
152
+ * contributes only when requested (requested-fields-only law).
153
+ */
154
+ export function expectedRuleAssertions(params, opts) {
155
+ const out = [];
156
+ for (const key of Object.keys(RULE_ASSERT_MAP)) {
157
+ // The cursor is a reschedule-only expectation (see RuleAssertOptions).
158
+ if (key === "next" && !opts.includeCursor)
159
+ continue;
160
+ const spec = RULE_ASSERT_MAP[key];
161
+ if (spec.kind === "skip")
162
+ continue;
163
+ const present = spec.when !== undefined ? spec.when(params) : params[key] !== undefined;
164
+ if (present || spec.always === true)
165
+ out.push(...spec.build(params));
166
+ }
167
+ return out;
168
+ }
169
+ //# sourceMappingURL=repeat-asserts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repeat-asserts.js","sourceRoot":"","sources":["../../src/write/repeat-asserts.ts"],"names":[],"mappings":"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"}