context-mode 1.0.33 → 1.0.35
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.openclaw-plugin/openclaw.plugin.json +1 -1
- package/.openclaw-plugin/package.json +1 -1
- package/build/cli.js +10 -7
- package/build/server.js +19 -1
- package/cli.bundle.mjs +113 -113
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -4
- package/server.bundle.mjs +76 -76
- package/skills/ctx-cloud-setup/SKILL.md +0 -98
- package/skills/ctx-cloud-status/SKILL.md +0 -96
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Claude Code plugins by Mert Koseoğlu",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.35"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "context-mode",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"description": "Claude Code MCP plugin that saves 98% of your context window. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and intent-driven search.",
|
|
16
|
-
"version": "1.0.
|
|
16
|
+
"version": "1.0.35",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "Mert Koseoğlu"
|
|
19
19
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "context-mode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.35",
|
|
4
4
|
"description": "MCP server that saves 98% of your context window with session continuity. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and automatic state restore across compactions.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Mert Koseoğlu",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "Context Mode",
|
|
4
4
|
"kind": "tool",
|
|
5
5
|
"description": "OpenClaw plugin that saves 98% of your context window. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and intent-driven search.",
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.35",
|
|
7
7
|
"sandbox": {
|
|
8
8
|
"mode": "permissive",
|
|
9
9
|
"filesystem_access": "full",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "context-mode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.35",
|
|
4
4
|
"description": "OpenClaw plugin that saves 98% of your context window. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and intent-driven search.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Mert Koseoğlu",
|
package/build/cli.js
CHANGED
|
@@ -501,14 +501,17 @@ async function upgrade() {
|
|
|
501
501
|
p.log.step("Setting hook script permissions...");
|
|
502
502
|
const permSet = adapter.setHookPermissions(pluginRoot);
|
|
503
503
|
// Also ensure CLI binaries are executable (tsc doesn't set +x)
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
504
|
+
// chmod is POSIX-only — skip on Windows where execute bits are irrelevant
|
|
505
|
+
if (process.platform !== "win32") {
|
|
506
|
+
for (const bin of ["build/cli.js", "cli.bundle.mjs"]) {
|
|
507
|
+
const binPath = resolve(pluginRoot, bin);
|
|
508
|
+
try {
|
|
509
|
+
accessSync(binPath, constants.F_OK);
|
|
510
|
+
execSync(`chmod +x "${binPath}"`, { stdio: "ignore" });
|
|
511
|
+
permSet.push(binPath);
|
|
512
|
+
}
|
|
513
|
+
catch { /* not found — skip */ }
|
|
510
514
|
}
|
|
511
|
-
catch { /* not found — skip */ }
|
|
512
515
|
}
|
|
513
516
|
if (permSet.length > 0) {
|
|
514
517
|
p.log.success(color.green("Permissions set") + color.dim(` — ${permSet.length} hook script(s)`));
|
package/build/server.js
CHANGED
|
@@ -804,7 +804,8 @@ function coerceCommandsArray(val) {
|
|
|
804
804
|
}
|
|
805
805
|
server.registerTool("ctx_search", {
|
|
806
806
|
title: "Search Indexed Content",
|
|
807
|
-
description: "Search indexed content.
|
|
807
|
+
description: "Search indexed content. Requires prior indexing via ctx_batch_execute, ctx_index, or ctx_fetch_and_index. " +
|
|
808
|
+
"Pass ALL search questions as queries array in ONE call.\n\n" +
|
|
808
809
|
"TIPS: 2-4 specific terms per query. Use 'source' to scope results.",
|
|
809
810
|
inputSchema: z.object({
|
|
810
811
|
queries: z.preprocess(coerceJsonArray, z
|
|
@@ -828,6 +829,23 @@ server.registerTool("ctx_search", {
|
|
|
828
829
|
}, async (params) => {
|
|
829
830
|
try {
|
|
830
831
|
const store = getStore();
|
|
832
|
+
// Guard: redirect when the index is empty — ctx_search is a follow-up
|
|
833
|
+
// tool that requires prior indexing. Guide the model to the right tool.
|
|
834
|
+
if (store.getStats().chunks === 0) {
|
|
835
|
+
return trackResponse("ctx_search", {
|
|
836
|
+
content: [{
|
|
837
|
+
type: "text",
|
|
838
|
+
text: "Knowledge base is empty — no content has been indexed yet.\n\n" +
|
|
839
|
+
"ctx_search is a follow-up tool that queries previously indexed content. " +
|
|
840
|
+
"To gather and index content first, use:\n" +
|
|
841
|
+
" • ctx_batch_execute(commands, queries) — run commands, auto-index output, and search in one call\n" +
|
|
842
|
+
" • ctx_fetch_and_index(url) — fetch a URL, index it, then search with ctx_search\n" +
|
|
843
|
+
" • ctx_index(content, source) — manually index text content\n\n" +
|
|
844
|
+
"After indexing, ctx_search becomes available for follow-up queries.",
|
|
845
|
+
}],
|
|
846
|
+
isError: true,
|
|
847
|
+
});
|
|
848
|
+
}
|
|
831
849
|
const raw = params;
|
|
832
850
|
// Normalize: accept both query (string) and queries (array)
|
|
833
851
|
const queryList = [];
|