diff --git a/CHANGELOG.md b/CHANGELOG.md index 82d6ddb3..72f65aea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 1.1.1-2 — 2026-10-13 + +- Clarify the shared 32 MiB source-read budget for `inspect`, including why smaller output windows and source continuations do not admit oversized files. +- Keep search behavior, public interfaces and default configuration unchanged; this is a documentation and maintainer-verification release. + ## 1.1.1-1 — 2026-10-12 - Bind retained ordinary search results to verified worktree content identities instead of relying on file metadata alone. diff --git a/README.md b/README.md index 9f29bb8b..09d62418 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,8 @@ Long results arrive in pages with a way to continue. When the original material A complete snapshot describes match retention, not complete source text. Truncated matching-line excerpts show their limit and an executable `inspectRequest`, which remains usable after the final match page. Follow pagination cursors instead of repeating the query with a different limit. In Pi and OMP, the passive session status includes the loaded package version, counts returned new queries, distinguishes complete, partial and unfinished results, and reports non-cancelled failed calls. Cursor and operation continuations do not inflate the new-query count. +`inspect` loads and verifies the source document before selecting a bounded output window. Its request shares a 32 MiB source-read budget; a single file larger than that budget is rejected even when only line 1 is requested. Changing the line, reducing displayed context or retrying does not bypass that limit. For a large log, search for the relevant text first, or use the host's bounded read capability on the known exact file. Source continuation pages apply to documents already admitted within the budget; they do not provide streaming inspection of oversized files. + Ordinary searches keep repository ignore rules, but now report policy-filtered filesystem coverage instead of calling an absence exhaustive when ignored files exist. Filename discovery (`mode: "files"`) does the same: it says how many files were ignored and which of them match the query, and `ignorePolicy: "include"` lists them. Each file candidate shows its score and whether it is an exact, substring or fuzzy match. Use `mode: "audit"` with named literal `patterns` for one bounded receipt covering declared scope, enumerated/searched/skipped files, ignored-file policy, per-pattern `present`/`absent_with_complete_coverage`/`unknown` findings, and start/end source stability. Set `ignorePolicy: "include"` when an audit must include ignored configuration and generated files; `.git` internals and protected paths remain excluded. ### Discover language capabilities before loading a provider diff --git a/README.zh-CN.md b/README.zh-CN.md index 77f108be..18762d90 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -53,6 +53,8 @@ Concept 或 hybrid 较慢时,会在默认五秒等待窗口内返回 `status: 完整快照表示匹配保留完整,不代表源码正文没有截断。长行摘录会明确标记限制,并给出最后一页之后仍可执行的 `inspectRequest`。需要更多结果时沿游标继续,不要仅为翻页而修改 limit 重搜。 Pi 和 OMP 的被动 session 状态会显示当前加载的包版本,统计已返回的新查询,区分完整、部分和未完成结果,并报告未取消的失败调用。cursor 与 operation 续接不会重复计入新查询。 +`inspect` 会先加载并校验源文档,再选择有界的输出窗口;同一请求共享 32 MiB 源内容读取预算。单个文件超过预算时,即使只请求第 1 行也会被拒绝,换行号、减少显示上下文或重试都不能绕过该限制。对于大日志,可以先检索相关文本,或使用宿主的有界读取能力分段读取已知精确文件。源码续读页只适用于已经在预算内接纳的文档,不提供超大文件的流式 inspect。 + 普通搜索继续遵循仓库 ignore 规则,但只要存在被忽略文件,就会明确说明文件系统覆盖受策略过滤,不再把“接纳文件里没找到”说成“整个目录绝对不存在”。文件名发现(`mode: "files"`)同样会说明有多少文件被忽略、其中哪些匹配查询,`ignorePolicy: "include"` 可以把它们列出来;每个候选都显示分数以及是精确、子串还是模糊匹配。需要发布前收口时,可以用 `mode: "audit"` 配合带名字的字面量 `patterns`,一次拿到声明范围、枚举/搜索/跳过文件、ignore 策略、每个模式的 `present`、`absent_with_complete_coverage` 或 `unknown` 结论,以及搜索前后的来源稳定性。审计必须包含被忽略的配置或生成文件时,设置 `ignorePolicy: "include"`;`.git` 内部和受保护路径仍然不会开放。 ### 先发现语言能力,再按需加载提供方 diff --git a/package.json b/package.json index 90a5c585..48447fb1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sift-light", - "version": "1.1.1-1", + "version": "1.1.1-2", "description": "Context-efficient local search for files, documents, notes and logs across Pi, OMP and MCP clients", "keywords": [ "ai-agent", diff --git a/plugins/sift-light/.claude-plugin/plugin.json b/plugins/sift-light/.claude-plugin/plugin.json index c751b61b..dac2b055 100644 --- a/plugins/sift-light/.claude-plugin/plugin.json +++ b/plugins/sift-light/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "sift-light", - "version": "1.1.1-1", + "version": "1.1.1-2", "description": "Require sift-light for conventional local searches while keeping development tools available.", "author": { "name": "baoer" diff --git a/plugins/sift-light/.codex-plugin/plugin.json b/plugins/sift-light/.codex-plugin/plugin.json index 41a5663a..ed79a9dc 100644 --- a/plugins/sift-light/.codex-plugin/plugin.json +++ b/plugins/sift-light/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "sift-light", - "version": "1.1.1-1", + "version": "1.1.1-2", "description": "Require sift-light for conventional local searches while keeping development tools available.", "author": { "name": "baoer" diff --git a/plugins/sift-light/.mcp.json b/plugins/sift-light/.mcp.json index e3266eaa..28778289 100644 --- a/plugins/sift-light/.mcp.json +++ b/plugins/sift-light/.mcp.json @@ -5,7 +5,7 @@ "args": [ "--yes", "--package", - "sift-light-runtime@npm:sift-light@1.1.1-1", + "sift-light-runtime@npm:sift-light@1.1.1-2", "sift-light-mcp", "--stdio" ], diff --git a/plugins/sift-light/kimi.plugin.json b/plugins/sift-light/kimi.plugin.json index 675cf7eb..32818bcb 100644 --- a/plugins/sift-light/kimi.plugin.json +++ b/plugins/sift-light/kimi.plugin.json @@ -1,6 +1,6 @@ { "name": "sift-light", - "version": "1.1.1-1", + "version": "1.1.1-2", "description": "Require sift-light for conventional local searches while keeping development tools available.", "author": { "name": "baoer" @@ -13,7 +13,7 @@ "args": [ "--yes", "--package", - "sift-light-runtime@npm:sift-light@1.1.1-1", + "sift-light-runtime@npm:sift-light@1.1.1-2", "sift-light-mcp", "--stdio" ], diff --git a/plugins/sift-light/omp-extension.mjs b/plugins/sift-light/omp-extension.mjs index 2d379f3c..39c477fa 100644 --- a/plugins/sift-light/omp-extension.mjs +++ b/plugins/sift-light/omp-extension.mjs @@ -2183,7 +2183,7 @@ function createCtagsStructureProvider(options = {}) { // package.json var package_default = { name: "sift-light", - version: "1.1.1-1", + version: "1.1.1-2", description: "Context-efficient local search for files, documents, notes and logs across Pi, OMP and MCP clients", keywords: [ "ai-agent", diff --git a/plugins/sift-light/package.json b/plugins/sift-light/package.json index 3c32d104..6bdbf12b 100644 --- a/plugins/sift-light/package.json +++ b/plugins/sift-light/package.json @@ -1,6 +1,6 @@ { "name": "sift-light", - "version": "1.1.1-1", + "version": "1.1.1-2", "private": true, "type": "module", "omp": { diff --git a/src/mcp-server.mjs b/src/mcp-server.mjs index 74c8623b..cd3d8fb6 100755 --- a/src/mcp-server.mjs +++ b/src/mcp-server.mjs @@ -2903,7 +2903,7 @@ import { URL as URL2 } from "node:url"; // package.json var package_default = { name: "sift-light", - version: "1.1.1-1", + version: "1.1.1-2", description: "Context-efficient local search for files, documents, notes and logs across Pi, OMP and MCP clients", keywords: [ "ai-agent",