@bitcobblers/wod-wiki-lang 0.48.2171 → 0.48.2172

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) {
@@ -9604,34 +9618,51 @@ function extractTagPropertyRules(tags2, slugs) {
9604
9618
  for (const slug of slugs) {
9605
9619
  const resolved = resolveTagContributions(tags2, slug);
9606
9620
  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);
9621
+ const tagMetrics = {};
9622
+ const tagSummaries = {};
9623
+ const categoryMetrics = {};
9624
+ const categorySummaries = {};
9625
+ for (const involvedSlug of resolved.tags) {
9626
+ const definition = tags2.resolve(involvedSlug);
9627
+ if (!definition) continue;
9628
+ const metrics = definition.isCategory ? categoryMetrics : tagMetrics;
9629
+ const summaries = definition.isCategory ? categorySummaries : tagSummaries;
9630
+ for (const m of definition.contributions) {
9631
+ if (m.kind !== "metric") continue;
9632
+ const key = m.type.trim();
9633
+ if (!key) continue;
9634
+ if (key.startsWith("summaries.")) {
9635
+ const subKey = key.slice("summaries.".length).trim();
9636
+ if (subKey && !(subKey in summaries)) {
9637
+ summaries[subKey] = String(m.value);
9638
+ }
9639
+ } else if (!(key in metrics)) {
9640
+ metrics[key] = m.unit ? `${String(m.value)} ${m.unit}` : m.value === null || typeof m.value === "boolean" ? String(m.value) : m.value;
9616
9641
  }
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
9642
  }
9620
9643
  }
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
- });
9644
+ if (Object.keys(tagMetrics).length > 0 || Object.keys(tagSummaries).length > 0) {
9645
+ rules.push({ layer: "tag", sourceSlug: slug, metrics: tagMetrics, summaries: tagSummaries });
9646
+ }
9647
+ if (Object.keys(categoryMetrics).length > 0 || Object.keys(categorySummaries).length > 0) {
9648
+ rules.push({ layer: "category", sourceSlug: slug, metrics: categoryMetrics, summaries: categorySummaries });
9628
9649
  }
9629
9650
  }
9630
9651
  return rules;
9631
9652
  }
9653
+ var SUMMARY_LAYER_PRECEDENCE = {
9654
+ note: 6,
9655
+ tag: 5,
9656
+ effort: 4,
9657
+ equipment: 3,
9658
+ category: 1
9659
+ };
9632
9660
  function compilePropertySummaryCalcs(sources) {
9661
+ return compilePropertySummaryCalcsWithDiagnostics(sources).defs;
9662
+ }
9663
+ function compilePropertySummaryCalcsWithDiagnostics(sources) {
9633
9664
  const ordered = [...sources].sort(
9634
- (a, b) => LAYER_PRECEDENCE[b.layer] - LAYER_PRECEDENCE[a.layer]
9665
+ (a, b) => SUMMARY_LAYER_PRECEDENCE[b.layer] - SUMMARY_LAYER_PRECEDENCE[a.layer]
9635
9666
  );
9636
9667
  const chosen = /* @__PURE__ */ new Map();
9637
9668
  for (const source of ordered) {
@@ -9656,6 +9687,19 @@ function compilePropertySummaryCalcs(sources) {
9656
9687
  }
9657
9688
  }
9658
9689
  }
9690
+ const diagnostics = [];
9691
+ for (const [key, expr2] of chosen) {
9692
+ try {
9693
+ const missing = [...collectRequiredRefs(parseCalcLine(`summary = ${expr2}`).expr)].filter((ref) => !customAtomsMap.has(ref) && STREAM_ATOMS[ref] === void 0 && CONTEXT_ATOMS[ref] === void 0);
9694
+ for (const ref of missing) {
9695
+ customAtomsMap.set(ref, DIM_ZERO);
9696
+ }
9697
+ if (missing.length > 0) {
9698
+ diagnostics.push({ id: key, message: `Summary ${key}: missing ${[...new Set(missing)].join(", ")}` });
9699
+ }
9700
+ } catch {
9701
+ }
9702
+ }
9659
9703
  const customAtoms = Object.fromEntries(customAtomsMap);
9660
9704
  const defs = [];
9661
9705
  for (const [key, expr2] of chosen) {
@@ -9679,7 +9723,7 @@ function compilePropertySummaryCalcs(sources) {
9679
9723
  } catch {
9680
9724
  }
9681
9725
  }
9682
- return defs;
9726
+ return { defs, diagnostics };
9683
9727
  }
9684
9728
  function collectRequiredRefs(node, into = /* @__PURE__ */ new Set()) {
9685
9729
  if (!node) return into;
@@ -9934,6 +9978,7 @@ function runMetricShakeOutQueue(container, options) {
9934
9978
  }
9935
9979
  const unresolved = new Set(pendingEquations);
9936
9980
  const notApplicable = /* @__PURE__ */ new Set();
9981
+ const unresolvable = /* @__PURE__ */ new Set();
9937
9982
  const makeEvalContext = () => ({
9938
9983
  resolveRef: (name2) => readContainerMetricAtom(container, name2, inferredDims, options.lastEffortSlug),
9939
9984
  callFunction: (name2, args, rawArgs) => {
@@ -9957,7 +10002,12 @@ function runMetricShakeOutQueue(container, options) {
9957
10002
  continue;
9958
10003
  }
9959
10004
  const val = evaluate(rule.ast, ctx);
9960
- if (val.kind !== "number") continue;
10005
+ if (val.kind !== "number") {
10006
+ unresolved.delete(rule);
10007
+ unresolvable.add(rule);
10008
+ progressed = true;
10009
+ continue;
10010
+ }
9961
10011
  let dim = val.dim;
9962
10012
  if (rule.unit && AUTHORITATIVE_CASTS[rule.unit]) {
9963
10013
  dim = DIM_ZERO;
@@ -9989,14 +10039,8 @@ function runMetricShakeOutQueue(container, options) {
9989
10039
  const deferredRuntime = [];
9990
10040
  const diagnostics = [];
9991
10041
  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
- }
10042
+ const emitDiagnostic = (rule, missing) => {
10043
+ if (options.emitDiagnostics === false) return;
10000
10044
  const diag = {
10001
10045
  target: rule.key,
10002
10046
  expression: rule.expression,
@@ -10008,8 +10052,8 @@ function runMetricShakeOutQueue(container, options) {
10008
10052
  container.add({
10009
10053
  type: MetricType.Diagnostic,
10010
10054
  name: `diagnostic.${rule.key}`,
10011
- value: `Skipped ${rule.key}: missing ${missing.join(", ")}`,
10012
- image: `Skipped ${rule.key} (missing ${missing.join(", ")})`,
10055
+ value: `Skipped ${rule.key}: ${missing.length > 0 ? `missing ${missing.join(", ")}` : "expression could not be evaluated"}`,
10056
+ image: `Skipped ${rule.key} (${missing.length > 0 ? `missing ${missing.join(", ")}` : "expression could not be evaluated"})`,
10013
10057
  origin: "diagnostic",
10014
10058
  metadata: {
10015
10059
  diagnostic: "skipped-dependency",
@@ -10020,6 +10064,23 @@ function runMetricShakeOutQueue(container, options) {
10020
10064
  missing
10021
10065
  }
10022
10066
  });
10067
+ };
10068
+ for (const rule of unresolved) {
10069
+ if (notApplicable.has(rule)) continue;
10070
+ const missing = rule.dependencies.filter((dep) => finalCtx.resolveRef(dep).kind === "absent");
10071
+ if (missing.length === 0) continue;
10072
+ if (options.stage === "plan") {
10073
+ deferredRuntime.push(rule.key);
10074
+ continue;
10075
+ }
10076
+ emitDiagnostic(rule, missing);
10077
+ }
10078
+ for (const rule of unresolvable) {
10079
+ if (options.stage === "plan") {
10080
+ deferredRuntime.push(rule.key);
10081
+ continue;
10082
+ }
10083
+ emitDiagnostic(rule, []);
10023
10084
  }
10024
10085
  return {
10025
10086
  resolved,
@@ -12366,6 +12427,8 @@ var CalcEngine = class {
12366
12427
  activatedTags = /* @__PURE__ */ new Set();
12367
12428
  /** The tags the run activates — a note-level bundle of attachments. */
12368
12429
  runTags;
12430
+ /** Registration diagnostics are stamped once per workout, on the first leaf. */
12431
+ summaryDiagnosticsStamped = false;
12369
12432
  /**
12370
12433
  * Whether a calculation runs here.
12371
12434
  *
@@ -12402,12 +12465,41 @@ var CalcEngine = class {
12402
12465
  const appliedTags = this.appliedTags(output);
12403
12466
  const tagSources = extractTagPropertyRules(this.deps.tags, appliedTags);
12404
12467
  const allSources = [...tagSources, ...this.deps.propertySources ?? []];
12468
+ const hasExerciseStatement = output.metrics.rawMetrics.some((metric) => metric.type === MetricType.Effort && String(metric.value ?? metric.image ?? "").trim().toLowerCase() !== "rest");
12469
+ if (!this.summaryDiagnosticsStamped && (this.deps.summaryDiagnostics?.length ?? 0) > 0) {
12470
+ this.summaryDiagnosticsStamped = true;
12471
+ for (const diagnostic of this.deps.summaryDiagnostics ?? []) {
12472
+ output.metrics.add({
12473
+ type: MetricType.Diagnostic,
12474
+ name: `diagnostic.${diagnostic.id}`,
12475
+ value: diagnostic.message,
12476
+ image: diagnostic.message,
12477
+ origin: "diagnostic",
12478
+ timestamp: /* @__PURE__ */ new Date(),
12479
+ metadata: { diagnostic: "summary-registration", target: diagnostic.id }
12480
+ });
12481
+ }
12482
+ }
12405
12483
  if (allSources.length > 0) {
12484
+ const spanMs = typeof output.timeSpan?.started === "number" && typeof output.timeSpan.ended === "number" ? output.timeSpan.ended - output.timeSpan.started : 0;
12485
+ 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);
12486
+ if (spanMs > 0 && (existingElapsed === void 0 || existingElapsed === 0)) {
12487
+ output.metrics.add({
12488
+ type: MetricType.Elapsed,
12489
+ name: "elapsed",
12490
+ value: spanMs,
12491
+ unit: "ms",
12492
+ image: `${spanMs} ms`,
12493
+ origin: "analyzed",
12494
+ timestamp: /* @__PURE__ */ new Date()
12495
+ });
12496
+ }
12406
12497
  runMetricShakeOutQueue(output.metrics, {
12407
12498
  stage: "log",
12408
12499
  sources: allSources,
12409
12500
  lookups: this.deps.lookups,
12410
- lastEffortSlug: this.lastSegmentEffort
12501
+ lastEffortSlug: this.lastSegmentEffort,
12502
+ emitDiagnostics: hasExerciseStatement
12411
12503
  });
12412
12504
  }
12413
12505
  const atoms = buildSegmentAtoms(output, this.lastSegmentEffort);
@@ -13646,12 +13738,21 @@ function createCalcStack(options) {
13646
13738
  const allTagSlugs = (options.tags?.list() ?? []).map((t2) => t2.slug);
13647
13739
  const tagRules = extractTagPropertyRules(options.tags, allTagSlugs);
13648
13740
  const combinedSources = [...options.propertySources ?? [], ...tagRules];
13741
+ const diagnostics = [];
13649
13742
  if (combinedSources.length > 0) {
13650
- for (const def of compilePropertySummaryCalcs(combinedSources)) {
13651
- registry.register(def);
13743
+ const compiled = compilePropertySummaryCalcsWithDiagnostics(combinedSources);
13744
+ diagnostics.push(...compiled.diagnostics);
13745
+ for (const def of compiled.defs) {
13746
+ try {
13747
+ registry.register(def);
13748
+ } catch (err) {
13749
+ const message = `Skipped summary ${def.id}: ${err instanceof Error ? err.message : String(err)}`;
13750
+ diagnostics.push({ id: def.id, message });
13751
+ console.error(`[createCalcStack] ${message}`);
13752
+ }
13652
13753
  }
13653
13754
  }
13654
- return { lookups, registry };
13755
+ return { lookups, registry, diagnostics };
13655
13756
  }
13656
13757
  function createCalcEngine(dialect, options) {
13657
13758
  const stack = createCalcStack(options);
@@ -13661,7 +13762,8 @@ function createCalcEngine(dialect, options) {
13661
13762
  userProfile: options.userProfile,
13662
13763
  tags: options.tags,
13663
13764
  activeTags: options.activeTags,
13664
- propertySources: options.propertySources
13765
+ propertySources: options.propertySources,
13766
+ summaryDiagnostics: stack.diagnostics
13665
13767
  });
13666
13768
  }
13667
13769
 
@@ -15759,6 +15861,6 @@ function compareStatement(expectations, actual, mode) {
15759
15861
  return diffs;
15760
15862
  }
15761
15863
 
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 };
15864
+ 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
15865
  //# sourceMappingURL=index.mjs.map
15764
15866
  //# sourceMappingURL=index.mjs.map