dsh-locator 0.11.0 → 0.11.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.
- package/CHANGELOG.md +5 -0
- package/README-es.md +1 -1
- package/README-hi.md +1 -1
- package/README-pt.md +1 -1
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/bin/darwin-arm64/indexd +0 -0
- package/bin/darwin-x64/indexd +0 -0
- package/bin/linux-arm64/indexd +0 -0
- package/bin/linux-x64/indexd +0 -0
- package/bin/win32-arm64/indexd.exe +0 -0
- package/bin/win32-x64/indexd.exe +0 -0
- package/lib/config.d.ts +16 -0
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +12 -0
- package/lib/config.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +18 -0
- package/src/index.ts +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.1 — 2026-11-13
|
|
4
|
+
|
|
5
|
+
* Add `contentFullIndex: true` as the explicit one-switch full-content mode. It overrides `contentMaxTotalBytes`/`contentMaxFiles` to unlimited; the numeric caps and their defaults are unchanged. This avoids making users hand-write two zeros and makes the disk/build trade-off discoverable.
|
|
6
|
+
* Status/docs use the same language: full mode is opt-in; the default remains capped at 1 GB / 200k files.
|
|
7
|
+
|
|
3
8
|
## 0.11.0 — 2026-11-13
|
|
4
9
|
|
|
5
10
|
Search coverage, panel productivity and boundary hardening.
|
package/README-es.md
CHANGED
|
@@ -403,7 +403,7 @@ El motor es un único proceso Go y respeta las variables estándar `GOMEMLIMIT`
|
|
|
403
403
|
|
|
404
404
|
## Notas de actualización 0.11.0
|
|
405
405
|
|
|
406
|
-
- **Índice de contenido completo**: `
|
|
406
|
+
- **Índice de contenido completo**: `contentFullIndex: true` (o ambos caps a `0`) indexa todos los archivos de texto elegibles (~185k archivos / 2.0 GB, ~5.9 GB de FTS en la máquina de referencia); la primera construcción tarda unos minutos y las consultas rondan 0.04–0.7 s. Los límites por defecto siguen activos para no consumir decenas de GB sin avisar.
|
|
407
407
|
- `locator_find` sigue limitado al workspace; si el cwd no está dentro de ningún root indexado, ya no restringe los archivos a ese cwd (antes devolvía vacío) y busca en los roots; las sesiones siguen limitadas a la actual. Usa `scope: "all"` para cruzar ámbitos.
|
|
408
408
|
- Panel: **cargar más** (paginación por offset), **búsquedas recientes** y **filtro de resultados cargados**.
|
|
409
409
|
- Seguridad: se rechazan destinos bajo mount points anidados dentro de un root en Linux; `/open` usa `O_NOFOLLOW` y verifica el inodo.
|
package/README-hi.md
CHANGED
|
@@ -404,7 +404,7 @@ DeepSeek Harness
|
|
|
404
404
|
|
|
405
405
|
## 0.11.0 अपग्रेड नोट्स
|
|
406
406
|
|
|
407
|
-
- **पूर्ण सामग्री इंडेक्स**: `
|
|
407
|
+
- **पूर्ण सामग्री इंडेक्स**: `contentFullIndex: true` (या दोनों caps `0`) से सभी पात्र टेक्स्ट फ़ाइलें इंडेक्स होती हैं (~185k फ़ाइलें / 2.0 GB, संदर्भ मशीन पर ~5.9 GB FTS); पहला निर्माण कुछ मिनट लेता है, क्वेरी ~0.04–0.7 s रहती हैं। डिफ़ॉल्ट सीमाएँ बनी रहती हैं ताकि सामान्य उपयोग में दसियों GB अचानक न भरें।
|
|
408
408
|
- `locator_find` workspace-स्कोप्ड रहता है; यदि cwd किसी indexed root में नहीं है तो फ़ाइल हिट उस cwd तक सीमित नहीं रहते (पहले खाली आते थे), indexed roots में खोज होती है; सत्र हिट केवल वर्तमान सत्र। क्रॉस-स्कोप के लिए `scope: "all"`.
|
|
409
409
|
- पैनल: **और लोड करें** (offset पेजिंग), **हाल की खोजें**, **लोड किए गए परिणाम फ़िल्टर करें**।
|
|
410
410
|
- सुरक्षा: Linux में root के भीतर nested mount point वाले लक्ष्य अस्वीकार; `/open` `O_NOFOLLOW` से खोलकर inode जाँचता है।
|
package/README-pt.md
CHANGED
|
@@ -404,7 +404,7 @@ O motor é um único processo Go e respeita as variáveis padrão `GOMEMLIMIT` e
|
|
|
404
404
|
|
|
405
405
|
## Notas de atualização 0.11.0
|
|
406
406
|
|
|
407
|
-
- **Índice de conteúdo completo**: `
|
|
407
|
+
- **Índice de conteúdo completo**: `contentFullIndex: true` (ou ambos os caps em `0`) indexa todos os arquivos de texto elegíveis (~185k arquivos / 2.0 GB, ~5.9 GB de FTS na máquina de referência); a primeira construção leva alguns minutos e as consultas ficam em ~0,04–0,7 s. Os limites padrão continuam ativos para não consumir dezenas de GB sem aviso.
|
|
408
408
|
- `locator_find` continua no workspace; se o cwd estiver fora de todos os roots indexados, ele não restringe mais os arquivos a esse cwd (antes retornava vazio) e busca nos roots; sessões continuam limitadas à atual. Use `scope: "all"` para cruzar escopos.
|
|
409
409
|
- Painel: **carregar mais** (paginação por offset), **buscas recentes** e **filtro dos resultados carregados**.
|
|
410
410
|
- Segurança: rejeita destinos sob mount points aninhados dentro de um root no Linux; `/open` usa `O_NOFOLLOW` e confere o inode.
|
package/README.en.md
CHANGED
|
@@ -404,7 +404,7 @@ The engine is a single Go process and honours the standard `GOMEMLIMIT` and `GOG
|
|
|
404
404
|
|
|
405
405
|
## 0.11.0 upgrade notes
|
|
406
406
|
|
|
407
|
-
- **Full content index**: set `
|
|
407
|
+
- **Full content index**: set `contentFullIndex: true` (or both caps to `0`) to index every eligible text file. On the reference machine that is ~**185k files / 2.0 GB** of text, ~**5.9 GB** FTS database; the first build takes a few minutes and queries stay ~**0.04–0.7 s**. The default caps (1 GB / 200k) stay in place so ordinary installs do not silently consume tens of GB; the panel shows `truncated`.
|
|
408
408
|
- `locator_find` stays workspace-scoped (current session + caller cwd), but when the caller cwd is **outside every indexed root** it no longer restricts file hits to that cwd (which could only return nothing); it searches the indexed roots and still limits session hits to the current session. Use `scope: "all"` to cross scopes explicitly.
|
|
409
409
|
- Panel: **load more** (offset paging), **recent searches** (localStorage, clearable), and **filter loaded results**.
|
|
410
410
|
- Security: reject targets below nested mount points inside a root on Linux (bind-mount escape); `/open` opens with `O_NOFOLLOW` and verifies the inode, narrowing the TOCTOU window.
|
package/README.md
CHANGED
|
@@ -366,7 +366,7 @@ Go 引擎在 `engine/` 下,测试用 `cd engine && go test ./...`。macOS 的
|
|
|
366
366
|
|
|
367
367
|
## 0.11.0 升级注意
|
|
368
368
|
|
|
369
|
-
-
|
|
369
|
+
- **全量内容索引**:设置 `contentFullIndex: true`(或把两个 cap 都设为 `0`),即可索引全部符合文本扩展名/单文件上限的文件。实测本机 eligible 约 **185k 文件 / 2.0GB 文本**,FTS 库约 **5.9GB**;首次构建约几分钟,查询约 **0.04–0.7s**。默认仍保留 1GB/200k 上限,避免普通用户磁盘暴涨;面板会显示 `truncated`。
|
|
370
370
|
- `locator_find` 默认仍 workspace:当前会话 + 调用者 cwd;但如果 cwd **不在任何已索引 root 内**,不再把文件命中限制到 cwd(否则必然为空),而是搜索已索引 root 的文件;会话仍只查当前会话。跨范围仍用 `scope:"all"`。
|
|
371
371
|
- 面板新增:**加载更多**(按 offset 分页)、**最近搜索**(localStorage,可清空)、**过滤已加载结果**。
|
|
372
372
|
- 安全:Linux 下拒绝 root 内嵌套 mount point 的目标(bind mount 防逃逸);`/open` 用 `O_NOFOLLOW` 打开并核对 inode,缩小 TOCTOU 窗口。
|
package/bin/darwin-arm64/indexd
CHANGED
|
Binary file
|
package/bin/darwin-x64/indexd
CHANGED
|
Binary file
|
package/bin/linux-arm64/indexd
CHANGED
|
Binary file
|
package/bin/linux-x64/indexd
CHANGED
|
Binary file
|
|
Binary file
|
package/bin/win32-x64/indexd.exe
CHANGED
|
Binary file
|
package/lib/config.d.ts
CHANGED
|
@@ -39,6 +39,12 @@ export interface Config {
|
|
|
39
39
|
contentRefreshMs: number;
|
|
40
40
|
/** Maximum text files indexed per build; 0 means no cap. */
|
|
41
41
|
contentMaxFiles: number;
|
|
42
|
+
/**
|
|
43
|
+
* One switch for full content search: overrides both body and file caps to
|
|
44
|
+
* unlimited. Off by default because a full index costs gigabytes of disk and
|
|
45
|
+
* a long first build; set this instead of hand-writing two zero values.
|
|
46
|
+
*/
|
|
47
|
+
contentFullIndex: boolean;
|
|
42
48
|
/** Most recent session logs indexed; 0 means all. */
|
|
43
49
|
contentMaxSessions: number;
|
|
44
50
|
/** Index archived sessions too; the default leaves them out. */
|
|
@@ -75,4 +81,14 @@ export interface Config {
|
|
|
75
81
|
}
|
|
76
82
|
/** Configuration schema; invalid values fail the profile load loudly. */
|
|
77
83
|
export declare const Config: Schema<Config>;
|
|
84
|
+
/**
|
|
85
|
+
* Effective content caps. `contentFullIndex` is the explicit one-switch full
|
|
86
|
+
* mode; otherwise the two numeric caps apply (0 still means unlimited).
|
|
87
|
+
* @param config - validated plugin configuration.
|
|
88
|
+
* @returns limits passed to {@link ContentIndex}.
|
|
89
|
+
*/
|
|
90
|
+
export declare function contentLimits(config: Pick<Config, 'contentFullIndex' | 'contentMaxTotalBytes' | 'contentMaxFiles'>): {
|
|
91
|
+
maxTotalBytes: number;
|
|
92
|
+
maxFiles: number;
|
|
93
|
+
};
|
|
78
94
|
//# sourceMappingURL=config.d.ts.map
|
package/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,oCAAoC;AACpC,MAAM,WAAW,MAAM;IACrB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAA;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAA;IACd;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB,6CAA6C;IAC7C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAA;IACxB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAA;IACvB,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gEAAgE;IAChE,sBAAsB,EAAE,OAAO,CAAA;IAC/B;;;;OAIG;IACH,2BAA2B,EAAE,MAAM,CAAA;IACnC,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B;;;;OAIG;IACH,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAA;IACxB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,yEAAyE;AACzE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,oCAAoC;AACpC,MAAM,WAAW,MAAM;IACrB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAA;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAA;IACd;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB,6CAA6C;IAC7C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAA;IACxB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAA;IACzB,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gEAAgE;IAChE,sBAAsB,EAAE,OAAO,CAAA;IAC/B;;;;OAIG;IACH,2BAA2B,EAAE,MAAM,CAAA;IACnC,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B;;;;OAIG;IACH,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAA;IACxB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,yEAAyE;AACzE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAkEhC,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,sBAAsB,GAAG,iBAAiB,CAAC,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAGhK"}
|
package/lib/config.js
CHANGED
|
@@ -28,6 +28,7 @@ export const Config = Schema.object({
|
|
|
28
28
|
contentMaxTotalBytes: Schema.number().default(1_000_000_000),
|
|
29
29
|
contentRefreshMs: Schema.number().default(300_000),
|
|
30
30
|
contentMaxFiles: Schema.number().default(200_000),
|
|
31
|
+
contentFullIndex: Schema.boolean().default(false),
|
|
31
32
|
contentMaxSessions: Schema.number().default(100),
|
|
32
33
|
contentIncludeArchived: Schema.boolean().default(false),
|
|
33
34
|
contentActiveSessionDelayMs: Schema.number().default(120_000),
|
|
@@ -70,4 +71,15 @@ export const Config = Schema.object({
|
|
|
70
71
|
startupTimeoutMs: Schema.number().default(120_000),
|
|
71
72
|
requestTimeoutMs: Schema.number().default(15_000),
|
|
72
73
|
});
|
|
74
|
+
/**
|
|
75
|
+
* Effective content caps. `contentFullIndex` is the explicit one-switch full
|
|
76
|
+
* mode; otherwise the two numeric caps apply (0 still means unlimited).
|
|
77
|
+
* @param config - validated plugin configuration.
|
|
78
|
+
* @returns limits passed to {@link ContentIndex}.
|
|
79
|
+
*/
|
|
80
|
+
export function contentLimits(config) {
|
|
81
|
+
if (config.contentFullIndex)
|
|
82
|
+
return { maxTotalBytes: 0, maxFiles: 0 };
|
|
83
|
+
return { maxTotalBytes: config.contentMaxTotalBytes, maxFiles: config.contentMaxFiles };
|
|
84
|
+
}
|
|
73
85
|
//# sourceMappingURL=config.js.map
|
package/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,MAAM,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,MAAM,IAAI,YAAY,EAAiB,MAAM,aAAa,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAUzC,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,CAAA;AAEjC,0BAA0B;AAC1B,eAAO,MAAM,IAAI,gBAAgB,CAAA;AAEjC,2DAA2D;AAC3D,eAAO,MAAM,MAAM,UAAY,CAAA;AAoC/B;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAwGxD"}
|
package/lib/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* DeepSeek Harness. No Everything dependency.
|
|
4
4
|
* @module dsh-locator
|
|
5
5
|
*/
|
|
6
|
-
import { Config as ConfigSchema } from "./config.js";
|
|
6
|
+
import { Config as ConfigSchema, contentLimits } from "./config.js";
|
|
7
7
|
import { ContentIndex } from "./content.js";
|
|
8
8
|
import { makeExportTool } from "./export.js";
|
|
9
9
|
import { makeFindTool } from "./find.js";
|
|
@@ -73,8 +73,8 @@ export function apply(ctx, config) {
|
|
|
73
73
|
activeSessionDelayMs: config.contentActiveSessionDelayMs,
|
|
74
74
|
searchWorker: true,
|
|
75
75
|
maxFileBytes: config.contentMaxFileBytes,
|
|
76
|
-
maxTotalBytes: config.
|
|
77
|
-
maxFiles: config.
|
|
76
|
+
maxTotalBytes: contentLimits(config).maxTotalBytes,
|
|
77
|
+
maxFiles: contentLimits(config).maxFiles,
|
|
78
78
|
maxSessions: config.contentMaxSessions,
|
|
79
79
|
})
|
|
80
80
|
: undefined;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-locator",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Whole-disk, millisecond file search for DeepSeek Harness without Everything: a self-built cross-platform index, an Everything-style query language, agent tools and a Web search panel (Ctrl+Shift+F). Windows, macOS and Linux.",
|
|
5
5
|
"author": "PerryLink contributors",
|
|
6
6
|
"repository": {
|
package/src/config.ts
CHANGED
|
@@ -41,6 +41,12 @@ export interface Config {
|
|
|
41
41
|
contentRefreshMs: number
|
|
42
42
|
/** Maximum text files indexed per build; 0 means no cap. */
|
|
43
43
|
contentMaxFiles: number
|
|
44
|
+
/**
|
|
45
|
+
* One switch for full content search: overrides both body and file caps to
|
|
46
|
+
* unlimited. Off by default because a full index costs gigabytes of disk and
|
|
47
|
+
* a long first build; set this instead of hand-writing two zero values.
|
|
48
|
+
*/
|
|
49
|
+
contentFullIndex: boolean
|
|
44
50
|
/** Most recent session logs indexed; 0 means all. */
|
|
45
51
|
contentMaxSessions: number
|
|
46
52
|
/** Index archived sessions too; the default leaves them out. */
|
|
@@ -101,6 +107,7 @@ export const Config: Schema<Config> = Schema.object({
|
|
|
101
107
|
contentMaxTotalBytes: Schema.number().default(1_000_000_000),
|
|
102
108
|
contentRefreshMs: Schema.number().default(300_000),
|
|
103
109
|
contentMaxFiles: Schema.number().default(200_000),
|
|
110
|
+
contentFullIndex: Schema.boolean().default(false),
|
|
104
111
|
contentMaxSessions: Schema.number().default(100),
|
|
105
112
|
contentIncludeArchived: Schema.boolean().default(false),
|
|
106
113
|
contentActiveSessionDelayMs: Schema.number().default(120_000),
|
|
@@ -143,3 +150,14 @@ export const Config: Schema<Config> = Schema.object({
|
|
|
143
150
|
startupTimeoutMs: Schema.number().default(120_000),
|
|
144
151
|
requestTimeoutMs: Schema.number().default(15_000),
|
|
145
152
|
})
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Effective content caps. `contentFullIndex` is the explicit one-switch full
|
|
156
|
+
* mode; otherwise the two numeric caps apply (0 still means unlimited).
|
|
157
|
+
* @param config - validated plugin configuration.
|
|
158
|
+
* @returns limits passed to {@link ContentIndex}.
|
|
159
|
+
*/
|
|
160
|
+
export function contentLimits(config: Pick<Config, 'contentFullIndex' | 'contentMaxTotalBytes' | 'contentMaxFiles'>): { maxTotalBytes: number; maxFiles: number } {
|
|
161
|
+
if (config.contentFullIndex) return { maxTotalBytes: 0, maxFiles: 0 }
|
|
162
|
+
return { maxTotalBytes: config.contentMaxTotalBytes, maxFiles: config.contentMaxFiles }
|
|
163
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import type { Context } from '@deepseek-ai/cordis'
|
|
8
|
-
import { Config as ConfigSchema } from './config.ts'
|
|
8
|
+
import { Config as ConfigSchema, contentLimits } from './config.ts'
|
|
9
9
|
import type { Config } from './config.ts'
|
|
10
10
|
import { ContentIndex } from './content.ts'
|
|
11
11
|
import { makeExportTool } from './export.ts'
|
|
@@ -84,8 +84,8 @@ export function apply(ctx: Context, config: Config): void {
|
|
|
84
84
|
activeSessionDelayMs: config.contentActiveSessionDelayMs,
|
|
85
85
|
searchWorker: true,
|
|
86
86
|
maxFileBytes: config.contentMaxFileBytes,
|
|
87
|
-
maxTotalBytes: config.
|
|
88
|
-
maxFiles: config.
|
|
87
|
+
maxTotalBytes: contentLimits(config).maxTotalBytes,
|
|
88
|
+
maxFiles: contentLimits(config).maxFiles,
|
|
89
89
|
maxSessions: config.contentMaxSessions,
|
|
90
90
|
})
|
|
91
91
|
: undefined
|