@autorag/librarian 2.10.0 → 2.10.2

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 (94) hide show
  1. package/LICENSE +195 -21
  2. package/NOTICE +16 -23
  3. package/README.md +399 -182
  4. package/dist/agent/agent.d.ts +163 -20
  5. package/dist/agent/context-token-guard.d.ts +23 -0
  6. package/dist/agent/evidence-ledger.d.ts +54 -5
  7. package/dist/agent/evidence-persistence.d.ts +24 -0
  8. package/dist/agent/jev-extension.d.ts +7 -4
  9. package/dist/agent/jikji-find-tool.d.ts +1 -0
  10. package/dist/agent/pi-session.d.ts +35 -2
  11. package/dist/agent/request-limits.d.ts +20 -0
  12. package/dist/agent/search-all-tool.d.ts +1 -0
  13. package/dist/agent/search-documents.d.ts +1 -1
  14. package/dist/agent/search-single-datasource-tool.d.ts +1 -0
  15. package/dist/agent/system-prompt.d.ts +0 -2
  16. package/dist/agent/tool-burst-guard.d.ts +26 -0
  17. package/dist/cli/config.d.ts +39 -23
  18. package/dist/cli/index.js +4195 -1478
  19. package/dist/cloud/config.d.ts +33 -9
  20. package/dist/cloud/credential.d.ts +17 -0
  21. package/dist/cloud/errors.d.ts +6 -6
  22. package/dist/cloud/index.d.ts +5 -4
  23. package/dist/cloud/jev-backend.d.ts +92 -0
  24. package/dist/cloud/models.d.ts +4 -4
  25. package/dist/cloud/oauth-login.d.ts +3 -3
  26. package/dist/cloud/provider.d.ts +16 -11
  27. package/dist/cloud/token.d.ts +2 -2
  28. package/dist/core.d.ts +2 -1
  29. package/dist/core.js +4200 -1506
  30. package/dist/datasource/aliased-skill.d.ts +2 -2
  31. package/dist/datasource/connector-skill.d.ts +2 -2
  32. package/dist/datasource/crawler-skill.d.ts +19 -2
  33. package/dist/datasource/described-skill.d.ts +2 -2
  34. package/dist/datasource/index.d.ts +1 -1
  35. package/dist/datasource/retry.d.ts +49 -0
  36. package/dist/datasource/sidecar/config.d.ts +26 -0
  37. package/dist/datasource/sidecar/descriptors.d.ts +67 -0
  38. package/dist/datasource/sidecar/fusion.d.ts +25 -0
  39. package/dist/datasource/sidecar/index.d.ts +131 -0
  40. package/dist/datasource/sidecar/methods.d.ts +27 -0
  41. package/dist/datasource/skills/clawgallery/skill.d.ts +4 -4
  42. package/dist/datasource/skills/discrawl/skill.d.ts +5 -5
  43. package/dist/datasource/skills/github-gist/skill.d.ts +2 -2
  44. package/dist/datasource/skills/lazykatok/skill.d.ts +5 -5
  45. package/dist/datasource/skills/mailcrawl/skill.d.ts +2 -2
  46. package/dist/datasource/skills/obsidian/skill.d.ts +5 -5
  47. package/dist/datasource/types.d.ts +16 -2
  48. package/dist/embedding-runtime/cache.d.ts +9 -0
  49. package/dist/embedding-runtime/index.d.ts +6 -6
  50. package/dist/embedding-runtime/manifest.d.ts +0 -12
  51. package/dist/embedding-runtime/types.d.ts +1 -1
  52. package/dist/index.d.ts +1 -2
  53. package/dist/index.js +4454 -1757
  54. package/dist/jikji/client.d.ts +13 -2
  55. package/dist/jikji/index.d.ts +1 -1
  56. package/dist/jikji/path-map.d.ts +9 -0
  57. package/dist/jikji/prepare-budget.d.ts +18 -0
  58. package/dist/jikji/serial-queue.d.ts +17 -0
  59. package/dist/jikji/types.d.ts +17 -0
  60. package/dist/mcp/index.js +4442 -1748
  61. package/dist/minsync/client.d.ts +6 -4
  62. package/dist/minsync/installer.d.ts +1 -1
  63. package/dist/minsync/method.d.ts +1 -1
  64. package/dist/minsync/process.d.ts +1 -0
  65. package/dist/minsync/types.d.ts +2 -2
  66. package/dist/mirror/atomic-write.d.ts +6 -0
  67. package/dist/mirror/index-store.d.ts +8 -1
  68. package/dist/mirror/index.d.ts +2 -2
  69. package/dist/mirror/sync.d.ts +57 -1
  70. package/dist/p2p/simplex-server.d.ts +0 -1
  71. package/dist/parser/defaults.d.ts +14 -4
  72. package/dist/parser/errors.d.ts +10 -0
  73. package/dist/parser/isolated.d.ts +77 -0
  74. package/dist/parser/kordoc.d.ts +1 -0
  75. package/dist/parser/ocr-engines.d.ts +6 -0
  76. package/dist/parser/parse-worker.d.ts +1 -0
  77. package/dist/parser/parse-worker.js +780 -0
  78. package/dist/parser/types.d.ts +5 -0
  79. package/dist/process/abort-reason.d.ts +2 -0
  80. package/dist/retrieval/index.d.ts +1 -1
  81. package/dist/retrieval/rerank.d.ts +28 -5
  82. package/licenses/embedding-assets.json +0 -35
  83. package/package.json +26 -29
  84. package/skills/autorag/SKILL.md +3 -2
  85. package/skills/autorag-doctor/SKILL.md +7 -1
  86. package/skills/autorag-lite-setup/SKILL.md +3 -3
  87. package/skills/autorag-setup/SKILL.md +43 -18
  88. package/dist/manifest/index.d.ts +0 -2
  89. package/dist/manifest/loader.d.ts +0 -3
  90. package/dist/manifest/types.d.ts +0 -8
  91. package/licenses/gemma-notice.txt +0 -24
  92. package/licenses/gemma-section-3.2-flow-down.txt +0 -9
  93. package/licenses/gemma-terms-of-use.html +0 -4750
  94. package/licenses/gemma-terms-of-use.txt +0 -158
@@ -17,5 +17,10 @@ export interface ParseDiagnostic {
17
17
  export declare abstract class Parser {
18
18
  abstract readonly name: string;
19
19
  abstract readonly extensions: readonly string[];
20
+ /**
21
+ * Stamp recorded next to a per-file skip. Refresh retries a source a parser failed on exactly
22
+ * once when this changes, so bump it whenever parse behavior changes (including the engine behind it).
23
+ */
24
+ readonly version: string;
20
25
  abstract parse(input: ParseInput): Promise<ParseOutput>;
21
26
  }
@@ -0,0 +1,2 @@
1
+ /** The rejection for work its caller aborted: the signal's reason when it is an error, else an `AbortError`. */
2
+ export declare function abortReason(signal: AbortSignal): Error;
@@ -3,7 +3,7 @@ export { RetrievalEngine, type RetrievalEngineOptions } from "./engine.js";
3
3
  export type { MergeOptions } from "./merger.js";
4
4
  export { ParallelRetriever, ResultMerger } from "./merger.js";
5
5
  export { RetrievalMethodRegistry } from "./registry.js";
6
- export { type CreateRerankerOptions, createReranker, DEFAULT_RERANK_API_KEY_ENV, DEFAULT_RERANK_MODEL, DEFAULT_RERANK_PROVIDER, DEFAULT_RERANK_TOP_N, OpenRouterReranker, type OpenRouterRerankerOptions, type Reranker, type RerankerDescriptor, type RerankOptions, SUPPORTED_RERANK_PROVIDERS, } from "./rerank.js";
6
+ export { type CreateRerankerOptions, createReranker, DEFAULT_DAZZI_RERANK_MODEL, DEFAULT_RERANK_API_KEY_ENV, DEFAULT_RERANK_MODEL, DEFAULT_RERANK_PROVIDER, DEFAULT_RERANK_TOP_N, defaultRerankApiKeyEnv, defaultRerankModel, OpenRouterReranker, type OpenRouterRerankerOptions, type Reranker, type RerankerDescriptor, type RerankOptions, SUPPORTED_RERANK_PROVIDERS, } from "./rerank.js";
7
7
  export { matchesVirtualPathScope, normalizeVirtualPath, normalizeVirtualPathScope, virtualPathScopeToRegExp, } from "./scope.js";
8
8
  export { type DatasourceCatalogEntry, derivedDatasourceIds, type RetrievalSelection, RetrievalSelectionError, type RetrievalSelectionErrorCode, resolveSelectedMethods, } from "./selection.js";
9
9
  export { describeRetrievalError, groupUnsearchedSurfaces, MINSYNC_SURFACE, type RetrievalSkip, retrievalSurfaceFor, } from "./skip.js";
@@ -18,10 +18,23 @@ export declare const DEFAULT_RERANK_MODEL = "voyageai/rerank-3-lite";
18
18
  export declare const DEFAULT_RERANK_PROVIDER = "openrouter";
19
19
  /** Default environment variable holding the OpenRouter API key. */
20
20
  export declare const DEFAULT_RERANK_API_KEY_ENV = "OPENROUTER_API_KEY";
21
+ /**
22
+ * Default rerank model for the hosted Dazzi Models provider — the id the
23
+ * server lists under `GET <root>/v1/models?operation=rerank`. Rerankers are not
24
+ * chat LLMs, so the project's 2026+ model rule does not cover them.
25
+ */
26
+ export declare const DEFAULT_DAZZI_RERANK_MODEL = "qwen/qwen3-reranker-8b";
21
27
  /** Default number of merged chunks kept after reranking. */
22
28
  export declare const DEFAULT_RERANK_TOP_N = 25;
23
29
  /** Rerank providers {@link createReranker} can build. */
24
30
  export declare const SUPPORTED_RERANK_PROVIDERS: readonly string[];
31
+ /** Default wire model for a rerank provider. */
32
+ export declare function defaultRerankModel(provider: string): string;
33
+ /**
34
+ * Default API-key environment variable for a rerank provider, or `undefined`
35
+ * for Dazzi Models, which authenticates with the stored `/login` credential.
36
+ */
37
+ export declare function defaultRerankApiKeyEnv(provider: string): string | undefined;
25
38
  /** Static description of a reranker, used for diagnostics and inspection. */
26
39
  export interface RerankerDescriptor {
27
40
  /** Stable label (e.g. `openrouter`). */
@@ -76,12 +89,19 @@ export interface RerankResponse {
76
89
  }
77
90
  /** Options for {@link OpenRouterReranker}. */
78
91
  export interface OpenRouterRerankerOptions {
92
+ /** Provider id reported by `describe()` and stamped on metadata. @default DEFAULT_RERANK_PROVIDER */
93
+ readonly provider?: string;
79
94
  /** Wire model id. @default DEFAULT_RERANK_MODEL */
80
95
  readonly model?: string;
81
- /** API key. When omitted, read from `apiKeyEnv` in the environment. */
96
+ /**
97
+ * API key. When omitted, `openrouter` reads `apiKeyEnv` from the environment
98
+ * and `dazzi` uses the stored `/login` credential.
99
+ */
82
100
  readonly apiKey?: string;
83
- /** Environment variable holding the API key. @default DEFAULT_RERANK_API_KEY_ENV */
101
+ /** Environment variable holding the API key (`openrouter` only). @default DEFAULT_RERANK_API_KEY_ENV */
84
102
  readonly apiKeyEnv?: string;
103
+ /** Pi agent home whose `auth.json` holds the Dazzi `/login` credential (`dazzi` only). Default: Pi's agent dir. */
104
+ readonly agentDir?: string;
85
105
  /** Override the OpenRouter base URL (e.g. a self-hosted or gateway endpoint). */
86
106
  readonly baseUrl?: string;
87
107
  /** Per-request timeout in milliseconds. */
@@ -103,10 +123,13 @@ export interface CreateRerankerOptions extends OpenRouterRerankerOptions {
103
123
  */
104
124
  export declare function createReranker(config: CreateRerankerOptions | false | undefined): Reranker | undefined;
105
125
  /**
106
- * Reranker backed by OpenRouter's rerank router.
126
+ * Reranker backed by an OpenRouter-compatible rerank router.
107
127
  *
108
- * Documents are sent as their `content`; the original `RetrievalResult` for each
109
- * returned index is preserved and re-scored with the provider's relevance score.
128
+ * OpenRouter is the default provider; the hosted Dazzi Models plan serves the
129
+ * same wire shape at `<root>/v1/rerank`, so {@link createReranker} reuses this
130
+ * client with that base URL and the stored login token. Documents are sent as their `content`;
131
+ * the original `RetrievalResult` for each returned index is preserved and
132
+ * re-scored with the provider's relevance score.
110
133
  */
111
134
  export declare class OpenRouterReranker implements Reranker {
112
135
  private readonly model;
@@ -21,26 +21,6 @@
21
21
  "unsuitableUse": "Chat or generation, remote embedding of corpus text, shipping weights in the npm package, any GGUF other than the pinned SHA-256.",
22
22
  "upstreamCardUrl": "https://huggingface.co/Qwen/Qwen3-Embedding-0.6B",
23
23
  "modelCard": "docs/model-cards/qwen3-embedding-0.6b.md"
24
- },
25
- {
26
- "profileId": "embeddinggemma-300m",
27
- "provider": "google",
28
- "model": "embeddinggemma-300M-Q8_0.gguf",
29
- "dimension": 768,
30
- "queryPrefix": "task: search result | query: ",
31
- "passagePrefix": "title: none | text: ",
32
- "runtimeBuild": "b10951",
33
- "modelRevision": "0f741b5a6585bd53aeb15cd1372c56f2a0f65e12",
34
- "artifactSha256": "b5ce9d77a3fc4b3b39ccb5643c36777911cc4eb46a66962eadfa3f5f60490d63",
35
- "backend": "auto",
36
- "modelAssetId": "embeddinggemma-300m",
37
- "licenseId": "Gemma Terms of Use",
38
- "noticeFile": "licenses/gemma-notice.txt",
39
- "noticeReference": "Google EmbeddingGemma model card and Gemma Terms of Use",
40
- "intendedUse": "Local loopback embedding for AutoRAG MinSync and native-datasource semantic retrieval. Not a generative model.",
41
- "unsuitableUse": "Chat or generation, remote embedding of corpus text, shipping weights in the npm package, any GGUF other than the pinned SHA-256, uses restricted by the Gemma Prohibited Use Policy.",
42
- "upstreamCardUrl": "https://ai.google.dev/gemma/docs/embeddinggemma/model_card",
43
- "modelCard": "docs/model-cards/embeddinggemma-300m.md"
44
24
  }
45
25
  ],
46
26
  "assets": [
@@ -59,21 +39,6 @@
59
39
  "upstreamCardUrl": "https://huggingface.co/Qwen/Qwen3-Embedding-0.6B",
60
40
  "modelCard": "docs/model-cards/qwen3-embedding-0.6b.md"
61
41
  },
62
- {
63
- "kind": "model",
64
- "id": "embeddinggemma-300m",
65
- "filename": "embeddinggemma-300M-Q8_0.gguf",
66
- "url": "https://huggingface.co/ggml-org/embeddinggemma-300M-GGUF/resolve/0f741b5a6585bd53aeb15cd1372c56f2a0f65e12/embeddinggemma-300M-Q8_0.gguf",
67
- "revision": "0f741b5a6585bd53aeb15cd1372c56f2a0f65e12",
68
- "sha256": "b5ce9d77a3fc4b3b39ccb5643c36777911cc4eb46a66962eadfa3f5f60490d63",
69
- "licenseId": "Gemma Terms of Use",
70
- "noticeFile": "licenses/gemma-notice.txt",
71
- "noticeReference": "Google EmbeddingGemma model card and Gemma Terms of Use",
72
- "intendedUse": "Local loopback embedding for AutoRAG MinSync and native-datasource semantic retrieval. Not a generative model.",
73
- "unsuitableUse": "Chat or generation, remote embedding of corpus text, shipping weights in the npm package, any GGUF other than the pinned SHA-256, uses restricted by the Gemma Prohibited Use Policy.",
74
- "upstreamCardUrl": "https://ai.google.dev/gemma/docs/embeddinggemma/model_card",
75
- "modelCard": "docs/model-cards/embeddinggemma-300m.md"
76
- },
77
42
  {
78
43
  "kind": "runtime",
79
44
  "id": "llama-macos-arm64",
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@autorag/librarian",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Self-evolving librarian agent on Pi framework with pluggable retrieval methods",
5
- "license": "MIT",
5
+ "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/Marker-Inc-Korea/AutoRAG.git"
@@ -36,7 +36,7 @@
36
36
  "access": "public"
37
37
  },
38
38
  "scripts": {
39
- "build": "bun build src/index.ts src/core.ts src/cli/index.ts src/mcp/index.ts --outdir dist --target node --packages external && tsc -p tsconfig.build.json && node scripts/fixup-dts.mjs",
39
+ "build": "bun build src/index.ts src/core.ts src/cli/index.ts src/mcp/index.ts src/parser/parse-worker.ts --outdir dist --target node --packages external && tsc -p tsconfig.build.json && node scripts/fixup-dts.mjs",
40
40
  "prepublishOnly": "bun run typecheck && bun run build",
41
41
  "prepare": "bun run build",
42
42
  "test": "node scripts/run-test-files.mjs",
@@ -51,38 +51,35 @@
51
51
  "node": ">=24.0.0"
52
52
  },
53
53
  "dependencies": {
54
- "@earendil-works/pi-agent-core": "^1.1.0",
55
- "@earendil-works/pi-ai": "^1.1.0",
56
- "@earendil-works/pi-coding-agent": "1.1.0",
57
- "@earendil-works/pi-tui": "1.1.0",
58
- "@modelcontextprotocol/server": "^2.3.0",
59
- "@openrouter/sdk": "^1.4.21",
54
+ "@earendil-works/pi-agent-core": "^1.2.0",
55
+ "@earendil-works/pi-ai": "^1.2.0",
56
+ "@earendil-works/pi-coding-agent": "1.2.0",
57
+ "@earendil-works/pi-tui": "1.2.0",
58
+ "@modelcontextprotocol/server": "^2.3.1",
59
+ "@openrouter/sdk": "^1.4.25",
60
60
  "chardet": "^2.2.0",
61
- "fast-xml-parser": "^5.11.1",
61
+ "fast-xml-parser": "^5.11.2",
62
62
  "iconv-lite": "^0.7.3",
63
63
  "jev-use": "^0.8.0",
64
- "jszip": "^3.10.1",
65
- "kordoc": "^4.15.7",
66
- "mailparser": "^3.9.20",
67
- "pdfjs-dist": "^6.3.289",
68
- "puppeteer-core": "^25.11.0",
69
- "slides-grab": "^1.5.1",
70
- "smol-toml": "1.8.0",
64
+ "jszip": "^3.10.2",
65
+ "kordoc": "^4.21.30",
66
+ "mailparser": "^3.9.38",
67
+ "pdfjs-dist": "^6.4.299",
68
+ "puppeteer-core": "^25.13.0",
69
+ "slides-grab": "^1.5.2",
70
+ "smol-toml": "1.9.1",
71
71
  "tesseract.js": "^7.0.0",
72
- "typebox": "^1.3.25",
73
- "yaml": "^2.9.0"
72
+ "typebox": "^1.3.37"
74
73
  },
75
74
  "devDependencies": {
76
- "@biomejs/biome": "2.5.14",
77
- "@modelcontextprotocol/client": "^2.3.0",
78
- "@types/mailparser": "^3.4.6",
79
- "@types/node": "^26.4.1",
80
- "@types/ws": "^8.18.1",
75
+ "@biomejs/biome": "2.5.15",
76
+ "@modelcontextprotocol/client": "^2.3.1",
77
+ "@types/mailparser": "^3.9.0",
78
+ "@types/node": "^26.6.5",
79
+ "@types/ws": "^8.18.2",
81
80
  "typescript": "^7.0.2",
82
- "vitest": "^5.0.0",
83
- "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
84
- },
85
- "overrides": {
86
- "zod": "3.25.76"
81
+ "vitest": "^5.0.4",
82
+ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
83
+ "yaml": "^2.9.1"
87
84
  }
88
85
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: autorag
3
3
  description: Search, summarize, compare, and answer questions from an already configured AutoRAG librarian over local documents and configured datasources. Use when the user asks AutoRAG to search PDFs, wikis, notes, or a knowledge base. Use autorag-setup for install, model, roots, indexing, or datasource changes.
4
- license: MIT
4
+ license: Apache-2.0
5
5
  ---
6
6
 
7
7
  # AutoRAG Librarian Skill
@@ -16,7 +16,8 @@ sources, judges evidence, and curates the final answer. There is no subagent or
16
16
  separate model role.
17
17
 
18
18
  AutoRAG reads source documents and writes indexes only under the configured
19
- workspace `.autorag/` directory and Jikji's per-source `.jikji/` caches. Never
19
+ workspace `.autorag/` directory and Jikji's central store (`<OS data dir>/jikji/`,
20
+ plus a `.jikji_agent_map.md` guide in each indexed root). Never
20
21
  move, rename, edit, or delete source files.
21
22
 
22
23
  ## Preflight
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: autorag-doctor
3
3
  description: Diagnose and repair a broken or half-working AutoRAG install so every configured source is both indexed and searchable. Checks AutoRAG, MinSync, Jikji, the embedding gateway, and every CLI-backed datasource (lazykatok, discrawl, slacrawl, wacrawl, telecrawl, notcrawl, qmd, mailcrawl, rclone, Spotlight), then fixes orphan locks, orphan processes, embedding dimension or identity mismatches, stale indexes, and missing setup. Use when search returns nothing or too little, refresh hangs or fails, a datasource disappeared from results, indexes look stale, the gateway will not start, or the user asks to check, diagnose, verify, or repair AutoRAG.
4
- license: MIT
4
+ license: Apache-2.0
5
5
  ---
6
6
 
7
7
  # AutoRAG doctor
@@ -192,6 +192,11 @@ Use `--force` only when incremental refresh does not clear it. For continuous
192
192
  freshness install an hourly `autorag watch --once` job (cron, launchd, systemd
193
193
  timer, or Task Scheduler).
194
194
 
195
+ A file the parser failed on (corrupt PDF, encrypted HWP) or that was unreadable is not
196
+ re-parsed on every refresh: it is skipped until its mtime, size or parser version changes.
197
+ After fixing the cause (permissions, OCR setup), run `autorag refresh --retry-failed --json`
198
+ to retry those files once without re-indexing healthy ones.
199
+
195
200
  ### Missing or wrong setup
196
201
 
197
202
  - `unknown-datasource-skill`: the config key is not a builtin template and has
@@ -216,6 +221,7 @@ timer, or Task Scheduler).
216
221
  | `stale-index` | Sources changed since last refresh | `autorag refresh --method parsed,minsync` |
217
222
  | `index-not-ready` | Index missing or never built | `autorag refresh --json` |
218
223
  | `minsync-sync-failed` | MinSync indexing failed; the message carries MinSync's own reason | Fix the reported cause, then `autorag refresh --method minsync` |
224
+ | `minsync-lock-held` | Another `minsync` run holds `.minsync/lock`, often an orphan left by a killed host; retryable | Wait for it to finish or stop that `minsync` process, then `autorag refresh --method minsync` |
219
225
  | `jikji-unavailable` | Jikji binary missing or install failed | Check cargo, retry refresh |
220
226
  | `everything-index-failed` | Windows Everything instance could not start or index; message carries ES exit code and stderr | Fix the reported cause, `autorag refresh --method everything --json` |
221
227
  | `embedding-identity-mismatch` | Indexed vectors use a different embedder | `autorag index rebuild --method minsync` |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: autorag-lite-setup
3
3
  description: Install and register the model-free AutoRAG Lite MCP server, configure approved roots and datasources, build indexes, and verify MCP discovery and search. Use when autorag-mcp is missing, MCP connection fails, indexes are stale, or the user wants document search without configuring a search model.
4
- license: MIT
4
+ license: Apache-2.0
5
5
  ---
6
6
 
7
7
  # AutoRAG Lite setup
@@ -19,7 +19,7 @@ Use `autorag-setup` instead when the model-backed librarian must be configured.
19
19
  environment-variable names such as `tokenEnv` or `apiKeyEnv`.
20
20
  - Never move, rename, edit, or delete source documents. Lite commands write
21
21
  indexes only under the configured workspace `.autorag/` directory and
22
- Jikji's per-source `.jikji/` caches.
22
+ Jikji's central store (`<OS data dir>/jikji/`).
23
23
  - Do not index system trees, app bundles, caches, credential stores,
24
24
  `node_modules`, `.git`, `dist`, `build`, `target`, `.cache`, `.autorag`, or
25
25
  `.jikji`.
@@ -169,7 +169,7 @@ AUTORAG_CONFIG=/absolute/path/to/.autorag/config.json autorag lite refresh --jso
169
169
  are missing or broken, run a full refresh or return to setup rather than
170
170
  silently degrading to lexical-only search.
171
171
  - MinSync's default embedder is in-process native Qwen3 embeddings
172
- (`native:Qwen/Qwen3-Embedding-0.6B`, 1024 dimensions, MinSync 0.4.6): no
172
+ (`native:Qwen/Qwen3-Embedding-0.6B`, 1024 dimensions, MinSync 0.4.7): no
173
173
  embedder flags, no API key, and no external daemon (such as Ollama) are
174
174
  needed, and no corpus text leaves the machine. For gateway-profiled
175
175
  embeddings, prefetch with `autorag models prefetch --profile qwen3-embedding-0.6b`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: autorag-setup
3
3
  description: Install and configure AutoRAG, register its Lite MCP server for external agents, or repair its single search model, approved roots, indexes, datasources, and health checks without exposing credentials. Use when AutoRAG or MCP is missing, init/refresh/health fails, indexes are stale, or the user wants to add folders or datasources.
4
- license: MIT
4
+ license: Apache-2.0
5
5
  ---
6
6
 
7
7
  # AutoRAG setup
@@ -164,15 +164,21 @@ GitHub release into `<workspace>/.autorag/bin` (`minSync.autoInstall` defaults
164
164
  to true), and Jikji installs `jikji-cli` through cargo (`jikji.autoInstall`
165
165
  defaults to true; requires the Rust toolchain). Set `"autoInstall": false` only
166
166
  when managing the binary yourself. Refresh is incremental: MinSync syncs only
167
- changed parsed mirrors, and `jikji prepare` reuses unchanged documents. Roots
168
- prepare in parallel.
169
-
170
- Jikji stores its prepared corpus metadata in a hidden `.jikji` directory
171
- inside each indexed source root — that is Jikji's native index layout and
172
- intended behavior, not a misplaced artifact. Tell the user before the first
173
- `refresh` that `<root>/.jikji` will be created inside every approved document
174
- root (one per root, alongside the documents), and never delete or edit its
175
- contents; removing it only forces a full Jikji re-prepare on the next refresh.
167
+ changed parsed mirrors, and `jikji prepare` reuses unchanged documents. Jikji
168
+ roots prepare one at a time (they share one central SQLite file that rejects
169
+ concurrent writers). A search root nested inside, or duplicating, another root
170
+ is skipped for Jikji because the outer root's index already covers it.
171
+
172
+ Jikji keeps its prepared corpus (search index, parsed text, wiki, routes) in one
173
+ central store, not inside your documents: `<OS data dir>/jikji/index.sqlite`
174
+ plus `<OS data dir>/jikji/roots/<id>/` (macOS `~/Library/Application Support`,
175
+ Linux `$XDG_DATA_HOME` or `~/.local/share`, Windows `%LOCALAPPDATA%`; override
176
+ with the `JIKJI_DATA_DIR` environment variable). The only file `refresh` adds
177
+ inside an approved document root is the `.jikji_agent_map.md` guide. Tell the
178
+ user that before the first `refresh`, and never delete or edit Jikji's central
179
+ store by hand; removing it only forces a full Jikji re-prepare on the next
180
+ refresh. Older Jikji versions wrote a `<root>/.jikji` directory instead; such a
181
+ leftover is now unused and safe for the user to delete.
176
182
 
177
183
  Exact duplicate exclusion is enabled by default. AutoRAG invokes the external
178
184
  `dupey` CLI before parsed-mirror indexing, keeps the newest filesystem copy for
@@ -184,7 +190,7 @@ told duplicate exclusion is off. Set `"excludeExactDuplicates": false` to
184
190
  index every copy.
185
191
 
186
192
  MinSync's default embedder is in-process native Qwen3 embeddings
187
- (`native:Qwen/Qwen3-Embedding-0.6B`, 1024 dimensions, MinSync 0.4.6). The
193
+ (`native:Qwen/Qwen3-Embedding-0.6B`, 1024 dimensions, MinSync 0.4.7). The
188
194
  default needs no embedder flags, no API key, and no external daemon (such as
189
195
  Ollama) — all embeddings run in-process locally and privately. For workspaces
190
196
  using the loopback llama-server gateway, prefetch the verified model with
@@ -216,8 +222,9 @@ size must be positive integers, and the dimension must match the embedder
216
222
  Leave both enabled. They are the recommended setup: they make simple questions
217
223
  fast and multi-part questions thorough.
218
224
 
219
- - **Jev** (`jev`, default `{ "backend": "openrouter" }`, model
220
- `typesafe/jev-1.13`) runs before the fast answer. It routes each question to
225
+ - **Jev** (`jev`, default `{ "backend": "dazzi" }` when signed in to Dazzi
226
+ Models, else `{ "backend": "openrouter" }`; model `jev-1.13` on Dazzi,
227
+ `typesafe/jev-1.13` on OpenRouter) runs before the fast answer. It routes each question to
221
228
  local search, web search, a direct answer (general knowledge or small
222
229
  talk skips retrieval entirely), or the `config` branch, and decides whether
223
230
  to decompose it. On
@@ -232,14 +239,16 @@ fast and multi-part questions thorough.
232
239
  decides whether verification is needed, so a complete, evidence-backed fast
233
240
  answer ends the run.
234
241
  - **Question decomposition** (`queryDecomposition`, default model
242
+ `dazzi/openai/gpt-6-luna` when signed in to Dazzi Models, else
235
243
  `openrouter/qwen/qwen3.7-flash`) splits a multi-part question into at most
236
244
  five search queries that run in parallel.
237
245
 
238
- Both use the user's `OPENROUTER_API_KEY`; confirm it is set (`test -n
239
- "$OPENROUTER_API_KEY"`, never print it) and tell the user Jev routing is on.
240
- Without the key, routing falls back to a single local search and the run
241
- always verifies, so searches still work. A `query-route-fallback` diagnostic
242
- (`autorag search --debug`) shows that state.
246
+ Both need a credential for the chosen backend: a Dazzi Models `/login` (check with
247
+ `autorag models list --provider dazzi --available`), or the user's
248
+ `OPENROUTER_API_KEY` (`test -n "$OPENROUTER_API_KEY"`, never print it). Tell the
249
+ user Jev routing is on. Without a credential, routing falls back to a single
250
+ local search and the run always verifies, so searches still work. A
251
+ `query-route-fallback` diagnostic (`autorag search --debug`) shows that state.
243
252
 
244
253
  ```json
245
254
  {
@@ -309,6 +318,22 @@ and are never settable from model/tool arguments: `maxDocuments`,
309
318
  `bandwidthLimit`, and `dryRun` (cloud-drive/rclone). `maxContentChars` defaults
310
319
  to 20000 for RSS and 100000 for Spotlight and cloud-drive.
311
320
 
321
+ ### Refresh safety limits
322
+
323
+ `refresh` guards the parsed-mirror refresh against deleting a corpus because a
324
+ search root became unavailable. Every field is optional; unknown keys fail
325
+ config resolution.
326
+
327
+ | Field | Default | Controls |
328
+ |---|---|---|
329
+ | `maxDeleteRatio` | 0.3 | Largest share (0–1) of indexed documents one refresh may delete; a bigger deletion above 100 documents is suppressed (`mass-delete-suppressed`) unless the refresh is forced |
330
+ | `maxScannedEntries` | 2000000 | Directory entries examined per search root before `walk-truncated` |
331
+ | `maxDepth` | 64 | Deepest directory level walked below a root before `walk-truncated` |
332
+
333
+ A root that is missing, unlistable, or empty while it previously held documents
334
+ keeps its mirrors and reports `search-root-unavailable`; see
335
+ `docs/minsync-setup.md`.
336
+
312
337
  ## Probe and configure datasource skills (setup wizard)
313
338
 
314
339
  Use `autorag setup` to probe the local runtime, model profile, and known
@@ -1,2 +0,0 @@
1
- export { loadManifest, loadManifests } from "./loader.js";
2
- export type { StoreManifest } from "./types.js";
@@ -1,3 +0,0 @@
1
- import type { StoreManifest } from "./types.js";
2
- export declare function loadManifest(filePath: string): StoreManifest;
3
- export declare function loadManifests(dirPath: string): StoreManifest[];
@@ -1,8 +0,0 @@
1
- export interface StoreManifest {
2
- name: string;
3
- description: string;
4
- type: "vector" | "bm25" | "hybrid" | "visual";
5
- dataDescription: string;
6
- contentTypes: string[];
7
- config: Record<string, unknown>;
8
- }
@@ -1,24 +0,0 @@
1
- EmbeddingGemma profile notice
2
-
3
- Gemma is provided under and subject to the Gemma Terms of Use found at ai.google.dev/gemma/terms
4
-
5
- Section 3.1 distribution flow-down (verbatim)
6
-
7
- You must include the use restrictions referenced in Section 3.2 as an enforceable provision in any agreement (e.g., license agreement, terms of use, etc.) governing the use and/or distribution of Gemma or Model Derivatives and you must provide notice to subsequent users you Distribute to that Gemma or Model Derivatives are subject to the use restrictions in Section 3.2.
8
-
9
- You must provide all third party recipients of Gemma or Model Derivatives a copy of this Agreement.
10
-
11
- All Distributions (other than through a Hosted Service) must be accompanied by a "Notice" text file that contains the following notice:
12
- "Gemma is provided under and subject to the Gemma Terms of Use found at ai.google.dev/gemma/terms".
13
-
14
- Section 3.2 Use Restrictions (verbatim)
15
-
16
- You must not use any of the Gemma Services:
17
-
18
- for the restricted uses set forth in the Gemma Prohibited Use Policy at ai.google.dev/gemma/prohibited_use_policy ("Prohibited Use Policy"), which is hereby incorporated by reference into this Agreement; or
19
-
20
- in violation of applicable laws and regulations.
21
-
22
- To the maximum extent permitted by law, Google reserves the right to restrict (remotely or otherwise) usage of any of the Gemma Services that Google reasonably believes are in violation of this Agreement.
23
-
24
- The complete Gemma Terms of Use supplied with this notice are in gemma-terms-of-use.html (the fetched source page) and gemma-terms-of-use.txt (a readable text rendering). The source page is https://ai.google.dev/gemma/terms.
@@ -1,9 +0,0 @@
1
- Section 3.2 Use Restrictions
2
-
3
- You must not use any of the Gemma Services:
4
-
5
- for the restricted uses set forth in the Gemma Prohibited Use Policy at ai.google.dev/gemma/prohibited_use_policy ("Prohibited Use Policy"), which is hereby incorporated by reference into this Agreement; or
6
-
7
- in violation of applicable laws and regulations.
8
-
9
- To the maximum extent permitted by law, Google reserves the right to restrict (remotely or otherwise) usage of any of the Gemma Services that Google reasonably believes are in violation of this Agreement.