@bitcobblers/wod-wiki-engine 0.10.41 → 0.10.42

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.cjs CHANGED
@@ -1040,13 +1040,13 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
1040
1040
  }
1041
1041
 
1042
1042
  // src/version.ts
1043
- var VERSION2 = "0.10.41";
1044
- var GIT_SHA = "1b9b771";
1045
- var BUILD_TIME = "2026-08-26T04:16:38.418Z";
1043
+ var VERSION2 = "0.10.42";
1044
+ var GIT_SHA = "79c6d18";
1045
+ var BUILD_TIME = "2026-08-26T04:44:54.356Z";
1046
1046
  var SEMVER = {
1047
- version: "0.10.41",
1048
- gitSha: "1b9b771",
1049
- buildTime: "2026-08-26T04:16:38.418Z"
1047
+ version: "0.10.42",
1048
+ gitSha: "79c6d18",
1049
+ buildTime: "2026-08-26T04:44:54.356Z"
1050
1050
  };
1051
1051
 
1052
1052
  Object.defineProperty(exports, "ABSENT", {
@@ -1785,6 +1785,10 @@ Object.defineProperty(exports, "WQL_ROLLUP_PERIODS", {
1785
1785
  enumerable: true,
1786
1786
  get: function () { return wodWikiWql.WQL_ROLLUP_PERIODS; }
1787
1787
  });
1788
+ Object.defineProperty(exports, "WQL_ROWS_SCOPE_KEYS", {
1789
+ enumerable: true,
1790
+ get: function () { return wodWikiWql.WQL_ROWS_SCOPE_KEYS; }
1791
+ });
1788
1792
  Object.defineProperty(exports, "WQL_ROWS_TARGETS", {
1789
1793
  enumerable: true,
1790
1794
  get: function () { return wodWikiWql.WQL_ROWS_TARGETS; }
@@ -1793,6 +1797,10 @@ Object.defineProperty(exports, "WQL_SOURCES", {
1793
1797
  enumerable: true,
1794
1798
  get: function () { return wodWikiWql.WQL_SOURCES; }
1795
1799
  });
1800
+ Object.defineProperty(exports, "WQL_SOURCE_VALUES", {
1801
+ enumerable: true,
1802
+ get: function () { return wodWikiWql.WQL_SOURCE_VALUES; }
1803
+ });
1796
1804
  Object.defineProperty(exports, "WQL_TAG_KEYS", {
1797
1805
  enumerable: true,
1798
1806
  get: function () { return wodWikiWql.WQL_TAG_KEYS; }
@@ -1841,6 +1849,10 @@ Object.defineProperty(exports, "isRowsQuery", {
1841
1849
  enumerable: true,
1842
1850
  get: function () { return wodWikiWql.isRowsQuery; }
1843
1851
  });
1852
+ Object.defineProperty(exports, "normalizeWql", {
1853
+ enumerable: true,
1854
+ get: function () { return wodWikiWql.normalizeWql; }
1855
+ });
1844
1856
  Object.defineProperty(exports, "parseQuery", {
1845
1857
  enumerable: true,
1846
1858
  get: function () { return wodWikiWql.parseQuery; }
@@ -1857,6 +1869,10 @@ Object.defineProperty(exports, "resolveWidgetType", {
1857
1869
  enumerable: true,
1858
1870
  get: function () { return wodWikiWql.resolveWidgetType; }
1859
1871
  });
1872
+ Object.defineProperty(exports, "serialize", {
1873
+ enumerable: true,
1874
+ get: function () { return wodWikiWql.serialize; }
1875
+ });
1860
1876
  Object.defineProperty(exports, "splitAtWhere", {
1861
1877
  enumerable: true,
1862
1878
  get: function () { return wodWikiWql.splitAtWhere; }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pack.ts","../src/store.ts","../src/ir.ts","../src/cli/parse.ts","../src/cli/run.ts","../src/cli/query.ts","../src/cli/loader.ts","../src/cli/formatters.ts","../src/cli/runner.ts","../src/version.ts"],"names":["dialectRegistry","realtimeProcessorRegistry","summaryProcessorRegistry","MetricType","getHints","createParser","toStoredOutputStatement","frozenNow","createCompiler","createMockClock","RuntimeStack","EventBus","ScriptRuntime","createAnalyticsEngineForBlock","StartSessionAction","NextEvent","toEventRows","toSummaryEventRows","bundledEfforts","parseQuery","QueryService","isFindQuery","result","isRowsQuery","data","lines","matchedCount","getFs","VERSION"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Language Pack API — umbrella sugar over per-package slices\n *\n * Implements docs/adr/language-pack-api.md.\n * Provides defineLanguagePack() factory and registerLanguagePack() fan-out\n * into core tag identity, lang dialect stack, and analytics registries.\n */\n\nimport type { IDialect } from '@bitcobblers/wod-wiki-core';\nimport type { IRealtimeProcessor, ISummaryProcessor } from '@bitcobblers/wod-wiki-lang';\nimport {\n dialectRegistry,\n realtimeProcessorRegistry,\n summaryProcessorRegistry,\n} from '@bitcobblers/wod-wiki-lang';\n\nexport interface LanguagePackIdentity {\n id?: string;\n name: string;\n tags?: readonly string[];\n aliases?: readonly string[];\n runnable?: boolean;\n}\n\nexport interface LanguagePackLangSlice {\n analyzer?: new () => IDialect;\n analytics?: ReadonlyArray<new () => IRealtimeProcessor | ISummaryProcessor>;\n}\n\nexport interface LanguagePackUiSlice {\n widgetBlock?: unknown;\n}\n\nexport interface LanguagePack {\n identity?: LanguagePackIdentity;\n lang?: LanguagePackLangSlice;\n ui?: LanguagePackUiSlice;\n}\n\nconst activePacks = new Map<string, LanguagePack>();\n\nexport function defineLanguagePack(pack: LanguagePack): LanguagePack {\n return pack;\n}\n\nexport function registerLanguagePack(pack: LanguagePack): void {\n const packId = pack.identity?.id ?? pack.identity?.name ?? 'anonymous-pack';\n activePacks.set(packId, pack);\n\n if (pack.lang?.analyzer) {\n const AnalyzerCtor = pack.lang.analyzer;\n const instance = new AnalyzerCtor();\n dialectRegistry.register(instance);\n }\n\n if (pack.lang?.analytics) {\n for (const ProcessorCtor of pack.lang.analytics) {\n const instance = new ProcessorCtor();\n if ('processOutput' in instance) {\n realtimeProcessorRegistry.register(instance as IRealtimeProcessor);\n }\n if ('processSummary' in instance) {\n summaryProcessorRegistry.register(instance as ISummaryProcessor);\n }\n }\n }\n}\n\nexport function unregisterLanguagePack(packOrId: LanguagePack | string): void {\n const packId = typeof packOrId === 'string'\n ? packOrId\n : (packOrId.identity?.id ?? packOrId.identity?.name ?? 'anonymous-pack');\n\n const pack = activePacks.get(packId);\n activePacks.delete(packId);\n\n if (pack?.lang?.analyzer) {\n const instance = new pack.lang.analyzer();\n dialectRegistry.unregister(instance.id);\n } else if (typeof packOrId === 'string') {\n dialectRegistry.unregister(packOrId);\n }\n\n if (pack?.lang?.analytics) {\n for (const ProcessorCtor of pack.lang.analytics) {\n const instance = new ProcessorCtor();\n if ('processOutput' in instance) {\n realtimeProcessorRegistry.unregister((instance as IRealtimeProcessor).id);\n }\n if ('processSummary' in instance) {\n summaryProcessorRegistry.unregister((instance as ISummaryProcessor).id);\n }\n }\n }\n}\n\nexport function listLanguagePacks(): LanguagePack[] {\n return Array.from(activePacks.values());\n}\n\nexport function getRegisteredLanguagePacks(): LanguagePack[] {\n return Array.from(activePacks.values());\n}\n","/**\n * In-memory UnifiedEventStore — the state-free store seam for QueryService,\n * the CLI query runner, and the Storybook workbench.\n *\n * Two adapters over one in-memory row list:\n * - factRowsToEventRows: legacy flat fact fixtures → summary event rows\n * - inMemoryEventStore: the UnifiedEventStore contract (ticket 003)\n */\nimport type { AnalyticsDataPoint, UnifiedEventRecord } from '@bitcobblers/wod-wiki-core';\nimport type { UnifiedEventStore } from '@bitcobblers/wod-wiki-wql';\n\n/** Wrap legacy flat fact fixtures into summary event rows — the inverse of\n * QueryService's projectEventToFacts, so golden fixtures keep working. */\nexport function factRowsToEventRows(facts: readonly AnalyticsDataPoint[]): UnifiedEventRecord[] {\n return facts.map((f, i) => {\n const metricKey = f.metricKey ?? f.type;\n return {\n id: `fact:${f.resultId}:${metricKey}:${i}`,\n resultId: f.resultId,\n noteId: f.noteId,\n blockContentId: f.blockContentId,\n pageId: f.pageId,\n origin: f.origin,\n timestamp: f.timestamp,\n grain: f.grain === 'event' ? 'event' : 'summary',\n outputType: 'analytics',\n effortSlug: f.effortSlug,\n metrics: [{\n type: metricKey,\n value: f.value,\n ...(f.unit ? { unit: f.unit } : {}),\n metadata: {\n canonicalKey: metricKey,\n ...(f.effortSlug ? { effortSlug: f.effortSlug } : {}),\n ...(f.discipline ? { effortDiscipline: f.discipline } : {}),\n ...(f.intensityTier ? { effortIntensityTier: f.intensityTier } : {}),\n },\n }],\n segmentId: f.segmentId,\n segmentVersion: f.segmentVersion,\n };\n });\n}\nexport function inMemoryEventStore(events: readonly UnifiedEventRecord[]): UnifiedEventStore {\n const rows = [...events];\n return {\n getEventsByTimeRange: async (start: number, end: number) =>\n rows.filter((r) => r.timestamp >= start && r.timestamp <= end),\n getEventsByResult: async (resultId: string) =>\n rows.filter((r) => r.resultId === resultId),\n getEventsForNote: async (noteId: string) =>\n rows.filter((r) => r.noteId === noteId),\n getEventsByContent: async (blockContentId: string) =>\n rows.filter((r) => r.blockContentId === blockContentId),\n scanAll: async () => rows,\n appendEvents: async (appended) => { rows.push(...appended); },\n finalizeSummaries: async (resultId, finals) => {\n // Ticket 005: only engine-authored summaries are finalize-owned;\n // user-authored summaries (origin 'user', e.g. wellness) are\n // reconcile-owned and must survive a result finalize.\n for (let i = rows.length - 1; i >= 0; i--) {\n const row = rows[i];\n if (row.resultId === resultId && row.grain === 'summary' && row.origin !== 'user') rows.splice(i, 1);\n }\n rows.push(...finals);\n },\n deleteEvents: async (ids) => {\n const doomed = new Set(ids);\n for (let i = rows.length - 1; i >= 0; i--) {\n if (doomed.has(rows[i].id)) rows.splice(i, 1);\n }\n },\n };\n}\n\n/** Convenience: build the store directly from legacy flat fact fixtures.\n * Note tags are a NoteQueryStore concern under the unified seam (ticket 003). */\nexport function inMemoryEventStoreFromFacts(facts: readonly AnalyticsDataPoint[]): UnifiedEventStore {\n return inMemoryEventStore(factRowsToEventRows(facts));\n}\n\n/** Backward-compatible alias for inMemoryEventStoreFromFacts. */\nexport const inMemoryFactStore = inMemoryEventStoreFromFacts;\n","/**\n * Pure JSON Intermediate Representation (IR) Schemas & Envelope\n *\n * Implements wayfinder #955 and research asset `docs/research/json-ir-schemas-2026-08-17.md`.\n * Freezes the existing result vocabulary (QueryResult, RowsQueryResult, FindQueryResult,\n * StoredOutputStatement, AnalyticsDataPoint, WorkoutResult, StatementNode) in a\n * versioned envelope safe for JSON round-trips.\n */\n\nimport type {\n ICodeStatement,\n AnalyticsDataPoint,\n Note,\n NoteSegment,\n BlockIndexRow,\n WorkoutResult,\n StoredOutputStatement,\n WorkoutResults,\n} from '@bitcobblers/wod-wiki-core';\nimport { MetricType } from '@bitcobblers/wod-wiki-core';\nimport type { IScript, IEffort } from '@bitcobblers/wod-wiki-lang';\nimport { getHints } from '@bitcobblers/wod-wiki-lang';\n\nexport type IrKind =\n | 'fact-set'\n | 'result-set'\n | 'note-set'\n | 'corpus'\n | 'query-result'\n | 'find-result'\n | 'rows-result'\n | 'parse-tree'\n | 'execution-log';\n\n/**\n * Universal JSON envelope for all headless IR fixtures and output artifacts.\n */\nexport interface WodWikiIRFile<T> {\n $schema: 'https://wod-wiki.dev/ir/v1.json';\n kind: IrKind;\n generatedAt: number;\n source: string;\n data: T;\n}\n\nexport function createIRFile<T>(\n kind: IrKind,\n data: T,\n optionsOrSource?: string | { source?: string; generatedAt?: number },\n generatedAt?: number,\n): WodWikiIRFile<T> {\n let source = 'wod:headless';\n let genAt = Date.now();\n if (typeof optionsOrSource === 'string') {\n source = optionsOrSource;\n if (generatedAt !== undefined) genAt = generatedAt;\n } else if (optionsOrSource && typeof optionsOrSource === 'object') {\n if (optionsOrSource.source) source = optionsOrSource.source;\n if (optionsOrSource.generatedAt !== undefined) genAt = optionsOrSource.generatedAt;\n }\n return {\n $schema: 'https://wod-wiki.dev/ir/v1.json',\n kind,\n generatedAt: genAt,\n source,\n data,\n };\n}\n\nexport function isIRFile<T = unknown>(obj: unknown): obj is WodWikiIRFile<T> {\n if (!obj || typeof obj !== 'object') return false;\n const cand = obj as Partial<WodWikiIRFile<T>>;\n return (\n cand.$schema === 'https://wod-wiki.dev/ir/v1.json' &&\n typeof cand.kind === 'string' &&\n typeof cand.generatedAt === 'number' &&\n typeof cand.source === 'string' &&\n 'data' in cand\n );\n}\n\n// ── Parse Tree IR Models (#955) ─────────────────────────────────────────────\n\nexport interface MetricNode {\n type: string;\n image?: string;\n value?: unknown;\n origin?: string;\n}\n\nexport interface StatementNode {\n id: number;\n type: 'statement' | 'duration' | 'rounds' | 'rest' | 'segment' | 'root';\n raw: string;\n from: number;\n to: number;\n metrics: MetricNode[];\n hints?: string[];\n children?: StatementNode[];\n}\n\nexport function statementToNode(stmt: ICodeStatement, idMap: Map<number, ICodeStatement>): StatementNode {\n const meta = stmt.meta;\n const metrics: MetricNode[] = stmt.metrics.toArray().map((m) => ({\n type: m.type as string,\n ...(m.image !== undefined ? { image: m.image } : {}),\n ...(m.value !== undefined ? { value: m.value } : {}),\n ...(m.origin !== undefined ? { origin: m.origin } : {}),\n }));\n\n const raw = meta?.raw ?? '';\n const from = meta?.startOffset ?? 0;\n const to = meta?.endOffset ?? (from + raw.length);\n\n const durationFrag = stmt.metrics.find((m) => m.type === MetricType.Duration || m.type === 'duration');\n const roundsFrag = stmt.metrics.find((m) => m.type === MetricType.Rounds || m.type === 'rounds');\n const type: StatementNode['type'] = durationFrag ? 'duration' : roundsFrag ? 'rounds' : 'statement';\n\n const hints = getHints(stmt);\n\n const childIds = (stmt.children ?? []).flat();\n const children: StatementNode[] = childIds\n .map((cid) => idMap.get(cid))\n .filter((c): c is ICodeStatement => c !== undefined)\n .map((c) => statementToNode(c, idMap));\n\n return {\n id: stmt.id,\n type,\n raw,\n from,\n to,\n metrics,\n ...(hints.length > 0 ? { hints } : {}),\n ...(children.length > 0 ? { children } : {}),\n };\n}\n\n/** Builds a StatementNode tree from a parsed WhiteboardScript. */\nexport function buildStatementTree(script: IScript): StatementNode {\n const idMap = new Map(script.statements.map((s) => [s.id, s]));\n const topLevel = script.statements.filter((s) => s.parent === undefined || !idMap.has(s.parent));\n\n if (topLevel.length === 1 && topLevel[0].children.length > 0) {\n return statementToNode(topLevel[0], idMap);\n }\n\n return {\n id: 0,\n type: 'root',\n raw: script.source,\n from: 0,\n to: script.source.length,\n metrics: [],\n children: topLevel.map((s) => statementToNode(s, idMap)),\n };\n}\n\n// ── Execution Log IR Models (#955) ──────────────────────────────────────────\n\nexport interface ExecutionLog {\n results: WorkoutResults;\n logs: StoredOutputStatement[];\n statements?: StoredOutputStatement[];\n blockKey?: string;\n sourceScript?: string;\n}\n\n// ── Corpus IR Models (#955) ─────────────────────────────────────────────────\n\nexport interface CorpusIRData {\n notes?: Note[];\n segments?: NoteSegment[];\n blocks?: BlockIndexRow[];\n results?: WorkoutResult[];\n facts?: AnalyticsDataPoint[];\n efforts?: IEffort[];\n logs?: StoredOutputStatement[];\n tags?: Record<string, string[]>;\n}\n","/**\n * Headless Parse Command Runner\n *\n * Parses Whiteboard Script source text and emits a versioned IR parse-tree envelope.\n */\n\nimport { createParser, type IScript } from '@bitcobblers/wod-wiki-lang';\nimport { createIRFile, buildStatementTree, type WodWikiIRFile, type StatementNode } from '../ir';\n\nexport class ParseSyntaxError extends Error {\n constructor(\n public readonly errors: Array<{ message: string; line?: number }>,\n message: string = 'Parse error in Whiteboard Script',\n ) {\n const details = errors.map((e) => e.message).join('; ');\n super(`${message}: ${details}`);\n this.name = 'ParseSyntaxError';\n }\n}\n\nexport interface ParseOptions {\n sport?: string;\n sourceLabel?: string;\n}\n\n/**\n * Parses Whiteboard Script source directly into a StatementNode IR envelope.\n */\nexport function runParse(\n source: string,\n options: ParseOptions = {},\n): WodWikiIRFile<StatementNode> {\n const parser = createParser();\n const script: IScript = parser.read(source, options.sport);\n\n if (script.errors && script.errors.length > 0) {\n throw new ParseSyntaxError(script.errors);\n }\n\n const tree = buildStatementTree(script);\n return createIRFile('parse-tree', tree, { source: options.sourceLabel ?? 'cli:wod parse' });\n}\n","/**\n * Headless Execution Command Runner\n *\n * Executes Whiteboard Script through JIT compiler and runtime state machine,\n * emitting a versioned execution-log IR envelope.\n */\n\nimport {\n createParser,\n type IScript,\n createCompiler,\n RuntimeStack,\n createMockClock,\n EventBus,\n ScriptRuntime,\n StartSessionAction,\n NextEvent,\n createAnalyticsEngineForBlock,\n toStoredOutputStatement,\n type INowProvider,\n frozenNow,\n} from '@bitcobblers/wod-wiki-lang';\nimport type {\n StoredOutputStatement,\n WorkoutResults,\n IOutputStatement,\n} from '@bitcobblers/wod-wiki-core';\nimport { createIRFile, type WodWikiIRFile, type ExecutionLog } from '../ir';\nimport { ParseSyntaxError } from './parse';\n\nexport interface RunOptions {\n sport?: string;\n startTime?: number;\n maxIterations?: number;\n now?: INowProvider;\n sourceLabel?: string;\n}\n\nexport function buildWorkoutResults(\n outputs: readonly IOutputStatement[],\n options: {\n readonly startTime?: number;\n readonly elapsedTime: number;\n readonly completed: boolean;\n readonly now: INowProvider;\n },\n): WorkoutResults {\n return {\n startTime: options.startTime ?? options.now.nowMs(),\n endTime: options.now.nowMs(),\n duration: options.elapsedTime,\n completed: options.completed,\n logs: outputs.map(toStoredOutputStatement),\n };\n}\n\n/**\n * Runs a workout script to completion using headless state machine and Node clock.\n */\nexport async function runExecution(\n source: string,\n options: RunOptions = {},\n): Promise<WodWikiIRFile<ExecutionLog>> {\n const parser = createParser();\n const script: IScript = parser.read(source, options.sport);\n\n if (script.errors && script.errors.length > 0) {\n throw new ParseSyntaxError(script.errors);\n }\n\n const startTime = options.startTime ?? Date.now();\n const now = options.now ?? frozenNow(new Date(startTime));\n const compiler = createCompiler();\n const clock = createMockClock(new Date(startTime));\n const stack = new RuntimeStack();\n const eventBus = new EventBus();\n\n const runtime = new ScriptRuntime(\n script as any,\n compiler,\n { stack, clock, eventBus },\n {},\n now,\n );\n\n const { engine, analyticsContext } = createAnalyticsEngineForBlock({\n id: 'cli-block',\n content: source,\n statements: script.statements,\n sport: options.sport as any,\n version: 1,\n startLine: 0,\n endLine: 0,\n dialect: 'time',\n state: 'idle',\n createdAt: Date.now(),\n });\n runtime.analyticsContext = analyticsContext;\n runtime.setAnalyticsEngine(engine);\n\n const outputs: IOutputStatement[] = [];\n runtime.subscribeToOutput((out) => {\n outputs.push(out);\n });\n\n // Start the workout session\n runtime.do(new StartSessionAction());\n\n const maxSteps = options.maxIterations ?? 5000;\n let steps = 0;\n\n while (stack.count > 0 && steps < maxSteps) {\n runtime.handle(new NextEvent(undefined, runtime.nowProvider));\n clock.advance(1000);\n steps++;\n }\n\n const workoutResults = buildWorkoutResults(outputs, {\n startTime,\n elapsedTime: steps * 1000,\n completed: stack.count === 0,\n now,\n });\n\n const logs: StoredOutputStatement[] = outputs.map(toStoredOutputStatement);\n\n return createIRFile(\n 'execution-log',\n {\n results: workoutResults,\n logs,\n statements: logs,\n },\n { source: options.sourceLabel ?? 'cli:wod run' },\n );\n}\n","/**\n * Headless WQL Query Command Runner\n *\n * Evaluates WQL queries against in-memory stores sourced from --corpus,\n * --stdin-log, or --stdin-facts, and emits a versioned IR envelope.\n */\n\nfunction getFs() {\n if (typeof globalThis.process?.versions?.node === 'undefined' && typeof (globalThis as any).Bun === 'undefined') {\n throw new Error('File system operations are only supported in Node / Bun environments');\n }\n return require('fs');\n}\nimport {\n QueryService,\n parseQuery,\n isFindQuery,\n isRowsQuery,\n type QueryResult,\n type RowsQueryResult,\n type FindQueryResult,\n type NoteQueryStore,\n type BlockQueryStore,\n type EffortQueryStore,\n} from '@bitcobblers/wod-wiki-wql';\nimport { factRowsToEventRows, inMemoryEventStore } from '../store';\nimport { toEventRows, toSummaryEventRows } from '@bitcobblers/wod-wiki-wql';\nimport type { AnalyticsDataPoint, Note, BlockIndexRow, WorkoutResult } from '@bitcobblers/wod-wiki-core';\nimport type { WorkoutResults } from '@bitcobblers/wod-wiki-core';\nimport type { IEffort } from '@bitcobblers/wod-wiki-lang';\nimport { bundledEfforts } from '@bitcobblers/wod-wiki-lang';\nimport { createIRFile, isIRFile, type WodWikiIRFile, type ExecutionLog, type CorpusIRData } from '../ir';\n\nexport class WqlSyntaxError extends Error {\n constructor(\n public readonly query: string,\n public readonly syntaxError: string,\n ) {\n super(`WQL Syntax Error in \"${query}\": ${syntaxError}`);\n this.name = 'WqlSyntaxError';\n }\n}\n\nexport interface QueryCliOptions {\n corpusPath?: string;\n stdinLog?: string;\n stdinFacts?: string;\n preferredUnit?: string;\n sourceLabel?: string;\n}\n\ninterface LoadedData {\n facts: AnalyticsDataPoint[];\n results: WorkoutResult[];\n notes: Note[];\n blocks: BlockIndexRow[];\n efforts: IEffort[];\n noteTags: Record<string, string[]>;\n}\n\nfunction factsFromExecutionLog(log: ExecutionLog, resultId: string = 'stdin-result-1'): AnalyticsDataPoint[] {\n const facts: AnalyticsDataPoint[] = [];\n for (const s of log.logs) {\n const started = s.timeSpan?.started ?? s.timestamp ?? Date.now();\n for (const m of s.metrics) {\n const mType = m.type || 'metric';\n const numVal = typeof m.value === 'number' ? m.value : Number(m.value);\n facts.push({\n id: `fact-${s.id ?? 0}-${mType}-${facts.length + 1}`,\n noteId: 'stdin-note-1',\n blockContentId: s.sourceBlockKey || 'stdin-block-1',\n segmentId: s.sourceBlockKey || 'stdin-seg-1',\n segmentVersion: 1,\n resultId,\n grain: s.outputType === 'analytics' ? 'summary' : 'event',\n type: mType,\n value: Number.isNaN(numVal) ? 0 : numVal,\n unit: m.unit,\n label: (m as any).label || mType,\n metricKey: mType,\n metricLabel: (m as any).label || mType,\n timestamp: started,\n createdAt: started,\n });\n }\n }\n return facts;\n}\n\nfunction extractPayload(rawJson: string): unknown {\n try {\n const parsed = JSON.parse(rawJson);\n if (isIRFile(parsed)) {\n return parsed.data;\n }\n return parsed;\n } catch (err) {\n throw new Error(`Failed to parse JSON input: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n\nfunction buildStoresFromData(data: LoadedData) {\n // One event stream: legacy fact fixtures wrapped as summary rows, plus\n // results-derived event + summary rows (the write path's own derivation).\n const identity = (r: (typeof data.results)[number]) => ({\n noteId: r.noteId,\n resultId: r.id,\n segmentId: r.segmentId,\n segmentVersion: r.segmentVersion,\n blockContentId: r.blockContentId,\n origin: r.origin,\n pageId: r.pageId,\n workoutTimestamp: r.createdAt,\n });\n const events = [\n ...factRowsToEventRows(data.facts),\n ...data.results.flatMap((r) => {\n const logs = r.data.logs ?? [];\n return [...toEventRows(logs, identity(r)), ...toSummaryEventRows(logs, identity(r))];\n }),\n ];\n\n const eventStore = inMemoryEventStore(events);\n\n const noteStore: NoteQueryStore = {\n getAllNotes: async () => [...data.notes],\n getNoteIdsForTag: async (tag: string) => {\n const matching = new Set<string>();\n for (const [noteId, tags] of Object.entries(data.noteTags)) {\n if (tags.includes(tag)) matching.add(noteId);\n }\n return matching;\n },\n getNoteTagLabels: async (noteId: string) => [...(data.noteTags[noteId] ?? [])],\n };\n\n const blockStore: BlockQueryStore = {\n getAllBlocks: async () => [...data.blocks],\n };\n\n const effortStore: EffortQueryStore = {\n getAllEfforts: async () => [...data.efforts] as any,\n };\n\n return { eventStore, noteStore, blockStore, effortStore };\n}\n\nexport function loadQueryData(options: QueryCliOptions): LoadedData {\n const data: LoadedData = {\n facts: [],\n results: [],\n notes: [],\n blocks: [],\n efforts: [...bundledEfforts] as any,\n noteTags: {},\n };\n\n if (options.corpusPath) {\n const fs = getFs();\n if (!fs.existsSync(options.corpusPath)) {\n throw new Error(`Corpus file not found at path: ${options.corpusPath}`);\n }\n const raw = fs.readFileSync(options.corpusPath, 'utf-8');\n const payload = extractPayload(raw);\n\n if (Array.isArray(payload)) {\n data.facts = payload as AnalyticsDataPoint[];\n } else if (payload && typeof payload === 'object') {\n const corpus = payload as CorpusIRData;\n if (corpus.facts) data.facts = corpus.facts;\n if (corpus.results) data.results = corpus.results;\n if (corpus.notes) data.notes = corpus.notes;\n if (corpus.blocks) data.blocks = corpus.blocks;\n if (corpus.efforts) data.efforts = corpus.efforts as any;\n if (corpus.tags) data.noteTags = corpus.tags;\n\n // If logs are provided without separate results, synthesize results\n if (corpus.logs && (!corpus.results || corpus.results.length === 0)) {\n const syntheticResult: WorkoutResult = {\n id: 'corpus-result-1',\n noteId: 'corpus-note-1',\n blockContentId: 'corpus-block-1',\n origin: 'journal',\n createdAt: corpus.logs[0]?.timeSpan?.started ?? Date.now(),\n data: {\n startTime: corpus.logs[0]?.timeSpan?.started ?? Date.now(),\n endTime: corpus.logs[corpus.logs.length - 1]?.timeSpan?.ended ?? Date.now(),\n duration: 0,\n completed: true,\n logs: corpus.logs,\n },\n };\n data.results = [syntheticResult];\n }\n }\n } else if (options.stdinLog) {\n const payload = extractPayload(options.stdinLog) as ExecutionLog | WorkoutResults;\n let executionLog: ExecutionLog;\n const rawLogs = (payload as any).logs ?? (payload as any).statements ?? [];\n if ('results' in payload) {\n executionLog = { results: (payload as any).results, logs: rawLogs, statements: rawLogs };\n } else {\n executionLog = { results: payload as WorkoutResults, logs: rawLogs, statements: rawLogs };\n }\n\n const resultId = 'stdin-result-1';\n const workoutResult: WorkoutResult = {\n id: resultId,\n noteId: 'stdin-note-1',\n blockContentId: 'stdin-block-1',\n origin: 'journal',\n createdAt: executionLog.results.startTime,\n data: {\n ...executionLog.results,\n logs: executionLog.logs,\n },\n };\n data.results = [workoutResult];\n data.facts = factsFromExecutionLog(executionLog, resultId);\n } else if (options.stdinFacts) {\n const payload = extractPayload(options.stdinFacts);\n if (Array.isArray(payload)) {\n data.facts = payload as AnalyticsDataPoint[];\n } else if (payload && typeof payload === 'object' && 'facts' in (payload as Record<string, unknown>)) {\n data.facts = (payload as { facts: AnalyticsDataPoint[] }).facts;\n }\n } else {\n throw new Error('No input dataset provided. Specify --corpus <path>, --stdin-log, or --stdin-facts.');\n }\n\n return data;\n}\n\n/**\n * Runs a WQL query against the provided in-memory dataset and returns a versioned IR envelope.\n */\nexport async function runQueryCli(\n wqlString: string,\n options: QueryCliOptions = {},\n): Promise<WodWikiIRFile<QueryResult | RowsQueryResult | FindQueryResult>> {\n const parsed = parseQuery(wqlString);\n if (parsed.error) {\n throw new WqlSyntaxError(wqlString, parsed.error);\n }\n\n const stores = buildStoresFromData(loadQueryData(options));\n const service = new QueryService(\n stores.eventStore,\n stores.noteStore,\n stores.blockStore,\n stores.effortStore,\n );\n\n if (isFindQuery(parsed)) {\n const result = await service.runFind(parsed);\n return createIRFile('find-result', result, { source: options.sourceLabel ?? 'cli:wod query' });\n }\n\n if (isRowsQuery(parsed)) {\n const result = await service.runRows(parsed);\n return createIRFile('rows-result', result, { source: options.sourceLabel ?? 'cli:wod query' });\n }\n\n const result = await service.runQuery(wqlString, {\n preferredUnit: options.preferredUnit,\n });\n return createIRFile('query-result', result, { source: options.sourceLabel ?? 'cli:wod query' });\n}\n","/**\n * Dynamic Language Pack Loader\n *\n * Dynamically loads and registers Language Packs passed via `--pack <module-spec>`.\n * Throws PackLoadError on failure, enabling exit code 3 handling.\n */\n\nfunction getPathUtils() {\n if (typeof globalThis.process?.versions?.node === 'undefined' && typeof (globalThis as any).Bun === 'undefined') {\n throw new Error('Path resolution is only supported in Node / Bun environments');\n }\n return {\n resolve: require('path').resolve,\n pathToFileURL: require('url').pathToFileURL,\n };\n}\nimport { registerLanguagePack, type LanguagePack } from '../pack';\n\nexport class PackLoadError extends Error {\n constructor(\n public readonly spec: string,\n public readonly originalError: unknown,\n ) {\n const msg = originalError instanceof Error ? originalError.message : String(originalError);\n super(`Failed to load Language Pack \"${spec}\": ${msg}`);\n this.name = 'PackLoadError';\n }\n}\n\n/**\n * Dynamically imports a Language Pack module and registers it.\n *\n * @param moduleSpec - Relative or absolute path, or package name.\n */\nexport async function loadLanguagePack(moduleSpec: string): Promise<LanguagePack> {\n try {\n let importPath = moduleSpec;\n\n // If it looks like a relative or absolute file path, resolve and convert to file URL\n if (\n moduleSpec.startsWith('.') ||\n moduleSpec.startsWith('/') ||\n moduleSpec.includes('\\\\') ||\n moduleSpec.endsWith('.ts') ||\n moduleSpec.endsWith('.js') ||\n moduleSpec.endsWith('.mjs')\n ) {\n const { resolve, pathToFileURL } = getPathUtils();\n const resolved = resolve(process.cwd(), moduleSpec);\n importPath = pathToFileURL(resolved).href;\n }\n const imported = await import(/* @vite-ignore */ importPath);\n const candidate = imported.default ?? imported.pack ?? imported;\n\n if (!candidate || typeof candidate !== 'object') {\n throw new Error(`Module \"${moduleSpec}\" does not export a valid LanguagePack object`);\n }\n\n const pack = candidate as LanguagePack;\n registerLanguagePack(pack);\n return pack;\n } catch (error) {\n if (error instanceof PackLoadError) throw error;\n throw new PackLoadError(moduleSpec, error);\n }\n}\n","/**\n * CLI Output Formatters (JSON, ASCII Table, CSV)\n *\n * Implements presentation formatting for parse-tree, execution-log,\n * and WQL query results across json, table, and csv formats.\n */\n\nimport type { WodWikiIRFile, StatementNode, ExecutionLog } from '../ir';\nimport type { QueryResult, RowsQueryResult, FindQueryResult } from '@bitcobblers/wod-wiki-wql';\n\nexport type OutputFormat = 'json' | 'table' | 'csv';\n\nfunction escapeCsvField(field: unknown): string {\n if (field === undefined || field === null) return '';\n const str = String(field);\n if (str.includes(',') || str.includes('\"') || str.includes('\\n') || str.includes('\\r')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\nfunction formatDate(ts: number): string {\n if (!ts) return '-';\n try {\n return new Date(ts).toISOString();\n } catch {\n return String(ts);\n }\n}\n\nfunction formatMetricValue(m: { image?: string; value?: unknown }): string {\n if (m.image) return m.image;\n if (m.value === undefined || m.value === null) return '';\n if (typeof m.value === 'object') return JSON.stringify(m.value);\n return String(m.value);\n}\n\nfunction formatMetric(m: { type?: string; image?: string; value?: unknown }): string {\n const t = m.type || 'metric';\n return `${t}:${formatMetricValue(m)}`;\n}\n\n/**\n * Format StatementNode parse tree\n */\nexport function formatParseOutput(\n ir: WodWikiIRFile<StatementNode>,\n format: OutputFormat,\n pretty: boolean = true,\n): string {\n if (format === 'json') {\n return JSON.stringify(ir, null, pretty ? 2 : undefined);\n }\n\n // Flatten nodes for table/csv representation\n const flatNodes: StatementNode[] = [];\n const walk = (node: StatementNode) => {\n flatNodes.push(node);\n for (const child of node.children ?? []) {\n walk(child);\n }\n };\n walk(ir.data);\n\n if (format === 'csv') {\n const header = 'id,type,from,to,raw,metrics,hints';\n const rows = flatNodes.map((n) =>\n [\n n.id,\n n.type,\n n.from,\n n.to,\n escapeCsvField(n.raw),\n escapeCsvField(n.metrics.map(formatMetric).join('; ')),\n escapeCsvField(n.hints?.join('; ') ?? ''),\n ].join(','),\n );\n return [header, ...rows].join('\\n');\n }\n\n // format === 'table'\n const lines: string[] = [];\n lines.push(`Parse Tree (${flatNodes.length} statements):`);\n lines.push('─'.repeat(80));\n lines.push(\n ['ID'.padEnd(6), 'Type'.padEnd(12), 'Span'.padEnd(12), 'Hints'.padEnd(20), 'Raw Text'].join(' | '),\n );\n lines.push('─'.repeat(80));\n\n for (const n of flatNodes) {\n const span = `${n.from}-${n.to}`;\n const hints = (n.hints ?? []).join(', ');\n lines.push(\n [\n String(n.id).padEnd(6),\n n.type.padEnd(12),\n span.padEnd(12),\n (hints.length > 18 ? hints.slice(0, 15) + '...' : hints).padEnd(20),\n n.raw.replace(/\\n/g, '\\\\n'),\n ].join(' | '),\n );\n }\n return lines.join('\\n');\n}\n\n/**\n * Format ExecutionLog runtime output\n */\nexport function formatExecutionOutput(\n ir: WodWikiIRFile<ExecutionLog>,\n format: OutputFormat,\n pretty: boolean = true,\n): string {\n if (format === 'json') {\n return JSON.stringify(ir, null, pretty ? 2 : undefined);\n }\n\n const { results, logs } = ir.data;\n const statements = logs;\n\n if (format === 'csv') {\n const header = 'id,outputType,started,ended,sourceBlockKey,stackLevel,completionReason,metrics,hints';\n const rows = statements.map((s) =>\n [\n s.id,\n s.outputType,\n s.timeSpan?.started ?? s.timestamp ?? 0,\n s.timeSpan?.ended ?? '',\n escapeCsvField(s.sourceBlockKey),\n s.stackLevel,\n escapeCsvField(s.completionReason ?? ''),\n escapeCsvField(s.metrics.map(formatMetric).join('; ')),\n escapeCsvField(s.hints?.join('; ') ?? ''),\n ].join(','),\n );\n return [header, ...rows].join('\\n');\n }\n\n // format === 'table'\n const lines: string[] = [];\n lines.push(`Workout Execution Results:`);\n lines.push(` Duration: ${results.duration}ms`);\n lines.push(` Completed: ${results.completed ? 'yes' : 'no'}`);\n lines.push(` Start: ${formatDate(results.startTime)}`);\n lines.push(` End: ${formatDate(results.endTime)}`);\n lines.push(` Logs: ${statements.length} statements emitted`);\n lines.push('─'.repeat(80));\n lines.push(\n ['ID'.padEnd(8), 'Type'.padEnd(12), 'Block'.padEnd(18), 'Reason'.padEnd(15), 'Metrics'].join(' | '),\n );\n lines.push('─'.repeat(80));\n\n for (const s of statements) {\n const metricsStr = s.metrics.map(formatMetric).join(', ');\n lines.push(\n [\n String(s.id).padEnd(8),\n (s.outputType ?? 'segment').padEnd(12),\n (s.sourceBlockKey ?? '-').padEnd(18),\n (s.completionReason ?? '-').padEnd(15),\n metricsStr,\n ].join(' | '),\n );\n }\n return lines.join('\\n');\n}\n\n/**\n * Format QueryResult / RowsQueryResult / FindQueryResult\n */\nexport function formatQueryOutput(\n ir: WodWikiIRFile<QueryResult | RowsQueryResult | FindQueryResult>,\n format: OutputFormat,\n pretty: boolean = true,\n): string {\n if (format === 'json') {\n return JSON.stringify(ir, null, pretty ? 2 : undefined);\n }\n\n const kind = ir.kind;\n\n if (kind === 'rows-result') {\n const data = ir.data as RowsQueryResult;\n if (format === 'csv') {\n const header = 'resultId,timestamp,outputType,eventId,metrics';\n const rows: string[] = [];\n for (const run of data.runs) {\n for (const event of run.events) {\n rows.push(\n [\n run.resultId,\n run.timestamp,\n event.outputType,\n event.id,\n escapeCsvField(event.metrics.map(formatMetric).join('; ')),\n ].join(','),\n );\n }\n }\n return [header, ...rows].join('\\n');\n }\n\n // table\n const lines: string[] = [];\n lines.push(`Rows Query Result (${data.runs.length} runs):`);\n if (data.error) lines.push(`Error: ${data.error}`);\n lines.push('─'.repeat(80));\n lines.push(\n ['Result ID'.padEnd(20), 'Date'.padEnd(24), 'Events'].join(' | '),\n );\n lines.push('─'.repeat(80));\n for (const run of data.runs) {\n lines.push(\n [\n run.resultId.padEnd(20),\n formatDate(run.timestamp).padEnd(24),\n String(run.events.length),\n ].join(' | '),\n );\n }\n return lines.join('\\n');\n }\n\n if (kind === 'find-result') {\n const data = ir.data as FindQueryResult;\n if (format === 'csv') {\n const header = 'target,id,title_or_label,sourceId';\n const rows: string[] = [];\n for (const n of data.notes) {\n rows.push(['note', n.id, escapeCsvField(n.title), escapeCsvField(n.sourceId ?? '')].join(','));\n }\n for (const b of data.blocks) {\n rows.push(['block', b.id, escapeCsvField(b.noteTitle), escapeCsvField(b.sourceId ?? '')].join(','));\n }\n for (const e of data.efforts ?? []) {\n rows.push(['effort', e.id, escapeCsvField(e.label), escapeCsvField(e.slug)].join(','));\n }\n return [header, ...rows].join('\\n');\n }\n\n // table\n const lines: string[] = [];\n const matchedCount = data.stages?.matched ?? 0;\n const selectedCount = data.stages?.selected ?? 0;\n lines.push(`Find Result (matched: ${matchedCount} / selected: ${selectedCount}):`);\n lines.push('─'.repeat(80));\n lines.push(['Type'.padEnd(8), 'ID'.padEnd(24), 'Title / Label'.padEnd(30), 'Source ID'].join(' | '));\n lines.push('─'.repeat(80));\n for (const n of data.notes) {\n lines.push(['note'.padEnd(8), n.id.padEnd(24), n.title.padEnd(30), n.sourceId ?? '-'].join(' | '));\n }\n for (const b of data.blocks) {\n lines.push(['block'.padEnd(8), b.id.padEnd(24), b.noteTitle.padEnd(30), b.sourceId ?? '-'].join(' | '));\n }\n for (const e of data.efforts ?? []) {\n lines.push(['effort'.padEnd(8), e.id.padEnd(24), e.label.padEnd(30), e.slug].join(' | '));\n }\n return lines.join('\\n');\n }\n\n // kind === 'query-result'\n const data = ir.data as QueryResult;\n if (data.scalar !== undefined && data.series.length === 0) {\n if (format === 'csv') {\n return `metric,scalar,unit\\n${escapeCsvField(data.parsed.metric)},${data.scalar},${escapeCsvField(data.unit ?? '')}`;\n }\n return `Scalar Result: ${data.scalar}${data.unit ? ' ' + data.unit : ''}`;\n }\n\n if (format === 'csv') {\n const header = 'series,timestamp,date,value,unit';\n const rows: string[] = [];\n for (const s of data.series) {\n for (const pt of s.points) {\n rows.push(\n [\n escapeCsvField(s.label || s.key),\n pt.ts,\n formatDate(pt.ts),\n pt.value,\n escapeCsvField(s.unit ?? data.unit ?? ''),\n ].join(','),\n );\n }\n }\n return [header, ...rows].join('\\n');\n }\n\n // table\n const lines: string[] = [];\n const matchedCount = (data.stages as any)?.matched ?? (data.stages as any)?.selected ?? data.matched?.length ?? 0;\n lines.push(`Query Result (${data.series.length} series, ${matchedCount} matched facts):`);\n lines.push(\n ['Series / Group'.padEnd(20), 'Timestamp'.padEnd(16), 'Date'.padEnd(24), 'Value'.padEnd(12), 'Unit'].join(' | '),\n );\n lines.push('─'.repeat(80));\n\n for (const s of data.series) {\n for (const pt of s.points) {\n lines.push(\n [\n (s.label || s.key).padEnd(20),\n String(pt.ts).padEnd(16),\n formatDate(pt.ts).padEnd(24),\n String(pt.value).padEnd(12),\n s.unit ?? data.unit ?? '-',\n ].join(' | '),\n );\n }\n }\n return lines.join('\\n');\n}\n","/**\n * Unified `wod` CLI Runner\n *\n * Implements CLI command routing, argument parsing, pipe handling,\n * and exit code conventions per wayfinder #962 and issue #967.\n *\n * Exit Codes:\n * 0 - OK / Success (including empty query results)\n * 1 - Runtime error (file missing, bad arguments, execution error)\n * 2 - Parse / Syntax error (invalid Whiteboard Script or malformed WQL)\n * 3 - Pack load error (failed to import or register --pack)\n */\n\nfunction getFs() {\n if (typeof globalThis.process?.versions?.node === 'undefined' && typeof (globalThis as any).Bun === 'undefined') {\n throw new Error('File system operations are only supported in Node / Bun environments');\n }\n return require('fs');\n}\nimport { loadLanguagePack, PackLoadError } from './loader';\nimport { runParse, ParseSyntaxError } from './parse';\nimport { runExecution } from './run';\nimport { runQueryCli, WqlSyntaxError } from './query';\nimport {\n formatParseOutput,\n formatExecutionOutput,\n formatQueryOutput,\n type OutputFormat,\n} from './formatters';\n\nconst VERSION = '0.6.0';\n\nexport interface CliParsedArgs {\n subcommand?: 'parse' | 'run' | 'query' | 'help' | 'version';\n target?: string;\n corpus?: string;\n stdinLog?: boolean;\n stdinFacts?: boolean;\n format: OutputFormat;\n output?: string;\n packs: string[];\n sport?: string;\n unit?: string;\n help?: boolean;\n version?: boolean;\n}\n\nexport function parseCliArgs(args: string[]): CliParsedArgs {\n const result: CliParsedArgs = {\n format: 'json',\n packs: [],\n };\n\n let i = 0;\n while (i < args.length) {\n const arg = args[i];\n\n if (arg === '--help' || arg === '-h') {\n result.help = true;\n i++;\n } else if (arg === '--version' || arg === '-v') {\n result.version = true;\n i++;\n } else if (arg === '--corpus' || arg === '-c') {\n result.corpus = args[++i];\n i++;\n } else if (arg === '--stdin-log') {\n result.stdinLog = true;\n i++;\n } else if (arg === '--stdin-facts') {\n result.stdinFacts = true;\n i++;\n } else if (arg === '--format') {\n const fmt = args[++i] as OutputFormat;\n if (fmt === 'json' || fmt === 'table' || fmt === 'csv') {\n result.format = fmt;\n }\n i++;\n } else if (arg.startsWith('--format=')) {\n const fmt = arg.slice('--format='.length) as OutputFormat;\n if (fmt === 'json' || fmt === 'table' || fmt === 'csv') {\n result.format = fmt;\n }\n i++;\n } else if (arg === '-o' || arg === '--output') {\n result.output = args[++i];\n i++;\n } else if (arg.startsWith('--output=')) {\n result.output = arg.slice('--output='.length);\n i++;\n } else if (arg === '--pack') {\n const packSpec = args[++i];\n if (packSpec) result.packs.push(packSpec);\n i++;\n } else if (arg.startsWith('--pack=')) {\n result.packs.push(arg.slice('--pack='.length));\n i++;\n } else if (arg === '--sport') {\n result.sport = args[++i];\n i++;\n } else if (arg === '--unit') {\n result.unit = args[++i];\n i++;\n } else if (!result.subcommand) {\n if (arg === 'parse' || arg === 'run' || arg === 'query' || arg === 'help' || arg === 'version') {\n result.subcommand = arg;\n } else {\n result.target = arg;\n }\n i++;\n } else if (!result.target) {\n result.target = arg;\n i++;\n } else {\n i++;\n }\n }\n\n return result;\n}\n\nexport async function readStdin(): Promise<string> {\n if (typeof (globalThis as any).Bun?.stdin?.text === 'function') {\n return (globalThis as any).Bun.stdin.text();\n }\n return new Promise<string>((resolve, reject) => {\n const chunks: Buffer[] = [];\n process.stdin.on('data', (chunk) => {\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);\n });\n process.stdin.on('end', () => {\n resolve(Buffer.concat(chunks).toString('utf-8'));\n });\n process.stdin.on('error', (err) => {\n reject(err);\n });\n });\n}\n\nfunction getUsageText(): string {\n return `\nwod CLI — Headless Whiteboard Language & WQL Engine runner (v${VERSION})\n\nUSAGE:\n wod parse <file | -> [options]\n wod run <file | -> [options]\n wod query '<wql-string>' [options]\n\nSUBCOMMANDS:\n parse <file | -> Parse Whiteboard Script into AST StatementNode IR (kind: 'parse-tree')\n run <file | -> Execute Whiteboard Script state machine and emit ExecutionLog IR (kind: 'execution-log')\n query '<wql>' Evaluate WQL query and emit QueryResult / RowsQueryResult / FindQueryResult IR\n\nINPUT SOURCING (for 'query'):\n -c, --corpus <path> Load historical corpus dataset from a versioned JSON file\n --stdin-log Read kind: 'execution-log' JSON payload from stdin\n --stdin-facts Read raw kind: 'fact-set' JSON payload from stdin\n\nOPTIONS:\n --format <fmt> Output format: json (default), table, csv\n -o, --output <path> Write output to a file instead of stdout\n --pack <module> Dynamically load and register a Language Pack (repeatable)\n --sport <sport> Target sport fence dialect (e.g. climbing, crossfit)\n --unit <unit> Preferred display unit for queries (e.g. lb, kg)\n -h, --help Show help message\n -v, --version Show version number\n\nEXIT CODES:\n 0 - OK / Success\n 1 - General / Runtime error\n 2 - Parse / Syntax error\n 3 - Language Pack load error\n`;\n}\n\nfunction printUsage(writer?: (text: string) => void): void {\n const text = getUsageText();\n if (writer) {\n writer(text);\n } else {\n console.log(text);\n }\n}\n\n/**\n * Main CLI entry point. Returns numeric exit code.\n */\nexport async function cliMain(\n argv: string[] = process.argv.slice(2),\n io: {\n stdout?: (text: string) => void;\n stderr?: (text: string) => void;\n readStdinFn?: () => Promise<string>;\n } = {},\n): Promise<number> {\n const writeOut = io.stdout ?? ((t: string) => process.stdout.write(t + '\\n'));\n const writeErr = io.stderr ?? ((t: string) => process.stderr.write(t + '\\n'));\n const getStdin = io.readStdinFn ?? readStdin;\n\n const parsed = parseCliArgs(argv);\n\n if (parsed.version || parsed.subcommand === 'version') {\n writeOut(`wod v${VERSION}`);\n return 0;\n }\n\n if (parsed.help || parsed.subcommand === 'help') {\n printUsage(writeOut);\n return 0;\n }\n\n if (!parsed.subcommand) {\n printUsage(writeErr);\n return 1;\n }\n // 1. Load any requested Language Packs (Exit code 3 on failure)\n for (const packSpec of parsed.packs) {\n try {\n await loadLanguagePack(packSpec);\n } catch (err) {\n if (err instanceof PackLoadError) {\n writeErr(err.message);\n } else {\n writeErr(`[wod] Language pack load error: ${err instanceof Error ? err.message : String(err)}`);\n }\n return 3;\n }\n }\n\n // Output destination helper\n const deliverOutput = (formattedText: string) => {\n if (parsed.output) {\n getFs().writeFileSync(parsed.output, formattedText, 'utf-8');\n } else {\n writeOut(formattedText);\n }\n };\n\n // 2. Dispatch subcommands\n try {\n if (parsed.subcommand === 'parse') {\n if (!parsed.target) {\n writeErr('[wod parse] Error: Missing input file or \"-\" for stdin');\n return 1;\n }\n\n let source: string;\n if (parsed.target === '-') {\n source = await getStdin();\n } else {\n const fs = getFs();\n if (!fs.existsSync(parsed.target)) {\n writeErr(`[wod parse] File not found: ${parsed.target}`);\n return 1;\n }\n source = fs.readFileSync(parsed.target, 'utf-8');\n }\n\n const ir = runParse(source, { sport: parsed.sport, sourceLabel: `cli:wod parse ${parsed.target}` });\n const pretty = !parsed.output && Boolean(process.stdout.isTTY);\n const formatted = formatParseOutput(ir, parsed.format, pretty);\n deliverOutput(formatted);\n return 0;\n }\n\n if (parsed.subcommand === 'run') {\n if (!parsed.target) {\n writeErr('[wod run] Error: Missing input file or \"-\" for stdin');\n return 1;\n }\n\n let source: string;\n if (parsed.target === '-') {\n source = await getStdin();\n } else {\n const fs = getFs();\n if (!fs.existsSync(parsed.target)) {\n writeErr(`[wod run] File not found: ${parsed.target}`);\n return 1;\n }\n source = fs.readFileSync(parsed.target, 'utf-8');\n }\n\n const ir = await runExecution(source, { sport: parsed.sport, sourceLabel: `cli:wod run ${parsed.target}` });\n const pretty = !parsed.output && Boolean(process.stdout.isTTY);\n const formatted = formatExecutionOutput(ir, parsed.format, pretty);\n deliverOutput(formatted);\n return 0;\n }\n\n if (parsed.subcommand === 'query') {\n if (!parsed.target) {\n writeErr('[wod query] Error: Missing WQL query argument');\n return 1;\n }\n\n let stdinLogContent: string | undefined;\n let stdinFactsContent: string | undefined;\n\n if (parsed.stdinLog) {\n stdinLogContent = await getStdin();\n } else if (parsed.stdinFacts) {\n stdinFactsContent = await getStdin();\n } else if (!parsed.corpus) {\n writeErr('[wod query] Error: Query requires input data. Specify --corpus <file>, --stdin-log, or --stdin-facts.');\n return 1;\n }\n\n const ir = await runQueryCli(parsed.target, {\n corpusPath: parsed.corpus,\n stdinLog: stdinLogContent,\n stdinFacts: stdinFactsContent,\n preferredUnit: parsed.unit,\n sourceLabel: `cli:wod query \"${parsed.target}\"`,\n });\n\n const pretty = !parsed.output && Boolean(process.stdout.isTTY);\n const formatted = formatQueryOutput(ir, parsed.format, pretty);\n deliverOutput(formatted);\n return 0;\n }\n\n writeErr(`[wod] Unknown subcommand \"${parsed.subcommand}\"`);\n return 1;\n } catch (error) {\n if (error instanceof ParseSyntaxError || error instanceof WqlSyntaxError) {\n writeErr(error.message);\n return 2;\n }\n if (error instanceof PackLoadError) {\n writeErr(error.message);\n return 3;\n }\n writeErr(`[wod] Error: ${error instanceof Error ? error.message : String(error)}`);\n return 1;\n }\n}\n","/**\n * Auto-generated build version metadata.\n * Do not edit directly; updated by scripts/stamp-version.ts\n */\nexport const VERSION = '0.10.41';\nexport const GIT_SHA = '1b9b771';\nexport const BUILD_TIME = '2026-08-26T04:16:38.418Z';\nexport const SEMVER = {\n version: '0.10.41',\n gitSha: '1b9b771',\n buildTime: '2026-08-26T04:16:38.418Z',\n} as const;\n"]}
1
+ {"version":3,"sources":["../src/pack.ts","../src/store.ts","../src/ir.ts","../src/cli/parse.ts","../src/cli/run.ts","../src/cli/query.ts","../src/cli/loader.ts","../src/cli/formatters.ts","../src/cli/runner.ts","../src/version.ts"],"names":["dialectRegistry","realtimeProcessorRegistry","summaryProcessorRegistry","MetricType","getHints","createParser","toStoredOutputStatement","frozenNow","createCompiler","createMockClock","RuntimeStack","EventBus","ScriptRuntime","createAnalyticsEngineForBlock","StartSessionAction","NextEvent","toEventRows","toSummaryEventRows","bundledEfforts","parseQuery","QueryService","isFindQuery","result","isRowsQuery","data","lines","matchedCount","getFs","VERSION"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Language Pack API — umbrella sugar over per-package slices\n *\n * Implements docs/adr/language-pack-api.md.\n * Provides defineLanguagePack() factory and registerLanguagePack() fan-out\n * into core tag identity, lang dialect stack, and analytics registries.\n */\n\nimport type { IDialect } from '@bitcobblers/wod-wiki-core';\nimport type { IRealtimeProcessor, ISummaryProcessor } from '@bitcobblers/wod-wiki-lang';\nimport {\n dialectRegistry,\n realtimeProcessorRegistry,\n summaryProcessorRegistry,\n} from '@bitcobblers/wod-wiki-lang';\n\nexport interface LanguagePackIdentity {\n id?: string;\n name: string;\n tags?: readonly string[];\n aliases?: readonly string[];\n runnable?: boolean;\n}\n\nexport interface LanguagePackLangSlice {\n analyzer?: new () => IDialect;\n analytics?: ReadonlyArray<new () => IRealtimeProcessor | ISummaryProcessor>;\n}\n\nexport interface LanguagePackUiSlice {\n widgetBlock?: unknown;\n}\n\nexport interface LanguagePack {\n identity?: LanguagePackIdentity;\n lang?: LanguagePackLangSlice;\n ui?: LanguagePackUiSlice;\n}\n\nconst activePacks = new Map<string, LanguagePack>();\n\nexport function defineLanguagePack(pack: LanguagePack): LanguagePack {\n return pack;\n}\n\nexport function registerLanguagePack(pack: LanguagePack): void {\n const packId = pack.identity?.id ?? pack.identity?.name ?? 'anonymous-pack';\n activePacks.set(packId, pack);\n\n if (pack.lang?.analyzer) {\n const AnalyzerCtor = pack.lang.analyzer;\n const instance = new AnalyzerCtor();\n dialectRegistry.register(instance);\n }\n\n if (pack.lang?.analytics) {\n for (const ProcessorCtor of pack.lang.analytics) {\n const instance = new ProcessorCtor();\n if ('processOutput' in instance) {\n realtimeProcessorRegistry.register(instance as IRealtimeProcessor);\n }\n if ('processSummary' in instance) {\n summaryProcessorRegistry.register(instance as ISummaryProcessor);\n }\n }\n }\n}\n\nexport function unregisterLanguagePack(packOrId: LanguagePack | string): void {\n const packId = typeof packOrId === 'string'\n ? packOrId\n : (packOrId.identity?.id ?? packOrId.identity?.name ?? 'anonymous-pack');\n\n const pack = activePacks.get(packId);\n activePacks.delete(packId);\n\n if (pack?.lang?.analyzer) {\n const instance = new pack.lang.analyzer();\n dialectRegistry.unregister(instance.id);\n } else if (typeof packOrId === 'string') {\n dialectRegistry.unregister(packOrId);\n }\n\n if (pack?.lang?.analytics) {\n for (const ProcessorCtor of pack.lang.analytics) {\n const instance = new ProcessorCtor();\n if ('processOutput' in instance) {\n realtimeProcessorRegistry.unregister((instance as IRealtimeProcessor).id);\n }\n if ('processSummary' in instance) {\n summaryProcessorRegistry.unregister((instance as ISummaryProcessor).id);\n }\n }\n }\n}\n\nexport function listLanguagePacks(): LanguagePack[] {\n return Array.from(activePacks.values());\n}\n\nexport function getRegisteredLanguagePacks(): LanguagePack[] {\n return Array.from(activePacks.values());\n}\n","/**\n * In-memory UnifiedEventStore — the state-free store seam for QueryService,\n * the CLI query runner, and the Storybook workbench.\n *\n * Two adapters over one in-memory row list:\n * - factRowsToEventRows: legacy flat fact fixtures → summary event rows\n * - inMemoryEventStore: the UnifiedEventStore contract (ticket 003)\n */\nimport type { AnalyticsDataPoint, UnifiedEventRecord } from '@bitcobblers/wod-wiki-core';\nimport type { UnifiedEventStore } from '@bitcobblers/wod-wiki-wql';\n\n/** Wrap legacy flat fact fixtures into summary event rows — the inverse of\n * QueryService's projectEventToFacts, so golden fixtures keep working. */\nexport function factRowsToEventRows(facts: readonly AnalyticsDataPoint[]): UnifiedEventRecord[] {\n return facts.map((f, i) => {\n const metricKey = f.metricKey ?? f.type;\n return {\n id: `fact:${f.resultId}:${metricKey}:${i}`,\n resultId: f.resultId,\n noteId: f.noteId,\n blockContentId: f.blockContentId,\n pageId: f.pageId,\n origin: f.origin,\n timestamp: f.timestamp,\n grain: f.grain === 'event' ? 'event' : 'summary',\n outputType: 'analytics',\n effortSlug: f.effortSlug,\n metrics: [{\n type: metricKey,\n value: f.value,\n ...(f.unit ? { unit: f.unit } : {}),\n metadata: {\n canonicalKey: metricKey,\n ...(f.effortSlug ? { effortSlug: f.effortSlug } : {}),\n ...(f.discipline ? { effortDiscipline: f.discipline } : {}),\n ...(f.intensityTier ? { effortIntensityTier: f.intensityTier } : {}),\n },\n }],\n segmentId: f.segmentId,\n segmentVersion: f.segmentVersion,\n };\n });\n}\nexport function inMemoryEventStore(events: readonly UnifiedEventRecord[]): UnifiedEventStore {\n const rows = [...events];\n return {\n getEventsByTimeRange: async (start: number, end: number) =>\n rows.filter((r) => r.timestamp >= start && r.timestamp <= end),\n getEventsByResult: async (resultId: string) =>\n rows.filter((r) => r.resultId === resultId),\n getEventsForNote: async (noteId: string) =>\n rows.filter((r) => r.noteId === noteId),\n getEventsByContent: async (blockContentId: string) =>\n rows.filter((r) => r.blockContentId === blockContentId),\n scanAll: async () => rows,\n appendEvents: async (appended) => { rows.push(...appended); },\n finalizeSummaries: async (resultId, finals) => {\n // Ticket 005: only engine-authored summaries are finalize-owned;\n // user-authored summaries (origin 'user', e.g. wellness) are\n // reconcile-owned and must survive a result finalize.\n for (let i = rows.length - 1; i >= 0; i--) {\n const row = rows[i];\n if (row.resultId === resultId && row.grain === 'summary' && row.origin !== 'user') rows.splice(i, 1);\n }\n rows.push(...finals);\n },\n deleteEvents: async (ids) => {\n const doomed = new Set(ids);\n for (let i = rows.length - 1; i >= 0; i--) {\n if (doomed.has(rows[i].id)) rows.splice(i, 1);\n }\n },\n };\n}\n\n/** Convenience: build the store directly from legacy flat fact fixtures.\n * Note tags are a NoteQueryStore concern under the unified seam (ticket 003). */\nexport function inMemoryEventStoreFromFacts(facts: readonly AnalyticsDataPoint[]): UnifiedEventStore {\n return inMemoryEventStore(factRowsToEventRows(facts));\n}\n\n/** Backward-compatible alias for inMemoryEventStoreFromFacts. */\nexport const inMemoryFactStore = inMemoryEventStoreFromFacts;\n","/**\n * Pure JSON Intermediate Representation (IR) Schemas & Envelope\n *\n * Implements wayfinder #955 and research asset `docs/research/json-ir-schemas-2026-08-17.md`.\n * Freezes the existing result vocabulary (QueryResult, RowsQueryResult, FindQueryResult,\n * StoredOutputStatement, AnalyticsDataPoint, WorkoutResult, StatementNode) in a\n * versioned envelope safe for JSON round-trips.\n */\n\nimport type {\n ICodeStatement,\n AnalyticsDataPoint,\n Note,\n NoteSegment,\n BlockIndexRow,\n WorkoutResult,\n StoredOutputStatement,\n WorkoutResults,\n} from '@bitcobblers/wod-wiki-core';\nimport { MetricType } from '@bitcobblers/wod-wiki-core';\nimport type { IScript, IEffort } from '@bitcobblers/wod-wiki-lang';\nimport { getHints } from '@bitcobblers/wod-wiki-lang';\n\nexport type IrKind =\n | 'fact-set'\n | 'result-set'\n | 'note-set'\n | 'corpus'\n | 'query-result'\n | 'find-result'\n | 'rows-result'\n | 'parse-tree'\n | 'execution-log';\n\n/**\n * Universal JSON envelope for all headless IR fixtures and output artifacts.\n */\nexport interface WodWikiIRFile<T> {\n $schema: 'https://wod-wiki.dev/ir/v1.json';\n kind: IrKind;\n generatedAt: number;\n source: string;\n data: T;\n}\n\nexport function createIRFile<T>(\n kind: IrKind,\n data: T,\n optionsOrSource?: string | { source?: string; generatedAt?: number },\n generatedAt?: number,\n): WodWikiIRFile<T> {\n let source = 'wod:headless';\n let genAt = Date.now();\n if (typeof optionsOrSource === 'string') {\n source = optionsOrSource;\n if (generatedAt !== undefined) genAt = generatedAt;\n } else if (optionsOrSource && typeof optionsOrSource === 'object') {\n if (optionsOrSource.source) source = optionsOrSource.source;\n if (optionsOrSource.generatedAt !== undefined) genAt = optionsOrSource.generatedAt;\n }\n return {\n $schema: 'https://wod-wiki.dev/ir/v1.json',\n kind,\n generatedAt: genAt,\n source,\n data,\n };\n}\n\nexport function isIRFile<T = unknown>(obj: unknown): obj is WodWikiIRFile<T> {\n if (!obj || typeof obj !== 'object') return false;\n const cand = obj as Partial<WodWikiIRFile<T>>;\n return (\n cand.$schema === 'https://wod-wiki.dev/ir/v1.json' &&\n typeof cand.kind === 'string' &&\n typeof cand.generatedAt === 'number' &&\n typeof cand.source === 'string' &&\n 'data' in cand\n );\n}\n\n// ── Parse Tree IR Models (#955) ─────────────────────────────────────────────\n\nexport interface MetricNode {\n type: string;\n image?: string;\n value?: unknown;\n origin?: string;\n}\n\nexport interface StatementNode {\n id: number;\n type: 'statement' | 'duration' | 'rounds' | 'rest' | 'segment' | 'root';\n raw: string;\n from: number;\n to: number;\n metrics: MetricNode[];\n hints?: string[];\n children?: StatementNode[];\n}\n\nexport function statementToNode(stmt: ICodeStatement, idMap: Map<number, ICodeStatement>): StatementNode {\n const meta = stmt.meta;\n const metrics: MetricNode[] = stmt.metrics.toArray().map((m) => ({\n type: m.type as string,\n ...(m.image !== undefined ? { image: m.image } : {}),\n ...(m.value !== undefined ? { value: m.value } : {}),\n ...(m.origin !== undefined ? { origin: m.origin } : {}),\n }));\n\n const raw = meta?.raw ?? '';\n const from = meta?.startOffset ?? 0;\n const to = meta?.endOffset ?? (from + raw.length);\n\n const durationFrag = stmt.metrics.find((m) => m.type === MetricType.Duration || m.type === 'duration');\n const roundsFrag = stmt.metrics.find((m) => m.type === MetricType.Rounds || m.type === 'rounds');\n const type: StatementNode['type'] = durationFrag ? 'duration' : roundsFrag ? 'rounds' : 'statement';\n\n const hints = getHints(stmt);\n\n const childIds = (stmt.children ?? []).flat();\n const children: StatementNode[] = childIds\n .map((cid) => idMap.get(cid))\n .filter((c): c is ICodeStatement => c !== undefined)\n .map((c) => statementToNode(c, idMap));\n\n return {\n id: stmt.id,\n type,\n raw,\n from,\n to,\n metrics,\n ...(hints.length > 0 ? { hints } : {}),\n ...(children.length > 0 ? { children } : {}),\n };\n}\n\n/** Builds a StatementNode tree from a parsed WhiteboardScript. */\nexport function buildStatementTree(script: IScript): StatementNode {\n const idMap = new Map(script.statements.map((s) => [s.id, s]));\n const topLevel = script.statements.filter((s) => s.parent === undefined || !idMap.has(s.parent));\n\n if (topLevel.length === 1 && topLevel[0].children.length > 0) {\n return statementToNode(topLevel[0], idMap);\n }\n\n return {\n id: 0,\n type: 'root',\n raw: script.source,\n from: 0,\n to: script.source.length,\n metrics: [],\n children: topLevel.map((s) => statementToNode(s, idMap)),\n };\n}\n\n// ── Execution Log IR Models (#955) ──────────────────────────────────────────\n\nexport interface ExecutionLog {\n results: WorkoutResults;\n logs: StoredOutputStatement[];\n statements?: StoredOutputStatement[];\n blockKey?: string;\n sourceScript?: string;\n}\n\n// ── Corpus IR Models (#955) ─────────────────────────────────────────────────\n\nexport interface CorpusIRData {\n notes?: Note[];\n segments?: NoteSegment[];\n blocks?: BlockIndexRow[];\n results?: WorkoutResult[];\n facts?: AnalyticsDataPoint[];\n efforts?: IEffort[];\n logs?: StoredOutputStatement[];\n tags?: Record<string, string[]>;\n}\n","/**\n * Headless Parse Command Runner\n *\n * Parses Whiteboard Script source text and emits a versioned IR parse-tree envelope.\n */\n\nimport { createParser, type IScript } from '@bitcobblers/wod-wiki-lang';\nimport { createIRFile, buildStatementTree, type WodWikiIRFile, type StatementNode } from '../ir';\n\nexport class ParseSyntaxError extends Error {\n constructor(\n public readonly errors: Array<{ message: string; line?: number }>,\n message: string = 'Parse error in Whiteboard Script',\n ) {\n const details = errors.map((e) => e.message).join('; ');\n super(`${message}: ${details}`);\n this.name = 'ParseSyntaxError';\n }\n}\n\nexport interface ParseOptions {\n sport?: string;\n sourceLabel?: string;\n}\n\n/**\n * Parses Whiteboard Script source directly into a StatementNode IR envelope.\n */\nexport function runParse(\n source: string,\n options: ParseOptions = {},\n): WodWikiIRFile<StatementNode> {\n const parser = createParser();\n const script: IScript = parser.read(source, options.sport);\n\n if (script.errors && script.errors.length > 0) {\n throw new ParseSyntaxError(script.errors);\n }\n\n const tree = buildStatementTree(script);\n return createIRFile('parse-tree', tree, { source: options.sourceLabel ?? 'cli:wod parse' });\n}\n","/**\n * Headless Execution Command Runner\n *\n * Executes Whiteboard Script through JIT compiler and runtime state machine,\n * emitting a versioned execution-log IR envelope.\n */\n\nimport {\n createParser,\n type IScript,\n createCompiler,\n RuntimeStack,\n createMockClock,\n EventBus,\n ScriptRuntime,\n StartSessionAction,\n NextEvent,\n createAnalyticsEngineForBlock,\n toStoredOutputStatement,\n type INowProvider,\n frozenNow,\n} from '@bitcobblers/wod-wiki-lang';\nimport type {\n StoredOutputStatement,\n WorkoutResults,\n IOutputStatement,\n} from '@bitcobblers/wod-wiki-core';\nimport { createIRFile, type WodWikiIRFile, type ExecutionLog } from '../ir';\nimport { ParseSyntaxError } from './parse';\n\nexport interface RunOptions {\n sport?: string;\n startTime?: number;\n maxIterations?: number;\n now?: INowProvider;\n sourceLabel?: string;\n}\n\nexport function buildWorkoutResults(\n outputs: readonly IOutputStatement[],\n options: {\n readonly startTime?: number;\n readonly elapsedTime: number;\n readonly completed: boolean;\n readonly now: INowProvider;\n },\n): WorkoutResults {\n return {\n startTime: options.startTime ?? options.now.nowMs(),\n endTime: options.now.nowMs(),\n duration: options.elapsedTime,\n completed: options.completed,\n logs: outputs.map(toStoredOutputStatement),\n };\n}\n\n/**\n * Runs a workout script to completion using headless state machine and Node clock.\n */\nexport async function runExecution(\n source: string,\n options: RunOptions = {},\n): Promise<WodWikiIRFile<ExecutionLog>> {\n const parser = createParser();\n const script: IScript = parser.read(source, options.sport);\n\n if (script.errors && script.errors.length > 0) {\n throw new ParseSyntaxError(script.errors);\n }\n\n const startTime = options.startTime ?? Date.now();\n const now = options.now ?? frozenNow(new Date(startTime));\n const compiler = createCompiler();\n const clock = createMockClock(new Date(startTime));\n const stack = new RuntimeStack();\n const eventBus = new EventBus();\n\n const runtime = new ScriptRuntime(\n script as any,\n compiler,\n { stack, clock, eventBus },\n {},\n now,\n );\n\n const { engine, analyticsContext } = createAnalyticsEngineForBlock({\n id: 'cli-block',\n content: source,\n statements: script.statements,\n sport: options.sport as any,\n version: 1,\n startLine: 0,\n endLine: 0,\n dialect: 'time',\n state: 'idle',\n createdAt: Date.now(),\n });\n runtime.analyticsContext = analyticsContext;\n runtime.setAnalyticsEngine(engine);\n\n const outputs: IOutputStatement[] = [];\n runtime.subscribeToOutput((out) => {\n outputs.push(out);\n });\n\n // Start the workout session\n runtime.do(new StartSessionAction());\n\n const maxSteps = options.maxIterations ?? 5000;\n let steps = 0;\n\n while (stack.count > 0 && steps < maxSteps) {\n runtime.handle(new NextEvent(undefined, runtime.nowProvider));\n clock.advance(1000);\n steps++;\n }\n\n const workoutResults = buildWorkoutResults(outputs, {\n startTime,\n elapsedTime: steps * 1000,\n completed: stack.count === 0,\n now,\n });\n\n const logs: StoredOutputStatement[] = outputs.map(toStoredOutputStatement);\n\n return createIRFile(\n 'execution-log',\n {\n results: workoutResults,\n logs,\n statements: logs,\n },\n { source: options.sourceLabel ?? 'cli:wod run' },\n );\n}\n","/**\n * Headless WQL Query Command Runner\n *\n * Evaluates WQL queries against in-memory stores sourced from --corpus,\n * --stdin-log, or --stdin-facts, and emits a versioned IR envelope.\n */\n\nfunction getFs() {\n if (typeof globalThis.process?.versions?.node === 'undefined' && typeof (globalThis as any).Bun === 'undefined') {\n throw new Error('File system operations are only supported in Node / Bun environments');\n }\n return require('fs');\n}\nimport {\n QueryService,\n parseQuery,\n isFindQuery,\n isRowsQuery,\n type QueryResult,\n type RowsQueryResult,\n type FindQueryResult,\n type NoteQueryStore,\n type BlockQueryStore,\n type EffortQueryStore,\n} from '@bitcobblers/wod-wiki-wql';\nimport { factRowsToEventRows, inMemoryEventStore } from '../store';\nimport { toEventRows, toSummaryEventRows } from '@bitcobblers/wod-wiki-wql';\nimport type { AnalyticsDataPoint, Note, BlockIndexRow, WorkoutResult } from '@bitcobblers/wod-wiki-core';\nimport type { WorkoutResults } from '@bitcobblers/wod-wiki-core';\nimport type { IEffort } from '@bitcobblers/wod-wiki-lang';\nimport { bundledEfforts } from '@bitcobblers/wod-wiki-lang';\nimport { createIRFile, isIRFile, type WodWikiIRFile, type ExecutionLog, type CorpusIRData } from '../ir';\n\nexport class WqlSyntaxError extends Error {\n constructor(\n public readonly query: string,\n public readonly syntaxError: string,\n ) {\n super(`WQL Syntax Error in \"${query}\": ${syntaxError}`);\n this.name = 'WqlSyntaxError';\n }\n}\n\nexport interface QueryCliOptions {\n corpusPath?: string;\n stdinLog?: string;\n stdinFacts?: string;\n preferredUnit?: string;\n sourceLabel?: string;\n}\n\ninterface LoadedData {\n facts: AnalyticsDataPoint[];\n results: WorkoutResult[];\n notes: Note[];\n blocks: BlockIndexRow[];\n efforts: IEffort[];\n noteTags: Record<string, string[]>;\n}\n\nfunction factsFromExecutionLog(log: ExecutionLog, resultId: string = 'stdin-result-1'): AnalyticsDataPoint[] {\n const facts: AnalyticsDataPoint[] = [];\n for (const s of log.logs) {\n const started = s.timeSpan?.started ?? s.timestamp ?? Date.now();\n for (const m of s.metrics) {\n const mType = m.type || 'metric';\n const numVal = typeof m.value === 'number' ? m.value : Number(m.value);\n facts.push({\n id: `fact-${s.id ?? 0}-${mType}-${facts.length + 1}`,\n noteId: 'stdin-note-1',\n blockContentId: s.sourceBlockKey || 'stdin-block-1',\n segmentId: s.sourceBlockKey || 'stdin-seg-1',\n segmentVersion: 1,\n resultId,\n grain: s.outputType === 'analytics' ? 'summary' : 'event',\n type: mType,\n value: Number.isNaN(numVal) ? 0 : numVal,\n unit: m.unit,\n label: (m as any).label || mType,\n metricKey: mType,\n metricLabel: (m as any).label || mType,\n timestamp: started,\n createdAt: started,\n });\n }\n }\n return facts;\n}\n\nfunction extractPayload(rawJson: string): unknown {\n try {\n const parsed = JSON.parse(rawJson);\n if (isIRFile(parsed)) {\n return parsed.data;\n }\n return parsed;\n } catch (err) {\n throw new Error(`Failed to parse JSON input: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n\nfunction buildStoresFromData(data: LoadedData) {\n // One event stream: legacy fact fixtures wrapped as summary rows, plus\n // results-derived event + summary rows (the write path's own derivation).\n const identity = (r: (typeof data.results)[number]) => ({\n noteId: r.noteId,\n resultId: r.id,\n segmentId: r.segmentId,\n segmentVersion: r.segmentVersion,\n blockContentId: r.blockContentId,\n origin: r.origin,\n pageId: r.pageId,\n workoutTimestamp: r.createdAt,\n });\n const events = [\n ...factRowsToEventRows(data.facts),\n ...data.results.flatMap((r) => {\n const logs = r.data.logs ?? [];\n return [...toEventRows(logs, identity(r)), ...toSummaryEventRows(logs, identity(r))];\n }),\n ];\n\n const eventStore = inMemoryEventStore(events);\n\n const noteStore: NoteQueryStore = {\n getAllNotes: async () => [...data.notes],\n getNoteIdsForTag: async (tag: string) => {\n const matching = new Set<string>();\n for (const [noteId, tags] of Object.entries(data.noteTags)) {\n if (tags.includes(tag)) matching.add(noteId);\n }\n return matching;\n },\n getNoteTagLabels: async (noteId: string) => [...(data.noteTags[noteId] ?? [])],\n };\n\n const blockStore: BlockQueryStore = {\n getAllBlocks: async () => [...data.blocks],\n };\n\n const effortStore: EffortQueryStore = {\n getAllEfforts: async () => [...data.efforts] as any,\n };\n\n return { eventStore, noteStore, blockStore, effortStore };\n}\n\nexport function loadQueryData(options: QueryCliOptions): LoadedData {\n const data: LoadedData = {\n facts: [],\n results: [],\n notes: [],\n blocks: [],\n efforts: [...bundledEfforts] as any,\n noteTags: {},\n };\n\n if (options.corpusPath) {\n const fs = getFs();\n if (!fs.existsSync(options.corpusPath)) {\n throw new Error(`Corpus file not found at path: ${options.corpusPath}`);\n }\n const raw = fs.readFileSync(options.corpusPath, 'utf-8');\n const payload = extractPayload(raw);\n\n if (Array.isArray(payload)) {\n data.facts = payload as AnalyticsDataPoint[];\n } else if (payload && typeof payload === 'object') {\n const corpus = payload as CorpusIRData;\n if (corpus.facts) data.facts = corpus.facts;\n if (corpus.results) data.results = corpus.results;\n if (corpus.notes) data.notes = corpus.notes;\n if (corpus.blocks) data.blocks = corpus.blocks;\n if (corpus.efforts) data.efforts = corpus.efforts as any;\n if (corpus.tags) data.noteTags = corpus.tags;\n\n // If logs are provided without separate results, synthesize results\n if (corpus.logs && (!corpus.results || corpus.results.length === 0)) {\n const syntheticResult: WorkoutResult = {\n id: 'corpus-result-1',\n noteId: 'corpus-note-1',\n blockContentId: 'corpus-block-1',\n origin: 'journal',\n createdAt: corpus.logs[0]?.timeSpan?.started ?? Date.now(),\n data: {\n startTime: corpus.logs[0]?.timeSpan?.started ?? Date.now(),\n endTime: corpus.logs[corpus.logs.length - 1]?.timeSpan?.ended ?? Date.now(),\n duration: 0,\n completed: true,\n logs: corpus.logs,\n },\n };\n data.results = [syntheticResult];\n }\n }\n } else if (options.stdinLog) {\n const payload = extractPayload(options.stdinLog) as ExecutionLog | WorkoutResults;\n let executionLog: ExecutionLog;\n const rawLogs = (payload as any).logs ?? (payload as any).statements ?? [];\n if ('results' in payload) {\n executionLog = { results: (payload as any).results, logs: rawLogs, statements: rawLogs };\n } else {\n executionLog = { results: payload as WorkoutResults, logs: rawLogs, statements: rawLogs };\n }\n\n const resultId = 'stdin-result-1';\n const workoutResult: WorkoutResult = {\n id: resultId,\n noteId: 'stdin-note-1',\n blockContentId: 'stdin-block-1',\n origin: 'journal',\n createdAt: executionLog.results.startTime,\n data: {\n ...executionLog.results,\n logs: executionLog.logs,\n },\n };\n data.results = [workoutResult];\n data.facts = factsFromExecutionLog(executionLog, resultId);\n } else if (options.stdinFacts) {\n const payload = extractPayload(options.stdinFacts);\n if (Array.isArray(payload)) {\n data.facts = payload as AnalyticsDataPoint[];\n } else if (payload && typeof payload === 'object' && 'facts' in (payload as Record<string, unknown>)) {\n data.facts = (payload as { facts: AnalyticsDataPoint[] }).facts;\n }\n } else {\n throw new Error('No input dataset provided. Specify --corpus <path>, --stdin-log, or --stdin-facts.');\n }\n\n return data;\n}\n\n/**\n * Runs a WQL query against the provided in-memory dataset and returns a versioned IR envelope.\n */\nexport async function runQueryCli(\n wqlString: string,\n options: QueryCliOptions = {},\n): Promise<WodWikiIRFile<QueryResult | RowsQueryResult | FindQueryResult>> {\n const parsed = parseQuery(wqlString);\n if (parsed.error) {\n throw new WqlSyntaxError(wqlString, parsed.error);\n }\n\n const stores = buildStoresFromData(loadQueryData(options));\n const service = new QueryService(\n stores.eventStore,\n stores.noteStore,\n stores.blockStore,\n stores.effortStore,\n );\n\n if (isFindQuery(parsed)) {\n const result = await service.runFind(parsed);\n return createIRFile('find-result', result, { source: options.sourceLabel ?? 'cli:wod query' });\n }\n\n if (isRowsQuery(parsed)) {\n const result = await service.runRows(parsed);\n return createIRFile('rows-result', result, { source: options.sourceLabel ?? 'cli:wod query' });\n }\n\n const result = await service.runQuery(wqlString, {\n preferredUnit: options.preferredUnit,\n });\n return createIRFile('query-result', result, { source: options.sourceLabel ?? 'cli:wod query' });\n}\n","/**\n * Dynamic Language Pack Loader\n *\n * Dynamically loads and registers Language Packs passed via `--pack <module-spec>`.\n * Throws PackLoadError on failure, enabling exit code 3 handling.\n */\n\nfunction getPathUtils() {\n if (typeof globalThis.process?.versions?.node === 'undefined' && typeof (globalThis as any).Bun === 'undefined') {\n throw new Error('Path resolution is only supported in Node / Bun environments');\n }\n return {\n resolve: require('path').resolve,\n pathToFileURL: require('url').pathToFileURL,\n };\n}\nimport { registerLanguagePack, type LanguagePack } from '../pack';\n\nexport class PackLoadError extends Error {\n constructor(\n public readonly spec: string,\n public readonly originalError: unknown,\n ) {\n const msg = originalError instanceof Error ? originalError.message : String(originalError);\n super(`Failed to load Language Pack \"${spec}\": ${msg}`);\n this.name = 'PackLoadError';\n }\n}\n\n/**\n * Dynamically imports a Language Pack module and registers it.\n *\n * @param moduleSpec - Relative or absolute path, or package name.\n */\nexport async function loadLanguagePack(moduleSpec: string): Promise<LanguagePack> {\n try {\n let importPath = moduleSpec;\n\n // If it looks like a relative or absolute file path, resolve and convert to file URL\n if (\n moduleSpec.startsWith('.') ||\n moduleSpec.startsWith('/') ||\n moduleSpec.includes('\\\\') ||\n moduleSpec.endsWith('.ts') ||\n moduleSpec.endsWith('.js') ||\n moduleSpec.endsWith('.mjs')\n ) {\n const { resolve, pathToFileURL } = getPathUtils();\n const resolved = resolve(process.cwd(), moduleSpec);\n importPath = pathToFileURL(resolved).href;\n }\n const imported = await import(/* @vite-ignore */ importPath);\n const candidate = imported.default ?? imported.pack ?? imported;\n\n if (!candidate || typeof candidate !== 'object') {\n throw new Error(`Module \"${moduleSpec}\" does not export a valid LanguagePack object`);\n }\n\n const pack = candidate as LanguagePack;\n registerLanguagePack(pack);\n return pack;\n } catch (error) {\n if (error instanceof PackLoadError) throw error;\n throw new PackLoadError(moduleSpec, error);\n }\n}\n","/**\n * CLI Output Formatters (JSON, ASCII Table, CSV)\n *\n * Implements presentation formatting for parse-tree, execution-log,\n * and WQL query results across json, table, and csv formats.\n */\n\nimport type { WodWikiIRFile, StatementNode, ExecutionLog } from '../ir';\nimport type { QueryResult, RowsQueryResult, FindQueryResult } from '@bitcobblers/wod-wiki-wql';\n\nexport type OutputFormat = 'json' | 'table' | 'csv';\n\nfunction escapeCsvField(field: unknown): string {\n if (field === undefined || field === null) return '';\n const str = String(field);\n if (str.includes(',') || str.includes('\"') || str.includes('\\n') || str.includes('\\r')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\nfunction formatDate(ts: number): string {\n if (!ts) return '-';\n try {\n return new Date(ts).toISOString();\n } catch {\n return String(ts);\n }\n}\n\nfunction formatMetricValue(m: { image?: string; value?: unknown }): string {\n if (m.image) return m.image;\n if (m.value === undefined || m.value === null) return '';\n if (typeof m.value === 'object') return JSON.stringify(m.value);\n return String(m.value);\n}\n\nfunction formatMetric(m: { type?: string; image?: string; value?: unknown }): string {\n const t = m.type || 'metric';\n return `${t}:${formatMetricValue(m)}`;\n}\n\n/**\n * Format StatementNode parse tree\n */\nexport function formatParseOutput(\n ir: WodWikiIRFile<StatementNode>,\n format: OutputFormat,\n pretty: boolean = true,\n): string {\n if (format === 'json') {\n return JSON.stringify(ir, null, pretty ? 2 : undefined);\n }\n\n // Flatten nodes for table/csv representation\n const flatNodes: StatementNode[] = [];\n const walk = (node: StatementNode) => {\n flatNodes.push(node);\n for (const child of node.children ?? []) {\n walk(child);\n }\n };\n walk(ir.data);\n\n if (format === 'csv') {\n const header = 'id,type,from,to,raw,metrics,hints';\n const rows = flatNodes.map((n) =>\n [\n n.id,\n n.type,\n n.from,\n n.to,\n escapeCsvField(n.raw),\n escapeCsvField(n.metrics.map(formatMetric).join('; ')),\n escapeCsvField(n.hints?.join('; ') ?? ''),\n ].join(','),\n );\n return [header, ...rows].join('\\n');\n }\n\n // format === 'table'\n const lines: string[] = [];\n lines.push(`Parse Tree (${flatNodes.length} statements):`);\n lines.push('─'.repeat(80));\n lines.push(\n ['ID'.padEnd(6), 'Type'.padEnd(12), 'Span'.padEnd(12), 'Hints'.padEnd(20), 'Raw Text'].join(' | '),\n );\n lines.push('─'.repeat(80));\n\n for (const n of flatNodes) {\n const span = `${n.from}-${n.to}`;\n const hints = (n.hints ?? []).join(', ');\n lines.push(\n [\n String(n.id).padEnd(6),\n n.type.padEnd(12),\n span.padEnd(12),\n (hints.length > 18 ? hints.slice(0, 15) + '...' : hints).padEnd(20),\n n.raw.replace(/\\n/g, '\\\\n'),\n ].join(' | '),\n );\n }\n return lines.join('\\n');\n}\n\n/**\n * Format ExecutionLog runtime output\n */\nexport function formatExecutionOutput(\n ir: WodWikiIRFile<ExecutionLog>,\n format: OutputFormat,\n pretty: boolean = true,\n): string {\n if (format === 'json') {\n return JSON.stringify(ir, null, pretty ? 2 : undefined);\n }\n\n const { results, logs } = ir.data;\n const statements = logs;\n\n if (format === 'csv') {\n const header = 'id,outputType,started,ended,sourceBlockKey,stackLevel,completionReason,metrics,hints';\n const rows = statements.map((s) =>\n [\n s.id,\n s.outputType,\n s.timeSpan?.started ?? s.timestamp ?? 0,\n s.timeSpan?.ended ?? '',\n escapeCsvField(s.sourceBlockKey),\n s.stackLevel,\n escapeCsvField(s.completionReason ?? ''),\n escapeCsvField(s.metrics.map(formatMetric).join('; ')),\n escapeCsvField(s.hints?.join('; ') ?? ''),\n ].join(','),\n );\n return [header, ...rows].join('\\n');\n }\n\n // format === 'table'\n const lines: string[] = [];\n lines.push(`Workout Execution Results:`);\n lines.push(` Duration: ${results.duration}ms`);\n lines.push(` Completed: ${results.completed ? 'yes' : 'no'}`);\n lines.push(` Start: ${formatDate(results.startTime)}`);\n lines.push(` End: ${formatDate(results.endTime)}`);\n lines.push(` Logs: ${statements.length} statements emitted`);\n lines.push('─'.repeat(80));\n lines.push(\n ['ID'.padEnd(8), 'Type'.padEnd(12), 'Block'.padEnd(18), 'Reason'.padEnd(15), 'Metrics'].join(' | '),\n );\n lines.push('─'.repeat(80));\n\n for (const s of statements) {\n const metricsStr = s.metrics.map(formatMetric).join(', ');\n lines.push(\n [\n String(s.id).padEnd(8),\n (s.outputType ?? 'segment').padEnd(12),\n (s.sourceBlockKey ?? '-').padEnd(18),\n (s.completionReason ?? '-').padEnd(15),\n metricsStr,\n ].join(' | '),\n );\n }\n return lines.join('\\n');\n}\n\n/**\n * Format QueryResult / RowsQueryResult / FindQueryResult\n */\nexport function formatQueryOutput(\n ir: WodWikiIRFile<QueryResult | RowsQueryResult | FindQueryResult>,\n format: OutputFormat,\n pretty: boolean = true,\n): string {\n if (format === 'json') {\n return JSON.stringify(ir, null, pretty ? 2 : undefined);\n }\n\n const kind = ir.kind;\n\n if (kind === 'rows-result') {\n const data = ir.data as RowsQueryResult;\n if (format === 'csv') {\n const header = 'resultId,timestamp,outputType,eventId,metrics';\n const rows: string[] = [];\n for (const run of data.runs) {\n for (const event of run.events) {\n rows.push(\n [\n run.resultId,\n run.timestamp,\n event.outputType,\n event.id,\n escapeCsvField(event.metrics.map(formatMetric).join('; ')),\n ].join(','),\n );\n }\n }\n return [header, ...rows].join('\\n');\n }\n\n // table\n const lines: string[] = [];\n lines.push(`Rows Query Result (${data.runs.length} runs):`);\n if (data.error) lines.push(`Error: ${data.error}`);\n lines.push('─'.repeat(80));\n lines.push(\n ['Result ID'.padEnd(20), 'Date'.padEnd(24), 'Events'].join(' | '),\n );\n lines.push('─'.repeat(80));\n for (const run of data.runs) {\n lines.push(\n [\n run.resultId.padEnd(20),\n formatDate(run.timestamp).padEnd(24),\n String(run.events.length),\n ].join(' | '),\n );\n }\n return lines.join('\\n');\n }\n\n if (kind === 'find-result') {\n const data = ir.data as FindQueryResult;\n if (format === 'csv') {\n const header = 'target,id,title_or_label,sourceId';\n const rows: string[] = [];\n for (const n of data.notes) {\n rows.push(['note', n.id, escapeCsvField(n.title), escapeCsvField(n.sourceId ?? '')].join(','));\n }\n for (const b of data.blocks) {\n rows.push(['block', b.id, escapeCsvField(b.noteTitle), escapeCsvField(b.sourceId ?? '')].join(','));\n }\n for (const e of data.efforts ?? []) {\n rows.push(['effort', e.id, escapeCsvField(e.label), escapeCsvField(e.slug)].join(','));\n }\n return [header, ...rows].join('\\n');\n }\n\n // table\n const lines: string[] = [];\n const matchedCount = data.stages?.matched ?? 0;\n const selectedCount = data.stages?.selected ?? 0;\n lines.push(`Find Result (matched: ${matchedCount} / selected: ${selectedCount}):`);\n lines.push('─'.repeat(80));\n lines.push(['Type'.padEnd(8), 'ID'.padEnd(24), 'Title / Label'.padEnd(30), 'Source ID'].join(' | '));\n lines.push('─'.repeat(80));\n for (const n of data.notes) {\n lines.push(['note'.padEnd(8), n.id.padEnd(24), n.title.padEnd(30), n.sourceId ?? '-'].join(' | '));\n }\n for (const b of data.blocks) {\n lines.push(['block'.padEnd(8), b.id.padEnd(24), b.noteTitle.padEnd(30), b.sourceId ?? '-'].join(' | '));\n }\n for (const e of data.efforts ?? []) {\n lines.push(['effort'.padEnd(8), e.id.padEnd(24), e.label.padEnd(30), e.slug].join(' | '));\n }\n return lines.join('\\n');\n }\n\n // kind === 'query-result'\n const data = ir.data as QueryResult;\n if (data.scalar !== undefined && data.series.length === 0) {\n if (format === 'csv') {\n return `metric,scalar,unit\\n${escapeCsvField(data.parsed.metric)},${data.scalar},${escapeCsvField(data.unit ?? '')}`;\n }\n return `Scalar Result: ${data.scalar}${data.unit ? ' ' + data.unit : ''}`;\n }\n\n if (format === 'csv') {\n const header = 'series,timestamp,date,value,unit';\n const rows: string[] = [];\n for (const s of data.series) {\n for (const pt of s.points) {\n rows.push(\n [\n escapeCsvField(s.label || s.key),\n pt.ts,\n formatDate(pt.ts),\n pt.value,\n escapeCsvField(s.unit ?? data.unit ?? ''),\n ].join(','),\n );\n }\n }\n return [header, ...rows].join('\\n');\n }\n\n // table\n const lines: string[] = [];\n const matchedCount = (data.stages as any)?.matched ?? (data.stages as any)?.selected ?? data.matched?.length ?? 0;\n lines.push(`Query Result (${data.series.length} series, ${matchedCount} matched facts):`);\n lines.push(\n ['Series / Group'.padEnd(20), 'Timestamp'.padEnd(16), 'Date'.padEnd(24), 'Value'.padEnd(12), 'Unit'].join(' | '),\n );\n lines.push('─'.repeat(80));\n\n for (const s of data.series) {\n for (const pt of s.points) {\n lines.push(\n [\n (s.label || s.key).padEnd(20),\n String(pt.ts).padEnd(16),\n formatDate(pt.ts).padEnd(24),\n String(pt.value).padEnd(12),\n s.unit ?? data.unit ?? '-',\n ].join(' | '),\n );\n }\n }\n return lines.join('\\n');\n}\n","/**\n * Unified `wod` CLI Runner\n *\n * Implements CLI command routing, argument parsing, pipe handling,\n * and exit code conventions per wayfinder #962 and issue #967.\n *\n * Exit Codes:\n * 0 - OK / Success (including empty query results)\n * 1 - Runtime error (file missing, bad arguments, execution error)\n * 2 - Parse / Syntax error (invalid Whiteboard Script or malformed WQL)\n * 3 - Pack load error (failed to import or register --pack)\n */\n\nfunction getFs() {\n if (typeof globalThis.process?.versions?.node === 'undefined' && typeof (globalThis as any).Bun === 'undefined') {\n throw new Error('File system operations are only supported in Node / Bun environments');\n }\n return require('fs');\n}\nimport { loadLanguagePack, PackLoadError } from './loader';\nimport { runParse, ParseSyntaxError } from './parse';\nimport { runExecution } from './run';\nimport { runQueryCli, WqlSyntaxError } from './query';\nimport {\n formatParseOutput,\n formatExecutionOutput,\n formatQueryOutput,\n type OutputFormat,\n} from './formatters';\n\nconst VERSION = '0.6.0';\n\nexport interface CliParsedArgs {\n subcommand?: 'parse' | 'run' | 'query' | 'help' | 'version';\n target?: string;\n corpus?: string;\n stdinLog?: boolean;\n stdinFacts?: boolean;\n format: OutputFormat;\n output?: string;\n packs: string[];\n sport?: string;\n unit?: string;\n help?: boolean;\n version?: boolean;\n}\n\nexport function parseCliArgs(args: string[]): CliParsedArgs {\n const result: CliParsedArgs = {\n format: 'json',\n packs: [],\n };\n\n let i = 0;\n while (i < args.length) {\n const arg = args[i];\n\n if (arg === '--help' || arg === '-h') {\n result.help = true;\n i++;\n } else if (arg === '--version' || arg === '-v') {\n result.version = true;\n i++;\n } else if (arg === '--corpus' || arg === '-c') {\n result.corpus = args[++i];\n i++;\n } else if (arg === '--stdin-log') {\n result.stdinLog = true;\n i++;\n } else if (arg === '--stdin-facts') {\n result.stdinFacts = true;\n i++;\n } else if (arg === '--format') {\n const fmt = args[++i] as OutputFormat;\n if (fmt === 'json' || fmt === 'table' || fmt === 'csv') {\n result.format = fmt;\n }\n i++;\n } else if (arg.startsWith('--format=')) {\n const fmt = arg.slice('--format='.length) as OutputFormat;\n if (fmt === 'json' || fmt === 'table' || fmt === 'csv') {\n result.format = fmt;\n }\n i++;\n } else if (arg === '-o' || arg === '--output') {\n result.output = args[++i];\n i++;\n } else if (arg.startsWith('--output=')) {\n result.output = arg.slice('--output='.length);\n i++;\n } else if (arg === '--pack') {\n const packSpec = args[++i];\n if (packSpec) result.packs.push(packSpec);\n i++;\n } else if (arg.startsWith('--pack=')) {\n result.packs.push(arg.slice('--pack='.length));\n i++;\n } else if (arg === '--sport') {\n result.sport = args[++i];\n i++;\n } else if (arg === '--unit') {\n result.unit = args[++i];\n i++;\n } else if (!result.subcommand) {\n if (arg === 'parse' || arg === 'run' || arg === 'query' || arg === 'help' || arg === 'version') {\n result.subcommand = arg;\n } else {\n result.target = arg;\n }\n i++;\n } else if (!result.target) {\n result.target = arg;\n i++;\n } else {\n i++;\n }\n }\n\n return result;\n}\n\nexport async function readStdin(): Promise<string> {\n if (typeof (globalThis as any).Bun?.stdin?.text === 'function') {\n return (globalThis as any).Bun.stdin.text();\n }\n return new Promise<string>((resolve, reject) => {\n const chunks: Buffer[] = [];\n process.stdin.on('data', (chunk) => {\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);\n });\n process.stdin.on('end', () => {\n resolve(Buffer.concat(chunks).toString('utf-8'));\n });\n process.stdin.on('error', (err) => {\n reject(err);\n });\n });\n}\n\nfunction getUsageText(): string {\n return `\nwod CLI — Headless Whiteboard Language & WQL Engine runner (v${VERSION})\n\nUSAGE:\n wod parse <file | -> [options]\n wod run <file | -> [options]\n wod query '<wql-string>' [options]\n\nSUBCOMMANDS:\n parse <file | -> Parse Whiteboard Script into AST StatementNode IR (kind: 'parse-tree')\n run <file | -> Execute Whiteboard Script state machine and emit ExecutionLog IR (kind: 'execution-log')\n query '<wql>' Evaluate WQL query and emit QueryResult / RowsQueryResult / FindQueryResult IR\n\nINPUT SOURCING (for 'query'):\n -c, --corpus <path> Load historical corpus dataset from a versioned JSON file\n --stdin-log Read kind: 'execution-log' JSON payload from stdin\n --stdin-facts Read raw kind: 'fact-set' JSON payload from stdin\n\nOPTIONS:\n --format <fmt> Output format: json (default), table, csv\n -o, --output <path> Write output to a file instead of stdout\n --pack <module> Dynamically load and register a Language Pack (repeatable)\n --sport <sport> Target sport fence dialect (e.g. climbing, crossfit)\n --unit <unit> Preferred display unit for queries (e.g. lb, kg)\n -h, --help Show help message\n -v, --version Show version number\n\nEXIT CODES:\n 0 - OK / Success\n 1 - General / Runtime error\n 2 - Parse / Syntax error\n 3 - Language Pack load error\n`;\n}\n\nfunction printUsage(writer?: (text: string) => void): void {\n const text = getUsageText();\n if (writer) {\n writer(text);\n } else {\n console.log(text);\n }\n}\n\n/**\n * Main CLI entry point. Returns numeric exit code.\n */\nexport async function cliMain(\n argv: string[] = process.argv.slice(2),\n io: {\n stdout?: (text: string) => void;\n stderr?: (text: string) => void;\n readStdinFn?: () => Promise<string>;\n } = {},\n): Promise<number> {\n const writeOut = io.stdout ?? ((t: string) => process.stdout.write(t + '\\n'));\n const writeErr = io.stderr ?? ((t: string) => process.stderr.write(t + '\\n'));\n const getStdin = io.readStdinFn ?? readStdin;\n\n const parsed = parseCliArgs(argv);\n\n if (parsed.version || parsed.subcommand === 'version') {\n writeOut(`wod v${VERSION}`);\n return 0;\n }\n\n if (parsed.help || parsed.subcommand === 'help') {\n printUsage(writeOut);\n return 0;\n }\n\n if (!parsed.subcommand) {\n printUsage(writeErr);\n return 1;\n }\n // 1. Load any requested Language Packs (Exit code 3 on failure)\n for (const packSpec of parsed.packs) {\n try {\n await loadLanguagePack(packSpec);\n } catch (err) {\n if (err instanceof PackLoadError) {\n writeErr(err.message);\n } else {\n writeErr(`[wod] Language pack load error: ${err instanceof Error ? err.message : String(err)}`);\n }\n return 3;\n }\n }\n\n // Output destination helper\n const deliverOutput = (formattedText: string) => {\n if (parsed.output) {\n getFs().writeFileSync(parsed.output, formattedText, 'utf-8');\n } else {\n writeOut(formattedText);\n }\n };\n\n // 2. Dispatch subcommands\n try {\n if (parsed.subcommand === 'parse') {\n if (!parsed.target) {\n writeErr('[wod parse] Error: Missing input file or \"-\" for stdin');\n return 1;\n }\n\n let source: string;\n if (parsed.target === '-') {\n source = await getStdin();\n } else {\n const fs = getFs();\n if (!fs.existsSync(parsed.target)) {\n writeErr(`[wod parse] File not found: ${parsed.target}`);\n return 1;\n }\n source = fs.readFileSync(parsed.target, 'utf-8');\n }\n\n const ir = runParse(source, { sport: parsed.sport, sourceLabel: `cli:wod parse ${parsed.target}` });\n const pretty = !parsed.output && Boolean(process.stdout.isTTY);\n const formatted = formatParseOutput(ir, parsed.format, pretty);\n deliverOutput(formatted);\n return 0;\n }\n\n if (parsed.subcommand === 'run') {\n if (!parsed.target) {\n writeErr('[wod run] Error: Missing input file or \"-\" for stdin');\n return 1;\n }\n\n let source: string;\n if (parsed.target === '-') {\n source = await getStdin();\n } else {\n const fs = getFs();\n if (!fs.existsSync(parsed.target)) {\n writeErr(`[wod run] File not found: ${parsed.target}`);\n return 1;\n }\n source = fs.readFileSync(parsed.target, 'utf-8');\n }\n\n const ir = await runExecution(source, { sport: parsed.sport, sourceLabel: `cli:wod run ${parsed.target}` });\n const pretty = !parsed.output && Boolean(process.stdout.isTTY);\n const formatted = formatExecutionOutput(ir, parsed.format, pretty);\n deliverOutput(formatted);\n return 0;\n }\n\n if (parsed.subcommand === 'query') {\n if (!parsed.target) {\n writeErr('[wod query] Error: Missing WQL query argument');\n return 1;\n }\n\n let stdinLogContent: string | undefined;\n let stdinFactsContent: string | undefined;\n\n if (parsed.stdinLog) {\n stdinLogContent = await getStdin();\n } else if (parsed.stdinFacts) {\n stdinFactsContent = await getStdin();\n } else if (!parsed.corpus) {\n writeErr('[wod query] Error: Query requires input data. Specify --corpus <file>, --stdin-log, or --stdin-facts.');\n return 1;\n }\n\n const ir = await runQueryCli(parsed.target, {\n corpusPath: parsed.corpus,\n stdinLog: stdinLogContent,\n stdinFacts: stdinFactsContent,\n preferredUnit: parsed.unit,\n sourceLabel: `cli:wod query \"${parsed.target}\"`,\n });\n\n const pretty = !parsed.output && Boolean(process.stdout.isTTY);\n const formatted = formatQueryOutput(ir, parsed.format, pretty);\n deliverOutput(formatted);\n return 0;\n }\n\n writeErr(`[wod] Unknown subcommand \"${parsed.subcommand}\"`);\n return 1;\n } catch (error) {\n if (error instanceof ParseSyntaxError || error instanceof WqlSyntaxError) {\n writeErr(error.message);\n return 2;\n }\n if (error instanceof PackLoadError) {\n writeErr(error.message);\n return 3;\n }\n writeErr(`[wod] Error: ${error instanceof Error ? error.message : String(error)}`);\n return 1;\n }\n}\n","/**\n * Auto-generated build version metadata.\n * Do not edit directly; updated by scripts/stamp-version.ts\n */\nexport const VERSION = '0.10.42';\nexport const GIT_SHA = '79c6d18';\nexport const BUILD_TIME = '2026-08-26T04:44:54.356Z';\nexport const SEMVER = {\n version: '0.10.42',\n gitSha: '79c6d18',\n buildTime: '2026-08-26T04:44:54.356Z',\n} as const;\n"]}
package/dist/index.d.cts CHANGED
@@ -4,7 +4,7 @@ import { IRealtimeProcessor, ISummaryProcessor, IEffort, IScript, INowProvider }
4
4
  export { ABSENT, AGGREGATE_BUILTINS, AUTHORITATIVE_CASTS, AmrapLogicStrategy, AnalyticsContext, AnalyticsEngine, AnalyticsProfileContext, AnalyticsResult, AnalyticsTransformer, BUILTIN_CALCS, BUNDLED_EFFORT_COUNT, BehaviorContext, BehaviorEventListener, BehaviorEventType, BlockBuilder, BlockContext, BlockLifecycleOptions, ButtonBehavior, CONSUMED_HINTS, CONSUMED_HINT_KEYS, CONTEXT_ATOMS, CalcDefinition, CalcEngine, CalcOrigin, CalcScope, CalculateBlockProcessor, CalculationDefinition, CalculationRegistry, CardioDialect, ChildSelectionBehavior, ChildrenStrategy, ChoiceGroupMetric, ClimbDialect, ClimbMetricType, CompletionDecision, CountdownTimerBehavior, CountupTimerBehavior, CrossFitDialect, DEFAULT_RESOLVER_OPTIONS, DEFAULT_RUNTIME_OPTIONS, DEFAULT_UNRESOLVED_EFFORT_MET, DIM_LENGTH, DIM_MASS, DIM_TIME, DIM_ZERO, DialectStack, DimVector, EFFORT_DATA_METRIC_TYPE, EFFORT_REGISTRY_ORIGINS, EffortBaseAttributes, EffortDerivation, EffortFallbackStrategy, EffortRegistrySource, EffortResolutionOptions, EffortResolver, EffortResolverOptions, ErrorAction, EventBus, EventCallback, EventHandlerOptions, ExecutionContext, ExecutionStatus, ExitBehavior, ExprNode, GenericGroupStrategy, GenericLoopStrategy, GenericTimerStrategy, HabitsDialect, IAnalyticsEngine, IAnalyticsProcessorDescriptor, IAnalyticsProfile, IAnchorValue, IBehaviorContext, IBlockContext, ICastSubscription, IEffort, IEffortRegistry, IEffortResolver, IEvent, IEventBus, IEventHandler, IJitCompiler, ILookupTable, IMemoryLocation, IMemoryReference, IMetricPresentationPolicy, INTENSITY_TIERS, INowProvider, IRealtimeProcessor, IRuntimeAction, IRuntimeActionable, IRuntimeBehavior, IRuntimeBlock, IRuntimeBlockStrategy, IRuntimeClock, IRuntimeEventProvider, IRuntimeFactory, IRuntimeMemory, IRuntimeStack, IRuntimeSubscription, IScript, IScriptRuntime, ISummaryProcessor, InMemoryEffortRegistry, IntensityTier, InterceptMode, IntervalLogicStrategy, JitCompiler, LabelingBehavior, LineFormScope, LocalRuntimeSubscription, LookupRegistry, MdTimerRuntime, MemoryEntry, MemoryLocation, MemoryTag, MemoryTypeEnum, MetricPresentationSurface, MetricPresentationToken, MetricRenderKind, MetricTone, MetricVisibility, MockClock, NextEvent, OutputEmitter, OutputListener, PRODUCTION_STRATEGIES, PopBlockAction, ProjectionResult, PushBlockAction, RegisterEventHandlerAction, Registry, ReportOutputBehavior, ReportOutputStrategy, ResolvedEffort, ResolvedEffortData, RoundState, RoundsMetric, RuntimeAdapter, RuntimeBlock, RuntimeBlockOptions, RuntimeClock, RuntimeController, RuntimeError, RuntimeFactory, RuntimeLogger, RuntimeMemory, RuntimeObservers, RuntimeStack, RuntimeStackOptions, STORE_CALCS, STREAM_ATOMS, ScriptRuntime, ScriptRuntimeDependencies, SegmentWithMetadata, SessionRootStrategy, SnapshotClock, SoundCueBehavior, SoundStrategy, StackEvent, StackListener, StackObserver, StackSnapshot, StandardAnalyticsProfile, StartSessionAction, StartSessionOptions, StartWorkoutAction, SubscribeOptions, SubscriptionManager, TestableBlockConfig, TimeSpan, TimerState, TwoPassEffortResolutionProcess, TypedMemoryReference, UNITS, UnitsDialect, UnregisterEventHandlerAction, Unsubscribe, VISIBILITY_ICONS, VISIBILITY_LABELS, Val, WhiteboardScript, WodDialect, YogaDialect, buildTooltip, bundledEfforts, calculateElapsed, collapseUnresolvedChoices, compileLineForm, compoundName, computeColumnLabel, computeLabel, createAnalyticsEngineForBlock, createCalcEngine, createCompiler, createDialectStack, createMetricPresentationPolicy, createMockClock, createParser, dialectRegistry, dialectStack, evaluate, evaluateCalculateDefinitions, extractMetrics, extractStatements, findBestFuzzyMatch, findUnresolvedChoices, frozenNow, getAnalyticsFromLogs, getHints, getMetricVisibility, getRuntimeNowMs, hasHint, hintMetric, hintsToContainer, isCastSubscription, isChoiceResolved, isTimeLikeMetric, isWithinThreshold, levenshteinDistance, metricPresentation, normalizeForFuzzy, outputNodeId, outputNodeIds, parseCalcLine, parseCalculateBlock, parseExpression, parseScript, realtimeProcessorRegistry, strategyRegistry, summaryProcessorRegistry, toStoredOutputStatement, truthy, wallClockNow, whiteboardParser, whiteboardScript, whiteboardScriptLanguage, writeChoiceSelection } from '@bitcobblers/wod-wiki-lang';
5
5
  export { BlockTimerDisplay, BlockTimerDisplayProps, ScriptRuntimeProvider, ScriptRuntimeProviderProps, UseRuntimeExecutionReturn, useActiveControls, useBlockMemory, useLiveAnalytics, useMemorySubscription, useNextPreview, useOutputStatements, usePrimaryTimer, useRoundDisplay, useRuntimeExecution, useScriptRuntime, useSecondaryTimers, useSnapshotBlocks, useStackDisplayRows, useStackFragmentSources, useStackSnapshot, useStackTimers, useTimerDisplay, useTimerElapsed } from '@bitcobblers/wod-wiki-lang/react';
6
6
  import { UnifiedEventStore, QueryResult, RowsQueryResult, FindQueryResult } from '@bitcobblers/wod-wiki-wql';
7
- export { Aggregator, AnyParsedQuery, BlockQueryStore, ComparisonOp, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DashboardDocument, DashboardMeta, DashboardToken, DashboardWidget, EffortQueryStore, FindOptions, FindPredicate, FindQueryResult, MetricPredicate, NoteQueryStore, PLANNED_WIDGET_TYPES, ParsedAggregateQuery, ParsedFindQuery, ParsedRowsQuery, QueryOptions, QueryResult, QueryService, QueryServiceStores, QueryWidgetSuffix, RowsQueryResult, RowsRun, Series, SeriesPoint, TagFilter, TagValue, UnifiedEventStore, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_TARGETS, WQL_SOURCES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, buildDashboardDocument, buildDashboardScaffold, dashboardSlug, defaultTokenValues, extractDashboardTokens, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isFindQuery, isRowsQuery, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, resolveWidgetType, splitAtWhere, splitWidgetBody, substituteTokens, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlLanguage, wqlParser, wqlTerms } from '@bitcobblers/wod-wiki-wql';
7
+ export { Aggregator, AnyParsedQuery, BlockQueryStore, ComparisonOp, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DashboardDocument, DashboardMeta, DashboardToken, DashboardWidget, EffortQueryStore, FindOptions, FindPredicate, FindQueryResult, MetricPredicate, NoteQueryStore, PLANNED_WIDGET_TYPES, ParsedAggregateQuery, ParsedFindQuery, ParsedRowsQuery, QueryOptions, QueryResult, QueryService, QueryServiceStores, QueryWidgetSuffix, QueryWindow, RowsQueryResult, RowsRun, Series, SeriesPoint, TagFilter, TagValue, UnifiedEventStore, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_SCOPE_KEYS, WQL_ROWS_TARGETS, WQL_SOURCES, WQL_SOURCE_VALUES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, buildDashboardDocument, buildDashboardScaffold, dashboardSlug, defaultTokenValues, extractDashboardTokens, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isFindQuery, isRowsQuery, normalizeWql, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, resolveWidgetType, serialize, splitAtWhere, splitWidgetBody, substituteTokens, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlLanguage, wqlParser, wqlTerms } from '@bitcobblers/wod-wiki-wql';
8
8
 
9
9
  /**
10
10
  * Language Pack API — umbrella sugar over per-package slices
@@ -285,13 +285,13 @@ declare function cliMain(argv?: string[], io?: {
285
285
  * Auto-generated build version metadata.
286
286
  * Do not edit directly; updated by scripts/stamp-version.ts
287
287
  */
288
- declare const VERSION = "0.10.41";
289
- declare const GIT_SHA = "1b9b771";
290
- declare const BUILD_TIME = "2026-08-26T04:16:38.418Z";
288
+ declare const VERSION = "0.10.42";
289
+ declare const GIT_SHA = "79c6d18";
290
+ declare const BUILD_TIME = "2026-08-26T04:44:54.356Z";
291
291
  declare const SEMVER: {
292
- readonly version: "0.10.41";
293
- readonly gitSha: "1b9b771";
294
- readonly buildTime: "2026-08-26T04:16:38.418Z";
292
+ readonly version: "0.10.42";
293
+ readonly gitSha: "79c6d18";
294
+ readonly buildTime: "2026-08-26T04:44:54.356Z";
295
295
  };
296
296
 
297
297
  export { BUILD_TIME, type CliParsedArgs, type CorpusIRData, type ExecutionLog, GIT_SHA, type IrKind, type LanguagePack, type LanguagePackIdentity, type LanguagePackLangSlice, type LanguagePackUiSlice, type MetricNode, type OutputFormat, PackLoadError, type ParseOptions, ParseSyntaxError, type QueryCliOptions, type RunOptions, SEMVER, type StatementNode, VERSION, type WodWikiIRFile, WqlSyntaxError, buildStatementTree, buildWorkoutResults, cliMain, createIRFile, defineLanguagePack, factRowsToEventRows, formatExecutionOutput, formatParseOutput, formatQueryOutput, getRegisteredLanguagePacks, inMemoryEventStore, inMemoryEventStoreFromFacts, inMemoryFactStore, isIRFile, listLanguagePacks, loadLanguagePack, loadQueryData, parseCliArgs, readStdin, registerLanguagePack, runExecution, runParse, runQueryCli, statementToNode, unregisterLanguagePack };
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import { IRealtimeProcessor, ISummaryProcessor, IEffort, IScript, INowProvider }
4
4
  export { ABSENT, AGGREGATE_BUILTINS, AUTHORITATIVE_CASTS, AmrapLogicStrategy, AnalyticsContext, AnalyticsEngine, AnalyticsProfileContext, AnalyticsResult, AnalyticsTransformer, BUILTIN_CALCS, BUNDLED_EFFORT_COUNT, BehaviorContext, BehaviorEventListener, BehaviorEventType, BlockBuilder, BlockContext, BlockLifecycleOptions, ButtonBehavior, CONSUMED_HINTS, CONSUMED_HINT_KEYS, CONTEXT_ATOMS, CalcDefinition, CalcEngine, CalcOrigin, CalcScope, CalculateBlockProcessor, CalculationDefinition, CalculationRegistry, CardioDialect, ChildSelectionBehavior, ChildrenStrategy, ChoiceGroupMetric, ClimbDialect, ClimbMetricType, CompletionDecision, CountdownTimerBehavior, CountupTimerBehavior, CrossFitDialect, DEFAULT_RESOLVER_OPTIONS, DEFAULT_RUNTIME_OPTIONS, DEFAULT_UNRESOLVED_EFFORT_MET, DIM_LENGTH, DIM_MASS, DIM_TIME, DIM_ZERO, DialectStack, DimVector, EFFORT_DATA_METRIC_TYPE, EFFORT_REGISTRY_ORIGINS, EffortBaseAttributes, EffortDerivation, EffortFallbackStrategy, EffortRegistrySource, EffortResolutionOptions, EffortResolver, EffortResolverOptions, ErrorAction, EventBus, EventCallback, EventHandlerOptions, ExecutionContext, ExecutionStatus, ExitBehavior, ExprNode, GenericGroupStrategy, GenericLoopStrategy, GenericTimerStrategy, HabitsDialect, IAnalyticsEngine, IAnalyticsProcessorDescriptor, IAnalyticsProfile, IAnchorValue, IBehaviorContext, IBlockContext, ICastSubscription, IEffort, IEffortRegistry, IEffortResolver, IEvent, IEventBus, IEventHandler, IJitCompiler, ILookupTable, IMemoryLocation, IMemoryReference, IMetricPresentationPolicy, INTENSITY_TIERS, INowProvider, IRealtimeProcessor, IRuntimeAction, IRuntimeActionable, IRuntimeBehavior, IRuntimeBlock, IRuntimeBlockStrategy, IRuntimeClock, IRuntimeEventProvider, IRuntimeFactory, IRuntimeMemory, IRuntimeStack, IRuntimeSubscription, IScript, IScriptRuntime, ISummaryProcessor, InMemoryEffortRegistry, IntensityTier, InterceptMode, IntervalLogicStrategy, JitCompiler, LabelingBehavior, LineFormScope, LocalRuntimeSubscription, LookupRegistry, MdTimerRuntime, MemoryEntry, MemoryLocation, MemoryTag, MemoryTypeEnum, MetricPresentationSurface, MetricPresentationToken, MetricRenderKind, MetricTone, MetricVisibility, MockClock, NextEvent, OutputEmitter, OutputListener, PRODUCTION_STRATEGIES, PopBlockAction, ProjectionResult, PushBlockAction, RegisterEventHandlerAction, Registry, ReportOutputBehavior, ReportOutputStrategy, ResolvedEffort, ResolvedEffortData, RoundState, RoundsMetric, RuntimeAdapter, RuntimeBlock, RuntimeBlockOptions, RuntimeClock, RuntimeController, RuntimeError, RuntimeFactory, RuntimeLogger, RuntimeMemory, RuntimeObservers, RuntimeStack, RuntimeStackOptions, STORE_CALCS, STREAM_ATOMS, ScriptRuntime, ScriptRuntimeDependencies, SegmentWithMetadata, SessionRootStrategy, SnapshotClock, SoundCueBehavior, SoundStrategy, StackEvent, StackListener, StackObserver, StackSnapshot, StandardAnalyticsProfile, StartSessionAction, StartSessionOptions, StartWorkoutAction, SubscribeOptions, SubscriptionManager, TestableBlockConfig, TimeSpan, TimerState, TwoPassEffortResolutionProcess, TypedMemoryReference, UNITS, UnitsDialect, UnregisterEventHandlerAction, Unsubscribe, VISIBILITY_ICONS, VISIBILITY_LABELS, Val, WhiteboardScript, WodDialect, YogaDialect, buildTooltip, bundledEfforts, calculateElapsed, collapseUnresolvedChoices, compileLineForm, compoundName, computeColumnLabel, computeLabel, createAnalyticsEngineForBlock, createCalcEngine, createCompiler, createDialectStack, createMetricPresentationPolicy, createMockClock, createParser, dialectRegistry, dialectStack, evaluate, evaluateCalculateDefinitions, extractMetrics, extractStatements, findBestFuzzyMatch, findUnresolvedChoices, frozenNow, getAnalyticsFromLogs, getHints, getMetricVisibility, getRuntimeNowMs, hasHint, hintMetric, hintsToContainer, isCastSubscription, isChoiceResolved, isTimeLikeMetric, isWithinThreshold, levenshteinDistance, metricPresentation, normalizeForFuzzy, outputNodeId, outputNodeIds, parseCalcLine, parseCalculateBlock, parseExpression, parseScript, realtimeProcessorRegistry, strategyRegistry, summaryProcessorRegistry, toStoredOutputStatement, truthy, wallClockNow, whiteboardParser, whiteboardScript, whiteboardScriptLanguage, writeChoiceSelection } from '@bitcobblers/wod-wiki-lang';
5
5
  export { BlockTimerDisplay, BlockTimerDisplayProps, ScriptRuntimeProvider, ScriptRuntimeProviderProps, UseRuntimeExecutionReturn, useActiveControls, useBlockMemory, useLiveAnalytics, useMemorySubscription, useNextPreview, useOutputStatements, usePrimaryTimer, useRoundDisplay, useRuntimeExecution, useScriptRuntime, useSecondaryTimers, useSnapshotBlocks, useStackDisplayRows, useStackFragmentSources, useStackSnapshot, useStackTimers, useTimerDisplay, useTimerElapsed } from '@bitcobblers/wod-wiki-lang/react';
6
6
  import { UnifiedEventStore, QueryResult, RowsQueryResult, FindQueryResult } from '@bitcobblers/wod-wiki-wql';
7
- export { Aggregator, AnyParsedQuery, BlockQueryStore, ComparisonOp, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DashboardDocument, DashboardMeta, DashboardToken, DashboardWidget, EffortQueryStore, FindOptions, FindPredicate, FindQueryResult, MetricPredicate, NoteQueryStore, PLANNED_WIDGET_TYPES, ParsedAggregateQuery, ParsedFindQuery, ParsedRowsQuery, QueryOptions, QueryResult, QueryService, QueryServiceStores, QueryWidgetSuffix, RowsQueryResult, RowsRun, Series, SeriesPoint, TagFilter, TagValue, UnifiedEventStore, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_TARGETS, WQL_SOURCES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, buildDashboardDocument, buildDashboardScaffold, dashboardSlug, defaultTokenValues, extractDashboardTokens, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isFindQuery, isRowsQuery, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, resolveWidgetType, splitAtWhere, splitWidgetBody, substituteTokens, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlLanguage, wqlParser, wqlTerms } from '@bitcobblers/wod-wiki-wql';
7
+ export { Aggregator, AnyParsedQuery, BlockQueryStore, ComparisonOp, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DashboardDocument, DashboardMeta, DashboardToken, DashboardWidget, EffortQueryStore, FindOptions, FindPredicate, FindQueryResult, MetricPredicate, NoteQueryStore, PLANNED_WIDGET_TYPES, ParsedAggregateQuery, ParsedFindQuery, ParsedRowsQuery, QueryOptions, QueryResult, QueryService, QueryServiceStores, QueryWidgetSuffix, QueryWindow, RowsQueryResult, RowsRun, Series, SeriesPoint, TagFilter, TagValue, UnifiedEventStore, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_SCOPE_KEYS, WQL_ROWS_TARGETS, WQL_SOURCES, WQL_SOURCE_VALUES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, buildDashboardDocument, buildDashboardScaffold, dashboardSlug, defaultTokenValues, extractDashboardTokens, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isFindQuery, isRowsQuery, normalizeWql, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, resolveWidgetType, serialize, splitAtWhere, splitWidgetBody, substituteTokens, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlLanguage, wqlParser, wqlTerms } from '@bitcobblers/wod-wiki-wql';
8
8
 
9
9
  /**
10
10
  * Language Pack API — umbrella sugar over per-package slices
@@ -285,13 +285,13 @@ declare function cliMain(argv?: string[], io?: {
285
285
  * Auto-generated build version metadata.
286
286
  * Do not edit directly; updated by scripts/stamp-version.ts
287
287
  */
288
- declare const VERSION = "0.10.41";
289
- declare const GIT_SHA = "1b9b771";
290
- declare const BUILD_TIME = "2026-08-26T04:16:38.418Z";
288
+ declare const VERSION = "0.10.42";
289
+ declare const GIT_SHA = "79c6d18";
290
+ declare const BUILD_TIME = "2026-08-26T04:44:54.356Z";
291
291
  declare const SEMVER: {
292
- readonly version: "0.10.41";
293
- readonly gitSha: "1b9b771";
294
- readonly buildTime: "2026-08-26T04:16:38.418Z";
292
+ readonly version: "0.10.42";
293
+ readonly gitSha: "79c6d18";
294
+ readonly buildTime: "2026-08-26T04:44:54.356Z";
295
295
  };
296
296
 
297
297
  export { BUILD_TIME, type CliParsedArgs, type CorpusIRData, type ExecutionLog, GIT_SHA, type IrKind, type LanguagePack, type LanguagePackIdentity, type LanguagePackLangSlice, type LanguagePackUiSlice, type MetricNode, type OutputFormat, PackLoadError, type ParseOptions, ParseSyntaxError, type QueryCliOptions, type RunOptions, SEMVER, type StatementNode, VERSION, type WodWikiIRFile, WqlSyntaxError, buildStatementTree, buildWorkoutResults, cliMain, createIRFile, defineLanguagePack, factRowsToEventRows, formatExecutionOutput, formatParseOutput, formatQueryOutput, getRegisteredLanguagePacks, inMemoryEventStore, inMemoryEventStoreFromFacts, inMemoryFactStore, isIRFile, listLanguagePacks, loadLanguagePack, loadQueryData, parseCliArgs, readStdin, registerLanguagePack, runExecution, runParse, runQueryCli, statementToNode, unregisterLanguagePack };
package/dist/index.mjs CHANGED
@@ -2,16 +2,16 @@ export { PackLoadError, ParseSyntaxError, WqlSyntaxError, buildStatementTree, bu
2
2
  export * from '@bitcobblers/wod-wiki-core';
3
3
  export { ABSENT, AGGREGATE_BUILTINS, AUTHORITATIVE_CASTS, AmrapLogicStrategy, AnalyticsEngine, AnalyticsTransformer, BUILTIN_CALCS, BUNDLED_EFFORT_COUNT, BlockBuilder, ButtonBehavior, CONSUMED_HINTS, CONSUMED_HINT_KEYS, CONTEXT_ATOMS, CalcEngine, CalculationRegistry, CardioDialect, ChildSelectionBehavior, ChildrenStrategy, ChoiceGroupMetric, ClimbDialect, ClimbMetricType, CountdownTimerBehavior, CountupTimerBehavior, CrossFitDialect, DEFAULT_RESOLVER_OPTIONS, DEFAULT_RUNTIME_OPTIONS, DEFAULT_UNRESOLVED_EFFORT_MET, DIM_LENGTH, DIM_MASS, DIM_TIME, DIM_ZERO, DialectStack, EFFORT_DATA_METRIC_TYPE, EFFORT_REGISTRY_ORIGINS, EffortFallbackStrategy, EffortResolver, ErrorAction, EventBus, ExecutionContext, ExitBehavior, GenericGroupStrategy, GenericLoopStrategy, GenericTimerStrategy, HabitsDialect, INTENSITY_TIERS, InMemoryEffortRegistry, IntervalLogicStrategy, JitCompiler, LabelingBehavior, LocalRuntimeSubscription, LookupRegistry, MdTimerRuntime, MemoryLocation, MemoryTypeEnum, NextEvent, OutputEmitter, PRODUCTION_STRATEGIES, PopBlockAction, PushBlockAction, RegisterEventHandlerAction, Registry, ReportOutputBehavior, ReportOutputStrategy, RoundsMetric, RuntimeAdapter, RuntimeClock, RuntimeFactory, RuntimeLogger, RuntimeMemory, RuntimeObservers, RuntimeStack, STORE_CALCS, STREAM_ATOMS, ScriptRuntime, SessionRootStrategy, SnapshotClock, SoundCueBehavior, SoundStrategy, StandardAnalyticsProfile, StartSessionAction, StartWorkoutAction, SubscriptionManager, TimeSpan, TypedMemoryReference, UNITS, UnitsDialect, UnregisterEventHandlerAction, VISIBILITY_ICONS, VISIBILITY_LABELS, WhiteboardScript, WodDialect, YogaDialect, buildTooltip, bundledEfforts, calculateElapsed, collapseUnresolvedChoices, compileLineForm, compoundName, computeColumnLabel, computeLabel, createAnalyticsEngineForBlock, createCalcEngine, createCompiler, createDialectStack, createMetricPresentationPolicy, createMockClock, createParser, dialectRegistry, dialectStack, evaluate, evaluateCalculateDefinitions, extractMetrics, extractStatements, findBestFuzzyMatch, findUnresolvedChoices, frozenNow, getAnalyticsFromLogs, getHints, getMetricVisibility, getRuntimeNowMs, hasHint, hintMetric, hintsToContainer, isCastSubscription, isChoiceResolved, isTimeLikeMetric, isWithinThreshold, levenshteinDistance, metricPresentation, normalizeForFuzzy, outputNodeId, outputNodeIds, parseCalcLine, parseCalculateBlock, parseExpression, parseScript, realtimeProcessorRegistry, strategyRegistry, summaryProcessorRegistry, toStoredOutputStatement, truthy, wallClockNow, whiteboardParser, whiteboardScript, whiteboardScriptLanguage, writeChoiceSelection } from '@bitcobblers/wod-wiki-lang';
4
4
  export { BlockTimerDisplay, ScriptRuntimeProvider, useActiveControls, useBlockMemory, useLiveAnalytics, useMemorySubscription, useNextPreview, useOutputStatements, usePrimaryTimer, useRoundDisplay, useRuntimeExecution, useScriptRuntime, useSecondaryTimers, useSnapshotBlocks, useStackDisplayRows, useStackFragmentSources, useStackSnapshot, useStackTimers, useTimerDisplay, useTimerElapsed } from '@bitcobblers/wod-wiki-lang/react';
5
- export { DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, PLANNED_WIDGET_TYPES, QueryService, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_TARGETS, WQL_SOURCES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, buildDashboardDocument, buildDashboardScaffold, dashboardSlug, defaultTokenValues, extractDashboardTokens, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isFindQuery, isRowsQuery, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, resolveWidgetType, splitAtWhere, splitWidgetBody, substituteTokens, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlLanguage, wqlParser, wqlTerms } from '@bitcobblers/wod-wiki-wql';
5
+ export { DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, PLANNED_WIDGET_TYPES, QueryService, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_SCOPE_KEYS, WQL_ROWS_TARGETS, WQL_SOURCES, WQL_SOURCE_VALUES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, buildDashboardDocument, buildDashboardScaffold, dashboardSlug, defaultTokenValues, extractDashboardTokens, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isFindQuery, isRowsQuery, normalizeWql, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, resolveWidgetType, serialize, splitAtWhere, splitWidgetBody, substituteTokens, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlLanguage, wqlParser, wqlTerms } from '@bitcobblers/wod-wiki-wql';
6
6
 
7
7
  // src/version.ts
8
- var VERSION = "0.10.41";
9
- var GIT_SHA = "1b9b771";
10
- var BUILD_TIME = "2026-08-26T04:16:38.418Z";
8
+ var VERSION = "0.10.42";
9
+ var GIT_SHA = "79c6d18";
10
+ var BUILD_TIME = "2026-08-26T04:44:54.356Z";
11
11
  var SEMVER = {
12
- version: "0.10.41",
13
- gitSha: "1b9b771",
14
- buildTime: "2026-08-26T04:16:38.418Z"
12
+ version: "0.10.42",
13
+ gitSha: "79c6d18",
14
+ buildTime: "2026-08-26T04:44:54.356Z"
15
15
  };
16
16
 
17
17
  export { BUILD_TIME, GIT_SHA, SEMVER, VERSION };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"names":[],"mappings":";;;;;;;AAIO,IAAM,OAAA,GAAU;AAChB,IAAM,OAAA,GAAU;AAChB,IAAM,UAAA,GAAa;AACnB,IAAM,MAAA,GAAS;AAAA,EACpB,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,SAAA,EAAW;AACb","file":"index.mjs","sourcesContent":["/**\n * Auto-generated build version metadata.\n * Do not edit directly; updated by scripts/stamp-version.ts\n */\nexport const VERSION = '0.10.41';\nexport const GIT_SHA = '1b9b771';\nexport const BUILD_TIME = '2026-08-26T04:16:38.418Z';\nexport const SEMVER = {\n version: '0.10.41',\n gitSha: '1b9b771',\n buildTime: '2026-08-26T04:16:38.418Z',\n} as const;\n"]}
1
+ {"version":3,"sources":["../src/version.ts"],"names":[],"mappings":";;;;;;;AAIO,IAAM,OAAA,GAAU;AAChB,IAAM,OAAA,GAAU;AAChB,IAAM,UAAA,GAAa;AACnB,IAAM,MAAA,GAAS;AAAA,EACpB,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,SAAA,EAAW;AACb","file":"index.mjs","sourcesContent":["/**\n * Auto-generated build version metadata.\n * Do not edit directly; updated by scripts/stamp-version.ts\n */\nexport const VERSION = '0.10.42';\nexport const GIT_SHA = '79c6d18';\nexport const BUILD_TIME = '2026-08-26T04:44:54.356Z';\nexport const SEMVER = {\n version: '0.10.42',\n gitSha: '79c6d18',\n buildTime: '2026-08-26T04:44:54.356Z',\n} as const;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitcobblers/wod-wiki-engine",
3
- "version": "0.10.41",
3
+ "version": "0.10.42",
4
4
  "description": "Umbrella package for Whiteboard Language & WQL engine with CLI runner",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -23,9 +23,9 @@
23
23
  "access": "public"
24
24
  },
25
25
  "dependencies": {
26
- "@bitcobblers/wod-wiki-core": "^0.10.41",
27
- "@bitcobblers/wod-wiki-lang": "^0.10.41",
28
- "@bitcobblers/wod-wiki-wql": "^0.10.41"
26
+ "@bitcobblers/wod-wiki-core": "^0.10.42",
27
+ "@bitcobblers/wod-wiki-lang": "^0.10.42",
28
+ "@bitcobblers/wod-wiki-wql": "^0.10.42"
29
29
  },
30
30
  "scripts": {
31
31
  "build": "tsup",