@optique/core 1.0.0-dev.1718 → 1.0.0-dev.1722

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.
@@ -4166,7 +4166,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4166
4166
  if (!defaultResult.success && defaultResult.consumed > 0) return defaultResult;
4167
4167
  if (defaultResult.success && defaultResult.consumed.length === 0 && speculationContext.buffer.length === 0) deferredBranchState = getAnnotatedChildState(state, defaultResult.next.state, defaultBranch);
4168
4168
  }
4169
- if (speculativeError != null && !ambiguous) return speculativeError;
4169
+ if (speculativeError != null && !ambiguous && !provisionalAmbiguous) return speculativeError;
4170
4170
  const annotatedDiscriminatorState$1 = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
4171
4171
  return {
4172
4172
  success: true,
@@ -4497,7 +4497,19 @@ function conditional(discriminator, branches, defaultBranch, options) {
4497
4497
  dependencyRegistry: runtime.registry
4498
4498
  };
4499
4499
  const needsDiscriminatorCompletion = state.selectedBranch.kind !== "default" && !(state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key);
4500
- const discriminatorCompleteResult = needsDiscriminatorCompletion ? await discriminator.complete(annotatedDiscriminatorState, withChildExecPath(completionExec, "_discriminator")) : void 0;
4500
+ let discriminatorCompletionExec = completionExec;
4501
+ if (wasSpeculative && needsDiscriminatorCompletion) {
4502
+ const discOnlyState = { _discriminator: annotatedDiscriminatorState };
4503
+ const discOnlyRuntime = require_dependency_runtime.createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
4504
+ await require_dependency_runtime.collectExplicitSourceValuesAsync(require_dependency_runtime.buildRuntimeNodesFromPairs([["_discriminator", discriminator]], discOnlyState, exec?.path), discOnlyRuntime);
4505
+ require_dependency_runtime.collectSourcesFromState(discOnlyState, discOnlyRuntime);
4506
+ discriminatorCompletionExec = {
4507
+ ...completionExec,
4508
+ dependencyRuntime: discOnlyRuntime,
4509
+ dependencyRegistry: discOnlyRuntime.registry
4510
+ };
4511
+ }
4512
+ const discriminatorCompleteResult = needsDiscriminatorCompletion ? await discriminator.complete(annotatedDiscriminatorState, withChildExecPath(discriminatorCompletionExec, "_discriminator")) : void 0;
4501
4513
  let discriminatorValue;
4502
4514
  if (state.selectedBranch.kind === "default") discriminatorValue = void 0;
4503
4515
  else if (state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key) discriminatorValue = state.discriminatorValue;
@@ -4509,7 +4521,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4509
4521
  }
4510
4522
  if (wasSpeculative && state.selectedBranch.kind === "branch" && discriminatorValue !== state.selectedBranch.key) {
4511
4523
  const speculativeKey = state.selectedBranch.key;
4512
- const resolvedKey = discriminatorValue ?? "";
4524
+ const resolvedKey = typeof discriminatorValue === "string" ? discriminatorValue : "<unknown>";
4513
4525
  return {
4514
4526
  success: false,
4515
4527
  error: options?.errors?.branchMismatch ? options.errors.branchMismatch(resolvedKey, speculativeKey) : require_message.message`Branch mismatch: tokens for ${speculativeKey} were consumed, but the discriminator resolved to ${resolvedKey}.`
@@ -4166,7 +4166,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4166
4166
  if (!defaultResult.success && defaultResult.consumed > 0) return defaultResult;
4167
4167
  if (defaultResult.success && defaultResult.consumed.length === 0 && speculationContext.buffer.length === 0) deferredBranchState = getAnnotatedChildState(state, defaultResult.next.state, defaultBranch);
4168
4168
  }
4169
- if (speculativeError != null && !ambiguous) return speculativeError;
4169
+ if (speculativeError != null && !ambiguous && !provisionalAmbiguous) return speculativeError;
4170
4170
  const annotatedDiscriminatorState$1 = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
4171
4171
  return {
4172
4172
  success: true,
@@ -4497,7 +4497,19 @@ function conditional(discriminator, branches, defaultBranch, options) {
4497
4497
  dependencyRegistry: runtime.registry
4498
4498
  };
4499
4499
  const needsDiscriminatorCompletion = state.selectedBranch.kind !== "default" && !(state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key);
4500
- const discriminatorCompleteResult = needsDiscriminatorCompletion ? await discriminator.complete(annotatedDiscriminatorState, withChildExecPath(completionExec, "_discriminator")) : void 0;
4500
+ let discriminatorCompletionExec = completionExec;
4501
+ if (wasSpeculative && needsDiscriminatorCompletion) {
4502
+ const discOnlyState = { _discriminator: annotatedDiscriminatorState };
4503
+ const discOnlyRuntime = createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
4504
+ await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs([["_discriminator", discriminator]], discOnlyState, exec?.path), discOnlyRuntime);
4505
+ collectSourcesFromState(discOnlyState, discOnlyRuntime);
4506
+ discriminatorCompletionExec = {
4507
+ ...completionExec,
4508
+ dependencyRuntime: discOnlyRuntime,
4509
+ dependencyRegistry: discOnlyRuntime.registry
4510
+ };
4511
+ }
4512
+ const discriminatorCompleteResult = needsDiscriminatorCompletion ? await discriminator.complete(annotatedDiscriminatorState, withChildExecPath(discriminatorCompletionExec, "_discriminator")) : void 0;
4501
4513
  let discriminatorValue;
4502
4514
  if (state.selectedBranch.kind === "default") discriminatorValue = void 0;
4503
4515
  else if (state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key) discriminatorValue = state.discriminatorValue;
@@ -4509,7 +4521,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
4509
4521
  }
4510
4522
  if (wasSpeculative && state.selectedBranch.kind === "branch" && discriminatorValue !== state.selectedBranch.key) {
4511
4523
  const speculativeKey = state.selectedBranch.key;
4512
- const resolvedKey = discriminatorValue ?? "";
4524
+ const resolvedKey = typeof discriminatorValue === "string" ? discriminatorValue : "<unknown>";
4513
4525
  return {
4514
4526
  success: false,
4515
4527
  error: options?.errors?.branchMismatch ? options.errors.branchMismatch(resolvedKey, speculativeKey) : message`Branch mismatch: tokens for ${speculativeKey} were consumed, but the discriminator resolved to ${resolvedKey}.`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optique/core",
3
- "version": "1.0.0-dev.1718+36e6fe97",
3
+ "version": "1.0.0-dev.1722+72215deb",
4
4
  "description": "Type-safe combinatorial command-line interface parser",
5
5
  "keywords": [
6
6
  "CLI",