@jcode.labs/ragmir 2.6.0 → 2.8.0

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.
Files changed (108) hide show
  1. package/README.md +4 -2
  2. package/dist/access-log.d.ts.map +1 -1
  3. package/dist/access-log.js +65 -8
  4. package/dist/access-log.js.map +1 -1
  5. package/dist/chunking.d.ts.map +1 -1
  6. package/dist/chunking.js +77 -7
  7. package/dist/chunking.js.map +1 -1
  8. package/dist/cli-options.d.ts +2 -0
  9. package/dist/cli-options.d.ts.map +1 -1
  10. package/dist/cli-options.js +8 -0
  11. package/dist/cli-options.js.map +1 -1
  12. package/dist/cli.js +106 -29
  13. package/dist/cli.js.map +1 -1
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +73 -29
  16. package/dist/config.js.map +1 -1
  17. package/dist/defaults.d.ts +2 -0
  18. package/dist/defaults.d.ts.map +1 -1
  19. package/dist/defaults.js +7 -1
  20. package/dist/defaults.js.map +1 -1
  21. package/dist/destroy.d.ts.map +1 -1
  22. package/dist/destroy.js +23 -1
  23. package/dist/destroy.js.map +1 -1
  24. package/dist/doctor.d.ts.map +1 -1
  25. package/dist/doctor.js +40 -9
  26. package/dist/doctor.js.map +1 -1
  27. package/dist/embeddings.d.ts +4 -1
  28. package/dist/embeddings.d.ts.map +1 -1
  29. package/dist/embeddings.js +62 -14
  30. package/dist/embeddings.js.map +1 -1
  31. package/dist/evaluate.d.ts.map +1 -1
  32. package/dist/evaluate.js +89 -4
  33. package/dist/evaluate.js.map +1 -1
  34. package/dist/files.d.ts +8 -1
  35. package/dist/files.d.ts.map +1 -1
  36. package/dist/files.js +44 -8
  37. package/dist/files.js.map +1 -1
  38. package/dist/index-diagnostics.d.ts +1 -1
  39. package/dist/index-diagnostics.d.ts.map +1 -1
  40. package/dist/index-diagnostics.js +14 -4
  41. package/dist/index-diagnostics.js.map +1 -1
  42. package/dist/index-policy.d.ts +3 -0
  43. package/dist/index-policy.d.ts.map +1 -0
  44. package/dist/index-policy.js +28 -0
  45. package/dist/index-policy.js.map +1 -0
  46. package/dist/index.d.ts +2 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/ingest.d.ts.map +1 -1
  51. package/dist/ingest.js +119 -53
  52. package/dist/ingest.js.map +1 -1
  53. package/dist/init.d.ts.map +1 -1
  54. package/dist/init.js +15 -3
  55. package/dist/init.js.map +1 -1
  56. package/dist/limits.d.ts +9 -0
  57. package/dist/limits.d.ts.map +1 -0
  58. package/dist/limits.js +25 -0
  59. package/dist/limits.js.map +1 -0
  60. package/dist/mcp.d.ts +4 -1
  61. package/dist/mcp.d.ts.map +1 -1
  62. package/dist/mcp.js +84 -18
  63. package/dist/mcp.js.map +1 -1
  64. package/dist/parsing.d.ts.map +1 -1
  65. package/dist/parsing.js +124 -24
  66. package/dist/parsing.js.map +1 -1
  67. package/dist/permissions.d.ts +3 -0
  68. package/dist/permissions.d.ts.map +1 -0
  69. package/dist/permissions.js +13 -0
  70. package/dist/permissions.js.map +1 -0
  71. package/dist/query-sanitizer.d.ts +8 -0
  72. package/dist/query-sanitizer.d.ts.map +1 -0
  73. package/dist/query-sanitizer.js +170 -0
  74. package/dist/query-sanitizer.js.map +1 -0
  75. package/dist/query.d.ts +2 -2
  76. package/dist/query.d.ts.map +1 -1
  77. package/dist/query.js +285 -29
  78. package/dist/query.js.map +1 -1
  79. package/dist/research.d.ts.map +1 -1
  80. package/dist/research.js +42 -4
  81. package/dist/research.js.map +1 -1
  82. package/dist/security.d.ts.map +1 -1
  83. package/dist/security.js +110 -14
  84. package/dist/security.js.map +1 -1
  85. package/dist/store.d.ts +4 -0
  86. package/dist/store.d.ts.map +1 -1
  87. package/dist/store.js +86 -55
  88. package/dist/store.js.map +1 -1
  89. package/dist/text.d.ts.map +1 -1
  90. package/dist/text.js +13 -1
  91. package/dist/text.js.map +1 -1
  92. package/dist/types.d.ts +131 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/version.d.ts +1 -1
  95. package/dist/version.js +1 -1
  96. package/examples/document-evidence-benchmark/.ragmir/config.json +22 -0
  97. package/examples/document-evidence-benchmark/README.md +36 -0
  98. package/examples/document-evidence-benchmark/golden-queries.json +41 -0
  99. package/examples/document-evidence-benchmark/raw/contracts/master-services-agreement.md +11 -0
  100. package/examples/document-evidence-benchmark/raw/contracts/pdf-control-evidence.pdf +32 -0
  101. package/examples/document-evidence-benchmark/raw/legal-tax/residency-review-note.md +10 -0
  102. package/examples/document-evidence-benchmark/raw/rfp/security-questionnaire.md +12 -0
  103. package/examples/document-evidence-benchmark/raw/runbooks/incident-response-runbook.md +11 -0
  104. package/examples/document-evidence-benchmark/raw/specs/agent-integration-spec.md +11 -0
  105. package/examples/sovereign-rag-demo/.ragmir/config.json +2 -1
  106. package/examples/sovereign-rag-demo/README.md +9 -1
  107. package/package.json +3 -3
  108. package/skills/ragmir/SKILL.md +11 -3
package/dist/config.js CHANGED
@@ -5,8 +5,13 @@ import { z } from "zod";
5
5
  import { CONFIG_PATH, DEFAULT_CONFIG, LEGACY_CONFIG_PATH, LEGACY_DEFAULT_CONFIG, } from "./defaults.js";
6
6
  import { isRecord } from "./guards.js";
7
7
  const embeddingProviderSchema = z.enum(["local-hash", "transformers"]);
8
+ const privacyProfileSchema = z.enum(["strict", "private", "trusted", "custom"]);
9
+ const retrievalProfileSchema = z.enum(["fast", "balanced", "quality", "custom"]);
8
10
  const rawConfigSchema = z
9
11
  .object({
12
+ privacyProfile: privacyProfileSchema.default(DEFAULT_CONFIG.privacyProfile),
13
+ retrievalProfile: retrievalProfileSchema.default(DEFAULT_CONFIG.retrievalProfile),
14
+ acceptedRisks: z.array(z.string().min(1)).default(DEFAULT_CONFIG.acceptedRisks),
10
15
  rawDir: z.string().default(DEFAULT_CONFIG.rawDir),
11
16
  storageDir: z.string().default(DEFAULT_CONFIG.storageDir),
12
17
  sourcesFile: z.string().default(DEFAULT_CONFIG.sourcesFile),
@@ -16,6 +21,7 @@ const rawConfigSchema = z
16
21
  tableName: z.string().default(DEFAULT_CONFIG.tableName),
17
22
  embeddingProvider: embeddingProviderSchema.default(DEFAULT_CONFIG.embeddingProvider),
18
23
  embeddingModel: z.string().default(DEFAULT_CONFIG.embeddingModel),
24
+ embeddingModelRevision: z.string().min(1).default(DEFAULT_CONFIG.embeddingModelRevision),
19
25
  transformersAllowRemoteModels: z
20
26
  .boolean()
21
27
  .default(DEFAULT_CONFIG.transformersAllowRemoteModels),
@@ -93,39 +99,76 @@ export async function loadConfig(start = process.cwd()) {
93
99
  }
94
100
  const defaults = projectConfig.legacy ? LEGACY_DEFAULT_CONFIG : DEFAULT_CONFIG;
95
101
  const parsed = rawConfigSchema.parse({ ...defaults, ...raw });
96
- const withEnv = applyEnv(parsed);
97
- if (withEnv.chunkOverlap >= withEnv.chunkSize) {
102
+ const withProfile = applyRetrievalProfile(parsed, raw);
103
+ const withEnv = applyEnv(withProfile);
104
+ const effective = applyPrivacyFloor(withEnv);
105
+ if (effective.chunkOverlap >= effective.chunkSize) {
98
106
  throw new Error("chunkOverlap must be lower than chunkSize.");
99
107
  }
100
108
  return {
101
109
  projectRoot: projectConfig.projectRoot,
102
- rawDir: resolveFromRoot(projectConfig.projectRoot, withEnv.rawDir),
103
- storageDir: resolveFromRoot(projectConfig.projectRoot, withEnv.storageDir),
104
- sourcesFile: resolveFromRoot(projectConfig.projectRoot, withEnv.sourcesFile),
105
- sources: withEnv.sources,
106
- accessLogPath: resolveFromRoot(projectConfig.projectRoot, withEnv.accessLogPath),
107
- embeddingModelPath: resolveFromRoot(projectConfig.projectRoot, withEnv.embeddingModelPath),
108
- tableName: withEnv.tableName,
109
- embeddingProvider: withEnv.embeddingProvider,
110
- embeddingModel: withEnv.embeddingModel,
111
- transformersAllowRemoteModels: withEnv.transformersAllowRemoteModels,
112
- redaction: withEnv.redaction,
113
- accessLog: withEnv.accessLog,
114
- mcpMaxTopK: withEnv.mcpMaxTopK,
115
- topK: withEnv.topK,
116
- chunkSize: withEnv.chunkSize,
117
- chunkOverlap: withEnv.chunkOverlap,
118
- maxFileBytes: withEnv.maxFileBytes,
119
- ingestConcurrency: withEnv.ingestConcurrency,
120
- embeddingBatchSize: withEnv.embeddingBatchSize,
121
- hybridTextScanLimit: withEnv.hybridTextScanLimit,
122
- includeExtensions: normalizeExtensions(withEnv.includeExtensions),
123
- pdfOcrCommand: withEnv.pdfOcrCommand,
124
- pdfOcrTimeoutMs: withEnv.pdfOcrTimeoutMs,
125
- imageOcrCommand: withEnv.imageOcrCommand,
126
- imageOcrTimeoutMs: withEnv.imageOcrTimeoutMs,
127
- legacyWordCommand: withEnv.legacyWordCommand,
128
- legacyWordTimeoutMs: withEnv.legacyWordTimeoutMs,
110
+ privacyProfile: effective.privacyProfile,
111
+ retrievalProfile: effective.retrievalProfile,
112
+ acceptedRisks: effective.acceptedRisks,
113
+ rawDir: resolveFromRoot(projectConfig.projectRoot, effective.rawDir),
114
+ storageDir: resolveFromRoot(projectConfig.projectRoot, effective.storageDir),
115
+ sourcesFile: resolveFromRoot(projectConfig.projectRoot, effective.sourcesFile),
116
+ sources: effective.sources,
117
+ accessLogPath: resolveFromRoot(projectConfig.projectRoot, effective.accessLogPath),
118
+ embeddingModelPath: resolveFromRoot(projectConfig.projectRoot, effective.embeddingModelPath),
119
+ tableName: effective.tableName,
120
+ embeddingProvider: effective.embeddingProvider,
121
+ embeddingModel: effective.embeddingModel,
122
+ embeddingModelRevision: effective.embeddingModelRevision,
123
+ transformersAllowRemoteModels: effective.transformersAllowRemoteModels,
124
+ redaction: effective.redaction,
125
+ accessLog: effective.accessLog,
126
+ mcpMaxTopK: effective.mcpMaxTopK,
127
+ topK: effective.topK,
128
+ chunkSize: effective.chunkSize,
129
+ chunkOverlap: effective.chunkOverlap,
130
+ maxFileBytes: effective.maxFileBytes,
131
+ ingestConcurrency: effective.ingestConcurrency,
132
+ embeddingBatchSize: effective.embeddingBatchSize,
133
+ hybridTextScanLimit: effective.hybridTextScanLimit,
134
+ includeExtensions: normalizeExtensions(effective.includeExtensions),
135
+ pdfOcrCommand: effective.pdfOcrCommand,
136
+ pdfOcrTimeoutMs: effective.pdfOcrTimeoutMs,
137
+ imageOcrCommand: effective.imageOcrCommand,
138
+ imageOcrTimeoutMs: effective.imageOcrTimeoutMs,
139
+ legacyWordCommand: effective.legacyWordCommand,
140
+ legacyWordTimeoutMs: effective.legacyWordTimeoutMs,
141
+ };
142
+ }
143
+ function applyRetrievalProfile(config, raw) {
144
+ if (config.retrievalProfile === "fast") {
145
+ return {
146
+ ...config,
147
+ topK: raw.topK === undefined ? 5 : config.topK,
148
+ hybridTextScanLimit: raw.hybridTextScanLimit === undefined ? 2_000 : config.hybridTextScanLimit,
149
+ };
150
+ }
151
+ if (config.retrievalProfile === "quality") {
152
+ return {
153
+ ...config,
154
+ topK: raw.topK === undefined ? 12 : config.topK,
155
+ hybridTextScanLimit: raw.hybridTextScanLimit === undefined ? 10_000 : config.hybridTextScanLimit,
156
+ };
157
+ }
158
+ return config;
159
+ }
160
+ function applyPrivacyFloor(config) {
161
+ if (config.privacyProfile !== "strict") {
162
+ return config;
163
+ }
164
+ return {
165
+ ...config,
166
+ transformersAllowRemoteModels: false,
167
+ redaction: { ...config.redaction, enabled: true, builtIn: true },
168
+ mcpMaxTopK: Math.min(config.mcpMaxTopK, 5),
169
+ pdfOcrCommand: [],
170
+ imageOcrCommand: [],
171
+ legacyWordCommand: [],
129
172
  };
130
173
  }
131
174
  function resolveFromRoot(projectRoot, input) {
@@ -140,6 +183,7 @@ function applyEnv(config) {
140
183
  accessLogPath: readStringEnv("RAGMIR_ACCESS_LOG_PATH", "KB_ACCESS_LOG_PATH", config.accessLogPath),
141
184
  embeddingProvider: readEmbeddingProviderEnv("RAGMIR_EMBEDDING_PROVIDER", "KB_EMBEDDING_PROVIDER", config.embeddingProvider),
142
185
  embeddingModel: readStringEnv("RAGMIR_EMBEDDING_MODEL", "KB_EMBEDDING_MODEL", config.embeddingModel),
186
+ embeddingModelRevision: readStringEnv("RAGMIR_EMBEDDING_MODEL_REVISION", "KB_EMBEDDING_MODEL_REVISION", config.embeddingModelRevision),
143
187
  embeddingModelPath: readStringEnv("RAGMIR_EMBEDDING_MODEL_PATH", "KB_EMBEDDING_MODEL_PATH", config.embeddingModelPath),
144
188
  transformersAllowRemoteModels: readBooleanEnv("RAGMIR_TRANSFORMERS_ALLOW_REMOTE_MODELS", "KB_TRANSFORMERS_ALLOW_REMOTE_MODELS", config.transformersAllowRemoteModels),
145
189
  redaction: {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,9 @@ export declare const RAGMIR_RAW_DIR = ".ragmir/raw";
6
6
  export declare const CONFIG_PATH = ".ragmir/config.json";
7
7
  export declare const LEGACY_CONFIG_PATH = ".kb/config.json";
8
8
  export declare const DEFAULT_SKILL_TARGET_DIR = ".ragmir/skills";
9
+ export declare const INDEX_MANIFEST_FILENAME = "index-manifest.json";
9
10
  export declare const RAGMIR_PROJECT_ROOT_ENV = "RAGMIR_PROJECT_ROOT";
11
+ export declare const VECTOR_DISTANCE_METRIC = "l2";
10
12
  export declare const RAGMIR_GITIGNORE_ENTRY = ".ragmir/";
11
13
  export declare const LEGACY_KB_GITIGNORE_ENTRY = ".kb/";
12
14
  export declare const LEGACY_PRIVATE_GITIGNORE_ENTRY = "private/";
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,eAAO,MAAM,UAAU,YAAY,CAAA;AACnC,eAAO,MAAM,aAAa,QAAQ,CAAA;AAClC,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAC3C,eAAO,MAAM,cAAc,gBAAsB,CAAA;AACjD,eAAO,MAAM,WAAW,wBAA8B,CAAA;AACtD,eAAO,MAAM,kBAAkB,oBAAiC,CAAA;AAChE,eAAO,MAAM,wBAAwB,mBAAyB,CAAA;AAE9D,eAAO,MAAM,uBAAuB,wBAAwB,CAAA;AAE5D,eAAO,MAAM,sBAAsB,aAAmB,CAAA;AACtD,eAAO,MAAM,yBAAyB,SAAsB,CAAA;AAC5D,eAAO,MAAM,8BAA8B,aAA2B,CAAA;AACtE,eAAO,MAAM,uCAAuC,eAA6B,CAAA;AAEjF,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAgCtD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAM7D,CAAA"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,eAAO,MAAM,UAAU,YAAY,CAAA;AACnC,eAAO,MAAM,aAAa,QAAQ,CAAA;AAClC,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAC3C,eAAO,MAAM,cAAc,gBAAsB,CAAA;AACjD,eAAO,MAAM,WAAW,wBAA8B,CAAA;AACtD,eAAO,MAAM,kBAAkB,oBAAiC,CAAA;AAChE,eAAO,MAAM,wBAAwB,mBAAyB,CAAA;AAC9D,eAAO,MAAM,uBAAuB,wBAAwB,CAAA;AAE5D,eAAO,MAAM,uBAAuB,wBAAwB,CAAA;AAC5D,eAAO,MAAM,sBAAsB,OAAO,CAAA;AAE1C,eAAO,MAAM,sBAAsB,aAAmB,CAAA;AACtD,eAAO,MAAM,yBAAyB,SAAsB,CAAA;AAC5D,eAAO,MAAM,8BAA8B,aAA2B,CAAA;AACtE,eAAO,MAAM,uCAAuC,eAA6B,CAAA;AAEjF,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAoCtD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAM7D,CAAA"}
package/dist/defaults.js CHANGED
@@ -5,12 +5,17 @@ export const RAGMIR_RAW_DIR = `${RAGMIR_DIR}/raw`;
5
5
  export const CONFIG_PATH = `${RAGMIR_DIR}/config.json`;
6
6
  export const LEGACY_CONFIG_PATH = `${LEGACY_KB_DIR}/config.json`;
7
7
  export const DEFAULT_SKILL_TARGET_DIR = `${RAGMIR_DIR}/skills`;
8
+ export const INDEX_MANIFEST_FILENAME = "index-manifest.json";
8
9
  export const RAGMIR_PROJECT_ROOT_ENV = "RAGMIR_PROJECT_ROOT";
10
+ export const VECTOR_DISTANCE_METRIC = "l2";
9
11
  export const RAGMIR_GITIGNORE_ENTRY = `${RAGMIR_DIR}/`;
10
12
  export const LEGACY_KB_GITIGNORE_ENTRY = `${LEGACY_KB_DIR}/`;
11
13
  export const LEGACY_PRIVATE_GITIGNORE_ENTRY = `${LEGACY_PRIVATE_DIR}/`;
12
14
  export const LEGACY_PRIVATE_GITIGNORE_FALLBACK_ENTRY = `${LEGACY_PRIVATE_DIR}/**`;
13
15
  export const DEFAULT_CONFIG = {
16
+ privacyProfile: "private",
17
+ retrievalProfile: "balanced",
18
+ acceptedRisks: [],
14
19
  rawDir: RAGMIR_RAW_DIR,
15
20
  storageDir: `${RAGMIR_DIR}/storage`,
16
21
  sourcesFile: `${RAGMIR_DIR}/sources.txt`,
@@ -19,7 +24,8 @@ export const DEFAULT_CONFIG = {
19
24
  embeddingModelPath: `${RAGMIR_DIR}/models`,
20
25
  tableName: "chunks",
21
26
  embeddingProvider: "local-hash",
22
- embeddingModel: "mixedbread-ai/mxbai-embed-xsmall-v1",
27
+ embeddingModel: "intfloat/multilingual-e5-small",
28
+ embeddingModelRevision: "main",
23
29
  transformersAllowRemoteModels: false,
24
30
  redaction: {
25
31
  enabled: true,
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAA;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,UAAU,MAAM,CAAA;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,UAAU,cAAc,CAAA;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,aAAa,cAAc,CAAA;AAChE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,UAAU,SAAS,CAAA;AAE9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAE5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,UAAU,GAAG,CAAA;AACtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,aAAa,GAAG,CAAA;AAC5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,kBAAkB,GAAG,CAAA;AACtE,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,kBAAkB,KAAK,CAAA;AAEjF,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,GAAG,UAAU,UAAU;IACnC,WAAW,EAAE,GAAG,UAAU,cAAc;IACxC,OAAO,EAAE,EAAE;IACX,aAAa,EAAE,GAAG,UAAU,aAAa;IACzC,kBAAkB,EAAE,GAAG,UAAU,SAAS;IAC1C,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,YAAY;IAC/B,cAAc,EAAE,qCAAqC;IACrD,6BAA6B,EAAE,KAAK;IACpC,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,UAAU;IACxB,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,EAAE;IACtB,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,EAAE;IACrB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,EAAE;IACrB,mBAAmB,EAAE,OAAO;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IAChE,GAAG,cAAc;IACjB,MAAM,EAAE,kBAAkB;IAC1B,UAAU,EAAE,GAAG,aAAa,UAAU;IACtC,WAAW,EAAE,GAAG,aAAa,cAAc;IAC3C,aAAa,EAAE,GAAG,aAAa,aAAa;CAC7C,CAAA"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAA;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,UAAU,MAAM,CAAA;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,UAAU,cAAc,CAAA;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,aAAa,cAAc,CAAA;AAChE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,UAAU,SAAS,CAAA;AAC9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAE5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAA;AAE1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,UAAU,GAAG,CAAA;AACtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,aAAa,GAAG,CAAA;AAC5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,kBAAkB,GAAG,CAAA;AACtE,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,kBAAkB,KAAK,CAAA;AAEjF,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD,cAAc,EAAE,SAAS;IACzB,gBAAgB,EAAE,UAAU;IAC5B,aAAa,EAAE,EAAE;IACjB,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,GAAG,UAAU,UAAU;IACnC,WAAW,EAAE,GAAG,UAAU,cAAc;IACxC,OAAO,EAAE,EAAE;IACX,aAAa,EAAE,GAAG,UAAU,aAAa;IACzC,kBAAkB,EAAE,GAAG,UAAU,SAAS;IAC1C,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,YAAY;IAC/B,cAAc,EAAE,gCAAgC;IAChD,sBAAsB,EAAE,MAAM;IAC9B,6BAA6B,EAAE,KAAK;IACpC,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,UAAU;IACxB,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,EAAE;IACtB,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,EAAE;IACrB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,EAAE;IACrB,mBAAmB,EAAE,OAAO;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IAChE,GAAG,cAAc;IACjB,MAAM,EAAE,kBAAkB;IAC1B,UAAU,EAAE,GAAG,aAAa,UAAU;IACtC,WAAW,EAAE,GAAG,aAAa,cAAc;IAC3C,aAAa,EAAE,GAAG,aAAa,aAAa;CAC7C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,wBAAsB,YAAY,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAenF"}
1
+ {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,wBAAsB,YAAY,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiBnF"}
package/dist/destroy.js CHANGED
@@ -1,11 +1,15 @@
1
1
  import { existsSync } from "node:fs";
2
- import { rm } from "node:fs/promises";
2
+ import { realpath, rm } from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
3
5
  import { recordAccess } from "./access-log.js";
4
6
  import { loadConfig } from "./config.js";
7
+ import { INDEX_MANIFEST_FILENAME } from "./defaults.js";
5
8
  import { clearTransformersCache } from "./embeddings.js";
6
9
  export async function destroyIndex(cwd = process.cwd()) {
7
10
  const config = await loadConfig(cwd);
8
11
  const existed = existsSync(config.storageDir);
12
+ await assertSafeIndexStorage(config.projectRoot, config.storageDir, existed);
9
13
  await recordAccess(config, { action: "destroy-index" });
10
14
  await rm(config.storageDir, { recursive: true, force: true });
11
15
  // Release any cached Transformers.js pipelines so a subsequent re-ingest with
@@ -17,4 +21,22 @@ export async function destroyIndex(cwd = process.cwd()) {
17
21
  note: "Generated index removed. For forensic deletion guarantees, keep .ragmir/ on an encrypted volume and rotate/destroy the volume key.",
18
22
  };
19
23
  }
24
+ async function assertSafeIndexStorage(projectRoot, storageDir, existed) {
25
+ const resolvedProjectRoot = await realpath(projectRoot);
26
+ const resolvedStorageDir = existed ? await realpath(storageDir) : path.resolve(storageDir);
27
+ const filesystemRoot = path.parse(resolvedStorageDir).root;
28
+ const homeDir = await realpath(os.homedir());
29
+ if (resolvedStorageDir === filesystemRoot ||
30
+ isSameOrAncestor(resolvedStorageDir, resolvedProjectRoot) ||
31
+ isSameOrAncestor(resolvedStorageDir, homeDir)) {
32
+ throw new Error(`Refusing to remove unsafe storageDir ${JSON.stringify(storageDir)}. Configure a dedicated Ragmir index directory.`);
33
+ }
34
+ if (existed && !existsSync(path.join(resolvedStorageDir, INDEX_MANIFEST_FILENAME))) {
35
+ throw new Error(`Refusing to remove ${JSON.stringify(storageDir)} because it does not contain ${INDEX_MANIFEST_FILENAME}.`);
36
+ }
37
+ }
38
+ function isSameOrAncestor(candidate, target) {
39
+ const relative = path.relative(candidate, target);
40
+ return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
41
+ }
20
42
  //# sourceMappingURL=destroy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAGxD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACpD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAE7C,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;IACvD,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,8EAA8E;IAC9E,0EAA0E;IAC1E,sBAAsB,EAAE,CAAA;IAExB,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,oIAAoI;KAC3I,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAGxD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACpD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAE7C,MAAM,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAE5E,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;IACvD,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,8EAA8E;IAC9E,0EAA0E;IAC1E,sBAAsB,EAAE,CAAA;IAExB,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,oIAAoI;KAC3I,CAAA;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,WAAmB,EACnB,UAAkB,EAClB,OAAgB;IAEhB,MAAM,mBAAmB,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAA;IACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1F,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAA;IAC1D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAE5C,IACE,kBAAkB,KAAK,cAAc;QACrC,gBAAgB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;QACzD,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAC7C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,iDAAiD,CACpH,CAAA;IACH,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gCAAgC,uBAAuB,GAAG,CAC3G,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB,EAAE,MAAc;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACjD,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;AACtF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,wBAAsB,MAAM,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAmEvE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,wBAAsB,MAAM,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CA4FvE"}
package/dist/doctor.js CHANGED
@@ -27,14 +27,28 @@ export async function doctor(cwd = process.cwd()) {
27
27
  manifestFound: manifest !== null,
28
28
  warning: freshnessWarning,
29
29
  };
30
+ const oversizedFiles = countSkippedByReason(auditReport.skippedFiles, "oversized");
31
+ const sensitiveFiles = countSkippedByReason(auditReport.skippedFiles, "sensitive-name");
32
+ const coverageComplete = auditReport.missingFromIndex.length === 0 &&
33
+ auditReport.staleInIndex.length === 0 &&
34
+ auditReport.emptyTextFiles.length === 0 &&
35
+ oversizedFiles === 0;
36
+ const operationalReady = initialized && chunksIndexed > 0 && coverageComplete;
37
+ const indexPolicyCurrent = freshnessWarning === null;
38
+ const privacyCompliant = securityReport.warnings.length === 0;
30
39
  const nextSteps = nextActions({
31
40
  initialized,
32
41
  supportedFiles: auditReport.supportedFiles.length,
42
+ supportedBytes: auditReport.supportedBytes,
43
+ largestFileBytes: auditReport.largestFileBytes,
33
44
  skippedFiles: auditReport.skippedFiles.length,
34
45
  unsupportedFiles: countSkippedByReason(auditReport.skippedFiles, "unsupported-extension"),
35
46
  chunksIndexed,
36
47
  missingFromIndex: auditReport.missingFromIndex.length,
37
48
  staleInIndex: auditReport.staleInIndex.length,
49
+ emptyTextFiles: auditReport.emptyTextFiles.length,
50
+ oversizedFiles,
51
+ sensitiveFiles,
38
52
  warnings: securityReport.warnings.length,
39
53
  embeddingProvider: config.embeddingProvider,
40
54
  agentKitInstalled,
@@ -54,21 +68,32 @@ export async function doctor(cwd = process.cwd()) {
54
68
  transformersAllowRemoteModels: config.transformersAllowRemoteModels,
55
69
  redactionEnabled: config.redaction.enabled,
56
70
  accessLog: config.accessLog,
71
+ privacyProfile: config.privacyProfile,
72
+ retrievalProfile: config.retrievalProfile,
57
73
  supportedFiles: auditReport.supportedFiles.length,
74
+ supportedBytes: auditReport.supportedBytes,
75
+ largestFileBytes: auditReport.largestFileBytes,
76
+ maxFileBytes: config.maxFileBytes,
58
77
  skippedFiles: auditReport.skippedFiles.length,
59
78
  unsupportedFiles: countSkippedByReason(auditReport.skippedFiles, "unsupported-extension"),
79
+ oversizedFiles,
80
+ sensitiveFiles,
81
+ emptyTextFiles: auditReport.emptyTextFiles.length,
60
82
  indexedFiles: auditReport.indexedFiles.length,
61
83
  chunksIndexed,
62
84
  missingFromIndex: auditReport.missingFromIndex.length,
63
85
  staleInIndex: auditReport.staleInIndex.length,
64
86
  securityWarnings: securityReport.warnings,
65
87
  indexFreshness,
66
- ready: initialized &&
67
- chunksIndexed > 0 &&
68
- auditReport.missingFromIndex.length === 0 &&
69
- auditReport.staleInIndex.length === 0 &&
70
- securityReport.warnings.length === 0 &&
71
- freshnessWarning === null,
88
+ ready: operationalReady && indexPolicyCurrent && privacyCompliant,
89
+ readiness: {
90
+ operationalReady,
91
+ coverageComplete,
92
+ indexPolicyCurrent,
93
+ privacyCompliant,
94
+ retrievalQualityVerified: false,
95
+ acceptedRisks: config.acceptedRisks,
96
+ },
72
97
  nextSteps,
73
98
  };
74
99
  }
@@ -98,13 +123,19 @@ function nextActions(input) {
98
123
  if (input.lexicalScanWarning) {
99
124
  steps.push(input.lexicalScanWarning);
100
125
  }
126
+ if (input.emptyTextFiles > 0) {
127
+ steps.push(`${input.emptyTextFiles} supported source file(s) produced no indexable text. Configure local OCR for scans/images, convert the files, or add extracted text, then re-ingest.`);
128
+ }
129
+ if (input.oversizedFiles > 0) {
130
+ steps.push(`${input.oversizedFiles} source file(s) exceed maxFileBytes. Run \`rgr audit --unsupported\`, then split the files or raise the limit only after reviewing the memory and parsing risk.`);
131
+ }
132
+ if (input.unsupportedFiles > 0 || input.sensitiveFiles > 0) {
133
+ steps.push("Run `rgr audit --unsupported` to review every intentionally skipped source file.");
134
+ }
101
135
  if (input.warnings > 0) {
102
136
  steps.push(`Run \`${input.run(["security-audit", "--strict"])}\` and fix the reported warnings.`);
103
137
  }
104
138
  if (steps.length === 0) {
105
- if (input.unsupportedFiles > 0) {
106
- steps.push("Run `rgr audit --unsupported` to inspect files skipped because their type is not supported.");
107
- }
108
139
  if (input.embeddingProvider === "local-hash") {
109
140
  steps.push(`For natural-language Q&A, run \`${input.run(["models", "pull", "--enable"])}\`, then run \`${input.run(["ingest", "--rebuild"])}\`.`);
110
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
1
  import type { Config } from "./types.js";
2
+ type EmbeddingInputType = "document" | "query";
2
3
  export interface PullEmbeddingModelResult {
3
4
  embeddingModel: string;
4
5
  embeddingModelPath: string;
5
6
  }
6
- export declare function embedTexts(texts: string[], config: Config): Promise<number[][]>;
7
+ export declare function embedTexts(texts: string[], config: Config, inputType?: EmbeddingInputType): Promise<number[][]>;
7
8
  export declare function pullEmbeddingModel(config: Config): Promise<PullEmbeddingModelResult>;
8
9
  export declare function embedText(text: string, config: Config): Promise<number[]>;
10
+ export declare function prepareEmbeddingText(text: string, model: string, inputType: EmbeddingInputType): string;
9
11
  /**
10
12
  * Release all cached Transformers.js pipelines. Used by `destroy-index` and on
11
13
  * embedding-config changes in long-lived processes (MCP server) so stale model
12
14
  * weights are not pinned in memory.
13
15
  */
14
16
  export declare function clearTransformersCache(): void;
17
+ export {};
15
18
  //# sourceMappingURL=embeddings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAoBxC,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAUrF;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAe1F;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAM/E;AAsDD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAuBxC,KAAK,kBAAkB,GAAG,UAAU,GAAG,OAAO,CAAA;AAE9C,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,kBAA+B,GACzC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAUrB;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAe1F;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAM/E;AAqBD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,kBAAkB,GAC5B,MAAM,CAQR;AA+DD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -4,6 +4,8 @@ import { tokenize } from "./text.js";
4
4
  const LOCAL_HASH_DIMENSIONS = 384;
5
5
  const LONG_TOKEN_MIN_LENGTH = 6;
6
6
  const LONG_TOKEN_WEIGHT = 1.4;
7
+ const CHARACTER_NGRAM_LENGTH = 3;
8
+ const CHARACTER_NGRAM_WEIGHT = 0.35;
7
9
  /**
8
10
  * Maximum number of Transformers.js pipelines kept live in the process. Each
9
11
  * pipeline pins ONNX runtime weights (often hundreds of MB), so a long-lived
@@ -13,14 +15,15 @@ const LONG_TOKEN_WEIGHT = 1.4;
13
15
  */
14
16
  const MAX_TRANSFORMERS_PIPELINES = 3;
15
17
  const transformersPipelines = new Map();
16
- export async function embedTexts(texts, config) {
18
+ let transformersEnvironmentQueue = Promise.resolve();
19
+ export async function embedTexts(texts, config, inputType = "document") {
17
20
  if (texts.length === 0) {
18
21
  return [];
19
22
  }
20
23
  if (config.embeddingProvider === "local-hash") {
21
24
  return texts.map(localHashEmbedding);
22
25
  }
23
- return embedWithTransformers(texts, config);
26
+ return embedWithTransformers(texts, config, inputType);
24
27
  }
25
28
  export async function pullEmbeddingModel(config) {
26
29
  await mkdir(config.embeddingModelPath, { recursive: true });
@@ -39,24 +42,35 @@ export async function pullEmbeddingModel(config) {
39
42
  };
40
43
  }
41
44
  export async function embedText(text, config) {
42
- const [embedding] = await embedTexts([text], config);
45
+ const [embedding] = await embedTexts([text], config, "query");
43
46
  if (!embedding) {
44
47
  throw new Error("No embedding returned for query.");
45
48
  }
46
49
  return embedding;
47
50
  }
48
- async function embedWithTransformers(texts, config) {
51
+ async function embedWithTransformers(texts, config, inputType) {
49
52
  const extractor = await transformersExtractor(config);
50
- const output = await extractor(texts, { pooling: "mean", normalize: true });
53
+ const preparedTexts = texts.map((text) => prepareEmbeddingText(text, config.embeddingModel, inputType));
54
+ const output = await extractor(preparedTexts, { pooling: "mean", normalize: true });
51
55
  const rows = tensorToEmbeddingRows(output);
52
56
  if (rows.length !== texts.length) {
53
57
  throw new Error(`Expected ${texts.length} embeddings, received ${rows.length}.`);
54
58
  }
55
59
  return rows;
56
60
  }
61
+ export function prepareEmbeddingText(text, model, inputType) {
62
+ if (/(^|\/)(multilingual-)?e5-/iu.test(model)) {
63
+ return `${inputType === "query" ? "query" : "passage"}: ${text}`;
64
+ }
65
+ if (inputType === "query" && /(^|\/)mxbai-embed/iu.test(model)) {
66
+ return `Represent this sentence for searching relevant passages: ${text}`;
67
+ }
68
+ return text;
69
+ }
57
70
  async function transformersExtractor(config) {
58
71
  const key = [
59
72
  config.embeddingModel,
73
+ config.embeddingModelRevision,
60
74
  config.embeddingModelPath,
61
75
  String(config.transformersAllowRemoteModels),
62
76
  ].join("\n");
@@ -67,15 +81,36 @@ async function transformersExtractor(config) {
67
81
  transformersPipelines.set(key, cached);
68
82
  return cached;
69
83
  }
70
- const transformers = await import("@huggingface/transformers");
71
- transformers.env.localModelPath = config.embeddingModelPath;
72
- transformers.env.cacheDir = config.embeddingModelPath;
73
- transformers.env.allowRemoteModels = config.transformersAllowRemoteModels;
74
- const extractor = (await transformers.pipeline("feature-extraction", config.embeddingModel));
84
+ const extractor = await createTransformersExtractor(config);
75
85
  evictTransformersPipeline();
76
86
  transformersPipelines.set(key, extractor);
77
87
  return extractor;
78
88
  }
89
+ async function createTransformersExtractor(config) {
90
+ const creation = transformersEnvironmentQueue.then(async () => {
91
+ const transformers = await import("@huggingface/transformers");
92
+ const previous = {
93
+ localModelPath: transformers.env.localModelPath,
94
+ cacheDir: transformers.env.cacheDir,
95
+ allowRemoteModels: transformers.env.allowRemoteModels,
96
+ };
97
+ transformers.env.localModelPath = config.embeddingModelPath;
98
+ transformers.env.cacheDir = config.embeddingModelPath;
99
+ transformers.env.allowRemoteModels = config.transformersAllowRemoteModels;
100
+ try {
101
+ return (await transformers.pipeline("feature-extraction", config.embeddingModel, {
102
+ revision: config.embeddingModelRevision,
103
+ }));
104
+ }
105
+ finally {
106
+ transformers.env.localModelPath = previous.localModelPath;
107
+ transformers.env.cacheDir = previous.cacheDir;
108
+ transformers.env.allowRemoteModels = previous.allowRemoteModels;
109
+ }
110
+ });
111
+ transformersEnvironmentQueue = creation.then(() => undefined, () => undefined);
112
+ return creation;
113
+ }
79
114
  function evictTransformersPipeline() {
80
115
  while (transformersPipelines.size >= MAX_TRANSFORMERS_PIPELINES) {
81
116
  // Map iteration order is insertion order, so the first key is the least
@@ -99,10 +134,10 @@ function localHashEmbedding(text) {
99
134
  const vector = Array.from({ length: LOCAL_HASH_DIMENSIONS }, () => 0);
100
135
  const tokens = tokenize(text);
101
136
  for (const token of tokens) {
102
- const hash = createHash("sha256").update(token).digest();
103
- const index = hash.readUInt32BE(0) % LOCAL_HASH_DIMENSIONS;
104
- const sign = (hash.at(4) ?? 0) % 2 === 0 ? 1 : -1;
105
- vector[index] = (vector[index] ?? 0) + sign * tokenWeight(token);
137
+ addHashedFeature(vector, token, tokenWeight(token));
138
+ for (const ngram of characterNgrams(token)) {
139
+ addHashedFeature(vector, `ngram:${ngram}`, CHARACTER_NGRAM_WEIGHT);
140
+ }
106
141
  }
107
142
  const magnitude = Math.sqrt(vector.reduce((sum, value) => sum + value * value, 0));
108
143
  if (magnitude === 0) {
@@ -110,6 +145,19 @@ function localHashEmbedding(text) {
110
145
  }
111
146
  return vector.map((value) => value / magnitude);
112
147
  }
148
+ function addHashedFeature(vector, feature, weight) {
149
+ const hash = createHash("sha256").update(feature).digest();
150
+ const index = hash.readUInt32BE(0) % LOCAL_HASH_DIMENSIONS;
151
+ const sign = (hash.at(4) ?? 0) % 2 === 0 ? 1 : -1;
152
+ vector[index] = (vector[index] ?? 0) + sign * weight;
153
+ }
154
+ function characterNgrams(token) {
155
+ const characters = [...token];
156
+ if (characters.length < CHARACTER_NGRAM_LENGTH) {
157
+ return [];
158
+ }
159
+ return Array.from({ length: characters.length - CHARACTER_NGRAM_LENGTH + 1 }, (_value, index) => characters.slice(index, index + CHARACTER_NGRAM_LENGTH).join(""));
160
+ }
113
161
  function tokenWeight(token) {
114
162
  return token.length >= LONG_TOKEN_MIN_LENGTH ? LONG_TOKEN_WEIGHT : 1;
115
163
  }