agentfootprint 9.131.0 → 9.133.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 (180) hide show
  1. package/AGENTS.md +2 -2
  2. package/CAPABILITIES.md +3 -2
  3. package/ai-instructions/claude-code/SKILL.md +2 -2
  4. package/dist/core/Agent.js +5 -3
  5. package/dist/core/Agent.js.map +1 -1
  6. package/dist/core/agent/arguments/ask.js +249 -54
  7. package/dist/core/agent/arguments/ask.js.map +1 -1
  8. package/dist/core/agent/arguments/resolve.js +11 -1
  9. package/dist/core/agent/arguments/resolve.js.map +1 -1
  10. package/dist/core/agent/arguments/serve.js +227 -61
  11. package/dist/core/agent/arguments/serve.js.map +1 -1
  12. package/dist/core/agent/buildAgentChart.js +5 -4
  13. package/dist/core/agent/buildAgentChart.js.map +1 -1
  14. package/dist/core/agent/buildDynamicAgentChart.js +2 -1
  15. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  16. package/dist/core/agent/coverage/period.js +47 -2
  17. package/dist/core/agent/coverage/period.js.map +1 -1
  18. package/dist/core/agent/evidence/answerCarriers.js +91 -0
  19. package/dist/core/agent/evidence/answerCarriers.js.map +1 -0
  20. package/dist/core/agent/stages/argumentAsk.js +8 -6
  21. package/dist/core/agent/stages/argumentAsk.js.map +1 -1
  22. package/dist/core/agent/stages/route.js +7 -0
  23. package/dist/core/agent/stages/route.js.map +1 -1
  24. package/dist/core/slots/buildToolsSlot.js +4 -2
  25. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  26. package/dist/core/time/bind.js +57 -51
  27. package/dist/core/time/bind.js.map +1 -1
  28. package/dist/core/time/convert.js +111 -14
  29. package/dist/core/time/convert.js.map +1 -1
  30. package/dist/core/time/forms.js +7 -5
  31. package/dist/core/time/forms.js.map +1 -1
  32. package/dist/core/time/periodForm.js +63 -9
  33. package/dist/core/time/periodForm.js.map +1 -1
  34. package/dist/core/time/range.js +22 -1
  35. package/dist/core/time/range.js.map +1 -1
  36. package/dist/core/time/reader.js +3 -2
  37. package/dist/core/time/reader.js.map +1 -1
  38. package/dist/core/time/readers/english.js +116 -38
  39. package/dist/core/time/readers/english.js.map +1 -1
  40. package/dist/core/time/readingAsk.js +20 -5
  41. package/dist/core/time/readingAsk.js.map +1 -1
  42. package/dist/core/time/resolve.js +197 -63
  43. package/dist/core/time/resolve.js.map +1 -1
  44. package/dist/core/time/resolveRecord.js +103 -6
  45. package/dist/core/time/resolveRecord.js.map +1 -1
  46. package/dist/core/time/rows.js +7 -2
  47. package/dist/core/time/rows.js.map +1 -1
  48. package/dist/core/time/rowsBuild.js +1 -1
  49. package/dist/core/time/rowsBuild.js.map +1 -1
  50. package/dist/core/time/windows.js +131 -19
  51. package/dist/core/time/windows.js.map +1 -1
  52. package/dist/core/time/zone.js +105 -1
  53. package/dist/core/time/zone.js.map +1 -1
  54. package/dist/doors/time.js +73 -0
  55. package/dist/doors/time.js.map +1 -0
  56. package/dist/esm/core/Agent.js +5 -3
  57. package/dist/esm/core/Agent.js.map +1 -1
  58. package/dist/esm/core/agent/arguments/ask.d.ts +11 -5
  59. package/dist/esm/core/agent/arguments/ask.js +251 -56
  60. package/dist/esm/core/agent/arguments/ask.js.map +1 -1
  61. package/dist/esm/core/agent/arguments/resolve.js +12 -2
  62. package/dist/esm/core/agent/arguments/resolve.js.map +1 -1
  63. package/dist/esm/core/agent/arguments/serve.d.ts +50 -21
  64. package/dist/esm/core/agent/arguments/serve.js +225 -60
  65. package/dist/esm/core/agent/arguments/serve.js.map +1 -1
  66. package/dist/esm/core/agent/buildAgentChart.d.ts +3 -1
  67. package/dist/esm/core/agent/buildAgentChart.js +5 -4
  68. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  69. package/dist/esm/core/agent/buildDynamicAgentChart.js +2 -1
  70. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  71. package/dist/esm/core/agent/coverage/period.d.ts +6 -1
  72. package/dist/esm/core/agent/coverage/period.js +47 -2
  73. package/dist/esm/core/agent/coverage/period.js.map +1 -1
  74. package/dist/esm/core/agent/evidence/answerCarriers.d.ts +62 -0
  75. package/dist/esm/core/agent/evidence/answerCarriers.js +87 -0
  76. package/dist/esm/core/agent/evidence/answerCarriers.js.map +1 -0
  77. package/dist/esm/core/agent/stages/argumentAsk.js +8 -6
  78. package/dist/esm/core/agent/stages/argumentAsk.js.map +1 -1
  79. package/dist/esm/core/agent/stages/route.js +7 -0
  80. package/dist/esm/core/agent/stages/route.js.map +1 -1
  81. package/dist/esm/core/slots/buildToolsSlot.d.ts +15 -11
  82. package/dist/esm/core/slots/buildToolsSlot.js +4 -2
  83. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  84. package/dist/esm/core/time/bind.d.ts +11 -7
  85. package/dist/esm/core/time/bind.js +55 -52
  86. package/dist/esm/core/time/bind.js.map +1 -1
  87. package/dist/esm/core/time/convert.d.ts +45 -2
  88. package/dist/esm/core/time/convert.js +108 -16
  89. package/dist/esm/core/time/convert.js.map +1 -1
  90. package/dist/esm/core/time/forms.js +8 -6
  91. package/dist/esm/core/time/forms.js.map +1 -1
  92. package/dist/esm/core/time/periodForm.d.ts +45 -6
  93. package/dist/esm/core/time/periodForm.js +59 -8
  94. package/dist/esm/core/time/periodForm.js.map +1 -1
  95. package/dist/esm/core/time/range.d.ts +18 -0
  96. package/dist/esm/core/time/range.js +20 -0
  97. package/dist/esm/core/time/range.js.map +1 -1
  98. package/dist/esm/core/time/reader.d.ts +7 -0
  99. package/dist/esm/core/time/reader.js +3 -2
  100. package/dist/esm/core/time/reader.js.map +1 -1
  101. package/dist/esm/core/time/readers/english.d.ts +16 -12
  102. package/dist/esm/core/time/readers/english.js +116 -38
  103. package/dist/esm/core/time/readers/english.js.map +1 -1
  104. package/dist/esm/core/time/readingAsk.d.ts +7 -3
  105. package/dist/esm/core/time/readingAsk.js +20 -5
  106. package/dist/esm/core/time/readingAsk.js.map +1 -1
  107. package/dist/esm/core/time/resolve.d.ts +31 -17
  108. package/dist/esm/core/time/resolve.js +197 -65
  109. package/dist/esm/core/time/resolve.js.map +1 -1
  110. package/dist/esm/core/time/resolveRecord.d.ts +90 -5
  111. package/dist/esm/core/time/resolveRecord.js +99 -5
  112. package/dist/esm/core/time/resolveRecord.js.map +1 -1
  113. package/dist/esm/core/time/rows.d.ts +9 -3
  114. package/dist/esm/core/time/rows.js +7 -2
  115. package/dist/esm/core/time/rows.js.map +1 -1
  116. package/dist/esm/core/time/rowsBuild.js +1 -1
  117. package/dist/esm/core/time/rowsBuild.js.map +1 -1
  118. package/dist/esm/core/time/windows.d.ts +95 -14
  119. package/dist/esm/core/time/windows.js +127 -18
  120. package/dist/esm/core/time/windows.js.map +1 -1
  121. package/dist/esm/core/time/zone.d.ts +32 -0
  122. package/dist/esm/core/time/zone.js +102 -0
  123. package/dist/esm/core/time/zone.js.map +1 -1
  124. package/dist/esm/doors/time.d.ts +60 -0
  125. package/dist/esm/doors/time.js +61 -0
  126. package/dist/esm/doors/time.js.map +1 -0
  127. package/dist/esm/events/payloads.d.ts +23 -0
  128. package/dist/esm/index.d.ts +2 -2
  129. package/dist/esm/index.js.map +1 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/types/core/Agent.d.ts.map +1 -1
  132. package/dist/types/core/agent/arguments/ask.d.ts +11 -5
  133. package/dist/types/core/agent/arguments/ask.d.ts.map +1 -1
  134. package/dist/types/core/agent/arguments/resolve.d.ts.map +1 -1
  135. package/dist/types/core/agent/arguments/serve.d.ts +50 -21
  136. package/dist/types/core/agent/arguments/serve.d.ts.map +1 -1
  137. package/dist/types/core/agent/buildAgentChart.d.ts +3 -1
  138. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  139. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  140. package/dist/types/core/agent/coverage/period.d.ts +6 -1
  141. package/dist/types/core/agent/coverage/period.d.ts.map +1 -1
  142. package/dist/types/core/agent/evidence/answerCarriers.d.ts +63 -0
  143. package/dist/types/core/agent/evidence/answerCarriers.d.ts.map +1 -0
  144. package/dist/types/core/agent/stages/argumentAsk.d.ts.map +1 -1
  145. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  146. package/dist/types/core/slots/buildToolsSlot.d.ts +15 -11
  147. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  148. package/dist/types/core/time/bind.d.ts +11 -7
  149. package/dist/types/core/time/bind.d.ts.map +1 -1
  150. package/dist/types/core/time/convert.d.ts +45 -2
  151. package/dist/types/core/time/convert.d.ts.map +1 -1
  152. package/dist/types/core/time/forms.d.ts.map +1 -1
  153. package/dist/types/core/time/periodForm.d.ts +45 -6
  154. package/dist/types/core/time/periodForm.d.ts.map +1 -1
  155. package/dist/types/core/time/range.d.ts +18 -0
  156. package/dist/types/core/time/range.d.ts.map +1 -1
  157. package/dist/types/core/time/reader.d.ts +7 -0
  158. package/dist/types/core/time/reader.d.ts.map +1 -1
  159. package/dist/types/core/time/readers/english.d.ts +16 -12
  160. package/dist/types/core/time/readers/english.d.ts.map +1 -1
  161. package/dist/types/core/time/readingAsk.d.ts +7 -3
  162. package/dist/types/core/time/readingAsk.d.ts.map +1 -1
  163. package/dist/types/core/time/resolve.d.ts +31 -17
  164. package/dist/types/core/time/resolve.d.ts.map +1 -1
  165. package/dist/types/core/time/resolveRecord.d.ts +90 -5
  166. package/dist/types/core/time/resolveRecord.d.ts.map +1 -1
  167. package/dist/types/core/time/rows.d.ts +9 -3
  168. package/dist/types/core/time/rows.d.ts.map +1 -1
  169. package/dist/types/core/time/rowsBuild.d.ts.map +1 -1
  170. package/dist/types/core/time/windows.d.ts +95 -14
  171. package/dist/types/core/time/windows.d.ts.map +1 -1
  172. package/dist/types/core/time/zone.d.ts +32 -0
  173. package/dist/types/core/time/zone.d.ts.map +1 -1
  174. package/dist/types/doors/time.d.ts +61 -0
  175. package/dist/types/doors/time.d.ts.map +1 -0
  176. package/dist/types/events/payloads.d.ts +23 -0
  177. package/dist/types/events/payloads.d.ts.map +1 -1
  178. package/dist/types/index.d.ts +2 -2
  179. package/dist/types/index.d.ts.map +1 -1
  180. package/package.json +14 -1
@@ -6,7 +6,8 @@
6
6
  * Pattern: Strategy behind the `TimeReader` port (`../reader.ts`). It
7
7
  * TOKENIZES only: it returns the parts it sees and the verbatim
8
8
  * quote. It never resolves an instant, never applies a date order,
9
- * never maps a zone abbreviation and never refuses a future date —
9
+ * never maps a zone token (an abbreviation, a place) to a zone and
10
+ * never refuses a future date —
10
11
  * all of that is `resolve.ts`'s, the policy's or the ask's.
11
12
  * Role: core/ leaf (the time layer). Imports only the port's types. Armed
12
13
  * by the app: `.time({ reader: englishTimeReader() })` — there is no
@@ -17,25 +18,28 @@
17
18
  *
18
19
  * | Phrase | Example | Parts |
19
20
  * |--------|---------|-------|
20
- * | an ISO date or instant | `2026-10-09`, `2026-10-09T08:00-07:00` | `date: fixed`, `wall`, `zoneToken` |
21
+ * | an ISO date or instant | `2026-10-09`, `2026-10-09T08:00-07:00` | `date: fixed`, `wall` (marked `clock: '24h'` — never also pm), `zoneToken` |
21
22
  * | a numeric date | `10/09/26`, `10/9` | `date: numeric` — the ORDER is not decided here |
22
23
  * | a clock time | `8 AM`, `8:40`, `20:40`, `8:40 p.m.` | `wall` (a bare `8` is a time only as a range's first side: `8 to 9 AM`) |
23
- * | a range between two of the above | `8 AM to 8:40 AM`, `08:00–08:40`, `between 8 and 9 AM` | `rangeOf` (a day or zone said once for both sides is the whole mention's) |
24
- * | a zone after a time or date | `America/Los_Angeles`, `UTC-07:00`, `PST` | `zoneToken`, as written (an abbreviation is ASKED — v1 ships no map) |
24
+ * | a range between two of the above | `8 AM to 8:40 AM`, `08:00–08:40`, `between 8 and 9 AM`, `today between 1 pm and 2 pm` | `rangeOf` (a day or zone said once for both sides is the whole mention's) |
25
+ * | a zone after a time, a date or a day word | `America/Los_Angeles`, `UTC-07:00`, `London time`, `PST` | `zoneToken`, as written — `resolve.ts` maps it (a place the tz database names once; an abbreviation only through the app's map; else ASKED) |
26
+ * | a named-month date | `11 September`, `Sept 29`, `September 29, 2026`, `the 29th of Sep` | `date: fixed` — no `year` unless written (the policy's or the person's, as for `10/9`) |
25
27
  * | a day word | today, yesterday, tomorrow | `relative: { unit: 'day', offset }` |
26
- * | a relative span from now | last 40 minutes, past 2 hours, the last hour, the past week | `relative: { unit, count }` — a look-back in minutes, hours, days or weeks |
28
+ * | a relative span from now | last 40 minutes, past 2 hours, last 24h, past 6h, the last hour, the past week | `relative: { unit, count }` — a look-back in minutes, hours, days or weeks, spelled out or compact (`m`, `h`, `d`, `w`) |
27
29
  *
28
30
  * ## What it says "unreadable" for — never a partial reading
29
31
  *
30
- * Parts of the day (`yesterday morning`, `tonight`, `noon`), calendar spans
31
- * (`last week`, `this month`), week days and named months (`Friday`,
32
- * `Oct 9`), `N hours ago`, spans in words (`last two hours`), in a unit it
33
- * does not read (`last 30 seconds`, `last 3 months`) or said with `previous`
32
+ * Parts of the day (`yesterday morning`, `tonight`, `noon` — a greeting, `Good morning`, is
33
+ * no time and reads no mention), calendar spans
34
+ * (`last week`, `this month`), week days and a month named alone (`Friday`,
35
+ * `in September`), `N hours ago`, spans in words (`last two hours`), in a unit it
36
+ * does not read (`last 30 seconds`, `last 30s`, `last 3 months`) or said with `previous`
34
37
  * (`previous 7 days` — often relative to another window), a look-ahead (`next 2 hours`), an
35
38
  * ordinal day (`the 9th`), `8 o'clock`, and any v1 phrase a modifier changes
36
39
  * (`since 8 AM`, `before yesterday`, `around 8:40`, `earlier today`,
37
- * `8 AM to now`, `past 8 PM`, `8 AM-ish`, `from 3 PM yesterday` with no `to`) and
38
- * a meridiem the number contradicts (`13:00 PM`). Such a phrase is ONE mention
40
+ * `8 AM to now`, `past 8 PM`, `8 AM-ish`, `from 3 PM yesterday` with no `to`), a
41
+ * bare first side whose far side says no meridiem (`8 to 9:30` — `9:30` alone
42
+ * would drop the start) and a meridiem the number contradicts (`13:00 PM`). Such a phrase is ONE mention
39
43
  * with `problem: 'unreadable'`, quoting the whole phrase: reading `yesterday`
40
44
  * out of `yesterday morning` would silently widen what the person said.
41
45
  *
@@ -75,17 +79,26 @@ import { isTimeParts, MAX_MENTIONS, } from '../reader.js';
75
79
  /** The reader's recorded identity — on every `time-reading` row with its version. */
76
80
  export const ENGLISH_TIME_READER_ID = 'agentfootprint/english';
77
81
  /** Raised whenever what the reader returns for some text changes. */
78
- export const ENGLISH_TIME_READER_VERSION = '1.0.0';
82
+ export const ENGLISH_TIME_READER_VERSION = '1.2.0';
79
83
  const DAY_WORDS = { today: 0, yesterday: -1, tomorrow: 1 };
80
- /** The units a look-back is read in: minutes, hours, days, weeks. */
84
+ /** The units a look-back is read in: minutes, hours, days, weeks — spelled out or compact (`24h`). */
81
85
  const SPAN_UNITS = {
82
86
  minute: 'minute',
83
87
  min: 'minute',
88
+ m: 'minute',
84
89
  hour: 'hour',
85
90
  hr: 'hour',
91
+ h: 'hour',
86
92
  day: 'day',
93
+ d: 'day',
87
94
  week: 'week',
95
+ wk: 'week',
96
+ w: 'week',
88
97
  };
98
+ /** A month's name as written (any case; `May` capitalised only — `may` is a verb) → its number. */
99
+ const MONTH_NUMBERS = {
100
+ jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12,
101
+ }; // prettier-ignore
89
102
  /** Zone abbreviations the reader TOKENIZES after a time or a date — never maps (§ 5.3). */
90
103
  const ZONE_ABBREVIATIONS = [
91
104
  'UTC', 'GMT', 'PST', 'PDT', 'PT', 'MST', 'MDT', 'MT', 'CST', 'CDT', 'CT', 'EST', 'EDT', 'ET',
@@ -105,19 +118,24 @@ const MONTHS = 'jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|june?|july?
105
118
  * phrase it touches.
106
119
  */
107
120
  const NOT_READ = [
108
- /\b(?:(?:this|last|early|late|mid)\s+)?(?:morning|afternoon|evening|night|tonight|overnight|noon|midday|midnight|lunchtime|dawn|dusk)s?\b/gi,
121
+ // A part of the day — never after `good` (`Good morning`, `good night`): a greeting names no
122
+ // time, and an unreadable mention is ASKED, so a greeting read here would ask the person which
123
+ // time they meant by words that meant none.
124
+ /\b(?<!\bgood\s+)(?:(?:this|last|early|late|mid)\s+)?(?:morning|afternoon|evening|night|tonight|overnight|noon|midday|midnight|lunchtime|dawn|dusk)s?\b/gi,
109
125
  /\b(?:last|this|next|past|previous|coming|current)\s+(?:week|month|year|quarter|weekend|hour|minute|second|day|night|decade|fortnight|shift)\b/gi,
110
126
  /\bweekends?\b/gi,
111
127
  /\b(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday)s?\b/gi,
112
- new RegExp(`\\b(?:${MONTHS})\\.?\\s+\\d{1,2}(?:st|nd|rd|th)?\\b(?:,?\\s+\\d{4}\\b)?`, 'gi'),
113
- new RegExp(`\\b\\d{1,2}(?:st|nd|rd|th)?\\s+(?:of\\s+)?(?:${MONTHS})\\b\\.?(?:,?\\s+\\d{4}\\b)?`, 'gi'),
128
+ // A month named alone (`in September`) — a calendar month, not read; with a day it is a date (`MONTH_DATE`).
114
129
  /\b(?:january|february|july|september|october|november|december)\b/gi,
115
130
  new RegExp(`\\b(?:\\d+|${NUMBER_WORDS})\\s+(?:${UNIT_WORDS})\\s+ago\\b`, 'gi'),
116
131
  new RegExp(`\\b(?:last|past|previous|next|coming|upcoming|following)\\s+` +
117
132
  `(?:(?:${NUMBER_WORDS}|\\d+)\\s+)?(?:${UNIT_WORDS})\\b`, 'gi'),
133
+ // A compact span the reader does not read (`next 2h`, `last 30s`, `past 3mo`) — never no mention.
134
+ /\b(?:last|past|previous|next|coming|upcoming|following)\s+\d+\s*(?:s|secs?|m|mins?|h|hrs?|d|w|wks?|mo|mos|y|yrs?)\b/gi,
118
135
  /\b(?:the\s+)?day\s+(?:before\s+yesterday|after\s+tomorrow)\b/gi,
119
- /\bon\s+the\s+\d{1,2}(?:st|nd|rd|th)\b/gi,
120
- /\bthe\s+\d{1,2}(?:st|nd|rd|th)\s+of\b/gi,
136
+ new RegExp(`\\bon\\s+the\\s+\\d{1,2}(?:st|nd|rd|th)\\b(?!\\s+of\\s+(?:${MONTHS})\\b)`, 'gi'),
137
+ // `the 9th of` — unless a month follows (`the 29th of September` is a date, `MONTH_DATE`).
138
+ new RegExp(`\\bthe\\s+\\d{1,2}(?:st|nd|rd|th)\\s+of\\b(?!\\s+(?:${MONTHS})\\b)`, 'gi'),
121
139
  /\b\d{1,2}\s*o['’]?\s?clock\b/gi,
122
140
  // A meridiem on a number that is no 12-hour time (`13:00 PM`, `0 AM`): the words contradict.
123
141
  /(?<![\w:.+/])\d{1,2}(?::\d{2}){0,2}\s?(?:am|pm|a\.m\.|p\.m\.)(?![a-z])/gi,
@@ -138,6 +156,13 @@ const MODIFIER_BEFORE = new RegExp('(?:^|[^\\w])(since|before|after|by|around|ci
138
156
  'as\\s+of|(?:starting|beginning)(?:\\s+(?:at|from|on))?|~)\\s*$', 'i');
139
157
  /** `from` with no `to`: a time after it is where a window STARTS (`from 3 PM yesterday`), not an hour. */
140
158
  const FROM_BEFORE = /(?:^|[^\w])(from)\s*$/i;
159
+ /**
160
+ * A bare number joined to a clock time as a range's first side the grammar
161
+ * does not read (`8 to 9:30`, `from 8 to 9:30`, `between 8 and 9:30` — the
162
+ * far side says no meridiem, so `8` is no time): the whole phrase is not
163
+ * read. Reading `9:30` alone would drop the start the person said.
164
+ */
165
+ const BARE_SIDE_BEFORE = new RegExp(`(?:^|[^\\w:./-])((?:from\\s+)?\\d{1,2}\\s*${RANGE_CONNECTOR}|between\\s+\\d{1,2}\\s+and)\\s*$`, 'i');
141
166
  /** …and right after it. */
142
167
  const MODIFIER_AFTER = new RegExp('^(?:\\s*-?\\s*ish\\b|\\s*(?:ago\\b|onwards?\\b|or\\s+so\\b|(?:or|and)\\s+(?:later|earlier|after|before)\\b|' +
143
168
  `at\\s+the\\s+(?:latest|earliest)\\b|${RANGE_CONNECTOR}\\s*now\\b))`, 'i');
@@ -164,16 +189,33 @@ const WALL_COLON = new RegExp(
164
189
  const BARE_HOUR = new RegExp(`${NOT_AFTER}(\\d{1,2})(?=\\s*(?:${RANGE_CONNECTOR}|and)\\s*` +
165
190
  '\\d{1,2}(?::\\d{2})?\\s?(?:am|pm|a\\.m\\.|p\\.m\\.)(?![a-z]))', 'gi');
166
191
  const DAY_WORD = /\b(today|yesterday|tomorrow)\b/gi;
167
- const SPAN = /\b(?:last|past)\s+(\d{1,6})\s*(minutes?|mins?|hours?|hrs?|days?|weeks?)\b/gi;
192
+ const SPAN = /\b(?:last|past)\s+(\d{1,6})\s*(minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|wks?|w)\b/gi;
193
+ /**
194
+ * A date with a NAMED month (`11 September`, `Sept 29`, `September 29, 2026`,
195
+ * `29th of Sep 2026`): the text fixes the order, so the parts are `date: fixed`
196
+ * with no year unless one is written — the year is the policy's (`year`) or the
197
+ * person's, as for `10/9`. The month alone (`in September`) is not read.
198
+ */
199
+ const MONTH_DATE = new RegExp(`(?<![\\w:./-])(?:(${MONTHS})\\.?\\s+(\\d{1,2})(?:st|nd|rd|th)?` +
200
+ `|(\\d{1,2})(?:st|nd|rd|th)?\\s+(?:of\\s+)?(${MONTHS})\\.?)` +
201
+ '(?:,?\\s+(\\d{4}))?(?![\\w:/]|\\.\\d)', 'gi');
168
202
  /** `the last hour`, `the past week` — a look-back of one unit; without `the`, `last week` is a calendar week (not read). */
169
203
  const ONE_SPAN = /\bthe\s+(?:last|past)\s+(hour|day|week)\b/gi;
204
+ /**
205
+ * A place named with the word `time` — `London time`, `New York time` — kept
206
+ * as written: which zone it names is `resolve.ts`'s (the tz database's one
207
+ * zone for the place, else asked). Capitalised words only, so `the same
208
+ * time` is no zone.
209
+ */
210
+ const PLACE_TIME = '[A-Z][a-z]+(?:[ -][A-Z][a-z]+){0,2}\\s+[Tt]ime';
170
211
  /** A zone right after a phrase: optional `(`, or `in`, then the token (and a closing `)`). */
171
- const ZONE_AFTER = new RegExp('^(\\s*\\(?\\s*|\\s+in\\s+)' +
172
- `(?:(${IANA_AREAS})/[A-Za-z0-9_+-]+(?:/[A-Za-z0-9_+-]+)?` +
173
- '|(?:UTC|GMT)\\s?([+-]\\d{1,2}(?::?\\d{2})?)' +
174
- `|(${ZONE_ABBREVIATIONS.join('|')}))(?![A-Za-z0-9_/])(\\s*\\))?`);
212
+ const ZONE_AFTER = new RegExp('^(?<lead>\\s*\\(?\\s*|\\s+in\\s+)' +
213
+ `(?:(?<iana>(?:${IANA_AREAS})/[A-Za-z0-9_+-]+(?:/[A-Za-z0-9_+-]+)?)` +
214
+ '|(?:UTC|GMT)\\s?(?<offset>[+-]\\d{1,2}(?::?\\d{2})?)' +
215
+ `|(?<place>${PLACE_TIME})` +
216
+ `|(?<abbreviation>${ZONE_ABBREVIATIONS.join('|')}))(?![A-Za-z0-9_/])(?<close>\\s*\\))?`);
175
217
  const num = (text) => text === undefined ? undefined : Number(text);
176
- function wallOf(h, m, s, meridiem) {
218
+ function wallOf(h, m, s, meridiem, clock) {
177
219
  if (!Number.isInteger(h) || h > 23)
178
220
  return undefined;
179
221
  if (m !== undefined && m > 59)
@@ -187,6 +229,7 @@ function wallOf(h, m, s, meridiem) {
187
229
  ...(m !== undefined && { m }),
188
230
  ...(s !== undefined && { s }),
189
231
  ...(meridiem !== undefined && { meridiem }),
232
+ ...(clock !== undefined && { clock }),
190
233
  };
191
234
  }
192
235
  function* matches(re, text) {
@@ -202,7 +245,8 @@ function isoAtoms(text) {
202
245
  for (const m of matches(ISO, text)) {
203
246
  const [, y, mo, d, h, mi, s, zone] = m;
204
247
  const date = { kind: 'fixed', year: Number(y), month: Number(mo), day: Number(d) };
205
- const wall = h === undefined ? undefined : wallOf(Number(h), Number(mi), num(s));
248
+ // An ISO time is a 24-hour clock by its form: `T08:00` is 8 AM, never also 8 PM.
249
+ const wall = h === undefined ? undefined : wallOf(Number(h), Number(mi), num(s), undefined, '24h');
206
250
  if (h !== undefined && wall === undefined)
207
251
  continue;
208
252
  out.push({
@@ -233,6 +277,27 @@ function numericAtoms(text) {
233
277
  }
234
278
  return out;
235
279
  }
280
+ function monthAtoms(text) {
281
+ const out = [];
282
+ for (const m of matches(MONTH_DATE, text)) {
283
+ const name = (m[1] ?? m[4]);
284
+ // `may` in lower case is the verb (`it may 3 times`), never a month.
285
+ if (name.toLowerCase() === 'may' && name !== 'May')
286
+ continue;
287
+ const month = MONTH_NUMBERS[name.slice(0, 3).toLowerCase()];
288
+ const day = Number(m[2] ?? m[3]);
289
+ if (month === undefined || day < 1 || day > 31)
290
+ continue;
291
+ const year = num(m[5]);
292
+ out.push({
293
+ start: m.index,
294
+ end: m.index + m[0].length,
295
+ kind: 'date',
296
+ date: { kind: 'fixed', month, day, ...(year !== undefined && { year }) },
297
+ });
298
+ }
299
+ return out;
300
+ }
236
301
  function wallAtoms(text) {
237
302
  const out = [];
238
303
  for (const m of matches(WALL_MERIDIEM, text)) {
@@ -292,7 +357,13 @@ function wordAtoms(text) {
292
357
  }
293
358
  /** The v1 phrases, overlaps settled: the earlier, then the longer, wins. */
294
359
  function atomsOf(text) {
295
- const all = [...isoAtoms(text), ...numericAtoms(text), ...wallAtoms(text), ...wordAtoms(text)];
360
+ const all = [
361
+ ...isoAtoms(text),
362
+ ...numericAtoms(text),
363
+ ...monthAtoms(text),
364
+ ...wallAtoms(text),
365
+ ...wordAtoms(text),
366
+ ];
296
367
  all.sort((a, b) => a.start - b.start || b.end - b.start - (a.end - a.start));
297
368
  const kept = [];
298
369
  for (const atom of all) {
@@ -312,23 +383,25 @@ function atomsOf(text) {
312
383
  }
313
384
  return out;
314
385
  }
315
- /** A zone written right after a date or a time joins that phrase, as written. */
386
+ /**
387
+ * A zone written right after a date, a time or a day word joins that
388
+ * phrase, as written — `yesterday London time` is a London day, and reading
389
+ * `yesterday` alone would silently put it in the app's zone. A look-back
390
+ * (`last 2 hours`) takes none: it runs until now in every zone.
391
+ */
316
392
  function attachZone(text, atom) {
317
- if (atom.kind === 'day' || atom.kind === 'span' || atom.kind === 'bare')
393
+ if (atom.kind === 'span' || atom.kind === 'bare')
318
394
  return;
319
395
  if (atom.zoneToken !== undefined)
320
396
  return;
321
397
  const m = ZONE_AFTER.exec(text.slice(atom.end));
322
- if (m === null)
398
+ if (m === null || m.groups === undefined)
323
399
  return;
324
- const lead = m[1];
325
- const opened = lead.includes('(');
326
- const closed = m[5] !== undefined;
327
- if (opened !== closed)
400
+ const { lead, iana, offset, place, abbreviation, close } = m.groups;
401
+ if (lead.includes('(') !== (close !== undefined))
328
402
  return;
329
- // The IANA name, else the offset after `UTC` / `GMT`, else the abbreviation — each verbatim.
330
- const whole = m[0].slice(lead.length).replace(/\s*\)$/, '');
331
- const token = m[2] !== undefined ? whole : m[3] !== undefined ? m[3] : m[4];
403
+ // The IANA name, else the offset after `UTC` / `GMT`, else the place, else the abbreviation — each verbatim.
404
+ const token = iana ?? offset ?? place ?? abbreviation;
332
405
  atom.zoneToken = token;
333
406
  atom.end += m[0].length;
334
407
  }
@@ -391,7 +464,10 @@ function groupsOf(text, atoms, notRead) {
391
464
  group.unreadable = true;
392
465
  continue;
393
466
  }
394
- const between = /\bbetween\s+$/i.test(text.slice(0, group.start));
467
+ // `between` before the group, or right before its last phrase — the range's first side:
468
+ // `today between 1 pm and 2 pm`, `yesterday between 8 and 9 AM` (a day said first).
469
+ const between = /\bbetween\s+$/i.test(text.slice(0, group.start)) ||
470
+ /\bbetween\s+$/i.test(text.slice(0, last.start));
395
471
  const joined = joins(text.slice(group.end, item.start), between, last, item);
396
472
  if (joined !== undefined) {
397
473
  if (joined === 'range') {
@@ -436,7 +512,9 @@ function mergeOverlaps(groups) {
436
512
  function widenForModifiers(text, group) {
437
513
  const head = text.slice(0, group.start);
438
514
  const clock = group.items.some((i) => i.atom?.wall !== undefined);
439
- const before = MODIFIER_BEFORE.exec(head) ??
515
+ const startsOnWall = group.items[0]?.atom?.kind === 'wall';
516
+ const before = (startsOnWall ? BARE_SIDE_BEFORE.exec(head) : null) ??
517
+ MODIFIER_BEFORE.exec(head) ??
440
518
  (group.rangeAt === undefined && clock ? FROM_BEFORE.exec(head) : null);
441
519
  if (before !== null) {
442
520
  group.start = before.index + before[0].lastIndexOf(before[1]);
@@ -1 +1 @@
1
- {"version":3,"file":"english.js","sourceRoot":"","sources":["../../../../../src/core/time/readers/english.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"english.js","sourceRoot":"","sources":["../../../../../src/core/time/readers/english.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH,OAAO,EACL,WAAW,EACX,YAAY,GAQb,MAAM,cAAc,CAAC;AAEtB,4EAA4E;AAE5E,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAC/D,qEAAqE;AACrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAEnD,MAAM,SAAS,GAAqC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAE7F,sGAAsG;AACtG,MAAM,UAAU,GAAiE;IAC/E,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,QAAQ;IACb,CAAC,EAAE,QAAQ;IACX,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,MAAM;IACV,CAAC,EAAE,MAAM;IACT,GAAG,EAAE,KAAK;IACV,CAAC,EAAE,KAAK;IACR,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,MAAM;IACV,CAAC,EAAE,MAAM;CACV,CAAC;AAEF,mGAAmG;AACnG,MAAM,aAAa,GAAqC;IACtD,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;CAClG,CAAC,CAAC,kBAAkB;AAErB,2FAA2F;AAC3F,MAAM,kBAAkB,GAAG;IACzB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI;IAC5F,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAC7F,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACxF,MAAM,EAAE,MAAM,EAAE,MAAM;CACd,CAAC,CAAC,kBAAkB;AAE9B,MAAM,UAAU,GACd,oFAAoF,CAAC;AACvF,MAAM,UAAU,GACd,iFAAiF,CAAC;AACpF,MAAM,YAAY,GAChB,2FAA2F;IAC3F,wDAAwD,CAAC;AAC3D,MAAM,MAAM,GACV,+EAA+E;IAC/E,8DAA8D,CAAC;AAEjE;;;;GAIG;AACH,MAAM,QAAQ,GAAsB;IAClC,6FAA6F;IAC7F,+FAA+F;IAC/F,4CAA4C;IAC5C,0JAA0J;IAC1J,iJAAiJ;IACjJ,iBAAiB;IACjB,sEAAsE;IACtE,6GAA6G;IAC7G,qEAAqE;IACrE,IAAI,MAAM,CAAC,cAAc,YAAY,WAAW,UAAU,aAAa,EAAE,IAAI,CAAC;IAC9E,IAAI,MAAM,CACR,8DAA8D;QAC5D,SAAS,YAAY,kBAAkB,UAAU,MAAM,EACzD,IAAI,CACL;IACD,kGAAkG;IAClG,uHAAuH;IACvH,gEAAgE;IAChE,IAAI,MAAM,CAAC,6DAA6D,MAAM,OAAO,EAAE,IAAI,CAAC;IAC5F,2FAA2F;IAC3F,IAAI,MAAM,CAAC,uDAAuD,MAAM,OAAO,EAAE,IAAI,CAAC;IACtF,gCAAgC;IAChC,6FAA6F;IAC7F,0EAA0E;CAC3E,CAAC;AAEF,2EAA2E;AAC3E,EAAE;AACF,6EAA6E;AAC7E,oEAAoE;AACpE,4EAA4E;AAC5E,yEAAyE;AACzE,6DAA6D;AAE7D,MAAM,WAAW,GAAG,4BAA4B,CAAC;AACjD,oFAAoF;AACpF,MAAM,eAAe,GAAG,SAAS,WAAW,mBAAmB,CAAC;AAEhE,uFAAuF;AACvF,MAAM,eAAe,GAAG,IAAI,MAAM,CAChC,8FAA8F;IAC5F,4FAA4F;IAC5F,gEAAgE,EAClE,GAAG,CACJ,CAAC;AACF,0GAA0G;AAC1G,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAC7C;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,IAAI,MAAM,CACjC,6CAA6C,eAAe,mCAAmC,EAC/F,GAAG,CACJ,CAAC;AACF,2BAA2B;AAC3B,MAAM,cAAc,GAAG,IAAI,MAAM,CAC/B,6GAA6G;IAC3G,uCAAuC,eAAe,cAAc,EACtE,GAAG,CACJ,CAAC;AAeF,0FAA0F;AAC1F,MAAM,SAAS,GAAG,gBAAgB,CAAC;AACnC;;;GAGG;AACH,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAEzD,MAAM,GAAG,GAAG,IAAI,MAAM;AACpB,gHAAgH;AAChH,8EAA8E;IAC5E,uEAAuE;IACvE,oBAAoB,EACtB,GAAG,CACJ,CAAC;AACF,MAAM,OAAO,GAAG,IAAI,MAAM;AACxB,qDAAqD;AACrD,2EAA2E,EAC3E,GAAG,CACJ,CAAC;AACF,MAAM,aAAa,GAAG,IAAI,MAAM,CAC9B,GAAG,cAAc,8EAA8E,EAC/F,IAAI,CACL,CAAC;AACF,MAAM,UAAU,GAAG,IAAI,MAAM;AAC3B,gGAAgG;AAChG,GAAG,cAAc,yFAAyF,EAC1G,IAAI,CACL,CAAC;AACF,8FAA8F;AAC9F,MAAM,SAAS,GAAG,IAAI,MAAM,CAC1B,GAAG,SAAS,uBAAuB,eAAe,WAAW;IAC3D,+DAA+D,EACjE,IAAI,CACL,CAAC;AACF,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACpD,MAAM,IAAI,GACR,0FAA0F,CAAC;AAC7F;;;;;GAKG;AACH,MAAM,UAAU,GAAG,IAAI,MAAM,CAC3B,qBAAqB,MAAM,qCAAqC;IAC9D,8CAA8C,MAAM,QAAQ;IAC5D,uCAAuC,EACzC,IAAI,CACL,CAAC;AACF,4HAA4H;AAC5H,MAAM,QAAQ,GAAG,6CAA6C,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,GAAG,gDAAgD,CAAC;AAEpE,8FAA8F;AAC9F,MAAM,UAAU,GAAG,IAAI,MAAM,CAC3B,mCAAmC;IACjC,iBAAiB,UAAU,yCAAyC;IACpE,sDAAsD;IACtD,aAAa,UAAU,GAAG;IAC1B,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAC1F,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,IAAwB,EAAsB,EAAE,CAC3D,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAEhD,SAAS,MAAM,CACb,CAAS,EACT,CAAU,EACV,CAAU,EACV,QAAsB,EACtB,KAAa;IAEb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO;QACL,CAAC;QACD,GAAG,CAAC,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAU,EAAE,IAAY;IACxC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,CAAC;QACR,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,EAAE,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,IAAI,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,iFAAiF;QACjF,MAAM,IAAI,GACR,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxF,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACpD,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1B,IAAI,EAAE,SAAS;YACf,IAAI;YACJ,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAA4D,CAAC;QACjF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;YAAE,SAAS;QACpE,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,MAAM,UAAU,GACd,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,MAAgB,CAAC;QACzE,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;SACnF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC;QACtC,qEAAqE;QACrE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK;YAAE,SAAS;QAC7D,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE;YAAE,SAAS;QACzD,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;SACzE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAI,CAAC,CAAC,CAAC,CAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,CAAE,CAAC,CAAC,CAAC,CAAY,CAAC,WAAW,EAAE,CAAW,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1B,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,UAAU,CAAE,CAAC,CAAC,CAAC,CAAY,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,OAAO;YAAE,SAAS;QACjE,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAE,CAAC,CAAC,CAAC,CAAY,CAAC,WAAW,EAAE,CAA4B,CAAC;QACnF,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,GAAG,GAAG;QACV,GAAG,QAAQ,CAAC,IAAI,CAAC;QACjB,GAAG,YAAY,CAAC,IAAI,CAAC;QACrB,GAAG,UAAU,CAAC,IAAI,CAAC;QACnB,GAAG,SAAS,CAAC,IAAI,CAAC;QAClB,GAAG,SAAS,CAAC,IAAI,CAAC;KACnB,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAW,EAAE,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG;YAAE,SAAS;QAC1D,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,IAAI;QAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,iGAAiG;IACjG,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,IAAY,EAAE,IAAU;IAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO;IACzD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO;IACzC,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO;IACjD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;IACpE,IAAK,IAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;QAAE,OAAO;IACrE,6GAA6G;IAC7G,MAAM,KAAK,GAAG,IAAI,IAAI,MAAM,IAAI,KAAK,IAAK,YAAuB,CAAC;IAClE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1B,CAAC;AASD,SAAS,YAAY,CAAC,IAAY,EAAE,KAAsB;IACxD,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5D,uFAAuF;YACvF,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5E,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAE5E,iEAAiE;AACjE,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,eAAe,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,MAAM,IAAI,GAAG,yCAAyC,CAAC;AAEvD,+CAA+C;AAC/C,MAAM,SAAS,GAAG,CAAC,GAAW,EAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,IAAI,EAAE,CAAC;AAEnG,0FAA0F;AAC1F,SAAS,KAAK,CACZ,GAAW,EACX,OAAgB,EAChB,IAAU,EACV,KAAW;IAEX,IAAI,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACjE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;QACjF,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/D,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC;YAC5B,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,OAAO,EAAE,CAAC;YAChD,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC;YAC5B,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC;AAkBD,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAsB,EAAE,OAAwB;IAC9E,MAAM,KAAK,GAAW;QACpB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;KACxD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC3B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBACxB,SAAS;YACX,CAAC;YACD,wFAAwF;YACxF,oFAAoF;YACpF,MAAM,OAAO,GACX,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjD,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;oBACvB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;wBAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;oBACzD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;gBACrC,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBACrB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBACrD,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,CAAC,IAAI,CAAC;YACb,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;SACpC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3D,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CACpE,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,SAAS,aAAa,CAAC,MAAwB;IAC7C,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uFAAuF;AACvF,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAY;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAC3D,MAAM,MAAM,GACV,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,CAAC;QACxE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;IAC1B,CAAC;AACH,CAAC;AAeD,0FAA0F;AAC1F,SAAS,MAAM,CAAC,KAAsB;IACpC,MAAM,IAAI,GAAS,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC7E,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;gBAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAClD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC9C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACnD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACjG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAAU,EAAa,EAAE,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACnD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACnD,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;CAChE,CAAC,CAAC;AAEH,4EAA4E;AAC5E,SAAS,OAAO,CAAC,KAAY;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAY,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACvF,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/E,MAAM,KAAK,GAAqE,EAAE,CAAC;IACnF,kFAAkF;IAClF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;IACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC1E,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9E,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACpD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,sEAAsE;IACtE,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,OAAO,KAAK,CAAC,SAAS,CAAC;IACzB,CAAC;IACD,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACjF,MAAM,KAAK,GAAc,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACvD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,4FAA4F;AAC5F,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,QAAQ,CAAC,IAAI,CACX,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;YAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAC/B,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAcD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAoC,EAAE;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,sBAAsB;QAC1B,OAAO,EAAE,2BAA2B;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO;QACjC,IAAI,EAAE,MAAe;QACrB,IAAI,EAAE,CAAC,IAAY,EAAe,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;KACtE,CAAC,CAAC;AACL,CAAC"}
@@ -38,8 +38,12 @@ export interface TimeAsk {
38
38
  }
39
39
  /**
40
40
  * The ask a `time-reading` row needs, or `undefined` when its reading is
41
- * settled (`only`, `policy`) or cannot be asked about (`none`, a refused
42
- * mention). `messages` is the whole catalog (the caller composes the app's
43
- * overrides over `defaultTimeAskMessages`); `id` names the field.
41
+ * settled (`only`, `policy`) or is no person's words (a refused mention).
42
+ * Words the library holds NO reading of (`none`: unreadable, no candidate)
43
+ * are asked too — which time the person meant, free entry, nothing
44
+ * pre-filled (`ask.which`, `format: 'time-range'`): the person wrote a time,
45
+ * and a tool's default never stands in for it. `messages` is the whole
46
+ * catalog (the caller composes the app's overrides over
47
+ * `defaultTimeAskMessages`); `id` names the field.
44
48
  */
45
49
  export declare function timeAskOf(row: TimeReadingRow, messages: TimeAskMessages, id?: string): TimeAsk | undefined;
@@ -23,6 +23,7 @@
23
23
  import { fillMessage, quoted } from './ask.js';
24
24
  import { spellRange } from './range.js';
25
25
  import { presentRange } from './present.js';
26
+ import { shownGrain } from './resolveRecord.js';
26
27
  /** The zone token the person wrote in the mention's first parse that has one. */
27
28
  function saidZoneToken(row) {
28
29
  for (const parts of row.parses ?? []) {
@@ -34,13 +35,25 @@ function saidZoneToken(row) {
34
35
  }
35
36
  /**
36
37
  * The ask a `time-reading` row needs, or `undefined` when its reading is
37
- * settled (`only`, `policy`) or cannot be asked about (`none`, a refused
38
- * mention). `messages` is the whole catalog (the caller composes the app's
39
- * overrides over `defaultTimeAskMessages`); `id` names the field.
38
+ * settled (`only`, `policy`) or is no person's words (a refused mention).
39
+ * Words the library holds NO reading of (`none`: unreadable, no candidate)
40
+ * are asked too — which time the person meant, free entry, nothing
41
+ * pre-filled (`ask.which`, `format: 'time-range'`): the person wrote a time,
42
+ * and a tool's default never stands in for it. `messages` is the whole
43
+ * catalog (the caller composes the app's overrides over
44
+ * `defaultTimeAskMessages`); `id` names the field.
40
45
  */
41
46
  export function timeAskOf(row, messages, id = 'time') {
42
47
  const choice = row.choice;
43
- if (choice?.by !== 'open' || row.quote === undefined)
48
+ if (row.quote === undefined || row.refused !== undefined)
49
+ return undefined;
50
+ if (choice?.by === 'none') {
51
+ return {
52
+ question: fillMessage(messages['ask.which'], { quote: quoted(row.quote) }),
53
+ field: { id, type: 'string', required: true, format: 'time-range' },
54
+ };
55
+ }
56
+ if (choice?.by !== 'open')
44
57
  return undefined;
45
58
  const quote = quoted(row.quote);
46
59
  if (choice.open.includes('zone')) {
@@ -68,7 +81,9 @@ export function timeAskOf(row, messages, id = 'time') {
68
81
  // on every reading's open choice); this only reads it.
69
82
  const confirm = choice.open.includes('confirm');
70
83
  const labels = offered.map(({ candidate }) => {
71
- const window = presentRange(candidate.range, { zone: candidate.zone, locale: row.reader.locale }, candidate.grain);
84
+ // The end as said when it was widened, a look-back's at now: "8 AM to 9 AM" is shown
85
+ // 8:00 – 9:00, not 8:59; "last 40 minutes" 8:00 – 8:40, not 8:40:00.001.
86
+ const window = presentRange(candidate.range, { zone: candidate.zone, locale: row.reader.locale }, shownGrain(candidate));
72
87
  if (!confirm)
73
88
  return window;
74
89
  // The zone is named: the reading leaned on it, and the person may have meant another.
@@ -1 +1 @@
1
- {"version":3,"file":"readingAsk.js","sourceRoot":"","sources":["../../../../src/core/time/readingAsk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readingAsk.js","sourceRoot":"","sources":["../../../../src/core/time/readingAsk.ts"],"names":[],"mappings":"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"}
@@ -25,22 +25,31 @@
25
25
  * | a numeric date of two fields `10/09` | `MDY` and `DMY`, each for the clock's year and the one before |
26
26
  * | a date with no year | the clock's year (`current`) and the one before (`previous`) |
27
27
  * | a two-digit year `26` | the clock's century, noted `century-implied` |
28
- * | a clock time with no meridiem, hour 1–12 (`8:40`) | am and pm |
28
+ * | a clock time with no meridiem, hour 1–12 (`8:40`) | am and pm — one when the form is a 24-hour clock (`clock: '24h'`, an ISO instant) |
29
29
  * | a wall time the clocks go back through (`01:30`) | both instants, each noted `dst-overlap` |
30
30
  * | a wall time the clocks skip (`02:30`) | both readings Temporal names, each noted `dst-gap` |
31
31
  * | a day word (`{ day, offset: -1 }`) | the calendar day in the zone, anchored on the clock |
32
32
  * | a span (`{ minute, count: 40 }`) | a look-back until the clock's `now` |
33
- * | a range | one per combination of its sides that agree on date order and year, `from` before `to` |
33
+ * | a range | one per combination of its sides that agree on date order, year and abbreviation reading, `from` before `to`; a first side with no meridiem takes the second's (`8 to 9 PM` → 8 PM) unless that runs backwards (`11 to 1 PM` → 11 AM) |
34
+ * | a place named with `time` (`London time`) | the ONE zone the tz database has for it (`zone.ts` · `zoneOfPlace`), noted `zone-read`; none or several → the zone is asked |
35
+ * | an abbreviation in the app's map (`PST`) | its zone's reading AND its literal offset's, when they name different windows — tagged `abbreviation`, noted `zone-read` |
34
36
  *
35
37
  * The fixed laws: a time is read to the END OF ITS GRAIN ("to 8:40" is
36
- * `[08:00, 08:41)`, noted `end-of-grain`); a day starts at its first instant
37
- * (Temporal's `startOfDay`: a midnight the clocks skip starts the day at the
38
- * first wall time that exists); a zone the person did not say is the clock's;
39
- * a zone they said is an IANA name or a numeric offset — any other token (an
40
- * abbreviation such as `PST`) resolves nothing and is ASKED (no map ships in
41
- * v1). Parts v1 does not resolve — a part of the day, a calendar span other
42
- * than a day, a window anchored on the previous one — are named
43
- * `unsupported`, never guessed.
38
+ * `[08:00, 08:41)`, a lone "9 AM" is `[09:00, 10:00)`, a day ends at the next
39
+ * midnight — each noted `end-of-grain`) EXCEPT a range end said as an
40
+ * o'clock hour, which is a boundary on the clock face and ends AT that
41
+ * instant ("8 AM to 9 AM" is `[08:00, 09:00)`, no note — `endOf`); whether
42
+ * an end was widened is asked of `widenedGrain`, never of `grain`. A day
43
+ * starts at its first instant (Temporal's `startOfDay`: a midnight the
44
+ * clocks skip starts the day at the first wall time that exists); a zone the
45
+ * person did not say is the clock's; a zone they said is an IANA name, a
46
+ * numeric offset, a place named with `time` that the tz database names
47
+ * exactly once, or an abbreviation in the APP's map (`policy.abbreviations`)
48
+ * — any other token (`PST` with no map, `India time`, `Pacific time`)
49
+ * resolves nothing and is ASKED (`zoneReadsOf`, the one owner). Parts v1
50
+ * does not resolve — a part of the day, a calendar span other than a day, a
51
+ * window anchored on the previous one — are named `unsupported`, never
52
+ * guessed.
44
53
  *
45
54
  * {@link chooseReading} then applies the app's policy (`dateOrder`, `year`)
46
55
  * and names what is left: one window (`only`, or `policy` when the policy
@@ -70,12 +79,15 @@
70
79
  import { type ZoneName } from './zone.js';
71
80
  import type { TimeParts } from './reader.js';
72
81
  import { type MentionResolution, type ReadingChoice, type ResolveClock, type TimePolicy } from './resolveRecord.js';
73
- export { candidateIsWellFormed, choiceIsWellFormed, DEFAULT_TIME_POLICY, readPolicy, } from './resolveRecord.js';
74
- export type { MentionResolution, OpenQuestion, ReadingChoice, ReadingTags, ResolveClock, ResolvedWindow, TimeCandidate, TimeNote, TimePart, TimePolicy, TimeWindow, } from './resolveRecord.js';
82
+ export { candidateIsWellFormed, choiceIsWellFormed, DEFAULT_TIME_POLICY, readPolicy, shownGrain, widenedGrain, } from './resolveRecord.js';
83
+ export type { MentionResolution, OpenQuestion, ReadingChoice, ReadingTags, ResolveClock, ResolvedWindow, TimeCandidate, TimeNote, TimePart, TimePolicy, TimeWindow, ZoneAbbreviation, } from './resolveRecord.js';
84
+ /** The policy half the resolver reads: the app's abbreviation map. */
85
+ type ZonePolicy = Pick<TimePolicy, 'abbreviations'>;
75
86
  /**
76
- * The parts with every zone token this layer cannot read (an abbreviation such
77
- * as `PST`) replaced by the zone the PERSON named when asked (§ 6.3) — the
78
- * whole mention's and each range side's. A token it can read is kept.
87
+ * The parts with every zone token this layer cannot read (an abbreviation
88
+ * outside the app's map, `India time`) replaced by the zone the PERSON named
89
+ * when asked (§ 6.3) — the whole mention's and each range side's. A token it
90
+ * can read is kept.
79
91
  *
80
92
  * @example
81
93
  * ```ts
@@ -83,16 +95,18 @@ export type { MentionResolution, OpenQuestion, ReadingChoice, ReadingTags, Resol
83
95
  * // [{ wall: { h: 8, meridiem: 'am' }, zoneToken: 'America/Los_Angeles' }]
84
96
  * ```
85
97
  */
86
- export declare function withZoneAnswered(parses: readonly TimeParts[], zone: ZoneName): TimeParts[];
98
+ export declare function withZoneAnswered(parses: readonly TimeParts[], zone: ZoneName, policy?: ZonePolicy): TimeParts[];
87
99
  /**
88
100
  * Every candidate window of one mention's parses, resolved against the
89
101
  * clock. A reading the person must confirm (`confirm: true` — every reading
90
102
  * the record files, TQ29; a `model` reader's by default) carries `said: []`.
103
+ * `policy` is read for its abbreviation map only (`dateOrder` and `year`
104
+ * are {@link chooseReading}'s): absent, no abbreviation names a zone.
91
105
  */
92
106
  export declare function resolveMention(parses: readonly TimeParts[], clock: ResolveClock, reader: {
93
107
  readonly id: string;
94
108
  readonly kind: 'rule' | 'model';
95
- }, confirm?: boolean): MentionResolution;
109
+ }, confirm?: boolean, policy?: ZonePolicy): MentionResolution;
96
110
  /**
97
111
  * How one mention settles under the app's policy (§ 5.1, § 11). The policy
98
112
  * only removes readings; it never adds one. A DST choice, a meridiem, a