abhigyanpatwari/GitNexus · error · Error

Invalid GITNEXUS_FTS_CJK_SEGMENTATION

Error message

Invalid GITNEXUS_FTS_CJK_SEGMENTATION "${process.env.GITNEXUS_FTS_CJK_SEGMENTATION}". Expected one of: ${[...SUPPORTED_FTS_CJK_SEGMENTATION_MODES].sort().join(', ')}.

What it means

Error "Invalid GITNEXUS_FTS_CJK_SEGMENTATION "${process.env.GITNEXUS_FTS_CJK_SEGMENTATION}". Expected one of: ${[...SUPPORTED_FTS_CJK_SEGMENTATION_MODES].sort().join(', ')}." thrown in abhigyanpatwari/GitNexus.

When it happens

Trigger: Thrown at gitnexus/src/core/search/cjk-segmentation.ts:149 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of abhigyanpatwari/GitNexus@aac7515d2a (2026-08-20). Data as JSON: /api/errors/95c5b0d1749e92b4. Report an issue: GitHub.

Appendix: source

Thrown at gitnexus/src/core/search/cjk-segmentation.ts:149

 * interpolate a persisted `RepoMeta.cjkSegmentation` value into agent-visible
 * text (e.g. the MCP query-tool's mode-drift warning, #2339) must validate
 * with this first — that field comes from `meta.json`, a schema-less
 * `JSON.parse` of on-disk state inside the analyzed repo, not a trusted
 * input, so an unvalidated value could otherwise be echoed verbatim into
 * tool output an agent is expected to trust and act on.
 */
export const isSupportedCjkSegmentationMode = (value: unknown): value is string =>
  typeof value === 'string' && SUPPORTED_FTS_CJK_SEGMENTATION_MODES.has(value);

let resolvedCjkSegmentation: string | undefined;

/** Read + validate `GITNEXUS_FTS_CJK_SEGMENTATION`. Throws on an unsupported value. */
function resolveFTSCjkSegmentation(): string {
  const raw = process.env.GITNEXUS_FTS_CJK_SEGMENTATION?.trim().toLowerCase();
  if (!raw) return DEFAULT_FTS_CJK_SEGMENTATION;
  if (SUPPORTED_FTS_CJK_SEGMENTATION_MODES.has(raw)) return raw;

  throw new Error(
    `Invalid GITNEXUS_FTS_CJK_SEGMENTATION "${process.env.GITNEXUS_FTS_CJK_SEGMENTATION}". ` +
      `Expected one of: ${[...SUPPORTED_FTS_CJK_SEGMENTATION_MODES].sort().join(', ')}.`,
  );
}

/**
 * Resolve + validate `GITNEXUS_FTS_CJK_SEGMENTATION` once, up front at analyze
 * startup, and cache it — mirrors `initialiseSearchFTSStemmer` so an invalid
 * value fails in milliseconds instead of partway through a run. The cached
 * value is what {@link getSearchFTSCjkSegmentation} returns for the rest of
 * the run, so config is read and validated in exactly one place.
 */
export function initialiseSearchFTSCjkSegmentation(): string {
  resolvedCjkSegmentation = resolveFTSCjkSegmentation();
  return resolvedCjkSegmentation;
}

/**

View on GitHub (pinned to aac7515d2a)