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.
- package/CAPABILITIES.md +13 -1
- package/dist/adapters/llm/AnthropicProvider.js +10 -111
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BedrockProvider.js +11 -4
- package/dist/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/adapters/llm/InvokeModelGatewayProvider.js +167 -35
- package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +5 -0
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/anthropicMessagesWire.js +20 -6
- package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/adapters/llm/retryAfter.js +61 -0
- package/dist/adapters/llm/retryAfter.js.map +1 -0
- package/dist/adapters/types.js.map +1 -1
- package/dist/artifacts/datasetResult.js +2 -2
- package/dist/artifacts/datasetResult.js.map +1 -1
- package/dist/artifacts/index.js +10 -8
- package/dist/artifacts/index.js.map +1 -1
- package/dist/artifacts/minting.js +2 -2
- package/dist/artifacts/minting.js.map +1 -1
- package/dist/core/Agent.js +229 -5
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +75 -1
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/arguments/ask.js +356 -14
- package/dist/core/agent/arguments/ask.js.map +1 -1
- package/dist/core/agent/arguments/declare.js +260 -45
- package/dist/core/agent/arguments/declare.js.map +1 -1
- package/dist/core/agent/arguments/dispatch.js +25 -1
- package/dist/core/agent/arguments/dispatch.js.map +1 -1
- package/dist/core/agent/arguments/resolve.js +239 -6
- package/dist/core/agent/arguments/resolve.js.map +1 -1
- package/dist/core/agent/arguments/rows.js +37 -2
- package/dist/core/agent/arguments/rows.js.map +1 -1
- package/dist/core/agent/arguments/serve.js +332 -4
- package/dist/core/agent/arguments/serve.js.map +1 -1
- package/dist/core/agent/arguments/subflow.js +46 -7
- package/dist/core/agent/arguments/subflow.js.map +1 -1
- package/dist/core/agent/assessment/assess.js +45 -6
- package/dist/core/agent/assessment/assess.js.map +1 -1
- package/dist/core/agent/assessment/compose.js +3 -0
- package/dist/core/agent/assessment/compose.js.map +1 -1
- package/dist/core/agent/assessment/reasons.js +18 -0
- package/dist/core/agent/assessment/reasons.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +31 -1
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +9 -0
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/coverage/answer.js +24 -7
- package/dist/core/agent/coverage/answer.js.map +1 -1
- package/dist/core/agent/coverage/period.js +110 -69
- package/dist/core/agent/coverage/period.js.map +1 -1
- package/dist/core/agent/coverage/timeLimitFacts.js +70 -0
- package/dist/core/agent/coverage/timeLimitFacts.js.map +1 -0
- package/dist/core/agent/coverage/timeLimits.js +72 -0
- package/dist/core/agent/coverage/timeLimits.js.map +1 -0
- package/dist/core/agent/evidence/evidenceIndex.js +48 -7
- package/dist/core/agent/evidence/evidenceIndex.js.map +1 -1
- package/dist/core/agent/evidence/gate.js +9 -4
- package/dist/core/agent/evidence/gate.js.map +1 -1
- package/dist/core/agent/evidence/normalize.js +1 -105
- package/dist/core/agent/evidence/normalize.js.map +1 -1
- package/dist/core/agent/findings/ledger.js +14 -0
- package/dist/core/agent/findings/ledger.js.map +1 -1
- package/dist/core/agent/findings/types.js.map +1 -1
- package/dist/core/agent/honesty/mounts.js +105 -4
- package/dist/core/agent/honesty/mounts.js.map +1 -1
- package/dist/core/agent/results/subflow.js +43 -11
- package/dist/core/agent/results/subflow.js.map +1 -1
- package/dist/core/agent/stages/argumentAsk.js +85 -6
- package/dist/core/agent/stages/argumentAsk.js.map +1 -1
- package/dist/core/agent/stages/callLLM.js +16 -0
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/prepareFinal.js +61 -8
- package/dist/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/core/agent/stages/route.js +64 -6
- package/dist/core/agent/stages/route.js.map +1 -1
- package/dist/core/agent/stages/seed.js +29 -6
- package/dist/core/agent/stages/seed.js.map +1 -1
- package/dist/core/agent/stages/timeLayer.js +201 -0
- package/dist/core/agent/stages/timeLayer.js.map +1 -0
- package/dist/core/agent/stages/timeLineage.js +61 -0
- package/dist/core/agent/stages/timeLineage.js.map +1 -0
- package/dist/core/agent/stages/toolCalls.js +70 -0
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/inputRequest.js +132 -5
- package/dist/core/inputRequest.js.map +1 -1
- package/dist/core/messageFrom.js +5 -2
- package/dist/core/messageFrom.js.map +1 -1
- package/dist/core/runCheckpoint.js +17 -2
- package/dist/core/runCheckpoint.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js +30 -2
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/core/time/ask.js +239 -0
- package/dist/core/time/ask.js.map +1 -0
- package/dist/core/time/axis.js +469 -0
- package/dist/core/time/axis.js.map +1 -0
- package/dist/core/time/bind.js +235 -0
- package/dist/core/time/bind.js.map +1 -0
- package/dist/core/time/check.js +261 -0
- package/dist/core/time/check.js.map +1 -0
- package/dist/core/time/checkRecord.js +97 -0
- package/dist/core/time/checkRecord.js.map +1 -0
- package/dist/core/time/clock.js +260 -0
- package/dist/core/time/clock.js.map +1 -0
- package/dist/core/time/convert.js +634 -0
- package/dist/core/time/convert.js.map +1 -0
- package/dist/core/time/drift.js +96 -0
- package/dist/core/time/drift.js.map +1 -0
- package/dist/core/time/duration.js +125 -0
- package/dist/core/time/duration.js.map +1 -0
- package/dist/core/time/forms.js +273 -0
- package/dist/core/time/forms.js.map +1 -0
- package/dist/core/time/instant.js +141 -0
- package/dist/core/time/instant.js.map +1 -0
- package/dist/core/time/periodForm.js +392 -0
- package/dist/core/time/periodForm.js.map +1 -0
- package/dist/core/time/present.js +312 -0
- package/dist/core/time/present.js.map +1 -0
- package/dist/core/time/range.js +267 -0
- package/dist/core/time/range.js.map +1 -0
- package/dist/core/time/reader.js +209 -0
- package/dist/core/time/reader.js.map +1 -0
- package/dist/core/time/readers/english.js +576 -0
- package/dist/core/time/readers/english.js.map +1 -0
- package/dist/core/time/readingAsk.js +94 -0
- package/dist/core/time/readingAsk.js.map +1 -0
- package/dist/core/time/resolve.js +694 -0
- package/dist/core/time/resolve.js.map +1 -0
- package/dist/core/time/resolveRecord.js +164 -0
- package/dist/core/time/resolveRecord.js.map +1 -0
- package/dist/core/time/rows.js +412 -0
- package/dist/core/time/rows.js.map +1 -0
- package/dist/core/time/rowsBuild.js +193 -0
- package/dist/core/time/rowsBuild.js.map +1 -0
- package/dist/core/time/textForms.js +133 -0
- package/dist/core/time/textForms.js.map +1 -0
- package/dist/core/time/windows.js +172 -0
- package/dist/core/time/windows.js.map +1 -0
- package/dist/core/time/wire.js +86 -0
- package/dist/core/time/wire.js.map +1 -0
- package/dist/core/time/zone.js +253 -0
- package/dist/core/time/zone.js.map +1 -0
- package/dist/core/tools.js.map +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.js +8 -109
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BedrockProvider.js +11 -4
- package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.d.ts +38 -4
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +167 -35
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.js +5 -0
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +6 -1
- package/dist/esm/adapters/llm/anthropicMessagesWire.js +20 -6
- package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/esm/adapters/llm/retryAfter.d.ts +27 -0
- package/dist/esm/adapters/llm/retryAfter.js +56 -0
- package/dist/esm/adapters/llm/retryAfter.js.map +1 -0
- package/dist/esm/adapters/types.d.ts +9 -0
- package/dist/esm/adapters/types.js.map +1 -1
- package/dist/esm/artifacts/datasetResult.js +1 -1
- package/dist/esm/artifacts/datasetResult.js.map +1 -1
- package/dist/esm/artifacts/index.d.ts +1 -1
- package/dist/esm/artifacts/index.js +3 -2
- package/dist/esm/artifacts/index.js.map +1 -1
- package/dist/esm/artifacts/minting.js +1 -1
- package/dist/esm/artifacts/minting.js.map +1 -1
- package/dist/esm/artifacts/types.d.ts +2 -2
- package/dist/esm/core/Agent.d.ts +64 -0
- package/dist/esm/core/Agent.js +230 -6
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +60 -0
- package/dist/esm/core/agent/AgentBuilder.js +75 -1
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/arguments/ask.d.ts +88 -5
- package/dist/esm/core/agent/arguments/ask.js +349 -8
- package/dist/esm/core/agent/arguments/ask.js.map +1 -1
- package/dist/esm/core/agent/arguments/checks.d.ts +1 -1
- package/dist/esm/core/agent/arguments/declare.d.ts +76 -15
- package/dist/esm/core/agent/arguments/declare.js +255 -44
- package/dist/esm/core/agent/arguments/declare.js.map +1 -1
- package/dist/esm/core/agent/arguments/dispatch.js +25 -1
- package/dist/esm/core/agent/arguments/dispatch.js.map +1 -1
- package/dist/esm/core/agent/arguments/resolve.d.ts +77 -7
- package/dist/esm/core/agent/arguments/resolve.js +239 -8
- package/dist/esm/core/agent/arguments/resolve.js.map +1 -1
- package/dist/esm/core/agent/arguments/rows.d.ts +31 -2
- package/dist/esm/core/agent/arguments/rows.js +35 -1
- package/dist/esm/core/agent/arguments/rows.js.map +1 -1
- package/dist/esm/core/agent/arguments/serve.d.ts +133 -4
- package/dist/esm/core/agent/arguments/serve.js +328 -4
- package/dist/esm/core/agent/arguments/serve.js.map +1 -1
- package/dist/esm/core/agent/arguments/subflow.d.ts +28 -0
- package/dist/esm/core/agent/arguments/subflow.js +47 -8
- package/dist/esm/core/agent/arguments/subflow.js.map +1 -1
- package/dist/esm/core/agent/assessment/assess.js +45 -6
- package/dist/esm/core/agent/assessment/assess.js.map +1 -1
- package/dist/esm/core/agent/assessment/compose.js +3 -0
- package/dist/esm/core/agent/assessment/compose.js.map +1 -1
- package/dist/esm/core/agent/assessment/reasons.js +18 -0
- package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
- package/dist/esm/core/agent/assessment/types.d.ts +15 -1
- package/dist/esm/core/agent/buildAgentChart.d.ts +41 -0
- package/dist/esm/core/agent/buildAgentChart.js +28 -0
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.d.ts +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +9 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/coverage/answer.d.ts +20 -1
- package/dist/esm/core/agent/coverage/answer.js +23 -6
- package/dist/esm/core/agent/coverage/answer.js.map +1 -1
- package/dist/esm/core/agent/coverage/period.d.ts +49 -3
- package/dist/esm/core/agent/coverage/period.js +107 -68
- package/dist/esm/core/agent/coverage/period.js.map +1 -1
- package/dist/esm/core/agent/coverage/timeLimitFacts.d.ts +56 -0
- package/dist/esm/core/agent/coverage/timeLimitFacts.js +65 -0
- package/dist/esm/core/agent/coverage/timeLimitFacts.js.map +1 -0
- package/dist/esm/core/agent/coverage/timeLimits.d.ts +46 -0
- package/dist/esm/core/agent/coverage/timeLimits.js +67 -0
- package/dist/esm/core/agent/coverage/timeLimits.js.map +1 -0
- package/dist/esm/core/agent/evidence/evidenceIndex.d.ts +25 -2
- package/dist/esm/core/agent/evidence/evidenceIndex.js +47 -7
- package/dist/esm/core/agent/evidence/evidenceIndex.js.map +1 -1
- package/dist/esm/core/agent/evidence/gate.d.ts +7 -0
- package/dist/esm/core/agent/evidence/gate.js +9 -4
- package/dist/esm/core/agent/evidence/gate.js.map +1 -1
- package/dist/esm/core/agent/evidence/normalize.d.ts +0 -34
- package/dist/esm/core/agent/evidence/normalize.js +0 -103
- package/dist/esm/core/agent/evidence/normalize.js.map +1 -1
- package/dist/esm/core/agent/evidence/types.d.ts +12 -1
- package/dist/esm/core/agent/findings/ledger.js +14 -0
- package/dist/esm/core/agent/findings/ledger.js.map +1 -1
- package/dist/esm/core/agent/findings/types.d.ts +2 -1
- package/dist/esm/core/agent/findings/types.js.map +1 -1
- package/dist/esm/core/agent/honesty/mounts.d.ts +25 -0
- package/dist/esm/core/agent/honesty/mounts.js +104 -4
- package/dist/esm/core/agent/honesty/mounts.js.map +1 -1
- package/dist/esm/core/agent/results/subflow.d.ts +34 -2
- package/dist/esm/core/agent/results/subflow.js +43 -11
- package/dist/esm/core/agent/results/subflow.js.map +1 -1
- package/dist/esm/core/agent/stages/argumentAsk.d.ts +19 -0
- package/dist/esm/core/agent/stages/argumentAsk.js +85 -6
- package/dist/esm/core/agent/stages/argumentAsk.js.map +1 -1
- package/dist/esm/core/agent/stages/callLLM.d.ts +6 -0
- package/dist/esm/core/agent/stages/callLLM.js +16 -0
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/prepareFinal.d.ts +13 -1
- package/dist/esm/core/agent/stages/prepareFinal.js +59 -7
- package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/esm/core/agent/stages/route.d.ts +29 -1
- package/dist/esm/core/agent/stages/route.js +64 -7
- package/dist/esm/core/agent/stages/route.js.map +1 -1
- package/dist/esm/core/agent/stages/seed.d.ts +23 -0
- package/dist/esm/core/agent/stages/seed.js +29 -6
- package/dist/esm/core/agent/stages/seed.js.map +1 -1
- package/dist/esm/core/agent/stages/timeLayer.d.ts +94 -0
- package/dist/esm/core/agent/stages/timeLayer.js +193 -0
- package/dist/esm/core/agent/stages/timeLayer.js.map +1 -0
- package/dist/esm/core/agent/stages/timeLineage.d.ts +31 -0
- package/dist/esm/core/agent/stages/timeLineage.js +57 -0
- package/dist/esm/core/agent/stages/timeLineage.js.map +1 -0
- package/dist/esm/core/agent/stages/toolCalls.d.ts +32 -0
- package/dist/esm/core/agent/stages/toolCalls.js +70 -0
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +37 -0
- package/dist/esm/core/inputRequest.d.ts +50 -6
- package/dist/esm/core/inputRequest.js +132 -5
- package/dist/esm/core/inputRequest.js.map +1 -1
- package/dist/esm/core/messageFrom.d.ts +5 -2
- package/dist/esm/core/messageFrom.js +5 -2
- package/dist/esm/core/messageFrom.js.map +1 -1
- package/dist/esm/core/runCheckpoint.js +17 -2
- package/dist/esm/core/runCheckpoint.js.map +1 -1
- package/dist/esm/core/slots/buildToolsSlot.d.ts +29 -0
- package/dist/esm/core/slots/buildToolsSlot.js +30 -2
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/core/time/ask.d.ts +126 -0
- package/dist/esm/core/time/ask.js +230 -0
- package/dist/esm/core/time/ask.js.map +1 -0
- package/dist/esm/core/time/axis.d.ts +224 -0
- package/dist/esm/core/time/axis.js +462 -0
- package/dist/esm/core/time/axis.js.map +1 -0
- package/dist/esm/core/time/bind.d.ts +143 -0
- package/dist/esm/core/time/bind.js +227 -0
- package/dist/esm/core/time/bind.js.map +1 -0
- package/dist/esm/core/time/check.d.ts +113 -0
- package/dist/esm/core/time/check.js +252 -0
- package/dist/esm/core/time/check.js.map +1 -0
- package/dist/esm/core/time/checkRecord.d.ts +74 -0
- package/dist/esm/core/time/checkRecord.js +90 -0
- package/dist/esm/core/time/checkRecord.js.map +1 -0
- package/dist/esm/core/time/clock.d.ts +183 -0
- package/dist/esm/core/time/clock.js +252 -0
- package/dist/esm/core/time/clock.js.map +1 -0
- package/dist/esm/core/time/convert.d.ts +178 -0
- package/dist/esm/core/time/convert.js +609 -0
- package/dist/esm/core/time/convert.js.map +1 -0
- package/dist/esm/core/time/drift.d.ts +85 -0
- package/dist/esm/core/time/drift.js +91 -0
- package/dist/esm/core/time/drift.js.map +1 -0
- package/dist/esm/core/time/duration.d.ts +71 -0
- package/dist/esm/core/time/duration.js +117 -0
- package/dist/esm/core/time/duration.js.map +1 -0
- package/dist/esm/core/time/forms.d.ts +84 -0
- package/dist/esm/core/time/forms.js +268 -0
- package/dist/esm/core/time/forms.js.map +1 -0
- package/dist/esm/core/time/instant.d.ts +75 -0
- package/dist/esm/core/time/instant.js +131 -0
- package/dist/esm/core/time/instant.js.map +1 -0
- package/dist/esm/core/time/periodForm.d.ts +184 -0
- package/dist/esm/core/time/periodForm.js +376 -0
- package/dist/esm/core/time/periodForm.js.map +1 -0
- package/dist/esm/core/time/present.d.ts +107 -0
- package/dist/esm/core/time/present.js +305 -0
- package/dist/esm/core/time/present.js.map +1 -0
- package/dist/esm/core/time/range.d.ts +127 -0
- package/dist/esm/core/time/range.js +249 -0
- package/dist/esm/core/time/range.js.map +1 -0
- package/dist/esm/core/time/reader.d.ts +162 -0
- package/dist/esm/core/time/reader.js +203 -0
- package/dist/esm/core/time/reader.js.map +1 -0
- package/dist/esm/core/time/readers/english.d.ts +99 -0
- package/dist/esm/core/time/readers/english.js +572 -0
- package/dist/esm/core/time/readers/english.js.map +1 -0
- package/dist/esm/core/time/readingAsk.d.ts +45 -0
- package/dist/esm/core/time/readingAsk.js +90 -0
- package/dist/esm/core/time/readingAsk.js.map +1 -0
- package/dist/esm/core/time/resolve.d.ts +103 -0
- package/dist/esm/core/time/resolve.js +684 -0
- package/dist/esm/core/time/resolve.js.map +1 -0
- package/dist/esm/core/time/resolveRecord.d.ts +160 -0
- package/dist/esm/core/time/resolveRecord.js +158 -0
- package/dist/esm/core/time/resolveRecord.js.map +1 -0
- package/dist/esm/core/time/rows.d.ts +297 -0
- package/dist/esm/core/time/rows.js +397 -0
- package/dist/esm/core/time/rows.js.map +1 -0
- package/dist/esm/core/time/rowsBuild.d.ts +82 -0
- package/dist/esm/core/time/rowsBuild.js +185 -0
- package/dist/esm/core/time/rowsBuild.js.map +1 -0
- package/dist/esm/core/time/textForms.d.ts +53 -0
- package/dist/esm/core/time/textForms.js +126 -0
- package/dist/esm/core/time/textForms.js.map +1 -0
- package/dist/esm/core/time/windows.d.ts +113 -0
- package/dist/esm/core/time/windows.js +166 -0
- package/dist/esm/core/time/windows.js.map +1 -0
- package/dist/esm/core/time/wire.d.ts +63 -0
- package/dist/esm/core/time/wire.js +81 -0
- package/dist/esm/core/time/wire.js.map +1 -0
- package/dist/esm/core/time/zone.d.ts +115 -0
- package/dist/esm/core/time/zone.js +242 -0
- package/dist/esm/core/time/zone.js.map +1 -0
- package/dist/esm/core/tools.d.ts +26 -4
- package/dist/esm/core/tools.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +16 -2
- package/dist/esm/index.d.ts +13 -1
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/answer-account/facts/howSure.js +7 -0
- package/dist/esm/lib/answer-account/facts/howSure.js.map +1 -1
- package/dist/esm/lib/answer-account/templates.d.ts +3 -0
- package/dist/esm/lib/answer-account/templates.js +4 -0
- package/dist/esm/lib/answer-account/templates.js.map +1 -1
- package/dist/esm/lib/mcp/elicitation.d.ts +84 -0
- package/dist/esm/lib/mcp/elicitation.js +181 -0
- package/dist/esm/lib/mcp/elicitation.js.map +1 -0
- package/dist/esm/lib/mcp/mcpClient.js +9 -3
- package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
- package/dist/esm/lib/mcp/mcpServe.js +6 -2
- package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
- package/dist/esm/lib/mcp/mockMcpClient.d.ts +9 -1
- package/dist/esm/lib/mcp/mockMcpClient.js +5 -3
- package/dist/esm/lib/mcp/mockMcpClient.js.map +1 -1
- package/dist/esm/lib/mcp/toolExtras.d.ts +21 -2
- package/dist/esm/lib/mcp/toolExtras.js +22 -0
- package/dist/esm/lib/mcp/toolExtras.js.map +1 -1
- package/dist/esm/lib/mcp/types.d.ts +8 -0
- package/dist/esm/lib/time-travel/receipt.d.ts +1 -1
- package/dist/esm/lib/time-travel/servedView.d.ts +1 -1
- package/dist/esm/lib/time-travel/servedView.js +9 -0
- package/dist/esm/lib/time-travel/servedView.js.map +1 -1
- package/dist/esm/locales/index.d.ts +6 -0
- package/dist/esm/locales/index.js +6 -0
- package/dist/esm/locales/index.js.map +1 -1
- package/dist/esm/locales/timeAsk.d.ts +29 -0
- package/dist/esm/locales/timeAsk.js +44 -0
- package/dist/esm/locales/timeAsk.js.map +1 -0
- package/dist/esm/recorders/core/resilienceHooks.js +1 -0
- package/dist/esm/recorders/core/resilienceHooks.js.map +1 -1
- package/dist/esm/resilience/statedWait.d.ts +22 -0
- package/dist/esm/resilience/statedWait.js +35 -0
- package/dist/esm/resilience/statedWait.js.map +1 -0
- package/dist/esm/resilience/withRetry.d.ts +13 -2
- package/dist/esm/resilience/withRetry.js +16 -1
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/answer-account/facts/howSure.js +7 -0
- package/dist/lib/answer-account/facts/howSure.js.map +1 -1
- package/dist/lib/answer-account/templates.js +4 -0
- package/dist/lib/answer-account/templates.js.map +1 -1
- package/dist/lib/mcp/elicitation.js +186 -0
- package/dist/lib/mcp/elicitation.js.map +1 -0
- package/dist/lib/mcp/mcpClient.js +8 -2
- package/dist/lib/mcp/mcpClient.js.map +1 -1
- package/dist/lib/mcp/mcpServe.js +5 -1
- package/dist/lib/mcp/mcpServe.js.map +1 -1
- package/dist/lib/mcp/mockMcpClient.js +4 -2
- package/dist/lib/mcp/mockMcpClient.js.map +1 -1
- package/dist/lib/mcp/toolExtras.js +25 -1
- package/dist/lib/mcp/toolExtras.js.map +1 -1
- package/dist/lib/time-travel/servedView.js +9 -0
- package/dist/lib/time-travel/servedView.js.map +1 -1
- package/dist/locales/index.js +8 -1
- package/dist/locales/index.js.map +1 -1
- package/dist/locales/timeAsk.js +47 -0
- package/dist/locales/timeAsk.js.map +1 -0
- package/dist/recorders/core/resilienceHooks.js +1 -0
- package/dist/recorders/core/resilienceHooks.js.map +1 -1
- package/dist/resilience/statedWait.js +39 -0
- package/dist/resilience/statedWait.js.map +1 -0
- package/dist/resilience/withRetry.js +16 -1
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts +38 -4
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +6 -1
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
- package/dist/types/adapters/llm/retryAfter.d.ts +28 -0
- package/dist/types/adapters/llm/retryAfter.d.ts.map +1 -0
- package/dist/types/adapters/types.d.ts +9 -0
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/artifacts/index.d.ts +1 -1
- package/dist/types/artifacts/index.d.ts.map +1 -1
- package/dist/types/artifacts/types.d.ts +2 -2
- package/dist/types/artifacts/types.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +64 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +60 -0
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/ask.d.ts +88 -5
- package/dist/types/core/agent/arguments/ask.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/checks.d.ts +1 -1
- package/dist/types/core/agent/arguments/checks.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/declare.d.ts +76 -15
- package/dist/types/core/agent/arguments/declare.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/dispatch.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/resolve.d.ts +77 -7
- package/dist/types/core/agent/arguments/resolve.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/rows.d.ts +31 -2
- package/dist/types/core/agent/arguments/rows.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/serve.d.ts +133 -4
- package/dist/types/core/agent/arguments/serve.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/subflow.d.ts +28 -0
- package/dist/types/core/agent/arguments/subflow.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/assess.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/compose.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/reasons.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/types.d.ts +15 -1
- package/dist/types/core/agent/assessment/types.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +41 -0
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/coverage/answer.d.ts +20 -1
- package/dist/types/core/agent/coverage/answer.d.ts.map +1 -1
- package/dist/types/core/agent/coverage/period.d.ts +49 -3
- package/dist/types/core/agent/coverage/period.d.ts.map +1 -1
- package/dist/types/core/agent/coverage/timeLimitFacts.d.ts +57 -0
- package/dist/types/core/agent/coverage/timeLimitFacts.d.ts.map +1 -0
- package/dist/types/core/agent/coverage/timeLimits.d.ts +47 -0
- package/dist/types/core/agent/coverage/timeLimits.d.ts.map +1 -0
- package/dist/types/core/agent/evidence/evidenceIndex.d.ts +25 -2
- package/dist/types/core/agent/evidence/evidenceIndex.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/gate.d.ts +7 -0
- package/dist/types/core/agent/evidence/gate.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/normalize.d.ts +0 -34
- package/dist/types/core/agent/evidence/normalize.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/types.d.ts +12 -1
- package/dist/types/core/agent/evidence/types.d.ts.map +1 -1
- package/dist/types/core/agent/findings/ledger.d.ts.map +1 -1
- package/dist/types/core/agent/findings/types.d.ts +2 -1
- package/dist/types/core/agent/findings/types.d.ts.map +1 -1
- package/dist/types/core/agent/honesty/mounts.d.ts +25 -0
- package/dist/types/core/agent/honesty/mounts.d.ts.map +1 -1
- package/dist/types/core/agent/results/subflow.d.ts +34 -2
- package/dist/types/core/agent/results/subflow.d.ts.map +1 -1
- package/dist/types/core/agent/stages/argumentAsk.d.ts +19 -0
- package/dist/types/core/agent/stages/argumentAsk.d.ts.map +1 -1
- package/dist/types/core/agent/stages/callLLM.d.ts +6 -0
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/prepareFinal.d.ts +13 -1
- package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
- package/dist/types/core/agent/stages/route.d.ts +29 -1
- package/dist/types/core/agent/stages/route.d.ts.map +1 -1
- package/dist/types/core/agent/stages/seed.d.ts +23 -0
- package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
- package/dist/types/core/agent/stages/timeLayer.d.ts +95 -0
- package/dist/types/core/agent/stages/timeLayer.d.ts.map +1 -0
- package/dist/types/core/agent/stages/timeLineage.d.ts +32 -0
- package/dist/types/core/agent/stages/timeLineage.d.ts.map +1 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts +32 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +37 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/inputRequest.d.ts +50 -6
- package/dist/types/core/inputRequest.d.ts.map +1 -1
- package/dist/types/core/messageFrom.d.ts +5 -2
- package/dist/types/core/messageFrom.d.ts.map +1 -1
- package/dist/types/core/runCheckpoint.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts +29 -0
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/core/time/ask.d.ts +127 -0
- package/dist/types/core/time/ask.d.ts.map +1 -0
- package/dist/types/core/time/axis.d.ts +225 -0
- package/dist/types/core/time/axis.d.ts.map +1 -0
- package/dist/types/core/time/bind.d.ts +144 -0
- package/dist/types/core/time/bind.d.ts.map +1 -0
- package/dist/types/core/time/check.d.ts +114 -0
- package/dist/types/core/time/check.d.ts.map +1 -0
- package/dist/types/core/time/checkRecord.d.ts +75 -0
- package/dist/types/core/time/checkRecord.d.ts.map +1 -0
- package/dist/types/core/time/clock.d.ts +184 -0
- package/dist/types/core/time/clock.d.ts.map +1 -0
- package/dist/types/core/time/convert.d.ts +179 -0
- package/dist/types/core/time/convert.d.ts.map +1 -0
- package/dist/types/core/time/drift.d.ts +86 -0
- package/dist/types/core/time/drift.d.ts.map +1 -0
- package/dist/types/core/time/duration.d.ts +72 -0
- package/dist/types/core/time/duration.d.ts.map +1 -0
- package/dist/types/core/time/forms.d.ts +85 -0
- package/dist/types/core/time/forms.d.ts.map +1 -0
- package/dist/types/core/time/instant.d.ts +76 -0
- package/dist/types/core/time/instant.d.ts.map +1 -0
- package/dist/types/core/time/periodForm.d.ts +185 -0
- package/dist/types/core/time/periodForm.d.ts.map +1 -0
- package/dist/types/core/time/present.d.ts +108 -0
- package/dist/types/core/time/present.d.ts.map +1 -0
- package/dist/types/core/time/range.d.ts +128 -0
- package/dist/types/core/time/range.d.ts.map +1 -0
- package/dist/types/core/time/reader.d.ts +163 -0
- package/dist/types/core/time/reader.d.ts.map +1 -0
- package/dist/types/core/time/readers/english.d.ts +100 -0
- package/dist/types/core/time/readers/english.d.ts.map +1 -0
- package/dist/types/core/time/readingAsk.d.ts +46 -0
- package/dist/types/core/time/readingAsk.d.ts.map +1 -0
- package/dist/types/core/time/resolve.d.ts +104 -0
- package/dist/types/core/time/resolve.d.ts.map +1 -0
- package/dist/types/core/time/resolveRecord.d.ts +161 -0
- package/dist/types/core/time/resolveRecord.d.ts.map +1 -0
- package/dist/types/core/time/rows.d.ts +298 -0
- package/dist/types/core/time/rows.d.ts.map +1 -0
- package/dist/types/core/time/rowsBuild.d.ts +83 -0
- package/dist/types/core/time/rowsBuild.d.ts.map +1 -0
- package/dist/types/core/time/textForms.d.ts +54 -0
- package/dist/types/core/time/textForms.d.ts.map +1 -0
- package/dist/types/core/time/windows.d.ts +114 -0
- package/dist/types/core/time/windows.d.ts.map +1 -0
- package/dist/types/core/time/wire.d.ts +64 -0
- package/dist/types/core/time/wire.d.ts.map +1 -0
- package/dist/types/core/time/zone.d.ts +116 -0
- package/dist/types/core/time/zone.d.ts.map +1 -0
- package/dist/types/core/tools.d.ts +26 -4
- package/dist/types/core/tools.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +16 -2
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/index.d.ts +13 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/answer-account/facts/howSure.d.ts.map +1 -1
- package/dist/types/lib/answer-account/templates.d.ts +3 -0
- package/dist/types/lib/answer-account/templates.d.ts.map +1 -1
- package/dist/types/lib/mcp/elicitation.d.ts +85 -0
- package/dist/types/lib/mcp/elicitation.d.ts.map +1 -0
- package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
- package/dist/types/lib/mcp/mockMcpClient.d.ts +9 -1
- package/dist/types/lib/mcp/mockMcpClient.d.ts.map +1 -1
- package/dist/types/lib/mcp/toolExtras.d.ts +21 -2
- package/dist/types/lib/mcp/toolExtras.d.ts.map +1 -1
- package/dist/types/lib/mcp/types.d.ts +8 -0
- package/dist/types/lib/mcp/types.d.ts.map +1 -1
- package/dist/types/lib/time-travel/receipt.d.ts +1 -1
- package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
- package/dist/types/lib/time-travel/servedView.d.ts +1 -1
- package/dist/types/lib/time-travel/servedView.d.ts.map +1 -1
- package/dist/types/locales/index.d.ts +6 -0
- package/dist/types/locales/index.d.ts.map +1 -1
- package/dist/types/locales/timeAsk.d.ts +30 -0
- package/dist/types/locales/timeAsk.d.ts.map +1 -0
- package/dist/types/recorders/core/resilienceHooks.d.ts.map +1 -1
- package/dist/types/resilience/statedWait.d.ts +23 -0
- package/dist/types/resilience/statedWait.d.ts.map +1 -0
- package/dist/types/resilience/withRetry.d.ts +13 -2
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/artifacts/timeAxis.js +0 -218
- package/dist/artifacts/timeAxis.js.map +0 -1
- package/dist/esm/artifacts/timeAxis.d.ts +0 -114
- package/dist/esm/artifacts/timeAxis.js +0 -212
- package/dist/esm/artifacts/timeAxis.js.map +0 -1
- package/dist/types/artifacts/timeAxis.d.ts +0 -115
- 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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"}
|