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)