sift-light 1.0.3-1 → 1.0.3-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.
- package/CHANGELOG.md +5 -0
- package/package.json +1 -1
- package/plugins/sift-light/.claude-plugin/plugin.json +1 -1
- package/plugins/sift-light/.codex-plugin/plugin.json +1 -1
- package/plugins/sift-light/.mcp.json +1 -1
- package/plugins/sift-light/kimi.plugin.json +2 -2
- package/plugins/sift-light/omp-extension.mjs +7 -2
- package/plugins/sift-light/package.json +1 -1
- package/src/mcp-server.mjs +7 -2
- package/src/request-aliases.ts +5 -0
- package/src/tool-schema.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.3-2 — 2026-09-30
|
|
4
|
+
|
|
5
|
+
- Accept an empty `sourceCursor` placeholder outside `mode: "inspect"` by removing the key before mode validation, with the normalization disclosed in text and `details.requestNotes` ([#101](https://github.com/lightsifter/sift-light/issues/101)). Nonempty source continuation tokens still require inspection mode; empty inspection tokens and ordinary `cursor` validation retain their existing failure behavior.
|
|
6
|
+
- Apply the same normalization to Pi, OMP and MCP through the shared request boundary. This fixes the reported rejected request shape without attributing the placeholder to a particular model or host.
|
|
7
|
+
|
|
3
8
|
## 1.0.3-1 — 2026-09-30
|
|
4
9
|
|
|
5
10
|
- Explain missing inspection paths explicitly while retaining the `source-unavailable` status for compatibility.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sift-light",
|
|
3
|
-
"version": "1.0.3-
|
|
3
|
+
"version": "1.0.3-2",
|
|
4
4
|
"description": "Require sift-light for conventional local searches while keeping development tools available.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "baoer"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"args": [
|
|
14
14
|
"--yes",
|
|
15
15
|
"--package",
|
|
16
|
-
"sift-light-runtime@npm:sift-light@1.0.3-
|
|
16
|
+
"sift-light-runtime@npm:sift-light@1.0.3-2",
|
|
17
17
|
"sift-light-mcp",
|
|
18
18
|
"--stdio"
|
|
19
19
|
],
|
|
@@ -1822,7 +1822,7 @@ function createCtagsStructureProvider(options = {}) {
|
|
|
1822
1822
|
// package.json
|
|
1823
1823
|
var package_default = {
|
|
1824
1824
|
name: "sift-light",
|
|
1825
|
-
version: "1.0.3-
|
|
1825
|
+
version: "1.0.3-2",
|
|
1826
1826
|
description: "Context-efficient local search for files, documents, notes and logs across Pi, OMP and MCP clients",
|
|
1827
1827
|
keywords: [
|
|
1828
1828
|
"ai-agent",
|
|
@@ -11634,6 +11634,11 @@ function normalizeRequestAliases(request) {
|
|
|
11634
11634
|
} else if (mode !== undefined) {
|
|
11635
11635
|
input = { ...rest, mode };
|
|
11636
11636
|
}
|
|
11637
|
+
if (input.mode !== "inspect" && input.sourceCursor === "") {
|
|
11638
|
+
const { sourceCursor: _sourceCursor, ...withoutSourceCursor } = input;
|
|
11639
|
+
input = withoutSourceCursor;
|
|
11640
|
+
notes.push("Empty sourceCursor is ignored outside mode=inspect.");
|
|
11641
|
+
}
|
|
11637
11642
|
if (input.sourceCursor !== undefined && input.line !== undefined) {
|
|
11638
11643
|
const { line: _line, ...withoutLine } = input;
|
|
11639
11644
|
input = withoutLine;
|
|
@@ -21067,7 +21072,7 @@ var siftLightSchema = _Object_({
|
|
|
21067
21072
|
})
|
|
21068
21073
|
})),
|
|
21069
21074
|
sourceCursor: Optional(String2({
|
|
21070
|
-
description: "Missing-source continuation token. Copy nextRequest exactly: mode=inspect plus sourceCursor only. Same token replays the same page; changed or expired sources fail clearly."
|
|
21075
|
+
description: "Missing-source continuation token. Copy nextRequest exactly: mode=inspect plus sourceCursor only. Same token replays the same page; changed or expired sources fail clearly. An empty string outside mode=inspect is treated as an omitted placeholder and disclosed in request notes; nonempty tokens still require mode=inspect."
|
|
21071
21076
|
})),
|
|
21072
21077
|
symbol: Optional(String2({
|
|
21073
21078
|
description: "Syntax name for outline/imports/tests; use a concrete source file and line to narrow repeated names."
|
package/src/mcp-server.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import { URL as URL2 } from "node:url";
|
|
|
7
7
|
// package.json
|
|
8
8
|
var package_default = {
|
|
9
9
|
name: "sift-light",
|
|
10
|
-
version: "1.0.3-
|
|
10
|
+
version: "1.0.3-2",
|
|
11
11
|
description: "Context-efficient local search for files, documents, notes and logs across Pi, OMP and MCP clients",
|
|
12
12
|
keywords: [
|
|
13
13
|
"ai-agent",
|
|
@@ -11666,6 +11666,11 @@ function normalizeRequestAliases(request) {
|
|
|
11666
11666
|
} else if (mode !== undefined) {
|
|
11667
11667
|
input = { ...rest, mode };
|
|
11668
11668
|
}
|
|
11669
|
+
if (input.mode !== "inspect" && input.sourceCursor === "") {
|
|
11670
|
+
const { sourceCursor: _sourceCursor, ...withoutSourceCursor } = input;
|
|
11671
|
+
input = withoutSourceCursor;
|
|
11672
|
+
notes.push("Empty sourceCursor is ignored outside mode=inspect.");
|
|
11673
|
+
}
|
|
11669
11674
|
if (input.sourceCursor !== undefined && input.line !== undefined) {
|
|
11670
11675
|
const { line: _line, ...withoutLine } = input;
|
|
11671
11676
|
input = withoutLine;
|
|
@@ -13781,7 +13786,7 @@ var siftLightSchema = Type.Object({
|
|
|
13781
13786
|
})
|
|
13782
13787
|
})),
|
|
13783
13788
|
sourceCursor: Type.Optional(Type.String({
|
|
13784
|
-
description: "Missing-source continuation token. Copy nextRequest exactly: mode=inspect plus sourceCursor only. Same token replays the same page; changed or expired sources fail clearly."
|
|
13789
|
+
description: "Missing-source continuation token. Copy nextRequest exactly: mode=inspect plus sourceCursor only. Same token replays the same page; changed or expired sources fail clearly. An empty string outside mode=inspect is treated as an omitted placeholder and disclosed in request notes; nonempty tokens still require mode=inspect."
|
|
13785
13790
|
})),
|
|
13786
13791
|
symbol: Type.Optional(Type.String({
|
|
13787
13792
|
description: "Syntax name for outline/imports/tests; use a concrete source file and line to narrow repeated names."
|
package/src/request-aliases.ts
CHANGED
|
@@ -39,6 +39,11 @@ export function normalizeRequestAliases(request: SiftLightRequest): NormalizedRe
|
|
|
39
39
|
} else if (mode !== undefined) {
|
|
40
40
|
input = { ...rest, mode };
|
|
41
41
|
}
|
|
42
|
+
if (input.mode !== "inspect" && input.sourceCursor === "") {
|
|
43
|
+
const { sourceCursor: _sourceCursor, ...withoutSourceCursor } = input;
|
|
44
|
+
input = withoutSourceCursor;
|
|
45
|
+
notes.push("Empty sourceCursor is ignored outside mode=inspect.");
|
|
46
|
+
}
|
|
42
47
|
if (input.sourceCursor !== undefined && input.line !== undefined) {
|
|
43
48
|
const { line: _line, ...withoutLine } = input;
|
|
44
49
|
input = withoutLine;
|
package/src/tool-schema.ts
CHANGED
|
@@ -127,7 +127,7 @@ export const siftLightSchema = Type.Object({
|
|
|
127
127
|
sourceCursor: Type.Optional(
|
|
128
128
|
Type.String({
|
|
129
129
|
description:
|
|
130
|
-
"Missing-source continuation token. Copy nextRequest exactly: mode=inspect plus sourceCursor only. Same token replays the same page; changed or expired sources fail clearly.",
|
|
130
|
+
"Missing-source continuation token. Copy nextRequest exactly: mode=inspect plus sourceCursor only. Same token replays the same page; changed or expired sources fail clearly. An empty string outside mode=inspect is treated as an omitted placeholder and disclosed in request notes; nonempty tokens still require mode=inspect.",
|
|
131
131
|
}),
|
|
132
132
|
),
|
|
133
133
|
symbol: Type.Optional(
|