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,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/time/reader — the port a strategy reads a person's words through, and
|
|
3
|
+
* the checks every reading passes before anything resolves it.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: port + adapter (Duckling's value/resolution split). A strategy
|
|
6
|
+
* TOKENIZES: it returns the parts it sees and the verbatim quote,
|
|
7
|
+
* never an instant, never a date order, never a zone. Everything
|
|
8
|
+
* that turns parts into instants is `resolve.ts`'s, the same way for
|
|
9
|
+
* every strategy (time design § 5.1).
|
|
10
|
+
* Role: core/ leaf (the time layer). Imports nothing. The builder's
|
|
11
|
+
* `.time({ reader })` checks a reader through {@link readerIssue};
|
|
12
|
+
* seed checks what it returned through {@link checkReading}.
|
|
13
|
+
* Emits: N/A.
|
|
14
|
+
*
|
|
15
|
+
* ## What is checked — shape, never meaning
|
|
16
|
+
*
|
|
17
|
+
* | Check | A failure |
|
|
18
|
+
* |-------|-----------|
|
|
19
|
+
* | the reader: `id`, `version`, `locale` non-empty strings, `kind` `'rule'` or `'model'`, `read` a function | refused at build |
|
|
20
|
+
* | the reading: `{ mentions: [] }`, at most {@link MAX_MENTIONS} | the reader broke its port — the run fails, naming it |
|
|
21
|
+
* | each mention's `quote`: a non-empty VERBATIM substring of the text read | the mention is refused (`quote-not-in-text`) and keeps no text |
|
|
22
|
+
* | each mention's parts: the {@link TimeParts} shape, every field in range, no unknown key, at most {@link MAX_PARSES} | the mention is refused (`malformed`) |
|
|
23
|
+
*
|
|
24
|
+
* None of these checks what a word MEANS: a model that reads "yesterday" as
|
|
25
|
+
* the wrong day passes every one of them. That is why NO reading is ever the
|
|
26
|
+
* person's words — a `rule` reading as much as a `model` one (the owner's
|
|
27
|
+
* decision "Always confirm", time design TQ29): a reading only PROPOSES a
|
|
28
|
+
* window, offered through the time ask with its zone, and only what the
|
|
29
|
+
* person picks or types in that form is theirs (`rowsBuild.ts` ·
|
|
30
|
+
* `timeReadingRows`).
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* const fixture: TimeReader = {
|
|
35
|
+
* id: 'fixture', version: '1.0.0', locale: 'en-US', kind: 'rule',
|
|
36
|
+
* read: () => ({ mentions: [{ quote: '10/09/26', parses: [{ date: { kind: 'numeric', fields: [10, 9, 26] } }] }] }),
|
|
37
|
+
* };
|
|
38
|
+
* readerIssue(fixture); // undefined — a well-formed reader
|
|
39
|
+
* checkReading('errors on 10/09/26', fixture.read('', { locale: 'en-US' }), 'fixture');
|
|
40
|
+
* // [{ quote: '10/09/26', parses: [{ date: { kind: 'numeric', fields: [10, 9, 26] } }] }]
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
/** What a reader is told besides the text: a hint for its tokenizer — no clock, no zone, no map. */
|
|
44
|
+
export interface TimeReadContext {
|
|
45
|
+
readonly locale: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A strategy that reads a person's words into zone-less PARTS (time design
|
|
49
|
+
* § 5.1). Armed with `.time({ reader })`; there is no default. It runs once
|
|
50
|
+
* per turn, at the seed, on the message a person wrote, and never again for
|
|
51
|
+
* that message — a resume and a retry read the recorded reading.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* const reader: TimeReader = {
|
|
56
|
+
* id: 'my-app/english', version: '1.2.0', locale: 'en-US', kind: 'rule',
|
|
57
|
+
* read: (text) => ({ mentions: tokenize(text) }),
|
|
58
|
+
* };
|
|
59
|
+
* Agent.create({ provider, model }).time({ zone: 'UTC', reader }).build();
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export interface TimeReader {
|
|
63
|
+
/** Recorded on every reading with the version, e.g. `'agentfootprint/english'`. */
|
|
64
|
+
readonly id: string;
|
|
65
|
+
readonly version: string;
|
|
66
|
+
/** The language it reads, e.g. `'en-US'`. */
|
|
67
|
+
readonly locale: string;
|
|
68
|
+
/**
|
|
69
|
+
* `'rule'`: deterministic over the text. `'model'`: an LLM or other learned
|
|
70
|
+
* reader. Neither kind's reading is ever the person's words: a `rule`
|
|
71
|
+
* reading is offered through the time ask to confirm; a `model` reading
|
|
72
|
+
* fills as a reading (`derived-from-reading`) until the person confirms it.
|
|
73
|
+
*/
|
|
74
|
+
readonly kind: 'rule' | 'model';
|
|
75
|
+
read(text: string, context: TimeReadContext): TimeReading | Promise<TimeReading>;
|
|
76
|
+
}
|
|
77
|
+
/** What a reader returns: every time mention it found, in the order the text wrote them. */
|
|
78
|
+
export interface TimeReading {
|
|
79
|
+
readonly mentions: readonly TimeMention[];
|
|
80
|
+
}
|
|
81
|
+
/** One mention of a time in the text. */
|
|
82
|
+
export interface TimeMention {
|
|
83
|
+
/** A VERBATIM substring of the text — the library checks it. */
|
|
84
|
+
readonly quote: string;
|
|
85
|
+
/** Usually one; more only when the TOKENS split two ways. Empty when `problem` is set. */
|
|
86
|
+
readonly parses: readonly TimeParts[];
|
|
87
|
+
/** The reader saw a time here and could not read it. */
|
|
88
|
+
readonly problem?: 'unreadable';
|
|
89
|
+
}
|
|
90
|
+
/** A date as the text wrote it. */
|
|
91
|
+
export type TimeDate =
|
|
92
|
+
/** `'10/09/26'` → `fields: [10, 9, 26]` — the ORDER is not decided by the reader. Two or three fields. */
|
|
93
|
+
{
|
|
94
|
+
readonly kind: 'numeric';
|
|
95
|
+
readonly fields: readonly number[];
|
|
96
|
+
readonly yearDigits?: 2 | 4;
|
|
97
|
+
}
|
|
98
|
+
/** ISO or a named month: the text fixes the order. */
|
|
99
|
+
| {
|
|
100
|
+
readonly kind: 'fixed';
|
|
101
|
+
readonly year?: number;
|
|
102
|
+
readonly month: number;
|
|
103
|
+
readonly day: number;
|
|
104
|
+
};
|
|
105
|
+
/** A wall-clock time as the text wrote it — no zone. */
|
|
106
|
+
export interface TimeWall {
|
|
107
|
+
readonly h: number;
|
|
108
|
+
readonly m?: number;
|
|
109
|
+
readonly s?: number;
|
|
110
|
+
readonly meridiem?: 'am' | 'pm';
|
|
111
|
+
}
|
|
112
|
+
/** A time said relative to the message's moment. */
|
|
113
|
+
export type TimeRelative =
|
|
114
|
+
/** `'yesterday'` = `{ unit: 'day', offset: -1 }`. */
|
|
115
|
+
{
|
|
116
|
+
readonly unit: 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';
|
|
117
|
+
readonly offset: number;
|
|
118
|
+
}
|
|
119
|
+
/** `'last 40 minutes'` = `{ unit: 'minute', count: 40 }` — a look-back. */
|
|
120
|
+
| {
|
|
121
|
+
readonly unit: 'second' | 'minute' | 'hour' | 'day' | 'week';
|
|
122
|
+
readonly count: number;
|
|
123
|
+
};
|
|
124
|
+
/** Zone-less parts, in the order the text wrote them. Every field present was said. */
|
|
125
|
+
export interface TimeParts {
|
|
126
|
+
readonly date?: TimeDate;
|
|
127
|
+
readonly wall?: TimeWall;
|
|
128
|
+
/** As written: `'PST'`, `'-07:00'`, `'America/Los_Angeles'` — `resolve.ts` maps it. */
|
|
129
|
+
readonly zoneToken?: string;
|
|
130
|
+
readonly relative?: TimeRelative;
|
|
131
|
+
/** `'morning'` — a KEY into a table, never hours. */
|
|
132
|
+
readonly partOfDay?: string;
|
|
133
|
+
/** `'the hour before that'` — resolved from the recorded previous window only. */
|
|
134
|
+
readonly anchor?: 'previous';
|
|
135
|
+
/** `'8 AM to 8:40 AM'`. */
|
|
136
|
+
readonly rangeOf?: readonly [TimeParts, TimeParts];
|
|
137
|
+
}
|
|
138
|
+
/** The most mentions one reading may hold — a bound on the record, not a guess at language. */
|
|
139
|
+
export declare const MAX_MENTIONS = 16;
|
|
140
|
+
/** The most parses one mention may hold. */
|
|
141
|
+
export declare const MAX_PARSES = 4;
|
|
142
|
+
/** Why `value` is not a {@link TimeReader}, or `undefined` when it is one. */
|
|
143
|
+
export declare function readerIssue(value: unknown): string | undefined;
|
|
144
|
+
/** Why one mention was refused. A refused mention keeps no text: its quote is not the person's words. */
|
|
145
|
+
export type MentionRefusal = 'quote-not-in-text' | 'malformed';
|
|
146
|
+
/** One mention after the checks. */
|
|
147
|
+
export type CheckedMention = {
|
|
148
|
+
readonly quote: string;
|
|
149
|
+
readonly parses: readonly TimeParts[];
|
|
150
|
+
readonly problem?: 'unreadable';
|
|
151
|
+
} | {
|
|
152
|
+
readonly refused: MentionRefusal;
|
|
153
|
+
};
|
|
154
|
+
/** Whether `value` is a well-formed {@link TimeParts} — `nested` refuses a range inside a range side. */
|
|
155
|
+
export declare function isTimeParts(value: unknown, nested?: boolean): value is TimeParts;
|
|
156
|
+
/**
|
|
157
|
+
* A reader's answer for `text`, checked: one {@link CheckedMention} per
|
|
158
|
+
* mention, in order. Throws a `TypeError` naming the reader when the answer
|
|
159
|
+
* is not `{ mentions: [] }` (at most {@link MAX_MENTIONS}) — the reader
|
|
160
|
+
* broke its port, and a run is never read by a guess at what it meant.
|
|
161
|
+
*/
|
|
162
|
+
export declare function checkReading(text: string, value: unknown, readerId: string): CheckedMention[];
|
|
163
|
+
//# sourceMappingURL=reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../../src/core/time/reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAIH,oGAAoG;AACpG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU;IACzB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAClF;AAED,4FAA4F;AAC5F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;CAC3C;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC;AAED,mCAAmC;AACnC,MAAM,MAAM,QAAQ;AAClB,0GAA0G;AACxG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CAAE;AAC/F,sDAAsD;GACpD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,wDAAwD;AACxD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACjC;AAED,oDAAoD;AACpD,MAAM,MAAM,YAAY;AACtB,qDAAqD;AACnD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AACH,2EAA2E;GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7F,uFAAuF;AACvF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,uFAAuF;IACvF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CACpD;AAID,+FAA+F;AAC/F,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,4CAA4C;AAC5C,eAAO,MAAM,UAAU,IAAI,CAAC;AAuB5B,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAa9D;AAID,yGAAyG;AACzG,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAE/D,oCAAoC;AACpC,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC,GACD;IAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AA0EzC,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,KAAK,IAAI,SAAS,CAe9E;AA0BD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAS7F"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/time/readers/english — the library's careful English reader (time
|
|
3
|
+
* design § 5.3): a tokenizer over a small, closed set of phrases, and
|
|
4
|
+
* "unreadable" for every other time phrase it recognises.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: Strategy behind the `TimeReader` port (`../reader.ts`). It
|
|
7
|
+
* TOKENIZES only: it returns the parts it sees and the verbatim
|
|
8
|
+
* quote. It never resolves an instant, never applies a date order,
|
|
9
|
+
* never maps a zone abbreviation and never refuses a future date —
|
|
10
|
+
* all of that is `resolve.ts`'s, the policy's or the ask's.
|
|
11
|
+
* Role: core/ leaf (the time layer). Imports only the port's types. Armed
|
|
12
|
+
* by the app: `.time({ reader: englishTimeReader() })` — there is no
|
|
13
|
+
* default reader.
|
|
14
|
+
* Emits: N/A.
|
|
15
|
+
*
|
|
16
|
+
* ## What it reads (the v1 rows of § 5.3)
|
|
17
|
+
*
|
|
18
|
+
* | Phrase | Example | Parts |
|
|
19
|
+
* |--------|---------|-------|
|
|
20
|
+
* | an ISO date or instant | `2026-10-09`, `2026-10-09T08:00-07:00` | `date: fixed`, `wall`, `zoneToken` |
|
|
21
|
+
* | a numeric date | `10/09/26`, `10/9` | `date: numeric` — the ORDER is not decided here |
|
|
22
|
+
* | a clock time | `8 AM`, `8:40`, `20:40`, `8:40 p.m.` | `wall` (a bare `8` is a time only as a range's first side: `8 to 9 AM`) |
|
|
23
|
+
* | a range between two of the above | `8 AM to 8:40 AM`, `08:00–08:40`, `between 8 and 9 AM` | `rangeOf` (a day or zone said once for both sides is the whole mention's) |
|
|
24
|
+
* | a zone after a time or date | `America/Los_Angeles`, `UTC-07:00`, `PST` | `zoneToken`, as written (an abbreviation is ASKED — v1 ships no map) |
|
|
25
|
+
* | a day word | today, yesterday, tomorrow | `relative: { unit: 'day', offset }` |
|
|
26
|
+
* | a relative span from now | last 40 minutes, past 2 hours, the last hour, the past week | `relative: { unit, count }` — a look-back in minutes, hours, days or weeks |
|
|
27
|
+
*
|
|
28
|
+
* ## What it says "unreadable" for — never a partial reading
|
|
29
|
+
*
|
|
30
|
+
* Parts of the day (`yesterday morning`, `tonight`, `noon`), calendar spans
|
|
31
|
+
* (`last week`, `this month`), week days and named months (`Friday`,
|
|
32
|
+
* `Oct 9`), `N hours ago`, spans in words (`last two hours`), in a unit it
|
|
33
|
+
* does not read (`last 30 seconds`, `last 3 months`) or said with `previous`
|
|
34
|
+
* (`previous 7 days` — often relative to another window), a look-ahead (`next 2 hours`), an
|
|
35
|
+
* ordinal day (`the 9th`), `8 o'clock`, and any v1 phrase a modifier changes
|
|
36
|
+
* (`since 8 AM`, `before yesterday`, `around 8:40`, `earlier today`,
|
|
37
|
+
* `8 AM to now`, `past 8 PM`, `8 AM-ish`, `from 3 PM yesterday` with no `to`) and
|
|
38
|
+
* a meridiem the number contradicts (`13:00 PM`). Such a phrase is ONE mention
|
|
39
|
+
* with `problem: 'unreadable'`, quoting the whole phrase: reading `yesterday`
|
|
40
|
+
* out of `yesterday morning` would silently widen what the person said.
|
|
41
|
+
*
|
|
42
|
+
* ## It only PROPOSES — the person confirms (the owner's decision "Always confirm")
|
|
43
|
+
*
|
|
44
|
+
* Nothing this reader reads is ever filed as the person's words. Seven review
|
|
45
|
+
* rounds each found the next English spelling a word list, an allow-list or a
|
|
46
|
+
* position rule missed (a zone named in words, a look-back tied to an event,
|
|
47
|
+
* an open end, a half-read range), so the owner decided (2026-09-30, time
|
|
48
|
+
* design TQ29): every reading of a chat message is a PROPOSAL, offered
|
|
49
|
+
* through the time ask pre-filled and editable, with its window AND its zone
|
|
50
|
+
* ("I read “last 2 hours” as … in America/Los_Angeles — is that right?").
|
|
51
|
+
* Only what the person picks or types in that form is theirs. The library
|
|
52
|
+
* owns the law (`../rowsBuild.ts` · `timeReadingRows`), so this reader returns
|
|
53
|
+
* parts and quotes only — no confirm flag, no leftover list, no allow-list.
|
|
54
|
+
* A form may later skip the click only when a registered benchmark shows it
|
|
55
|
+
* is always read right (TQ29's growth rule).
|
|
56
|
+
*
|
|
57
|
+
* A numeric date the tokens could split two ways stays ONE parse — `10/09/26`
|
|
58
|
+
* is three numbers; which is the month is the policy's or the person's.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const reader = englishTimeReader();
|
|
63
|
+
* reader.read('errors on 10/09/26 8 AM to 8:40 AM PST', { locale: 'en-US' });
|
|
64
|
+
* // { mentions: [{ quote: '10/09/26 8 AM to 8:40 AM PST', parses: [{
|
|
65
|
+
* // date: { kind: 'numeric', fields: [10, 9, 26], yearDigits: 2 }, zoneToken: 'PST',
|
|
66
|
+
* // rangeOf: [{ wall: { h: 8, meridiem: 'am' } }, { wall: { h: 8, m: 40, meridiem: 'am' } }] }] }] }
|
|
67
|
+
* reader.read('errors in the last 2 hours', { locale: 'en-US' });
|
|
68
|
+
* // { mentions: [{ quote: 'last 2 hours', parses: [{ relative: { unit: 'hour', count: 2 } }] }] }
|
|
69
|
+
* reader.read('what failed yesterday morning?', { locale: 'en-US' });
|
|
70
|
+
* // { mentions: [{ quote: 'yesterday morning', parses: [], problem: 'unreadable' }] }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
import { type TimeReader } from '../reader.js';
|
|
74
|
+
/** The reader's recorded identity — on every `time-reading` row with its version. */
|
|
75
|
+
export declare const ENGLISH_TIME_READER_ID = "agentfootprint/english";
|
|
76
|
+
/** Raised whenever what the reader returns for some text changes. */
|
|
77
|
+
export declare const ENGLISH_TIME_READER_VERSION = "1.0.0";
|
|
78
|
+
/** Options for {@link englishTimeReader}. */
|
|
79
|
+
export interface EnglishTimeReaderOptions {
|
|
80
|
+
/**
|
|
81
|
+
* The language tag the time ask's labels are rendered in (`present.ts`),
|
|
82
|
+
* e.g. `'en-GB'`. Default `'en-US'`. It never decides a date order — that is
|
|
83
|
+
* the policy's (`dateOrder`) or the person's.
|
|
84
|
+
*/
|
|
85
|
+
readonly locale?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The library's careful English reader: a `kind: 'rule'` tokenizer over the
|
|
89
|
+
* v1 phrases of the time design's § 5.3, "unreadable" for every other time
|
|
90
|
+
* phrase it recognises. No dependency; deterministic over the text.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* Agent.create({ provider, model })
|
|
95
|
+
* .time({ zone: 'America/Los_Angeles', reader: englishTimeReader() })
|
|
96
|
+
* .build();
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function englishTimeReader(options?: EnglishTimeReaderOptions): TimeReader;
|
|
100
|
+
//# sourceMappingURL=english.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"english.d.ts","sourceRoot":"","sources":["../../../../../src/core/time/readers/english.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAEH,OAAO,EAML,KAAK,UAAU,EAIhB,MAAM,cAAc,CAAC;AAItB,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,qEAAqE;AACrE,eAAO,MAAM,2BAA2B,UAAU,CAAC;AA+iBnD,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,UAAU,CAQpF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/time/readingAsk — the choices an OPEN reading offers (time design
|
|
3
|
+
* § 6.1, § 6.3): the one field a `time-reading` row whose choice is `open`
|
|
4
|
+
* needs.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: a pure builder over the row — the candidates as labelled choices,
|
|
7
|
+
* a zone asked as `format: 'zone'`, a `model` reading offered to
|
|
8
|
+
* confirm. The judge of the answer stays `ask.ts` ·
|
|
9
|
+
* `checkTimeAnswer`.
|
|
10
|
+
* Role: core/ leaf (the time layer). Split from `ask.ts` because its
|
|
11
|
+
* labels render through `present.ts` (`presentRange`), and `ask.ts`
|
|
12
|
+
* is on the resume door's SYNCHRONOUS path (`core/inputRequest.ts`)
|
|
13
|
+
* while the renderer loads only under `.time()` — the
|
|
14
|
+
* optional-family law of docs-next's site budget.
|
|
15
|
+
* Emits: N/A.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const ask = timeAskOf(row, defaultTimeAskMessages);
|
|
20
|
+
* ask?.field.format; // 'time-range' — its `enum` the candidates left
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import { type TimeAskMessages, type TimeFormat } from './ask.js';
|
|
24
|
+
import type { TimeReadingRow } from './rows.js';
|
|
25
|
+
/** A time field built from a reading — the fields of `core/inputRequest.ts` · `InputField` it sets. */
|
|
26
|
+
export interface TimeAskField {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly type: 'string';
|
|
29
|
+
readonly required: true;
|
|
30
|
+
readonly format: TimeFormat;
|
|
31
|
+
readonly enum?: readonly string[];
|
|
32
|
+
readonly labels?: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
/** One question about one mention: the question and its field. */
|
|
35
|
+
export interface TimeAsk {
|
|
36
|
+
readonly question: string;
|
|
37
|
+
readonly field: TimeAskField;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The ask a `time-reading` row needs, or `undefined` when its reading is
|
|
41
|
+
* settled (`only`, `policy`) or cannot be asked about (`none`, a refused
|
|
42
|
+
* mention). `messages` is the whole catalog (the caller composes the app's
|
|
43
|
+
* overrides over `defaultTimeAskMessages`); `id` names the field.
|
|
44
|
+
*/
|
|
45
|
+
export declare function timeAskOf(row: TimeReadingRow, messages: TimeAskMessages, id?: string): TimeAsk | undefined;
|
|
46
|
+
//# sourceMappingURL=readingAsk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readingAsk.d.ts","sourceRoot":"","sources":["../../../../src/core/time/readingAsk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAuB,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAKhD,uGAAuG;AACvG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,kEAAkE;AAClE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAWD;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,eAAe,EACzB,EAAE,SAAS,GACV,OAAO,GAAG,SAAS,CA+CrB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/time/resolve — parts + clock + policy → every candidate window, and
|
|
3
|
+
* the one rule for which candidate a reading settles on.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: the hard, universal half of reading time, written once (time
|
|
6
|
+
* design § 5.1): a strategy tokenizes (`reader.ts`); this module
|
|
7
|
+
* resolves, the same way for every strategy. It is the one place
|
|
8
|
+
* zone arithmetic meets the person's words.
|
|
9
|
+
* Role: core/ leaf (the time layer). Imports `instant.ts`, `zone.ts`,
|
|
10
|
+
* `range.ts`, `present.ts` (the `Grain` word), `reader.ts` (the
|
|
11
|
+
* parts) and `resolveRecord.ts` (the shapes, the policy and the
|
|
12
|
+
* record's checks — split out for the synchronous doors, and
|
|
13
|
+
* re-exported here). `rowsBuild.ts` · `timeReadingRows` calls it at the
|
|
14
|
+
* seed, which loads it only under `.time()`.
|
|
15
|
+
* Emits: N/A.
|
|
16
|
+
*
|
|
17
|
+
* ## Every candidate, then the policy (§ 5.1, § 11)
|
|
18
|
+
*
|
|
19
|
+
* {@link resolveMention} writes EVERY reading of the parts, each tagged with
|
|
20
|
+
* how it read them ({@link ReadingTags}):
|
|
21
|
+
*
|
|
22
|
+
* | Parts | Candidates |
|
|
23
|
+
* |-------|------------|
|
|
24
|
+
* | a numeric date `10/09/26` | up to three: `MDY`, `DMY`, `YMD` — each checked as a calendar day |
|
|
25
|
+
* | a numeric date of two fields `10/09` | `MDY` and `DMY`, each for the clock's year and the one before |
|
|
26
|
+
* | a date with no year | the clock's year (`current`) and the one before (`previous`) |
|
|
27
|
+
* | a two-digit year `26` | the clock's century, noted `century-implied` |
|
|
28
|
+
* | a clock time with no meridiem, hour 1–12 (`8:40`) | am and pm |
|
|
29
|
+
* | a wall time the clocks go back through (`01:30`) | both instants, each noted `dst-overlap` |
|
|
30
|
+
* | a wall time the clocks skip (`02:30`) | both readings Temporal names, each noted `dst-gap` |
|
|
31
|
+
* | a day word (`{ day, offset: -1 }`) | the calendar day in the zone, anchored on the clock |
|
|
32
|
+
* | a span (`{ minute, count: 40 }`) | a look-back until the clock's `now` |
|
|
33
|
+
* | a range | one per combination of its sides that agree on date order and year, `from` before `to` |
|
|
34
|
+
*
|
|
35
|
+
* The fixed laws: a time is read to the END OF ITS GRAIN ("to 8:40" is
|
|
36
|
+
* `[08:00, 08:41)`, noted `end-of-grain`); a day starts at its first instant
|
|
37
|
+
* (Temporal's `startOfDay`: a midnight the clocks skip starts the day at the
|
|
38
|
+
* first wall time that exists); a zone the person did not say is the clock's;
|
|
39
|
+
* a zone they said is an IANA name or a numeric offset — any other token (an
|
|
40
|
+
* abbreviation such as `PST`) resolves nothing and is ASKED (no map ships in
|
|
41
|
+
* v1). Parts v1 does not resolve — a part of the day, a calendar span other
|
|
42
|
+
* than a day, a window anchored on the previous one — are named
|
|
43
|
+
* `unsupported`, never guessed.
|
|
44
|
+
*
|
|
45
|
+
* {@link chooseReading} then applies the app's policy (`dateOrder`, `year`)
|
|
46
|
+
* and names what is left: one window (`only`, or `policy` when the policy
|
|
47
|
+
* removed a reading — a choice nobody said, recorded), several (`open`, with
|
|
48
|
+
* the questions an ask must settle), or none. A `kind: 'model'` reader's
|
|
49
|
+
* window is never settled by the library: it stays `open` until the person
|
|
50
|
+
* confirms it (§ 5.5), and its candidates carry `said: []`. Since the
|
|
51
|
+
* owner's decision "Always confirm" (time design TQ29) neither is ANY
|
|
52
|
+
* reading the record files: `rowsBuild.ts` · `timeReadingRows` passes
|
|
53
|
+
* `confirm: true` for every reader's reading, so only the person's answer
|
|
54
|
+
* in the time ask settles a window. The `confirm` parameter's default
|
|
55
|
+
* (`kind === 'model'`) is the unit's, for a caller that resolves parts
|
|
56
|
+
* outside the record.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* const clock = { now: '2026-10-09T15:40:00Z', zone: 'America/Los_Angeles' };
|
|
61
|
+
* const rule = { id: 'fixture', kind: 'rule' as const };
|
|
62
|
+
* const res = resolveMention([{ date: { kind: 'numeric', fields: [10, 9, 26] } }], clock, rule);
|
|
63
|
+
* res.candidates.map((c) => c.reading.dateOrder); // ['MDY', 'DMY', 'YMD']
|
|
64
|
+
* chooseReading(res, DEFAULT_TIME_POLICY, 'rule');
|
|
65
|
+
* // { by: 'open', remaining: [0, 1, 2], open: ['date-order'] }
|
|
66
|
+
* chooseReading(res, { dateOrder: 'DMY', year: 'ask' }, 'rule');
|
|
67
|
+
* // { by: 'policy', candidate: 1, policy: { dateOrder: 'DMY' } }
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
import { type ZoneName } from './zone.js';
|
|
71
|
+
import type { TimeParts } from './reader.js';
|
|
72
|
+
import { type MentionResolution, type ReadingChoice, type ResolveClock, type TimePolicy } from './resolveRecord.js';
|
|
73
|
+
export { candidateIsWellFormed, choiceIsWellFormed, DEFAULT_TIME_POLICY, readPolicy, } from './resolveRecord.js';
|
|
74
|
+
export type { MentionResolution, OpenQuestion, ReadingChoice, ReadingTags, ResolveClock, ResolvedWindow, TimeCandidate, TimeNote, TimePart, TimePolicy, TimeWindow, } from './resolveRecord.js';
|
|
75
|
+
/**
|
|
76
|
+
* The parts with every zone token this layer cannot read (an abbreviation such
|
|
77
|
+
* as `PST`) replaced by the zone the PERSON named when asked (§ 6.3) — the
|
|
78
|
+
* whole mention's and each range side's. A token it can read is kept.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* withZoneAnswered([{ wall: { h: 8, meridiem: 'am' }, zoneToken: 'PST' }], 'America/Los_Angeles');
|
|
83
|
+
* // [{ wall: { h: 8, meridiem: 'am' }, zoneToken: 'America/Los_Angeles' }]
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function withZoneAnswered(parses: readonly TimeParts[], zone: ZoneName): TimeParts[];
|
|
87
|
+
/**
|
|
88
|
+
* Every candidate window of one mention's parses, resolved against the
|
|
89
|
+
* clock. A reading the person must confirm (`confirm: true` — every reading
|
|
90
|
+
* the record files, TQ29; a `model` reader's by default) carries `said: []`.
|
|
91
|
+
*/
|
|
92
|
+
export declare function resolveMention(parses: readonly TimeParts[], clock: ResolveClock, reader: {
|
|
93
|
+
readonly id: string;
|
|
94
|
+
readonly kind: 'rule' | 'model';
|
|
95
|
+
}, confirm?: boolean): MentionResolution;
|
|
96
|
+
/**
|
|
97
|
+
* How one mention settles under the app's policy (§ 5.1, § 11). The policy
|
|
98
|
+
* only removes readings; it never adds one. A DST choice, a meridiem, a
|
|
99
|
+
* zone the person named that is no zone, and a reading to confirm
|
|
100
|
+
* (`confirm` — every reading the record files, TQ29) are never settled here
|
|
101
|
+
* — they stay `open` for the person.
|
|
102
|
+
*/
|
|
103
|
+
export declare function chooseReading(resolution: MentionResolution, policy: TimePolicy, kind: 'rule' | 'model', problem?: 'unreadable', confirm?: boolean): ReadingChoice;
|
|
104
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../../src/core/time/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAIH,OAAO,EAQL,KAAK,QAAQ,EACd,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AACvD,OAAO,EAEL,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EAElB,KAAK,YAAY,EAIjB,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,GACX,MAAM,oBAAoB,CAAC;AA6B5B;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,CAW1F;AAqfD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAChE,OAAO,GAAE,OAAiC,GACzC,iBAAiB,CA4BnB;AAwCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,GAAE,OAA0B,GAClC,aAAa,CAsCf"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/time/resolveRecord — what the resolver writes down: the candidate and
|
|
3
|
+
* choice shapes, the app's policy (read at `.time()`), and the checks the
|
|
4
|
+
* checkpoint door runs on a filed reading.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: the record half of `resolve.ts`, split from the resolver so the
|
|
7
|
+
* SYNCHRONOUS doors — `.time({ policy })` (`clock.ts` ·
|
|
8
|
+
* `readTimeOptions`) and `validateCheckpoint` (`rows.ts` ·
|
|
9
|
+
* `timeRowIsWellFormed`) — reach the shapes and their checks without
|
|
10
|
+
* the resolver, which only an armed seed loads (`agent/stages/
|
|
11
|
+
* timeLayer.ts`, through `import()`: the optional-family law of
|
|
12
|
+
* docs-next's site budget). `resolve.ts` re-exports everything here.
|
|
13
|
+
* Role: core/ leaf (the time layer). Imports `range.ts` and `zone.ts`
|
|
14
|
+
* (the window check) only.
|
|
15
|
+
* Emits: N/A.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* readPolicy({ dateOrder: 'DMY' }); // { dateOrder: 'DMY', year: 'ask' }
|
|
20
|
+
* candidateIsWellFormed({ kind: 'range', range: { from: 'x', to: 'y' } }); // false
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import type { InstantText } from './instant.js';
|
|
24
|
+
import type { DurationText } from './duration.js';
|
|
25
|
+
import { type TimeRange } from './range.js';
|
|
26
|
+
import { type ZoneName } from './zone.js';
|
|
27
|
+
import type { Grain } from './present.js';
|
|
28
|
+
/** A part of a time a person can say. `duration`: the length of a look-back ("last 40 minutes"). */
|
|
29
|
+
export type TimePart = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'meridiem' | 'zone' | 'duration';
|
|
30
|
+
/** What was asked, before the clock is applied. */
|
|
31
|
+
export type TimeWindow = {
|
|
32
|
+
readonly kind: 'range';
|
|
33
|
+
readonly range: TimeRange;
|
|
34
|
+
}
|
|
35
|
+
/** Always "until the clock's now". */
|
|
36
|
+
| {
|
|
37
|
+
readonly kind: 'lookback';
|
|
38
|
+
readonly duration: DurationText;
|
|
39
|
+
};
|
|
40
|
+
/** A library-written note on how a window was read. */
|
|
41
|
+
export type TimeNote =
|
|
42
|
+
/** The range runs to the end of its last said grain ("to 8:40" → `08:41`). */
|
|
43
|
+
{
|
|
44
|
+
readonly kind: 'end-of-grain';
|
|
45
|
+
}
|
|
46
|
+
/** A wall time the clocks go back through: which of its two instants this is (`end`: which end of a range). */
|
|
47
|
+
| {
|
|
48
|
+
readonly kind: 'dst-overlap';
|
|
49
|
+
readonly which: 'earlier' | 'later';
|
|
50
|
+
readonly end?: 'from' | 'to';
|
|
51
|
+
}
|
|
52
|
+
/** A wall time the clocks skip: which of Temporal's two readings this is. */
|
|
53
|
+
| {
|
|
54
|
+
readonly kind: 'dst-gap';
|
|
55
|
+
readonly which: 'earlier' | 'later';
|
|
56
|
+
readonly end?: 'from' | 'to';
|
|
57
|
+
}
|
|
58
|
+
/** The person said a numeric offset, not a zone: the instants carry it; `zone` is the clock's. */
|
|
59
|
+
| {
|
|
60
|
+
readonly kind: 'offset-said';
|
|
61
|
+
readonly offset: string;
|
|
62
|
+
}
|
|
63
|
+
/** A two-digit year, read in the clock's century. */
|
|
64
|
+
| {
|
|
65
|
+
readonly kind: 'century-implied';
|
|
66
|
+
readonly century: number;
|
|
67
|
+
};
|
|
68
|
+
/** Which reading of the PARTS produced a candidate, so a policy — or an ask — can choose among them. */
|
|
69
|
+
export interface ReadingTags {
|
|
70
|
+
readonly dateOrder?: 'MDY' | 'DMY' | 'YMD';
|
|
71
|
+
/** The meridiem this reading gave a clock time said without one (the `from` end of a range). */
|
|
72
|
+
readonly meridiem?: 'am' | 'pm';
|
|
73
|
+
/** The same, for the `to` end of a range. */
|
|
74
|
+
readonly endMeridiem?: 'am' | 'pm';
|
|
75
|
+
readonly year?: 'said' | 'current' | 'previous';
|
|
76
|
+
}
|
|
77
|
+
/** A window read from words, resolved against the clock (§ 3.2). */
|
|
78
|
+
export interface ResolvedWindow {
|
|
79
|
+
readonly window: TimeWindow;
|
|
80
|
+
/** Always present: a look-back resolved against the clock. Spelled in the offset the person meant. */
|
|
81
|
+
readonly range: TimeRange;
|
|
82
|
+
/** The zone the person meant, else the clock's. */
|
|
83
|
+
readonly zone: ZoneName;
|
|
84
|
+
/** The finest part the person said. */
|
|
85
|
+
readonly grain: Grain;
|
|
86
|
+
/** The parts the person said — empty for a `model` reader's reading (§ 5.5). */
|
|
87
|
+
readonly said: readonly TimePart[];
|
|
88
|
+
/** The parts this module filled: from the clock, the policy's candidates, the century. */
|
|
89
|
+
readonly implied: readonly TimePart[];
|
|
90
|
+
readonly anchor: 'message' | 'previous-window' | 'none';
|
|
91
|
+
readonly reader: {
|
|
92
|
+
readonly id: string;
|
|
93
|
+
readonly kind: 'rule' | 'model';
|
|
94
|
+
};
|
|
95
|
+
readonly notes: readonly TimeNote[];
|
|
96
|
+
}
|
|
97
|
+
/** One candidate — produced here, never by a strategy. */
|
|
98
|
+
export interface TimeCandidate extends ResolvedWindow {
|
|
99
|
+
readonly reading: ReadingTags;
|
|
100
|
+
/** Which of the mention's parses it came from. */
|
|
101
|
+
readonly parse: number;
|
|
102
|
+
}
|
|
103
|
+
/** The v1 policy (§ 11): the two switches with two careful answers. */
|
|
104
|
+
export interface TimePolicy {
|
|
105
|
+
/** `'ask'`: a numeric date's readings become choices. Or the one order this app's people write. */
|
|
106
|
+
readonly dateOrder: 'ask' | 'MDY' | 'DMY' | 'YMD';
|
|
107
|
+
/** `'ask'`: a date said without a year is asked. `'current'`: the clock's year, recorded as assumed. */
|
|
108
|
+
readonly year: 'ask' | 'current';
|
|
109
|
+
}
|
|
110
|
+
/** No silent MDY, no guessed year. */
|
|
111
|
+
export declare const DEFAULT_TIME_POLICY: TimePolicy;
|
|
112
|
+
/** What the clock gives the resolver. */
|
|
113
|
+
export interface ResolveClock {
|
|
114
|
+
readonly now: InstantText;
|
|
115
|
+
readonly zone: ZoneName;
|
|
116
|
+
}
|
|
117
|
+
/** Every candidate of one mention, and what kept a parse from any. */
|
|
118
|
+
export interface MentionResolution {
|
|
119
|
+
readonly candidates: readonly TimeCandidate[];
|
|
120
|
+
/** A zone the person said that names no zone this layer can read (`PST`): the zone must be asked. */
|
|
121
|
+
readonly needsZone: boolean;
|
|
122
|
+
/** Parts v1 does not resolve, named. */
|
|
123
|
+
readonly unsupported: readonly string[];
|
|
124
|
+
}
|
|
125
|
+
/** A question only the person can settle. */
|
|
126
|
+
export type OpenQuestion = 'date-order' | 'year' | 'meridiem' | 'dst' | 'zone' | 'parse' | 'confirm';
|
|
127
|
+
/** How a mention's reading settled — recorded on its `time-reading` row. */
|
|
128
|
+
export type ReadingChoice =
|
|
129
|
+
/** Every candidate left names the same window. */
|
|
130
|
+
{
|
|
131
|
+
readonly by: 'only';
|
|
132
|
+
readonly candidate: number;
|
|
133
|
+
}
|
|
134
|
+
/** The policy removed a reading and one window is left — assumed, recorded. */
|
|
135
|
+
| {
|
|
136
|
+
readonly by: 'policy';
|
|
137
|
+
readonly candidate: number;
|
|
138
|
+
readonly policy: Partial<TimePolicy>;
|
|
139
|
+
}
|
|
140
|
+
/** An ask must settle it (a later step raises it): the candidates left and the questions. */
|
|
141
|
+
| {
|
|
142
|
+
readonly by: 'open';
|
|
143
|
+
readonly remaining: readonly number[];
|
|
144
|
+
readonly open: readonly OpenQuestion[];
|
|
145
|
+
readonly policy?: Partial<TimePolicy>;
|
|
146
|
+
} | {
|
|
147
|
+
readonly by: 'none';
|
|
148
|
+
readonly why: 'unreadable' | 'unsupported' | 'no-candidate' | 'excluded-by-policy';
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* The app's `policy`, read with the v1 defaults filled in — or a problem in
|
|
152
|
+
* words (an unknown key, a value outside its switch).
|
|
153
|
+
*/
|
|
154
|
+
export declare function readPolicy(value: unknown): TimePolicy | string;
|
|
155
|
+
/** The parts a candidate can name, in the order a record lists them. */
|
|
156
|
+
export declare const PART_ORDER: readonly TimePart[];
|
|
157
|
+
/** Whether `value` is a candidate this module would have written. */
|
|
158
|
+
export declare function candidateIsWellFormed(value: unknown): boolean;
|
|
159
|
+
/** Whether `value` is a choice this module would have written over `count` candidates. */
|
|
160
|
+
export declare function choiceIsWellFormed(value: unknown, count: number): boolean;
|
|
161
|
+
//# sourceMappingURL=resolveRecord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveRecord.d.ts","sourceRoot":"","sources":["../../../../src/core/time/resolveRecord.ts"],"names":[],"mappings":"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"}
|