@jcode.labs/ragmir 2.17.2 → 2.18.1

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 (205) hide show
  1. package/README.md +53 -43
  2. package/dist/access-log.d.ts +10 -0
  3. package/dist/access-log.d.ts.map +1 -1
  4. package/dist/access-log.js +119 -49
  5. package/dist/access-log.js.map +1 -1
  6. package/dist/chunking.d.ts +5 -1
  7. package/dist/chunking.d.ts.map +1 -1
  8. package/dist/chunking.js +102 -16
  9. package/dist/chunking.js.map +1 -1
  10. package/dist/citation.d.ts +18 -0
  11. package/dist/citation.d.ts.map +1 -0
  12. package/dist/citation.js +54 -0
  13. package/dist/citation.js.map +1 -0
  14. package/dist/cli-entry.d.ts +3 -0
  15. package/dist/cli-entry.d.ts.map +1 -0
  16. package/dist/cli-entry.js +16 -0
  17. package/dist/cli-entry.js.map +1 -0
  18. package/dist/cli-fast.d.ts +13 -0
  19. package/dist/cli-fast.d.ts.map +1 -0
  20. package/dist/cli-fast.js +145 -0
  21. package/dist/cli-fast.js.map +1 -0
  22. package/dist/cli-options.d.ts +3 -0
  23. package/dist/cli-options.d.ts.map +1 -1
  24. package/dist/cli-options.js +7 -0
  25. package/dist/cli-options.js.map +1 -1
  26. package/dist/cli-stdin.d.ts +3 -0
  27. package/dist/cli-stdin.d.ts.map +1 -0
  28. package/dist/cli-stdin.js +15 -0
  29. package/dist/cli-stdin.js.map +1 -0
  30. package/dist/cli.js +251 -44
  31. package/dist/cli.js.map +1 -1
  32. package/dist/client.d.ts +13 -2
  33. package/dist/client.d.ts.map +1 -1
  34. package/dist/client.js +155 -10
  35. package/dist/client.js.map +1 -1
  36. package/dist/config.d.ts +6 -0
  37. package/dist/config.d.ts.map +1 -1
  38. package/dist/config.js +227 -49
  39. package/dist/config.js.map +1 -1
  40. package/dist/context-resources.d.ts +4 -2
  41. package/dist/context-resources.d.ts.map +1 -1
  42. package/dist/context-resources.js +55 -24
  43. package/dist/context-resources.js.map +1 -1
  44. package/dist/defaults.d.ts +27 -0
  45. package/dist/defaults.d.ts.map +1 -1
  46. package/dist/defaults.js +42 -2
  47. package/dist/defaults.js.map +1 -1
  48. package/dist/destroy.d.ts +2 -2
  49. package/dist/destroy.d.ts.map +1 -1
  50. package/dist/destroy.js +34 -20
  51. package/dist/destroy.js.map +1 -1
  52. package/dist/doctor.d.ts +3 -2
  53. package/dist/doctor.d.ts.map +1 -1
  54. package/dist/doctor.js +86 -41
  55. package/dist/doctor.js.map +1 -1
  56. package/dist/durable-file.d.ts +13 -0
  57. package/dist/durable-file.d.ts.map +1 -0
  58. package/dist/durable-file.js +56 -0
  59. package/dist/durable-file.js.map +1 -0
  60. package/dist/embeddings.d.ts +14 -3
  61. package/dist/embeddings.d.ts.map +1 -1
  62. package/dist/embeddings.js +233 -95
  63. package/dist/embeddings.js.map +1 -1
  64. package/dist/errors.d.ts +1 -1
  65. package/dist/errors.d.ts.map +1 -1
  66. package/dist/errors.js.map +1 -1
  67. package/dist/evaluate.d.ts +4 -3
  68. package/dist/evaluate.d.ts.map +1 -1
  69. package/dist/evaluate.js +611 -110
  70. package/dist/evaluate.js.map +1 -1
  71. package/dist/files.d.ts +4 -1
  72. package/dist/files.d.ts.map +1 -1
  73. package/dist/files.js +119 -33
  74. package/dist/files.js.map +1 -1
  75. package/dist/generation-retention.d.ts +52 -0
  76. package/dist/generation-retention.d.ts.map +1 -0
  77. package/dist/generation-retention.js +318 -0
  78. package/dist/generation-retention.js.map +1 -0
  79. package/dist/index-diagnostics.d.ts +3 -2
  80. package/dist/index-diagnostics.d.ts.map +1 -1
  81. package/dist/index-diagnostics.js +32 -3
  82. package/dist/index-diagnostics.js.map +1 -1
  83. package/dist/index-policy.d.ts.map +1 -1
  84. package/dist/index-policy.js +3 -0
  85. package/dist/index-policy.js.map +1 -1
  86. package/dist/index-write-lock.d.ts +16 -1
  87. package/dist/index-write-lock.d.ts.map +1 -1
  88. package/dist/index-write-lock.js +392 -13
  89. package/dist/index-write-lock.js.map +1 -1
  90. package/dist/index.d.ts +12 -4
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +5 -2
  93. package/dist/index.js.map +1 -1
  94. package/dist/ingest.d.ts +11 -2
  95. package/dist/ingest.d.ts.map +1 -1
  96. package/dist/ingest.js +680 -165
  97. package/dist/ingest.js.map +1 -1
  98. package/dist/ingestion-metrics.d.ts +58 -0
  99. package/dist/ingestion-metrics.d.ts.map +1 -0
  100. package/dist/ingestion-metrics.js +216 -0
  101. package/dist/ingestion-metrics.js.map +1 -0
  102. package/dist/ingestion-state.d.ts +11 -2
  103. package/dist/ingestion-state.d.ts.map +1 -1
  104. package/dist/ingestion-state.js +480 -49
  105. package/dist/ingestion-state.js.map +1 -1
  106. package/dist/limits.d.ts.map +1 -1
  107. package/dist/limits.js +11 -1
  108. package/dist/limits.js.map +1 -1
  109. package/dist/mcp-output.d.ts +44 -4
  110. package/dist/mcp-output.d.ts.map +1 -1
  111. package/dist/mcp-output.js +132 -159
  112. package/dist/mcp-output.js.map +1 -1
  113. package/dist/mcp-summaries.d.ts +32 -0
  114. package/dist/mcp-summaries.d.ts.map +1 -0
  115. package/dist/mcp-summaries.js +227 -0
  116. package/dist/mcp-summaries.js.map +1 -0
  117. package/dist/mcp.d.ts +1 -1
  118. package/dist/mcp.d.ts.map +1 -1
  119. package/dist/mcp.js +85 -46
  120. package/dist/mcp.js.map +1 -1
  121. package/dist/ocr-cache.d.ts +15 -0
  122. package/dist/ocr-cache.d.ts.map +1 -0
  123. package/dist/ocr-cache.js +90 -0
  124. package/dist/ocr-cache.js.map +1 -0
  125. package/dist/ocr.d.ts +31 -0
  126. package/dist/ocr.d.ts.map +1 -1
  127. package/dist/ocr.js +193 -17
  128. package/dist/ocr.js.map +1 -1
  129. package/dist/parsing.d.ts.map +1 -1
  130. package/dist/parsing.js +482 -85
  131. package/dist/parsing.js.map +1 -1
  132. package/dist/permissions.js +2 -2
  133. package/dist/permissions.js.map +1 -1
  134. package/dist/preview.d.ts.map +1 -1
  135. package/dist/preview.js +10 -11
  136. package/dist/preview.js.map +1 -1
  137. package/dist/quality-report.d.ts +12 -0
  138. package/dist/quality-report.d.ts.map +1 -0
  139. package/dist/quality-report.js +146 -0
  140. package/dist/quality-report.js.map +1 -0
  141. package/dist/query.d.ts +7 -4
  142. package/dist/query.d.ts.map +1 -1
  143. package/dist/query.js +371 -284
  144. package/dist/query.js.map +1 -1
  145. package/dist/ranking.d.ts +38 -0
  146. package/dist/ranking.d.ts.map +1 -0
  147. package/dist/ranking.js +278 -0
  148. package/dist/ranking.js.map +1 -0
  149. package/dist/redaction.d.ts +6 -1
  150. package/dist/redaction.d.ts.map +1 -1
  151. package/dist/redaction.js +118 -4
  152. package/dist/redaction.js.map +1 -1
  153. package/dist/research.d.ts +6 -1
  154. package/dist/research.d.ts.map +1 -1
  155. package/dist/research.js +330 -130
  156. package/dist/research.js.map +1 -1
  157. package/dist/runtime-info.d.ts +3 -0
  158. package/dist/runtime-info.d.ts.map +1 -0
  159. package/dist/runtime-info.js +81 -0
  160. package/dist/runtime-info.js.map +1 -0
  161. package/dist/security.d.ts +3 -2
  162. package/dist/security.d.ts.map +1 -1
  163. package/dist/security.js +242 -45
  164. package/dist/security.js.map +1 -1
  165. package/dist/semantic-config.d.ts +7 -1
  166. package/dist/semantic-config.d.ts.map +1 -1
  167. package/dist/semantic-config.js +30 -4
  168. package/dist/semantic-config.js.map +1 -1
  169. package/dist/setup.js +6 -3
  170. package/dist/setup.js.map +1 -1
  171. package/dist/skill.js +34 -12
  172. package/dist/skill.js.map +1 -1
  173. package/dist/source-fingerprint-cache.d.ts +20 -0
  174. package/dist/source-fingerprint-cache.d.ts.map +1 -0
  175. package/dist/source-fingerprint-cache.js +133 -0
  176. package/dist/source-fingerprint-cache.js.map +1 -0
  177. package/dist/storage-maintenance.d.ts +46 -0
  178. package/dist/storage-maintenance.d.ts.map +1 -0
  179. package/dist/storage-maintenance.js +329 -0
  180. package/dist/storage-maintenance.js.map +1 -0
  181. package/dist/store.d.ts +39 -2
  182. package/dist/store.d.ts.map +1 -1
  183. package/dist/store.js +559 -24
  184. package/dist/store.js.map +1 -1
  185. package/dist/text.d.ts +1 -1
  186. package/dist/text.d.ts.map +1 -1
  187. package/dist/text.js +12 -2
  188. package/dist/text.js.map +1 -1
  189. package/dist/types.d.ts +414 -5
  190. package/dist/types.d.ts.map +1 -1
  191. package/dist/vector-index.d.ts +42 -0
  192. package/dist/vector-index.d.ts.map +1 -0
  193. package/dist/vector-index.js +249 -0
  194. package/dist/vector-index.js.map +1 -0
  195. package/dist/version.d.ts +1 -1
  196. package/dist/version.js +1 -1
  197. package/dist/workload.d.ts +22 -0
  198. package/dist/workload.d.ts.map +1 -0
  199. package/dist/workload.js +181 -0
  200. package/dist/workload.js.map +1 -0
  201. package/examples/document-evidence-benchmark/README.md +25 -63
  202. package/examples/document-evidence-benchmark/golden-queries.json +1 -1
  203. package/examples/library-api-demo/README.md +17 -57
  204. package/examples/sovereign-rag-demo/README.md +37 -97
  205. package/package.json +36 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workload.js","sourceRoot":"","sources":["../src/workload.ts"],"names":[],"mappings":"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"}
@@ -1,51 +1,36 @@
1
1
  # Document evidence benchmark
2
2
 
3
- A deterministic, public-safe benchmark for the retrieval and citation quality coding agents receive
4
- from Ragmir's confidential local RAG pipeline.
3
+ A deterministic, public-safe benchmark for the retrieval and citation quality a coding agent
4
+ receives from Ragmir. Six golden queries require the expected path and an exact file, line, chunk,
5
+ or PDF-page citation. The fictional corpus runs offline with `local-hash`.
5
6
 
6
- Use this example when you want to prove more than "a relevant file appeared." Its six golden queries
7
- check that Ragmir retrieves the expected path and the exact file, line, chunk, or PDF-page citation.
8
- Every document is fictional and safe to commit. The benchmark keeps its corpus and generated index
9
- on the machine and runs the default `local-hash` retrieval offline.
7
+ ## What passes
10
8
 
11
- ## What it measures
12
-
13
- | Signal | What a passing result means |
9
+ | Signal | Requirement |
14
10
  | --- | --- |
15
- | `Recall@K` | An expected source path appears within the configured top K results |
16
- | Exact text citation | The expected `relative/path:Lx-Ly#chunkIndex` is returned |
17
- | Exact PDF citation | The expected `relative/path:pN:Lx-Ly#chunkIndex` is returned |
18
-
19
- The corpus is intentionally small enough for each source to fit in one chunk. That makes citation
20
- expectations stable while exercising the same ingestion and evaluation code used for private
21
- knowledge bases.
11
+ | Recall@K | An expected source appears in the configured top K |
12
+ | Text citation | Exact `relative/path:Lx-Ly#chunkIndex` |
13
+ | PDF citation | Exact `relative/path:pN#chunkIndex`, with no invented source lines |
22
14
 
23
- ## Corpus
15
+ Each source fits in one chunk so citation expectations stay stable while exercising the production
16
+ ingestion and evaluation pipeline.
24
17
 
25
- | Fictional source | Evidence type |
18
+ | Fictional source | Evidence |
26
19
  | --- | --- |
27
20
  | `raw/contracts/master-services-agreement.md` | Contract and residency obligations |
28
- | `raw/contracts/pdf-control-evidence.pdf` | Embedded PDF text with a page citation |
21
+ | `raw/contracts/pdf-control-evidence.pdf` | Embedded PDF text and page citation |
29
22
  | `raw/rfp/security-questionnaire.md` | Security and hosting requirements |
30
23
  | `raw/runbooks/incident-response-runbook.md` | Operational evidence collection |
31
24
  | `raw/specs/agent-integration-spec.md` | Agent and retrieval boundaries |
32
25
  | `raw/legal-tax/residency-review-note.md` | Professional-review disclaimer |
33
26
 
34
- [`golden-queries.json`](./golden-queries.json) maps each test query to its expected path and exact
35
- citation.
27
+ [`golden-queries.json`](./golden-queries.json) maps questions to expected paths and citations.
36
28
 
37
- ## Run the benchmark
38
-
39
- From the repository root, install dependencies and build the packages:
29
+ ## Run it
40
30
 
41
31
  ```bash
42
32
  pnpm install --frozen-lockfile
43
33
  pnpm build
44
- ```
45
-
46
- Then run the benchmark from this directory:
47
-
48
- ```bash
49
34
  cd packages/ragmir-core/examples/document-evidence-benchmark
50
35
  node ../../dist/cli.js init
51
36
  node ../../dist/cli.js ingest --rebuild
@@ -53,40 +38,17 @@ node ../../dist/cli.js evaluate --golden golden-queries.json --json
53
38
  node ../../dist/cli.js evaluate --golden golden-queries.json --fail-under 1
54
39
  ```
55
40
 
56
- The last command exits non-zero unless every golden query succeeds at the configured threshold.
57
- Keep the JSON output when you need machine-readable evidence for CI or a retrieval-quality review.
58
-
59
- ## Read a failure
60
-
61
- 1. Check `rgr audit` for missing, stale, or skipped source files.
62
- 2. Inspect the failed query's returned paths and citations in JSON output.
63
- 3. Decide whether the corpus, expected citation, chunking, or retrieval mode changed.
64
- 4. Update a golden expectation only when the intended product behavior changed.
65
-
66
- Do not lower `--fail-under` merely to make a regression pass.
67
-
68
- ## Adapt it to a private corpus
69
-
70
- Copy the structure, not the fictional documents:
71
-
72
- ```text
73
- private-evaluation/
74
- ├── .ragmir/config.json
75
- ├── golden-queries.json
76
- └── raw/
77
- ```
78
-
79
- For each important question, record the smallest set of expected source paths. Add exact citations
80
- when the source is stable enough to make line, page, and chunk boundaries meaningful. Keep private
81
- contracts, RFPs, runbooks, tax notes, scans, golden queries, and evaluation reports outside Git or
82
- under ignored local state.
41
+ The final command fails unless every query meets the threshold. Keep JSON output when CI or a
42
+ retrieval review needs machine-readable evidence.
83
43
 
84
- ## Safety
44
+ On failure, run `rgr audit`, inspect returned paths and citations, then decide whether retrieval,
45
+ chunking, the corpus, or the intended expectation changed. Update a golden query only for an
46
+ intentional behavior change; never lower `--fail-under` to hide a regression.
85
47
 
86
- - The committed corpus contains no customer or production data.
87
- - The benchmark uses the offline `local-hash` provider and needs no model download.
88
- - Generated `.ragmir/storage` and evaluation output stay local and ignored.
89
- - A perfect synthetic score proves this fixture, not universal retrieval quality.
48
+ For private evaluation, copy the `.ragmir/config.json`, `golden-queries.json`, and `raw/` structure
49
+ into an ignored workspace. Record the smallest expected source set and exact coordinates only when
50
+ the source is stable. Never commit private documents, queries, or reports.
90
51
 
91
- Return to the [Ragmir Core README](../../README.md) or try the
92
- [confidential local RAG demo](../sovereign-rag-demo/README.md) for a broader CLI walkthrough.
52
+ A perfect score proves this fixture, not universal retrieval quality. Continue with the
53
+ [confidential local RAG demo](../sovereign-rag-demo/README.md) or
54
+ [Core README](../../README.md).
@@ -35,7 +35,7 @@
35
35
  "id": "pdf-embedded-text-page-citation",
36
36
  "query": "Synthetic confidential PDF",
37
37
  "expectedPaths": ["raw/contracts/pdf-control-evidence.pdf"],
38
- "expectedCitations": ["raw/contracts/pdf-control-evidence.pdf:p1:L1-L1#0"]
38
+ "expectedCitations": ["raw/contracts/pdf-control-evidence.pdf:p1#0"]
39
39
  }
40
40
  ]
41
41
  }
@@ -1,50 +1,24 @@
1
1
  # Library API demo
2
2
 
3
- A runnable smoke test for the public `@jcode.labs/ragmir` TypeScript API behind confidential local
4
- RAG workflows for coding agents and scripts.
5
-
6
- Use this example when you are changing Ragmir Core or evaluating it as a library rather than as a
7
- CLI. It imports the same package name an external consumer uses, runs the full retrieval loop, and
8
- prints cited results from a fictional local corpus. The default `local-hash` path keeps the corpus
9
- and generated index on the machine and performs retrieval offline.
10
-
11
- ## What it proves
12
-
13
- The demo opens one persistent client and exercises four public operations in order:
14
-
15
- 1. `ragmir.ingest({ rebuild: true })` parses, redacts, chunks, embeds, and stores the corpus.
16
- 2. `ragmir.search(query, { topK })` returns ranked source passages.
17
- 3. `ragmir.ask(query, { topK })` returns retrieval-only cited context without LLM synthesis.
18
- 4. `ragmir.status()` reports the active knowledge base and indexed coverage.
19
-
20
- Node's package self-reference resolves `@jcode.labs/ragmir` to this checkout's local
21
- `packages/ragmir-core/dist` build. It never falls back to the npm-published version, so the result
22
- reflects the code you are currently reviewing.
3
+ A runnable smoke test for the public `@jcode.labs/ragmir` TypeScript API. It opens one persistent
4
+ client, ingests a fictional local corpus, retrieves cited passages, returns retrieval-only context,
5
+ and reports status through the same package name an external consumer imports.
23
6
 
24
7
  ## Run it
25
8
 
26
- From the repository root:
27
-
28
9
  ```bash
29
10
  pnpm install --frozen-lockfile
30
11
  pnpm example
31
12
  ```
32
13
 
33
- The root command builds the published packages required by Core and runs [`run.mjs`](./run.mjs). The
34
- output is organized into `ingest`, `search`, `ask`, and `status` sections so a reviewer can see each
35
- public step succeed.
36
-
37
- To rerun only the script after an existing build:
14
+ The root command builds the packages and runs [`run.mjs`](./run.mjs). Package self-reference points
15
+ to this checkout's `packages/ragmir-core/dist`, never the npm release. To rerun after a build:
38
16
 
39
17
  ```bash
40
18
  node packages/ragmir-core/examples/library-api-demo/run.mjs
41
19
  ```
42
20
 
43
- `dist/` is ignored, so a clean clone must be built at least once.
44
-
45
- ## The public API pattern
46
-
47
- The essential integration is intentionally small:
21
+ ## Integration pattern
48
22
 
49
23
  ```js
50
24
  import { createRagmirClient } from "@jcode.labs/ragmir"
@@ -52,39 +26,25 @@ import { createRagmirClient } from "@jcode.labs/ragmir"
52
26
  const ragmir = await createRagmirClient({ cwd: projectRoot })
53
27
  try {
54
28
  await ragmir.ingest({ rebuild: true, timeoutMs: 30_000 })
55
-
56
29
  const results = await ragmir.search("offline retrieval approval", { topK: 3 })
57
-
58
30
  const context = await ragmir.ask("What evidence supports offline operation?", { topK: 3 })
59
-
60
31
  const status = await ragmir.status()
61
32
  } finally {
62
33
  await ragmir.close()
63
34
  }
64
35
  ```
65
36
 
66
- All project-relative state is resolved once from `cwd`. Reuse one client per project root in a
67
- long-running Node.js process and close it during shutdown. For one-shot scripts, the top-level
68
- `ingest`, `search`, `ask`, and `audit` functions remain available.
69
-
70
- ## Data used by the demo
37
+ The demo proves `ingest`, `search`, `ask`, and `status` in order. `ask` returns cited context without
38
+ LLM synthesis. Reuse one client per project root in a long-running process; one-shot top-level
39
+ functions remain available.
71
40
 
72
- The script reuses the sibling [confidential local RAG demo](../sovereign-rag-demo/README.md):
41
+ The script shares the sibling demo's synthetic Markdown, CSV, JSONL, YAML, and custom-text corpus.
42
+ It uses offline `local-hash`, writes only ignored `.ragmir/storage`, downloads no model, and contains
43
+ no private documents. Keep committed changes deterministic and use a separate ignored corpus for
44
+ private tests.
73
45
 
74
- - committed synthetic Markdown, CSV, JSONL, YAML, and custom text files;
75
- - an offline `local-hash` configuration;
76
- - gitignored `.ragmir/storage` output;
77
- - no private documents and no model download.
78
-
79
- Change the queries in `run.mjs` when testing a retrieval behavior, but keep the committed demo
80
- deterministic and public-safe. Use a separate ignored corpus for private evaluations.
81
-
82
- ## When to use another example
83
-
84
- | Need | Example |
46
+ | Need | Continue with |
85
47
  | --- | --- |
86
- | Learn the complete CLI workflow | [Confidential local RAG demo](../sovereign-rag-demo/README.md) |
87
- | Measure exact paths and citations | [Document evidence benchmark](../document-evidence-benchmark/README.md) |
88
- | Explore every exported function and option | [Complete TypeScript API reference](../../../../docs/api-reference.md) |
89
-
90
- Return to the [Ragmir Core README](../../README.md) for installation, MCP, OCR, and privacy guidance.
48
+ | Complete CLI workflow | [Confidential local RAG demo](../sovereign-rag-demo/README.md) |
49
+ | Exact path and citation gates | [Document evidence benchmark](../document-evidence-benchmark/README.md) |
50
+ | Every exported option | [TypeScript API reference](../../../../docs/api-reference.md) |
@@ -1,42 +1,29 @@
1
1
  # Confidential local RAG demo
2
2
 
3
- A complete, fictional workspace for learning how agents and scripts retrieve cited local project
4
- context with Ragmir.
5
-
6
- Use this example to ingest several file types, search with citations, inspect privacy posture, find
7
- an unsupported file, evaluate golden queries, and prepare agent access. It keeps the fictional
8
- corpus and generated index on the machine, runs with offline `local-hash` retrieval, and contains no
9
- customer or production data.
3
+ A complete fictional workspace for learning how agents and scripts retrieve cited project evidence
4
+ with Ragmir. It covers multiple formats, privacy checks, unsupported files, golden queries, and
5
+ agent access while keeping corpus and index local with offline `local-hash` retrieval.
10
6
 
11
7
  ## Scenario
12
8
 
13
- The corpus models an operations team reviewing whether an evidence workflow can stay local:
14
-
15
- | File | Role in the scenario |
9
+ | File | Role |
16
10
  | --- | --- |
17
11
  | `raw/operations-brief.md` | Approval, ownership, and operating requirements |
18
12
  | `raw/dataset-inventory.csv` | Accepted and rejected datasets |
19
13
  | `raw/incident-timeline.jsonl` | Time-ordered operational evidence |
20
14
  | `raw/security-policy.yaml` | Model-loading and security rules |
21
- | `raw/review-notes.evidence` | Custom text extension configured for this project |
22
- | `raw/facility-scan.heic` | Deliberately unsupported file used by the audit example |
15
+ | `raw/review-notes.evidence` | Project-configured text extension |
16
+ | `raw/facility-scan.heic` | Deliberately unsupported audit fixture |
23
17
 
24
- ## Run the full workflow
25
-
26
- From the repository root:
18
+ ## Run the workflow
27
19
 
28
20
  ```bash
29
21
  pnpm install --frozen-lockfile
30
22
  pnpm build
31
- ```
32
-
33
- Then enter this example and run the local CLI build:
34
-
35
- ```bash
36
23
  cd packages/ragmir-core/examples/sovereign-rag-demo
37
24
  node ../../dist/cli.js init
38
25
 
39
- # POSIX only: this example deliberately uses a custom tracked rawDir.
26
+ # POSIX only: Git and npm archives do not preserve this fixture's intended mode.
40
27
  chmod 700 raw
41
28
 
42
29
  node ../../dist/cli.js security-audit
@@ -49,101 +36,54 @@ node ../../dist/cli.js audit --unsupported
49
36
  node ../../dist/cli.js status
50
37
  ```
51
38
 
52
- `init` is idempotent. Git and npm archives cannot preserve the example's intended `0700` raw-folder
53
- mode, so the explicit `chmod` keeps the raw corpus owner-only on POSIX systems.
39
+ `init` is idempotent. The security audit intentionally warns that `.ragmir/` is not fully ignored
40
+ because this public fixture commits its configuration and source list. Generated storage, models,
41
+ reports, audio, logs, and salts remain ignored. Private projects should ignore the complete
42
+ `.ragmir/` directory.
54
43
 
55
- The security audit still reports that `.ragmir/` is not fully ignored. That warning is expected only
56
- for this public fixture because it deliberately commits `.ragmir/config.json` and
57
- `.ragmir/sources.txt`. Generated storage, models, reports, audio, logs, and salts remain ignored.
58
- Normal private projects should ignore the complete `.ragmir/` directory.
44
+ Expected results:
59
45
 
60
- ## What to look for
46
+ - search and ask identify source paths and chunks;
47
+ - `ask` returns evidence, not a generated answer;
48
+ - `research` combines bounded queries and source diagnostics;
49
+ - every golden query finds its expected source;
50
+ - the audit explains why HEIC was skipped and suggests local OCR;
51
+ - status confirms the active provider and local index.
61
52
 
62
- - Search and ask output identify the source path and chunk.
63
- - `ask` returns cited passages, not a generated answer from a hosted LLM.
64
- - `research` combines several retrieval queries and reports source diagnostics.
65
- - The audit surfaces the fixture-specific tracked-config warning described above.
66
- - The golden evaluation finds the expected sources for all four questions.
67
- - `audit --unsupported` explains why the HEIC fixture was skipped and recommends local OCR.
68
- - `status` confirms the active provider and local index state.
53
+ Useful queries include `dataset residency`, `incident containment evidence`,
54
+ `who owns the usage review`, and `what documents support sovereign deployment`.
69
55
 
70
- ## Useful queries
56
+ ## Connect an agent
71
57
 
72
- ```text
73
- offline retrieval approval
74
- dataset residency
75
- incident containment evidence
76
- who owns the usage review
77
- what documents support sovereign deployment
78
- ```
79
-
80
- Try a precise query first, then compare it with `research --compact` when the question spans several
81
- files.
82
-
83
- ## Give the demo to an agent
84
-
85
- In a real project, `rgr setup` generates an MCP helper under `.ragmir/`. After setup, an
86
- MCP-compatible agent can follow a prompt like:
58
+ In a real project, `rgr setup` writes an ignored MCP helper. A compatible agent can then follow:
87
59
 
88
60
  ```text
89
- Use Ragmir to inspect the local knowledge base, search for "offline retrieval approval", and write a
90
- cited Markdown report under .ragmir/reports/demo-sovereign-rag.md. Mention any unsupported or stale
91
- files reported by the audit.
61
+ Use Ragmir to search for "offline retrieval approval" and write a cited report under
62
+ .ragmir/reports/demo-sovereign-rag.md. Mention unsupported or stale files reported by the audit.
92
63
  ```
93
64
 
94
- The report path stays under ignored local state. Do not commit generated reports that may contain
95
- retrieved project evidence.
65
+ Keep retrieved reports under ignored local state.
96
66
 
97
67
  ## Compare semantic retrieval
98
68
 
99
- The committed configuration uses:
69
+ The committed configuration uses offline lexical/hash retrieval:
100
70
 
101
71
  ```json
102
- {
103
- "embeddingProvider": "local-hash"
104
- }
72
+ { "embeddingProvider": "local-hash" }
105
73
  ```
106
74
 
107
- This is offline lexical/hash retrieval, not model-semantic search. To run a deliberate semantic
108
- comparison, configure a Transformers.js model, preload it under `.ragmir/models`, and rebuild:
75
+ For a deliberate semantic comparison, prepare a Transformers.js model locally, set
76
+ `embeddingProvider`, `embeddingModel`, `embeddingModelRevision`, `embeddingModelPath`, and
77
+ `transformersAllowRemoteModels: false`, then rebuild and rerun evaluation. Keep remote loading off.
78
+ A lower semantic score is a tuning signal, never a reason to weaken a quality gate.
109
79
 
110
- ```json
111
- {
112
- "embeddingProvider": "transformers",
113
- "embeddingModel": "intfloat/multilingual-e5-small",
114
- "embeddingModelRevision": "main",
115
- "embeddingModelPath": ".ragmir/models",
116
- "transformersAllowRemoteModels": false
117
- }
118
- ```
119
-
120
- ```bash
121
- node ../../dist/cli.js ingest --rebuild
122
- node ../../dist/cli.js evaluate --golden golden-queries.json --json
123
- ```
124
-
125
- Keep remote model loading disabled for an offline comparison. A lower semantic score may indicate
126
- that queries or thresholds need tuning, not that a gate should be weakened.
127
-
128
- ## Generated state and cleanup
129
-
130
- All runtime state stays under the ignored directory:
131
-
132
- ```text
133
- .ragmir/
134
- ```
135
-
136
- Remove only the generated index when you want a clean rerun:
80
+ All generated state stays under `.ragmir/`. Reset only the index with:
137
81
 
138
82
  ```bash
139
83
  node ../../dist/cli.js destroy-index --yes
140
84
  ```
141
85
 
142
- Never replace the fictional fixtures in this package with real confidential documents. Use a
143
- separate ignored workspace for private dogfooding.
144
-
145
- ## Continue exploring
146
-
147
- - [Library API demo](../library-api-demo/README.md): call the public TypeScript API.
148
- - [Document evidence benchmark](../document-evidence-benchmark/README.md): require exact paths and citations.
149
- - [Ragmir Core README](../../README.md): installation, MCP, OCR, and privacy reference.
86
+ Never replace the fictional fixtures with confidential documents. Continue with the
87
+ [Library API demo](../library-api-demo/README.md),
88
+ [Document evidence benchmark](../document-evidence-benchmark/README.md), or
89
+ [Core README](../../README.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jcode.labs/ragmir",
3
- "version": "2.17.2",
3
+ "version": "2.18.1",
4
4
  "description": "Confidential local RAG for coding agents, with offline cited retrieval through CLI, MCP, and TypeScript.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -39,7 +39,7 @@
39
39
  "url": "https://github.com/jcode-works/jcode-ragmir/issues"
40
40
  },
41
41
  "engines": {
42
- "node": ">=20"
42
+ "node": ">=22"
43
43
  },
44
44
  "exports": {
45
45
  ".": {
@@ -48,9 +48,9 @@
48
48
  }
49
49
  },
50
50
  "bin": {
51
- "ragmir": "dist/cli.js",
52
- "kb": "dist/cli.js",
53
- "rgr": "dist/cli.js"
51
+ "ragmir": "dist/cli-entry.js",
52
+ "kb": "dist/cli-entry.js",
53
+ "rgr": "dist/cli-entry.js"
54
54
  },
55
55
  "files": [
56
56
  "dist",
@@ -72,13 +72,14 @@
72
72
  "mammoth": "^1.12.0",
73
73
  "picocolors": "^1.1.1",
74
74
  "read-excel-file": "^9.2.0",
75
+ "safe-regex2": "^5.1.1",
75
76
  "unpdf": "^1.4.0",
76
77
  "yaml": "^2.9.0",
77
78
  "zod": "^4.1.13"
78
79
  },
79
80
  "peerDependencies": {
80
- "@jcode.labs/ragmir-chat": "2.17.2",
81
- "@jcode.labs/ragmir-tts": "2.17.2"
81
+ "@jcode.labs/ragmir-chat": "2.18.1",
82
+ "@jcode.labs/ragmir-tts": "2.18.1"
82
83
  },
83
84
  "peerDependenciesMeta": {
84
85
  "@jcode.labs/ragmir-chat": {
@@ -91,18 +92,42 @@
91
92
  "devDependencies": {
92
93
  "@types/html-to-text": "^9.0.4",
93
94
  "@types/node": "^24.10.1",
95
+ "apache-arrow": "^18.1.0",
94
96
  "publint": "^0.3.21",
95
97
  "typescript": "^5.9.3",
96
98
  "vitest": "^4.0.15",
97
- "@jcode.labs/ragmir-chat": "2.17.2",
98
- "@jcode.labs/ragmir-tts": "2.17.2"
99
+ "@jcode.labs/ragmir-chat": "2.18.1",
100
+ "@jcode.labs/ragmir-tts": "2.18.1"
99
101
  },
100
102
  "scripts": {
103
+ "bench:compare": "node benchmarks/compare.mjs",
104
+ "bench:cli-startup": "pnpm build && node benchmarks/cli-startup.mjs",
105
+ "bench:concurrency": "pnpm build && node benchmarks/concurrency.mjs",
106
+ "bench:discovery": "pnpm build && node benchmarks/discovery.mjs",
107
+ "bench:ingest-memory": "pnpm build && node benchmarks/ingest-memory.mjs",
108
+ "bench:ingestion-metadata": "pnpm build && node benchmarks/ingestion-metadata.mjs",
109
+ "bench:local-hash-runtime": "pnpm build && node benchmarks/local-hash-runtime.mjs",
110
+ "bench:local-hash-experiment": "pnpm build && node benchmarks/local-hash-experiment.mjs",
111
+ "bench:reranker-experiment": "pnpm build && node benchmarks/reranker-experiment.mjs",
112
+ "bench:index-compression-experiment": "pnpm build && node benchmarks/index-compression-experiment.mjs",
113
+ "bench:content-dedup-experiment": "pnpm build && node benchmarks/content-dedup-experiment.mjs",
114
+ "bench:model-lifecycle": "pnpm build && node benchmarks/model-lifecycle.mjs",
115
+ "bench:observability": "pnpm build && node benchmarks/observability.mjs",
116
+ "bench:parsers": "pnpm build && node benchmarks/parsers.mjs",
117
+ "bench:runtime": "pnpm build && node benchmarks/runtime-reuse.mjs",
118
+ "bench:ocr": "pnpm build && node benchmarks/ocr-cache.mjs",
119
+ "bench:generations": "pnpm build && node benchmarks/generation-retention.mjs",
120
+ "bench:quality": "pnpm build && node benchmarks/quality.mjs",
121
+ "bench:scale": "pnpm build && node benchmarks/run.mjs --profile scale",
122
+ "bench:smoke": "pnpm build && node benchmarks/verify.mjs && node benchmarks/run.mjs --profile smoke",
123
+ "bench:storage": "pnpm build && node benchmarks/storage-maintenance.mjs",
124
+ "bench:status": "pnpm build && node benchmarks/status.mjs",
125
+ "bench:vector-index": "pnpm build && node benchmarks/vector-index.mjs",
101
126
  "build": "tsc -p tsconfig.json",
102
127
  "check": "pnpm --filter @jcode.labs/ragmir-tts build && pnpm --filter @jcode.labs/ragmir-chat build && tsc -p tsconfig.json --noEmit",
103
128
  "mcp:smoke": "pnpm build && node scripts/mcp-smoke.mjs",
104
129
  "package:check": "publint",
105
- "test": "pnpm --filter @jcode.labs/ragmir-tts build && pnpm --filter @jcode.labs/ragmir-chat build && vitest run",
106
- "test:coverage": "pnpm --filter @jcode.labs/ragmir-tts build && pnpm --filter @jcode.labs/ragmir-chat build && vitest run --coverage"
130
+ "test": "pnpm --filter @jcode.labs/ragmir-tts build && pnpm --filter @jcode.labs/ragmir-chat build && pnpm build && vitest run",
131
+ "test:coverage": "pnpm --filter @jcode.labs/ragmir-tts build && pnpm --filter @jcode.labs/ragmir-chat build && pnpm build && vitest run --coverage"
107
132
  }
108
133
  }