agentfootprint 9.128.1 → 9.131.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 (603) hide show
  1. package/CAPABILITIES.md +13 -1
  2. package/dist/adapters/llm/AnthropicProvider.js +10 -111
  3. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  4. package/dist/adapters/llm/BedrockProvider.js +11 -4
  5. package/dist/adapters/llm/BedrockProvider.js.map +1 -1
  6. package/dist/adapters/llm/InvokeModelGatewayProvider.js +167 -35
  7. package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
  8. package/dist/adapters/llm/OpenAIProvider.js +5 -0
  9. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  10. package/dist/adapters/llm/anthropicMessagesWire.js +20 -6
  11. package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
  12. package/dist/adapters/llm/retryAfter.js +61 -0
  13. package/dist/adapters/llm/retryAfter.js.map +1 -0
  14. package/dist/adapters/types.js.map +1 -1
  15. package/dist/artifacts/datasetResult.js +2 -2
  16. package/dist/artifacts/datasetResult.js.map +1 -1
  17. package/dist/artifacts/index.js +10 -8
  18. package/dist/artifacts/index.js.map +1 -1
  19. package/dist/artifacts/minting.js +2 -2
  20. package/dist/artifacts/minting.js.map +1 -1
  21. package/dist/core/Agent.js +229 -5
  22. package/dist/core/Agent.js.map +1 -1
  23. package/dist/core/agent/AgentBuilder.js +75 -1
  24. package/dist/core/agent/AgentBuilder.js.map +1 -1
  25. package/dist/core/agent/arguments/ask.js +356 -14
  26. package/dist/core/agent/arguments/ask.js.map +1 -1
  27. package/dist/core/agent/arguments/declare.js +260 -45
  28. package/dist/core/agent/arguments/declare.js.map +1 -1
  29. package/dist/core/agent/arguments/dispatch.js +25 -1
  30. package/dist/core/agent/arguments/dispatch.js.map +1 -1
  31. package/dist/core/agent/arguments/resolve.js +239 -6
  32. package/dist/core/agent/arguments/resolve.js.map +1 -1
  33. package/dist/core/agent/arguments/rows.js +37 -2
  34. package/dist/core/agent/arguments/rows.js.map +1 -1
  35. package/dist/core/agent/arguments/serve.js +332 -4
  36. package/dist/core/agent/arguments/serve.js.map +1 -1
  37. package/dist/core/agent/arguments/subflow.js +46 -7
  38. package/dist/core/agent/arguments/subflow.js.map +1 -1
  39. package/dist/core/agent/assessment/assess.js +45 -6
  40. package/dist/core/agent/assessment/assess.js.map +1 -1
  41. package/dist/core/agent/assessment/compose.js +3 -0
  42. package/dist/core/agent/assessment/compose.js.map +1 -1
  43. package/dist/core/agent/assessment/reasons.js +18 -0
  44. package/dist/core/agent/assessment/reasons.js.map +1 -1
  45. package/dist/core/agent/buildAgentChart.js +31 -1
  46. package/dist/core/agent/buildAgentChart.js.map +1 -1
  47. package/dist/core/agent/buildDynamicAgentChart.js +9 -0
  48. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  49. package/dist/core/agent/coverage/answer.js +24 -7
  50. package/dist/core/agent/coverage/answer.js.map +1 -1
  51. package/dist/core/agent/coverage/period.js +110 -69
  52. package/dist/core/agent/coverage/period.js.map +1 -1
  53. package/dist/core/agent/coverage/timeLimitFacts.js +70 -0
  54. package/dist/core/agent/coverage/timeLimitFacts.js.map +1 -0
  55. package/dist/core/agent/coverage/timeLimits.js +72 -0
  56. package/dist/core/agent/coverage/timeLimits.js.map +1 -0
  57. package/dist/core/agent/evidence/evidenceIndex.js +48 -7
  58. package/dist/core/agent/evidence/evidenceIndex.js.map +1 -1
  59. package/dist/core/agent/evidence/gate.js +9 -4
  60. package/dist/core/agent/evidence/gate.js.map +1 -1
  61. package/dist/core/agent/evidence/normalize.js +1 -105
  62. package/dist/core/agent/evidence/normalize.js.map +1 -1
  63. package/dist/core/agent/findings/ledger.js +14 -0
  64. package/dist/core/agent/findings/ledger.js.map +1 -1
  65. package/dist/core/agent/findings/types.js.map +1 -1
  66. package/dist/core/agent/honesty/mounts.js +105 -4
  67. package/dist/core/agent/honesty/mounts.js.map +1 -1
  68. package/dist/core/agent/results/subflow.js +43 -11
  69. package/dist/core/agent/results/subflow.js.map +1 -1
  70. package/dist/core/agent/stages/argumentAsk.js +85 -6
  71. package/dist/core/agent/stages/argumentAsk.js.map +1 -1
  72. package/dist/core/agent/stages/callLLM.js +16 -0
  73. package/dist/core/agent/stages/callLLM.js.map +1 -1
  74. package/dist/core/agent/stages/prepareFinal.js +61 -8
  75. package/dist/core/agent/stages/prepareFinal.js.map +1 -1
  76. package/dist/core/agent/stages/route.js +64 -6
  77. package/dist/core/agent/stages/route.js.map +1 -1
  78. package/dist/core/agent/stages/seed.js +29 -6
  79. package/dist/core/agent/stages/seed.js.map +1 -1
  80. package/dist/core/agent/stages/timeLayer.js +201 -0
  81. package/dist/core/agent/stages/timeLayer.js.map +1 -0
  82. package/dist/core/agent/stages/timeLineage.js +61 -0
  83. package/dist/core/agent/stages/timeLineage.js.map +1 -0
  84. package/dist/core/agent/stages/toolCalls.js +70 -0
  85. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  86. package/dist/core/inputRequest.js +132 -5
  87. package/dist/core/inputRequest.js.map +1 -1
  88. package/dist/core/messageFrom.js +5 -2
  89. package/dist/core/messageFrom.js.map +1 -1
  90. package/dist/core/runCheckpoint.js +17 -2
  91. package/dist/core/runCheckpoint.js.map +1 -1
  92. package/dist/core/slots/buildToolsSlot.js +30 -2
  93. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  94. package/dist/core/time/ask.js +239 -0
  95. package/dist/core/time/ask.js.map +1 -0
  96. package/dist/core/time/axis.js +469 -0
  97. package/dist/core/time/axis.js.map +1 -0
  98. package/dist/core/time/bind.js +235 -0
  99. package/dist/core/time/bind.js.map +1 -0
  100. package/dist/core/time/check.js +261 -0
  101. package/dist/core/time/check.js.map +1 -0
  102. package/dist/core/time/checkRecord.js +97 -0
  103. package/dist/core/time/checkRecord.js.map +1 -0
  104. package/dist/core/time/clock.js +260 -0
  105. package/dist/core/time/clock.js.map +1 -0
  106. package/dist/core/time/convert.js +634 -0
  107. package/dist/core/time/convert.js.map +1 -0
  108. package/dist/core/time/drift.js +96 -0
  109. package/dist/core/time/drift.js.map +1 -0
  110. package/dist/core/time/duration.js +125 -0
  111. package/dist/core/time/duration.js.map +1 -0
  112. package/dist/core/time/forms.js +273 -0
  113. package/dist/core/time/forms.js.map +1 -0
  114. package/dist/core/time/instant.js +141 -0
  115. package/dist/core/time/instant.js.map +1 -0
  116. package/dist/core/time/periodForm.js +392 -0
  117. package/dist/core/time/periodForm.js.map +1 -0
  118. package/dist/core/time/present.js +312 -0
  119. package/dist/core/time/present.js.map +1 -0
  120. package/dist/core/time/range.js +267 -0
  121. package/dist/core/time/range.js.map +1 -0
  122. package/dist/core/time/reader.js +209 -0
  123. package/dist/core/time/reader.js.map +1 -0
  124. package/dist/core/time/readers/english.js +576 -0
  125. package/dist/core/time/readers/english.js.map +1 -0
  126. package/dist/core/time/readingAsk.js +94 -0
  127. package/dist/core/time/readingAsk.js.map +1 -0
  128. package/dist/core/time/resolve.js +694 -0
  129. package/dist/core/time/resolve.js.map +1 -0
  130. package/dist/core/time/resolveRecord.js +164 -0
  131. package/dist/core/time/resolveRecord.js.map +1 -0
  132. package/dist/core/time/rows.js +412 -0
  133. package/dist/core/time/rows.js.map +1 -0
  134. package/dist/core/time/rowsBuild.js +193 -0
  135. package/dist/core/time/rowsBuild.js.map +1 -0
  136. package/dist/core/time/textForms.js +133 -0
  137. package/dist/core/time/textForms.js.map +1 -0
  138. package/dist/core/time/windows.js +172 -0
  139. package/dist/core/time/windows.js.map +1 -0
  140. package/dist/core/time/wire.js +86 -0
  141. package/dist/core/time/wire.js.map +1 -0
  142. package/dist/core/time/zone.js +253 -0
  143. package/dist/core/time/zone.js.map +1 -0
  144. package/dist/core/tools.js.map +1 -1
  145. package/dist/esm/adapters/llm/AnthropicProvider.js +8 -109
  146. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  147. package/dist/esm/adapters/llm/BedrockProvider.js +11 -4
  148. package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
  149. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.d.ts +38 -4
  150. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +167 -35
  151. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
  152. package/dist/esm/adapters/llm/OpenAIProvider.js +5 -0
  153. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  154. package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +6 -1
  155. package/dist/esm/adapters/llm/anthropicMessagesWire.js +20 -6
  156. package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
  157. package/dist/esm/adapters/llm/retryAfter.d.ts +27 -0
  158. package/dist/esm/adapters/llm/retryAfter.js +56 -0
  159. package/dist/esm/adapters/llm/retryAfter.js.map +1 -0
  160. package/dist/esm/adapters/types.d.ts +9 -0
  161. package/dist/esm/adapters/types.js.map +1 -1
  162. package/dist/esm/artifacts/datasetResult.js +1 -1
  163. package/dist/esm/artifacts/datasetResult.js.map +1 -1
  164. package/dist/esm/artifacts/index.d.ts +1 -1
  165. package/dist/esm/artifacts/index.js +3 -2
  166. package/dist/esm/artifacts/index.js.map +1 -1
  167. package/dist/esm/artifacts/minting.js +1 -1
  168. package/dist/esm/artifacts/minting.js.map +1 -1
  169. package/dist/esm/artifacts/types.d.ts +2 -2
  170. package/dist/esm/core/Agent.d.ts +64 -0
  171. package/dist/esm/core/Agent.js +230 -6
  172. package/dist/esm/core/Agent.js.map +1 -1
  173. package/dist/esm/core/agent/AgentBuilder.d.ts +60 -0
  174. package/dist/esm/core/agent/AgentBuilder.js +75 -1
  175. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  176. package/dist/esm/core/agent/arguments/ask.d.ts +88 -5
  177. package/dist/esm/core/agent/arguments/ask.js +349 -8
  178. package/dist/esm/core/agent/arguments/ask.js.map +1 -1
  179. package/dist/esm/core/agent/arguments/checks.d.ts +1 -1
  180. package/dist/esm/core/agent/arguments/declare.d.ts +76 -15
  181. package/dist/esm/core/agent/arguments/declare.js +255 -44
  182. package/dist/esm/core/agent/arguments/declare.js.map +1 -1
  183. package/dist/esm/core/agent/arguments/dispatch.js +25 -1
  184. package/dist/esm/core/agent/arguments/dispatch.js.map +1 -1
  185. package/dist/esm/core/agent/arguments/resolve.d.ts +77 -7
  186. package/dist/esm/core/agent/arguments/resolve.js +239 -8
  187. package/dist/esm/core/agent/arguments/resolve.js.map +1 -1
  188. package/dist/esm/core/agent/arguments/rows.d.ts +31 -2
  189. package/dist/esm/core/agent/arguments/rows.js +35 -1
  190. package/dist/esm/core/agent/arguments/rows.js.map +1 -1
  191. package/dist/esm/core/agent/arguments/serve.d.ts +133 -4
  192. package/dist/esm/core/agent/arguments/serve.js +328 -4
  193. package/dist/esm/core/agent/arguments/serve.js.map +1 -1
  194. package/dist/esm/core/agent/arguments/subflow.d.ts +28 -0
  195. package/dist/esm/core/agent/arguments/subflow.js +47 -8
  196. package/dist/esm/core/agent/arguments/subflow.js.map +1 -1
  197. package/dist/esm/core/agent/assessment/assess.js +45 -6
  198. package/dist/esm/core/agent/assessment/assess.js.map +1 -1
  199. package/dist/esm/core/agent/assessment/compose.js +3 -0
  200. package/dist/esm/core/agent/assessment/compose.js.map +1 -1
  201. package/dist/esm/core/agent/assessment/reasons.js +18 -0
  202. package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
  203. package/dist/esm/core/agent/assessment/types.d.ts +15 -1
  204. package/dist/esm/core/agent/buildAgentChart.d.ts +41 -0
  205. package/dist/esm/core/agent/buildAgentChart.js +28 -0
  206. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  207. package/dist/esm/core/agent/buildDynamicAgentChart.d.ts +1 -1
  208. package/dist/esm/core/agent/buildDynamicAgentChart.js +9 -0
  209. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  210. package/dist/esm/core/agent/coverage/answer.d.ts +20 -1
  211. package/dist/esm/core/agent/coverage/answer.js +23 -6
  212. package/dist/esm/core/agent/coverage/answer.js.map +1 -1
  213. package/dist/esm/core/agent/coverage/period.d.ts +49 -3
  214. package/dist/esm/core/agent/coverage/period.js +107 -68
  215. package/dist/esm/core/agent/coverage/period.js.map +1 -1
  216. package/dist/esm/core/agent/coverage/timeLimitFacts.d.ts +56 -0
  217. package/dist/esm/core/agent/coverage/timeLimitFacts.js +65 -0
  218. package/dist/esm/core/agent/coverage/timeLimitFacts.js.map +1 -0
  219. package/dist/esm/core/agent/coverage/timeLimits.d.ts +46 -0
  220. package/dist/esm/core/agent/coverage/timeLimits.js +67 -0
  221. package/dist/esm/core/agent/coverage/timeLimits.js.map +1 -0
  222. package/dist/esm/core/agent/evidence/evidenceIndex.d.ts +25 -2
  223. package/dist/esm/core/agent/evidence/evidenceIndex.js +47 -7
  224. package/dist/esm/core/agent/evidence/evidenceIndex.js.map +1 -1
  225. package/dist/esm/core/agent/evidence/gate.d.ts +7 -0
  226. package/dist/esm/core/agent/evidence/gate.js +9 -4
  227. package/dist/esm/core/agent/evidence/gate.js.map +1 -1
  228. package/dist/esm/core/agent/evidence/normalize.d.ts +0 -34
  229. package/dist/esm/core/agent/evidence/normalize.js +0 -103
  230. package/dist/esm/core/agent/evidence/normalize.js.map +1 -1
  231. package/dist/esm/core/agent/evidence/types.d.ts +12 -1
  232. package/dist/esm/core/agent/findings/ledger.js +14 -0
  233. package/dist/esm/core/agent/findings/ledger.js.map +1 -1
  234. package/dist/esm/core/agent/findings/types.d.ts +2 -1
  235. package/dist/esm/core/agent/findings/types.js.map +1 -1
  236. package/dist/esm/core/agent/honesty/mounts.d.ts +25 -0
  237. package/dist/esm/core/agent/honesty/mounts.js +104 -4
  238. package/dist/esm/core/agent/honesty/mounts.js.map +1 -1
  239. package/dist/esm/core/agent/results/subflow.d.ts +34 -2
  240. package/dist/esm/core/agent/results/subflow.js +43 -11
  241. package/dist/esm/core/agent/results/subflow.js.map +1 -1
  242. package/dist/esm/core/agent/stages/argumentAsk.d.ts +19 -0
  243. package/dist/esm/core/agent/stages/argumentAsk.js +85 -6
  244. package/dist/esm/core/agent/stages/argumentAsk.js.map +1 -1
  245. package/dist/esm/core/agent/stages/callLLM.d.ts +6 -0
  246. package/dist/esm/core/agent/stages/callLLM.js +16 -0
  247. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  248. package/dist/esm/core/agent/stages/prepareFinal.d.ts +13 -1
  249. package/dist/esm/core/agent/stages/prepareFinal.js +59 -7
  250. package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
  251. package/dist/esm/core/agent/stages/route.d.ts +29 -1
  252. package/dist/esm/core/agent/stages/route.js +64 -7
  253. package/dist/esm/core/agent/stages/route.js.map +1 -1
  254. package/dist/esm/core/agent/stages/seed.d.ts +23 -0
  255. package/dist/esm/core/agent/stages/seed.js +29 -6
  256. package/dist/esm/core/agent/stages/seed.js.map +1 -1
  257. package/dist/esm/core/agent/stages/timeLayer.d.ts +94 -0
  258. package/dist/esm/core/agent/stages/timeLayer.js +193 -0
  259. package/dist/esm/core/agent/stages/timeLayer.js.map +1 -0
  260. package/dist/esm/core/agent/stages/timeLineage.d.ts +31 -0
  261. package/dist/esm/core/agent/stages/timeLineage.js +57 -0
  262. package/dist/esm/core/agent/stages/timeLineage.js.map +1 -0
  263. package/dist/esm/core/agent/stages/toolCalls.d.ts +32 -0
  264. package/dist/esm/core/agent/stages/toolCalls.js +70 -0
  265. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  266. package/dist/esm/core/agent/types.d.ts +37 -0
  267. package/dist/esm/core/inputRequest.d.ts +50 -6
  268. package/dist/esm/core/inputRequest.js +132 -5
  269. package/dist/esm/core/inputRequest.js.map +1 -1
  270. package/dist/esm/core/messageFrom.d.ts +5 -2
  271. package/dist/esm/core/messageFrom.js +5 -2
  272. package/dist/esm/core/messageFrom.js.map +1 -1
  273. package/dist/esm/core/runCheckpoint.js +17 -2
  274. package/dist/esm/core/runCheckpoint.js.map +1 -1
  275. package/dist/esm/core/slots/buildToolsSlot.d.ts +29 -0
  276. package/dist/esm/core/slots/buildToolsSlot.js +30 -2
  277. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  278. package/dist/esm/core/time/ask.d.ts +126 -0
  279. package/dist/esm/core/time/ask.js +230 -0
  280. package/dist/esm/core/time/ask.js.map +1 -0
  281. package/dist/esm/core/time/axis.d.ts +224 -0
  282. package/dist/esm/core/time/axis.js +462 -0
  283. package/dist/esm/core/time/axis.js.map +1 -0
  284. package/dist/esm/core/time/bind.d.ts +143 -0
  285. package/dist/esm/core/time/bind.js +227 -0
  286. package/dist/esm/core/time/bind.js.map +1 -0
  287. package/dist/esm/core/time/check.d.ts +113 -0
  288. package/dist/esm/core/time/check.js +252 -0
  289. package/dist/esm/core/time/check.js.map +1 -0
  290. package/dist/esm/core/time/checkRecord.d.ts +74 -0
  291. package/dist/esm/core/time/checkRecord.js +90 -0
  292. package/dist/esm/core/time/checkRecord.js.map +1 -0
  293. package/dist/esm/core/time/clock.d.ts +183 -0
  294. package/dist/esm/core/time/clock.js +252 -0
  295. package/dist/esm/core/time/clock.js.map +1 -0
  296. package/dist/esm/core/time/convert.d.ts +178 -0
  297. package/dist/esm/core/time/convert.js +609 -0
  298. package/dist/esm/core/time/convert.js.map +1 -0
  299. package/dist/esm/core/time/drift.d.ts +85 -0
  300. package/dist/esm/core/time/drift.js +91 -0
  301. package/dist/esm/core/time/drift.js.map +1 -0
  302. package/dist/esm/core/time/duration.d.ts +71 -0
  303. package/dist/esm/core/time/duration.js +117 -0
  304. package/dist/esm/core/time/duration.js.map +1 -0
  305. package/dist/esm/core/time/forms.d.ts +84 -0
  306. package/dist/esm/core/time/forms.js +268 -0
  307. package/dist/esm/core/time/forms.js.map +1 -0
  308. package/dist/esm/core/time/instant.d.ts +75 -0
  309. package/dist/esm/core/time/instant.js +131 -0
  310. package/dist/esm/core/time/instant.js.map +1 -0
  311. package/dist/esm/core/time/periodForm.d.ts +184 -0
  312. package/dist/esm/core/time/periodForm.js +376 -0
  313. package/dist/esm/core/time/periodForm.js.map +1 -0
  314. package/dist/esm/core/time/present.d.ts +107 -0
  315. package/dist/esm/core/time/present.js +305 -0
  316. package/dist/esm/core/time/present.js.map +1 -0
  317. package/dist/esm/core/time/range.d.ts +127 -0
  318. package/dist/esm/core/time/range.js +249 -0
  319. package/dist/esm/core/time/range.js.map +1 -0
  320. package/dist/esm/core/time/reader.d.ts +162 -0
  321. package/dist/esm/core/time/reader.js +203 -0
  322. package/dist/esm/core/time/reader.js.map +1 -0
  323. package/dist/esm/core/time/readers/english.d.ts +99 -0
  324. package/dist/esm/core/time/readers/english.js +572 -0
  325. package/dist/esm/core/time/readers/english.js.map +1 -0
  326. package/dist/esm/core/time/readingAsk.d.ts +45 -0
  327. package/dist/esm/core/time/readingAsk.js +90 -0
  328. package/dist/esm/core/time/readingAsk.js.map +1 -0
  329. package/dist/esm/core/time/resolve.d.ts +103 -0
  330. package/dist/esm/core/time/resolve.js +684 -0
  331. package/dist/esm/core/time/resolve.js.map +1 -0
  332. package/dist/esm/core/time/resolveRecord.d.ts +160 -0
  333. package/dist/esm/core/time/resolveRecord.js +158 -0
  334. package/dist/esm/core/time/resolveRecord.js.map +1 -0
  335. package/dist/esm/core/time/rows.d.ts +297 -0
  336. package/dist/esm/core/time/rows.js +397 -0
  337. package/dist/esm/core/time/rows.js.map +1 -0
  338. package/dist/esm/core/time/rowsBuild.d.ts +82 -0
  339. package/dist/esm/core/time/rowsBuild.js +185 -0
  340. package/dist/esm/core/time/rowsBuild.js.map +1 -0
  341. package/dist/esm/core/time/textForms.d.ts +53 -0
  342. package/dist/esm/core/time/textForms.js +126 -0
  343. package/dist/esm/core/time/textForms.js.map +1 -0
  344. package/dist/esm/core/time/windows.d.ts +113 -0
  345. package/dist/esm/core/time/windows.js +166 -0
  346. package/dist/esm/core/time/windows.js.map +1 -0
  347. package/dist/esm/core/time/wire.d.ts +63 -0
  348. package/dist/esm/core/time/wire.js +81 -0
  349. package/dist/esm/core/time/wire.js.map +1 -0
  350. package/dist/esm/core/time/zone.d.ts +115 -0
  351. package/dist/esm/core/time/zone.js +242 -0
  352. package/dist/esm/core/time/zone.js.map +1 -0
  353. package/dist/esm/core/tools.d.ts +26 -4
  354. package/dist/esm/core/tools.js.map +1 -1
  355. package/dist/esm/events/payloads.d.ts +16 -2
  356. package/dist/esm/index.d.ts +13 -1
  357. package/dist/esm/index.js +6 -1
  358. package/dist/esm/index.js.map +1 -1
  359. package/dist/esm/lib/answer-account/facts/howSure.js +7 -0
  360. package/dist/esm/lib/answer-account/facts/howSure.js.map +1 -1
  361. package/dist/esm/lib/answer-account/templates.d.ts +3 -0
  362. package/dist/esm/lib/answer-account/templates.js +4 -0
  363. package/dist/esm/lib/answer-account/templates.js.map +1 -1
  364. package/dist/esm/lib/mcp/elicitation.d.ts +84 -0
  365. package/dist/esm/lib/mcp/elicitation.js +181 -0
  366. package/dist/esm/lib/mcp/elicitation.js.map +1 -0
  367. package/dist/esm/lib/mcp/mcpClient.js +9 -3
  368. package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
  369. package/dist/esm/lib/mcp/mcpServe.js +6 -2
  370. package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
  371. package/dist/esm/lib/mcp/mockMcpClient.d.ts +9 -1
  372. package/dist/esm/lib/mcp/mockMcpClient.js +5 -3
  373. package/dist/esm/lib/mcp/mockMcpClient.js.map +1 -1
  374. package/dist/esm/lib/mcp/toolExtras.d.ts +21 -2
  375. package/dist/esm/lib/mcp/toolExtras.js +22 -0
  376. package/dist/esm/lib/mcp/toolExtras.js.map +1 -1
  377. package/dist/esm/lib/mcp/types.d.ts +8 -0
  378. package/dist/esm/lib/time-travel/receipt.d.ts +1 -1
  379. package/dist/esm/lib/time-travel/servedView.d.ts +1 -1
  380. package/dist/esm/lib/time-travel/servedView.js +9 -0
  381. package/dist/esm/lib/time-travel/servedView.js.map +1 -1
  382. package/dist/esm/locales/index.d.ts +6 -0
  383. package/dist/esm/locales/index.js +6 -0
  384. package/dist/esm/locales/index.js.map +1 -1
  385. package/dist/esm/locales/timeAsk.d.ts +29 -0
  386. package/dist/esm/locales/timeAsk.js +44 -0
  387. package/dist/esm/locales/timeAsk.js.map +1 -0
  388. package/dist/esm/recorders/core/resilienceHooks.js +1 -0
  389. package/dist/esm/recorders/core/resilienceHooks.js.map +1 -1
  390. package/dist/esm/resilience/statedWait.d.ts +22 -0
  391. package/dist/esm/resilience/statedWait.js +35 -0
  392. package/dist/esm/resilience/statedWait.js.map +1 -0
  393. package/dist/esm/resilience/withRetry.d.ts +13 -2
  394. package/dist/esm/resilience/withRetry.js +16 -1
  395. package/dist/esm/resilience/withRetry.js.map +1 -1
  396. package/dist/index.js +11 -1
  397. package/dist/index.js.map +1 -1
  398. package/dist/lib/answer-account/facts/howSure.js +7 -0
  399. package/dist/lib/answer-account/facts/howSure.js.map +1 -1
  400. package/dist/lib/answer-account/templates.js +4 -0
  401. package/dist/lib/answer-account/templates.js.map +1 -1
  402. package/dist/lib/mcp/elicitation.js +186 -0
  403. package/dist/lib/mcp/elicitation.js.map +1 -0
  404. package/dist/lib/mcp/mcpClient.js +8 -2
  405. package/dist/lib/mcp/mcpClient.js.map +1 -1
  406. package/dist/lib/mcp/mcpServe.js +5 -1
  407. package/dist/lib/mcp/mcpServe.js.map +1 -1
  408. package/dist/lib/mcp/mockMcpClient.js +4 -2
  409. package/dist/lib/mcp/mockMcpClient.js.map +1 -1
  410. package/dist/lib/mcp/toolExtras.js +25 -1
  411. package/dist/lib/mcp/toolExtras.js.map +1 -1
  412. package/dist/lib/time-travel/servedView.js +9 -0
  413. package/dist/lib/time-travel/servedView.js.map +1 -1
  414. package/dist/locales/index.js +8 -1
  415. package/dist/locales/index.js.map +1 -1
  416. package/dist/locales/timeAsk.js +47 -0
  417. package/dist/locales/timeAsk.js.map +1 -0
  418. package/dist/recorders/core/resilienceHooks.js +1 -0
  419. package/dist/recorders/core/resilienceHooks.js.map +1 -1
  420. package/dist/resilience/statedWait.js +39 -0
  421. package/dist/resilience/statedWait.js.map +1 -0
  422. package/dist/resilience/withRetry.js +16 -1
  423. package/dist/resilience/withRetry.js.map +1 -1
  424. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  425. package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
  426. package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts +38 -4
  427. package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
  428. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  429. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +6 -1
  430. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
  431. package/dist/types/adapters/llm/retryAfter.d.ts +28 -0
  432. package/dist/types/adapters/llm/retryAfter.d.ts.map +1 -0
  433. package/dist/types/adapters/types.d.ts +9 -0
  434. package/dist/types/adapters/types.d.ts.map +1 -1
  435. package/dist/types/artifacts/index.d.ts +1 -1
  436. package/dist/types/artifacts/index.d.ts.map +1 -1
  437. package/dist/types/artifacts/types.d.ts +2 -2
  438. package/dist/types/artifacts/types.d.ts.map +1 -1
  439. package/dist/types/core/Agent.d.ts +64 -0
  440. package/dist/types/core/Agent.d.ts.map +1 -1
  441. package/dist/types/core/agent/AgentBuilder.d.ts +60 -0
  442. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  443. package/dist/types/core/agent/arguments/ask.d.ts +88 -5
  444. package/dist/types/core/agent/arguments/ask.d.ts.map +1 -1
  445. package/dist/types/core/agent/arguments/checks.d.ts +1 -1
  446. package/dist/types/core/agent/arguments/checks.d.ts.map +1 -1
  447. package/dist/types/core/agent/arguments/declare.d.ts +76 -15
  448. package/dist/types/core/agent/arguments/declare.d.ts.map +1 -1
  449. package/dist/types/core/agent/arguments/dispatch.d.ts.map +1 -1
  450. package/dist/types/core/agent/arguments/resolve.d.ts +77 -7
  451. package/dist/types/core/agent/arguments/resolve.d.ts.map +1 -1
  452. package/dist/types/core/agent/arguments/rows.d.ts +31 -2
  453. package/dist/types/core/agent/arguments/rows.d.ts.map +1 -1
  454. package/dist/types/core/agent/arguments/serve.d.ts +133 -4
  455. package/dist/types/core/agent/arguments/serve.d.ts.map +1 -1
  456. package/dist/types/core/agent/arguments/subflow.d.ts +28 -0
  457. package/dist/types/core/agent/arguments/subflow.d.ts.map +1 -1
  458. package/dist/types/core/agent/assessment/assess.d.ts.map +1 -1
  459. package/dist/types/core/agent/assessment/compose.d.ts.map +1 -1
  460. package/dist/types/core/agent/assessment/reasons.d.ts.map +1 -1
  461. package/dist/types/core/agent/assessment/types.d.ts +15 -1
  462. package/dist/types/core/agent/assessment/types.d.ts.map +1 -1
  463. package/dist/types/core/agent/buildAgentChart.d.ts +41 -0
  464. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  465. package/dist/types/core/agent/buildDynamicAgentChart.d.ts +1 -1
  466. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  467. package/dist/types/core/agent/coverage/answer.d.ts +20 -1
  468. package/dist/types/core/agent/coverage/answer.d.ts.map +1 -1
  469. package/dist/types/core/agent/coverage/period.d.ts +49 -3
  470. package/dist/types/core/agent/coverage/period.d.ts.map +1 -1
  471. package/dist/types/core/agent/coverage/timeLimitFacts.d.ts +57 -0
  472. package/dist/types/core/agent/coverage/timeLimitFacts.d.ts.map +1 -0
  473. package/dist/types/core/agent/coverage/timeLimits.d.ts +47 -0
  474. package/dist/types/core/agent/coverage/timeLimits.d.ts.map +1 -0
  475. package/dist/types/core/agent/evidence/evidenceIndex.d.ts +25 -2
  476. package/dist/types/core/agent/evidence/evidenceIndex.d.ts.map +1 -1
  477. package/dist/types/core/agent/evidence/gate.d.ts +7 -0
  478. package/dist/types/core/agent/evidence/gate.d.ts.map +1 -1
  479. package/dist/types/core/agent/evidence/normalize.d.ts +0 -34
  480. package/dist/types/core/agent/evidence/normalize.d.ts.map +1 -1
  481. package/dist/types/core/agent/evidence/types.d.ts +12 -1
  482. package/dist/types/core/agent/evidence/types.d.ts.map +1 -1
  483. package/dist/types/core/agent/findings/ledger.d.ts.map +1 -1
  484. package/dist/types/core/agent/findings/types.d.ts +2 -1
  485. package/dist/types/core/agent/findings/types.d.ts.map +1 -1
  486. package/dist/types/core/agent/honesty/mounts.d.ts +25 -0
  487. package/dist/types/core/agent/honesty/mounts.d.ts.map +1 -1
  488. package/dist/types/core/agent/results/subflow.d.ts +34 -2
  489. package/dist/types/core/agent/results/subflow.d.ts.map +1 -1
  490. package/dist/types/core/agent/stages/argumentAsk.d.ts +19 -0
  491. package/dist/types/core/agent/stages/argumentAsk.d.ts.map +1 -1
  492. package/dist/types/core/agent/stages/callLLM.d.ts +6 -0
  493. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  494. package/dist/types/core/agent/stages/prepareFinal.d.ts +13 -1
  495. package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
  496. package/dist/types/core/agent/stages/route.d.ts +29 -1
  497. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  498. package/dist/types/core/agent/stages/seed.d.ts +23 -0
  499. package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
  500. package/dist/types/core/agent/stages/timeLayer.d.ts +95 -0
  501. package/dist/types/core/agent/stages/timeLayer.d.ts.map +1 -0
  502. package/dist/types/core/agent/stages/timeLineage.d.ts +32 -0
  503. package/dist/types/core/agent/stages/timeLineage.d.ts.map +1 -0
  504. package/dist/types/core/agent/stages/toolCalls.d.ts +32 -0
  505. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  506. package/dist/types/core/agent/types.d.ts +37 -0
  507. package/dist/types/core/agent/types.d.ts.map +1 -1
  508. package/dist/types/core/inputRequest.d.ts +50 -6
  509. package/dist/types/core/inputRequest.d.ts.map +1 -1
  510. package/dist/types/core/messageFrom.d.ts +5 -2
  511. package/dist/types/core/messageFrom.d.ts.map +1 -1
  512. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  513. package/dist/types/core/slots/buildToolsSlot.d.ts +29 -0
  514. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  515. package/dist/types/core/time/ask.d.ts +127 -0
  516. package/dist/types/core/time/ask.d.ts.map +1 -0
  517. package/dist/types/core/time/axis.d.ts +225 -0
  518. package/dist/types/core/time/axis.d.ts.map +1 -0
  519. package/dist/types/core/time/bind.d.ts +144 -0
  520. package/dist/types/core/time/bind.d.ts.map +1 -0
  521. package/dist/types/core/time/check.d.ts +114 -0
  522. package/dist/types/core/time/check.d.ts.map +1 -0
  523. package/dist/types/core/time/checkRecord.d.ts +75 -0
  524. package/dist/types/core/time/checkRecord.d.ts.map +1 -0
  525. package/dist/types/core/time/clock.d.ts +184 -0
  526. package/dist/types/core/time/clock.d.ts.map +1 -0
  527. package/dist/types/core/time/convert.d.ts +179 -0
  528. package/dist/types/core/time/convert.d.ts.map +1 -0
  529. package/dist/types/core/time/drift.d.ts +86 -0
  530. package/dist/types/core/time/drift.d.ts.map +1 -0
  531. package/dist/types/core/time/duration.d.ts +72 -0
  532. package/dist/types/core/time/duration.d.ts.map +1 -0
  533. package/dist/types/core/time/forms.d.ts +85 -0
  534. package/dist/types/core/time/forms.d.ts.map +1 -0
  535. package/dist/types/core/time/instant.d.ts +76 -0
  536. package/dist/types/core/time/instant.d.ts.map +1 -0
  537. package/dist/types/core/time/periodForm.d.ts +185 -0
  538. package/dist/types/core/time/periodForm.d.ts.map +1 -0
  539. package/dist/types/core/time/present.d.ts +108 -0
  540. package/dist/types/core/time/present.d.ts.map +1 -0
  541. package/dist/types/core/time/range.d.ts +128 -0
  542. package/dist/types/core/time/range.d.ts.map +1 -0
  543. package/dist/types/core/time/reader.d.ts +163 -0
  544. package/dist/types/core/time/reader.d.ts.map +1 -0
  545. package/dist/types/core/time/readers/english.d.ts +100 -0
  546. package/dist/types/core/time/readers/english.d.ts.map +1 -0
  547. package/dist/types/core/time/readingAsk.d.ts +46 -0
  548. package/dist/types/core/time/readingAsk.d.ts.map +1 -0
  549. package/dist/types/core/time/resolve.d.ts +104 -0
  550. package/dist/types/core/time/resolve.d.ts.map +1 -0
  551. package/dist/types/core/time/resolveRecord.d.ts +161 -0
  552. package/dist/types/core/time/resolveRecord.d.ts.map +1 -0
  553. package/dist/types/core/time/rows.d.ts +298 -0
  554. package/dist/types/core/time/rows.d.ts.map +1 -0
  555. package/dist/types/core/time/rowsBuild.d.ts +83 -0
  556. package/dist/types/core/time/rowsBuild.d.ts.map +1 -0
  557. package/dist/types/core/time/textForms.d.ts +54 -0
  558. package/dist/types/core/time/textForms.d.ts.map +1 -0
  559. package/dist/types/core/time/windows.d.ts +114 -0
  560. package/dist/types/core/time/windows.d.ts.map +1 -0
  561. package/dist/types/core/time/wire.d.ts +64 -0
  562. package/dist/types/core/time/wire.d.ts.map +1 -0
  563. package/dist/types/core/time/zone.d.ts +116 -0
  564. package/dist/types/core/time/zone.d.ts.map +1 -0
  565. package/dist/types/core/tools.d.ts +26 -4
  566. package/dist/types/core/tools.d.ts.map +1 -1
  567. package/dist/types/events/payloads.d.ts +16 -2
  568. package/dist/types/events/payloads.d.ts.map +1 -1
  569. package/dist/types/index.d.ts +13 -1
  570. package/dist/types/index.d.ts.map +1 -1
  571. package/dist/types/lib/answer-account/facts/howSure.d.ts.map +1 -1
  572. package/dist/types/lib/answer-account/templates.d.ts +3 -0
  573. package/dist/types/lib/answer-account/templates.d.ts.map +1 -1
  574. package/dist/types/lib/mcp/elicitation.d.ts +85 -0
  575. package/dist/types/lib/mcp/elicitation.d.ts.map +1 -0
  576. package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
  577. package/dist/types/lib/mcp/mockMcpClient.d.ts +9 -1
  578. package/dist/types/lib/mcp/mockMcpClient.d.ts.map +1 -1
  579. package/dist/types/lib/mcp/toolExtras.d.ts +21 -2
  580. package/dist/types/lib/mcp/toolExtras.d.ts.map +1 -1
  581. package/dist/types/lib/mcp/types.d.ts +8 -0
  582. package/dist/types/lib/mcp/types.d.ts.map +1 -1
  583. package/dist/types/lib/time-travel/receipt.d.ts +1 -1
  584. package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
  585. package/dist/types/lib/time-travel/servedView.d.ts +1 -1
  586. package/dist/types/lib/time-travel/servedView.d.ts.map +1 -1
  587. package/dist/types/locales/index.d.ts +6 -0
  588. package/dist/types/locales/index.d.ts.map +1 -1
  589. package/dist/types/locales/timeAsk.d.ts +30 -0
  590. package/dist/types/locales/timeAsk.d.ts.map +1 -0
  591. package/dist/types/recorders/core/resilienceHooks.d.ts.map +1 -1
  592. package/dist/types/resilience/statedWait.d.ts +23 -0
  593. package/dist/types/resilience/statedWait.d.ts.map +1 -0
  594. package/dist/types/resilience/withRetry.d.ts +13 -2
  595. package/dist/types/resilience/withRetry.d.ts.map +1 -1
  596. package/package.json +1 -1
  597. package/dist/artifacts/timeAxis.js +0 -218
  598. package/dist/artifacts/timeAxis.js.map +0 -1
  599. package/dist/esm/artifacts/timeAxis.d.ts +0 -114
  600. package/dist/esm/artifacts/timeAxis.js +0 -212
  601. package/dist/esm/artifacts/timeAxis.js.map +0 -1
  602. package/dist/types/artifacts/timeAxis.d.ts +0 -115
  603. package/dist/types/artifacts/timeAxis.d.ts.map +0 -1
@@ -0,0 +1,85 @@
1
+ /**
2
+ * core/time/forms — every spelling of a time the answer may write, split by
3
+ * WHO produced it (time design § 9.5, step T7).
4
+ *
5
+ * Pattern: a pure function over recorded values — the person's text, or one
6
+ * window the record holds — never over the answer. The evidence gate
7
+ * asks it (`evidence/evidenceIndex.ts` · `exemptFromRun`,
8
+ * `stages/timeLineage.ts` · `timeLineageOf`) and never keeps a time table of
9
+ * its own.
10
+ * Role: core/ leaf (the time layer). Imports `windows.ts`, `rows.ts`,
11
+ * `resolve.ts`, `textForms.ts` (the text rule, split out so the
12
+ * evidence gate's synchronous corpus never loads the resolver),
13
+ * `instant.ts` and `zone.ts` only. Loaded under `.time()` only,
14
+ * through `import()` (`stages/timeLineage.ts`).
15
+ * Emits: N/A.
16
+ *
17
+ * ## The two lists
18
+ *
19
+ * - **`said`** — spellings of the parts the PERSON said, at the grain they
20
+ * said them: "8 AM" said at grain hour is also `8:00` and `08:00` — the
21
+ * same instant at that grain, equality and not a new fact. They count as
22
+ * the person's words (the gate exempts them).
23
+ * - **`derived`** — everything the LIBRARY produced from a reading: an
24
+ * implied year, the zone's abbreviation in effect (`PDT` for a said `PST`),
25
+ * offsets, UTC and epoch spellings, the end-of-grain `08:41`, a look-back's
26
+ * duration, and every part of a `model` reading. The gate files an answer
27
+ * value found only here with the lineage `derived-from-reading`: it can
28
+ * support "not sure", never "known", and it is never called invented.
29
+ *
30
+ * A time value no recorded reading produced is in neither list and still
31
+ * fails the gate. Library text is never evidence: without `derived`, a model
32
+ * echoing the served time line back would read as the person's words.
33
+ */
34
+ import { type TimeForms } from './textForms.js';
35
+ import { type TurnWindow } from './windows.js';
36
+ import { type TimeCandidate } from './resolve.js';
37
+ export type { TimeForms };
38
+ /** One window the record holds, as the spellings read it. */
39
+ export interface FormsWindow extends Pick<TurnWindow, 'source' | 'range' | 'zone' | 'lookback'> {
40
+ /**
41
+ * The reading this window IS, when the person confirmed a `rule` reading
42
+ * of their words — which parts they WROTE, and how the range was read.
43
+ * Absent: a window they typed in the ask, a UI control, a `model` reading.
44
+ */
45
+ readonly reading?: Pick<TimeCandidate, 'said' | 'notes' | 'grain'>;
46
+ /** On an `answered` window: the person picked the offered reading, or wrote their own. */
47
+ readonly answer?: TurnWindow['answer'];
48
+ }
49
+ /** What {@link timeFormsOf} spells: words the person or the app wrote, or one recorded window. */
50
+ export type TimeFormsSource = {
51
+ readonly text: string;
52
+ } | {
53
+ readonly window: FormsWindow;
54
+ };
55
+ /**
56
+ * The spellings of one source's times, split by lineage (§ 9.5).
57
+ *
58
+ * A `text` — the person's message, their typed answer, the app's prompt —
59
+ * has only `said` spellings, and each is a SPELLING, never an
60
+ * interpretation: an ISO date → its year, month and day; a 12-hour reading
61
+ * (`8 Am`) → its 24-hour, padded and glued forms; a 24-hour reading
62
+ * (`20:00`) → the same set. Slash dates are never read (their order is a
63
+ * locale) and durations never (a quantity is not a time of day).
64
+ *
65
+ * A `window` — the turn's recorded window — splits by who produced each
66
+ * part: the person's said parts at grain, or everything of a window they
67
+ * typed or set in a UI, are `said`; the rest is `derived`. A `model`
68
+ * reading's window (`derived-from-reading`) has no `said` spelling at all.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * timeFormsOf({ text: 'what connected 8 Am to 8:40 AM PST' }).said;
73
+ * // ['8:00', '08:00', '8:00am', '8:40', '08:40', '8:40am']
74
+ * timeFormsOf({ text: '2026-10-09' }).said; // ['2026', '10', '9']
75
+ * timeFormsOf({ text: 'took 2h' }); // { said: [], derived: [] }
76
+ * ```
77
+ */
78
+ export declare function timeFormsOf(source: TimeFormsSource): TimeForms;
79
+ /**
80
+ * Every recorded window of the LATEST turn on the ledger (its `clock` row's
81
+ * turn), with the reading each one is — what the gate spells. Empty when no
82
+ * clock was filed (an agent without `.time()`).
83
+ */
84
+ export declare function turnFormsWindowsOf(ledger: readonly unknown[] | undefined): readonly FormsWindow[];
85
+ //# sourceMappingURL=forms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../../src/core/time/forms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAIL,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AAItB,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,6DAA6D;AAC7D,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7F;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;IACnE,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;CACxC;AAED,kGAAkG;AAClG,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAK3F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAG9D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,GAAG,SAAS,WAAW,EAAE,CAMjG"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * core/time/instant — the ONE instant parser, with two named profiles.
3
+ *
4
+ * Pattern: one grammar, named profiles (never a second parser). Moved from
5
+ * `coverage/period.ts` (where it read a result's declared period)
6
+ * and `arguments/declare.ts` (where a regex plus `Date.parse` checked
7
+ * an `iso-range` argument). Exact: no `Date.parse` guessing, no
8
+ * sub-millisecond loss.
9
+ * Role: core/ leaf (the time layer's one owner, `src/core/time/`). Imports
10
+ * nothing. Asked by `coverage/period.ts` (lenient) and, through
11
+ * `range.ts` · `splitRange`, by `arguments/declare.ts` (strict).
12
+ * Emits: N/A.
13
+ *
14
+ * ## The two profiles
15
+ *
16
+ * | Profile | For | `t`/`z` lower case | second `60` | day past the month's end, hour 24 |
17
+ * |-----------|-----|--------------------|-------------|-----------------------------------|
18
+ * | `lenient` | a period a result DECLARES — RFC 3339 as a foreign minter may write it | accepted | accepted (compares as the next minute's `:00`) | refused |
19
+ * | `strict` | a value the library SENDS to a tool — the canonical spelling a backend such as Python's `datetime.fromisoformat` takes | refused | refused | refused |
20
+ *
21
+ * Both require a zone (`Z` or `±HH:MM`): an instant with no zone could be any
22
+ * of 24 hours, so it is refused rather than guessed.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * instantOf('2026-10-09T08:00:00-07:00', 'strict'); // { ms: 1791558000000, nanos: 0, offsetMinutes: -420, precision: 'second' }
27
+ * instantOf('2026-10-09t08:00z', 'strict'); // undefined — lower case is lenient-only
28
+ * instantOf('2026-02-30T08:00Z', 'lenient'); // undefined — 30 February does not exist
29
+ * toUtc('2026-10-09T08:00-07:00', 'strict'); // '2026-10-09T15:00:00Z'
30
+ * ```
31
+ */
32
+ /** An ISO 8601 instant WITH an offset (`Z` or `±HH:MM`). */
33
+ export type InstantText = string;
34
+ /** Which spelling of an instant is accepted — see the module table. */
35
+ export type InstantProfile = 'lenient' | 'strict';
36
+ /**
37
+ * One instant, comparable exactly: whole milliseconds since the epoch, and the
38
+ * nanoseconds below that millisecond (0–999 999), so a 9-digit fraction is
39
+ * never rounded.
40
+ */
41
+ export interface Instant {
42
+ readonly ms: number;
43
+ readonly nanos: number;
44
+ }
45
+ /** A parsed instant: the instant, the offset it was written in, and how finely it was written. */
46
+ export interface ParsedInstant extends Instant {
47
+ /** The written offset in minutes east of UTC (`Z` is 0). */
48
+ readonly offsetMinutes: number;
49
+ /** The finest part written: minutes only, seconds, or a fraction of a second. */
50
+ readonly precision: 'minute' | 'second' | 'fraction';
51
+ }
52
+ /** Days in `month` (1–12) of the proleptic Gregorian `year`. */
53
+ export declare const daysInMonth: (year: number, month: number) => number;
54
+ /** Milliseconds since the epoch of a UTC wall time. `setUTCFullYear`, never `Date.UTC`: the latter reads years 0–99 as 1900–1999. */
55
+ export declare function utcWallMs(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond?: number): number;
56
+ /**
57
+ * The instant a string names under `profile`, or `undefined` when it is not
58
+ * an ISO 8601 instant with a zone in that profile (a date alone, a time with
59
+ * no zone, a day that does not exist, hour 24, prose). The profile is always
60
+ * named by the caller: there is no default spelling of "an instant".
61
+ */
62
+ export declare function instantOf(value: unknown, profile: InstantProfile): ParsedInstant | undefined;
63
+ /** -1 / 0 / 1 — `a` before, at, or after `b`. */
64
+ export declare function compareInstants(a: Instant, b: Instant): number;
65
+ /** `instant` moved by a whole number of milliseconds (negative moves it earlier). */
66
+ export declare function shiftInstant(instant: Instant, byMs: number): Instant;
67
+ /**
68
+ * The strict-profile spelling of `instant` in the offset `offsetMinutes`
69
+ * (`Z` when 0): seconds always written, a fraction only when it is not zero,
70
+ * with no trailing zeros. `undefined` when the offset is not a whole number of
71
+ * minutes within ±23:59, or the year in that offset falls outside 0000–9999.
72
+ */
73
+ export declare function spellInstant(instant: Instant, offsetMinutes: number): InstantText | undefined;
74
+ /** The same instant spelled in UTC (`Z`), strict profile — or `undefined` when `value` is not an instant under `profile`. */
75
+ export declare function toUtc(value: unknown, profile: InstantProfile): InstantText | undefined;
76
+ //# sourceMappingURL=instant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instant.d.ts","sourceRoot":"","sources":["../../../../src/core/time/instant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,4DAA4D;AAC5D,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,kGAAkG;AAClG,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,4DAA4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;CACtD;AAOD,gEAAgE;AAChE,eAAO,MAAM,WAAW,SAAU,MAAM,SAAS,MAAM,KAAG,MAOlD,CAAC;AAET,qIAAqI;AACrI,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,SAAI,GACd,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,GAAG,SAAS,CAgC5F;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAI9D;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKpE;AAID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAoB7F;AAED,6HAA6H;AAC7H,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,WAAW,GAAG,SAAS,CAGtF"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * core/time/periodForm — a tool's period FORMS as DECLARED (time design § 7.1):
3
+ * the shapes, the sugar, each form's own rules, a declared value's spelling,
4
+ * and the tool's facts against a range.
5
+ *
6
+ * Pattern: the declaration half of `convert.ts`, split from the conversions so
7
+ * the SYNCHRONOUS doors — `defineTool({ period })`
8
+ * (`agent/arguments/declare.ts`), a time answer's check at the resume
9
+ * door (`ask.ts` · `checkTimeAnswer`) and the checkpoint door's
10
+ * refusal codes (`rows.ts`) — reach it without the conversion
11
+ * engine, which only an armed agent loads (`bind.ts`, `drift.ts`,
12
+ * reached through `import()`: the optional-family law of docs-next's
13
+ * site budget). `convert.ts` re-exports everything public here.
14
+ * Role: core/ leaf (the time layer). Imports `instant.ts`, `duration.ts`
15
+ * and `zone.ts` only.
16
+ * Emits: N/A.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const [form] = sugarForms({ argument: 'window', spelling: 'iso-range' });
21
+ * formIssue(form); // undefined — a well-formed form
22
+ * parsesUnderForm('2026-10-09T08:00:00-07:00..2026-10-09T08:40:59-07:00', form, 'window'); // true
23
+ * ```
24
+ */
25
+ import { type DurationText } from './duration.js';
26
+ import { type InstantText } from './instant.js';
27
+ import type { Edge, TimeRange } from './range.js';
28
+ import { type WallTime } from './zone.js';
29
+ /** The single-argument spellings — today's three, and `wall-range` (wall times plus a zone argument). */
30
+ export type PeriodSpelling = 'lookback' | 'signed-lookback' | 'iso-range' | 'wall-range';
31
+ /** The spellings, in the order the docs list them. */
32
+ export declare const PERIOD_SPELLINGS: readonly PeriodSpelling[];
33
+ /** How one bound is written: an instant with its offset, epoch milliseconds or seconds, a calendar date, a wall time. */
34
+ export type BoundAs = 'iso' | 'epoch-ms' | 'epoch-s' | 'date' | 'wall';
35
+ export declare const BOUND_AS: readonly BoundAs[];
36
+ /**
37
+ * One bound of a two-argument period. A `from` bound is inclusive (its `edge`,
38
+ * when written, can only say so); a `to` bound MUST say its edge
39
+ * ({@link ToBound}) — TQ18: the library never guesses a tool's edge, only the
40
+ * sugar defaults (`inclusive`).
41
+ */
42
+ export interface Bound {
43
+ readonly argument: string;
44
+ readonly as: BoundAs;
45
+ readonly edge?: Edge;
46
+ }
47
+ /** The end bound of a `bounds` form — its edge is declared, never defaulted (TQ18). */
48
+ export interface ToBound extends Bound {
49
+ readonly edge: Edge;
50
+ }
51
+ /** The argument a wall or date form reads its zone from. */
52
+ export interface ZoneArgument {
53
+ readonly argument: string;
54
+ }
55
+ /** Every shape a tool's period can take — one `TimeRange` onto one or more arguments. */
56
+ export type PeriodForm = {
57
+ readonly kind: 'bounds';
58
+ readonly from: Bound;
59
+ readonly to: ToBound;
60
+ readonly zone?: ZoneArgument;
61
+ } | {
62
+ readonly kind: 'joined';
63
+ readonly argument: string;
64
+ readonly as: BoundAs;
65
+ readonly joiner: '..' | '/';
66
+ readonly edge?: Edge;
67
+ readonly zone?: ZoneArgument;
68
+ } | {
69
+ readonly kind: 'object';
70
+ readonly argument: string;
71
+ readonly keys: {
72
+ readonly from: string;
73
+ readonly to: string;
74
+ };
75
+ readonly as: BoundAs;
76
+ /** Declared, never defaulted (TQ18). */
77
+ readonly edge: Edge;
78
+ readonly zone?: ZoneArgument;
79
+ } | {
80
+ readonly kind: 'day';
81
+ readonly argument: string;
82
+ readonly zone?: ZoneArgument;
83
+ } | {
84
+ readonly kind: 'lookback';
85
+ readonly argument: string;
86
+ readonly signed: boolean;
87
+ /** A unit set ⊆ `smhdw`; absent → today's `mhdw`. */
88
+ readonly units?: string;
89
+ };
90
+ export declare const FORM_KINDS: readonly PeriodForm['kind'][];
91
+ /** Which side of now a source can hold. */
92
+ export type PeriodDirection = 'past' | 'future' | 'any';
93
+ /** Facts about the source — never policy (§ 7.1). Durations are in `smhdw`. */
94
+ export interface PeriodFacts {
95
+ readonly direction?: PeriodDirection;
96
+ readonly retention?: DurationText;
97
+ readonly maxRange?: DurationText;
98
+ readonly granularity?: DurationText;
99
+ readonly filtersToAsked?: boolean;
100
+ }
101
+ /** The unit set of a fact's duration (`retention`, `maxRange`, `granularity`). */
102
+ export declare const FACT_UNITS = "smhdw";
103
+ /** The step a look-back ending "at now" may miss by when no `granularity` is declared (§ 7.4). */
104
+ export declare const DEFAULT_GRANULARITY_MS = 60000;
105
+ /** The form one single-argument spelling means (the module table). */
106
+ export declare function sugarForm(argument: string, spelling: PeriodSpelling, zoneArgument?: string): PeriodForm;
107
+ /** The sugar and general halves of a period declaration, as `sugarForms` reads them. */
108
+ export interface PeriodShapes {
109
+ readonly argument?: string;
110
+ readonly spelling?: PeriodSpelling;
111
+ readonly accepts?: readonly PeriodSpelling[];
112
+ readonly zoneArgument?: string;
113
+ readonly forms?: readonly PeriodForm[];
114
+ }
115
+ /**
116
+ * Every form a declaration names, in preference order: `forms` as written,
117
+ * else the sugar (`accepts`, else `spelling`). A declaration that names an
118
+ * argument and no spelling has no form — today's "which argument", nothing
119
+ * the library can convert into.
120
+ */
121
+ export declare function sugarForms(period: PeriodShapes): readonly PeriodForm[];
122
+ type Plain = Record<string, unknown>;
123
+ export declare const isPlain: (value: unknown) => value is Plain;
124
+ /**
125
+ * Why one form's own shape is not a form, or `undefined` when it is one. The
126
+ * schema half (does the argument exist, is it the right type, does it carry a
127
+ * rule) is `arguments/declare.ts`'s — this is the shape alone.
128
+ */
129
+ export declare function formIssue(form: unknown): string | undefined;
130
+ /** Whether a form reads wall-clock values and so needs a zone (`wall`, `date`, a `day`). */
131
+ export declare function needsZone(form: PeriodForm): boolean;
132
+ /** One argument a form names, and what the schema must say of it. */
133
+ export interface FormArgument {
134
+ readonly argument: string;
135
+ /** `bound`: carries a value of the window; `zone`: carries the zone; `object`: an object of both bounds. */
136
+ readonly role: 'bound' | 'zone' | 'object';
137
+ /** The JSON Schema type the property must have: a number for an epoch, else a string. */
138
+ readonly type: 'number' | 'string' | 'object';
139
+ /** For a `bound` of a `bounds` form — the bound it carries. */
140
+ readonly bound?: Bound;
141
+ }
142
+ /** Every argument a form names, the zone argument last. */
143
+ export declare function formArguments(form: PeriodForm): readonly FormArgument[];
144
+ /** The argument a form is known by — the results layer's join key (its first bound). */
145
+ export declare function primaryArgument(form: PeriodForm): string;
146
+ /** A wall time written with no offset, and the step its spelling is precise to. */
147
+ export declare function wallOf(text: unknown): {
148
+ readonly wall: WallTime;
149
+ readonly stepMs: number;
150
+ } | undefined;
151
+ /** A calendar date `YYYY-MM-DD`, day-checked. */
152
+ export declare function dateOf(text: unknown): {
153
+ readonly year: number;
154
+ readonly month: number;
155
+ readonly day: number;
156
+ } | undefined;
157
+ /** Whether a single bound value is written the way `as` declares. */
158
+ export declare function isBoundValue(value: unknown, as: BoundAs): boolean;
159
+ export declare const epochFromText: (text: string) => number | undefined;
160
+ /**
161
+ * Whether a declared value (an `assume` default, an `ask` choice) of
162
+ * `argument` is written the way `form` spells that argument. A format check:
163
+ * no clock, no conversion. `true` for an argument the form does not name.
164
+ */
165
+ export declare function parsesUnderForm(value: unknown, form: PeriodForm, argument: string): boolean;
166
+ /** Why a range breaks one of the tool's facts — a code; the sentence is the catalog's. */
167
+ export type PeriodFactProblem = 'time-future' | 'time-past' | 'beyond-retention' | 'over-max-range';
168
+ /**
169
+ * Which of the tool's declared facts a half-open range breaks, against the
170
+ * turn's clock — or `undefined`. `past`: a range that starts after now;
171
+ * `future`: one that ends before now; `retention`: only a range WHOLLY older
172
+ * than `now − retention` (a partial overlap is the result's to judge);
173
+ * `maxRange`: a range longer than it. A fact the tool does not declare is not
174
+ * checked.
175
+ */
176
+ export declare function periodFactProblem(range: TimeRange, facts: PeriodFacts, now: InstantText): PeriodFactProblem | undefined;
177
+ /**
178
+ * Why a call is refused before dispatch (§ 7.2, step T5b): one of the tool's
179
+ * facts ({@link PeriodFactProblem}), a range across days to a tool that reads
180
+ * one day (`multi-day`), or a wall time the zone skips (`dst-gap`).
181
+ */
182
+ export type TimeRefusal = PeriodFactProblem | 'multi-day' | 'dst-gap';
183
+ export declare const TIME_REFUSALS: readonly TimeRefusal[];
184
+ export {};
185
+ //# sourceMappingURL=periodForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"periodForm.d.ts","sourceRoot":"","sources":["../../../../src/core/time/periodForm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * core/time/present — time rendered for a PERSON, in a named zone.
3
+ *
4
+ * Pattern: one renderer, every person-facing line (time design § 3.1, § 10.2):
5
+ * the limits block's `Period:` line (`coverage/period.ts` ·
6
+ * `periodLine`) and, later, every time label the layer shows. A
7
+ * label is never parsed back; the typed record keeps the instants.
8
+ * Role: core/ leaf (the time layer). Imports `instant.ts`, `zone.ts` and
9
+ * `range.ts` only.
10
+ * Emits: N/A.
11
+ *
12
+ * ## The form — locale-neutral, the zone always named
13
+ *
14
+ * With no locale (no reader armed) there is no language to speak: the
15
+ * form is ISO-like and the same in every language — a date, a 24-hour wall
16
+ * time in the presentation zone, then the zone's name and its offset at that
17
+ * moment:
18
+ *
19
+ * ```
20
+ * 2026-10-09 08:00–08:40 America/Los_Angeles (UTC-07:00)
21
+ * 2026-10-09 23:00 – 2026-10-10 01:00 Asia/Kolkata (UTC+05:30)
22
+ * 2026-11-01 01:00 (UTC-07:00) – 2026-11-01 01:30 (UTC-08:00) America/Los_Angeles
23
+ * 2026-10-09 15:00–15:40 UTC
24
+ * ```
25
+ *
26
+ * The time is written as finely as either end needs it (minutes, seconds, or
27
+ * milliseconds), never finer. When the two ends sit on different offsets (the
28
+ * span crosses a DST change) each end names its own; otherwise the offset is
29
+ * named once.
30
+ *
31
+ * ## With a locale (the reader's, § 11)
32
+ *
33
+ * A {@link Presentation} with a `locale` — the armed reader's, the language
34
+ * the person wrote in — is rendered through `Intl.DateTimeFormat` in that
35
+ * locale, at the same precision, the zone named by its short name
36
+ * (`Fri, Oct 9, 2026, 8:00 – 8:40 AM PDT` in `en-US`). The words are the
37
+ * runtime's ICU data; the instants behind the label are the record.
38
+ *
39
+ * ## The said end (§ 3.3)
40
+ *
41
+ * Inside the library a person's range is half-open: "to 8:40" read to the end
42
+ * of its grain is `[08:00, 08:41)`. {@link presentRange} with that grain shows
43
+ * the end AS SAID — the last instant inside the range at the grain,
44
+ * `08:40` — never `08:41`. A declared period's `queried` / `held` is
45
+ * inclusive already, so {@link presentSpan} shows its ends as declared.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * const la = { zone: 'America/Los_Angeles' };
50
+ * presentRange({ from: '2026-10-09T08:00:00-07:00', to: '2026-10-09T08:41:00-07:00' }, la, 'minute');
51
+ * // '2026-10-09 08:00–08:40 America/Los_Angeles (UTC-07:00)'
52
+ * presentSpan('2026-10-09T15:00:00Z', '2026-10-09T15:40:00Z', la);
53
+ * // '2026-10-09 08:00–08:40 America/Los_Angeles (UTC-07:00)'
54
+ * presentInstant('2026-10-09T15:40:03Z', la);
55
+ * // '2026-10-09 08:40:03 America/Los_Angeles (UTC-07:00)'
56
+ * ```
57
+ */
58
+ import { type InstantText } from './instant.js';
59
+ import type { TimeRange } from './range.js';
60
+ import { type ZoneName } from './zone.js';
61
+ /**
62
+ * Where a label is rendered — the presentation zone, and the locale when a
63
+ * reader is armed (its `locale`: the language the person wrote in). Without a
64
+ * locale the form is the locale-neutral one above.
65
+ */
66
+ export interface Presentation {
67
+ readonly zone: ZoneName;
68
+ /** A BCP 47 language tag (`'en-US'`). Rendered through `Intl`; the zone is always named. */
69
+ readonly locale?: string;
70
+ }
71
+ /** How finely a person said a time (time design § 3.2). */
72
+ export type Grain = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';
73
+ /**
74
+ * One instant for a person: its wall time in the presentation zone, written
75
+ * as finely as it needs (never coarser than minutes), and the zone named.
76
+ */
77
+ export declare function presentInstant(value: InstantText, presentation: Presentation): string;
78
+ /**
79
+ * Two INCLUSIVE ends — a declared period's `queried` or `held` — for a
80
+ * person, each shown as declared (no end moved), in the presentation zone.
81
+ * Accepts the lenient profile: a period a result declares.
82
+ */
83
+ export declare function presentSpan(from: InstantText, to: InstantText, presentation: Presentation): string;
84
+ /**
85
+ * A presentation bound into the three renderers the coverage limits lines use
86
+ * (`agent/coverage/period.ts` · `periodLine` for a `Period:` line, and
87
+ * `periodCheckLine` for a result check's ranges). The coverage module is on every
88
+ * agent's graph and this one loads only under `.time()`, so it is HANDED the
89
+ * renderers (`agent/stages/prepareFinal.ts` loads this module through
90
+ * `import()`) and never imports them — the optional-family law of docs-next's
91
+ * site budget.
92
+ */
93
+ export interface BoundPresentation {
94
+ readonly span: (from: InstantText, to: InstantText) => string;
95
+ readonly instant: (value: InstantText) => string;
96
+ readonly range: (range: TimeRange, grain?: Grain) => string;
97
+ }
98
+ /** {@link presentSpan}, {@link presentInstant} and {@link presentRange}, bound to one presentation. */
99
+ export declare function bindPresentation(presentation: Presentation): BoundPresentation;
100
+ /**
101
+ * A half-open range for a person. With the `grain` the person said, the end
102
+ * is the end AS SAID (§ 3.3): the last instant inside the range, written at
103
+ * that grain — `[08:00, 08:41)` at `'minute'` shows `08:00–08:40`, and a
104
+ * `'day'` range `[9 Oct, 10 Oct)` shows `2026-10-09`. Without a grain (an
105
+ * exact range) both ends are shown as they are.
106
+ */
107
+ export declare function presentRange(range: TimeRange, presentation: Presentation, grain?: Grain): string;
108
+ //# sourceMappingURL=present.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"present.d.ts","sourceRoot":"","sources":["../../../../src/core/time/present.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO,EAAa,KAAK,WAAW,EAAsB,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEvF;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,2DAA2D;AAC3D,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAmNrF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CASrF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,WAAW,EACf,YAAY,EAAE,YAAY,GACzB,MAAM,CAWR;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC;CAC7D;AAED,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,iBAAiB,CAM9E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CA4BhG"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * core/time/range — the library's one range, its two spellings, and one
3
+ * conversion per boundary a range crosses.
4
+ *
5
+ * Pattern: one internal shape, converted at every edge by a named function —
6
+ * never inline. Inside the library a range is HALF-OPEN `[from, to)`;
7
+ * the places a range crosses do not share that edge (the time design,
8
+ * `docs/design/time/README.md` § 3.3), so each crossing is a function
9
+ * here and its inverse.
10
+ * Role: core/ leaf (the time layer's one owner). Imports `instant.ts` and
11
+ * `duration.ts`. Asked by `arguments/declare.ts` ·
12
+ * `parsesUnderSpelling` (an `iso-range` argument is
13
+ * {@link splitRange} under `'..'` and the strict profile). No other
14
+ * file splits or joins a range.
15
+ * Emits: N/A.
16
+ *
17
+ * ## The boundaries
18
+ *
19
+ * | Boundary | Its edge | Into it from `[from, to)` | Back |
20
+ * |----------|----------|---------------------------|------|
21
+ * | a result's `DeclaredPeriod.queried` / `held` | inclusive at both ends | not converted — the tool declares it | {@link fromInclusive} with the tool's step (`granularity`, else 1 ms) |
22
+ * | a tool argument bound | declared on every `bounds`/`object` end (TQ18); only the sugar defaults inclusive | {@link boundInto} | {@link boundFrom} |
23
+ * | a look-back argument | `[until − L, until]` | {@link lookbackRange} | {@link lookbackOf} |
24
+ * | an ask answer / an ISO 8601 interval | `from/to`, half-open | identity: {@link spellRange} | identity: {@link parseRange} |
25
+ * | an inclusive interval clause (SQL `BETWEEN`, a chart brush) | inclusive at both ends | {@link toInclusive} | {@link fromInclusive} |
26
+ *
27
+ * `coverage/period.ts` · `periodVerdict` stays inclusive and is NOT routed
28
+ * through here: it compares the two inclusive spans a result declared.
29
+ *
30
+ * A derived bound keeps the offset its source was written in, spelled in the
31
+ * strict profile; a bound that is not derived is kept as written.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * parseRange('2026-10-09T08:00:00-07:00/2026-10-09T08:41:00-07:00');
36
+ * // { from: '2026-10-09T08:00:00-07:00', to: '2026-10-09T08:41:00-07:00' }
37
+ * toInclusive({ from: '2026-10-09T08:00:00-07:00', to: '2026-10-09T08:41:00-07:00' }, 60_000);
38
+ * // { from: '2026-10-09T08:00:00-07:00', to: '2026-10-09T08:40:00-07:00' } — "through 08:40"
39
+ * ```
40
+ */
41
+ import { type DurationText } from './duration.js';
42
+ import { type InstantProfile, type InstantText, type ParsedInstant } from './instant.js';
43
+ /**
44
+ * The library's INTERNAL range: half-open `[from, to)`, `from` before `to`.
45
+ * NOT the same reading as `DeclaredPeriod.queried`, whose bounds are
46
+ * inclusive — every boundary converts (the module table).
47
+ */
48
+ export interface TimeRange {
49
+ readonly from: InstantText;
50
+ readonly to: InstantText;
51
+ }
52
+ /** Two instants with inclusive ends, `from` not after `to` — a declared period's span, an SQL `BETWEEN`. */
53
+ export interface InclusiveSpan {
54
+ readonly from: InstantText;
55
+ readonly to: InstantText;
56
+ }
57
+ /** How two bounds are joined in one string: an ISO 8601 interval (`/`) or a tool's joined argument (`..`). */
58
+ export type RangeJoiner = '/' | '..';
59
+ /** Whether a tool's bound includes the instant it names. */
60
+ export type Edge = 'inclusive' | 'exclusive';
61
+ /**
62
+ * The two bounds of a joined range string — exactly one `joiner`, each half an
63
+ * instant under `profile` — or `undefined`. The ORDER is not checked: a format
64
+ * check, for a declaration that only promises a spelling.
65
+ */
66
+ export declare function splitRange(value: unknown, joiner: RangeJoiner, profile: InstantProfile): readonly [ParsedInstant, ParsedInstant] | undefined;
67
+ /**
68
+ * A joined string read as a {@link TimeRange} — strict instants, `from`
69
+ * before `to` — or `undefined`. The bounds are kept as written.
70
+ */
71
+ export declare function parseRange(value: unknown, joiner?: RangeJoiner): TimeRange | undefined;
72
+ /** Whether `value` is a well-formed {@link TimeRange}: strict instants, `from` before `to`, no other key. */
73
+ export declare function isTimeRange(value: unknown): value is TimeRange;
74
+ /** The range spelled as one string: `from<joiner>to`, bounds as written. Throws on a range that is not well formed. */
75
+ export declare function spellRange(range: TimeRange, joiner?: RangeJoiner): string;
76
+ /** The step a tool's `granularity` names (under `units`), else 1 ms — the § 3.3 rule. */
77
+ export declare function stepMsOf(granularity: DurationText | undefined, units: string): number;
78
+ /**
79
+ * An inclusive span read back as half-open: `[from, to + step)`. The step is
80
+ * the source's smallest step (a tool's `granularity`, else 1 ms). The span is
81
+ * read in the LENIENT profile — a result declares it.
82
+ */
83
+ export declare function fromInclusive(span: InclusiveSpan, stepMs?: number): TimeRange;
84
+ /**
85
+ * A half-open range written with inclusive ends: `[from, to − step]` — the
86
+ * last instant inside the range at the reader's precision. Refused when the
87
+ * range is narrower than one step (it holds no instant at that precision).
88
+ */
89
+ export declare function toInclusive(range: TimeRange, stepMs?: number): InclusiveSpan;
90
+ /**
91
+ * A half-open range's end as a tool's `to` bound: `exclusive` → as is;
92
+ * `inclusive` → the last instant inside at the argument's precision
93
+ * (`to − step`).
94
+ */
95
+ export declare function boundInto(to: InstantText, edge: Edge, stepMs: number): InstantText;
96
+ /** The inverse of {@link boundInto}: a tool's `to` bound as a half-open range's end. */
97
+ export declare function boundFrom(to: InstantText, edge: Edge, stepMs: number): InstantText;
98
+ /**
99
+ * A look-back `duration` evaluated at `until` — `[until − L, until]`, both
100
+ * ends inside — as a half-open range `[until − L, until + 1 ms)`.
101
+ */
102
+ export declare function lookbackRange(until: InstantText, duration: DurationText, units: string): TimeRange;
103
+ /**
104
+ * The inverse of {@link lookbackRange}: the `until` and the smallest exact
105
+ * look-back spelling a half-open range is, or `undefined` when its length is
106
+ * no whole duration in `units`.
107
+ */
108
+ export declare function lookbackOf(range: TimeRange, units: string): {
109
+ readonly until: InstantText;
110
+ readonly duration: DurationText;
111
+ } | undefined;
112
+ /** Whether `outer` holds every instant of `inner` (half-open). */
113
+ export declare function covers(outer: TimeRange, inner: TimeRange): boolean;
114
+ /** Whether two ranges hold the same instants (their spellings and offsets aside). */
115
+ export declare function sameRange(a: TimeRange, b: TimeRange): boolean;
116
+ /** Whether `a` and `b` share at least one instant (half-open: touching ends do not overlap). */
117
+ export declare function overlaps(a: TimeRange, b: TimeRange): boolean;
118
+ /**
119
+ * The range widened to whole steps — `from` down, `to` up, never inward —
120
+ * with `rounded` saying whether anything moved. Steps are counted from the
121
+ * epoch in UTC: right for seconds, minutes and hours; a calendar day or week
122
+ * in a zone is `zone.ts`'s question, not this one.
123
+ */
124
+ export declare function roundOutward(range: TimeRange, stepMs: number): {
125
+ readonly range: TimeRange;
126
+ readonly rounded: boolean;
127
+ };
128
+ //# sourceMappingURL=range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../../src/core/time/range.ts"],"names":[],"mappings":"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"}