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
@@ -23,9 +23,11 @@
23
23
  * // { now: '2026-10-09T15:40:00Z', windows: [{ source: 'answered', quote: 'yesterday', … }] }
24
24
  * ```
25
25
  */
26
+ import type { WindowToConvert } from './convert.js';
26
27
  import type { DurationText } from './duration.js';
27
28
  import type { InstantText } from './instant.js';
28
29
  import { type TimeRange } from './range.js';
30
+ import type { TimeRefusal } from './periodForm.js';
29
31
  import { type ClockRow, type TimeAnswerRow, type TimeReadingRow } from './rows.js';
30
32
  import type { ZoneName } from './zone.js';
31
33
  /**
@@ -57,26 +59,69 @@ export interface TurnWindows {
57
59
  /** Every mention with a quote, plus the `control` window — the "exactly one" count. */
58
60
  readonly mentions: number;
59
61
  /**
60
- * Per mention still OPEN (the person has not chosen), the ranges of the
61
- * readings left — what a tool's facts can already rule out (§ 6.3: every
62
- * reading outside a tool's `direction` → nothing is asked, the call is
63
- * refused). Absent when no mention is open with candidates.
62
+ * Per mention still OPEN for the person (they have not answered it), the
63
+ * ranges of the readings left — what a tool's facts can already rule out
64
+ * (§ 6.3: every reading outside a tool's `direction` → nothing is asked, the
65
+ * call is refused). EMPTY for a mention the library holds no reading of yet
66
+ * — a zone to name first (`open` on `zone`), or words it could not read
67
+ * (`by: 'none'`): nothing to rule out, and the person is still asked
68
+ * (`isOpenForPerson`). Absent when no mention is open.
64
69
  */
65
70
  readonly open?: readonly (readonly TimeRange[])[];
66
71
  }
72
+ /**
73
+ * The look-back the library OFFERED for a reading, when the person's answer is
74
+ * exactly it (`last 2 hours` confirmed as offered) — the window then stays a
75
+ * look-back from now. `undefined` for any other answer (an edit, a range).
76
+ */
77
+ export declare function offeredLookback(row: TimeReadingRow | undefined, range: TimeRange): DurationText | undefined;
78
+ /**
79
+ * What a turn window hands the conversion — its range and, when it was said
80
+ * (and answered) as a look-back, that look-back. THE one input every door
81
+ * that writes a window into a tool's arguments builds (the fill, the time
82
+ * ask's answer, the served line), so the value served to the model and the
83
+ * value the tool is handed are one spelling (time follow-ups, packet "gaps":
84
+ * the served line spelled `15:59:59Z` where the ask's fill handed `16:00:00Z`).
85
+ */
86
+ export declare function windowToConvert(window: {
87
+ readonly range: TimeRange;
88
+ readonly lookback?: DurationText;
89
+ }): WindowToConvert;
90
+ /**
91
+ * Whether a mention the person has not answered still waits on THEM — the
92
+ * one owner of "a time the person wrote that the library holds no settled
93
+ * window for" (the lazy ask, the served line's pending half and the window
94
+ * plan all ask it): a reading still `open` (readings to confirm, a zone to
95
+ * name), and words the library holds NO reading of (`by: 'none'` — words the
96
+ * reader could not read, or no candidate). The person said a time either way,
97
+ * so a tool's default never stands in for it (time follow-ups, packet "gaps":
98
+ * an unreadable phrase to a tool whose rule assumed its period ran that
99
+ * default silently). A `model` reading's one window is not open: it fills as
100
+ * a reading. A refused mention (its quote was not in the text) is not the
101
+ * person's words.
102
+ */
103
+ export declare function isOpenForPerson(row: TimeReadingRow): boolean;
67
104
  /**
68
105
  * This turn's windows, read from the record: per mention, the window the
69
106
  * person settled in the time ask (`answered`, its latest `time-answer` row),
70
107
  * else a `model` reader's one window waiting for confirmation
71
108
  * (`derived-from-reading`); and the clock's `control` window. A `rule`
72
- * reading the person has not answered is counted and is OPEN.
109
+ * reading the person has not answered, and words the library could not read,
110
+ * are counted and are OPEN ({@link isOpenForPerson}).
73
111
  */
74
112
  export declare function turnWindowsOf(readings: readonly TimeReadingRow[], clock: ClockRow | undefined, answers?: readonly TimeAnswerRow[]): TurnWindows;
75
113
  /** The windows of the person's words this turn, with the turn's clock — what the served sentence names. */
76
114
  export interface ReaderWindows {
77
115
  readonly now: InstantText;
78
- /** Each settled mention's window (`answered`, or a `model` reading's), in mention order — never the `control` window. */
116
+ /** Each settled mention's window (`answered`, or a `model` reader's), in mention order — never the `control` window. */
79
117
  readonly windows: readonly TurnWindow[];
118
+ /**
119
+ * The window the person set in the app's time control this turn (the run's
120
+ * `time.window`, recorded on the `clock` row, `source: 'control'`) — served
121
+ * on its own sentence, so an app never writes its own prompt text for it.
122
+ * Absent when the run set none.
123
+ */
124
+ readonly control?: TurnWindow;
80
125
  /**
81
126
  * The quote of each mention the library holds only as a PROPOSAL — a `rule`
82
127
  * reading the person has not answered yet (its choice still `open`: a zone
@@ -86,6 +131,21 @@ export interface ReaderWindows {
86
131
  * `bench/time/`). Absent when none is pending.
87
132
  */
88
133
  readonly pending?: readonly string[];
134
+ /**
135
+ * The quotes in `pending` the library holds NO reading of yet: the words
136
+ * name a zone it cannot resolve (an abbreviation outside the app's map), so
137
+ * the time ask asks for the zone and pre-fills nothing (the choice `open`
138
+ * on `zone`, no candidates). The served line says so instead of promising a
139
+ * form that shows a reading (T6b paid run: `field-pst`). Absent when none.
140
+ */
141
+ readonly pendingZones?: readonly string[];
142
+ /**
143
+ * The quotes in `pending` the library could not READ at all (`by: 'none'`:
144
+ * words outside the reader's set, or no candidate): the time ask asks the
145
+ * person which time they meant, with nothing pre-filled. The served line
146
+ * says so instead of promising a reading. Absent when none.
147
+ */
148
+ readonly pendingUnread?: readonly string[];
89
149
  /**
90
150
  * A mention is pending AND a call of this turn already ran on a window the
91
151
  * model wrote into it (a `call-window` row `how: 'model'` — § 7.3: it runs
@@ -94,20 +154,41 @@ export interface ReaderWindows {
94
154
  * otherwise.
95
155
  */
96
156
  readonly ranUnconfirmed?: true;
157
+ /**
158
+ * The person's windows a tool REFUSED this turn, before dispatch (a
159
+ * `call-window` row `how: 'refused'`): the quote, the tool and the reason
160
+ * code — a window of the person's the call carried (`person.mention`), or
161
+ * the turn's one open reading, refused in every reading (a row with no
162
+ * range). The served line turns each into the conclusion an answer states,
163
+ * so a refused window is never asked for again as though a call could read
164
+ * it. A window the model wrote is not the person's and is not named. Absent
165
+ * when none was refused.
166
+ */
167
+ readonly refused?: readonly RefusedWindow[];
168
+ }
169
+ /** One window of the person's a tool refused before dispatch — what the served line concludes. */
170
+ export interface RefusedWindow {
171
+ readonly quote: string;
172
+ readonly toolName: string;
173
+ readonly refused: TimeRefusal;
174
+ /** On a `dst-gap`: the argument whose wall time the zone skips. */
175
+ readonly argument?: string;
97
176
  }
98
177
  /**
99
- * The quotes of this turn's mentions still waiting on the person: a reading
100
- * with a quote whose choice is `open`, not answered in the time ask, and not a
101
- * `model` reading's one window (that one is served as a reading). Unreadable
102
- * and refused mentions offer nothing to confirm and are not named.
178
+ * The quotes of this turn's mentions still waiting on the person
179
+ * ({@link isOpenForPerson}), not answered in the time ask: a reading to
180
+ * confirm, a zone to name, or words the library could not read (asked with
181
+ * nothing pre-filled). A `model` reading's one window is served as a reading;
182
+ * a refused mention is not the person's words.
103
183
  */
104
184
  export declare function pendingQuotesOf(readings: readonly TimeReadingRow[], answers?: readonly TimeAnswerRow[]): readonly string[];
105
185
  /**
106
186
  * The latest turn's windows of the person's words, read off the ledger (its
107
187
  * last `clock` row and that turn's `time-reading` and `time-answer` rows) —
108
- * `undefined` when the turn has no clock, no settled mention and none
109
- * pending. A `rule` reading is named as a window only once the person
110
- * answered it in the time ask; before that its quote is `pending`. The
111
- * `control` window is not a reading and is not named (TQ13).
188
+ * `undefined` when the turn has no clock, no settled mention, none pending
189
+ * and no `control` window. A `rule` reading is named as a window only once
190
+ * the person answered it in the time ask; before that its quote is
191
+ * `pending`. The `control` window is no reading: it rides `control`, never
192
+ * `windows`.
112
193
  */
113
194
  export declare function readerWindowsOf(ledger: readonly unknown[] | undefined): ReaderWindows | undefined;
@@ -40,12 +40,57 @@ function readingCandidate(row) {
40
40
  return undefined;
41
41
  return row.candidates?.[choice.remaining[0]];
42
42
  }
43
+ /**
44
+ * The look-back the library OFFERED for a reading, when the person's answer is
45
+ * exactly it (`last 2 hours` confirmed as offered) — the window then stays a
46
+ * look-back from now. `undefined` for any other answer (an edit, a range).
47
+ */
48
+ export function offeredLookback(row, range) {
49
+ const offered = row?.candidates?.find((c) => c.window.kind === 'lookback' && sameRange(c.range, range))?.window;
50
+ return offered?.kind === 'lookback' ? offered.duration : undefined;
51
+ }
52
+ /**
53
+ * What a turn window hands the conversion — its range and, when it was said
54
+ * (and answered) as a look-back, that look-back. THE one input every door
55
+ * that writes a window into a tool's arguments builds (the fill, the time
56
+ * ask's answer, the served line), so the value served to the model and the
57
+ * value the tool is handed are one spelling (time follow-ups, packet "gaps":
58
+ * the served line spelled `15:59:59Z` where the ask's fill handed `16:00:00Z`).
59
+ */
60
+ export function windowToConvert(window) {
61
+ return {
62
+ range: window.range,
63
+ ...(window.lookback !== undefined && { lookback: window.lookback }),
64
+ };
65
+ }
66
+ /**
67
+ * Whether a mention the person has not answered still waits on THEM — the
68
+ * one owner of "a time the person wrote that the library holds no settled
69
+ * window for" (the lazy ask, the served line's pending half and the window
70
+ * plan all ask it): a reading still `open` (readings to confirm, a zone to
71
+ * name), and words the library holds NO reading of (`by: 'none'` — words the
72
+ * reader could not read, or no candidate). The person said a time either way,
73
+ * so a tool's default never stands in for it (time follow-ups, packet "gaps":
74
+ * an unreadable phrase to a tool whose rule assumed its period ran that
75
+ * default silently). A `model` reading's one window is not open: it fills as
76
+ * a reading. A refused mention (its quote was not in the text) is not the
77
+ * person's words.
78
+ */
79
+ export function isOpenForPerson(row) {
80
+ if (row.mentions === 0 || row.refused !== undefined || row.quote === undefined)
81
+ return false;
82
+ const by = row.choice?.by;
83
+ if (by !== 'open' && by !== 'none')
84
+ return false;
85
+ return readingCandidate(row) === undefined;
86
+ }
43
87
  /**
44
88
  * This turn's windows, read from the record: per mention, the window the
45
89
  * person settled in the time ask (`answered`, its latest `time-answer` row),
46
90
  * else a `model` reader's one window waiting for confirmation
47
91
  * (`derived-from-reading`); and the clock's `control` window. A `rule`
48
- * reading the person has not answered is counted and is OPEN.
92
+ * reading the person has not answered, and words the library could not read,
93
+ * are counted and are OPEN ({@link isOpenForPerson}).
49
94
  */
50
95
  export function turnWindowsOf(readings, clock, answers = []) {
51
96
  const windows = [];
@@ -60,13 +105,13 @@ export function turnWindowsOf(readings, clock, answers = []) {
60
105
  if (answer !== undefined) {
61
106
  const range = { from: answer.from, to: answer.to };
62
107
  // The person picked a look-back the library offered: it stays a look-back from now.
63
- const offered = row.candidates?.find((c) => c.window.kind === 'lookback' && sameRange(c.range, range))?.window;
108
+ const lookback = offeredLookback(row, range);
64
109
  windows.push({
65
110
  source: 'answered',
66
111
  mention: answer.mention,
67
112
  quote: row.quote,
68
113
  range,
69
- ...(offered?.kind === 'lookback' && { lookback: offered.duration }),
114
+ ...(lookback !== undefined && { lookback }),
70
115
  zone: answer.zone,
71
116
  answer: answer.how,
72
117
  });
@@ -81,7 +126,9 @@ export function turnWindowsOf(readings, clock, answers = []) {
81
126
  return c === undefined ? [] : [c.range];
82
127
  })
83
128
  : [];
84
- if (left.length > 0)
129
+ // Open with no reading yet (a zone to name, words not read) is still open: nothing to rule
130
+ // out, and the person is asked — never left to the tool's own rule.
131
+ if (left.length > 0 || isOpenForPerson(row))
85
132
  open.push(left);
86
133
  continue;
87
134
  }
@@ -116,34 +163,82 @@ function ranOnSentWindow(ledger, turn) {
116
163
  });
117
164
  }
118
165
  /**
119
- * The quotes of this turn's mentions still waiting on the person: a reading
120
- * with a quote whose choice is `open`, not answered in the time ask, and not a
121
- * `model` reading's one window (that one is served as a reading). Unreadable
122
- * and refused mentions offer nothing to confirm and are not named.
166
+ * The person's windows the tools refused this turn (`ReaderWindows.refused`):
167
+ * each `call-window` row `how: 'refused'` whose window was the person's — its
168
+ * `person.mention`'s quote — or, with no range at all, the turn's one open
169
+ * reading (`openQuote`), refused in every reading. Once per (quote, tool).
170
+ */
171
+ function refusedWindowsOf(ledger, turn, readings, openQuote) {
172
+ const quoteOf = new Map(readings.flatMap((r) => r.quote !== undefined && r.refused === undefined ? [[r.mention ?? 0, r.quote]] : []));
173
+ const out = [];
174
+ for (const row of ledger ?? []) {
175
+ const r = row;
176
+ if (r === null || typeof r !== 'object' || r.kind !== 'call-window' || r.turn !== turn)
177
+ continue;
178
+ if (r.how !== 'refused' || r.refused === undefined || typeof r.toolName !== 'string')
179
+ continue;
180
+ const quote = r.person !== undefined
181
+ ? r.person.mention === undefined
182
+ ? undefined
183
+ : quoteOf.get(r.person.mention)
184
+ : r.asked === undefined && r.form === undefined
185
+ ? openQuote
186
+ : undefined;
187
+ if (quote === undefined)
188
+ continue;
189
+ if (out.some((w) => w.quote === quote && w.toolName === r.toolName))
190
+ continue;
191
+ out.push({
192
+ quote,
193
+ toolName: r.toolName,
194
+ refused: r.refused,
195
+ ...(r.argument !== undefined && { argument: r.argument }),
196
+ });
197
+ }
198
+ return out;
199
+ }
200
+ /**
201
+ * The quotes of this turn's mentions still waiting on the person
202
+ * ({@link isOpenForPerson}), not answered in the time ask: a reading to
203
+ * confirm, a zone to name, or words the library could not read (asked with
204
+ * nothing pre-filled). A `model` reading's one window is served as a reading;
205
+ * a refused mention is not the person's words.
123
206
  */
124
207
  export function pendingQuotesOf(readings, answers = []) {
125
208
  const answered = new Set(answers.map((a) => a.mention));
126
209
  const quotes = [];
127
210
  for (const row of readings) {
128
- if (row.mentions === 0 || row.refused !== undefined || row.quote === undefined)
129
- continue;
130
- if (row.choice?.by !== 'open')
211
+ if (!isOpenForPerson(row))
131
212
  continue;
132
213
  if (row.mention !== undefined && answered.has(row.mention))
133
214
  continue;
134
- if (readingCandidate(row) !== undefined)
135
- continue;
136
215
  quotes.push(row.quote);
137
216
  }
138
217
  return quotes;
139
218
  }
219
+ /** The quotes among `pending` the library could not read at all (`ReaderWindows.pendingUnread`). */
220
+ function pendingUnreadOf(readings, pending) {
221
+ return pending.filter((quote) => readings.some((r) => r.quote === quote && r.choice?.by === 'none'));
222
+ }
223
+ /**
224
+ * The quotes among `pending` whose reading offers nothing to confirm yet —
225
+ * no candidate, the choice open on the zone the words name
226
+ * (`ReaderWindows.pendingZones`).
227
+ */
228
+ function pendingZonesOf(readings, pending) {
229
+ return pending.filter((quote) => readings.some((r) => r.quote === quote &&
230
+ (r.candidates ?? []).length === 0 &&
231
+ r.choice?.by === 'open' &&
232
+ r.choice.open.includes('zone')));
233
+ }
140
234
  /**
141
235
  * The latest turn's windows of the person's words, read off the ledger (its
142
236
  * last `clock` row and that turn's `time-reading` and `time-answer` rows) —
143
- * `undefined` when the turn has no clock, no settled mention and none
144
- * pending. A `rule` reading is named as a window only once the person
145
- * answered it in the time ask; before that its quote is `pending`. The
146
- * `control` window is not a reading and is not named (TQ13).
237
+ * `undefined` when the turn has no clock, no settled mention, none pending
238
+ * and no `control` window. A `rule` reading is named as a window only once
239
+ * the person answered it in the time ask; before that its quote is
240
+ * `pending`. The `control` window is no reading: it rides `control`, never
241
+ * `windows`.
147
242
  */
148
243
  export function readerWindowsOf(ledger) {
149
244
  const clock = clockOf(ledger);
@@ -154,13 +249,27 @@ export function readerWindowsOf(ledger) {
154
249
  const answers = answersOf(ledger, turn);
155
250
  const { windows } = turnWindowsOf(readings, undefined, answers);
156
251
  const pending = pendingQuotesOf(readings, answers);
157
- if (windows.length === 0 && pending.length === 0)
252
+ const control = clock.window === undefined
253
+ ? undefined
254
+ : {
255
+ source: 'control',
256
+ range: { from: clock.window.from, to: clock.window.to },
257
+ zone: clock.zone,
258
+ };
259
+ if (windows.length === 0 && pending.length === 0 && control === undefined)
158
260
  return undefined;
261
+ const zones = pendingZonesOf(readings, pending);
262
+ const unread = pendingUnreadOf(readings, pending);
263
+ const refused = refusedWindowsOf(ledger, turn, readings, pending.length === 1 ? pending[0] : undefined);
159
264
  return {
160
265
  now: clock.now,
161
266
  windows,
267
+ ...(control !== undefined && { control }),
162
268
  ...(pending.length > 0 && { pending }),
269
+ ...(zones.length > 0 && { pendingZones: zones }),
270
+ ...(unread.length > 0 && { pendingUnread: unread }),
163
271
  ...(pending.length > 0 && ranOnSentWindow(ledger, turn) && { ranUnconfirmed: true }),
272
+ ...(refused.length > 0 && { refused }),
164
273
  };
165
274
  }
166
275
  //# sourceMappingURL=windows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"windows.js","sourceRoot":"","sources":["../../../../src/core/time/windows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"windows.js","sourceRoot":"","sources":["../../../../src/core/time/windows.ts"],"names":[],"mappings":"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"}
@@ -113,3 +113,35 @@ export declare function wallToInstant(wall: WallTime, zone: ZoneName, disambigua
113
113
  * between releases, so a reading is re-derivable only with it.
114
114
  */
115
115
  export declare function tzdataVersion(): string;
116
+ /**
117
+ * The ONE zone a place name names in this runtime's tz database, or
118
+ * `undefined` when it names none or more than one. `London` → `Europe/London`,
119
+ * `New York` → `America/New_York`; `India`, `Pacific`, `Eastern` → `undefined`
120
+ * (no zone ends in them — a region is not a place). Looked up two ways, both
121
+ * the tz database's own data: the zones whose last segment is the place, and
122
+ * `Area/Place` under each geographic area (which admits a renamed city's link,
123
+ * `Kyiv`). Every hit is compared by its canonical name, so a link and its
124
+ * target are one zone. Memoised; the runtime's database does not change.
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * zoneOfPlace('London'); // 'Europe/London'
129
+ * zoneOfPlace('New York'); // 'America/New_York'
130
+ * zoneOfPlace('India'); // undefined — asked, never guessed
131
+ * ```
132
+ */
133
+ export declare function zoneOfPlace(place: string): ZoneName | undefined;
134
+ /**
135
+ * The IANA zone that is a fixed offset, for a whole-hour offset the tz
136
+ * database names (`Etc/GMT+8` is −08:00 — POSIX signs, inverted), else
137
+ * `undefined`. How a window read at a literal offset, or typed with one no
138
+ * other zone shows, names its zone without claiming a place's.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * fixedOffsetZone(-480); // 'Etc/GMT+8'
143
+ * fixedOffsetZone(0); // 'UTC'
144
+ * fixedOffsetZone(330); // undefined — no Etc zone for +05:30
145
+ * ```
146
+ */
147
+ export declare function fixedOffsetZone(minutes: number): ZoneName | undefined;
@@ -239,4 +239,106 @@ export function tzdataVersion() {
239
239
  const tz = versions?.tz;
240
240
  return typeof tz === 'string' && tz.length > 0 && tz.length <= 32 ? tz : 'unknown';
241
241
  }
242
+ // ─── Zones named in words (data from the tz database, never a word list) ─
243
+ /** The areas a place's zone is looked up under (`Etc` and the legacy `US/…` links are not places). */
244
+ const PLACE_AREAS = [
245
+ 'Africa',
246
+ 'America',
247
+ 'Antarctica',
248
+ 'Asia',
249
+ 'Atlantic',
250
+ 'Australia',
251
+ 'Europe',
252
+ 'Indian',
253
+ 'Pacific',
254
+ ];
255
+ const PLACE_KEY = /^[A-Za-z][A-Za-z'.-]*(?:_[A-Za-z][A-Za-z'.-]*){0,3}$/;
256
+ const placeMemo = new Map();
257
+ let placeIndex;
258
+ /** Last segment (lower case) → the runtime's zones that end in it, from `Intl.supportedValuesOf`. */
259
+ function placeIndexOf() {
260
+ if (placeIndex !== undefined)
261
+ return placeIndex;
262
+ const index = new Map();
263
+ const supported = Intl.supportedValuesOf;
264
+ let names = [];
265
+ try {
266
+ names = typeof supported === 'function' ? supported('timeZone') : [];
267
+ }
268
+ catch {
269
+ names = [];
270
+ }
271
+ for (const name of names) {
272
+ const area = name.slice(0, name.indexOf('/'));
273
+ if (!PLACE_AREAS.includes(area))
274
+ continue;
275
+ const last = name.slice(name.lastIndexOf('/') + 1).toLowerCase();
276
+ index.set(last, [...(index.get(last) ?? []), name]);
277
+ }
278
+ placeIndex = index;
279
+ return index;
280
+ }
281
+ /**
282
+ * The ONE zone a place name names in this runtime's tz database, or
283
+ * `undefined` when it names none or more than one. `London` → `Europe/London`,
284
+ * `New York` → `America/New_York`; `India`, `Pacific`, `Eastern` → `undefined`
285
+ * (no zone ends in them — a region is not a place). Looked up two ways, both
286
+ * the tz database's own data: the zones whose last segment is the place, and
287
+ * `Area/Place` under each geographic area (which admits a renamed city's link,
288
+ * `Kyiv`). Every hit is compared by its canonical name, so a link and its
289
+ * target are one zone. Memoised; the runtime's database does not change.
290
+ *
291
+ * @example
292
+ * ```ts
293
+ * zoneOfPlace('London'); // 'Europe/London'
294
+ * zoneOfPlace('New York'); // 'America/New_York'
295
+ * zoneOfPlace('India'); // undefined — asked, never guessed
296
+ * ```
297
+ */
298
+ export function zoneOfPlace(place) {
299
+ const key = place.trim().replace(/\s+/g, '_');
300
+ if (key.length > 32 || !PLACE_KEY.test(key))
301
+ return undefined;
302
+ const memo = placeMemo.get(key.toLowerCase());
303
+ if (memo !== undefined)
304
+ return memo ?? undefined;
305
+ const found = new Set();
306
+ for (const name of placeIndexOf().get(key.toLowerCase()) ?? []) {
307
+ found.add(canonicalZone(name) ?? name);
308
+ }
309
+ for (const area of PLACE_AREAS) {
310
+ const name = canonicalZone(`${area}/${key}`);
311
+ if (name !== undefined)
312
+ found.add(name);
313
+ }
314
+ const zone = found.size === 1 ? [...found][0] : undefined;
315
+ if (placeMemo.size >= MAX_CACHED)
316
+ placeMemo.clear();
317
+ placeMemo.set(key.toLowerCase(), zone ?? null);
318
+ return zone;
319
+ }
320
+ /**
321
+ * The IANA zone that is a fixed offset, for a whole-hour offset the tz
322
+ * database names (`Etc/GMT+8` is −08:00 — POSIX signs, inverted), else
323
+ * `undefined`. How a window read at a literal offset, or typed with one no
324
+ * other zone shows, names its zone without claiming a place's.
325
+ *
326
+ * @example
327
+ * ```ts
328
+ * fixedOffsetZone(-480); // 'Etc/GMT+8'
329
+ * fixedOffsetZone(0); // 'UTC'
330
+ * fixedOffsetZone(330); // undefined — no Etc zone for +05:30
331
+ * ```
332
+ */
333
+ export function fixedOffsetZone(minutes) {
334
+ if (minutes === 0)
335
+ return 'UTC';
336
+ if (!Number.isInteger(minutes) || minutes % 60 !== 0)
337
+ return undefined;
338
+ const hours = minutes / 60;
339
+ if (hours < -12 || hours > 14)
340
+ return undefined;
341
+ const name = `Etc/GMT${hours < 0 ? '+' : '-'}${Math.abs(hours)}`;
342
+ return isZoneName(name) ? name : undefined;
343
+ }
242
344
  //# sourceMappingURL=zone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zone.js","sourceRoot":"","sources":["../../../../src/core/time/zone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zone.js","sourceRoot":"","sources":["../../../../src/core/time/zone.ts"],"names":[],"mappings":"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"}