@bitcobblers/wod-wiki-lang 0.48.2171 → 0.48.2173

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/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { IMetric, MetricContainer, MetricOrigin, MetricType, IDialect, ICodeStatement, DialectAnalysis, TagIndex, ParsedCodeStatement, TagMetricContribution, IOutputStatement, OutputStatementType, BlockKey, TagReferenceMetadata, ScriptBlock, FenceDialect, Segment, AnalyticsGroup, StoredOutputStatement, OutputStatement } from '@bitcobblers/wod-wiki-core';
2
2
  export { ParseError } from '@bitcobblers/wod-wiki-core';
3
- import { R as ReferenceIndex, a as ReferenceResolutionDefaults, W as WhiteboardScript, I as IEquipment, b as IEffort, c as IEffortResolver, d as IEffortRegistry, E as EffortResolverOptions, e as EffortResolutionOptions, f as ResolvedEffort, g as EffortRegistrySource, h as IEquipmentRegistry, i as EquipmentStorageAdapter, j as EffortStorageAdapter, k as IRuntimeActionable, l as IEventBus, m as IRuntimeStack, n as IRuntimeClock, o as IJitCompiler, p as INowProvider, q as RuntimeStackOptions, r as RuntimeError, A as AnalyticsContext, s as IEvent, t as IRuntimeAction, O as OutputListener, U as Unsubscribe, u as IAnalyticsEngine, v as IRuntimeBlock, w as IBehaviorContext, B as BehaviorEventType, x as BehaviorEventListener, S as SubscribeOptions, y as Unsubscribe$1, z as OutputOptions, M as MemoryTag, C as IMemoryLocation, D as IRuntimeBehavior, F as IBlockContext, G as MetricVisibility, H as BlockLifecycleOptions, J as CompletionDecision, T as TimeSpan, K as IRuntimeMemory, L as TypedMemoryReference, N as MemorySearchCriteria, P as IMemoryReference, Q as RuntimeStackLogger, V as StackObserver, X as StackSnapshot, Y as StackListener, Z as MemoryTypeEnum, _ as IAnchorValue, $ as SoundProfile, a0 as ButtonConfig, a1 as IEventHandler, a2 as HandlerScope, a3 as IScriptRuntime, a4 as TestableBlockConfig, a5 as IRuntimeOptions, a6 as ScriptRuntime, a7 as EventHandlerOptions, a8 as EventCallback, a9 as TimerState, aa as CalculationDefinition, ab as PropertyRuleInput, ac as IRealtimeProcessor, ad as ISummaryProcessor, ae as DimVector, af as CalcLine, ag as ExprNode, ah as CalcScope, ai as ILookupTable, aj as LookupRegistry, ak as ProjectionResult } from './browserRuntimeNow-CqyFh_Jd.cjs';
4
- export { al as ABSENT, am as BinaryOp, an as ButtonVariant, ao as ButtonsState, ap as CalcEvalError, aq as CalcNode, ar as CalcOrigin, as as CalcVariant, at as ChildrenStatusState, au as CompletionState, av as DEFAULT_RESOLVER_OPTIONS, aw as DEFAULT_RUNTIME_OPTIONS, ax as DEFAULT_SOUND_PROFILE, ay as DIM_COUNT, az as DIM_ENERGY, aA as DIM_LENGTH, aB as DIM_MASS, aC as DIM_TIME, aD as DIM_ZERO, aE as DISCIPLINE_FACTORS, aF as DisplayState, aG as EFFORT_DISCIPLINES, aH as EFFORT_REGISTRY_ORIGINS, aI as EffortBaseAttributes, aJ as EffortDerivation, aK as EffortDiscipline, aL as EffortMaterializer, aM as EffortResolvedFrom, aN as EvalContext, aO as FenceDialect, aP as FragmentDisplayState, aQ as FragmentState, aR as IAnalyticsProcessorDescriptor, aS as INTENSITY_TIERS, aT as IScript, aU as IntensityTier, aV as InterceptMode, aW as LookupFieldDef, aX as LookupLayer, aY as MemoryLocation, aZ as MemoryType, a_ as MemoryTypeMap, a$ as MemoryValueOf, b0 as NAMED_COMPOUNDS, b1 as PropertySourceLayer, b2 as ReferenceCatalog, b3 as ResolvedReferences, b4 as RoundState, b5 as RuntimeState, b6 as SEED_PRECEDENCE_RANK, b7 as ScriptRuntimeDependencies, b8 as SeedPrecedenceTier, b9 as ShakeOutQueueOptions, ba as ShakeOutResult, bb as SkippedDependencyDiagnostic, bc as SoundRule, bd as SoundTriggerAnchor, be as SoundTriggerPoint, bf as StackEvent, bg as TimerDirection, bh as VISIBILITY_ICONS, bi as VISIBILITY_LABELS, bj as Val, bk as addDim, bl as compilePropertySummaryCalcs, bm as compoundName, bn as createBrowserRuntimeNow, bo as createReferenceIndex, bp as dedupeEntitiesByPrecedence, bq as dimEquals, br as disciplineFactorFor, bs as evaluate, bt as extractPropertyRulesFromMeta, bu as extractStatementRefs, bv as extractTagPropertyRules, bw as filterTagsByVisibility, bx as formatDim, by as formatSoundTrigger, bz as frozenNow, bA as getMetricVisibility, bB as getRuntimeNowMs, bC as isDimensionless, bD as isEffortDiscipline, bE as isFragmentTag, bF as num, bG as parseSoundTrigger, bH as resolveEntityRank, bI as resolveEntityTier, bJ as resolveProfileRules, bK as resolveSourceRank, bL as resolveSourceTier, bM as runMetricShakeOutQueue, bN as slugifyRefLabel, bO as str, bP as subDim, bQ as truthy, bR as wallClockNow } from './browserRuntimeNow-CqyFh_Jd.cjs';
3
+ import { R as ReferenceIndex, a as ReferenceResolutionDefaults, W as WhiteboardScript, I as IEquipment, b as IEffort, c as IEffortResolver, d as IEffortRegistry, E as EffortResolverOptions, e as EffortResolutionOptions, f as ResolvedEffort, g as EffortRegistrySource, h as IEquipmentRegistry, i as EquipmentStorageAdapter, j as EffortStorageAdapter, k as IRuntimeActionable, l as IEventBus, m as IRuntimeStack, n as IRuntimeClock, o as IJitCompiler, p as INowProvider, q as RuntimeStackOptions, r as RuntimeError, A as AnalyticsContext, s as IEvent, t as IRuntimeAction, O as OutputListener, U as Unsubscribe, u as IAnalyticsEngine, v as IRuntimeBlock, w as IBehaviorContext, B as BehaviorEventType, x as BehaviorEventListener, S as SubscribeOptions, y as Unsubscribe$1, z as OutputOptions, M as MemoryTag, C as IMemoryLocation, D as IRuntimeBehavior, F as IBlockContext, G as MetricVisibility, H as BlockLifecycleOptions, J as CompletionDecision, T as TimeSpan, K as IRuntimeMemory, L as TypedMemoryReference, N as MemorySearchCriteria, P as IMemoryReference, Q as RuntimeStackLogger, V as StackObserver, X as StackSnapshot, Y as StackListener, Z as MemoryTypeEnum, _ as IAnchorValue, $ as SoundProfile, a0 as ButtonConfig, a1 as IEventHandler, a2 as HandlerScope, a3 as IScriptRuntime, a4 as TestableBlockConfig, a5 as IRuntimeOptions, a6 as ScriptRuntime, a7 as EventHandlerOptions, a8 as EventCallback, a9 as TimerState, aa as CalculationDefinition, ab as PropertyRuleInput, ac as IRealtimeProcessor, ad as ISummaryProcessor, ae as DimVector, af as CalcLine, ag as ExprNode, ah as CalcScope, ai as ILookupTable, aj as LookupRegistry, ak as CalcRegistrationDiagnostic, al as ProjectionResult } from './browserRuntimeNow-DUJFkpUq.cjs';
4
+ export { am as ABSENT, an as BinaryOp, ao as ButtonVariant, ap as ButtonsState, aq as CalcEvalError, ar as CalcNode, as as CalcOrigin, at as CalcVariant, au as ChildrenStatusState, av as CompiledPropertySummaries, aw as CompletionState, ax as DEFAULT_RESOLVER_OPTIONS, ay as DEFAULT_RUNTIME_OPTIONS, az as DEFAULT_SOUND_PROFILE, aA as DIM_COUNT, aB as DIM_ENERGY, aC as DIM_LENGTH, aD as DIM_MASS, aE as DIM_TIME, aF as DIM_ZERO, aG as DISCIPLINE_FACTORS, aH as DisplayState, aI as EFFORT_DISCIPLINES, aJ as EFFORT_REGISTRY_ORIGINS, aK as EffortBaseAttributes, aL as EffortDerivation, aM as EffortDiscipline, aN as EffortMaterializer, aO as EffortResolvedFrom, aP as EvalContext, aQ as FenceDialect, aR as FragmentDisplayState, aS as FragmentState, aT as IAnalyticsProcessorDescriptor, aU as INTENSITY_TIERS, aV as IScript, aW as IntensityTier, aX as InterceptMode, aY as LookupFieldDef, aZ as LookupLayer, a_ as MemoryLocation, a$ as MemoryType, b0 as MemoryTypeMap, b1 as MemoryValueOf, b2 as NAMED_COMPOUNDS, b3 as PropertySourceLayer, b4 as ReferenceCatalog, b5 as ResolvedReferences, b6 as RoundState, b7 as RuntimeState, b8 as SEED_PRECEDENCE_RANK, b9 as ScriptRuntimeDependencies, ba as SeedPrecedenceTier, bb as ShakeOutQueueOptions, bc as ShakeOutResult, bd as SkippedDependencyDiagnostic, be as SoundRule, bf as SoundTriggerAnchor, bg as SoundTriggerPoint, bh as StackEvent, bi as TimerDirection, bj as VISIBILITY_ICONS, bk as VISIBILITY_LABELS, bl as Val, bm as addDim, bn as compilePropertySummaryCalcs, bo as compilePropertySummaryCalcsWithDiagnostics, bp as compoundName, bq as createBrowserRuntimeNow, br as createReferenceIndex, bs as dedupeEntitiesByPrecedence, bt as dimEquals, bu as disciplineFactorFor, bv as evaluate, bw as extractPropertyRulesFromMeta, bx as extractStatementRefs, by as extractTagPropertyRules, bz as filterTagsByVisibility, bA as formatDim, bB as formatSoundTrigger, bC as frozenNow, bD as getMetricVisibility, bE as getRuntimeNowMs, bF as isDimensionless, bG as isEffortDiscipline, bH as isFragmentTag, bI as num, bJ as parseSoundTrigger, bK as resolveEntityRank, bL as resolveEntityTier, bM as resolveProfileRules, bN as resolveSourceRank, bO as resolveSourceTier, bP as runMetricShakeOutQueue, bQ as slugifyRefLabel, bR as str, bS as subDim, bT as truthy, bU as wallClockNow } from './browserRuntimeNow-DUJFkpUq.cjs';
5
5
  import { Tree } from '@lezer/common';
6
6
  import { LanguageSupport, LRLanguage } from '@codemirror/language';
7
7
  import { CompletionSource, Completion } from '@codemirror/autocomplete';
@@ -1534,6 +1534,7 @@ declare class BehaviorContext implements IBehaviorContext {
1534
1534
  */
1535
1535
  private _capabilities;
1536
1536
  constructor(block: IRuntimeBlock, clock: IRuntimeClock, stackLevel: number, runtime: IRuntimeContext, sharedCapabilities?: Set<string>);
1537
+ get nowProvider(): INowProvider;
1537
1538
  subscribe(eventType: BehaviorEventType, listener: BehaviorEventListener, options?: SubscribeOptions): Unsubscribe$1;
1538
1539
  emitEvent(event: IEvent): void;
1539
1540
  emitOutput(type: OutputStatementType, metrics: MetricContainer | IMetric[], _options?: OutputOptions): void;
@@ -2295,6 +2296,12 @@ declare class CountdownTimerBehavior implements IRuntimeBehavior {
2295
2296
  onUnmount(ctx: IBehaviorContext): IRuntimeAction[];
2296
2297
  onDispose(_ctx: IBehaviorContext): void;
2297
2298
  private handleExpiry;
2299
+ /**
2300
+ * True when the countdown has fully elapsed against the context's clock.
2301
+ * Single definition of "expired" shared by the tick subscription and the
2302
+ * Next-time reconcile, so display (spans) and runtime cannot diverge.
2303
+ */
2304
+ private hasExpired;
2298
2305
  private getRemainingCountdownMs;
2299
2306
  private createFragment;
2300
2307
  }
@@ -5120,6 +5127,8 @@ interface CalcEngineDeps {
5120
5127
  activeTags?: readonly string[];
5121
5128
  /** Property Note metric/summary rules active for this run or block. */
5122
5129
  propertySources?: readonly PropertyRuleInput[];
5130
+ /** Note summaries that failed registration — stamped onto the log stream. */
5131
+ summaryDiagnostics?: readonly CalcRegistrationDiagnostic[];
5123
5132
  }
5124
5133
  declare class CalcEngine implements IRealtimeProcessor, ISummaryProcessor {
5125
5134
  private readonly registry;
@@ -5143,6 +5152,8 @@ declare class CalcEngine implements IRealtimeProcessor, ISummaryProcessor {
5143
5152
  private readonly activatedTags;
5144
5153
  /** The tags the run activates — a note-level bundle of attachments. */
5145
5154
  private readonly runTags;
5155
+ /** Registration diagnostics are stamped once per workout, on the first leaf. */
5156
+ private summaryDiagnosticsStamped;
5146
5157
  constructor(registry: CalculationRegistry, deps: CalcEngineDeps);
5147
5158
  /**
5148
5159
  * Whether a calculation runs here.
@@ -5223,6 +5234,8 @@ interface CalcStackOptions {
5223
5234
  interface CalcStack {
5224
5235
  lookups: LookupRegistry;
5225
5236
  registry: CalculationRegistry;
5237
+ /** Note summaries that failed registration — surfaced on the log stream. */
5238
+ diagnostics: CalcRegistrationDiagnostic[];
5226
5239
  }
5227
5240
  declare function createCalcStack(options: CalcStackOptions): CalcStack;
5228
5241
  declare function createCalcEngine(dialect: string, options: CalcStackOptions): CalcEngine;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { IMetric, MetricContainer, MetricOrigin, MetricType, IDialect, ICodeStatement, DialectAnalysis, TagIndex, ParsedCodeStatement, TagMetricContribution, IOutputStatement, OutputStatementType, BlockKey, TagReferenceMetadata, ScriptBlock, FenceDialect, Segment, AnalyticsGroup, StoredOutputStatement, OutputStatement } from '@bitcobblers/wod-wiki-core';
2
2
  export { ParseError } from '@bitcobblers/wod-wiki-core';
3
- import { R as ReferenceIndex, a as ReferenceResolutionDefaults, W as WhiteboardScript, I as IEquipment, b as IEffort, c as IEffortResolver, d as IEffortRegistry, E as EffortResolverOptions, e as EffortResolutionOptions, f as ResolvedEffort, g as EffortRegistrySource, h as IEquipmentRegistry, i as EquipmentStorageAdapter, j as EffortStorageAdapter, k as IRuntimeActionable, l as IEventBus, m as IRuntimeStack, n as IRuntimeClock, o as IJitCompiler, p as INowProvider, q as RuntimeStackOptions, r as RuntimeError, A as AnalyticsContext, s as IEvent, t as IRuntimeAction, O as OutputListener, U as Unsubscribe, u as IAnalyticsEngine, v as IRuntimeBlock, w as IBehaviorContext, B as BehaviorEventType, x as BehaviorEventListener, S as SubscribeOptions, y as Unsubscribe$1, z as OutputOptions, M as MemoryTag, C as IMemoryLocation, D as IRuntimeBehavior, F as IBlockContext, G as MetricVisibility, H as BlockLifecycleOptions, J as CompletionDecision, T as TimeSpan, K as IRuntimeMemory, L as TypedMemoryReference, N as MemorySearchCriteria, P as IMemoryReference, Q as RuntimeStackLogger, V as StackObserver, X as StackSnapshot, Y as StackListener, Z as MemoryTypeEnum, _ as IAnchorValue, $ as SoundProfile, a0 as ButtonConfig, a1 as IEventHandler, a2 as HandlerScope, a3 as IScriptRuntime, a4 as TestableBlockConfig, a5 as IRuntimeOptions, a6 as ScriptRuntime, a7 as EventHandlerOptions, a8 as EventCallback, a9 as TimerState, aa as CalculationDefinition, ab as PropertyRuleInput, ac as IRealtimeProcessor, ad as ISummaryProcessor, ae as DimVector, af as CalcLine, ag as ExprNode, ah as CalcScope, ai as ILookupTable, aj as LookupRegistry, ak as ProjectionResult } from './browserRuntimeNow-CqyFh_Jd.js';
4
- export { al as ABSENT, am as BinaryOp, an as ButtonVariant, ao as ButtonsState, ap as CalcEvalError, aq as CalcNode, ar as CalcOrigin, as as CalcVariant, at as ChildrenStatusState, au as CompletionState, av as DEFAULT_RESOLVER_OPTIONS, aw as DEFAULT_RUNTIME_OPTIONS, ax as DEFAULT_SOUND_PROFILE, ay as DIM_COUNT, az as DIM_ENERGY, aA as DIM_LENGTH, aB as DIM_MASS, aC as DIM_TIME, aD as DIM_ZERO, aE as DISCIPLINE_FACTORS, aF as DisplayState, aG as EFFORT_DISCIPLINES, aH as EFFORT_REGISTRY_ORIGINS, aI as EffortBaseAttributes, aJ as EffortDerivation, aK as EffortDiscipline, aL as EffortMaterializer, aM as EffortResolvedFrom, aN as EvalContext, aO as FenceDialect, aP as FragmentDisplayState, aQ as FragmentState, aR as IAnalyticsProcessorDescriptor, aS as INTENSITY_TIERS, aT as IScript, aU as IntensityTier, aV as InterceptMode, aW as LookupFieldDef, aX as LookupLayer, aY as MemoryLocation, aZ as MemoryType, a_ as MemoryTypeMap, a$ as MemoryValueOf, b0 as NAMED_COMPOUNDS, b1 as PropertySourceLayer, b2 as ReferenceCatalog, b3 as ResolvedReferences, b4 as RoundState, b5 as RuntimeState, b6 as SEED_PRECEDENCE_RANK, b7 as ScriptRuntimeDependencies, b8 as SeedPrecedenceTier, b9 as ShakeOutQueueOptions, ba as ShakeOutResult, bb as SkippedDependencyDiagnostic, bc as SoundRule, bd as SoundTriggerAnchor, be as SoundTriggerPoint, bf as StackEvent, bg as TimerDirection, bh as VISIBILITY_ICONS, bi as VISIBILITY_LABELS, bj as Val, bk as addDim, bl as compilePropertySummaryCalcs, bm as compoundName, bn as createBrowserRuntimeNow, bo as createReferenceIndex, bp as dedupeEntitiesByPrecedence, bq as dimEquals, br as disciplineFactorFor, bs as evaluate, bt as extractPropertyRulesFromMeta, bu as extractStatementRefs, bv as extractTagPropertyRules, bw as filterTagsByVisibility, bx as formatDim, by as formatSoundTrigger, bz as frozenNow, bA as getMetricVisibility, bB as getRuntimeNowMs, bC as isDimensionless, bD as isEffortDiscipline, bE as isFragmentTag, bF as num, bG as parseSoundTrigger, bH as resolveEntityRank, bI as resolveEntityTier, bJ as resolveProfileRules, bK as resolveSourceRank, bL as resolveSourceTier, bM as runMetricShakeOutQueue, bN as slugifyRefLabel, bO as str, bP as subDim, bQ as truthy, bR as wallClockNow } from './browserRuntimeNow-CqyFh_Jd.js';
3
+ import { R as ReferenceIndex, a as ReferenceResolutionDefaults, W as WhiteboardScript, I as IEquipment, b as IEffort, c as IEffortResolver, d as IEffortRegistry, E as EffortResolverOptions, e as EffortResolutionOptions, f as ResolvedEffort, g as EffortRegistrySource, h as IEquipmentRegistry, i as EquipmentStorageAdapter, j as EffortStorageAdapter, k as IRuntimeActionable, l as IEventBus, m as IRuntimeStack, n as IRuntimeClock, o as IJitCompiler, p as INowProvider, q as RuntimeStackOptions, r as RuntimeError, A as AnalyticsContext, s as IEvent, t as IRuntimeAction, O as OutputListener, U as Unsubscribe, u as IAnalyticsEngine, v as IRuntimeBlock, w as IBehaviorContext, B as BehaviorEventType, x as BehaviorEventListener, S as SubscribeOptions, y as Unsubscribe$1, z as OutputOptions, M as MemoryTag, C as IMemoryLocation, D as IRuntimeBehavior, F as IBlockContext, G as MetricVisibility, H as BlockLifecycleOptions, J as CompletionDecision, T as TimeSpan, K as IRuntimeMemory, L as TypedMemoryReference, N as MemorySearchCriteria, P as IMemoryReference, Q as RuntimeStackLogger, V as StackObserver, X as StackSnapshot, Y as StackListener, Z as MemoryTypeEnum, _ as IAnchorValue, $ as SoundProfile, a0 as ButtonConfig, a1 as IEventHandler, a2 as HandlerScope, a3 as IScriptRuntime, a4 as TestableBlockConfig, a5 as IRuntimeOptions, a6 as ScriptRuntime, a7 as EventHandlerOptions, a8 as EventCallback, a9 as TimerState, aa as CalculationDefinition, ab as PropertyRuleInput, ac as IRealtimeProcessor, ad as ISummaryProcessor, ae as DimVector, af as CalcLine, ag as ExprNode, ah as CalcScope, ai as ILookupTable, aj as LookupRegistry, ak as CalcRegistrationDiagnostic, al as ProjectionResult } from './browserRuntimeNow-DUJFkpUq.js';
4
+ export { am as ABSENT, an as BinaryOp, ao as ButtonVariant, ap as ButtonsState, aq as CalcEvalError, ar as CalcNode, as as CalcOrigin, at as CalcVariant, au as ChildrenStatusState, av as CompiledPropertySummaries, aw as CompletionState, ax as DEFAULT_RESOLVER_OPTIONS, ay as DEFAULT_RUNTIME_OPTIONS, az as DEFAULT_SOUND_PROFILE, aA as DIM_COUNT, aB as DIM_ENERGY, aC as DIM_LENGTH, aD as DIM_MASS, aE as DIM_TIME, aF as DIM_ZERO, aG as DISCIPLINE_FACTORS, aH as DisplayState, aI as EFFORT_DISCIPLINES, aJ as EFFORT_REGISTRY_ORIGINS, aK as EffortBaseAttributes, aL as EffortDerivation, aM as EffortDiscipline, aN as EffortMaterializer, aO as EffortResolvedFrom, aP as EvalContext, aQ as FenceDialect, aR as FragmentDisplayState, aS as FragmentState, aT as IAnalyticsProcessorDescriptor, aU as INTENSITY_TIERS, aV as IScript, aW as IntensityTier, aX as InterceptMode, aY as LookupFieldDef, aZ as LookupLayer, a_ as MemoryLocation, a$ as MemoryType, b0 as MemoryTypeMap, b1 as MemoryValueOf, b2 as NAMED_COMPOUNDS, b3 as PropertySourceLayer, b4 as ReferenceCatalog, b5 as ResolvedReferences, b6 as RoundState, b7 as RuntimeState, b8 as SEED_PRECEDENCE_RANK, b9 as ScriptRuntimeDependencies, ba as SeedPrecedenceTier, bb as ShakeOutQueueOptions, bc as ShakeOutResult, bd as SkippedDependencyDiagnostic, be as SoundRule, bf as SoundTriggerAnchor, bg as SoundTriggerPoint, bh as StackEvent, bi as TimerDirection, bj as VISIBILITY_ICONS, bk as VISIBILITY_LABELS, bl as Val, bm as addDim, bn as compilePropertySummaryCalcs, bo as compilePropertySummaryCalcsWithDiagnostics, bp as compoundName, bq as createBrowserRuntimeNow, br as createReferenceIndex, bs as dedupeEntitiesByPrecedence, bt as dimEquals, bu as disciplineFactorFor, bv as evaluate, bw as extractPropertyRulesFromMeta, bx as extractStatementRefs, by as extractTagPropertyRules, bz as filterTagsByVisibility, bA as formatDim, bB as formatSoundTrigger, bC as frozenNow, bD as getMetricVisibility, bE as getRuntimeNowMs, bF as isDimensionless, bG as isEffortDiscipline, bH as isFragmentTag, bI as num, bJ as parseSoundTrigger, bK as resolveEntityRank, bL as resolveEntityTier, bM as resolveProfileRules, bN as resolveSourceRank, bO as resolveSourceTier, bP as runMetricShakeOutQueue, bQ as slugifyRefLabel, bR as str, bS as subDim, bT as truthy, bU as wallClockNow } from './browserRuntimeNow-DUJFkpUq.js';
5
5
  import { Tree } from '@lezer/common';
6
6
  import { LanguageSupport, LRLanguage } from '@codemirror/language';
7
7
  import { CompletionSource, Completion } from '@codemirror/autocomplete';
@@ -1534,6 +1534,7 @@ declare class BehaviorContext implements IBehaviorContext {
1534
1534
  */
1535
1535
  private _capabilities;
1536
1536
  constructor(block: IRuntimeBlock, clock: IRuntimeClock, stackLevel: number, runtime: IRuntimeContext, sharedCapabilities?: Set<string>);
1537
+ get nowProvider(): INowProvider;
1537
1538
  subscribe(eventType: BehaviorEventType, listener: BehaviorEventListener, options?: SubscribeOptions): Unsubscribe$1;
1538
1539
  emitEvent(event: IEvent): void;
1539
1540
  emitOutput(type: OutputStatementType, metrics: MetricContainer | IMetric[], _options?: OutputOptions): void;
@@ -2295,6 +2296,12 @@ declare class CountdownTimerBehavior implements IRuntimeBehavior {
2295
2296
  onUnmount(ctx: IBehaviorContext): IRuntimeAction[];
2296
2297
  onDispose(_ctx: IBehaviorContext): void;
2297
2298
  private handleExpiry;
2299
+ /**
2300
+ * True when the countdown has fully elapsed against the context's clock.
2301
+ * Single definition of "expired" shared by the tick subscription and the
2302
+ * Next-time reconcile, so display (spans) and runtime cannot diverge.
2303
+ */
2304
+ private hasExpired;
2298
2305
  private getRemainingCountdownMs;
2299
2306
  private createFragment;
2300
2307
  }
@@ -5120,6 +5127,8 @@ interface CalcEngineDeps {
5120
5127
  activeTags?: readonly string[];
5121
5128
  /** Property Note metric/summary rules active for this run or block. */
5122
5129
  propertySources?: readonly PropertyRuleInput[];
5130
+ /** Note summaries that failed registration — stamped onto the log stream. */
5131
+ summaryDiagnostics?: readonly CalcRegistrationDiagnostic[];
5123
5132
  }
5124
5133
  declare class CalcEngine implements IRealtimeProcessor, ISummaryProcessor {
5125
5134
  private readonly registry;
@@ -5143,6 +5152,8 @@ declare class CalcEngine implements IRealtimeProcessor, ISummaryProcessor {
5143
5152
  private readonly activatedTags;
5144
5153
  /** The tags the run activates — a note-level bundle of attachments. */
5145
5154
  private readonly runTags;
5155
+ /** Registration diagnostics are stamped once per workout, on the first leaf. */
5156
+ private summaryDiagnosticsStamped;
5146
5157
  constructor(registry: CalculationRegistry, deps: CalcEngineDeps);
5147
5158
  /**
5148
5159
  * Whether a calculation runs here.
@@ -5223,6 +5234,8 @@ interface CalcStackOptions {
5223
5234
  interface CalcStack {
5224
5235
  lookups: LookupRegistry;
5225
5236
  registry: CalculationRegistry;
5237
+ /** Note summaries that failed registration — surfaced on the log stream. */
5238
+ diagnostics: CalcRegistrationDiagnostic[];
5226
5239
  }
5227
5240
  declare function createCalcStack(options: CalcStackOptions): CalcStack;
5228
5241
  declare function createCalcEngine(dialect: string, options: CalcStackOptions): CalcEngine;
package/dist/index.mjs CHANGED
@@ -4569,7 +4569,7 @@ function tagToDocument(tag) {
4569
4569
  lines.push(`# ${tag.label}`);
4570
4570
  lines.push("");
4571
4571
  lines.push("```query");
4572
- lines.push(`find:note{${filterExpr}}`);
4572
+ lines.push(`:note{${filterExpr}}`);
4573
4573
  lines.push("```");
4574
4574
  }
4575
4575
  return lines.join("\n");
@@ -7066,6 +7066,9 @@ var BehaviorContext = class {
7066
7066
  * capabilities.
7067
7067
  */
7068
7068
  _capabilities;
7069
+ get nowProvider() {
7070
+ return this.runtime.nowProvider;
7071
+ }
7069
7072
  // ============================================================================
7070
7073
  // Event Subscription
7071
7074
  // ============================================================================
@@ -7946,15 +7949,10 @@ var CountdownTimerBehavior = class {
7946
7949
  }
7947
7950
  this.subscriptions.push(
7948
7951
  ctx.subscribe("tick", (_event, tickCtx) => {
7949
- const timer = readTimer(tickCtx);
7950
- if (!timer || timer.direction !== "down" || timer.durationMs === void 0) {
7951
- return [];
7952
- }
7953
7952
  if (mode === "complete-block" && tickCtx.block.isComplete) {
7954
7953
  return [];
7955
7954
  }
7956
- const elapsed = calculateElapsed(timer, tickCtx.clock.currentDate.getTime());
7957
- if (elapsed < timer.durationMs) return [];
7955
+ if (!this.hasExpired(tickCtx)) return [];
7958
7956
  this.handleExpiry(tickCtx, mode);
7959
7957
  return [new ClearChildrenAction(tickCtx.block.key.toString())];
7960
7958
  }, { scope: "bubble" })
@@ -7983,6 +7981,10 @@ var CountdownTimerBehavior = class {
7983
7981
  return [];
7984
7982
  }
7985
7983
  onNext(ctx) {
7984
+ if ((this.config.mode ?? "complete-block") === "complete-block" && !ctx.block.isComplete && this.hasExpired(ctx)) {
7985
+ ctx.markComplete("timer-expired");
7986
+ return [new PopBlockAction(), new ClearChildrenAction(ctx.block.key.toString())];
7987
+ }
7986
7988
  if (this.config.required && !ctx.block.isComplete) {
7987
7989
  ctx.emitEvent({
7988
7990
  name: "timer:skip-attempt",
@@ -8054,6 +8056,18 @@ var CountdownTimerBehavior = class {
8054
8056
  }
8055
8057
  }
8056
8058
  }
8059
+ /**
8060
+ * True when the countdown has fully elapsed against the context's clock.
8061
+ * Single definition of "expired" shared by the tick subscription and the
8062
+ * Next-time reconcile, so display (spans) and runtime cannot diverge.
8063
+ */
8064
+ hasExpired(ctx) {
8065
+ const timer = readTimer(ctx);
8066
+ if (!timer || timer.direction !== "down" || timer.durationMs === void 0) {
8067
+ return false;
8068
+ }
8069
+ return calculateElapsed(timer, ctx.nowProvider.nowMs()) >= timer.durationMs;
8070
+ }
8057
8071
  getRemainingCountdownMs(ctx) {
8058
8072
  const timer = readTimer(ctx);
8059
8073
  if (!timer || timer.direction !== "down" || !timer.durationMs) {
@@ -8605,7 +8619,11 @@ var CalcUnitError = class extends Error {
8605
8619
  }
8606
8620
  };
8607
8621
  function composeMulUnit(a, aDim, b, bDim, resultDim) {
8608
- if (dimEquals(resultDim, DIM_ZERO)) return void 0;
8622
+ if (dimEquals(resultDim, DIM_ZERO)) {
8623
+ if (a && !b) return a;
8624
+ if (b && !a) return b;
8625
+ return dimEquals(aDim, bDim) ? a ?? b : void 0;
8626
+ }
8609
8627
  const parts = [];
8610
8628
  for (const [u, d] of [[a, aDim], [b, bDim]]) {
8611
8629
  if (!u || dimEquals(d, DIM_ZERO)) continue;
@@ -9604,34 +9622,51 @@ function extractTagPropertyRules(tags2, slugs) {
9604
9622
  for (const slug of slugs) {
9605
9623
  const resolved = resolveTagContributions(tags2, slug);
9606
9624
  if (resolved.metrics.length === 0) continue;
9607
- const metrics = {};
9608
- const summaries = {};
9609
- for (const m of resolved.metrics) {
9610
- const key = m.type.trim();
9611
- if (!key) continue;
9612
- if (key.startsWith("summaries.")) {
9613
- const subKey = key.slice("summaries.".length).trim();
9614
- if (subKey && !(subKey in summaries)) {
9615
- summaries[subKey] = String(m.value);
9625
+ const tagMetrics = {};
9626
+ const tagSummaries = {};
9627
+ const categoryMetrics = {};
9628
+ const categorySummaries = {};
9629
+ for (const involvedSlug of resolved.tags) {
9630
+ const definition = tags2.resolve(involvedSlug);
9631
+ if (!definition) continue;
9632
+ const metrics = definition.isCategory ? categoryMetrics : tagMetrics;
9633
+ const summaries = definition.isCategory ? categorySummaries : tagSummaries;
9634
+ for (const m of definition.contributions) {
9635
+ if (m.kind !== "metric") continue;
9636
+ const key = m.type.trim();
9637
+ if (!key) continue;
9638
+ if (key.startsWith("summaries.")) {
9639
+ const subKey = key.slice("summaries.".length).trim();
9640
+ if (subKey && !(subKey in summaries)) {
9641
+ summaries[subKey] = String(m.value);
9642
+ }
9643
+ } else if (!(key in metrics)) {
9644
+ metrics[key] = m.unit ? `${String(m.value)} ${m.unit}` : m.value === null || typeof m.value === "boolean" ? String(m.value) : m.value;
9616
9645
  }
9617
- } else if (!(key in metrics)) {
9618
- metrics[key] = m.unit ? `${String(m.value)} ${m.unit}` : m.value === null || typeof m.value === "boolean" ? String(m.value) : m.value;
9619
9646
  }
9620
9647
  }
9621
- if (Object.keys(metrics).length > 0 || Object.keys(summaries).length > 0) {
9622
- rules.push({
9623
- layer: "tag",
9624
- sourceSlug: slug,
9625
- metrics,
9626
- summaries
9627
- });
9648
+ if (Object.keys(tagMetrics).length > 0 || Object.keys(tagSummaries).length > 0) {
9649
+ rules.push({ layer: "tag", sourceSlug: slug, metrics: tagMetrics, summaries: tagSummaries });
9650
+ }
9651
+ if (Object.keys(categoryMetrics).length > 0 || Object.keys(categorySummaries).length > 0) {
9652
+ rules.push({ layer: "category", sourceSlug: slug, metrics: categoryMetrics, summaries: categorySummaries });
9628
9653
  }
9629
9654
  }
9630
9655
  return rules;
9631
9656
  }
9657
+ var SUMMARY_LAYER_PRECEDENCE = {
9658
+ note: 6,
9659
+ tag: 5,
9660
+ effort: 4,
9661
+ equipment: 3,
9662
+ category: 1
9663
+ };
9632
9664
  function compilePropertySummaryCalcs(sources) {
9665
+ return compilePropertySummaryCalcsWithDiagnostics(sources).defs;
9666
+ }
9667
+ function compilePropertySummaryCalcsWithDiagnostics(sources) {
9633
9668
  const ordered = [...sources].sort(
9634
- (a, b) => LAYER_PRECEDENCE[b.layer] - LAYER_PRECEDENCE[a.layer]
9669
+ (a, b) => SUMMARY_LAYER_PRECEDENCE[b.layer] - SUMMARY_LAYER_PRECEDENCE[a.layer]
9635
9670
  );
9636
9671
  const chosen = /* @__PURE__ */ new Map();
9637
9672
  for (const source of ordered) {
@@ -9656,6 +9691,19 @@ function compilePropertySummaryCalcs(sources) {
9656
9691
  }
9657
9692
  }
9658
9693
  }
9694
+ const diagnostics = [];
9695
+ for (const [key, expr2] of chosen) {
9696
+ try {
9697
+ const missing = [...collectRequiredRefs(parseCalcLine(`summary = ${expr2}`).expr)].filter((ref) => !customAtomsMap.has(ref) && STREAM_ATOMS[ref] === void 0 && CONTEXT_ATOMS[ref] === void 0);
9698
+ for (const ref of missing) {
9699
+ customAtomsMap.set(ref, DIM_ZERO);
9700
+ }
9701
+ if (missing.length > 0) {
9702
+ diagnostics.push({ id: key, message: `Summary ${key}: missing ${[...new Set(missing)].join(", ")}` });
9703
+ }
9704
+ } catch {
9705
+ }
9706
+ }
9659
9707
  const customAtoms = Object.fromEntries(customAtomsMap);
9660
9708
  const defs = [];
9661
9709
  for (const [key, expr2] of chosen) {
@@ -9679,7 +9727,7 @@ function compilePropertySummaryCalcs(sources) {
9679
9727
  } catch {
9680
9728
  }
9681
9729
  }
9682
- return defs;
9730
+ return { defs, diagnostics };
9683
9731
  }
9684
9732
  function collectRequiredRefs(node, into = /* @__PURE__ */ new Set()) {
9685
9733
  if (!node) return into;
@@ -9934,6 +9982,7 @@ function runMetricShakeOutQueue(container, options) {
9934
9982
  }
9935
9983
  const unresolved = new Set(pendingEquations);
9936
9984
  const notApplicable = /* @__PURE__ */ new Set();
9985
+ const unresolvable = /* @__PURE__ */ new Set();
9937
9986
  const makeEvalContext = () => ({
9938
9987
  resolveRef: (name2) => readContainerMetricAtom(container, name2, inferredDims, options.lastEffortSlug),
9939
9988
  callFunction: (name2, args, rawArgs) => {
@@ -9957,7 +10006,12 @@ function runMetricShakeOutQueue(container, options) {
9957
10006
  continue;
9958
10007
  }
9959
10008
  const val = evaluate(rule.ast, ctx);
9960
- if (val.kind !== "number") continue;
10009
+ if (val.kind !== "number") {
10010
+ unresolved.delete(rule);
10011
+ unresolvable.add(rule);
10012
+ progressed = true;
10013
+ continue;
10014
+ }
9961
10015
  let dim = val.dim;
9962
10016
  if (rule.unit && AUTHORITATIVE_CASTS[rule.unit]) {
9963
10017
  dim = DIM_ZERO;
@@ -9989,14 +10043,8 @@ function runMetricShakeOutQueue(container, options) {
9989
10043
  const deferredRuntime = [];
9990
10044
  const diagnostics = [];
9991
10045
  const finalCtx = makeEvalContext();
9992
- for (const rule of unresolved) {
9993
- if (notApplicable.has(rule)) continue;
9994
- const missing = rule.dependencies.filter((dep) => finalCtx.resolveRef(dep).kind === "absent");
9995
- if (missing.length === 0) continue;
9996
- if (options.stage === "plan") {
9997
- deferredRuntime.push(rule.key);
9998
- continue;
9999
- }
10046
+ const emitDiagnostic = (rule, missing) => {
10047
+ if (options.emitDiagnostics === false) return;
10000
10048
  const diag = {
10001
10049
  target: rule.key,
10002
10050
  expression: rule.expression,
@@ -10008,8 +10056,8 @@ function runMetricShakeOutQueue(container, options) {
10008
10056
  container.add({
10009
10057
  type: MetricType.Diagnostic,
10010
10058
  name: `diagnostic.${rule.key}`,
10011
- value: `Skipped ${rule.key}: missing ${missing.join(", ")}`,
10012
- image: `Skipped ${rule.key} (missing ${missing.join(", ")})`,
10059
+ value: `Skipped ${rule.key}: ${missing.length > 0 ? `missing ${missing.join(", ")}` : "expression could not be evaluated"}`,
10060
+ image: `Skipped ${rule.key} (${missing.length > 0 ? `missing ${missing.join(", ")}` : "expression could not be evaluated"})`,
10013
10061
  origin: "diagnostic",
10014
10062
  metadata: {
10015
10063
  diagnostic: "skipped-dependency",
@@ -10020,6 +10068,23 @@ function runMetricShakeOutQueue(container, options) {
10020
10068
  missing
10021
10069
  }
10022
10070
  });
10071
+ };
10072
+ for (const rule of unresolved) {
10073
+ if (notApplicable.has(rule)) continue;
10074
+ const missing = rule.dependencies.filter((dep) => finalCtx.resolveRef(dep).kind === "absent");
10075
+ if (missing.length === 0) continue;
10076
+ if (options.stage === "plan") {
10077
+ deferredRuntime.push(rule.key);
10078
+ continue;
10079
+ }
10080
+ emitDiagnostic(rule, missing);
10081
+ }
10082
+ for (const rule of unresolvable) {
10083
+ if (options.stage === "plan") {
10084
+ deferredRuntime.push(rule.key);
10085
+ continue;
10086
+ }
10087
+ emitDiagnostic(rule, []);
10023
10088
  }
10024
10089
  return {
10025
10090
  resolved,
@@ -12366,6 +12431,8 @@ var CalcEngine = class {
12366
12431
  activatedTags = /* @__PURE__ */ new Set();
12367
12432
  /** The tags the run activates — a note-level bundle of attachments. */
12368
12433
  runTags;
12434
+ /** Registration diagnostics are stamped once per workout, on the first leaf. */
12435
+ summaryDiagnosticsStamped = false;
12369
12436
  /**
12370
12437
  * Whether a calculation runs here.
12371
12438
  *
@@ -12402,12 +12469,41 @@ var CalcEngine = class {
12402
12469
  const appliedTags = this.appliedTags(output);
12403
12470
  const tagSources = extractTagPropertyRules(this.deps.tags, appliedTags);
12404
12471
  const allSources = [...tagSources, ...this.deps.propertySources ?? []];
12472
+ const hasExerciseStatement = output.metrics.rawMetrics.some((metric) => metric.type === MetricType.Effort && String(metric.value ?? metric.image ?? "").trim().toLowerCase() !== "rest");
12473
+ if (!this.summaryDiagnosticsStamped && (this.deps.summaryDiagnostics?.length ?? 0) > 0) {
12474
+ this.summaryDiagnosticsStamped = true;
12475
+ for (const diagnostic of this.deps.summaryDiagnostics ?? []) {
12476
+ output.metrics.add({
12477
+ type: MetricType.Diagnostic,
12478
+ name: `diagnostic.${diagnostic.id}`,
12479
+ value: diagnostic.message,
12480
+ image: diagnostic.message,
12481
+ origin: "diagnostic",
12482
+ timestamp: /* @__PURE__ */ new Date(),
12483
+ metadata: { diagnostic: "summary-registration", target: diagnostic.id }
12484
+ });
12485
+ }
12486
+ }
12405
12487
  if (allSources.length > 0) {
12488
+ const spanMs = typeof output.timeSpan?.started === "number" && typeof output.timeSpan.ended === "number" ? output.timeSpan.ended - output.timeSpan.started : 0;
12489
+ const existingElapsed = output.metrics.rawMetrics.map((m) => m.type === MetricType.Elapsed && typeof m.value === "number" ? m.value : void 0).reduce((found, v) => v ?? found, void 0);
12490
+ if (spanMs > 0 && (existingElapsed === void 0 || existingElapsed === 0)) {
12491
+ output.metrics.add({
12492
+ type: MetricType.Elapsed,
12493
+ name: "elapsed",
12494
+ value: spanMs,
12495
+ unit: "ms",
12496
+ image: `${spanMs} ms`,
12497
+ origin: "analyzed",
12498
+ timestamp: /* @__PURE__ */ new Date()
12499
+ });
12500
+ }
12406
12501
  runMetricShakeOutQueue(output.metrics, {
12407
12502
  stage: "log",
12408
12503
  sources: allSources,
12409
12504
  lookups: this.deps.lookups,
12410
- lastEffortSlug: this.lastSegmentEffort
12505
+ lastEffortSlug: this.lastSegmentEffort,
12506
+ emitDiagnostics: hasExerciseStatement
12411
12507
  });
12412
12508
  }
12413
12509
  const atoms = buildSegmentAtoms(output, this.lastSegmentEffort);
@@ -13646,12 +13742,21 @@ function createCalcStack(options) {
13646
13742
  const allTagSlugs = (options.tags?.list() ?? []).map((t2) => t2.slug);
13647
13743
  const tagRules = extractTagPropertyRules(options.tags, allTagSlugs);
13648
13744
  const combinedSources = [...options.propertySources ?? [], ...tagRules];
13745
+ const diagnostics = [];
13649
13746
  if (combinedSources.length > 0) {
13650
- for (const def of compilePropertySummaryCalcs(combinedSources)) {
13651
- registry.register(def);
13747
+ const compiled = compilePropertySummaryCalcsWithDiagnostics(combinedSources);
13748
+ diagnostics.push(...compiled.diagnostics);
13749
+ for (const def of compiled.defs) {
13750
+ try {
13751
+ registry.register(def);
13752
+ } catch (err) {
13753
+ const message = `Skipped summary ${def.id}: ${err instanceof Error ? err.message : String(err)}`;
13754
+ diagnostics.push({ id: def.id, message });
13755
+ console.error(`[createCalcStack] ${message}`);
13756
+ }
13652
13757
  }
13653
13758
  }
13654
- return { lookups, registry };
13759
+ return { lookups, registry, diagnostics };
13655
13760
  }
13656
13761
  function createCalcEngine(dialect, options) {
13657
13762
  const stack = createCalcStack(options);
@@ -13661,7 +13766,8 @@ function createCalcEngine(dialect, options) {
13661
13766
  userProfile: options.userProfile,
13662
13767
  tags: options.tags,
13663
13768
  activeTags: options.activeTags,
13664
- propertySources: options.propertySources
13769
+ propertySources: options.propertySources,
13770
+ summaryDiagnostics: stack.diagnostics
13665
13771
  });
13666
13772
  }
13667
13773
 
@@ -15759,6 +15865,6 @@ function compareStatement(expectations, actual, mode) {
15759
15865
  return diffs;
15760
15866
  }
15761
15867
 
15762
- export { ABSENT, AGGREGATE_BUILTINS, AUTHORITATIVE_CASTS, AbortSessionAction, AmrapLogicStrategy, AnalyticsEngine, AnalyticsTransformer, BUILTIN_CALCS, BUNDLED_EFFORT_COUNT, BehaviorContext, BlockBuilder, BlockContext, ButtonBehavior, COMPLETION_PROPERTY_KEYS, CONSUMED_HINTS, CONSUMED_HINT_KEYS, CONTEXT_ATOMS, CalcEngine, CalcEvalError, CalcParseError, CalcRegistrationError, CalcUnitError, CalculationRegistry, CardioDialect, ChildSelectionBehavior, ChildrenStrategy, ChoiceGroupMetric, ClearChildrenAction, ClimbDialect, ClimbMetricType, CompileAndPushBlockAction, CompletionTimestampBehavior, CompositeEffortRegistry, CompositeEquipmentRegistry, CompositePropertyRegistry, CountdownTimerBehavior, CountupTimerBehavior, CrossFitDialect, DAY, DEFAULT_RESOLVER_OPTIONS, DEFAULT_RUNTIME_OPTIONS, DEFAULT_SOUND_PROFILE, DEFAULT_UNRESOLVED_EFFORT_MET, DIM_COUNT, DIM_ENERGY, DIM_LENGTH, DIM_MASS, DIM_TIME, DIM_ZERO, DISCIPLINE_FACTORS, DialectStack, EFFORT_DATA_METRIC_TYPE, EFFORT_DISCIPLINES, EFFORT_REGISTRY_ORIGINS, EffortBlock, EffortFallbackStrategy, EffortResolver, EmitEventAction, EmitSystemOutputAction, ErrorAction, EventBus, ExecutionContext, ExitBehavior, FixtureSyntaxError, GenericGroupStrategy, GenericLoopStrategy, GenericTimerStrategy, HabitsDialect, INTENSITY_TIERS, InMemoryEffortRegistry, IntervalLogicStrategy, JitCompiler, LabelingBehavior, LocalEventProvider, LocalRuntimeSubscription, LookupRegistry, MAX_TAG_CONTRIBUTION_DEPTH, MdTimerRuntime, MemoryLocation, MemoryTypeEnum, MetricPromotionBehavior, NAMED_COMPOUNDS, NextAction, NextEvent, NextEventHandler, OutputEmitter, PRODUCTION_STRATEGIES, PROPERTY_KEY_TO_METRIC_TYPE, PopBlockAction, PushBlockAction, PushRestBlockAction, REFERENCE_PAIR_KEYS, REST_EXCLUSION, RPE_LABELS, RUNTIME_LOG_SUBJECT_WIDTH, RegisterEventHandlerAction, Registry, ReportOutputBehavior, ReportOutputStrategy, RestBlock, RoundsMetric, RuntimeAdapter, RuntimeBlock, RuntimeBuilder, RuntimeClock, RuntimeFactory, RuntimeLogger, RuntimeMemory, RuntimeObservers, RuntimeStack, SEED_PRECEDENCE_RANK, SOUND_PLAY_EVENT, SOUND_PROFILE_METRIC, STANDARD_UNITS, STORE_CALCS, STREAM_ATOMS, STRUCTURAL_EFFORT_WORDS, ScriptRuntime, SessionRootBlock, SessionRootStrategy, SnapshotClock, SoundProfileBehavior, SoundStrategy, SpanTrackingBehavior, StandardAnalyticsProfile, StartSessionAction, StartWorkoutAction, SubscriptionManager, TAG_MARKER_PREFIX, ThrowError, ThrowErrorAction, TimeSpan, TwoPassEffortResolutionProcess, TypedMemoryReference, UNITS, UnitRegistry, UnitSet, UnitsDialect, UnregisterEventHandlerAction, UpdateNextPreviewAction, VISIBILITY_ICONS, VISIBILITY_LABELS, WaitingToStartBlock, WaitingToStartInjectorBehavior, WhiteboardScript, WodDialect, YogaDialect, addAliasToEffort, addDim, applyTemplateDefaults, buildStaticLookups, buildTooltip, bundledEfforts, calculateElapsed, canonicalizeType, checkCalcLine, classifyStatements, closeCurrentSpan, collapseUnresolvedChoices, commonFixtureSet, compareStatement, compileLineForm, compilePropertySummaryCalcs, composeDivUnit, composeMulUnit, compoundName, computeColumnLabel, computeLabel, computeWorkloadRollups, convertScalar, createAnalyticsEngineForBlock, createCalcEngine, createCalcStack, createCompiler, createDialectStack, createDisciplinesTable, createEffortTable, createLineLocator, createPolicy as createMetricPresentationPolicy, createMockClock, createParser, createProfileTable, createReferenceIndex, createRpeLabelsTable, dailySessionLoads, dayBucket, dedupeEntitiesByPrecedence, dialectRegistry, dialectStack, diffStatement, dimEquals, disciplineFactorFor, documentToEffort, documentToEquipment, documentToTag, effortToDocument, equipmentToDocument, evaluate, extractEffortData, extractMetrics, extractPropertyRulesFromMeta, extractStatementRefs, extractStatements, extractStatementsRaw, extractSyntaxFacts, extractTagPropertyRules, filterTagsByVisibility, findBestFuzzyMatch, findTagContributionCycles, findUnresolvedChoices, fixtureBackSquat, fixtureBurpee, fixturePlank, fixtureRowing, fixtureRunning, fixtureUserCustom, fixtureUserOverride, formatDim, formatDuration, formatRuntimeLogLine, formatRuntimeLogRule, formatRuntimeTimestamp, formatSoundTrigger, metricsToLabel as fragmentsToLabel, fullFixtureSet, fuseUnits, fuseUnitsInMetrics, getAnalyticsFromLogs, getAnalyticsFromRuntime, getHints, getMetricVisibility, getUnit, hasHint, hintMetric, hintsToContainer, inferDim, isCastSubscription, isChoiceResolved, isDimensionless, isEffortDiscipline, isFragmentTag, isTimeLikeMetric, isWithinThreshold, levenshteinDistance, metricPresentation, mutateTimerSpans, normalizeForFuzzy, num, openSpan, outputNodeId, outputNodeIds, padRuntimeLogEvent, padRuntimeLogSubject, parseCalcLine, parseEffortFile, parseEquipmentFile, parseExpression, parseMetricLine, parseScript, parseSoundTrigger, printCalculation, readNestedSection, readTimer, realtimeProcessorRegistry, renderMetric, resolveDominantOrigin, resolveEntityRank, resolveEntityTier, resolveProfileRules, resolveSoundProfile, resolveSourceRank, resolveSourceTier, resolveTagContributions, runMetricShakeOutQueue, slugifyRefLabel, snippetCompletions, startSpan, str, strategyRegistry, subDim, summaryProcessorRegistry, tagCategoryToDocument, tagContributionMetrics, tagMarkerSlug, tagMarkerSlugs, tagMarkerType, tagToDocument, toStoredOutputStatement, truthy, validateOutputUnit, parser as whiteboardParser, whiteboardScript, whiteboardScriptCompletion, whiteboardScriptCompletionSource, whiteboardScriptLanguage, whiteboardScriptSnippets, writeChoiceSelection };
15868
+ export { ABSENT, AGGREGATE_BUILTINS, AUTHORITATIVE_CASTS, AbortSessionAction, AmrapLogicStrategy, AnalyticsEngine, AnalyticsTransformer, BUILTIN_CALCS, BUNDLED_EFFORT_COUNT, BehaviorContext, BlockBuilder, BlockContext, ButtonBehavior, COMPLETION_PROPERTY_KEYS, CONSUMED_HINTS, CONSUMED_HINT_KEYS, CONTEXT_ATOMS, CalcEngine, CalcEvalError, CalcParseError, CalcRegistrationError, CalcUnitError, CalculationRegistry, CardioDialect, ChildSelectionBehavior, ChildrenStrategy, ChoiceGroupMetric, ClearChildrenAction, ClimbDialect, ClimbMetricType, CompileAndPushBlockAction, CompletionTimestampBehavior, CompositeEffortRegistry, CompositeEquipmentRegistry, CompositePropertyRegistry, CountdownTimerBehavior, CountupTimerBehavior, CrossFitDialect, DAY, DEFAULT_RESOLVER_OPTIONS, DEFAULT_RUNTIME_OPTIONS, DEFAULT_SOUND_PROFILE, DEFAULT_UNRESOLVED_EFFORT_MET, DIM_COUNT, DIM_ENERGY, DIM_LENGTH, DIM_MASS, DIM_TIME, DIM_ZERO, DISCIPLINE_FACTORS, DialectStack, EFFORT_DATA_METRIC_TYPE, EFFORT_DISCIPLINES, EFFORT_REGISTRY_ORIGINS, EffortBlock, EffortFallbackStrategy, EffortResolver, EmitEventAction, EmitSystemOutputAction, ErrorAction, EventBus, ExecutionContext, ExitBehavior, FixtureSyntaxError, GenericGroupStrategy, GenericLoopStrategy, GenericTimerStrategy, HabitsDialect, INTENSITY_TIERS, InMemoryEffortRegistry, IntervalLogicStrategy, JitCompiler, LabelingBehavior, LocalEventProvider, LocalRuntimeSubscription, LookupRegistry, MAX_TAG_CONTRIBUTION_DEPTH, MdTimerRuntime, MemoryLocation, MemoryTypeEnum, MetricPromotionBehavior, NAMED_COMPOUNDS, NextAction, NextEvent, NextEventHandler, OutputEmitter, PRODUCTION_STRATEGIES, PROPERTY_KEY_TO_METRIC_TYPE, PopBlockAction, PushBlockAction, PushRestBlockAction, REFERENCE_PAIR_KEYS, REST_EXCLUSION, RPE_LABELS, RUNTIME_LOG_SUBJECT_WIDTH, RegisterEventHandlerAction, Registry, ReportOutputBehavior, ReportOutputStrategy, RestBlock, RoundsMetric, RuntimeAdapter, RuntimeBlock, RuntimeBuilder, RuntimeClock, RuntimeFactory, RuntimeLogger, RuntimeMemory, RuntimeObservers, RuntimeStack, SEED_PRECEDENCE_RANK, SOUND_PLAY_EVENT, SOUND_PROFILE_METRIC, STANDARD_UNITS, STORE_CALCS, STREAM_ATOMS, STRUCTURAL_EFFORT_WORDS, ScriptRuntime, SessionRootBlock, SessionRootStrategy, SnapshotClock, SoundProfileBehavior, SoundStrategy, SpanTrackingBehavior, StandardAnalyticsProfile, StartSessionAction, StartWorkoutAction, SubscriptionManager, TAG_MARKER_PREFIX, ThrowError, ThrowErrorAction, TimeSpan, TwoPassEffortResolutionProcess, TypedMemoryReference, UNITS, UnitRegistry, UnitSet, UnitsDialect, UnregisterEventHandlerAction, UpdateNextPreviewAction, VISIBILITY_ICONS, VISIBILITY_LABELS, WaitingToStartBlock, WaitingToStartInjectorBehavior, WhiteboardScript, WodDialect, YogaDialect, addAliasToEffort, addDim, applyTemplateDefaults, buildStaticLookups, buildTooltip, bundledEfforts, calculateElapsed, canonicalizeType, checkCalcLine, classifyStatements, closeCurrentSpan, collapseUnresolvedChoices, commonFixtureSet, compareStatement, compileLineForm, compilePropertySummaryCalcs, compilePropertySummaryCalcsWithDiagnostics, composeDivUnit, composeMulUnit, compoundName, computeColumnLabel, computeLabel, computeWorkloadRollups, convertScalar, createAnalyticsEngineForBlock, createCalcEngine, createCalcStack, createCompiler, createDialectStack, createDisciplinesTable, createEffortTable, createLineLocator, createPolicy as createMetricPresentationPolicy, createMockClock, createParser, createProfileTable, createReferenceIndex, createRpeLabelsTable, dailySessionLoads, dayBucket, dedupeEntitiesByPrecedence, dialectRegistry, dialectStack, diffStatement, dimEquals, disciplineFactorFor, documentToEffort, documentToEquipment, documentToTag, effortToDocument, equipmentToDocument, evaluate, extractEffortData, extractMetrics, extractPropertyRulesFromMeta, extractStatementRefs, extractStatements, extractStatementsRaw, extractSyntaxFacts, extractTagPropertyRules, filterTagsByVisibility, findBestFuzzyMatch, findTagContributionCycles, findUnresolvedChoices, fixtureBackSquat, fixtureBurpee, fixturePlank, fixtureRowing, fixtureRunning, fixtureUserCustom, fixtureUserOverride, formatDim, formatDuration, formatRuntimeLogLine, formatRuntimeLogRule, formatRuntimeTimestamp, formatSoundTrigger, metricsToLabel as fragmentsToLabel, fullFixtureSet, fuseUnits, fuseUnitsInMetrics, getAnalyticsFromLogs, getAnalyticsFromRuntime, getHints, getMetricVisibility, getUnit, hasHint, hintMetric, hintsToContainer, inferDim, isCastSubscription, isChoiceResolved, isDimensionless, isEffortDiscipline, isFragmentTag, isTimeLikeMetric, isWithinThreshold, levenshteinDistance, metricPresentation, mutateTimerSpans, normalizeForFuzzy, num, openSpan, outputNodeId, outputNodeIds, padRuntimeLogEvent, padRuntimeLogSubject, parseCalcLine, parseEffortFile, parseEquipmentFile, parseExpression, parseMetricLine, parseScript, parseSoundTrigger, printCalculation, readNestedSection, readTimer, realtimeProcessorRegistry, renderMetric, resolveDominantOrigin, resolveEntityRank, resolveEntityTier, resolveProfileRules, resolveSoundProfile, resolveSourceRank, resolveSourceTier, resolveTagContributions, runMetricShakeOutQueue, slugifyRefLabel, snippetCompletions, startSpan, str, strategyRegistry, subDim, summaryProcessorRegistry, tagCategoryToDocument, tagContributionMetrics, tagMarkerSlug, tagMarkerSlugs, tagMarkerType, tagToDocument, toStoredOutputStatement, truthy, validateOutputUnit, parser as whiteboardParser, whiteboardScript, whiteboardScriptCompletion, whiteboardScriptCompletionSource, whiteboardScriptLanguage, whiteboardScriptSnippets, writeChoiceSelection };
15763
15869
  //# sourceMappingURL=index.mjs.map
15764
15870
  //# sourceMappingURL=index.mjs.map