{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/workspace/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,WAAW,oBAAoB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE;QACV,IAAI,EAAE,aAAa,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,IAAI,oBAAoB,CAiBzD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAmBlG;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,GAAG;IAC5D,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;CACxB,CAWA","sourcesContent":["/**\n * Workspace index configuration.\n *\n * Defaults are privacy-preserving: the local deterministic fixture embedding\n * backend is on by default (no external data leaves the machine), and remote\n * embedding is always opt-in. Storage defaults to a user-level cache directory\n * outside the source tree.\n */\n\nimport type { EmbeddingMode } from \"./embedding.js\";\nimport { defaultIndexRoot } from \"./identity.js\";\n\nexport interface WorkspaceIndexConfig {\n\tstorageRoot?: string;\n\tembedding: {\n\t\tmode: EmbeddingMode;\n\t\tmodelId?: string;\n\t\tdimensions?: number;\n\t\tmaximumInputTokens?: number;\n\t\tendpoint?: string;\n\t\tapiKey?: string;\n\t\tallowed?: boolean;\n\t};\n\tmaxFileBytes?: number;\n\thistoryDepth?: number;\n\tadditionalIgnores?: string[];\n\tincludeLockfilesAsMetadata?: boolean;\n\tsecretScanner?: boolean;\n\tmaximumResults?: number;\n\tmaximumContextTokens?: number;\n}\n\nexport function defaultIndexConfig(): WorkspaceIndexConfig {\n\treturn {\n\t\tstorageRoot: defaultIndexRoot(),\n\t\tembedding: {\n\t\t\tmode: \"fixture\",\n\t\t\tmodelId: \"fixture-local\",\n\t\t\tdimensions: 32,\n\t\t\tmaximumInputTokens: 2048,\n\t\t\tallowed: false,\n\t\t},\n\t\tmaxFileBytes: 8 * 1024 * 1024,\n\t\thistoryDepth: 5,\n\t\tincludeLockfilesAsMetadata: false,\n\t\tsecretScanner: true,\n\t\tmaximumResults: 50,\n\t\tmaximumContextTokens: 4096,\n\t};\n}\n\n/**\n * Resolve effective config from disk (optional JENSEN-index.json) merged over\n * defaults and environment knobs. Environment never enables remote embedding\n * implicitly.\n */\nexport function resolveIndexConfig(overrides?: Partial<WorkspaceIndexConfig>): WorkspaceIndexConfig {\n\tconst base = defaultIndexConfig();\n\tlet mode: EmbeddingMode = base.embedding.mode;\n\tconst envMode = process.env.JENSEN_INDEX_EMBEDDINGS;\n\tif (envMode === \"disabled\" || envMode === \"fixture\" || envMode === \"local\" || envMode === \"remote\") {\n\t\tmode = envMode;\n\t}\n\tconst cfg = { ...base, ...overrides, embedding: { ...base.embedding, ...(overrides?.embedding ?? {}) } };\n\t// Environment storage-root override (for tests/tools, never comitted state).\n\tconst envRoot = process.env.JENSEN_INDEX_STORAGE_ROOT;\n\tif (envRoot) cfg.storageRoot = envRoot;\n\tif (mode !== base.embedding.mode) cfg.embedding = { ...cfg.embedding, mode };\n\tif (cfg.embedding.mode === \"remote\") {\n\t\t// Remote requires explicit policy; if allowed is not true, degrade to fixture.\n\t\tif (!cfg.embedding.allowed) {\n\t\t\tcfg.embedding.mode = \"fixture\";\n\t\t}\n\t}\n\treturn cfg;\n}\n\nexport function embeddingSummary(cfg: WorkspaceIndexConfig): {\n\tmode: EmbeddingMode;\n\tmodelId?: string;\n\tdimensions?: number;\n\tendpoint?: string;\n\tlocal: boolean;\n\tpolicyRequired: boolean;\n} {\n\tconst local =\n\t\tcfg.embedding.mode === \"fixture\" || cfg.embedding.mode === \"local\" || cfg.embedding.mode === \"disabled\";\n\treturn {\n\t\tmode: cfg.embedding.mode,\n\t\tmodelId: cfg.embedding.modelId,\n\t\tdimensions: cfg.embedding.dimensions,\n\t\tendpoint: cfg.embedding.endpoint,\n\t\tlocal,\n\t\tpolicyRequired: cfg.embedding.mode === \"remote\",\n\t};\n}\n"]}