@optique/core 1.0.0-dev.1786 → 1.0.0-dev.1789

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.
@@ -1,15 +1,16 @@
1
- import { annotateFreshArray, annotationKey, getAnnotations, inheritAnnotations, injectAnnotations } from "./annotations.js";
1
+ import { annotateFreshArray, getAnnotations, inheritAnnotations } from "./annotations.js";
2
2
  import { message, optionName, text, values } from "./message.js";
3
- import { createDependencySourceState, dependencyId, isDependencySourceState, isPendingDependencySourceState, isWrappedDependencySource, wrappedDependencySourceMarker } from "./dependency.js";
4
3
  import { validateLabel } from "./validate.js";
5
4
  import { extractArgumentMetavars, extractCommandNames, extractOptionNames, isDocHidden, mergeHidden } from "./usage.js";
6
5
  import { deduplicateDocFragments } from "./doc.js";
7
6
  import { dispatchByMode, dispatchIterableByMode } from "./mode-dispatch.js";
7
+ import { createDependencySourceState, dependencyId, isDependencySourceState, isPendingDependencySourceState, isWrappedDependencySource, wrappedDependencySourceMarker } from "./dependency.js";
8
+ import { buildRuntimeNodesFromArray, buildRuntimeNodesFromPairs, collectExplicitSourceValues, collectExplicitSourceValuesAsync, collectSourcesFromState, createDependencyRuntimeContext, fillMissingSourceDefaults, fillMissingSourceDefaultsAsync, resolveStateWithRuntime, resolveStateWithRuntimeAsync } from "./dependency-runtime.js";
8
9
  import { completeOrExtractPhase2Seed, extractPhase2Seed, extractPhase2SeedKey, phase2SeedFromValueResult } from "./phase2-seed.js";
9
10
  import { DEFAULT_FIND_SIMILAR_OPTIONS, createErrorWithSuggestions, createSuggestionMessage, deduplicateSuggestions, findSimilar } from "./suggestion.js";
10
11
  import { collectLeadingCandidates } from "./usage-internals.js";
11
- import { defineInheritedAnnotationParser, getParserSuggestRuntimeNodes, inheritParentAnnotationsKey, unmatchedNonCliDependencySourceStateMarker } from "./parser.js";
12
- import { buildRuntimeNodesFromArray, buildRuntimeNodesFromPairs, collectExplicitSourceValues, collectExplicitSourceValuesAsync, collectSourcesFromState, createDependencyRuntimeContext, fillMissingSourceDefaults, fillMissingSourceDefaultsAsync, resolveStateWithRuntime, resolveStateWithRuntimeAsync } from "./dependency-runtime.js";
12
+ import { defineInheritedAnnotationParser, getParserSuggestRuntimeNodes, unmatchedNonCliDependencySourceStateMarker } from "./parser.js";
13
+ import { annotationViewTargets, getWrappedChildParseState, getWrappedChildState, reconcileObjectChildState, unwrapAnnotationView } from "./annotation-state.js";
13
14
 
14
15
  //#region src/constructs.ts
15
16
  /**
@@ -57,7 +58,7 @@ function mergeChildExec(parent, child) {
57
58
  function withChildContext(context, segment, state, parser, usage) {
58
59
  const exec = withChildExecPath(context.exec, segment);
59
60
  const dependencyRegistry = context.dependencyRegistry ?? exec?.dependencyRegistry;
60
- const childState = parser == null ? state : getParseChildState(context.state, state, parser);
61
+ const childState = parser == null ? state : getWrappedChildParseState(context.state, state, parser);
61
62
  return {
62
63
  ...context,
63
64
  state: childState,
@@ -139,10 +140,6 @@ const fieldParsersKey = Symbol("fieldParsers");
139
140
  * to consume results from parsers that still return `DependencySourceState`.
140
141
  * @internal
141
142
  */
142
- function unwrapAnnotationView(value) {
143
- if (value == null || typeof value !== "object") return value;
144
- return annotationViewTargets.get(value) ?? value;
145
- }
146
143
  function containsAnnotationView(value, seen = /* @__PURE__ */ new WeakSet()) {
147
144
  if (value == null || typeof value !== "object") return false;
148
145
  const candidate = value;
@@ -305,61 +302,17 @@ function prepareStateForCompletion(fieldState, parser) {
305
302
  */
306
303
  function getAnnotatedFieldState(parentState, field, parser) {
307
304
  const sourceState = parentState != null && typeof parentState === "object" && field in parentState ? parentState[field] : parser.initialState;
308
- return getAnnotatedChildState(parentState, sourceState, parser);
309
- }
310
- const annotationViewTargets = /* @__PURE__ */ new WeakMap();
311
- function withAnnotationView(state, annotations) {
312
- const target = unwrapAnnotationView(state);
313
- const view = new Proxy(target, {
314
- get(target$1, key) {
315
- if (key === annotationKey) return annotations;
316
- const value = Reflect.get(target$1, key, target$1);
317
- return typeof value === "function" ? value.bind(target$1) : value;
318
- },
319
- has(target$1, key) {
320
- return key === annotationKey || Reflect.has(target$1, key);
321
- }
322
- });
323
- annotationViewTargets.set(view, target);
324
- return view;
325
- }
326
- function getParseChildState(parentState, childState, parser) {
327
- const annotations = getAnnotations(parentState);
328
- const shouldInheritAnnotations = Reflect.get(parser, inheritParentAnnotationsKey) === true;
329
- if (childState == null) {
330
- if (annotations !== void 0 && shouldInheritAnnotations) return injectAnnotations({}, annotations);
331
- return childState;
332
- }
333
- if (annotations === void 0 || typeof childState !== "object" || getAnnotations(childState) === annotations || !shouldInheritAnnotations) return childState;
334
- const injectedState = injectAnnotations(childState, annotations);
335
- return getAnnotations(injectedState) === annotations ? injectedState : childState;
305
+ return getWrappedChildState(parentState, sourceState, parser);
336
306
  }
337
307
  function getObjectParseChildState(parentState, childState, _parser) {
338
- const annotations = getAnnotations(parentState);
339
- if (annotations === void 0 || childState == null || typeof childState !== "object" || getAnnotations(childState) === annotations) return childState;
340
- return inheritAnnotations(parentState, childState);
341
- }
342
- function getAnnotatedChildState(parentState, childState, parser) {
343
- const annotations = getAnnotations(parentState);
344
- const shouldInheritAnnotations = Reflect.get(parser, inheritParentAnnotationsKey) === true;
345
- if (childState == null) {
346
- if (annotations !== void 0 && shouldInheritAnnotations) return injectAnnotations({}, annotations);
347
- return childState;
348
- }
349
- if (typeof childState !== "object") return childState;
350
- if (annotations === void 0 || getAnnotations(childState) === annotations) return childState;
351
- if (shouldInheritAnnotations) {
352
- const injectedState = injectAnnotations(childState, annotations);
353
- if (getAnnotations(injectedState) === annotations) return injectedState;
354
- }
355
- return withAnnotationView(childState, annotations);
308
+ return reconcileObjectChildState(parentState, childState);
356
309
  }
357
310
  function buildSuggestRuntimeNodesFromPairs(pairs, state, parentPath) {
358
311
  const prefix = parentPath ?? [];
359
312
  const nodes = [];
360
313
  for (const [field, parser] of pairs) {
361
314
  const fieldState = Object.hasOwn(state, field) ? state[field] : parser.initialState;
362
- nodes.push(...getParserSuggestRuntimeNodes(parser, getAnnotatedChildState(state, fieldState, parser), [...prefix, field]));
315
+ nodes.push(...getParserSuggestRuntimeNodes(parser, getWrappedChildState(state, fieldState, parser), [...prefix, field]));
363
316
  }
364
317
  return nodes;
365
318
  }
@@ -369,7 +322,7 @@ function buildSuggestRuntimeNodesFromArray(parsers, stateArray, parentPath) {
369
322
  for (let i = 0; i < parsers.length; i++) {
370
323
  const parser = parsers[i];
371
324
  const elementState = i < stateArray.length ? stateArray[i] : void 0;
372
- nodes.push(...getParserSuggestRuntimeNodes(parser, getAnnotatedChildState(stateArray, elementState, parser), [...prefix, i]));
325
+ nodes.push(...getParserSuggestRuntimeNodes(parser, getWrappedChildState(stateArray, elementState, parser), [...prefix, i]));
373
326
  }
374
327
  return nodes;
375
328
  }
@@ -569,7 +522,7 @@ function normalizeExclusiveState(state) {
569
522
  }
570
523
  function annotateExclusiveParserResult(parentState, parser, result) {
571
524
  if (!result.success) return result;
572
- const annotatedState = getAnnotatedChildState(parentState, result.next.state, parser);
525
+ const annotatedState = getWrappedChildState(parentState, result.next.state, parser);
573
526
  if (annotatedState === result.next.state) return result;
574
527
  return {
575
528
  ...result,
@@ -595,7 +548,7 @@ function createExclusiveComplete(parsers, options, noMatchContext, mode) {
595
548
  const candidate = findExclusiveZeroInputCandidateSync(syncParsers, state, exec);
596
549
  if (candidate != null) {
597
550
  const p = syncParsers[candidate.index];
598
- const annotatedState = getAnnotatedChildState(state, candidate.parseResult.next.state, p);
551
+ const annotatedState = getWrappedChildState(state, candidate.parseResult.next.state, p);
599
552
  return p.complete(annotatedState, withChildExecPath(exec, candidate.index));
600
553
  }
601
554
  return {
@@ -606,7 +559,7 @@ function createExclusiveComplete(parsers, options, noMatchContext, mode) {
606
559
  const candidate = await findExclusiveZeroInputCandidateAsync(parsers, state, exec);
607
560
  if (candidate != null && (parsers[candidate.index].$mode === "sync" || exec?.phase !== "parse" && exec?.phase !== "suggest")) {
608
561
  const p = parsers[candidate.index];
609
- const annotatedState = getAnnotatedChildState(state, candidate.parseResult.next.state, p);
562
+ const annotatedState = getWrappedChildState(state, candidate.parseResult.next.state, p);
610
563
  return await p.complete(annotatedState, withChildExecPath(exec, candidate.index));
611
564
  }
612
565
  return {
@@ -695,7 +648,7 @@ function findExclusiveZeroInputCandidateSync(parsers, state, exec) {
695
648
  if (parser.leadingNames.size > 0 || parser.acceptingAnyToken) continue;
696
649
  const parseResult = parser.parse({
697
650
  ...emptyCtx,
698
- state: getAnnotatedChildState(state, parser.initialState, parser)
651
+ state: getWrappedChildState(state, parser.initialState, parser)
699
652
  });
700
653
  if (!parseResult.success || parseResult.provisional) continue;
701
654
  candidateCount++;
@@ -726,7 +679,7 @@ async function findExclusiveZeroInputCandidateAsync(parsers, state, exec) {
726
679
  if (parser.leadingNames.size > 0 || parser.acceptingAnyToken) continue;
727
680
  const parseResult = await parser.parse({
728
681
  ...emptyCtx,
729
- state: getAnnotatedChildState(state, parser.initialState, parser)
682
+ state: getWrappedChildState(state, parser.initialState, parser)
730
683
  });
731
684
  if (!parseResult.success || parseResult.provisional) continue;
732
685
  candidateCount++;
@@ -1799,7 +1752,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1799
1752
  return state;
1800
1753
  };
1801
1754
  const inheritedFieldStateCache = /* @__PURE__ */ new WeakMap();
1802
- const createFieldStateGetter = (parentState, annotateChildState = getAnnotatedChildState) => {
1755
+ const createFieldStateGetter = (parentState, annotateChildState = getWrappedChildState) => {
1803
1756
  return (field, parser) => {
1804
1757
  const fieldKey = field;
1805
1758
  const cache = parentState != null && typeof parentState === "object" ? (() => {
@@ -1857,7 +1810,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1857
1810
  optionsTerminated: result.next.optionsTerminated,
1858
1811
  state: {
1859
1812
  ...currentContext.state,
1860
- [field]: getAnnotatedChildState(currentContext.state, result.next.state, parser)
1813
+ [field]: getWrappedChildState(currentContext.state, result.next.state, parser)
1861
1814
  },
1862
1815
  ...mergedExec != null ? {
1863
1816
  trace: mergedExec.trace,
@@ -1887,7 +1840,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1887
1840
  ...currentContext,
1888
1841
  state: {
1889
1842
  ...currentContext.state,
1890
- [field]: getAnnotatedChildState(currentContext.state, result.next.state, parser)
1843
+ [field]: getWrappedChildState(currentContext.state, result.next.state, parser)
1891
1844
  },
1892
1845
  ...mergedExec != null ? {
1893
1846
  trace: mergedExec.trace,
@@ -1955,7 +1908,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1955
1908
  optionsTerminated: result.next.optionsTerminated,
1956
1909
  state: {
1957
1910
  ...currentContext.state,
1958
- [field]: getAnnotatedChildState(currentContext.state, result.next.state, parser)
1911
+ [field]: getWrappedChildState(currentContext.state, result.next.state, parser)
1959
1912
  },
1960
1913
  ...mergedExec != null ? {
1961
1914
  trace: mergedExec.trace,
@@ -1985,7 +1938,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1985
1938
  ...currentContext,
1986
1939
  state: {
1987
1940
  ...currentContext.state,
1988
- [field]: getAnnotatedChildState(currentContext.state, result.next.state, parser)
1941
+ [field]: getWrappedChildState(currentContext.state, result.next.state, parser)
1989
1942
  },
1990
1943
  ...mergedExec != null ? {
1991
1944
  trace: mergedExec.trace,
@@ -2414,7 +2367,7 @@ function advanceTupleSuggestContextSync(context, parsers) {
2414
2367
  for (const [parser, index] of remainingParsers) {
2415
2368
  const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
2416
2369
  if (result.success && result.consumed.length > 0) {
2417
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : state));
2370
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : state));
2418
2371
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
2419
2372
  currentContext = {
2420
2373
  ...currentContext,
@@ -2439,7 +2392,7 @@ function advanceTupleSuggestContextSync(context, parsers) {
2439
2392
  if (!foundMatch) for (const [parser, index] of remainingParsers) {
2440
2393
  const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
2441
2394
  if (result.success && result.consumed.length < 1) {
2442
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : state));
2395
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : state));
2443
2396
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
2444
2397
  currentContext = {
2445
2398
  ...currentContext,
@@ -2480,7 +2433,7 @@ async function advanceTupleSuggestContextAsync(context, parsers) {
2480
2433
  for (const [parser, index] of remainingParsers) {
2481
2434
  const result = await parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
2482
2435
  if (result.success && result.consumed.length > 0) {
2483
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : state));
2436
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : state));
2484
2437
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
2485
2438
  currentContext = {
2486
2439
  ...currentContext,
@@ -2505,7 +2458,7 @@ async function advanceTupleSuggestContextAsync(context, parsers) {
2505
2458
  if (!foundMatch) for (const [parser, index] of remainingParsers) {
2506
2459
  const result = await parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
2507
2460
  if (result.success && result.consumed.length < 1) {
2508
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : state));
2461
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : state));
2509
2462
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
2510
2463
  currentContext = {
2511
2464
  ...currentContext,
@@ -2541,7 +2494,7 @@ function markFailedTupleSuggestSources(parsers, stateArray, failedParserIndexes,
2541
2494
  const parser = parsers[index];
2542
2495
  if (parser == null) continue;
2543
2496
  const parserState = stateArray && Array.isArray(stateArray) ? stateArray[index] : parser.initialState;
2544
- const nodes = getParserSuggestRuntimeNodes(parser, getAnnotatedChildState(stateArray, parserState, parser), [...prefix, index]);
2497
+ const nodes = getParserSuggestRuntimeNodes(parser, getWrappedChildState(stateArray, parserState, parser), [...prefix, index]);
2545
2498
  if (nodes.length < 1) continue;
2546
2499
  const failedRuntime = createDependencyRuntimeContext();
2547
2500
  collectExplicitSourceValues(nodes, failedRuntime);
@@ -2558,7 +2511,7 @@ async function markFailedTupleSuggestSourcesAsync(parsers, stateArray, failedPar
2558
2511
  const parser = parsers[index];
2559
2512
  if (parser == null) continue;
2560
2513
  const parserState = stateArray && Array.isArray(stateArray) ? stateArray[index] : parser.initialState;
2561
- const nodes = getParserSuggestRuntimeNodes(parser, getAnnotatedChildState(stateArray, parserState, parser), [...prefix, index]);
2514
+ const nodes = getParserSuggestRuntimeNodes(parser, getWrappedChildState(stateArray, parserState, parser), [...prefix, index]);
2562
2515
  if (nodes.length < 1) continue;
2563
2516
  const failedRuntime = createDependencyRuntimeContext();
2564
2517
  await collectExplicitSourceValuesAsync(nodes, failedRuntime);
@@ -2598,7 +2551,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
2598
2551
  for (const [parser, index] of remainingParsers) {
2599
2552
  const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
2600
2553
  if (result.success && result.consumed.length > 0) {
2601
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : s));
2554
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
2602
2555
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
2603
2556
  currentContext = {
2604
2557
  ...currentContext,
@@ -2619,7 +2572,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
2619
2572
  if (!foundMatch) for (const [parser, index] of remainingParsers) {
2620
2573
  const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
2621
2574
  if (result.success && result.consumed.length < 1) {
2622
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : s));
2575
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
2623
2576
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
2624
2577
  currentContext = {
2625
2578
  ...currentContext,
@@ -2665,7 +2618,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
2665
2618
  const resultOrPromise = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
2666
2619
  const result = await resultOrPromise;
2667
2620
  if (result.success && result.consumed.length > 0) {
2668
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : s));
2621
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
2669
2622
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
2670
2623
  currentContext = {
2671
2624
  ...currentContext,
@@ -2687,7 +2640,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
2687
2640
  const resultOrPromise = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
2688
2641
  const result = await resultOrPromise;
2689
2642
  if (result.success && result.consumed.length < 1) {
2690
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : s));
2643
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
2691
2644
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
2692
2645
  currentContext = {
2693
2646
  ...currentContext,
@@ -3626,7 +3579,7 @@ function buildSuggestRegistry(preParsedContext, parsers) {
3626
3579
  state: createAnnotatedArrayStateRecord(stateArray)
3627
3580
  }, buildIndexedParserPairs(parsers), runtime.registry, preParsedContext.exec);
3628
3581
  const prefix = preParsedContext.exec?.path ?? [];
3629
- for (let i = 0; i < parsers.length; i++) seedSuggestRuntimeFromFieldParsers(parsers[i], getAnnotatedChildState(stateArray, stateArray[i], parsers[i]), runtime, [...prefix, i]);
3582
+ for (let i = 0; i < parsers.length; i++) seedSuggestRuntimeFromFieldParsers(parsers[i], getWrappedChildState(stateArray, stateArray[i], parsers[i]), runtime, [...prefix, i]);
3630
3583
  }
3631
3584
  return {
3632
3585
  context: {
@@ -3654,7 +3607,7 @@ async function buildSuggestRegistryAsync(preParsedContext, parsers) {
3654
3607
  state: createAnnotatedArrayStateRecord(stateArray)
3655
3608
  }, buildIndexedParserPairs(parsers), runtime.registry, preParsedContext.exec);
3656
3609
  const prefix = preParsedContext.exec?.path ?? [];
3657
- for (let i = 0; i < parsers.length; i++) await seedSuggestRuntimeFromFieldParsersAsync(parsers[i], getAnnotatedChildState(stateArray, stateArray[i], parsers[i]), runtime, [...prefix, i]);
3610
+ for (let i = 0; i < parsers.length; i++) await seedSuggestRuntimeFromFieldParsersAsync(parsers[i], getWrappedChildState(stateArray, stateArray[i], parsers[i]), runtime, [...prefix, i]);
3658
3611
  }
3659
3612
  return {
3660
3613
  context: {
@@ -3790,7 +3743,7 @@ function tryParseSuggestList(context, stateArray, parsers, matchedParsers, remai
3790
3743
  const tail = remaining.slice(ri + 1);
3791
3744
  return resultOrPromise.then((result$1) => {
3792
3745
  if (result$1.success && result$1.consumed.length > 0) {
3793
- stateArray[index] = getAnnotatedChildState(context.state, result$1.next.state, parser);
3746
+ stateArray[index] = getWrappedChildState(context.state, result$1.next.state, parser);
3794
3747
  matchedParsers.add(index);
3795
3748
  const mergedExec = mergeChildExec(context.exec, result$1.next.exec);
3796
3749
  return preParseSuggestLoop({
@@ -3817,7 +3770,7 @@ function tryParseSuggestList(context, stateArray, parsers, matchedParsers, remai
3817
3770
  }
3818
3771
  const result = resultOrPromise;
3819
3772
  if (result.success && result.consumed.length > 0) {
3820
- stateArray[index] = getAnnotatedChildState(context.state, result.next.state, parser);
3773
+ stateArray[index] = getWrappedChildState(context.state, result.next.state, parser);
3821
3774
  matchedParsers.add(index);
3822
3775
  const mergedExec = mergeChildExec(context.exec, result.next.exec);
3823
3776
  return {
@@ -3856,7 +3809,7 @@ function concat(...parsers) {
3856
3809
  for (const [parser, index] of remainingParsers) {
3857
3810
  const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
3858
3811
  if (result.success && result.consumed.length > 0) {
3859
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : s));
3812
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
3860
3813
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
3861
3814
  currentContext = {
3862
3815
  ...currentContext,
@@ -3877,7 +3830,7 @@ function concat(...parsers) {
3877
3830
  if (!foundMatch) for (const [parser, index] of remainingParsers) {
3878
3831
  const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
3879
3832
  if (result.success && result.consumed.length < 1) {
3880
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : s));
3833
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
3881
3834
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
3882
3835
  currentContext = {
3883
3836
  ...currentContext,
@@ -3922,7 +3875,7 @@ function concat(...parsers) {
3922
3875
  for (const [parser, index] of remainingParsers) {
3923
3876
  const result = await parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
3924
3877
  if (result.success && result.consumed.length > 0) {
3925
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : s));
3878
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
3926
3879
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
3927
3880
  currentContext = {
3928
3881
  ...currentContext,
@@ -3943,7 +3896,7 @@ function concat(...parsers) {
3943
3896
  if (!foundMatch) for (const [parser, index] of remainingParsers) {
3944
3897
  const result = await parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
3945
3898
  if (result.success && result.consumed.length < 1) {
3946
- const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getAnnotatedChildState(currentContext.state, result.next.state, parser) : s));
3899
+ const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
3947
3900
  const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
3948
3901
  currentContext = {
3949
3902
  ...currentContext,
@@ -4426,7 +4379,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4426
4379
  ...branchResult.next,
4427
4380
  state: {
4428
4381
  ...state,
4429
- branchState: getAnnotatedChildState(state, branchResult.next.state, branchParser)
4382
+ branchState: getWrappedChildState(state, branchResult.next.state, branchParser)
4430
4383
  },
4431
4384
  ...mergedExec != null ? {
4432
4385
  exec: mergedExec,
@@ -4440,7 +4393,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4440
4393
  }
4441
4394
  const discriminatorResult = syncDiscriminator.parse({ ...withChildContext(context, "_discriminator", state.discriminatorState, syncDiscriminator) });
4442
4395
  if (discriminatorResult.success) {
4443
- const annotatedDiscriminatorState = getAnnotatedChildState(state, discriminatorResult.next.state, syncDiscriminator);
4396
+ const annotatedDiscriminatorState = getWrappedChildState(state, discriminatorResult.next.state, syncDiscriminator);
4444
4397
  const completionResult = syncDiscriminator.complete(annotatedDiscriminatorState, withChildExecPath(context.exec, "_discriminator"));
4445
4398
  if (completionResult.success) {
4446
4399
  const value = completionResult.value;
@@ -4473,7 +4426,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4473
4426
  kind: "branch",
4474
4427
  key: value
4475
4428
  },
4476
- branchState: getAnnotatedChildState(state, branchParseResult.next.state, branchParser)
4429
+ branchState: getWrappedChildState(state, branchParseResult.next.state, branchParser)
4477
4430
  },
4478
4431
  ...mergedExec != null ? {
4479
4432
  exec: mergedExec,
@@ -4494,7 +4447,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4494
4447
  kind: "branch",
4495
4448
  key: value
4496
4449
  },
4497
- branchState: getAnnotatedChildState(state, branchParser.initialState, branchParser)
4450
+ branchState: getWrappedChildState(state, branchParser.initialState, branchParser)
4498
4451
  },
4499
4452
  ...discriminatorExec != null ? {
4500
4453
  exec: discriminatorExec,
@@ -4526,7 +4479,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4526
4479
  state: {
4527
4480
  ...state,
4528
4481
  ...commitDefault ? { selectedBranch: { kind: "default" } } : {},
4529
- branchState: getAnnotatedChildState(state, defaultResult.next.state, syncDefaultBranch)
4482
+ branchState: getWrappedChildState(state, defaultResult.next.state, syncDefaultBranch)
4530
4483
  },
4531
4484
  ...mergedExec != null ? {
4532
4485
  exec: mergedExec,
@@ -4558,7 +4511,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4558
4511
  ...branchResult.next,
4559
4512
  state: {
4560
4513
  ...state,
4561
- branchState: getAnnotatedChildState(state, branchResult.next.state, branchParser)
4514
+ branchState: getWrappedChildState(state, branchResult.next.state, branchParser)
4562
4515
  },
4563
4516
  ...mergedExec != null ? {
4564
4517
  exec: mergedExec,
@@ -4620,7 +4573,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4620
4573
  if (speculativeHit != null && !ambiguous) {
4621
4574
  const { key, bp, result: branchResult } = speculativeHit;
4622
4575
  if (branchResult.success) {
4623
- const annotatedDiscriminatorState$2 = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
4576
+ const annotatedDiscriminatorState$2 = getWrappedChildState(state, discriminatorResult.next.state, discriminator);
4624
4577
  const mergedExec = mergeChildExec(discriminatorExec, branchResult.next.exec);
4625
4578
  return {
4626
4579
  success: true,
@@ -4634,7 +4587,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4634
4587
  kind: "branch",
4635
4588
  key
4636
4589
  },
4637
- branchState: getAnnotatedChildState(state, branchResult.next.state, bp),
4590
+ branchState: getWrappedChildState(state, branchResult.next.state, bp),
4638
4591
  speculative: true
4639
4592
  },
4640
4593
  ...mergedExec != null ? {
@@ -4659,7 +4612,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4659
4612
  state: {
4660
4613
  ...state,
4661
4614
  selectedBranch: { kind: "default" },
4662
- branchState: getAnnotatedChildState(state, defaultResult.next.state, defaultBranch)
4615
+ branchState: getWrappedChildState(state, defaultResult.next.state, defaultBranch)
4663
4616
  },
4664
4617
  ...defaultExec != null ? {
4665
4618
  exec: defaultExec,
@@ -4670,10 +4623,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
4670
4623
  };
4671
4624
  }
4672
4625
  if (!defaultResult.success && defaultResult.consumed > 0) return defaultResult;
4673
- if (defaultResult.success && defaultResult.consumed.length === 0 && speculationContext.buffer.length === 0) deferredBranchState = getAnnotatedChildState(state, defaultResult.next.state, defaultBranch);
4626
+ if (defaultResult.success && defaultResult.consumed.length === 0 && speculationContext.buffer.length === 0) deferredBranchState = getWrappedChildState(state, defaultResult.next.state, defaultBranch);
4674
4627
  }
4675
4628
  if (speculativeError != null && !ambiguous && !provisionalAmbiguous) return speculativeError;
4676
- const annotatedDiscriminatorState$1 = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
4629
+ const annotatedDiscriminatorState$1 = getWrappedChildState(state, discriminatorResult.next.state, discriminator);
4677
4630
  return {
4678
4631
  success: true,
4679
4632
  provisional: true,
@@ -4688,7 +4641,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4688
4641
  consumed: []
4689
4642
  };
4690
4643
  }
4691
- const annotatedDiscriminatorState = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
4644
+ const annotatedDiscriminatorState = getWrappedChildState(state, discriminatorResult.next.state, discriminator);
4692
4645
  const completionResult = await discriminator.complete(annotatedDiscriminatorState, withChildExecPath(context.exec, "_discriminator"));
4693
4646
  if (completionResult.success) {
4694
4647
  const value = completionResult.value;
@@ -4720,7 +4673,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4720
4673
  kind: "branch",
4721
4674
  key: value
4722
4675
  },
4723
- branchState: getAnnotatedChildState(state, branchParseResult.next.state, branchParser)
4676
+ branchState: getWrappedChildState(state, branchParseResult.next.state, branchParser)
4724
4677
  },
4725
4678
  ...mergedExec != null ? {
4726
4679
  exec: mergedExec,
@@ -4741,7 +4694,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4741
4694
  kind: "branch",
4742
4695
  key: value
4743
4696
  },
4744
- branchState: getAnnotatedChildState(state, branchParser.initialState, branchParser)
4697
+ branchState: getWrappedChildState(state, branchParser.initialState, branchParser)
4745
4698
  },
4746
4699
  ...discriminatorExec != null ? {
4747
4700
  exec: discriminatorExec,
@@ -4773,7 +4726,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4773
4726
  state: {
4774
4727
  ...state,
4775
4728
  ...commitDefault ? { selectedBranch: { kind: "default" } } : {},
4776
- branchState: getAnnotatedChildState(state, defaultResult.next.state, defaultBranch)
4729
+ branchState: getWrappedChildState(state, defaultResult.next.state, defaultBranch)
4777
4730
  },
4778
4731
  ...mergedExec != null ? {
4779
4732
  exec: mergedExec,
@@ -4797,7 +4750,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4797
4750
  const syncBranches = branches;
4798
4751
  if (state.selectedBranch === void 0) {
4799
4752
  {
4800
- const annotatedDiscriminatorStateForDeferred = getAnnotatedChildState(state, state.discriminatorState, syncDiscriminator);
4753
+ const annotatedDiscriminatorStateForDeferred = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
4801
4754
  const deferredDiscriminatorResult = unwrapCompleteResult(syncDiscriminator.complete(annotatedDiscriminatorStateForDeferred, withChildExecPath(exec, "_discriminator")));
4802
4755
  if (deferredDiscriminatorResult.success) {
4803
4756
  const deferredValue = deferredDiscriminatorResult.value;
@@ -4811,13 +4764,13 @@ function conditional(discriminator, branches, defaultBranch, options) {
4811
4764
  exec: branchExec,
4812
4765
  dependencyRegistry: exec?.dependencyRegistry
4813
4766
  };
4814
- const annotatedInitial = getAnnotatedChildState(state, deferredBranch.initialState, deferredBranch);
4767
+ const annotatedInitial = getWrappedChildState(state, deferredBranch.initialState, deferredBranch);
4815
4768
  const replayResult = deferredBranch.parse({
4816
4769
  ...emptyCtx,
4817
4770
  state: annotatedInitial
4818
4771
  });
4819
4772
  const branchState = replayResult.success ? replayResult.next.state : annotatedInitial;
4820
- const annotatedBranchState = getAnnotatedChildState(state, branchState, deferredBranch);
4773
+ const annotatedBranchState = getWrappedChildState(state, branchState, deferredBranch);
4821
4774
  const branchResult$1 = unwrapCompleteResult(deferredBranch.complete(annotatedBranchState, branchExec));
4822
4775
  if (branchResult$1.success) return {
4823
4776
  success: true,
@@ -4840,7 +4793,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4840
4793
  } else if (syncDefaultBranch === void 0) return deferredDiscriminatorResult;
4841
4794
  }
4842
4795
  if (syncDefaultBranch !== void 0) {
4843
- const branchState = getAnnotatedChildState(state, state.branchState ?? syncDefaultBranch.initialState, syncDefaultBranch);
4796
+ const branchState = getWrappedChildState(state, state.branchState ?? syncDefaultBranch.initialState, syncDefaultBranch);
4844
4797
  const defaultResult = unwrapCompleteResult(syncDefaultBranch.complete(branchState, withChildExecPath(exec, "_branch")));
4845
4798
  if (!defaultResult.success) return defaultResult;
4846
4799
  return {
@@ -4858,15 +4811,15 @@ function conditional(discriminator, branches, defaultBranch, options) {
4858
4811
  };
4859
4812
  }
4860
4813
  const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
4861
- const annotatedDiscriminatorState = getAnnotatedChildState(state, state.discriminatorState, syncDiscriminator);
4814
+ const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
4862
4815
  const combinedState = {
4863
4816
  _discriminator: annotatedDiscriminatorState,
4864
- _branch: getAnnotatedChildState(state, state.branchState, branchParser)
4817
+ _branch: getWrappedChildState(state, state.branchState, branchParser)
4865
4818
  };
4866
4819
  const runtime = createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
4867
4820
  collectExplicitSourceValues(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, exec?.path), runtime);
4868
4821
  collectSourcesFromState(combinedState, runtime);
4869
- const resolvedBranchState = getAnnotatedChildState(state, resolveStateWithRuntime(state.branchState, runtime), branchParser);
4822
+ const resolvedBranchState = getWrappedChildState(state, resolveStateWithRuntime(state.branchState, runtime), branchParser);
4870
4823
  const completionExec = {
4871
4824
  ...exec ?? {
4872
4825
  usage: branchParser.usage,
@@ -4917,7 +4870,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4917
4870
  };
4918
4871
  if (state.selectedBranch === void 0) {
4919
4872
  if (exec?.phase !== "parse" && exec?.phase !== "suggest") {
4920
- const annotatedDiscriminatorStateForDeferred = getAnnotatedChildState(state, state.discriminatorState, discriminator);
4873
+ const annotatedDiscriminatorStateForDeferred = getWrappedChildState(state, state.discriminatorState, discriminator);
4921
4874
  const deferredDiscriminatorResult = unwrapCompleteResult(await discriminator.complete(annotatedDiscriminatorStateForDeferred, withChildExecPath(exec, "_discriminator")));
4922
4875
  if (deferredDiscriminatorResult.success) {
4923
4876
  const deferredValue = deferredDiscriminatorResult.value;
@@ -4931,13 +4884,13 @@ function conditional(discriminator, branches, defaultBranch, options) {
4931
4884
  exec: branchExec,
4932
4885
  dependencyRegistry: exec?.dependencyRegistry
4933
4886
  };
4934
- const annotatedInitial = getAnnotatedChildState(state, deferredBranch.initialState, deferredBranch);
4887
+ const annotatedInitial = getWrappedChildState(state, deferredBranch.initialState, deferredBranch);
4935
4888
  const replayResult = await deferredBranch.parse({
4936
4889
  ...emptyCtx,
4937
4890
  state: annotatedInitial
4938
4891
  });
4939
4892
  const branchState = replayResult.success ? replayResult.next.state : annotatedInitial;
4940
- const annotatedBranchState = getAnnotatedChildState(state, branchState, deferredBranch);
4893
+ const annotatedBranchState = getWrappedChildState(state, branchState, deferredBranch);
4941
4894
  const branchResult$1 = unwrapCompleteResult(await deferredBranch.complete(annotatedBranchState, branchExec));
4942
4895
  if (branchResult$1.success) return {
4943
4896
  success: true,
@@ -4964,7 +4917,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4964
4917
  value: [void 0, void 0]
4965
4918
  };
4966
4919
  if (defaultBranch !== void 0) {
4967
- const branchState = getAnnotatedChildState(state, state.branchState ?? defaultBranch.initialState, defaultBranch);
4920
+ const branchState = getWrappedChildState(state, state.branchState ?? defaultBranch.initialState, defaultBranch);
4968
4921
  const defaultResult = unwrapCompleteResult(await defaultBranch.complete(branchState, withChildExecPath(exec, "_branch")));
4969
4922
  if (!defaultResult.success) return defaultResult;
4970
4923
  return {
@@ -4982,10 +4935,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
4982
4935
  };
4983
4936
  }
4984
4937
  const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
4985
- const annotatedDiscriminatorState = getAnnotatedChildState(state, state.discriminatorState, discriminator);
4938
+ const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, discriminator);
4986
4939
  const combinedState = {
4987
4940
  _discriminator: annotatedDiscriminatorState,
4988
- _branch: getAnnotatedChildState(state, state.branchState, branchParser)
4941
+ _branch: getWrappedChildState(state, state.branchState, branchParser)
4989
4942
  };
4990
4943
  const runtime = createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
4991
4944
  await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, exec?.path), runtime);
@@ -5031,7 +4984,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
5031
4984
  error: options?.errors?.branchMismatch ? options.errors.branchMismatch(resolvedKey, speculativeKey) : message`Branch mismatch: tokens for ${speculativeKey} were consumed, but the discriminator resolved to ${resolvedKey}.`
5032
4985
  };
5033
4986
  }
5034
- const resolvedBranchState = getAnnotatedChildState(state, await resolveStateWithRuntimeAsync(state.branchState, runtime), branchParser);
4987
+ const resolvedBranchState = getWrappedChildState(state, await resolveStateWithRuntimeAsync(state.branchState, runtime), branchParser);
5035
4988
  const branchResult = unwrapCompleteResult(await branchParser.complete(resolvedBranchState, withChildExecPath(completionExec, "_branch")));
5036
4989
  if (!branchResult.success) {
5037
4990
  if (discriminatorValue !== void 0 && options?.errors?.branchError) return {
@@ -5051,12 +5004,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
5051
5004
  };
5052
5005
  const getConditionalBranchSeedSync = (currentState, branchParser, branchState, exec) => {
5053
5006
  const branchExec = withChildExecPath(exec, "_branch");
5054
- const annotatedState = getAnnotatedChildState(currentState, branchState, branchParser);
5007
+ const annotatedState = getWrappedChildState(currentState, branchState, branchParser);
5055
5008
  return extractOrCompletePhase2SeedSync(branchParser, annotatedState, branchExec);
5056
5009
  };
5057
5010
  const getConditionalBranchSeedAsync = async (currentState, branchParser, branchState, exec) => {
5058
5011
  const branchExec = withChildExecPath(exec, "_branch");
5059
- const annotatedState = getAnnotatedChildState(currentState, branchState, branchParser);
5012
+ const annotatedState = getWrappedChildState(currentState, branchState, branchParser);
5060
5013
  return await extractOrCompletePhase2SeedAsync(branchParser, annotatedState, branchExec);
5061
5014
  };
5062
5015
  function* suggestSync(context, prefix) {
@@ -5066,10 +5019,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
5066
5019
  const syncDefaultBranch = defaultBranch;
5067
5020
  if (state.selectedBranch === void 0) {
5068
5021
  const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
5069
- const annotatedDiscriminatorState = getAnnotatedChildState(state, state.discriminatorState, syncDiscriminator);
5022
+ const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
5070
5023
  const defaultCombinedState = {
5071
5024
  _discriminator: annotatedDiscriminatorState,
5072
- _branch: syncDefaultBranch == null ? state.branchState : getAnnotatedChildState(state, state.branchState, syncDefaultBranch)
5025
+ _branch: syncDefaultBranch == null ? state.branchState : getWrappedChildState(state, state.branchState, syncDefaultBranch)
5073
5026
  };
5074
5027
  collectExplicitSourceValues(buildRuntimeNodesFromPairs(syncDefaultBranch == null ? [["_discriminator", discriminator]] : [["_discriminator", discriminator], ["_branch", syncDefaultBranch]], defaultCombinedState, context.exec?.path), runtime);
5075
5028
  collectSourcesFromState(defaultCombinedState, runtime);
@@ -5083,7 +5036,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
5083
5036
  } } : {}
5084
5037
  };
5085
5038
  yield* syncDiscriminator.suggest(withChildContext(suggestContext, "_discriminator", state.discriminatorState, syncDiscriminator), prefix);
5086
- const annotatedDiscState = getAnnotatedChildState(state, state.discriminatorState, syncDiscriminator);
5039
+ const annotatedDiscState = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
5087
5040
  const discComplete = syncDiscriminator.complete(annotatedDiscState, withChildExecPath(suggestContext.exec ? {
5088
5041
  ...suggestContext.exec,
5089
5042
  phase: "suggest"
@@ -5095,10 +5048,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
5095
5048
  } else {
5096
5049
  const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
5097
5050
  const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
5098
- const annotatedDiscriminatorState = getAnnotatedChildState(state, state.discriminatorState, syncDiscriminator);
5051
+ const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
5099
5052
  const combinedState = {
5100
5053
  _discriminator: annotatedDiscriminatorState,
5101
- _branch: getAnnotatedChildState(state, state.branchState, branchParser)
5054
+ _branch: getWrappedChildState(state, state.branchState, branchParser)
5102
5055
  };
5103
5056
  collectExplicitSourceValues(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, context.exec?.path), runtime);
5104
5057
  collectSourcesFromState(combinedState, runtime);
@@ -5118,10 +5071,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
5118
5071
  const state = context.state ?? initialState;
5119
5072
  if (state.selectedBranch === void 0) {
5120
5073
  const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
5121
- const annotatedDiscriminatorState = getAnnotatedChildState(state, state.discriminatorState, discriminator);
5074
+ const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, discriminator);
5122
5075
  const defaultCombinedState = {
5123
5076
  _discriminator: annotatedDiscriminatorState,
5124
- _branch: defaultBranch == null ? state.branchState : getAnnotatedChildState(state, state.branchState, defaultBranch)
5077
+ _branch: defaultBranch == null ? state.branchState : getWrappedChildState(state, state.branchState, defaultBranch)
5125
5078
  };
5126
5079
  await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs(defaultBranch == null ? [["_discriminator", discriminator]] : [["_discriminator", discriminator], ["_branch", defaultBranch]], defaultCombinedState, context.exec?.path), runtime);
5127
5080
  collectSourcesFromState(defaultCombinedState, runtime);
@@ -5137,7 +5090,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
5137
5090
  yield* discriminator.suggest(withChildContext(suggestContext, "_discriminator", state.discriminatorState, discriminator), prefix);
5138
5091
  let discResolved = false;
5139
5092
  if (discriminator.$mode === "sync") {
5140
- const annotatedDiscState = getAnnotatedChildState(state, state.discriminatorState, discriminator);
5093
+ const annotatedDiscState = getWrappedChildState(state, state.discriminatorState, discriminator);
5141
5094
  const discComplete = discriminator.complete(annotatedDiscState, withChildExecPath(suggestContext.exec ? {
5142
5095
  ...suggestContext.exec,
5143
5096
  phase: "suggest"
@@ -5154,10 +5107,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
5154
5107
  } else {
5155
5108
  const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
5156
5109
  const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
5157
- const annotatedDiscriminatorState = getAnnotatedChildState(state, state.discriminatorState, discriminator);
5110
+ const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, discriminator);
5158
5111
  const combinedState = {
5159
5112
  _discriminator: annotatedDiscriminatorState,
5160
- _branch: getAnnotatedChildState(state, state.branchState, branchParser)
5113
+ _branch: getWrappedChildState(state, state.branchState, branchParser)
5161
5114
  };
5162
5115
  await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, context.exec?.path), runtime);
5163
5116
  collectSourcesFromState(combinedState, runtime);
@@ -5197,7 +5150,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
5197
5150
  const syncBranches = branches;
5198
5151
  const discriminatorExec = withChildExecPath(exec, "_discriminator");
5199
5152
  if (state.selectedBranch === void 0) {
5200
- const discriminatorSeed$1 = completeOrExtractPhase2Seed(syncDiscriminator, getAnnotatedChildState(state, state.discriminatorState, syncDiscriminator), discriminatorExec);
5153
+ const discriminatorSeed$1 = completeOrExtractPhase2Seed(syncDiscriminator, getWrappedChildState(state, state.discriminatorState, syncDiscriminator), discriminatorExec);
5201
5154
  if (typeof discriminatorSeed$1?.value === "string") {
5202
5155
  const branchParser$1 = syncBranches[discriminatorSeed$1.value];
5203
5156
  if (branchParser$1 != null) {
@@ -5213,12 +5166,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
5213
5166
  }
5214
5167
  const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
5215
5168
  const branchSeed = getConditionalBranchSeedSync(state, branchParser, state.branchState ?? branchParser.initialState, exec);
5216
- const discriminatorSeed = state.selectedBranch.kind === "default" ? null : state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key ? { value: state.discriminatorValue } : completeOrExtractPhase2Seed(syncDiscriminator, getAnnotatedChildState(state, state.discriminatorState, syncDiscriminator), discriminatorExec) ?? { value: state.selectedBranch.key };
5169
+ const discriminatorSeed = state.selectedBranch.kind === "default" ? null : state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key ? { value: state.discriminatorValue } : completeOrExtractPhase2Seed(syncDiscriminator, getWrappedChildState(state, state.discriminatorState, syncDiscriminator), discriminatorExec) ?? { value: state.selectedBranch.key };
5217
5170
  return combineTuplePhase2Seeds(discriminatorSeed, branchSeed);
5218
5171
  }, async () => {
5219
5172
  const discriminatorExec = withChildExecPath(exec, "_discriminator");
5220
5173
  if (state.selectedBranch === void 0) {
5221
- const discriminatorSeed$1 = await completeOrExtractPhase2Seed(discriminator, getAnnotatedChildState(state, state.discriminatorState, discriminator), discriminatorExec);
5174
+ const discriminatorSeed$1 = await completeOrExtractPhase2Seed(discriminator, getWrappedChildState(state, state.discriminatorState, discriminator), discriminatorExec);
5222
5175
  if (typeof discriminatorSeed$1?.value === "string") {
5223
5176
  const branchParser$1 = branches[discriminatorSeed$1.value];
5224
5177
  if (branchParser$1 != null) {
@@ -5234,7 +5187,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
5234
5187
  }
5235
5188
  const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
5236
5189
  const branchSeed = await getConditionalBranchSeedAsync(state, branchParser, state.branchState ?? branchParser.initialState, exec);
5237
- const discriminatorSeed = state.selectedBranch.kind === "default" ? null : state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key ? { value: state.discriminatorValue } : await completeOrExtractPhase2Seed(discriminator, getAnnotatedChildState(state, state.discriminatorState, discriminator), discriminatorExec) ?? { value: state.selectedBranch.key };
5190
+ const discriminatorSeed = state.selectedBranch.kind === "default" ? null : state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key ? { value: state.discriminatorValue } : await completeOrExtractPhase2Seed(discriminator, getWrappedChildState(state, state.discriminatorState, discriminator), discriminatorExec) ?? { value: state.selectedBranch.key };
5238
5191
  return combineTuplePhase2Seeds(discriminatorSeed, branchSeed);
5239
5192
  });
5240
5193
  },